This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
你好、专家
我使用"spi_controller_fifo_dma_interrupts_lp_MSPM0G3507_nortos_ticlang"作为基址来写入 SPI EEPROM 读取/写入模块、
接收时出现令人困惑的行为、症状是"我无法在每次接收时获得 RxPacket 数据阵列中的固定地址"
请参阅下面的步骤说明
//步骤1
在第71行(main)发送写入命令和断点、命令发送正确且 LA 获取正确数据流(P1)
//步骤2
在第75行(main)中发送读取命令和断点、获取 gRxPacket array (P2)的第7行和第8行中的响应数据
我认为 LA 中的数据流是正常的(P2_LA)、但为什么 gRxPacket 的0号和1号中没有显示数据?
//步骤3
再次发送读取命令并在第79 (main)行中发送断点、在 gRxPacket array (p3)的第4号和第5号中获取响应数据
LA 中的数据流为正常(P3_LA)、但为什么此时数据出现在 gRxPacket 的第4号和第5号中?
在我看来、我认为每次都应该获得 gRxPacket 的0号和1号数据、因为我运行相同的读取子例程
但事实似乎并非如此。
我提供了项目文件、请帮助我检查我的问题。
我非常感激。
e2e.ti.com/.../SPI_5F00_Project.rar
SPI 本质上是双向的。 发送的每个 Tx 字节都会接收到一个相应的 Rx 字节。 即使您对 Rx 字节不感兴趣、也会出现这种情况。
您的 EEPROM_WRITE 函数会发送一定数量的字节、因此会在 Rx FIFO 中产生如此多(最多4个)的字节。 这些字节将一直保留到您的代码(或 DMA)读出它们、因此它们将是您在后续 EEPROM_Read 调用中读取的第一个字节。
有两种策略可以解决这一问题:
1) 1)每次执行"Tx Only"事务时运行 Rx DMA 通道(使用相同的长度)、然后忽略读取到 gRxPacket 中的内容
或者
2) 2)在每个"Tx Only "事务(不要忘记 WREN 事务)之后、通过读取并丢弃这些 字节来清空 Rx FIFO。
你好、Bruce
感谢您的帮助、 我使用策略1、并且我可以在 gRxPacket 中获取固定的响应数据
再次感谢。