好几天了,一直没搞定,SPI1单字节收发正常(采用回环模式),加上EDMA3后,收发没有任何反映,但EDMA参数RAM19(SPI1的发送)在触发EDMA发送后被清零。
Shine:
请参考C6748 starterware里的SPI EDMA例程。http://www.ti.com/tool/starterware-c6dsp
yufei zhou:
回复 Shine:
好的。这部分代码两个CPU是否完全兼容?
感觉6747的资料比6748、137\138这些少,想用同系列芯片的程序,又不知道哪些不兼容,怕出了问题不好查~~
Shine:
回复 yufei zhou:
我比较了C6747, C6748的SPI, EDMA寄存器是一样的,可以用C6748的这部分代码。
另外,简单点的话,可以参考rCSL里的EDMA例程。http://processors.wiki.ti.com/index.php/QuickStartOMAPL1x_rCSL
yufei zhou:
回复 Shine:
采用C6748 starterware里的SPI EDMA例程做了测试,发现触发EDMA发送后,发送通道参数ram的源地址加了1、CNT减了1,接收通道没有变化,可能会是哪里的问题呢?
SPI单字节收发正常,SPI的DMA请求也开启了,还有什么可能的原因呢?
Shine:
回复 yufei zhou:
Event Register相应位置1了吗?
Shine:
回复 Shine:
另外SPIPinMuxSetup这个函数要修改一下,c6747,c6748的Pinmux寄存器不一样。
yufei zhou:
回复 Shine:
没有置1,怎么办?
Shine:
回复 yufei zhou:
表示接收事件没发生。Pinmux寄存器修改了吗?跟C6748的不一样。
yufei zhou:
回复 Shine:
debug了一下,发现ESR|=1<<19操作后,发送缓存里的数据没有被写入SPI1_SPIDAT1(通过判断SPI1_SPIFLG的bit8是否置1来等待一段时间,stop仿真器后读取SPI1_SPIDAT1)。
而采用SPI1_SPIDAT1=0x05,再等待SPI1_SPIFLG的bit8置1,SPI1_SPIDAT1与SPI1_SPIBUF里面的值都是0x05。
yufei zhou:
回复 Shine:
另外Pinmux已改。