"Thread:SysConfig"中讨论的其他器件
您好!
我正在学习该 TI 微控制器的工作原理、在 尝试设置 SPI 通信时、我在理解 FIFO 功能如何工作时遇到问题。
我将连接 Launchpad 的2个 SPI 接口、并想使用 FIFO 中断从主器件(控制器)传输一个由8个 uint16_t 类型元素组成的数组(外设)。 我的配置和代码如下(我使用的是 SysConfig):
我希望代码已清除(在某种程度上遵循示例 spi_ex4 drivelib 示例)。 我将调用 TX ISR、在这里我使用命令 WriteDataBlockingFIFO 写入所有数据、然后在传输之后、通过缓冲器的每个元素进行更新。 然后在 RX ISR 中、我想读取我发送的所有数据(使用 ReadDataBlockingFIFO)并将其保存在与我发送的数据尺寸相同的数组中、然后我使用"tracker"变量检查我接收到的元素是否为预期的元素。
我设置的比特率为10MHz 是因为我还要为未来的项目实现快速通信。
(中断 ISR 的名称紧跟在最后一个镜像中的第一个名称之后)
我期望中断按如下方式触发:
-当 TX FIFO 中有8/16个位置被占用时、就会触发 TX ISR、因为我 将 SPI0 (控制器)"Transmitt Interrrupt Level"设置为"8/16 FIFO";
-当 RX FIFO 中的8/16个位置空闲时、就会触发 RX ISR、因为 我 将 SPI1 (外设)在"8/16 FIFO"上设置为"接收中断级别"。
当我调试时得到的结果是、在 RX ISR 生效时、只有 TX ISR 被触发。 我已经阅读了 SPI 的参考手册部分、但我不知道我的操作哪里有问题。 我附加了调试视图图片:
我不知道我是否误解了中断的调用方式、也不知道我在代码中使用的读取和写入函数、甚至只是协议的代码流。 您能帮助我理解我哪里出了问题以及 FIFO 缓冲区的工作原理吗?
提前感谢您 。
此致、
Edoardo