代码之家  ›  专栏  ›  技术社区  ›  gjvatsalya

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

  •  0
  • gjvatsalya  · 技术社区  · 7 年前

    我试图了解spi协议是如何工作的,我正在使用stm32f407g发现板进行一个基本的项目。

    这个板有一个内置的加速度计(lis3dsh),它使用SPI协议。在用户手册中,说明如下:

    lis3dsh具有±2g/4g/6g/8g/16g动态可选择的满标度 它能够以输出数据速率测量加速度 3.125赫兹到1.6千赫。

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

    这是否意味着我需要配置APB2外围时钟,使其具有介于3.125赫兹和1.6千赫之间的值?我不能想象这是真的,因为我不能把这个值降得足够低 在stm32cubemx中,因为如果我太低,它就会抛出一个错误。

    我还在计算波特率控制SPI寄存器,它允许您将 f-PCLK/256

    换句话说,我有点纠结于使用哪个时钟频率和使用哪个波特率控制。

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   Joe Thomas    7 年前

    两人没有关系。最大SPI时钟频率为10MHz(第14页)。3.125Hz到1.6KHz的输出速率是芯片进行加速转换的速度。在3.125Hz时,每320ms就有一个新的转换结果,在1.6KHz时,每625us就有一个新的转换结果。转换率、功耗和精确度之间存在着权衡。数据表留下了很多漏洞,我建议阅读mma7660数据表,以便更好地了解这些类型的芯片是如何工作的,然后返回到您的数据表以了解实现细节。

        2
  •  0
  •   theSealion    7 年前

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

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

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