您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > I2C设计(Master)
设计应用1I2C总线控制器设计(Master)模块)一、I2C总线概述I2C总线是Philips公司开发的一种两线(SDA、串行通讯模式,所有器件都挂在两根总线上,其数量仅受总线电容400pF的限制.在标准模式下,数据传输速率可达100kbps,完全可以一般低速数据交换的要求,如LED、LCD显示、键盘、鼠标等接口应用。总体系统框图二、I2C总线协议概述1、主传送器到从接收器(write)2、设置字地址后主设备连续读从设备地址3、主设备读从设备第一个字节后的数据三、I2C总线时序定义为了简化设计我们假设只有一个主设备,一个从设备。1、I2C总线的启动和结束信号:总线不忙时数据线和时钟线保持高电平,数椐线在下降沿而时钟线为高电平时为起动信号。数椐线在上升沿而时钟线为高电平时为结束信号。2、位传送信号:每个时钟脉冲传送一个数据位、SDA线上的数据在时钟脉冲高电平时应保持稳定。而在SCL低电平的中间位置送SDA。3、标志位:从设备每接收到一个地址时,都要返回一个确认信号(Ack),‘0’有效,‘1’无效。4、一组完整的时序波形InputAddressRegisterOutputDataRegisterD[7..0]A[6..0]OuttputShifterregisterInputShifterregisterCLKGeneratorSDAControlSDOSCLStateControlMachineReadCLKSDISDA1、Master(主接收器模块)四、I2C总线模块实现结构分析1、主接收模块结构框图2、典型应用图MCUI2CMaster模块E2PROMI2CSlave模块READCLKA[6..0]D[7..0]SDISDOSCL信号说明:READ:MCU启动I2C模块控制信号,‘1’有效、‘0’无效。CLK:I2C模块时钟信号A[6..0]:发送的地址信号D[7..0]:收到的数据信号为了方便处理,我们把SDA线分为SDI和SDO两根线。SCL:I2C总线时钟信号SDI:I2C总线数据输入SDO:I2C总线数据输出。检测是否有Read信号启动状态控制器从MCU端口上读地址数据A[6..0],发送一个起始位。发送7位地址数据和一位R/W到SDO。读SDI数据线ACK信号,读SDI数据线,接收八个数据信号D[7..0]判断Read是否仍有效发送一个停止位3、I2CMaster模块工作流程图Ack=‘0’Ack=‘1’Read=‘1’Read=‘0’4、控制状态器分析及波形分析我们可以把控制器的状态定义为以下几个状态:A:idle操作:SCL=‘1’SDO=‘1’B:start操作:SCL=‘1’SDO=‘1’‘0’C:SENDADDRESS操作:在SCL的控制下,SDA=‘A6’,‘A5’。。‘A0’D:SEND‘R/W’bit操作:在SCL的控制下,SDA=‘R/W’E:receiveACK操作:在SCL的控制下,ACK=SDOF:receiveDATA操作:在SCL的控制下,DATA7,6…0=SDIG:SENDSTOP操作:SCL=‘1’,SDO=‘0’‘1’SDOSCLCLKA6A4A5A3A2A1CLK2startSDID6D7D5D4ACKSDISDOSCLCLKCLK2A0R/W波形续1D1D3D2SDISDOSCLCLKCLK2D0波形续2stop5、状态转移图idlestartA6A5A4A3A2A0A1ACKD7D6D5D4D3D2D1D0stopRead=‘1’CLK2’eventandCLK2=‘0’6、电路主要构成模块分析A、CLKgenerator:input:CLKoutput:CLK2是CLK的二分频信号(CLK的上升沿触发)SCL是CLK的二分频信号(CLK的下降沿触发),read=‘0’,SCL=‘0’B、InputshiftregisterInput:A[6..0]Output:SDO在start状态后,每次CLK2的下降沿,把A6….A0送到SDO,即SDO=AiC、OutputshiftregisterInput:SDIOutput:D[7..0]在ACK状态后,每次CLK2的上升沿,把SDI分别送给D7…D0,即Di=SDID、Statecontrolmachine主要进行状态的转换控制及异常情况的处理。
本文标题:I2C设计(Master)
链接地址:https://www.777doc.com/doc-6406596 .html