当前位置:  技术问答>linux和unix

使用I2CTWI遇到的问题

    来源: 互联网  发布时间:2016-10-02

    本文导语:  我在uCLinux上使用 I2CTWI作为I2C通信。使用参考程序如下: #include  #include  #include  #include  #include  #define I2C_SLAVE 0x0703 /* Change slave address */ int main(int argc, char* argv[]) {     unsigned char outp_buf[100];     int re...

我在uCLinux上使用 I2CTWI作为I2C通信。使用参考程序如下:

#include 
#include 
#include 
#include 
#include 

#define I2C_SLAVE 0x0703 /* Change slave address */

int main(int argc, char* argv[])
{
    unsigned char outp_buf[100];
    int regval, regaddr, rc = 0;
    int i2c_fd;
    int slave_addr;


    slave_addr = 0x3C;

    printf("slave addr: 0x%xn", slave_addr);

    slave_addr >>= 1;
    
    i2c_fd = open("/dev/i2c-0", O_RDWR);

    if(ioctl(i2c_fd, I2C_SLAVE, slave_addr)> 8) & 0xFF;
        buf[2] = val & 0xFF;
    }

    if (write(filehandle, buf, iDataWidth + 1) == iDataWidth + 1)
    {
        if (iDataWidth == 1)
        {
            printf("local_cam_set_register: 0x%x 0x%x writtenrn", buf[0], buf[1]);
        }
        else
        {
            printf("local_cam_set_register: 0x%x 0x%x 0x%x writtenrn", buf[0], buf[1], buf[2]);
        }
        return 0;
    }

    if (iDataWidth == 1)
    {
        printf("local_cam_set_register: Error sending 0x%02x at 0x%02x, errno = %drn", val, reg_addr, errno);
    }
    else
    {
        printf("local_cam_set_register: Error sending 0x%04x at 0x%02x, errno = %drn", val, reg_addr, errno);
    }
    
    return (-1);
}


int
local_cam_get_register(int    filehandle,
                       int    bus_width,
                       int    reg_addr,
                       int    *val)
{
    unsigned char   regval =    reg_addr; /* Device register to access */
    unsigned char   buf[10];
    int             try_count;

    buf[0] = regval;

    if (write(filehandle, buf, 1) != 1)
    {
        printf("local_cam_get_register: error sending register address 0x%02x, errno = %drn",
            regval, errno);
        return -1;
    }

    if (read(filehandle, buf, bus_width) == bus_width)
    {
        if (bus_width == 1)
        {
            *val = buf[0];
        }
        else
        {
            *val = buf[0] 

    
 
 

您可能感兴趣的文章:

  • Unix AIX 5 使用smitty tcpip遇到的问题
  • jquery组件使用中遇到的问题整理及解决
  • 编程技术其它 iis7站长之家
  • 请使用QT编程的朋友到以下网址讨论QT中遇到的问题!!!!!!!
  • 使用iText组件不能在表格中显示中文?那位大侠遇到过类似问题?怎么解决?
  • 使用JB时遇到一个问题
  • 使用GDB调试C代码时,遇到的问题。
  • 使用虚拟机安装linux是遇到的问题,请大家帮忙。
  • 使用rcp遇到的问题,请帮忙
  • 使用rsync遇到以下问题?谁能帮助我?
  • 使用grub引导系统遇到问题
  • 使用 awk 时遇到的奇怪现象... 难道是个bug ?
  • 使用mysql中遇到的几个问题
  • JSP中使用INPUT时遇到的问题,谢谢
  • truss使用时遇到的问题:如何确定rename所在的进程或目录
  • 使用jdom遇到的莫名其妙的问题(有关Element.getChildren()返回类型?)
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • 在Applet上使用socket遇到的一个奇怪问题?请帮忙!!
  • 有谁在使用tomcat遇到过这样的问题?
  • 在IBM上使用动态链接库编译多进程程序时遇到的问题~
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3