答:完成读写功能即可,不要涉及任何针对从设备的特殊操作,这样就可以避免与从设备的代码产生冗余,linux中的i2c控制器驱动就做的特别棒,做好最简单的读写,然后其它的从设备驱动就是直接调用这些最简单的api即可实现i2c控制器与从设备之间的通信。无论从设备的时序是怎样的,都可以调用最基础的i2c控制器读写接口来组合出各种需要的时序。

举例:rtc pcf2127从设备的驱动实现,主要是实现时钟的获取和设定

  1. 时钟的设定,请看pcf2127的写时序

    

  整理一下: send [start bit] + [slave address] + [write bit] + [data(register address)] + [data] + [data] + ... + [stop bit]

  这就是一次普通的i2c写操作,因此pcf2127时钟的设定就是直接调用i2c控制器驱动的写接口一次即可

  

  2. 时钟的获取,pcf2127的时序要求如下:

    

  先整理一下前一部分设置寄存器地址的时序: send [start bit] + [slave address] + [write bit] + [data(register address)] + [stop bit],是不是和写操作一致,那么设置寄存器地址的操作就可以归纳为一次简单的写操作

  再整理一下后一部分读寄存器地址的时序: send [start bit] + [slave address] + [read bit],发送完这些内容之后,就可以直接读取i2c控制器的数据寄存器里面数据了,读取完毕,就可以发送停止信号了,这不就相当于一次读操作吗,所以直接调用i2c控制器的读接口一次即可

  总结:

    那么获取pcf2127中的时钟就可以归纳为: 一次i2c写操作+一次i2c读操作

  

linux中的i2c控制器驱动应该做些什么?的更多相关文章

  1. Linux i2c子系统(四) _从i2c-s3c24xx.c看i2c控制器驱动的编写

    "./drivers/i2c/busses/i2c-s3c2410.c"是3.14.0内核中三星SoC的i2c控制器驱动程序, 本文试图通过对这个程序的分析, 剥离繁复的细节, 总 ...

  2. 如何在linux中测试i2c slave模式驱动的功能?

    1. 硬件要求 1.1 需要两台机器,一台作为i2c master(记为M),另一台作为i2c slave(记为S) 1.2 使用杜邦线连接两台机器的i2c信号线 2. 使能内核选项CONFIG_I2 ...

  3. Linux I2C总线控制器驱动(S3C2440)

    s3c2440的i2c控制器驱动(精简DIY),直接上代码,注释很详细: #include <linux/kernel.h> #include <linux/module.h> ...

  4. Linux的操作系统I2C驱动架构解说

    Linux的操作系统I2C驱动架构解说 发布时间:2006.10.16 04:52 来源:赛迪网技术社区 作者:LoneStar 最近因为工作需要涉及到了I2C总线.虽然我过去用过I2c,但看了 Li ...

  5. Linux i2c子系统(一) _动手写一个i2c设备驱动

    i2c总线是一种十分常见的板级总线,本文以linux3.14.0为参考, 讨论Linux中的i2c驱动模型并利用这个模型写一个mpu6050的驱动, 最后在应用层将mpu6050中的原始数据读取出来 ...

  6. linux下i2c的驱动架构分析和应用

    i2c在linux下的代码在/driver/i2c下面,总体代码如下所示: i2c-core.c 这个文件实现了I2C核心的功能以及/proc/bus/i2c*接口.    i2c-dev.c  实现 ...

  7. Linux内核调用I2C驱动_驱动嵌套驱动方法

    禁止转载!!!! Linux内核调用I2C驱动_以MPU6050为例 0. 导语 最近一段时间都在恶补数据结构和C++,加上导师的事情比较多,Linux内核驱动的学习进程总是被阻碍.不过,十一假期终于 ...

  8. Linux中LCD设备驱动-framebuffer(帧缓冲)【】

    转自:https://blog.csdn.net/linux_devices_driver/article/details/7079442 1.framebuffer 帧缓冲     帧缓冲(fram ...

  9. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

随机推荐

  1. Datasnap 获取客户端IP

    uses Data.DBXTransport; //ServerContainer procedure TServerContainer.DSServer1Connect(DSConnectEvent ...

  2. SQL 语句 连接

    SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:             book表                                          stu表 1.内连接 ...

  3. window dos 下批量删除docker 容器

    >dokcer ps -a  -q> 1.txt (写入所有已暂停容器id) >for /f %a in (1.txt) do docker rm  %a for 循环     /f ...

  4. 执行nvidia-smi出错

    执行nvidia-smi出错 NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make su ...

  5. 本地phpmyadmin 访问远程数据库服务器

    第一步:打开/phpmyadmin/libraries 目录   第二步:修改config.default.php 文件(linux下可用vim编辑,FreeBSD下可用vi或是ee编辑)找到“All ...

  6. Web Api(1)

    由于在学习Web Api没有了解过MVC,觉得有些吃力.很多基础的东西都会一并记录下来. Web API 的意思是使用HTTP协议并通过网络调用的API. API的意思软件外部接口. 在实际的开发中, ...

  7. spring cache会默认使用redis作为缓存吗?

    web项目中,只需要配置 redis 的IP,端口,用户名和密码就可以使用redis作为缓存了,不需要在在java 代码中配置redisConfig,redisConfig只是作为缓存配置的辅助,比如 ...

  8. 简单的了解Servlet的使用

    具体使用: 1.实现 Servlet 接口 2.实现 Servlet 接口中 所有的方法 package com.ou.test; import javax.servlet.*; import jav ...

  9. 题解 [SCOI2007]修车

    题面 解析 这题要拆点.. 首先,证明一个式子: 设修理员M修了N辆车, 且修每辆车的时间为W1,W2....WN. 那么,这个修理员一共花的时间就为:W1*N+W2*(N-1)+...+WN*1. ...

  10. Python 网络编程Ⅱ

    客户端 接下来我们写一个简单的客户端实例连接到以上创建http://www.weixiu3721.com/的服务.端口号为 12345. socket.connect(hosname, port )  ...