Hi, I am currently attempting to use the DMA channels in the TMS470 (arm7dtmi core product from TI). I can't seem to get it working quite right. Here is what I'm trying to do. 1. Set up a simple array of chars 'a', 'b' through 'e' 2. Write these chars to the SCI port (RS232) via a memory-peripheral over DMA. 3. So far I've had limited success, 1 character seems to work, but when I set the DMA transaction count above 1 (to 2 or 3 or 5) I get stuff like addddbddddcddddddddaddddbddddcddddeddddd on the serial port. Also when I force a busy sleep inside the DMA interrupt I would get something like adadadadadadad... 4. All this to me seems to indicate that the DMA isn't pausing to wait for the next character to transfer out of the RS232 before it initiates a new DMA transfer. 5. I'm trying to do this because I need to transfer large blocks over RS232 from memory blocks because there is no buffering on the SCI (RS232) port, so that I don't take so many hits on a 115kBaud connection out. Does anyone have any experience this device they care to share? I'm sort of at a loss to figure out why (apparently) the DMA isn't pausing between each incremental block transfer for the completion of an RS232 port write. Oh and I do have memory-memory block transfers working just fine, but not out the RS232. Thanks! Don
tms470
Started by ●October 15, 2006
Reply by ●October 16, 20062006-10-16
Why don't you try posting this to the Yahoo group at http://tech.groups.yahoo.com/group/TMS470_ARM/ Don wrote:> Hi, > > I am currently attempting to use the DMA channels in the TMS470 (arm7dtmi > core product from TI). I can't seem to get it working quite right. Here is > what I'm trying to do. > 1. Set up a simple array of chars 'a', 'b' through 'e' > > 2. Write these > chars to the SCI port (RS232) via a memory-peripheral over DMA. > > 3. So far > I've had limited success, 1 character seems to work, but when I set the > DMA transaction count above 1 (to 2 or 3 or 5) I get stuff like > addddbddddcddddddddaddddbddddcddddeddddd on the serial port. Also when I > force a busy sleep inside the DMA interrupt I would get something like > adadadadadadad... > > 4. All this to me seems to indicate that the DMA isn't pausing to wait for > the next character to transfer out of the RS232 before it initiates a new > DMA transfer. > > 5. I'm trying to do this because I need to transfer large blocks over > RS232 from memory blocks because there is no buffering on the SCI (RS232) > port, so that I don't take so many hits on a 115kBaud connection out. > > Does anyone have any experience this device they care to share? I'm sort > of at a loss to figure out why (apparently) the DMA isn't pausing between > each incremental block transfer for the completion of an RS232 port write. > Oh and I do have memory-memory block transfers working just fine, but not > out the RS232. > > Thanks! > Don