TMS320F28335笔记-I2C串行总线_第1页
TMS320F28335笔记-I2C串行总线_第2页
TMS320F28335笔记-I2C串行总线_第3页
TMS320F28335笔记-I2C串行总线_第4页
TMS320F28335笔记-I2C串行总线_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、I2C串行总线I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线 SCL。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及 SCL都是线 与”关系。器件2每个接到 I2C 总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这 时主机即为发送器。由总线上接收数据的器件则为接收器。I2C总线的数据传送、数据位的有效性规定I2C 总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为二、起始和终止信号SCL线为高电平期间,S

2、DA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号 。起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线 就处于空闲状态。连接到 I2C总线上的器件,若具有 I2C总线的硬件接口,则很容易检测到起始和终止信号。器件1SDADATAI01TCLK1OUTDA VDLTIATAJINIM VIMiW J_IH CLK1IN低电平期间,数据线上的高电平或低电平状态才允许变化。要求数枫琦定i 允许数要求数据变化据稳定起础号IlL倍号P三、数据传送格式(1)字节传送与应答每一个字节必须保证是8位长度。数

3、据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有 9 位)。由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据) 它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收 的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机 的“非应答”来实现的。然后,从机释放 SDA线,以允许主

4、机产生终止信号。(2)数据帧格式I2C 总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7 位),第 8位是数据的传送方向位(R/T),用 0”表示主机发送数据(T), 1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。在总线的一次数据传送过程中,可以有以下几种组合方式:a、主机向从机发送数据,数据传送方向在整个传送过程中不变:S从机地址0数据A数据P注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由

5、从机向主机传送。A表示应答,A非表示非应答(高电平)。S 表示起始信号,P 表示终止信号。b、主机在第一个字节后,立即从从机读数据:I2C 总线协议有明确的规定:采用7 位的寻址字节(寻址字节是起始信号后的第一个字节)(1)寻址字节的位定义位:4P3”1*Or从机地址,R/WD7D1 位组成从机的地址。D0 位是数据传送方向位,为“ 0”时表示主机向从机写数据,为“ 1”时表示主机由 从机读数据。? 主机发送地址时,总线上的每个从机都将这 7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据 R/T位将自己确定为发送器或接收器。? 从机的地址由固定部分和可编程部分组成。在一个

6、系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7 位寻址位有 4 位是固定位,3位是可编程位,这时仅能寻址 8个同样的器件,即可以有 8个同样的器件接入到该 I2C总线系统中。S从机地配1数据#A数据卜AP从机地.让1 A 数炉A数据卜X P一一/ _1SDA ,、-/K/ISCL;,- SCL大于40u -大于4 Dus应答信山SDA=0r定义为应答G北应答信号:SDA= 1 定义为11应答-关于 i2c的响应问题:对于每一个接收设备(从设备,slaver),当它被寻址后,都要求在接收到每一个字节后产生一个响应。因此,the maste

7、r device必须产生一个额外的时钟脉冲(第九个脉冲)用以和这个响应位相关联。 在这个脉冲期间,发出响应的从设备必须将SDA拉低并在时钟脉冲的高电平期间保持住。这表示该设备给出了一个ACK。如果它不拉低 SDA线,就表示不响应(NACK )。另外,在从机(发送方)发送完最后一个字节后主设备(接收方)必须产生一个不响应位,用以通知从机(发送方)不要再发送信息了,这样从机就知道该将SDA释放了,而后,主机发出一个停止位给 slaver。总结下,i2c通讯中,SDA和 SCL 都是有主机控制的,从设备只是能够将SDA线拉低而已。对于 SCL线,从机是没有任何能力去控制的。从机只能被动跟随SCL。主

8、机读取从机的数据:主机来发出时钟信号,从机只是保证在时钟信号为高电平的时候的SDA的状态而已。SDA和 SCL已经通过上拉电阻被上拉,master 可以控制(拉低或者释放)这两条线,而 slaver 只能控制 SDA线。当 master 发送数据时,master 会适时地将 SDA和 SCL拉低或释放(拉高)。确切的时序应该是这样的:当 mater 要发送一个 start 时,mater 会将 SDA拉低,这就可以了,因为此时的 SCL 一定是 High。好了,一个 start 就这样 发出去了。而 slaver也会发现这个 start信号的发生,slaver 便会准备好接收接下来的数据了。紧

9、接着 ,master 要发送一 个 Byte 的数据了,一位一位的发出这 8 个 bits。这时 master 会先将 SCL拉低,然后在 SCL 为低的状态下将一个 bit准备好 放到 SDA上(比如要发送一个 0, master 就会通过拉低 SDA来放好这个 0),然后 master 会把 SCL拉高(释放),此时 slaver 会立刻检测到 SCL的变化,由此聪明的 slaver 便知道 master已经将要发送的那个 bit 准备好了, slaver 便会在这 个 SCL 的高电平期间尽快(maser 不会等你很久的哦)去读取一下 SDA,嗯读到了一个 0,slaver就把这个 0放

10、到自己的 移位寄存器中待后续处理。 master 会在一个设定好的时间后把 SCL再次拉低,然后在 SCL为低电平期间把下一个 bit 放 到 SDA 上,然后再把 SCL 拉高,然后 slaver 在 SCL 的高电平期间再去读 SDA。如此反复 8次,一个 Byte的传输便 告结束。当这 8 个 bit发完后,SCL是处于低电平的(被 master 拉低的),SDA是出于高电平的(master 已经释放了 SDA)。当一个字节发送完毕后,master 会释放 SDA (拉高)并拉低 SCL,此时 slaver 如果打算发出一个 ACK 的话,它必须在 这个 SCL被master 拉低的短暂

11、时间内去主动将SDA拉低并保持住 (此前我们说过,SDA此时已经被 master 释放,所以slaver才有机会去拉低这个 SDA)。master 会在一个确定的时间后再次将SCL 拉高,并在拉高的期间去读取 SDA线的状态,如果读到低电平,则认为收到了来自 slaver的响应(ACK ),否则认为 slaver 没有响应(NACK )刚才发送的那一个 Byte。这个过程就是我们说的 i2c通讯中的第 9个时钟周期。当 master 读完这个 ACK/ NACK 后,会再次将 SCL拉低,用以通知 slaver:第 9 个时钟周期已经结束,你现在可以释放 SDA了。而此时 master 也可以

12、向 SDA上准备下一个 Byte 的 第一个 bit。继而重复上述过程。或者 ,master 也许想在接下来发送一个 stop 过去,那么 master 会在这个 S CL 为 低的时间内将 SDA拉低,而后再将 SCL 拉高,在 SCL为高的期间再将 SDA释放(拉高)。这样,一个 STOP 位就产生了。你会发现此后的 SDA和 SCL都是高,这就是是所谓的总线空闲了!一句话:SCL是单向的,由 master 控制。而 SDA是双向的,master以控制,slaver 也可以控制。下面介绍使用 28335 的 IIC总线读写 AT24C512。AT24C512是 Atmel 公司生产的具有

13、64KB容量的串行、电可擦除、可编程的半导体存储器.整个存储空间分成512大丁4 Ous起始信号;SDA由T f g定义为起始.停止信号SDA Jl ”0” * T,定义为停止.SCL页,每一页为 128字节,采用 8引脚封装,具有结构紧凑、存储容量大等特点.任一单元的地址为16位,地址范围为 0000H-0FFFH,可以在 2 线总线上并接 4 片芯片,特别适用于具有大容量数据存储要求的数据采集系统Aor18A1C27NCC36Z1SCLGND匚4 _5JSDA1 AT24C512引脚排列A0,A1:地址选择输入端。通过 A0 , A1 的组合来选择哪一个芯片。A0,A 1 可以悬空,悬空时

14、表示为 0。SDA:双向串行数据输入输出端。SCL:串行时钟输入端。在上升沿时将连接设备上的数据写入EEPROM,在下降沿时从 EEPROM 中读出数据。WP:写保护输入端,该引脚为低电平时,允许写操作,该引脚为高电平时,所有的写入操作将被禁止。如果该引脚 悬空,则芯片内部被下拉到地。器件寻址: 主器件通过发送 1 个起始信号启动发送过程,然后发送它所需要寻址的从器件地址,8位从器件地址的高 5 位固定为10100,接下来的 2位(A0, A1)为器件的地址位,因此最多可以将 4 个 AT24C512 连接到同一总线上使存储容量扩展 至 256Kbyte。注意,这两位必须与 A0 和 A1 两

15、引脚的输入状态相对应,从器件地址的最低位为读写控制位,“1 表示对从器件进行读操作,“ 0 表示对从器件进行写操作,在主器件发送起始信号和从器件发送地址字节后,AT24C512监测总线并当其地址与发送的从地址相符时发出1个应答信号(通过 SDA线),AT24C512 再根据读写控制位(R/W)的状态进行读写操作,从器件地址字节内容如表1所示。1从髭件地址内容DBtDB.DB,DR.DBJDFhi0100A,AmH/WWrite Operations:(AT24C512B )BYTE WRITE: A write operation requires two 8-bit data word ad

16、dresses following the device address word and acknowledgment. Upon receiptof this address, the EEPROM will again respond with a 0 and-toie n clock iidata word. Following receipt of the 8-bit data word, the EEPROM will output a 0Th e addressing device, such as a microcontroller, then mustterminate( 结

17、束)the write sequence with a stop condition.Byte Write$wTRsAlTRDEVICE TFlFISTSECOND0ADDRESS E WORD ADOPESS WORD ADDRESSDATAp1 1 11 1 p1 I II 11 1 I111111iiiIIii1 11111T1 111111MA AAAASfcccceWKKKKPAGE WRITE: Apagewriteis initiated ( 开始) thesame way as abyte write,but themicrocontroller does not sendas

18、top conditionafter thefirstdata word is clocked in. Instead, after the EEPROM acknowledges receipt of the first data word, the microcontroller can transmit up to 127 more datawords . The EEPROM will respond with a 0 after each data worereceived. The microcontroller must terminate the page write sequ

19、ence with a stop conditionRead Operations:CURRENT ADDRESS READ: The internal data word address counter maintains the last address accessed during the last read or write operation,incremented by 1” . This address stays valid between operations as long as the chip pmaintained. The address roll over du

20、ring read is from the last byte of the last memory page, to the first byte of the first page.RANDOM READ:(随机读取)以上就是 AT24C512BW-SH25芯片的操作时序。STARTSTARTWRITEWRITEFIRSTSECONDWORD ADDRESS (n) WORD ADDRESS (nJDATA (n)STOPSTOPMSBACKACKR/_wR/_wACKACKACKACKSTARTSTARTDEVICEADDRESSREADREADSTOPSTOPMSR-MSR-SDALI

21、NLSTARTSTARTWRITEWRITESTARTSTARTDEVICEADDRESSREADREADACKACKR/-WR/-WACKACKDATA nDUMMY WHITESEQUENTIAL READ:NoNoACKACKDEVICEADDRESSREADACKACKACKACKACKACKSTOPSTOPSTOPSTOPACKACKHJLWDEVICEADDRESS1DATA (n + xDATADEVICEADDRESS1st. 2nd WORDADDRESS n28335内部结构如图所示Figure2.I2C Module Conceptual Block DiagramI2C

22、 moaulfi在非 FIF。模式下有四个寄存器用于数据的发送与接收。CPU写数据到 I2CDXR 寄存器中发送,从 I2CDRR 寄存器中读取接收数据。如果 I2C配置为发送方,写到 I2CDXR中的数据被复制到 I2CXSR中,由 I2CXSR 将每一位数据移位 到引脚SDA上;如果 I2C配置为接收方,移位到 I2CRSR中的数据将会复制到 I2CDRR 寄存器中。28335模块使用锁相环将 DSP的系统时钟频率分频后得到I2C输入时钟频率,I2C输入时钟频率作为 I2C模块的频率输入源,再由 I2C模块内部分频最终得到 I2C模块的工作频率。I2C模块有四种基本的操作模式支持主机或者从

23、机发送数据或者接收数据。主机接收:I2C模块为主机,接收方。此模式只能从主机发送模式转入,I2C模块必须先要发送一个命令给从机。在发送完从机地址且发送的是读信号后,I2C模块进入主机接收模式。在这之前,必须要选择7位地址或者 10位地址格式。主机发送:I2C模块为主机,发送方。地址格式为7位或者 10位,数据移位到 SDA引脚上发送。每一位的移位操作与作用在 SCL引脚上的时钟信号是同步的。从机接收:I2C模块为从机,接收方。I2C不产生时钟信号,但是在每个数据字节接收完毕以后,在需要SDA *SCL *I2CXSRI2CRSRI2CDRR4Clock synchronlzerControl/

24、siaius regisleis,Noise fittersArbitratorPeripheraj bus模块时钟频率=逐输入时钟频率(LPSC 4 1)CPU干TXFIFOFtX FIFOInterrupt toCPU/PIEFIFO InierYUptto CPUPIE* I2CDXRPrucalorFigure 3* Clocking Diagram for the I2C ModuleDevice inpulclockMiller clockwi SCL pin预的时候 SCL保持低电平。从机发送:I2C模块为从机,发送方。要进入这个模式只能由从机接收模式转入,因为I2C模块必须先从

25、主机收到一个命令。如果收到的从机地址和模块的地址(在I2COAR 寄存器中)一致并且主机发送的是读信号,那么I2C模块进入从机发送模式,在这之前,必须要选择7位地址或者 10位地址格式。I2C模块起始信号与停止信号:在一个起始信号之后而在停止信号之前这一段时间里,I2C总线处于忙状态,总线忙位 BB (在 I2CSTR寄存器里)为 1。在一个停止信号之后而在下一次的起始信号到来之前这一段时间里,I2C总线处于空闲状态,总线忙位 BB 为 0。随着 I2C模块以一个起始信号开始传输数据, 主机模式位(MST )和起始信号位 STT(在 I2CMDR 寄存器里)必须都要为 1。随着 I2C模块以一

26、个停止信号结束传输数据,停止信号位STP 必须置 1。如果BB 位和 STT位都为 1,那总线上将产生循环的起始信号。(N o- JAcknowl ed gementbit from receiverrISDA-1/iSCL散由1 21L9condition (SJ Slave address R/W ACK7 位地址 8 位数据传输格式Figure 7. I2C Module 7-Blt Addressing Format (FDF = 0, XA= 0 in I2CMDR)1*- 7- *11*- n-*1 火机接收模式:I2C模块在每个应答时钟周期向发送方发送一个应答位。如果设置了NAC

27、KMOD 位 I2C模块只发送一个无应答位( NACK)。主机接收模式:I2C模块在每个应答时钟周期向发送方发送一个应答位,但如果内部数据计数器自减到0的时候,I2C模块发送一个无应答位(NACK )给发送方,因此需要初始化时设置了NACKMOD 位1 : 从机接收或者主机接收模式 J: I2C模块在下一个应答时钟周期向发送方发送一个无应答位。一旦无应答位发送,NACKMOD 位就会被清除。注意:为了 I2C模块能在下一个应答时钟周期向发送方发送一个无应答位,在最后一位数据位的上升沿到来之前必须置位 NACKMOD。14FREE0:当 I2C模块为主机:如果在断点发生的时候 SCL 为低电平,

28、I2C模块立即停止工作并保持 SCL 为低电平,无论是此时 I2C模块是发送还是接收状态;如果在断点发生的时候SCL为高电平,I2C模块将等待 SCL变为低电平然后再停止工作。当I2C模块为从机:在当前数据发送或者接收结束后断点将会强制 I2C模块停止工作。1 : I2C模块无条件运行,也就是说,就算遇到了一个断点,I2C还是照常运行。13STT0:在总线上接收到开始位 (START)后 STT将自动清除。1:此位置 1会在总线上发送一个起 始信号。11STP0:在总线上接收到停止位(STOP)后 STP 会自动清除。1:在 I2C内部数据计数器自减到 0 的时候 STP 会被 DSP置位从而

29、在总线上发送一个停止信号。10MST0:从机模式。1:主机模式。9TRX0:接收模式。1:发送模式。8XA0:7位地址模式(通常的地址模式)。I2C模块发送 7位从地址(I2CSAR的位 6-位 0),并且拥有自己的 7 位从地址(I2COAR 的位 6-位 0)。1 : 10位地址模式(扩充地址模式)。I2C模块发送 10位从地址(I2CSAR的位 9-位 0),并且拥有自己的 10位从地址(I2COAR的位 9-位 0)。7RM0:非循环模式。数长度寄存器(I2CCNT)的数值决定了有多少字吊数据通过I2C模块发送/接收。1:循环模式。6DLB0:屏敝自测模式。此模式下 MST必须为 1。

30、1:使能自测模式。由 I2CDXR 发送的数据被 I2CDRR 接收。发送时钟也是接收时钟。5IRS0: I2C模块处于复位/禁用状态。1: I2C模块使能。4STB起始商模式位(仅限于 I2C模块为主机模式)。0: I2C模块起始信号无需延长。1 : I2C模块起始信号需要延长。如果设置了起始信号位(STT), I2C模块将开始发送多个起始信号。3FDF全数据格式。0:屏蔽全数据格式。通过 XA位选择发送的地址是 7 位还是 10位。1:使能全数据格式。发送全数据格式(没有地址数据)。全数据格式不支持自测模式(DLB=1 )。2-0BC数据位数。这 3 位决定了 I2C收发数据位数(1到 8

31、 位)下表是 I2C模块作为主机时,I2CMDR 中位 RM、STT和 STP 不同值导致在总线上发送 /接收数据的格式和总线状态有 所不同。RMSTTSTP 总线状态解释000None总线没有动作001P总线有停止信号010S-A-D-(n)-D起始信号-从机地址-n个数据字节(n=I2CCNT )011S-A-D-(n)-D-P起始信号-从机地址-n个数据字节-停止信号(n=I2CCNT )100None无动作101P总线有停止信号110S-A-D-D-D循环发送模式:起始信号-从机地址-连续不断的数据发送,直到有停止信号发生或者下一个起始信号发生。111None保留(无动作),15Fig

32、ure 18. I2C Interrupt Enable Register (I2CIER)aResePi/ed7654R-03210ReservedAASSCOXRDYRRDYARDYNACKALR曲FW-0RAMR/W-0AAS从机地址中断使能位。SCD停止信号中断使能位。XRDY数据发送就绪中断使能位。当使用FIF。时此位无需设置。RRDY数据接收就绪中断使能位。ARDY寄存器准备就绪中断使能位。NACK无应答信号中断使能位。AL总线仲裁失败中断使能位。,1514Figure 19.12C Status Register (I2CSTR)9813121110ReservedSDIRNAC

33、KSNTBERSFULLXSMTAASADOR/W1C-QR.W1C-0R-0R-0R-1R-0R-Q76543210ReservedSCDXRDYRRDYARDYNACKALFbOR.W1C-0FMR W1C-0R/W1C-0R/W1C-0FIW1C-0SDIR从器件方向位。0:作为从机接收的 I2C不寻址。巨 U情况该位会被清除:手动清除,向该位写1。自测模式使能。总线发生一个起始信号或者一个停止信号。1:作为从机接收的 I2C寻址,I2C模块接收SDIR从器件方向位。0:作为从机接收的 I2C不寻址。下列情况该位会被清除:手动清除,向该位写1。自测模式使能。总线发生一个起始信号或者一个停

34、止信号。1:作为从机接收的 I2C寻址,I2C模块接收数据。NACKSNT发送无应答信号位(仅限于 I2C模块为接收方)。0:没有无应答信号被发送。1:无应答信号被发送:一个无应答信号在应答信号时钟周期被发送。BB总线忙位。向此位写 1 将清除此位。0:总线空闲。1:总线忙。I2C模块在总线上发送或者接收到起始信号。RSFULL接收移位寄存器满位。当移位寄存器接收到一个新的数据而之前的数据还没有从接收寄存器(I2CDRR )读走时,接收布器拒绝从移位和器中读取新的数据位,除非之前的数据被 CPU读走。0:未拒绝。1:拒绝读取移位寄存器。XSMT发送移位和器空位。XSMT=0 表明发送下溢。要发

35、送的数据从I2CDXR 中转移到 I2CXSR中后,直到发送移位寄存器(I2CXSR)值全部发送完毕,此时,如果没有后续的数据从 I2CDXR 转移到 I2CXSR,那么发送移位和器将发生下溢。除非有新的数据送到I2CDXR中,I2CDXR 才会将新的数据转移到I2CXSR o如果新的数据没有及时的转移,那么之前发送过的数据有可能会被再次发送。0:下溢(I2CXSR为空)。1:未下溢(I2CXSR不为空)。AAS1: I2C模块确认收到的地址为它的从机地址或者是一个全零的广播地址。如果在全数据格式下 (I2CMDR的FDF=1 )收到了第一个字节数据 AAS 位也将被置位。AD0全 0 地址位

36、。0:AD0位可以被起始信号或者停止信号清除。1:接收到一个全零地址(广播地址)。SCD停止信号位。当 I2C发送或者接收到一个停止信号时SCD将被置位。0:没有检测到停止信号。任何一种情况都将清除此位:当I2CISRC 的值为 110B (检测到停止信号)CPU读取 I2CISRC,仿真读不影响此位。手动清除,向该位写 1。I2C模块复位。1:在总线上检测到停止信号。ARDY寄存器读写准备就绪中断标志位(仅限于I2C模块为主机)。该位表明 I2C模块已经准备好了存取操作,因为之前的程序地址、 数据和命令已经被使用过了。CPU可以查询 ARDY 或者响应 ARDY 触发的中断请求。0:寄存器未

37、做好被存取的准备。此位将会被一下任何一种情况清除:I2C模块开始使用当前寄存器内容。手动清除,写 1。I2C复位。1:寄存器已经做好被存取的准备。在非循环模式下(I2CMDR.RM=0 ):如果 STP=0,在内部数据计数器被减到 0 的时候该位被置位; 如果 STP-1 ,ARDY 没有影响(此种模式下在内部数据计数器被减到0 的时候 I2C模块将产生一个停止信号)。在循环模式下(I2CMDR.RM=1 ):在 I2CDXR 中每发送完一个字节 ARDY 都会被置位。NACK无应答信号中断标志位(仅限于I2C模块为发切,无论是做主机还是从机)。NACK 表明 I2C模块从数据接收方接收到的是

38、应答信号还是无应答信号。0:收到应答信号(未收到无应答信号)。此位将会被一下任何一种情况清除:收到接收茂来的应谷信 V。手动涓除,与 1。CPU读取中断源寄存器(I2CISRC )并且该寄存器有无应答信号中断I2C复位。1:收到无应答信号。由硬件检测是否收到无应答信号。注意:在 I2C模块处于广播地址数据交换的模式下,即使收到一个或者更多的应答信号,NACK 始终为 1。,1512Figure 20. I2C Interrupt Source Register (I2CISRC)2a873ReservedReservedReservedINTCODER-0R.W-0R-0R-0INTCODE中

39、断事件位。三位 INTCODE 位用于确定哪种事件触发的 I2C 中断 000 :无事件中断 001:仲裁失败中断010:收到无应答信号 011:寄存器存取准备就绪 100 :数据接收准备就绪 101:数据发送准备就绪 110: 检测到停止信号 111:作为从机地址CPU读该数据后此位自动清除。 如果发生的是仲裁失败中断、收到无应答信号中断或者检测到停止信 J号中断,随着该位的清除 I2CSTR中相应的中断标志位也会被同步清除。1Figure 21. I2C Prescaler Register (I2CPSC)1587aReservedIPSCIPSCI2C分频系数。,IPSC确定供给 I2

40、C模块的工作频率是 I2C模块输入频率的分频值。I2CClockDividerRegisters(I2CCLKLandI2CCLKH)当 I2C模块作为主机时,模块时钟频率经过分频以后将作为主机频率作用在SCL引脚上。以下两个数值决定了模块时钟频率特性:I2CCLKL 中的 ICCL。ICCL 决定了时钟信号的低电平时间。I2CCLKH中的 ICCH。ICCH 决定了时钟信号的高电平时间。ICCL时钟低电平时间值。模块时钟乘以(ICCL+d )确定主机时钟低电平宽度,d可以是 5,6, 或者 7ICCH时钟高电平时间值。模块时钟乘以(ICCH+d )确定主机时钟高电平宽度,d可以是 5,6,或

41、者 7主机时钟电平时间Tt = T脚d X (ICCL4-d ) + (ICCH + d )(IPSC + 1 ) ( ICCL + d ) 4- ICCH + d )I2C input clock frequencyIPSCd0716Greater than 15I2C模块从地址寄存器(I2CSAR),当 I2C模块作为主机时,它用来存储下一次要发送的地址值。它包含了一个7 位或者 10位从机地址空间,当 I2C工作在非全数据模式时(I2CMDR.FDF=0 ),寄存器中的地址是传输的首帧数据。如果寄存器中地址值非全零,那该地址对应一个指定的从机;如果寄存器中的地址为全零,地址就为广播地址,

42、呼叫 所有挂在总线上的从机。如果选择7 位地址模式(I2CMDR.XA=0 ),只有位 6 到位 0是可用的,位 9到位 7 写 0。Figure 26. I2C Own Address Register (I2COAR)1510 soReservedOARR*QRMM)I2C模块自身地址寄存器(I2COAR )。I2C模块使用该寄存器从所有挂在总线上的从机中找出属于自己的从机。如 果选择 7位地址模式(I2CMDR.XA=0 ),只有位 6 到位 0 是可用的,位 9到位 7写 0。15Figure 27.I2C Data Count Register (I2CCNT)0ICDCRW-0它是

43、一个用来表示有多少字节的数据将会被发送(DSP作为发送方)或者接收(DSP作为主机接收方);工作在循环模式下(RM=1 ), I2CCNT 不起作用。向 I2CCNT 里写值以后,I2C模块将自动复制 I2CCNT 里的值到一个内部数据 计数器中,只要有一个字节被发送数据计数器里的数值将会减1 (I2CCNT 里的值不改变)。在主机模式下如果有 STOP停止信号请求(I2CMDR.STP=1 ) , I2C模块的数据计数器在里面的值变为0的时候(最后一个字节被发送出去)响Figure 25. I2C Slave Address Register (I2CSAR)151090ReservedSA

44、RR-0RMTFFh应停止请求而终止发送。Figure 28. I2C Data Receive Register (I2CDRR)1587QReservedDATAR-0时I2C数据接收寄存器。I2C模块能接收 1 到 8位的数据字节。在 I2CMDR 中的 BC 位可以选择一个数据字节的位数。每次从 SDA引脚上读取到的数据被复制到移位接收寄存器(I2CRSR)中,当一个设置的字节数据接收完以后,I2C模块将 I2CSRS中的数据复制到 I2CDRR 中。CPU不能对 I2CSRS直接存取。如果在 I2CDRR中的数据字节少于 8位,那 I2CDRR 中的数据右对齐, 其他位状态不作定义。

45、 比如,如果 BC=011 ( 3 位 数据长度),接收到的数据就存放在I2CDRR的位 2 到位 0,位 7到位 3 状态未定义。如果接收使用 FIFO模式,I2CDRR 充当接收 FIFO寄存器缓存的角色。Figure 29. I2C Data Transrnit Register (I2CDXR)1S870ReservedDATAR-0CPU将要发送的数据写入 I2CDXR 中,这个 16位的寄存器能够写入 1位到 8 位的数据字节。在将数据写入 I2CDXR 之前, 必须要写一个适当的数值到 I2CMDR的 BC位,用以说明一个数据字节有多少位数据。如果要写入的数据少于8位,则必须要确保写入 I2CMDR中的数据是右对齐的。在一个数据字节写入 I2CDXR后,I2C模块将 I2CDXR 中的数据复制到移位发送寄存器( I2CXSR )中。CPU 不能对 I2CXSR直接存取操作。I2C模块每次移一位数据到 SDA引脚上。如果发送使用 FIFO模式,I2CDXR充当

温馨提示

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

评论

0/150

提交评论