- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用CodeVision AVR C中断程序实现AVR单片机TWI读写
利用CodeVision AVR C中断程序实现AVR单片机TWI读写
[摘 要]本文介绍AVR单片机中TWI总线的内部模块、工作模式和工作时序。并将AVR单片机中的TWI和传统的I2C总线做了对比分析。详细地综合了主发送和主接收的共同特点,给出一个利用CodeVision AVR C环境编制的中断程序实例,实现对TWI总线的高效访问,对AVR单片机应用具有现实的指导意义。
[关键词]两线串行总线TWII2CCodeVision AVR C中断
[中图分类号]TP[文献标识码]A[文章编号]1007-9416(2010)03-0124-03
产生于80年代的I2C(InterIntegratedCircuit)总线是由Philips公司开发的两线串行总线,用于连接微控制器和外部接口器件。I2C总线最主要的优点是其简单性和有效性。使用时仅需要两条线就可以将最多128个不同的外围接口器件互连到一起,实现数据的发送和接收,数据传输率为200kHz。因此,具有I2C总线接口功能的外围器件应运而生,I2C总线器件得到了广泛的应用,已经成为工业标准。
AVR系列的单片机内部大多集成了TWI(TwowireSerialInterface)总线接口单元。功能和引脚定义也与I2C总线相同。而TWI重新定义了自已的功能模块和寄存器,寄存器各位的功能定义与I2C总线却不尽相同,传输率提高到400kHz,使得TWI总线在使用上比Philips公司的I2C总线更为灵活方便。然而TWI总线具有I2C总线的所有特点,支持I2C总线的所有通讯协议和时序,用途也完全相同。由于商业原因Atmel公司称它为TWI总线接口。而目前广泛应用的MCS-51单片机内部没有集成I2C总线模块,MCS-51单片机用户只能采用很长的程序模拟I2C总线的时序来完成其操作。使得I2C总线性能大打折扣。而大多数AVR系列的单片机内部都集成了TWI总线模块,数据传送是由模块自动完成。使得I2C总线读写变得简单、高效。本文对TWI总线的内部模块和工作时序进行了详细分析。结合I2C器件的特点,仔细分析了读写过程。用一个CodeVisionAVRC实时中断实例加以说明,对正确使用TWI总线编程具有现实的指导意义。
1 TWI内部模块
TWI内部由总线接口单元、比特率发生器、地址匹配单元和控制单元等几个子模块组成,如图1所示。图中SCL、SDA为CPU的TWI接口引脚。具体功能请参考AVR单片机ATmega16中文说明。接口的SCL频率如下式表示。
2 外围I2C器件的特点
???目前具备I2C接口的器件很多,例如外部E2PROM、24C01、24C02、实时时钟电路PCF8563、键盘接口电路ZLG7290等,这些器件具有一些共同的特点:
(1)每个器件有一个器件地址(),用来指明自身的器件标识。最低位()表明器件的读写性质。=1表明读操作,=0表明写操作。也可以说每个器件有两个地址。即读地址(SLA+R)和写地址(SLA+)。
(2)器件内部有1个8位内部单元地址寄存器(ADDRIN),用来指示将要访问的内部单元(下面的讨论以1个为例)。如果内部单元数大于256个时,需要2个8位内部单元寄存器。在读写过程中,内部单元寄存器(ADDRIN)自动加1,可以连续进行相邻单元的读写。
(3)在读写数据之前,要先寻址器件地址(SLA+R/)并明确(R/)是读还是写。再寻址器件内部单元地址(ADDRIN)、然后进行连续的数据(DATA)读写。
3 TWI的控制寄存器TWCR及工作模式和工作时序
TWI可以工作于4种不同的模式,即主机发送模式(MT)、主机接收模式(MR)、从机发送模式(ST)和从机接收器模式(SR)。即使同一应用也可以使用几种不同模式。在实际使用过程中,绝大多数单片机系统中只有一个CPU配置几个I2C总线器件。主要使用主机发送(MT)和主机接收(MR)模式。
TWI接口是面向字节和基于中断的。所有的总线事件(例如接收到一个字节或发送一个START信号等),都会使TWINT标志位置位并产生TWI中断。此时,TWI状态寄存器(TWSR)包含了前一个总线操作的状态码。中断程序可通过读取(TWSR)的状态码,并根据自己的进程决定下一步操作。典型的主机字节发送的工作时序如图2所示,主机字节接收的工作时序如图3所示,控制寄存器TWCR各位含义如图4所示,关键是在实际读写的读写过程中必须首先用主发送发出器件地址和内部单元的地址。因此,我们确定实际器件的完整读写过程如图5所示。
当需要发送START信号、STOP信号、接收应答ACK及非应答NACK信号时,用设置TWCR寄存器的相应的位即可完成(见图
文档评论(0)