查看: 220|回复: 2

[原创] SINA33-IIC驱动开发

[复制链接]

90

主题

1

好友

2677

积分

版主

Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    2016-6-24 09:52
  • 签到天数: 112 天

    [LV.6]常住居民II

    发表于 2016-5-18 16:16:38 |显示全部楼层
    一、I2C总线工作原理
    I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)。I2C总线的接口电路结构如下图:
    图片1.png
    二、I2C总线的几种信号状态
    ① 空闲状态:SDASCL都为高电平
    ② 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
    ③ 结束条件(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
    ④ 数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。SDA的改变只能发生在SCL的低电平期间。
    ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。
    三、I2C总线基本操作
    I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同事控制总线的传输方向,并产生开始和停止条件。
    数据传输中,首先由主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位)。接下来是读写操作的数据,以及ACK响应信号。数据传输结束时,主器件产生停止条件。具体过程如图
    图片2.png
    四、源码结构介绍
    drivers/i2c/目录下,包含有几个重要文件和目录:
    1)文件i2c-core.c I2C子系统核心功能的实现。
    2)文件i2c-dev.c :通用的从设备驱动实现。
    3)目录busses :里面包括基于不同平台实现的I2C总线控制器驱动,A33平台使用的源文件为:i2c-sunxi.c
    五、配置的介绍
    1.sys_config.fex配置说明
    在不同的sunxi硬件平台中,TW1控制器的数目也不同,但对于每一个TW1控制器来说,在sysy_config中配置参数相似,如下:
    图片3.png
    其中常用的为twi0twi1twi2twi3twi4使用时按照twi0等格式进行添加即可。
    若使用哪一组i2c总线,将对应的twix_used置为1即可。
    2.Menuconfig配置说明
    在命令行中进行内核根目录,执行make ARCH=arm menuconfig进入配置主界面,并按以下步骤操作
    首先,选择Device Drivers选项进入下一级配置,如下图所示:
    图片4.png
    然后,选择I2C support选项,进入下一级配置,如下图:
    图片5.png
    接着,选择I2C HardWare Bus support选项,进入下一级配置,如图:
    图片6.png
    选择SUNXI I2C controller选项,可选择直接编译进内核,也可编译成模块,如下:
    图片7.png
    六、I2C体系结构描述
    位于drivers/i2c/busses目录下的文件i2c-sunxi.c,是基于sunxi平台实现的I2C总线控制器驱动,他的职责是为系统中5I2C总线实现相应的读写方法,但是控制器驱动本身并不会进行任何的通讯,而是等待设备驱动调用其函数。
    下图是基于SUNXI平台的I2C驱动层次架构图,下图中有5I2Cadapter,分别对应SUNXI平台上的5I2C控制器。
    图片8.png
    系统开机时,I2C控制器驱动首先被装载,I2C控制器驱动用于支持I2C总线的读写。I2c_sunxi_algorithm结构体中定义了I2C总线通讯方法函数i2c_sunxi_xfer(),该函数实现了对I2C总线访问的具体方法,设备驱动通过调用这个函数,实现对I2C总线的访问;而在函数i2c_sunxi_probe()中完成了对I2C adapter的初始化。

    www.sinlinx.com
    回复

    使用道具 举报

    1

    主题

    1

    好友

    2689

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    奋斗
    昨天 23:23
  • 签到天数: 646 天

    [LV.9]以坛为家II

    发表于 2016-5-18 22:28:56 |显示全部楼层
    学习和参考了
    回复

    使用道具 举报

    90

    主题

    1

    好友

    2677

    积分

    版主

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    奋斗
    2016-6-24 09:52
  • 签到天数: 112 天

    [LV.6]常住居民II

    发表于 2016-5-19 09:03:18 |显示全部楼层
    jwdxu2009 发表于 2016-5-18 22:28
    学习和参考了

    看看吧,还不错
    www.sinlinx.com
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-10 07:14 , Processed in 0.148380 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部