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 器件通信、该器件需要24位数据。 器件不直接支持发送此功能、因此会发送3个8位数据。 SPI 处于 FIFO 模式。
在极少数情况下、可能会发生75kHz ISR 中断对 SPITXBUF 的3次写入。 在这种情况下、第2个字节和第3个字节之间存在间隙、外部 SPI 器件无法获取数据。 请参见下图。 因此、已将2个字节写入 SPI FIFO、传输已开始、发生中断、两个字节都已发送、ISR 所需时间过长、第3次写入过晚。
是否有可能 SPI 只有在写入3个字节时才开始发送?
当然、可以在进行3次写入之前禁用中断、但这样 ISR 本身会延迟。 DMA 可能是另一种解决方案、但并不是首选。
谢谢!
Robert
尊敬的 Robert:
在标准配置下、无法 将发送延迟到"n"个字节可用、这是由硬件控制。
您可以使用 GPIO 引脚模拟 SPIPTE 信号、 并将发送块设置为仅在"n"个 字节可用时启动。 这仍然会受到与 以前相同的中断影响、但在获取每个 后续字节的值时出现延迟的情况下、这可能会降低 ISR 中断传输的机会。
谢谢!
Arnav