使用SPI协议时,输出数据速率是否与波特率同义?
When using the SPI protocol, is the output data rate synonymous with the baud rate?
我正在尝试了解 SPI 协议的工作原理,并且正在使用 STM32F407G-Discovery 开发板开展一个基础项目。
本板内置加速度计(LIS3DSH),使用SPI协议。在用户手册中,它声明如下:
The LIS3DSH has ±2g/±4g/±6g/±8g/±16g dynamically selectable full-scale
and it is capable of measuring acceleration with an output data rate
of 3.125 Hz to 1.6 kHz.
此加速度计使用连接到 APB2 的 SPI1。我正在使用 STM32CubeMX 生成初始化代码(包括时钟配置),看起来 APB2 外设时钟的默认值为 84 Mhz。
这是否意味着我需要将 APB2 外设时钟配置为介于 3.125 Hz 和 1.6 kHz 之间的值?我无法想象这是真的,因为我无法获得足够低的价值
在 STM32CubeMX 中,因为如果我走得太低它会抛出错误。
我还在考虑波特率控制 SPI 寄存器,它允许您低至 f-PCLK/256
。
换句话说,我有点纠结于使用哪个时钟频率和使用哪个波特率控制。
我还在学习嵌入式编程,所以我的术语可能不正确。
两者没有关联。最大 SPI 时钟速率为 10Mhz(第 14 页)。 3.125Hz 到 1.6Khz 的输出速率是芯片进行加速转换的速度。在 3.125Hz 时,每 320ms 准备一个新的转换结果,在 1.6Khz 时,它们每 625us 可用。在转换率、功耗和精度之间存在权衡。数据 sheet 留下了很多漏洞,我建议阅读 MMA7660 数据 sheet 以更好地了解这些类型的芯片是如何工作的,然后恢复到您的数据 sheet实施细节。
您可以使用高达 10MHz 的 SPI 时钟频率从该芯片获取数据。
(所以 16 的预分频器和全速率 (84MHz) APB2 时钟就可以了)
SPI 时钟决定了数据从芯片传输到控制器的速度,而不是芯片生成新结果的速度。
要始终获取最新数据,您可以使用芯片的 IRQ 线或使用定时器触发与采样率相对应的传输。
我正在尝试了解 SPI 协议的工作原理,并且正在使用 STM32F407G-Discovery 开发板开展一个基础项目。
本板内置加速度计(LIS3DSH),使用SPI协议。在用户手册中,它声明如下:
The LIS3DSH has ±2g/±4g/±6g/±8g/±16g dynamically selectable full-scale and it is capable of measuring acceleration with an output data rate of 3.125 Hz to 1.6 kHz.
此加速度计使用连接到 APB2 的 SPI1。我正在使用 STM32CubeMX 生成初始化代码(包括时钟配置),看起来 APB2 外设时钟的默认值为 84 Mhz。
这是否意味着我需要将 APB2 外设时钟配置为介于 3.125 Hz 和 1.6 kHz 之间的值?我无法想象这是真的,因为我无法获得足够低的价值 在 STM32CubeMX 中,因为如果我走得太低它会抛出错误。
我还在考虑波特率控制 SPI 寄存器,它允许您低至 f-PCLK/256
。
换句话说,我有点纠结于使用哪个时钟频率和使用哪个波特率控制。
我还在学习嵌入式编程,所以我的术语可能不正确。
两者没有关联。最大 SPI 时钟速率为 10Mhz(第 14 页)。 3.125Hz 到 1.6Khz 的输出速率是芯片进行加速转换的速度。在 3.125Hz 时,每 320ms 准备一个新的转换结果,在 1.6Khz 时,它们每 625us 可用。在转换率、功耗和精度之间存在权衡。数据 sheet 留下了很多漏洞,我建议阅读 MMA7660 数据 sheet 以更好地了解这些类型的芯片是如何工作的,然后恢复到您的数据 sheet实施细节。
您可以使用高达 10MHz 的 SPI 时钟频率从该芯片获取数据。 (所以 16 的预分频器和全速率 (84MHz) APB2 时钟就可以了)
SPI 时钟决定了数据从芯片传输到控制器的速度,而不是芯片生成新结果的速度。
要始终获取最新数据,您可以使用芯片的 IRQ 线或使用定时器触发与采样率相对应的传输。