基于AVR单片机的双机通信三种实现方式.pdf

上传人:赵** 文档编号:46682801 上传时间:2022-09-27 格式:PDF 页数:8 大小:535.24KB
返回 下载 相关 举报
基于AVR单片机的双机通信三种实现方式.pdf_第1页
第1页 / 共8页
基于AVR单片机的双机通信三种实现方式.pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《基于AVR单片机的双机通信三种实现方式.pdf》由会员分享,可在线阅读,更多相关《基于AVR单片机的双机通信三种实现方式.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、http:/ 基于基于 AVR 单片机的双机通信三种实现方式单片机的双机通信三种实现方式 原理分析及应用比较原理分析及应用比较 施柏鑫 北京邮电大学信息工程学院(100876)E-mail:boxin.shiieee.org 摘摘 要:要:本文基于 AVR 单片机 ATmega16 的三种硬件通信方式SPI、USART、TWI,实现两片单片机的通信。通过分析这三种方式的硬件内部结构、寄存器的使用方法、数据传输过程及其各自的特点和扩展应用,比较他们的异同,为合理选择适当的通信方式提供了理论依据。关键词:关键词:AVR 单片机、通信、SPI、USART、TWI 0.引言引言 在很多工程应用中,一片

2、单片机往往不能达到预期的要求。这就需要两片或者两片以上的单片机协同工作。实现这一问题的核心技术是单片机之间的相互通信。Atmel 公司的 AVR系列单片机支持多种硬件通信方式,根据相应的通信协议,我们可以实现单片机之间高速、可靠的数据传输。本文以 AVR 单片机 ATmega16 为例,充分利用该芯片的硬件资源,不外接任何芯片,用三种方式SPI、USART、TWI 实现双机通信,并对三种通信方式的原理和应用进行分析和比较。1.串行外设接口串行外设接口 SPI 串行外设接口 SPI(Serial Peripheral Interface)是由 Motorola 公司推出的工业标准的同步串行接口,

3、是一种全双工、四线通信的系统。它可以用于单片机之间的互联,也可以外接支持该通信方式的外设。ATmega16 的 SPI 接口支持 7 种可编程的比特率,可以设置传输结束中断标志、写碰撞标志检测,支持主机倍速模式和闲置模式唤醒1。两片用 SPI 互连的单片机有主从之分,为串行传输提供时钟信号 SCK 的一方是主机,接受时钟的另一方为从机。双机通信的方法是将主机和从机的四根信号线 SS、SCK、MOSI、MISO 直接对应相连。ATmega16 的 SPI 内部结构框图如图 1.1 所示3。-1-http:/ 图 1.1 SPI 内部结构框图 从图中我们可以看出,ATmega16 的 SPI 寄存

4、器有三个:SPDR(数据寄存器),SPCR(控制寄存器)和 SPSR(状态寄存器)。SPDR 是一个 8 位可读写的移位寄存器,主要用于数据缓冲;SPCR 可根据用户的定义控制中断使能、数据传送方向(从 LSB 开始还是从 MSB开始)、主从机选择以及时钟的极性、频率和相位的选择。SPSR 可以标志中断、冲突和主机倍速模式。各寄存器每一位的具体含义和具体编程方法请查阅相关手册。主从两片单片机分别设置和连接以后,就可以使用 SPI 端口进行“全双工”的数据传送了,即主机向从机输入信息的同时会接收到从机输出的信息。工作原理如图 1.2 所示3。图 1.2 SPI 主从机连接的工作原理 -2-htt

5、p:/ 了解了双机互联的工作原理以后,我们来看一下双机数据交换的时序图 1.32。图 1.3 SPI 数据传输时序图 从机信号 SS 拉低以后,在主机时钟 SCK 的控制下,MOSI 每个时钟向从机写入 1bit信息,与此同时,MISO 每个时钟向主机读入 1bit 信息。从图中可知,每个 SCK 周期收发的数据为 1bit,所以一个字节的传输需要 8 个 SCK 周期,并且收发是同步的,也就是前面反复强调的“全双工”。SPI 接口还可以用于控制很多的外围器件,如 FlashRAM AT25F512,AD 转换器Max1270,DA 转换器 Max532,以及一些网络控制器和 LCD 液晶显示

6、终端等。需要指出的一点是,SPI 可以扩展为一主多从的总线结构,这需要主机有多个 SS 信号,所以 ATmega16是不可以的。但是实际很少这样做,因为当总线上从机的个数多于一时,SPI 会变得很复杂。2.通用同步异步串行收发器通用同步异步串行收发器 USART 通用同步异步串行收发器USART(Universal Synchronous and Asynchronous serial Receiver and Transmitter),也是一种常用的全双工通信系统。它只需要两根信号线就可以实现两片单片机的互联。ATmega16的USART接口的主要特点有:支持5到9个位数据位和1或2个停止位

7、的数据格式,具有奇偶校验、数据过速检测、帧错误检测、噪声滤波功能,能响应三个独立的中断(发送、接收结束中断和数据寄存器空中断),可设置倍速异步模式和多处理器通讯模式。采用USART方式互连的两个单片机之间没有明确的主机和从机的区分,二者均可作为数据的发送方和接收方。连接时需要将两片单片机的RXD(接收数据线)和TXD(发送数据线)“交叉”相连,即单片机1的RXD连到2的TXD,1的TXD连到2的RXD。ATmega16 的 USART 内部结构框图如图 2.1 所示3 -3-http:/ 图 2.1 USART 内部结构框图 USART 内部结构有三个主要部分:时钟发生器,发送器和接收器,在图

8、中用虚线框隔开。时钟发生器中的同步逻辑将波特率发生器和从机同步操作所使用的外部输入时钟同步起来。发送器包括一个写缓冲器,串行移位寄存器,奇偶发生器以及处理不同的帧格式所需的控制逻辑,其中写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟。接收器包括时钟和数据恢复单元、奇偶校验、控制逻辑、移位寄存器和一个两级接收缓冲器UDR,是USART 模块中最复杂的部分,其中数据恢复单元用于异步数据的接收,支持与发送器相同的帧格式,而且可以检测帧错误,数据过速和奇偶校验错误。USART 主要有三个寄存器:数据寄存器 UDR、控制和状态寄存器 UCSR 和波特率寄存器 UBRR。USART 发送数据缓冲寄

9、存器和接收数据缓冲寄存器共享相同的 I/O 地址,称为USART 数据寄存器 UDR。将数据写入 UDR 时实际操作的是发送数据缓冲器存器,读 UDR 时实际返回的是接收数据缓冲寄存器的内容。UCSR 又由 A、B、C 三个 8 位的寄存器构成,主要功能有:收发结束、寄存器空、数据溢出、帧错误、奇偶校验错误的状态显示,倍速模式、多处理器模式、中断使能、收发使能的设置,字符格式(数据位、停止位、奇偶校验位的个数)、同步或异步工作模式、时钟极性的选择等。波特率寄存器 UBRR 是一个 16 位的寄存器(由两个 8 位寄存器 UBRRH 和 UBRRL 组成),可以设置数据收发的波特率,波特率的范围

10、是外部时钟的 2、8 或 16 分频值除以(UBRR+1),具体计算方法和分频设置请参-4-http:/ 考 ATmega16 的使用手册。USART 的数据传输过程与微机中常用的串行通信方式(如 Intel 的 8251 芯片)基本相同,此处不做过多的论述,请参考微机原理与接口技术的相关教材。USART 的重要应用是可以通过 RS232 电平转换芯片(如 Max232),将 TTL 电平转换成 RS232 电平。RS232 是美国电子工业协会(EIA)批准的连接串行通信设备的串行通信接口标准。多数 PC 机都用 RS232 与鼠标、调制解调器、打印机以及其他的外围设备连接进行通信联络。所以,

11、可以通过 USART 接口实现单片机和 PC 机串口的通信。另外,RS232 可以实现总线结构,实现多个单片机个互连,在工业控制的各个领域有着极其广泛的应用。3.两线串行接口两线串行接口 TWI 两线串行接口 TWI(Two Wire serial Interface),顾名思义是由两根信号线组成的,一根叫做 SDA(serial data,串行数据),另一根叫做 SCL(serial clock,串行时钟),这是一种真正意义上的总线结构,所有的设备都连接在这两根线上,如图 3.1 所示3。图 3.1 TWI 设备的连接 ATmega16 的硬件 TWI 接口支持 7 位地址 128 个从机的

12、总线结构,当总线上有多个主机的时候可以支持多主仲裁。除此之外的特点还有:具有波形斜率限制器和毛刺噪声抑制器的输出驱动,可编程的从机地址、公共地址以及睡眠唤醒功能。用 TWI 接口使两片单片机相互通信是一种“浪费资源”的做法,它并不能发挥 TWI 总线的优势,具体的编程实现起来也有一定的难度。但是硬件连接却十分简单,只要将两片单片机的 SDA 和 SCL 管脚直接用导线相连即可。图 3.1 中的两个上拉电阻可以用 ATmega16 的I/O 口内部上拉代替。两片互连的单片机有主从之分,与 SPI 类似,主机提供 SCL 信号,从机被主机寻址。双机互连的编程虽然比较复杂,但是通过 TWI 的双机互

13、连,我们可以充分的理解用 TWI 协议通信的主从机各自在编程上的异同,对于 TWI 的四种工作模式主机发送、主机接收、从机发送、从机接收,各自的工作原理和详细的数据传输过程均会有深刻的认识。ATmega16 的 TWI 内部结构框图如图 3.2 所示3。-5-http:/ 图 3.2 TWI 内部结构框图 SCL 与 SDA 为单片机的 TWI 接口管脚。管脚的输出驱动器包含一个波形斜率限制器和毛刺噪声抑制器以满足 TWI 规范。比特率发生器单元在 TWI 主机模式时控制时钟信号 SCL的周期。总线接口单元包括数据与地址移位寄存器 TWDR,开始停止控制器和总线仲裁判定硬件电路。TWDR 寄存

14、器用于存放发送或接收的数据或地址。除了 8 位的 TWDR,总线接口单元还有一个寄存器,包含了用于发送或接收应答的(N)ACK。开始停止控制器负责产生和检测 TWI 总线上的 START、REPEATED START 与 STOP 状态。如果 TWI 以主机模式启动了数据传输,仲裁检测电路将持续监听总线,以确定是否可以通过仲裁获得总线控制权。如果总线仲裁单元检测到自己在总线仲裁中丢失了总线控制权,则通知 TWI 控制单元执行正确的动作,并产生合适的状态码。地址匹配单元将检测从总线上接收到的地址是否与TWAR 寄存器中的 7 位地址相匹配。控制单元监听 TWI 总线,并根据 TWI 控制寄存器T

15、WCR 的设置作出相应的响应。当 TWI 总线上产生需要应用程序干预处理的事件时,TWI 中断标志位 TWINT 置位。在下一个时钟周期,TWI 状态寄存器 TWSR 更新为当前事件的状态码字。在其他时间里,TWSR 的内容为一个表示无事件发生的特殊状态字。一旦 TWINT 标志位置“1”,时钟线 SCL 即被拉低,暂停 TWI 总线上的数据传输,让用户程序处理中断事件。TWI 的五个寄存器 TWAR、TWBR、TWCR、TWDR 和 TWSR 在图 3.2 中用粗线的方框标示出,其主要功能在上面的结构框图分析中已经阐明,具体标志位含义和程序范例请参考手册。-6-http:/ 图 3.3 显示

16、了一次完整的 TWI 数据传送过程2。图 3.3 一次完整的 TWI 数据传送过程 首先由主机发送开始信号并控制时钟信号,接着主机发送一个唯一的 7 位从机地址,紧跟着的第 8 位是读/写信号位,置“0”代表从机接收,置“1”代表从机发送;接收方发出一位应答信号(ACK),然后发送方(主机还是从机发送由前面的读/写信号位决定)传输一个字节的数据;8bit 数据发送完成后,接收方发出应答信号表示接收完毕。如果还有更多的字节需要传送,重复上面传送一个字节的步骤。停止位的确定有两种情况:主机发送模式下(主机向从机写入数据),主机在最后一个字节发送完毕后,发出停止信号;主机接收模式下(主机读入从机传来

17、的数据),主机不对最后一个字节的传送完毕作出应答,直接发出停止信号告诉从机已完成读数据工作。了解了 TWI 的工作原理,可能有人会发现它和 Philip 的 I2C 总线结构非常的相似。没错,二者没有本质上的区别,只是为了避免版权问题 Atmel 给这种总线在 AVR 系列单片机上换了一个名字罢了。但这也为 TWI 的广泛应用创造了条件,也就是说 TWI 接口可以兼容市面上的各种 I2C 器件,比如:Atmel 公司的 AT24CXX 系列 EEPROM,Dallas 公司的 RTC(实时时钟)芯片 DS1302,还有 Philip 公司的各种 I2C 器件等。另外,现在在定位系统中广泛应用的

18、电子指南针用的也是这种接口。4.结语结语 以上分析了 ATmega16 的三种硬件双机互连方式,针对每一种方式分别分析内部结构、寄存器作用、数据传输过程以及该通信方式的其他扩展应用。不难发现,这三种方式各具特点,很多方面存在异同。现将要点总结如下表,方便读者的深入理解并根据实际需求选择合适的通信方式。(指导教师:郭莉)(指导教师:郭莉)附表:三种双机通信方式比较:通信方式通信方式 SPI USART TWI 中文名称中文名称 串行外设接口 通用同步异步串行收发器 两线串行接口 同步同步/异步异步 同步(时钟:SCK)均支持 同步(时钟:SCL)串行串行/并行并行 串行 串行 串行 全双工全双工

19、/半双工半双工 全双工 全双工 半双工 信号线信号线 4 根(SCK、MOSI、MISO、SS)2 根(RXD、TXD)2 根(SDA、SCL)-7-http:/ 寄存器寄存器 3 个(SPCR、SPDR、SPSR)3 个(UBRR、UDR、UCSR)5 个(TWAR、TWBR、TWCR、TWDR、TWSR)传输速率传输速率 最快(Mbps)次之(与波特率有关)最慢(100-400Kpbs)硬件硬件 4 根线对应相连 两根线交叉互连 两根线对应相连 实现难实现难 度度 软件软件 中等 简单 困难 主从机区别主从机区别 有 无 有 支持多从机支持多从机 否 是 是 扩展应用扩展应用 串行 AD、

20、DA RS232 总线、PC 通信 接驳 I2C 器件 参考文献参考文献 1 黄任,AVR 单片机与 CPLD/FPGA 综合应用入门,北京:北京航空航天大学出版社,2004.2 夏季强等,“串行扩展应用平台设计”,电子技术应用,2003 年 10 月.3 Atmel Corporation,ATmega16 Datasheet Analysis and Comparison of Communication Between Two AVR MCUs with Three methods SHI Boxin(School of Information Engineering,Beijing U

21、niversity of Posts and Telecommunications Beijing 100876)Abstract This article is based on the process of communicating between two AVR MCUs ATmega16 using three different communication methods with hardware,which are SPI、USART and TWI.We can see their same and differences through the analysis of th

22、eir hardware block diagram,the usage of internal register,the process of data transmitting and their own merits and extended application,which gives us a theory support on choosing the best way to connect two MCUs.Keywords:AVR MCU,Communication,SPI,USART,TWI 作者简介:作者简介:施柏鑫,男,1984 年 7 月出生。北京邮电大学信息工程学院信息安全专业本科生,2003 年入学,2005 年进入北京邮电大学信息工程学院创新实验室学习电子技术,主要研究AVR系列单片机的应用。2005 年 9 月参加“全国大学生电子设计大赛”获北京市二等奖。2006 年注册了IEEE student member,E-mail:boxin.shiieee.org。-8-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁