我的问题与SPI的速度有关。我如何知道使用哪个预分频器的基础上?它应该是基于我想通过协议与之交谈的设备吗?
使用HAL库的一个示例是它有以下预分频器变量
较低的预分号变量会导致更快的数据。但是,我如何知道使用哪一种或哪一种给出最佳的结果呢?
发布于 2019-09-27 06:26:22
您需要阅读您喜欢与之交谈的设备的文档。它有一个最大的时钟速率。
然后,您需要查找系统的系统时钟,SPI模块如何使用该时钟,以及预分频器如何划分该时钟。您可以为每个预分频器选项写一个带有一行的表。
现在估计您需要以多快的速度读取设备,以满足应用程序的要求。为此,您需要查找要传输的字节数,包括嵌入和命令等。
然后将产生的SPI时钟与设备的最大允许时钟进行比较。使用对您的应用程序来说足够快且低于最大值的那个。
如果您需要一个比设备的最大时钟更高的时钟,则无法满足这些要求。
发布于 2019-09-27 08:21:50
预定标器是特定于硬件的东西。因此,HAL根本不应该关注它。HAL应该采用两个参数:系统时钟和期望的波德率。就这样。给定系统时钟,可以或不支持特定的波德率。
如果您正在查看STM32博客软件,以获得关于如何编写HAL的建议,那么请停止。他们称它为HAL,但它更像是“隐藏在函数后面的低级别寄存器访问,因为寄存器是可怕的”。而一个真正的HAL在整个hw外围驱动程序周围增加了一个更高的抽象层。因此,名称抽象层-而不是“混淆层”。
https://stackoverflow.com/questions/58125052
复制相似问题