公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

如果 SPI TX 缓冲器和/或移位器中有元素,那么即使处于中断状态,SCB SPI 也会继续传输它们吗?

我正在尝试使用电平中断来确定 TX(或 RX)缓冲区何时为半空(或已满),这样我就可以在交易完成并且 SCB SPI 区块解除从机/芯片选择的断言之前向其写入更多数据。 用例是从 SD 卡读取 512 字节的数据块,其中 CS 行必须保持断言状态,直到收到所有区块数据。

我的方法是:

-将 SCB SPI 设置为字节模式(16 个元素深,每个元素 8 位)

-将 TX FIFO 电平中断设置为 7

-发生中断时,向 TX 缓冲区写入 8 字节以将其再次填满

-重复直到传输和接收 512 字节

但是,只有在为中断提供服务期间 SCB SPI 停止传输时,这才会起作用,因此我需要在中断例程中写入的字节数是确定性的。

如果它没有停止传输,那么发送/接收的字节数超过 FIFO 深度并保持 CS 断言的推荐方法是什么?

0 点赞
2 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

不知道这里有什么问题。

你的方法应该行得通。 由于您是 SPI 大师,因此您需要知道(通过 TX fifo)需要发送多少字节才能读回(从 RX fifo)来自 SD 卡的数据。

如果你想停止传输,请记录你发送了多少字节。 一旦我们达到 512 字节,就停止向 TX fifo 写入数据(你可能需要禁用 SPI 中断)。 这将确保一旦 TX FIFO 为空,CS 就会被取消断言。

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好

线程由于长时间不活动而被锁定, CAN 通过打开一个引用锁定线程的新线程来继续讨论该主题。
不活跃话题中的持续讨论可能大多是在社区用户无人参与的情况下进行的。

谢谢和问候,
ADSW

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/SCB-SPI-Does-SPI-TX-continue-when-servicing-a-SPI-interrupt/m-p/651520

0 点赞