Hello, I have a setup where an ADSP-2188N is connected to an audio codec which acts as master (the codec), generating bclk0, tfs0, rfs0, and of course dr0. These signals seem to be ok with an o'scope. I configured SPORT0 as follows: - multichannel disabled. - tfs and rfs required. - tfs and rfs external. - 16 bit data. - external clock. - normal framing. - non-inverted framing. I set IMASK to 0x020 to enable SPORT0 Rx interrupts and SYSCON = SYSCON | 0x1000 to enable SPORT0. I also set an ISR for SPORT0 Rx interrupt servicing. On it, I just do this: toggle fl1; ax0 = rx0; tx0 = ax0; rti; So, this is a very simple talktrough program. With an o'scope, I can see the fl1 pin toggling at the same rate as the rfs0 signal as expected, which indicates that the interrupt is being serviced. tfs0 is the same signal as rfs0, and is being generated by the codec. however, I see no data at all coming out the dt0 pin, still see data in the dr0 pin... I also changd to: toggle fl1; ax0 = rx0; tx0 = 0x7F; rti; expecting to see some signals out the dt0 pin, but still the same: nothing. Something weird is the fact that while the program is not runnig, the framing signals rise upto 3.3V as normal, but when the program runs, that signal preserves its shape and timing but with amplitude of around 0.8V. Why? Has anyone experienced problems like mine? Any hints are very appreciated. Regards, JaaC
ADSP-218x SPORT0 Tx trouble
Started by ●June 9, 2004
Reply by ●June 10, 20042004-06-10
Thank you everybody, Well, it was my fault... I was writting 0x240 to the SPORT0 Control Register... I don't know why, maybe I was a bit distracted. I changed to 0x281F and worked without problems. I've got another question. Suppose all the signals, except DT0 are generated externally, SPORT0 acting as a slave in some sense. When using SPORT0 in Multichannel mode, it can only be 24 or 32 words per frame, there is no way to change that, right? Well, let's suppose I set things up to receive (and send) 24 words, but just need channels 0 and 1. What happens if the timing between RFS0s is longer than the time for 384 (= 16 x 24) bit clocks? In other words, what happens if the SPORT0 is configured for 24 words, but the framing time allows for more than 24 words? I'd expect the SPORT to receive the 2 first words (channels 0 and 1 are active), then wait for 22 more words (352 bit clocks) then do nothing, just wait for the next assertion of RFS0. Am I right? And what happens if the time between frames (the time between assertions of RFS0) is SHORTER than the time for 24 words, SHORTER than 384 bit clocks? What would happen if at bit clock 250 or 272 I receive RFS0 again, before the whole frame of 24 words (384 bit clocks) has been received? That would mean that I just received 15.625 or 17 words in the frame, instead of the 24 words that were expected. In that case what happens: does the SPORT0 stops receiveing the 24 word frame and restarts receiveing a new one (channles 0 and 1 successfuly aquired), or does the SPORT still wait for the remaining frames, then waits for the next RFS0?? All of your help is very welcome. Regards, JaaC jaime.aranguren@ieee.org (Jaime Andres Aranguren Cardona) wrote in message news:<14a86f87.0406090726.7d3153ee@posting.google.com>...> Hello, > > I have a setup where an ADSP-2188N is connected to an audio codec > which acts as master (the codec), generating bclk0, tfs0, rfs0, and > of course dr0. These signals seem to be ok with an o'scope. > > I configured SPORT0 as follows: > - multichannel disabled. > - tfs and rfs required. > - tfs and rfs external. > - 16 bit data. > - external clock. > - normal framing. > - non-inverted framing. > > I set IMASK to 0x020 to enable SPORT0 Rx interrupts and SYSCON = > SYSCON | 0x1000 to enable SPORT0. > > I also set an ISR for SPORT0 Rx interrupt servicing. On it, I just do > this: > > toggle fl1; > ax0 = rx0; > tx0 = ax0; > rti; > > So, this is a very simple talktrough program. With an o'scope, I can > see the fl1 pin toggling at the same rate as the rfs0 signal as > expected, which indicates that the interrupt is being serviced. tfs0 > is the same signal as rfs0, and is being generated by the codec. > however, I see no data at all coming out the dt0 pin, still see data > in the dr0 pin... > > I also changd to: > > toggle fl1; > ax0 = rx0; > tx0 = 0x7F; > rti; > > expecting to see some signals out the dt0 pin, but still the same: > nothing. > > Something weird is the fact that while the program is not runnig, the > framing signals rise upto 3.3V as normal, but when the program runs, > that signal preserves its shape and timing but with amplitude of > around 0.8V. Why? > > Has anyone experienced problems like mine? Any hints are very > appreciated. > > Regards, > > JaaC