6455DSP与FPGA通过I2C相连,DSP的I2C配置为从发送模式,每次传输时最后一个字节发送不出去,查看I2C发送缓存寄存器,发现最后一个字节的数据在该寄存器中,没有发送出去。例如:DSP发送32个字节的数据,FPGA只能收到前31个字节。请问这是什么原因?
Shine:
你好,
请问ICCNT寄存器配了多少? 是32吗?
Binggao Ji:
回复 Shine:
是的。I2C配置为从接收模式时,接收的字节数是对的。I2C配置为从发送时,使用EDMA搬运的。EDMA搬运ACNT配置为1,BCNT配置为32,I2C的ICCNT配置为32。
Shine:
回复 Binggao Ji:
先把EDMA关掉试试, 看是I2C的问题还是EDMA的问题.
Binggao Ji:
回复 Shine:
DSP配置为从接收模式,接收是对的。可以排除EDMA的问题。I2C使用EDMA搬运内闭环是对的。我还是对DSP的I2C细节不是很清楚,DSP的I2C配置为从发送模式时,DSP是什么时候把第一个字节放在I2C的ICDXR和ICXSR寄存器中?
Binggao Ji:
回复 Shine:
I2C配置为从接收模式,DSP发送数据,产生了EDMA完成中断,(证明EDMA没有问题)可以看到最后一个字节在I2C的ICDXR中,查看示波器,发现最后一个数据没有从ICDXR中发送出去。(主I2C的时钟一直有),SDA线一直为高电平。请问ICDXR中的数据搬运到ICXSR是自动完成的吗?为什么会出现上述情况?
user6027759:
回复 Shine:
请问这个问题该如何解决