基于TWI接口实现AVR单片机主从机通信论文

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于TWI接口实现AVR单片机主从机通信【摘要】atmel公司的twi(two-wire serial interface)接口具有硬件实现简单、软件设计方便、运行可靠和成本低廉的优点。提出了一种以avr单片机atmega8为平台基于twi接口的主从机通信的实现方法,给出了该系统主从机进行通信的硬件结构和软件设计。该方法对于简化硬件电路、提高系统可靠性、缩短开发周期、降低成本是可行的。

【关键词】avr;twi;主机模式;从机模式

master-slave communication of avr microcontroller based on twi interface

zhou yong-gang

(the 41st institute of china electronics technology group corporation, qingdao shandong, 266555)

【abstract】the twi interface of atmel corporation has simple hardware, software design has the advantages of convenient, reliable operation and low cost. this article presents the design of master-slave communication system for avr microcontroller based on twi interface on the platform of atmega8,give the structure of the system’s hardware and software design. the method is feasible to simplify the hardware circuit, improve system reliability, shorten development cycles, reduce costs.

【key words】avr; twi; master mode; slave mode

0 引言

avr atmega系列单片机片内集成两线串行接口twi模块。采用twi协议,设计者可通过两根双向总线,即一根时钟线scl和一根数据线sda,最多连接128个从设备[1]。实现总线连接时唯一需要增加的外部设备是两条总线上的上拉电阻。所有与总线相连的设备都需要定义各自的设备地址。实际上,twi接口时序与常见的i2c 总线是兼容的,因此,只需要控制相关寄存器,就能够实现通过twi 传输数据,twi通信工作于主从模式,把系统任务进行了合理的分工,节省了硬件资源,减少了工作量,从而使编程简单,开发更容易。

1 twi接口简介

twi总线是简单同时强大而灵活的通信接口,具有最高达400khz 的数据传输率。twi总线协议可仅用两根线将不同的设备互连到一起。支持主机和从机操作、多主机仲裁。avr单片机的twi模块由以下几个子模块构成[2]:

1.1 scl和sda引脚

当cpu对应的端口设置为scl和sda引脚时,可以设定相应i/o 口内部上拉电阻有效,这样可以省略外部的上拉电阻。

1.2 波特率发生器

twi工作于主机模式时,时钟信号scl的周期由比特率发生器控制。具体由twi状态寄存器twsr的预分频系数以及比特率寄存器

twbr设定,scl的频率计算公式如公式(1):

scl frequency=■(1)

其中,twbr为twi波特率寄存器的值;twps为twi状态寄存器预分频位的值。在主机模式下,twbr的值应大于10,否则可能会产生不正确的输出。

1.3 总线接口单元

该单元包括数据与地址移位寄存器twdr,起始/终止信号(start/stop)控制器和总线仲裁判定硬件电路。

1.4 地址匹配单元

地址匹配单元将检测从总线上接收到的地址是否与twar寄存器中的7位地址相匹配。一旦地址匹配成功,控制单元将按照得到的通知作出相应的响应。

1.5 控制单元

控制单元监听总线twi总线,并根据twi控制寄存器twcr的设置作出相应的响应。当twi总线上产生需要应用程序干预处理的事件时,twi中断标志位twint置位,时钟线scl被拉低,暂停twi 总线上的数据传输。

1.6 twi寄存器

twbr:twi比特率寄存器。

twcr:twi控制寄存器。

twsr:twi状态寄存器。

twdr:twi数据寄存器。

twar:twi(从机)地址寄存器。

2 twi总线的使用

avr的twi接口是面向字节和基于中断的。所有的总线事件,如接收到一个字节或发送一个start信号等,都会产生一个twi中断。由于twi接口是基于中断的,因此twi接口在字节发送和接受过程中,不需要应用程序的干预[3]。twi状态寄存器twsr包含了表面当前twi总线状态的值。应用程序可以读取twsr的状态码,判别此时的状态是否正确,并通过设置控制寄存器,决定在下一个twi 总线周期twi接口的工作[4]。

twi可以工作于4种不同的模式,即主机发送模式(mt)、主机接收模式(mr)、从机发送模式(st)、从机接收模式(sr)。当twi 上出现多个主机时,就会发生多主机仲裁。除了依靠自身硬件的检测外,还可以通过软件读取twsr状态寄存器判断自己在总线中的精确状态,以便为下一步动作提供更精确的诊断依据。

主机模式下,主机可向从机发送或接收数据。为了进入主机模式,必须先发送start信号;紧接着的地址包格式决定是进入主机发送模式或者主机接收模式。如果发送sla+w,则进入主机发送模式;如果发送sla+r,则进入主机接收模式。

从机模式下,从机只需要监听twi总线,如果接收到sla+r并回复ack后,则进入从机发送模式;如果接收到sla+w并回复ack 后,则进入从机接收模式。

3 系统硬件设计

相关文档
最新文档