嵌入式Linux设备驱动程序开发剖析.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MC9328MX1 的I2C模块结构 MC9328MX1 协议时序 起始信号,当SCL为逻辑1时,SDA由1到0的转变表示了起始位,表示一次数据传输的开始,并唤醒所有在I2C总线上的设备 数据源/目的地址,Master发出一个7位的地址,即Slave设备的I2C总线地址,每个Slave有一个唯一地址,这个地址不是Master的地址 数据传输方向位,表明是从Slave读数据还是向Slave写数据 MC9328MX1 协议时序 D.应答位,被选址的Slave设备通过返回一个应答位向Master告知其已经接收到了数据。通过将SDA线在起始位之后第9个时钟周期从逻辑1变为逻辑0来实现的。此应答位不受控制寄存器I2CR中TXAK或者状态寄存器中I2CSR中RXAK的影响。 E.数据,I2C按照数据传输方向逐字节的完成数据传输。在SCL时钟周期的中,SCL=0时可以改变数据,而SCL=1则必须保持数据不变。 F.应答位,接收方接受到数据后将SDA线置0表示接收到数据的应答信号。在多字节传输中,如果不将SDA位置0,则表示所有数据已经传输完成。 G.终止位,表明一次数据传输的结束或Master设备中止通信。SCL为逻辑1时,SDA从0到1的一次变化表示了中止位的发出。 H.重复起始位,Master在结束位周期可以不发中止信号,而重复发起始位信号。如果起始位信号产生先于中止位信号的产生,称为重复起始位。这时Master设备可以不释放总线,而重新开始一次独立的数据传输过程。 MC9328MX1 I2C 寄存器 MC9328MX1 I2C 寄存器 1.I2C地址寄存器IADR,如果MC9328是I2C总线上的Slave设备,则此寄存器中存放相应的地址。 2.I2C分频寄存器IFDR,用来控制I2C总线的时钟频率,支持多达64种的频率,最快数据率为400Kbps 3.I2C控制寄存器,控制I2C的中断,设置Maser/Slave模式、接收/传输模式、传输应答使能等位等 4.I2C状态寄存器I2CSR,表明当前I2C总线的状态,如有无中断产生,是否接收到了应答信号,总线是否忙等 5.I2C数据I/O寄存器I2DR,存放需要发送的数据或接收到的数据。在传输模式下,接收方发回的地址选中应答位信号,触发I2C模块发送本寄存器中的数据。在接收模式下,对该寄存器的读操作可以触发下一个数据传输过程。 I2CR 控制寄存器 IEN(bit7) I2C 模块使能 0 禁用, 1使能 IIEN(bit6) I2C 中断使能 0禁中断, 1使能中断 MSTA(bit5) Master/Slave模式选择 0 Slave, 1 Master MTX(bit4) 发送/接收模式选择 0 接收, 1发送 TXAK(bit3) 传输应答使能 0 发送应答,1不发送 RSTA(bit2) 重复开始位产生 0不产生,1产生 I2CSR 状态寄存器 ICF(bit7) 数据传输状态位 0 当前数据正在传输,1数据已经传输完成 IAAS(bit6) Slave 模式中I2C模块是否已经被选址 0 没有被选中,1已经被选中 IBB(bit5) I2C总线忙状态位 0总线空闲,1总线忙 IAL(bit4) 仲裁被淘汰位 SRW(bit2) Slave 模式中的读或写状态位 0 slave模式 接收数据中,1 slave模式发送数据中 IIF(bit1) I2C中断指示位 0 没有产生I2C中断, 1产生了I2C中断 RXAK(bit0) 接收到应答信号指示位 0次接收到一个应答信号, 1没有接收到应答信号 I2C 模块初始化 1.设定频率 2.如果工作在Slave模式,则将地址写入IADR寄存器中 3.通过设置I2CR寄存器中的IEN位,使能I2C模块。 4.修改I2CR中的模式位,选择Master或Slave模式,传输或者接收模式,设置中断使能位等 I2C 总线操作流程 1.模块初始化 2.产生起始位 总线空闲,通过对I2DR寄存器的读/写来发出START信号 3.数据传输 中断方式,检测ICF位来确定当前字节是否被传输完,检测IIF位检测是否接收到一个字节 轮询方式,禁用中断使能位,轮询IIF位,查看是否完成传输 I2C 总线操作流程 4.产生停止位 如果Master处于接收状态,接收来自Slave的数据,如果Master要结束本次传输,必须保证不在最后一个数据字节传输完后的第9个SCL时钟产生应答信号; 在读取倒数第2个字节之前将I2CR寄存器的TXAK位置位来实现; 在读取最后一个字节之前必须产生一个中止位信号。 I2C 总线操作流程 5.产生重复起始位 如果Master要继续占用总线,可以发出一个重复起始位,开启一个新的数据传输 6.Slave模式 检测

文档评论(0)

四月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档