主题中讨论的其他器件:HALCOGEN
您好!
我尝试在以下配置中设置 MIBSPI:
- TMS570是 SPI 总线上的从器件、字长为8位
- MIB SPI 配置为使用8个缓冲器、0-7、CS[0]选择器件
- 每次写入缓冲区7时、DMA 都会将接收到的内容复制到 SRAM 中的缓冲区
- 由于我不知道单个 CS 激活事件期间传输的字节数、因此我在 HALCoGen 中启用了"芯片选择保持"
现在我将测试16字节传输到 TMS570的情况、其中 CS 在传输过程中一直处于活动状态。 在这种情况下、RxRAM 将在8个缓冲区中接收8个字节、DMA 将触发一次、其余的流量将丢失。
我已经检查了 HALCoGen 生成的代码(v04.05.02)、并找到缓冲区7的以下行:
mibspiRAM3->TX[i].control =(uint16)((uint16) 4U <<13U)/*缓冲模式*/ |(uint16)((uint16) 0U << 12U)/*芯片选择保持对于最后一个缓冲区必须为零*
当我手动将缓冲器7的 CS_HOLD 更改为1时、我会得到预期的行为-两个 DMA 触发器和所有发送的数据都被复制到 SRAM。
为什么在生成的代码中 CS_HOLD 设置为0? 为什么评论说"芯片选择保持对于最后一个缓冲器必须为零"?
谢谢
Josip