设为首页 加入收藏

TOP

Linux下读写芯片的I2C寄存器
2014-11-24 14:36:56 来源: 作者: 【 】 浏览:10
Tags:Linux 读写 芯片 I2C 寄存器

首先,我们要了解Linux系统提供的I2C操作函数怎么使用,上篇文章已经提到过,对I2C设备的读写,Linux系统提供了多种接口,这些接口可以在内核的 i2c.h 中找到,这里我主要介绍下面这组读写接口:


第一个参数是 i2c_client 对象指针,第二个参数是要传输的数据buffer指针,第三个参数为buffer的大小。


接口函数已经有了,下面我们要解决的问题就是以何种形式/规则去使用这些接口才能正确地读写芯片的相关寄存器。


首先,我们需要查询芯片手册,找到芯片手册中,关于寄存器的I2C读写时序,其实,大多数芯片的I2C寄存器的读写时序都是一样的,下面我还是以手头的TVP5158芯片为例。


首先分析写操作,该芯片的手册中给出的I2C寄存器写时序图如下:



从上图可以看出,真正需要执行写操作的有两处,Step4 和 Step6 ,Step4首先写入寄存器的偏移地址,而Step6则是写入到该寄存器的值。由此已经很清楚了,对于写I2C寄存器,我们需要做的就是给 i2c_master_send 函数传入两个字节的数据即可,第一个字节为寄存器的地址,第二个字节为要写入寄存器的数据。示例如下:


其实挺简单的,没有什么复杂的代码。下面再看看读时序。



由上图可以,读时序需要做的操作是,先向I2C总线上写入需要读的寄存器地址,然后读I2C总线上的值。代码写起来也不难,示例如下:


到此为止,Linux下具体如何封装读写芯片寄存器的方法已经介绍完毕,其实并不复杂。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用户空间访问I2C设备驱动 下一篇基于C语言的配置文件管理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: