TI中文支持网
TI专业的中文技术问题搜集分享网站

SPI时钟的频率不等于设定频率问题

AM3352 板子中

在spi的读写程序中,设定SPI频率为20MHz

实际示波器测量时钟则只有16MHz的频率

切换到40MHz

实际测量时钟则只有23MHz的频率

设备树中的SPI最大频率设置为48MHz

哪里变了我的SPI时钟速率???

Shine:

请问寄存器是怎么配置的?配的是不是20MHz或者48MHz。

hui wang1:

回复 Shine:

应用层调用ioctl 给SPI的speed 20000000
static uint8_t mode;
static uint8_t bits = 8;
static uint32_t speed = 40000000;
ret = ioctl(fdFpga, SPI_IOC_WR_MODE, &mode) | ioctl(fdFpga, SPI_IOC_RD_MODE, &mode) |ioctl(fdFpga, SPI_IOC_WR_BITS_PER_WORD, &bits) | ioctl(fdFpga, SPI_IOC_RD_BITS_PER_WORD, &bits) |ioctl(fdFpga, SPI_IOC_WR_MAX_SPEED_HZ, &speed) | ioctl(fdFpga, SPI_IOC_RD_MAX_SPEED_HZ, &speed);

我不是理解传入驱动的参数为SPI_IOC_WR_MAX_SPEED_HZMAX是只最大???如果是 ,那么我如何指定一个频率

Nancy Wang:

可否打印dmesg | grep spi信息出来看一下。

yongqing wang:

回复 hui wang1:

对比这个配置看看:blog.csdn.net/…/19070081

hui wang1:

这个问题已经解决了 是因为3352 的spi时钟48M分频出来的频率不是所有频点都能出的,典型482416上描述的23M对应的是24M16 就是16

翻看了spi的驱动找到了正确答案

yongqing wang:

回复 hui wang1:

感谢分享

xyz549040622:

回复 hui wang1:

原来是这个问题导致的,学习了。

赞(0)
未经允许不得转载:TI中文支持网 » SPI时钟的频率不等于设定频率问题
分享到: 更多 (0)