Hi,
I am trying to make direct data mode work between RTP on one TMS570 MCU and DMM on a second TMS570 MCU.I wrote a simple program to fill 1K of memory space using the DDMW register, and am running the interface at full data rate. My program has a uint32 counter value, which gets passed into the DDMW register. When I directly write the DDMW register with the counter value, I increment that value and try to write the value again. I only write an updated value when an overflow has not occurred (RTPGSR bit 0 = 0) and when FIFO1 is empty (RTPGSR bit 8 = 1). Wjhen I examine the memory on the slave device (I allow updates during debug mode in the Global Control Register), the data in memory does not sequentially increase, but increases by a varying count. However, if I add some wait cycles to burn up processor time, I get a nice, cleanly incrementing, wrapping memory array. I have enabled the RTP and DMM enable pins to hold off the bus in case of bus busy, and monitor the above two bits. Am I missing something? I figured monitoring a FIFO empty bit or not overflow would be sufficient in terms of transferring data over to the DMM without loss of data, but that is not the case. It appears it's possible to write DDMW many times over before FifoEmpty changes to not empty. The only way I've been able to get a nice linear counter is to insert open-loop wait states, such as a for loop to burn cycles. What else can I look at to make sure the data written to DDMW ends up properly on the DMM side (the second processor)? Is this a DMM issue or an RTP issue?
Best,
Josh Karch