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.

[参考译文] MSPM0G1507:SPI 通信协议问题

Guru**** 2794765 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1622642/mspm0g1507-spi-communication-protocol-questions

部件号: MSPM0G1507

I²C 正在定义一个在 I ² C 和 SPI 上运行的外设(从器件)通信协议、因此相同的寄存器访问实现可用于两个接口。   ~目前对 SPI 使用以下协议、并且当 MCU 在 80MHz 下运行时、我们能够实现 I ² C 4MHz:

SPI 情况:  
 字节 1: cmd — 命令(读取或写入)
 字节 2: Addr — 寄存器地址
 字节 3: STALL - STALL 字节
 字节 4+: 可根据事务进行变量计数
  -单字节:  单个寄存器访问
  -多个字节: 每个下一个字节的地址自动递增的块访问

我们有以下问题:

1) 它似乎 DL_SPI_isBusy () 函数有时会返回有关 SPI 机器状态的错误状态,特别是当它恰好在 FIFO 为空的接收传输边界附近被调用时。  您是否有任何示例/指南/文档、我们应该使用这些示例/指南/文档来更好地理解此功能的局限性?

2) 写入时、MCU 将返回任意数据(即空 FIFO 先前的内容)。  同样、在读取 MCU 时、将返回 CMD、ADDR 和 STALL 字节的任意数据。  是否可以清除 FIFO 或返回已知值?  如果不是、这还可以、只是不是很理想。  

3) 您是否有关于 SPI 外设实现的任何性能数据?  我们想了解 4MHz 是否为上限、或者是否有提高性能的方法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1) 有勘误表 SPI_ERR_04 [Ref 勘误表 (SLAZ742F) 第 20 页]、但该勘误表声称它仅适用于外设“仅接收“模式[无论什么是-- pod=1 也许?]。 我们想知道使用空 TX FIFO 时字节之间会发生什么情况。 也就是说:我想想象一下外围设备会如何忙碌。

    2) 我没有找到清理 TX FIFO 的方法。 切换启用并不会实现。 重置 (RSCTL) 有、但这是一个非常重的锤子。

    3) 对于 4MHz SCLK、 STALL 字节需要 2us、提供 160 个 CPU 时钟来准备响应。 这听起来很像、但会很快用完。 当然,这不是 SCLK 速度的问题(本身),而是字节级的节奏——SPI 控制器通常期望(并非不合理)能够在突发中发送一个事务。