完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)。I2C总线的接口电路结构如下图: 二、I2C总线的几种信号状态 ① 空闲状态:SDA和SCL都为高电平 ② 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 ③ 结束条件(P):SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 ④ 数据有效:在SCL的高电平期间,SDA保持稳定,数据有效。SDA的改变只能发生在SCL的低电平期间。 ⑤ACK信号:数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。 三、I2C总线基本操作 I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同事控制总线的传输方向,并产生开始和停止条件。 数据传输中,首先由主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位)。接下来是读写操作的数据,以及ACK响应信号。数据传输结束时,主器件产生停止条件。具体过程如图 四、源码结构介绍 在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中配置参数相似,如下: 其中常用的为twi0,twi1,twi2,twi3与twi4使用时按照twi0等格式进行添加即可。 若使用哪一组i2c总线,将对应的twix_used置为1即可。 2.Menuconfig配置说明 在命令行中进行内核根目录,执行make ARCH=ARM menuconfig进入配置主界面,并按以下步骤操作 首先,选择Device Drivers选项进入下一级配置,如下图所示: 然后,选择I2C support选项,进入下一级配置,如下图: 接着,选择I2C HardWare Bus support选项,进入下一级配置,如图: 选择SUNXI I2C controller选项,可选择直接编译进内核,也可编译成模块,如下: 六、I2C体系结构描述 位于drivers/i2c/busses目录下的文件i2c-sunxi.c,是基于sunxi平台实现的I2C总线控制器驱动,他的职责是为系统中5条I2C总线实现相应的读写方法,但是控制器驱动本身并不会进行任何的通讯,而是等待设备驱动调用其函数。 下图是基于SUNXI平台的I2C驱动层次架构图,下图中有5块I2Cadapter,分别对应SUNXI平台上的5块I2C控制器。
|
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)
11838 浏览 0 评论
芯灵思SinlinxA33开发板Linux内核 tasklet 机制(附实测代码)
12500 浏览 0 评论
芯灵思Sinlinx A33开发板 Linux内核等待队列poll ---阻塞与非阻塞
34766 浏览 0 评论
芯灵思Sinlinx A33开发板Linux中断编程 3-应用程序
34705 浏览 0 评论
38791 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 20:23 , Processed in 0.359590 second(s), Total 38, Slave 29 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号