I2C接口ppt课件_第1页
I2C接口ppt课件_第2页
I2C接口ppt课件_第3页
I2C接口ppt课件_第4页
I2C接口ppt课件_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章I2C接口 I2C接口简介 I2C模块提供了一个在DSP芯片和I2C总线器件之间的接口 具有下列性能 支持字节格式的传输 7位和10位的寻址模式 支持多个主 发送器和从 接收器 支持多个从 发送器和主 接收器 组合的主发送 接收和接收 发送模式 仅在7位寻址模式中 数据传输速率从10kbps一直到400kbps Philips快速模式速率 I2C模块结构 I2C模块包括下列的基本部分 串行接口 一个数据引脚 SDA 和一个时钟引脚 SCL 数据寄存器 用来临时保存在SDA引脚和CPU或DMA控制器之间流通的接收数据和发送数据控制和状态寄存器一个外围数据总线接口 用来使能CPU和dMAX控制器来访问I2C模块寄存器一个时钟同步器 用来将I2C输入时钟 来自DSP时钟产生器的SYSCLK2 和SCL引脚上的时钟同步 以及用来将数据传输跟具有不同时钟速度的主机同步一个预定标器 用来将驱动到I2C模块的输入时钟 SYSCLK2 分频一个仲裁器 用来处理I2C模块 在它是主机时 和其他主机之间的仲裁的中断产生逻辑 向CPU发送中断 I2C模块结构 寄存器 I2C模块寄存器 I2C操作模式 若I2C模块为主模块 那么开始它一般作为主发送器向某一从模块发送一个地址 在将数据发给从模块时 I2C模块必须保持为一个主发送器 为了从一个从模块接收数据 必须将I2C模块变换成主接收器模式 若I2C模块为从模块 那么开始它一般作为从接收器 并且在它识别出主模块发来的从地址时发出确认信息 如果主模块要向I2C模块发送数据 这时I2C模块必须保持为一个从接收器 如果主发送器向I2C模块发出数据请求 I2C模块必须要变换成从发送器模式 I2C开始和停止状态 START状态定义为当SCL为高时 SDA线上从高到低的转变 主模块驱动这一状态是用来指示出数据传输的开始 STOP状态定义为当SCL为高时 SDA线上从低到高的转变 主模块驱动这一状态是用来指示出数据传输的结束 I2C串行数据格式 I2C模块支持1到8位的数据长度 下图中给出的是8位数据格式 SDA线上的每一位等同于SCL线上的一个脉冲 并且数据传输时一般是以最高有效位 MSB 开始 可以发送或接收的数据长度是没有限制的 但是发送器和接收器传输的数据长度必须一致 I2C模块支持下列数据格式 7位寻址模式10位寻址模式自由数据格式模式 I2C7位寻址格式 在7位寻址格式中 开始状态后的第一个字节由一个7位的从地址和紧跟着的一个R W位组成 R W位决定着数据的方向 R W 0 主模块向寻址的从模块写 发送 数据R W 1 主模块从从模块读 接收 数据在R W后面插入了一个专门用来确认的 ACK 附加时钟周期 如果是从模块插入ACK位 后面紧跟着来自发送机 主或从 由R W位决定 的n位数据 n是一个2到8之间的数 接收机是在传输的数据位后面插入一个ACK位 I2C10位寻址格式 10位寻址格式跟7位寻址格式类似 只是主模块通过两个字节的传输来发送从地址 第一个字节包括11110b 10位从地址的两个MSBs以及R W 0 写 第二个字节为10位从地址中的剩余的8位 在传输完每个字节后 从模块必须要发送确认 ACK 在主模块向从模块写入第二个字节后 主模块可以继续写数据 也可以使用一个重复的开始状态来改变数据方向 I2C自由数据格式 开始状态后紧跟一个数据字 在每个字后面都要插入一个ACK位 字的位数可以是2到8之间的任意数 不发送地址和数据方向位 这样 发送机和接收机必须都支持自由数据格式 而且在传输过程中数据方向必须恒定 I2C使用一个重复的开始状态 在7位寻址 10位寻址和自由数据格式中 可以使用重复的开始状态 使用重复开始状态的7位寻址格式如下图所示 在每个数据字的末尾主模块都可以驱动另一个开始状态 在结束状态之前 主模块可以发送 接收任意数目的数据字 数据字的长度可以是2到8之间的任意值 I2C时钟产生 DSP时钟发生器从外部时钟源接收一个信号 产生一个I2C输入时钟 I2C模块中的可编程预标定器 prescaler 将I2C的输入时钟分频产生预标定时钟 此时钟必须在6 7 13 3MHz范围内 I2C模块的时钟分频器将预标定的时钟信号再分频 得到I2C串行时钟 当将I2C模块配置为I2C总线上的一个主模块时 这一串行时钟就会由SCL引脚引出 I2C中断请求 I2C中断请求 I2C中断请求 I2C中断请求使能路径 I2C EDMA事件 EDMA控制器在处理发送和接收数据时 I2C模块会产生下列两个EDMA事件 接收事件 REVT 当接收的数据从接收移位寄存器 I2CRSR 复制到数据接收寄存器 I2CDRR 时 I2C模块就会将一个REVT信号发送给EDMA控制器 EDMA控制器可以从I2CDRR中读取数据 发送事件 XEVT 当发送的数据从数据发送寄存器 I2CDXR 复制到发送移位寄存器 I2CXSR 时 I2C模块就会将一个XEVT信号发送给EDMA控制器 作为回应 EDMA控制器可以将下一个发送数据写入I2CDXR I2C模块的复位 禁止 可以通过两种方式来复位 禁止I2C模块 向I2C模式寄存器 I2CMDR 中的I2C复位位 IRS 写入一个0 所有的状态位 在I2CSTR中 被强制置为它们的默认值 并且I2C模块一直保持禁止直到IRS变为1 SDA和SCL引脚处于高阻状态 通过将RESET引脚驱动为低电平使DSP复位 在将RESET释放后 所有的I2C模块寄存器全部被复位成它们的默认值 IRS位被强制置为0 这会使I2C模块复位 I2C模块一直处于复位状态 直到向IRS写入1 I2C模块的编程指南 按照下面所列事项对I2C模块进行编程 1 对I2C预定标寄存器 I2CPSC 编程 得到需要的模块时钟 2 使I2C模块退出复位状态 IRS 1 如果使用发送 接收数据的中断 就在I2CIER中使能相应的中断 如果使用EDMA发送 接收数据 就使能EDMA并对EDMA控制器编程3 初始化 配置I2C模式寄存器 I2CMDR 4 对I2C时钟分频器 I2CCLKL和I2CCLKH 进行编程 得到SCL主时钟5 配置地址寄存器 配置自身地址寄存器 I2COAR 和配置从地址寄存器 I2CSAR 6 对发送数据寄存器 I2CDXR 编程7 配置状态和模式寄存器 I2CSTR 8 轮询接收数据9 轮询发送数据 I2C模块应用示例 AT24C256是ATMEL公司生产的256k位串行可擦除只读存储器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论