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

Embedded 使用SPI协议时,输出数据速率是否与波特率同义?,embedded,stm32,Embedded,Stm32,我正在尝试学习SPI协议是如何工作的,我正在使用STM32F407G发现板进行一个基本项目 该板具有内置加速计(LIS3DSH),并使用SPI协议。在用户手册中,说明如下: LIS3DSH具有±2g/±4g/±6g/±8g/±16g动态可选择满量程 它能够以输出数据速率测量加速度 频率为3.125 Hz至1.6 kHz 该加速计使用SPI1,SPI1连接到APB2。我使用STM32CubeMX生成初始化代码(包括时钟配置),看起来APB2外围时钟的默认值为84 Mhz 这是否意味着我需要配置AP

我正在尝试学习SPI协议是如何工作的,我正在使用STM32F407G发现板进行一个基本项目

该板具有内置加速计(LIS3DSH),并使用SPI协议。在用户手册中,说明如下:

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

该加速计使用SPI1,SPI1连接到APB2。我使用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提供一个新的转换结果。在转换率、功耗和精度之间需要权衡。数据表留下了很多漏洞,我建议阅读MMA7660数据表,更好地了解这些类型的芯片是如何工作的,然后再回到数据表中了解实施细节。

这两者不相关。最大SPI时钟频率为10Mhz(第14页)。3.125Hz到1.6Khz的输出频率是芯片进行加速度转换的速度。在3.125Hz时,每320ms准备一个新的转换结果,在1.6Khz时,每625us提供一个新的转换结果。在转换率、功耗和精度之间需要权衡。数据表留下了很多漏洞,我建议您阅读MMA7660数据表,更好地了解这些类型的芯片的工作原理,然后返回数据表了解实施细节。

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

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


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

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

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


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

请注意,LIS部件往往具有相当奇怪和非标准的“SPI”。为了让它们工作,你可能需要做各种各样的技巧,检查数据表中的“SPI”计时部分。没有特别标准的SPI协议。SPI是一个接口,从主设备:设备选择线、时钟、主输出(MOSI),然后从设备都将其输出连接到MISO。非寻址从机具有高阻抗输出。当从机通过其从机选择(通常为低)进行选择时,它可以启用其MISO线路。然后数据同时从MOSI上的主设备和MISO上的从设备中时钟输出,一次八位。每个SPI外围设备都定义(在其数据表中)它遵循的字节协议,并且主设备中的软件实现该协议。请注意,LIS部件往往具有相当奇怪和非标准的“SPI”。为了让它们工作,你可能需要做各种各样的技巧,检查数据表中的“SPI”计时部分。没有特别标准的SPI协议。SPI是一个接口,从主设备:设备选择线、时钟、主输出(MOSI),然后从设备都将其输出连接到MISO。非寻址从机具有高阻抗输出。当从机通过其从机选择(通常为低)进行选择时,它可以启用其MISO线路。然后数据同时从MOSI上的主设备和MISO上的从设备中时钟输出,一次八位。每个SPI外围设备定义(在其数据表中)它遵循的字节协议,并且主设备中的软件实现该协议。