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:
原来是这个问题导致的,学习了。