Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Beaglebone黑色;错误的SPI频率_Linux_Beagleboneblack_Spi - Fatal编程技术网

Linux Beaglebone黑色;错误的SPI频率

Linux Beaglebone黑色;错误的SPI频率,linux,beagleboneblack,spi,Linux,Beagleboneblack,Spi,我对Beaglebone Black和Linux的编程还不熟悉,所以我试图弄清楚在设置SPI连接时会发生什么。我正在运行Linux beaglebone 3.8.13-bone47 我已经使用设备树覆盖设置了一个SPI连接,现在正在运行以测试该连接。对于我正在制作的应用程序,我需要一个非常特定的频率。因此,当我运行spidev_测试并测量位移位的频率时,我没有得到预期的频率 我正在发送一个包含0xAA的SPI数据包,在spidev_测试中,我将“SPI_ioc_传输速度_hz”修改为40000

我对Beaglebone Black和Linux的编程还不熟悉,所以我试图弄清楚在设置SPI连接时会发生什么。我正在运行Linux beaglebone 3.8.13-bone47

我已经使用设备树覆盖设置了一个SPI连接,现在正在运行以测试该连接。对于我正在制作的应用程序,我需要一个非常特定的频率。因此,当我运行spidev_测试并测量位移位的频率时,我没有得到预期的频率

我正在发送一个包含0xAA的SPI数据包,在spidev_测试中,我将“SPI_ioc_传输速度_hz”修改为4000000(4MHz)。但我测量的数据传输频率是298MHz。我在其他速度上也看到了同样的结果,偏差通常在25-33%左右

为什么测量的速度与指定的速度不匹配? 如何定义“速度_hz”中指定的速度? 我应该期望频率有多精确


谢谢:)

事实上,如果仔细观察DSO,您会发现每个时钟周期大约需要312.5 ns,这使得时钟频率3.2Mhz,。可能是你正在监视的频道我

然后,预期速度和实际速度之间的变化, 在Microcontrollers中,我使用了所有外设,包括SPI,从提供给MCU(在您的例子中是MPU)的主时钟获得ots时钟,主频率除以一些预分频器,给出了外设操作的频率,当外设使用该频率并使用其预分频器控制波特率时,

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

所以你有两个选择 1.校正MPU核心频率
2.用试错法找出spi测试程序中必须给出的值,以获得所需的频率。实际上,如果仔细观察DSO,您可以看到每个时钟周期大约需要312.5 ns,这使得时钟频率3.2Mhz,。可能是你正在监视的频道我

然后,预期速度和实际速度之间的变化, 在Microcontrollers中,我使用了所有外设,包括SPI,从提供给MCU(在您的例子中是MPU)的主时钟获得ots时钟,主频率除以一些预分频器,给出了外设操作的频率,当外设使用该频率并使用其预分频器控制波特率时,

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

所以你有两个选择 1.校正MPU核心频率
2.采用试错法找出spi测试程序必须给出的值,以获得所需的频率

报告已成功设置的速度是多少?从
spidev_test.c
程序打印出来的
max speed:
至少应该告诉您一些事情。还可以使用
dmesg
检查内核错误。
最大速度:
打印输出只提供了我定义的速度。在上面的例子中,它将打印4000000。
dmesg中没有显示任何内容
您找到原因了吗?一次传输多少字节?我注意到某些时钟频率下的数据损坏。。尝试更高的时钟频率,如16Mhz,并进行更大的事务处理,以便DMA能够启动。报告成功设置的速度是多少?从
spidev_test.c
程序打印出来的
max speed:
至少应该告诉您一些事情。还可以使用
dmesg
检查内核错误。
最大速度:
打印输出只提供了我定义的速度。在上面的例子中,它将打印4000000。
dmesg中没有显示任何内容
您找到原因了吗?一次传输多少字节?我注意到某些时钟频率下的数据损坏。。尝试更高的时钟频率,如16Mhz,并进行更大的事务,以便DMA可以启动。DSO是什么?我曾尝试将速度设置为3,2 MHz,但测量结果显示为2,98 MHz。当我将速度设置为3MHz时,我测量了相同的2,98MHz,因此2,98MHz似乎是预分频器可以输出的频率之一。DSO是什么?我曾尝试将速度设置为3,2 MHz,但测量结果显示为2,98 MHz。我测量了相同的2,98 MHz,当我将速度设置为3 MHz时,因此2,98 MHz似乎是预分频器可以输出的频率之一。