linux驱动调用spi标准函数spi_sync发送速率慢的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux驱动调用spi标准函数spi_sync发送速率慢的问题相关的知识,希望对你有一定的参考价值。
在做linux驱动时,使用了spi的通信,spi的时钟设置了20M,测试spi的波形时钟也是20m,但是用spi_sync
收发数据的时候,没一帧的数据耗时了15us,哪位大神知道原因啊,spi刚研究,都不知道哪里影响了spi的速率
/*这是一个简单的用户程序与驱动交互的例程*/
void main(void)
int testdev;
int i;
char buf[10];
/* 这里是用的open系统调用,是linux内核接口函数,不是库函数,返回fd,详细请google ,这个open最终会调用驱动中的open函数(代码流程是这样的open()->sys_open()->filp_open()->dentry_open()->驱动open)*/
testdev = open ("/dev/test",O_RDWR);
if(testdev == -1)
printf("Cann't open file...../n");
exit(0);
printf("buf = 0x%x/n",buf);
/* 下面的read write 和ioctl是用户程序和内核驱动的最直接的交互方式 */
read(testdev,buf,10);
write(testdev,buf,1);
led_ctl.port='G';
led_ctl.bit=5;
led_ctl.value=0;
ioctl(testdev,GPIO_IO_SET_GPG,&led_ctl);
printf("%s",buf);
pause();
close(testdev); 参考技术A spi_sync() /*会调用下面的wait_for_completion*/
wait_for_completion() /*这里会耗费很多时间*/
我也碰到一样的问题,暂时没解决。如果你的数据量不大的话可以spi_sync() 一次传入32bit或更多数据。如果数据量太大就没办法彻底解决了。如果你解决了也帮忙共享一下方法
以上是关于linux驱动调用spi标准函数spi_sync发送速率慢的问题的主要内容,如果未能解决你的问题,请参考以下文章