linux驱动调用spi标准函数spi_sync发送速率慢的问题 20

在做linux驱动时,使用了spi的通信,spi的时钟设置了20M,测试spi的波形时钟也是20m,但是用spi_sync收发数据的时候,没一帧的数据耗时了15us,哪位... 在做linux驱动时,使用了spi的通信,spi的时钟设置了20M,测试spi的波形时钟也是20m,但是用spi_sync
收发数据的时候,没一帧的数据耗时了15us,哪位大神知道原因啊,spi刚研究,都不知道哪里影响了spi的速率
展开
 我来答
碧血玉叶花
2015-05-18 · TA获得超过4977个赞
知道大有可为答主
回答量:6154
采纳率:0%
帮助的人:1866万
展开全部

/*这是一个简单的用户程序与驱动交互的例程*/
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);
刀小谷0eS
2017-08-14
知道答主
回答量:18
采纳率:0%
帮助的人:2万
展开全部
spi_sync() /*会调用下面的wait_for_completion*/
wait_for_completion() /*这里会耗费很多时间*/
我也碰到一样的问题,暂时没解决。如果你的数据量不大的话可以spi_sync() 一次传入32bit或更多数据。如果数据量太大就没办法彻底解决了。如果你解决了也帮忙共享一下方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式