版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I2C驱动 II2C总线是一种用于IC器件之间连接的双向二线制总线I2C总线有两根信号线,一根为SDA(数据线),一根为SCL(时钟线)。可发送和接收数据。任何时候时钟信号都是由主控器件产生。I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答由判断为受控单元出现故障。基本概念初始化发送,产生时钟信号和终止发送的器件被主机寻址的器件发送器发送数据到总线的器件接收器从总线接收数据的器件同时有多于一个主机尝试控制总线但不破坏报文仲裁并使报文不被破坏的过程同步两个或多个器件同步时钟信号的过程主机发送数据流程(1)主机在检测到总线为“空闲状态”(即SDA、SCL线均为高电平)时,发送一个启动信号“S”,开始一次通信的开始(2)主机接着发送一个命令字节。该字节由7位的外围器件地址和1位读写控制位R/W组成(此时R/W=0)(3)相对应的从机收到命令字节后向主机回馈应答信号ACK(ACK=0)(4)主机收到从机的应答信号后开始发送第一个字节的数据(5)从机收到数据后返回一个应答信号ACK(6)主机收到应答信号后再发送下一个数据字节(7)当主机发送最后一个数据字节并收到从机的ACK后,通过向从机发送一个停止信号P结束本次通信并释放总线。从机收到P信号后也退出与主机之间的通信然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主机的通信;②主机的一次发送通信,其发送的数据数量不受限制。主机是通过P信号通知发送的结束,从机收到P信号后退出本次通信;③主机的每一次发送后都是通过从机的ACK信号了解从机的接收状况,如果应答错总线空闲状态即释放总线,由两条信号线各自的上拉电阻把电平拉高。信号负跳变),定义为I2C总线总线的启动信号,它标志着一次数据传输的重启动信号在主控器控制总线期间完成了一次数据通信(发送或接收)之后,如果想继续占用总线再进行一次数据通信(发送或接收),而又不释放据传输的结束,又作为后一次数据传输的开始。利用重启动信号的优点的控制权,即不让其他主器件节点抢占总线。停止信号返回高电平(即正跳变),称为I2C总线的停止信号,它标志着一次数插入等待时间把时钟线SCL电平拉低并且保持,使主控器进入等待状态。一旦被控器释放时钟线,数据传输就得以继续下去,这样就使得被控器得到足够CPU的被控器在对收到的地址字节做出应答之后,需要一定的时间去执行中断服务子程序,来分析或比较地址码,其间就把SCL线钳位在低电平上,直到处理妥当后才释放SCL线,进而使主控器继续后续数总线封锁状态总线竞争的仲裁可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器从而确保了竞争仲裁的可靠性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。时钟信号的同步到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCLL高件确定。参考博客:了那么多引脚,所以就想到用IOMUXC的方式来解决此问题,也即一个功能模块的引脚,通过n选1的多路开关,把需要的外设连接到该引脚上。要使用哪个功能,就需要配置引脚在实际开发中,具体的配置是通过IOMUXC_SW_MUX_CTL_PAD_(BGAcontactNAME,比如UART3_RXD)寄存器来实现,然后通过配套的寄存器下面通过一个具体实例,来让大家有个认识:1#defineMX6Q_PAD_GPIO_19__GPIO_4_5\其中_MX6Q_PAD_GPIO_19__GPIO_4_5定义为:3#define_MX6Q_PAD_GPIO_19__GPIO_4_5\IOMUXPAD(0x0624,0x0254,5,0x0000,0,0)义控制寄存器的偏移地址(16进制)MUX控制寄存器的偏移地址(16进制),用于选择引脚的SELECT_INPUT寄存器偏移地址(16进制)DaisyChain模式,bit0~1,范围0~3bitstobesetinregister_pad_ctrl_ofsforconfigurationselection_pad_ctrl_ofs_mux_ctrl_ofs_mux_mode_select_input_ofs_select_input_pad_ctrl具体的含义要结合IMX6数据手册【Chapter36IMOUXController(IOMUXC)】的内容。trlofsh2、_mux_ctrl_ofs、_mux_modemuxmodeselectinputofsselectinput候_select_input_ofs和_select_input都为0。再查看下图标记部分基本知识在Linux内核源代码中的drivers目录下包含一个i2c目录,而在i2c目录下又包含如下(1)i2c-core.c。(2)i2c-dev.cicdicicicopenwrite)、read()、ioctl()和close()等来访问这等接口,应用层可以借用这些接口访问挂接在适配器上的I2C设备的存储空间或寄存器,IC(3)busses文件夹。I2C控制器驱动为i2c-imx.c。(4)algos文件夹。4个数据结构进行了定义。理解这4个结构体的作用十分关键。下面介绍下它们之间主要的关系和作用rmgivertCr我们知道内核启动的过程大致为以下几步:2.进行堆栈、MMU等其他程序运行关键的东西进行初始化3.打印内核信息4.执行各种模块的初始化5.挂接根文件系统在4步骤之后,start_kernel--->rest_init____initcall_start和__initcall_end在源码中并无定义,只是在include/linux/init.h中申明arm平台下,连接控制脚本为vmlinux.lds,它们定义是在/arch/arm/vmlinux.lds中,看其含义是指示连接程序让__initcall_start指向代码节.initcall.init的节首,而__initcall_end指向.initcall.init的节尾。在内核中,只要把需要初始化调用的函数的指针放在__initcall_start和__initcall_end之间的节内,函数就会在内核初始化时被调用。加入到.initcall.init的代码段,是按如上方式调用的。主要是各个驱动模块。图中红色标记部分:#definearch_initcall(fn)__define_initcall("3",fn,3)#define__define_initcall(level,fn,id)\staticinitcall_t__initcall_##fn##id__used\__attribute__((__section__(".initcall"level".init")))=fnt在/include/linux/init.h文件中nsn加入到了代码段。(/arch/armkernel/vmlinux.lds)具体到我们这个例子,arch_initcall(customize_machine)也就是说customize_machine()在内核编译的时候由arch_initcall(fn)放到了.initcall3.init里。回顾上面的内容,有提到过driver模块等是在/init/main.c里do_initcalls()的函数里被调用。各个i2cdevice或是其他驱动放在.arch.init代码段
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮服务经理岗位职责与培训计划
- 2025中国农业科学院饲料研究所家禽营养与饲料创新团队科研助理招聘1人(北京)参考笔试题库附答案解析
- 2025浙江宁波宁麓置地(宁波)有限公司招聘13人备考考试题库及答案解析
- 承包合同的法律注意事项
- 有理数的乘法课件-人教版数学七年级上册
- 标准电子产品采购合同样本
- 2026年甘肃省兰州大学口腔医院招聘31人备考笔试试题及答案解析
- 敬业乐业九年级语文上册部编版教案
- 肝功能不全合理用药教程教案(2025-2026学年)
- 幼儿园消防员叔叔辛苦了教案
- 排水设施使用协议书
- 老年人失智症行为和精神症状(BPSD)护理方案
- 防水工程专项施工方案
- 2025年超星尔雅学习通《环境经济学与生物资源管理》考试备考题库及答案解析
- 智慧树知到《创新创业与管理基础(东南大学)》章节测试附答案
- 脑机接口技术与应用研究报告(2025年)
- 江苏省盐城市东台市2024-2025学年六年级上学期期末考试英语试题
- 铁塔冰冻应急预案
- 文物复仿制合同协议
- 大货车司机管理制度
- 主人翁精神课件
评论
0/150
提交评论