TI中文支持网
TI专业的中文技术问题搜集分享网站

求C6747采用EDMA进行SPI通讯的例程

好几天了,一直没搞定,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已改。

赞(0)
未经允许不得转载:TI中文支持网 » 求C6747采用EDMA进行SPI通讯的例程
分享到: 更多 (0)