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

C6745上用EDMA访问SPI的例程

我在C6745上调试用EDMA访问SPI驱动程序,参考例程是C:\ti\OMAPL138_StarterWare_1_10_04_01\examples\evmOMAPL138\spi_edma\spiEdma.c  。用示波器看,CLK有时钟输出,CS也会拉低。MOSI 和MISO脚上有数据,但是和DSP发送的数据对应不上,MOSI脚一直输出的是一个固定值,这个问题找不到解决的办法。EDMA参数配置如图

调试例子程序中发现EDMA3CCComplIsr()中断函数中,变量flagTx和flagRx有一个置1后,SPIIntDisable(SOC_SPI_1_REGS, SPI_SPIINT0_DMAREQEN);中断禁止,程序会卡死在while((0 == flagTx) || (0 == flagRx)),这个问题修改下中断函数处理逻辑,可以解决。SPI配置速率为2M。

在论坛上看到了Tony Tang的帖子,

http://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/t/12551.aspx

不知道您这边有没有遇到类似的问题,希望得到您的帮助。

Shine:

建议先把EDMA功能屏蔽掉,先调通SPI口,再去单独调EDMA功能,最后把两者合一起,这样比较容易定位问题。

user4189590:

回复 Shine:

Shine Zhang ,你好,SPI通过CPU中断模式已经调通,通过查看内存buff,发送接收数据正常,用示波器能看到管脚发出数据,CS管脚高低电平变化,CS低电平时间和SPI_CLK时钟变换相等。但是通过EDMA,从内存搬运数据到SPI发送接收寄存器,用示波器也看不到管脚发出数据,而是一个固定的电平数字波形,和要发送的数据位数对应不上,CS管脚有高低电平变化,但是低电平时间远大于SPI_CLK时间,大概是2倍,就是说SPI_CLK高低变化之后保持高电平一段时间,CS管脚才被拉高。这种现象你们有遇见过吗?

user4189590:

回复 Shine:

Shine Zhang,你好。你们这边用EDMA访问SPI的例程除了读写Flash,还有其他例程可供参考吗?我项目中要求通过SPI的EDMA方式读取网络芯片里的数据和配置芯片相关字节数。SPI发送数据长度有7字节,1280字节。

Shine:

回复 user4189590:

如果把EDMA目的地址SPI发送寄存器改成片内RAM 地址能成功搬移吗?SPI接收能有EDMA实现吗?

赞(0)
未经允许不得转载:TI中文支持网 » C6745上用EDMA访问SPI的例程
分享到: 更多 (0)