linux-2.6下IIC驱动问题

发布于 2022-09-21 01:34:46 字数 2387 浏览 11 评论 0

linux-2.6下的IIC驱动,目的读取ZLG7290内的键值,ZLG7290的地址为0X70,键值寄存器的地址为0X01。每次按一次键从该寄存器内读取一次键值,都是数字键。代码如下:

         R_IICCON  =  ioremap(0x54000000,4);
         R_IICSTAT = ioremap(0x54000004,4);
         R_IICADD  =  ioremap(0x54000008,4);
         R_IICDS   =   ioremap(0x5400000c ,4);

     char data; int i;
    iowrite8(0xd0,R_IICSTAT);
    iowrite8(0x70,R_IICDS);
    for(i=0;i<10;i++);                           
    iowrite8(0Xf0,R_IICSTAT);
    barrier();
    udelay(1000);     //主发送模式下送出ZLG7290芯片地址且为写

    iowrite8(0x01,R_IICDS) ;
    for(i=0;i<10;i++);                           
    iowrite8(0xe3,R_IICCON);               
    barrier();                                   
   udelay(1000);              //主发送模式下送出芯片寄存器地址

    iowrite8(0x90,R_IICSTAT);
    iowrite8(0x71,R_IICDS) ;          //主接受模式下送出芯片地址且为读
    iowrite8(0xb0,R_IICSTAT);   
    barrier();
    udelay(10000);               

    iowrite8(0xe3,R_IICCON);   
    barrier();
    udelay(10000);
    data=ioread8(R_IICDS);      //主接受模式下读取键值                    
    return data;

可是没次读出的值都是0x71,0x7f,0xff.这些值,分析肯定不对 。但就是不知道那里有问题,感觉这个程序好象一点问题没有,都是按着网上人间写的内容写的。
不知道出错在那里,帮帮忙指点一下。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文