使用SPI协议时,输出数据速率是否与波特率同义?

时间:2018-05-30 00:38:50

标签: embedded stm32

我正在尝试学习SPI协议如何工作,我正在使用STM32F407G-Discovery板开展基础项目。

该板有一个内置加速度计(LIS3DSH),它使用SPI协议。在用户手册中,它说明了以下内容:

  

LIS3DSH具有±2g /±4g /±6g /±8g /±16g动态可选全量程   它能够以输出数据速率测量加速度   3.125 Hz至1.6 kHz。

此加速度计使用SPI1,它连接到APB2。我正在使用STM32CubeMX生成初始化代码(包括时钟配置),看起来APB2外设时钟的默认值为84 Mhz。

这是否意味着我需要将APB2外设时钟配置为具有介于3.125 Hz和1.6 kHz范围之间的值?我无法想象这是真的,因为我无法获得足够低的价值  在STM32CubeMX中因为如果我太低就会抛出错误。

我还考虑了波特率控制SPI寄存器,它允许你低至f-PCLK/256

换句话说,我有点不知道要使用哪种时钟频率以及使用哪种波特率控制。

我还在学习嵌入式编程,因此我的术语可能不正确。

2 个答案:

答案 0 :(得分:2)

这两者没有关系。最大SPI时钟速率为10Mhz(第14页)。 3.125Hz至1.6Khz的输出速率是芯片加速转换的速度。在3.125Hz,每320ms就有一个新的转换结果,在1.6Khz时,它们每625us就可以使用一次。转换率,功耗和准确度之间存在折衷。数据表留下了很多漏洞,我建议您阅读MMA7660数据手册,以便更好地了解这些类型的芯片是如何工作的,然后再回到数据表中了解实现细节。

答案 1 :(得分:0)

您可以使用高达10MHz的SPI时钟频率从该芯片获取数据。 (所以16的预分频器和全速率(84MHz)APB2时钟就可以了)

SPI时钟决定数据从芯片传输到控制器的速度,而不是芯片产生新结果的速度。

要始终获取最新数据,您可以使用芯片中的IRQ线或使用定时器触发与采样率相对应的传输。