我正在尝试学习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
。
换句话说,我有点不知道要使用哪种时钟频率以及使用哪种波特率控制。
我还在学习嵌入式编程,因此我的术语可能不正确。
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以使用高达10MHz的SPI时钟频率从该芯片获取数据。 (所以16的预分频器和全速率(84MHz)APB2时钟就可以了)
SPI时钟决定数据从芯片传输到控制器的速度,而不是芯片产生新结果的速度。
要始终获取最新数据,您可以使用芯片中的IRQ线或使用定时器触发与采样率相对应的传输。