首页 STM32F2技术培训_通信接口_I2C

STM32F2技术培训_通信接口_I2C

举报
开通vip

STM32F2技术培训_通信接口_I2C 1 通信接口 I2C Same as STM32F-1 2 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 3 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 4 I2C...

STM32F2技术培训_通信接口_I2C
1 通信接口 I2C Same as STM32F-1 2 培训 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 3 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 4 I2C协议回顾  协议背景  1980年由Philips开发  开发原因:MCU的并行地址和数据总线造成PCB板上过多走线, 更容易受到EMI/ESD干扰  解决方案:2线通信接口 – I2C  协议版本  早期版本@1982年  标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 模式(100Kb/s)和7位地址  1.0版本@1992年  增加快速模式(400Kb/s和10位地址)  2.0版本@1998年  增加高速模式(3.4Mb/s)  2.1版本@2000年  放松在高速模式下对一些时序参数的要求 5 I2C协议基本概念  2根总线实现半双工通信  SDA:双向数据线  SCL:时钟线,由主设备发出  总线上设备的角色  主设备  发出时钟信号SCL、起始位和停止位  控制数据流  从设备  地址检测和停止位检测  每个设备拥有自己的地址  在作为从设备被寻址时用到  每个设备都可以发送或接收数据 6 I2C通信流程  通信开始  主设备发送起始条件  主设备发送要寻址的从设备的地址以及通信方向  通信过程中  主设备发送数据,从设备发送应答  或,从设备发送数据,主设备发送应答  通信结束  主设备发送停止条件 主设备 从设备 起 始 目标从设备地址 方 向 数据 应 答 数据 应 答 数据 应 答数据 应 答 数据 应 答 数据 应 答 停 止 7 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 8 STM32F2的I2C特性总览  符合I2C版本1.0规范  支持7位和11位地址模式以及广播地址模式  支持标准速度通信和快速通信  支持多主  默认都是从设备。发送了起始位后自动切换到主模式; 发送了停止位或者仲裁丢失,则自动切换回从模式  作为从设备支持双地址  可配置的时钟延展特性  可配置的PEC产生和验证  兼容SMBus和PMBus 9 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 10 主设备通信:时钟配置和发送起始位  主设备负责时钟信号的发送  配置APB1时钟 :FREQ@I2C_CR2  标准速度下,最小外设输入时钟 = 2MHz  快速模式下,最小外设输入时钟 = 4MHz  配置时钟控制寄存器:I2C_CCR  配置上升沿时间寄存器:I2C_TRISE  库函数I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct)  I2C_InitStruct->I2C_ClockSpeed= (e.g 100000、400000、200000)  I2C_InitStruct->I2C_DutyCycle= (16:9、2:1)  发送起始位  软件置位Start@I2C_CR1  BUSY@I2C_SR2置位  起始位发送完成后  SB@I2C_SR1置位,并产生中断如果ITEVFEN置位  MSL@I2C_SR2置位  Start@I2C_CR1清零 11 起始位发送的相关寄存器  Start@I2C_CR1  可由软件置位、清零;  起始位发送出去后或PE=0时被硬件清零  主模式:置位表示当前数据传输完成后发送重复起始位  从模式:置位表示当总线空闲时发送起始位  SB@I2C_SR1  只在主模式有效的只读域  起始位发送后置位  软件读SR1和写DR后清零;PE=0时也可由硬件清零  BUSY@I2C_SR2  只读域  检测到SDA或SCL线低电平时,硬件置位  检测到停止位后由硬件清零  MSL@I2C_SR2  只读域  进入主模式后置位(SB=1)  检测到停止位后,或仲裁失败后,或当PE=0时,由硬件清零 12 主设备通信:发送目标从地址  发送目标从设备地址  10位地址模式  通过写I2C_DR,发送地址头(0b1111,0xxy)  xx是10位地址的高2位;y表示通信方向,读还是写  ADD10@I2C_SR1置位,并产生中断如果ITEVFEN置位  等到ADD10置位后,写I2C_DR发送地址字节(8位地址)  ADDR@I2C_SR1置位,并产生中断如果ITEVFEN置位  7位地址模式  通过写I2C_DR,发送地址字节(0bxxxx,xxxy)  xxxxxxx是7位地址;y表示通信方向  ADDR@I2C_SR1置位,并产生中断如果ITEVFEN置位 13 目标地址发送示意图  7位地址模式  10位地址模式 7位地址 0(发送)起始 起始 7位地址 1(接收) 11110,地址高2位 0(发送)起始 低8位地址字节 起始 11110,地址高2位 0(发送) 低8位地址字节 重复起始 11110,地址高2位 1(接收) 如果收到应答,置位ADDR@SR1 ACK/NAK ACK/NAK ACK ACK A A A 如果收到应答,置位ADD10@SR1 如果收到应答,置位ADDR @SR1 14 发送地址相关寄存器  ADD10@I2C_SR1  只有主模式下有效的只读域  10位地址模式下地址首字节发送完毕后由硬件置位  软件读SR1再写DR清零;PE=0时也可由硬件清零  收到NACK后不置位  ADDR@I2C_SR1  主模式下地址发送完成后置位该位  收到NACK后不置位  从模式下地址匹配后由硬件置位  软件读SR1和SR2后清零;也可由硬件在PE=0时清零  TRA@I2C_SR2  地址发送完毕后根据方向位置位  TRA=0:接收数据  TRA=1:发送数据  检测到停止位、重复起始位,或仲裁失败、PE=0时由硬件清零 15 主设备通信:发送数据  开始发送  清除ADDR标志后,往I2C_DR中写入第一个数据  发送过程中  在当前数据发送完成之前,写入下一个待发送的数据  结束通信  BTF置位时,软件置位STOP来发送停止位 注意: 红色箭头标志的事件 :如果软件未完成相 应操作,SCL会被拉 低延展 绿色箭头标志的事件 :如果软件未在当前 数据传输完成之前, 完成相应操作,SCL 会被拉低延展 16 主设备通信:接收数据  开始接收  清除ADDR标志后,从设备的数据才出现在总线上  接收过程中  RxNE置位后,在下一个数据传输结束之前,读取数据寄存器  结束通信  主设备在适当的时刻置位NAK和STOP位 注意: (1) 主设备只接收一个数据 时,此处是个NAK 红色箭头标志的事件:如 果软件未完成相应操作, SCL会被拉低延展 绿色箭头标志的事件:如 果软件未在当前数据传输 完成之前,完成相应操作 ,SCL会被拉低延展 蓝色箭头标志的事件:必 须在当前数据传输完成之 前完成对应软件操作 17 主设备接收一个和两个数据的特殊处理流程  EV5  SB置位:软件读取SR1,往 I2C_DR写入目标从设备的 地址字节 ADDR置位:软件对ACK位写零,置位POS,再 通过读取SR1和SR2来清除该标志;在ADDR 标志被清除之前,SCL一直被拉低延展 BTF置位(Data1在数据寄存器中,Data2在移 位寄存器中):置位STOP;读取Data1和Data2 。在读取Data1之前,SCL一直被拉低延展  EV5  SB置位:软件读取SR1,往I2C_DR写入目标从设备的地址字节  EV6  ADDR置位:软件对ACK位写零,再通过读取SR1和SR2来清除该标志  EV7  RxNE置位:读取数据寄存器,置位STOP位 18 主设备接收三个或更多数据  EV5  SB置位:软件读取SR1,往I2C_DR写入目标从设备的地址字节  EV6  ADDR置位:软件对ACK位写零,再通过读取SR1和SR2来清除该标志  EV7  RxNE置位:读取数据寄存器,置位STOP位 Data3 Data4 BTF置位(Data3在数据寄存器中,Data4在移 位寄存器中):软件对ACK位写零,读取Data3 。在读取Data3之前,SCL一直被拉低延展 BTF置位(Data4在数据寄存器中,Data5在移位 寄存器中):置位STOP位,读取Data4和Data5 。在读取Data4之前,SCL一直被拉低延展 19 从设备通信:地址匹配检测  从设备接收来自主设备的时钟信号  也需配置PCLK1 :FREQ@I2C_CR2  标准速度下,最小外设输入时钟 = 2MHz  快速模式下,最小外设输入时钟 = 4MHz  检测到总线上的起始位后接收地址字节,然后  和OAR1寄存器比较  如果使能双地址模式,还要和OAR2寄存器比较  ENDUAL@I2C_OAR2 = 1  如果使能广播模式,检验收到的是否为广播地址  广播地址由两个字节组成,第一个字节是0x00  ENGC@I2C_CR1 = 1  地址字节接收并匹配后,根据通信方向硬件设置TRA 20 7位和10位地址匹配检测 10位地址模式 7位地址模式 地址头序列 11110XX0 如果ACK位置位,硬件回复应答脉 冲,并继续等待下一个地址字节 匹配 继续等待总线上的下一个起始位 不匹配 第二个地址字节 XXXXXXXX 若ACK置位,硬件回复应答脉冲; 硬件置位ADDR并产生中断,如果 ITEVFEN置位; 若双地址模式,软件读取DUALF确 认收到的地址和自身哪个地址匹配 匹配 同左 地址字节 XXXXXXXY 继续等待总线上的下一个起始位 不匹配 同左 蓝色表示地址信息; 红色表示方向位: 10位地址模式下,地址头序列的LSB方向位固定是“主发从收” 7位地址模式下,地址字节LSB方向位根据通信方向确定 21 地址匹配检测中的寄存器  ADDMODE@I2C_OAR1  置位表示10位地址模式;清零表示7位地址模式  只在从模式有效  ADD[9:0]@I2C_OAR1  10位地址模式下从设备的10位地址  ADD[7:1]@I2C_OAR1  7位地址模式下从设备的7位地址  ADD2[7:1]@I2C_OAR2  双地址模式下,从设备的第二个地址  ENDUAL@I2C_OAR2  置位表示使能双地址模式  ENGC@I2C_CR2  置位则使能广播呼叫模式  DUALF@I2C_SR2  只在从模式有效  表示收到的地址和双地址中的哪个匹配  检测到停止位或重复起始位后,或者当PE=0时,由硬件清零 22 从设备通信:发送数据  红色箭头标志的事件  在软件执行完相应操作之前,时钟信号被拉低延展  绿色箭头标志的事件  当前数据传输完成之前还未执行完相应软件操作,时钟被拉低延展  即BTF置位就会延展时钟 23 从设备通信:接收数据  红色箭头标志的事件  在软件执行完相应操作之前,时钟信号被拉低延展  绿色箭头标志的事件  当前数据传输完成之前还未执行完相应软件操作,时钟被拉低延展  即BTF置位就会延展时钟  通信结束:检测到停止位,置位STOPF标志 24 时钟延展  主设备:一直具备该特性  BTF或ADDR置位未清零前,时钟被硬件拉低延展  从设备:该特性可被软件关闭  NOSTRETCH@I2C_CR1= 0  BTF或ADDR未清零前,时钟被硬件拉低延展  同主设备  NOSTRETCH@I2C_CR1 = 1  由软件管理读写冲突  RxNE置位未清零,又收到新数据:Overrun错误  后一个数据会丢失  TxE置位,当前数据发送完成之前还未写DR:Underrun错误  重复发送前一个数据 25 PEC包错误检查  目的:提供I2C通信可靠性  使用CRC8多项式对每个字节的8位进行计算  C(x) = X8 + X2 + X + 1  对每个数据字节以及包含读写位的地址字节都计算  使能控制  ENPEC@I2C_CR1  PEC的使用  发送:最后一个数据对应的TxE置位,把最后一个发送数据写入 DR,然后置位PEC  在最后一个数据发送完成后,硬件自动发送PEC计算值  接收:最后一个数据对应的RxNE置位,读取DR中最后一个接收 数据,然后置位PEC  收到的数据和自身计算出的PEC值不相符合,回复NAK信号。  主设备接收时:无论PEC符合与否,都回复NAK信号;软件必须在清 零ACK位之前,置位PEC位  从设备接收时:置位PEC不能晚于PEC字节的应答脉冲出现,否则即 使CRC错误也不会置位PECERR。  PECERR标志和相应中断 DMA模式下PEC的使 用在DMA章节讲 26 PEC操作相关寄存器  ENPEC @ I2C_CR1  软件控制PEC计算使能控制位  PEC @ I2C_CR1  软件置位表示发送PEC计算值  PEC发送完成后由硬件清零  检测到起始位、停止位后由硬件清零  PE=0时由硬件清零  仲裁失败破坏PEC的计算  PECERR @ I2C_SR1  硬件置位表示收到的PEC出现错误  接收方返回NACK信号,无论ACK位是1还是0  否则表示没有PEC错误  接收方在收到PEC后返回ACK信号,如果ACK位为1  软件写0清除该位;也可在PE=0时由硬件清零 27 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 28 DMA特性  I2C的DMA请求  发送时数据寄存器为空  接收时数据寄存器为满  收/发共同的DMA使能控制:DMAEN@I2C_CR2  DMA请求必须在当前数据传输完成之前被响应  数据传输完毕,DMA控制器给I2C发送EOT/EOT_1信号;并产生中断,如果 使能了的话  使用DMA发送  不要置位ITBUFEN@I2C_CR2  主设备:在EOT对应的中断ISR中,等待BTF置位再软件置位STOP位来发出 停止位  如果使能了PEC:发送完最后一个数据后,自动发出PEC  使用DMA接收  不要置位ITBUFEN@I2C_CR2  主设备:接收完N-1个数据,硬件产生EOT_1信号。如果LAST @ I2C_CR2 已经置位,则在EOT_1信号之后的下一个字节传输完成后,硬件自动发送 NAK信号。在DMA传输完成中断ISR中,再软件置位STOP为来发出停止位  如果使能了PEC:I2C收到EOC信号后自动认为下一个字节是PEC并核查它 的值。PEC接收完毕后会在产生一个DMA请求 29 DMA操作相关寄存器  DMAEN@I2C_CR2  DMA使能控制位  置位时表示:当TxE或RxNE置位似,产生DMA请求  ITBUFEN@I2C_CR2  发送/接收缓冲中断使能控制位  置位时表示:当TxE或RxNE置位时,产生事件中断  和错误中断不同的中断向量  无论DMA使能与否  LAST@I2C_CR2  用于主接收模式  在收到最后一个数据后产生NAK信号  LAST=1:下一个DMA EOT信号是最后一次传输  LAST=0:下一个DMA EOT信号不是最后一次传输 30 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 31 错误标志 主设备 从设备 总线错误 BERR 在地址和数据发送过程中,检测到停止位或起始位:置位BERR并产生中断,如果ITERREN置 位 当前传输的数据不受影响。由软件决定是否 丢弃这次传输 当前正在传输的数据被丢失,硬件释放总线。 检测到起始位:等待后续地址或停止位; 检测到停止位:硬件释放总线 应答失败 AF 发送方检测到非应答(第九个时钟脉冲时数据线为高电平):置位AF并产生中断,如果ITERREN 置位 软件必须产生停止位或重复起始位,来复位 通信过程 硬件释放总线 仲裁失败ARLO 检测到仲裁失败:置位ARLO并产生中断,如果ITERREN置位; 释放总线,回到从设备模式(MSL位被清零),但不应答自己的从设备地址;除非在下一个起始位 之后 上溢/ 下溢 错误 OVR* Overrun 接收数据时 RxNE已经置位的情况下,下一个数据又接收完毕:置位OVR 新数据丢失; Underrun 发送数据时 TxE已经置位的情况下,下一个字节对应的时钟到来之前还未更新数据寄存器:置位OVR DR中的数据被重复发送 备注: OVR只有在从设备这一端,并且关闭了时钟延展特性时才会发生。主设备永远不会发生,因为它固有的时钟延 展特性。 从设备在时钟延展关闭的情况下:ADDR清零之后必须在SCL的上升沿来临之前把要发送的第一个数据写进DR (使能时钟延展特性时,在ADDR清零和写DR的软件序列完成之前,SCL会把硬件拉低延展) 32 中断管理 中断事件 中断标志 使能控制位 矢量 通 信 开 始/ 结 束 主模式:起始位发送完成 SB ITEVFEN I2Cx_EV 主模式:地址发送完成且被应答 从模式:收到的地址字节匹配 ADDR 主模式:10位地址的头序列发送完毕 ADD10 从模式:检测到停止位 STOPF 数据传输完成(DR和移位寄存器中都空) BTF 通 信 过 程中 接收缓冲非空 RxNE ITEVFEN以及 ITBUFEN发送缓冲为空 TxE 通 信 错 误 总线错误 BERR ITERREN I2Cx_ER 主模式:仲裁失败 ARLO 应答失败 AF 上溢/下溢错误 OVR PEC错误 PECERR 超时/Tlow错误 TIMEOUT SMBus Alert错误 SMBALERT 33 培训内容  I2C总线协议回顾  STM32F2的I2C特性总览  通信流程和相应标志  主设备通信  从设备通信  DMA特性  错误标志和中断管理  兼容SMBus和PMBus 34 SMBus  SMBus介绍  两线接口,基于I2C操作原则  用于为系统和电源管理的相关应用提供控制总线  总线中的三种设备  Slave:接受命令、响应命令  Master:发送命令,产生时钟,结束通信  Host:特殊的Master,必须支持主机通报协议  和I2C协议的不同 SMBus协议 I2C协议 时钟频率 最快 100KHz 400KHz 最慢 10KHz 没有下限 超时限制 35ms 无超时限制 逻辑电平 电平固定值 取决于VDD 设备地址类型 不同类型(保留地址、动态地址) 7位、10位、广播地址 总线协议 9种不同协议(快速命令、进程调用) 没有总线协议 35 SMBUs模式特性简介  兼容SMBus2.0版本  时钟同步机制允许不同速度的设备共存于总线  时钟拉低延展  主设备:最长10ms的累积延展时间  从设备:最长25ms的累积延展时间  在每个bit上延展  带应答控制的硬件PEC产生和校验  支持地址解析协议(ARP)  给每个从设备动态分配唯一地址,以解决地址冲突  支持主机通报协议
本文档为【STM32F2技术培训_通信接口_I2C】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_380355
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:35
分类:互联网
上传时间:2011-12-18
浏览量:39