繁体   English   中英

Beaglebone Black; SPI频率错误

[英]Beaglebone Black; Wrong SPI Frequency

我刚开始对Beaglebone Black和Linux进行编程,所以我想弄清楚在建立SPI连接时发生了什么。 我正在运行Linux beaglebone 3.8.13-bone47。

我已经使用设备树覆盖图建立了SPI连接,现在正在运行spidev_test.c来测试连接。 对于我正在制作的应用程序,我需要一个非常特定的频率。 因此,当我运行spidev_test并测量移出比特的频率时,我没有得到预期的频率。

在此处输入图片说明

我正在发送一个包含0xAA的SPI数据包,在spidev_test中,我已将“ spi_ioc_transfer.speed_hz ”修改为4000000(4MHz)。 但是我测量的数据传输频率为2.98MHz。 我也看到了与其他速度相同的结果,偏差通常在25-33%左右。

测得的速度为何与分配的速度不匹配? 如何定义“ speed_hz”中分配的速度? 我期望频率有多精确?

谢谢 :)

实际上,如果仔细看一下DSO,您会发现每个时钟周期大约需要312.5 ns,这使时钟频率为3.2Mhz 可能是您正在监视的频道

然后,期望速度与实际速度之间的差异,在微控制器中,我处理了包括SPI在内的所有外围设备,这些时钟都是从提供给MCU(在您的情况下为MPU)的主时钟中获得ots时钟的,主频率除以预分频器给出了周周出现的频率,当外围设备使用该频率并使用其预分频器来控制波特率时,

因此,在您的情况下,假设主频率不合适,则可能导致上述行为。

因此,您有两个选择1.纠正MPU核心频率2.做反复试验以找到spi测试程序必须提供的值才能获得所需的频率

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM