首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳SPI波德率预分频器

最佳SPI波德率预分频器
EN

Stack Overflow用户
提问于 2019-09-26 21:33:42
回答 2查看 3.6K关注 0票数 0

我的问题与SPI的速度有关。我如何知道使用哪个预分频器的基础上?它应该是基于我想通过协议与之交谈的设备吗?

使用HAL库的一个示例是它有以下预分频器变量

  • SPI_BAUDRATEPRESCALER_2
  • SPI_BAUDRATEPRESCALER_4
  • SPI_BAUDRATEPRESCALER_8
  • SPI_BAUDRATEPRESCALER_16
  • SPI_BAUDRATEPRESCALER_32
  • SPI_BAUDRATEPRESCALER_64
  • SPI_BAUDRATEPRESCALER_128
  • SPI_BAUDRATEPRESCALER_256

较低的预分号变量会导致更快的数据。但是,我如何知道使用哪一种或哪一种给出最佳的结果呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-27 06:26:22

您需要阅读您喜欢与之交谈的设备的文档。它有一个最大的时钟速率。

然后,您需要查找系统的系统时钟,SPI模块如何使用该时钟,以及预分频器如何划分该时钟。您可以为每个预分频器选项写一个带有一行的表。

现在估计您需要以多快的速度读取设备,以满足应用程序的要求。为此,您需要查找要传输的字节数,包括嵌入和命令等。

然后将产生的SPI时钟与设备的最大允许时钟进行比较。使用对您的应用程序来说足够快且低于最大值的那个。

如果您需要一个比设备的最大时钟更高的时钟,则无法满足这些要求。

票数 1
EN

Stack Overflow用户

发布于 2019-09-27 08:21:50

预定标器是特定于硬件的东西。因此,HAL根本不应该关注它。HAL应该采用两个参数:系统时钟和期望的波德率。就这样。给定系统时钟,可以或不支持特定的波德率。

如果您正在查看STM32博客软件,以获得关于如何编写HAL的建议,那么请停止。他们称它为HAL,但它更像是“隐藏在函数后面的低级别寄存器访问,因为寄存器是可怕的”。而一个真正的HAL在整个hw外围驱动程序周围增加了一个更高的抽象层。因此,名称抽象层-而不是“混淆层”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58125052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档