您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > AVR单片机串行接口及应用.
1第十一章AVR单片机串行接口及应用串行通讯基本知识-回顾2串行通讯基本知识-回顾在生活中同学们排横队行走——并行;排纵队行走——串行。计算机中在传输信息、数据时也有并行、串行的问题。001001001P1.0P1.1P1.2P1.3TXDRXD计算机外设1外设2111111110101000串行通信概述1、什么叫串行通信?组成数据的各位一位位的有序传输。32、同步通信、异步通信接收设备发送设备[1]同步——发送设备时钟与接收设备时钟严格一致。校验字符2校验字符1数据n………数据2数据1同步字符2同步字符142、同步通信、异步通信[2]异步——发送时钟与接收时钟不一定相等。空闲位停止位奇偶校验位5~8位数据起始位空闲位异步:字符分个传送。同步:多个字符一批传送。53、串行通信的方向[1]单工:只能收或发A发B收[2]半双工:可收可发,但不能同时进行。A发收B收发例如:广播电台收音机例如:对讲机63、串行通信的方向[3]全双工:收发可以同时进行A发收B收发例如:电话机74、波特率衡量串行通信的速率。一般是指每秒中传输数据的位数,单位为波特:b/s、bps。举例:设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为每秒240个字符。求波特率。解:(1+8+1)×240=2400b/s=2400波特。通讯双方的波特率应相等,字符格式相等。85、串行通信接口1)发送:并到串CPUD7D6D5D4D3D2D1D0发送数据寄存器01D0D1D2D3D4D5D6D7发送时钟:95、串行通信接口2)接收:串到并D0D1D2D3D4D5D6D710D7D6D5D4D3D2D1D0CPU接收时钟接收数据寄存器10小结并行通讯、串行通讯;8535内含:全双工异步串行接口UART、同步串行接口SPI;UART:通用异步接收发送器;单工、双工、半双工;(依据数据传输方向分)字符格式、波特率;(异步通讯的两个基本约定)11§11.18535通用串行接口UART一、主要特征如下:(1)全双工。(2)波特率可软件编程设定。(3)数据位:8位和9位可选;起始位1位;停止位1位(4)噪声滤波。(5)错误起始位、帧错误、过速的检测功能。(6)三个独立的中断:•发送完成(TXC),•发送数据寄存器空(UDRE),•接收完成(RXC)。12二、数据的发送并到串的转换。要发送的数据I/O寄存器UDR中(UART数据寄存器),即发送缓冲器。UDRD7…..….D001D8发送移位寄存器起始位停止位数据位01。。TXEN主频波特率发生器÷16TXD(PD1)UDR中的数据何时装入发送移位寄存器?内部数据总线13UDR中的数据何时装入发送移位寄存器?UDRD7…..….D001D8发送移位寄存器起始位停止位数据位01。。TXEN主频波特率发生器÷16TXD(PD1)自动加载条件:字符的停止位发送完毕,且UDR中有新数。14发送数据寄存器空UDRE和发送完成TXCUDRD7…..….D001D8发送移位寄存器起始位停止位数据位01。。TXEN主频波特率发生器÷16TXD(PD1)发送数据寄存器空(UDRE)?自动加载之后。发送完成(TXC)?自动加载之后,停止位也发送完毕,且无新的数据写入UDR。15三、数据的接收串到并的转换。16倍的波特率对RXD(PD0)引脚采样。1)起始位的检测:关键是真正下降沿的判定。2)数据位的检测:数据位的采样点,8,9,10中3取2作为真正的逻辑值。3)帧错误(FE)的检测。4)过速(OR)的检测。16三、数据的接收字符接收周期结束时,数据被传送到UDR寄存器而接收完成RXC标志位被设置。UDR实际上是两个物理上分离的寄存器,一个发送数据,一个接收数据。当读UDR时,接收数据寄存器被访问;当写UDR寄存器时,发送数据寄存器被访问。一般,在读UDR寄存器之前,用户应检查FE帧错误标志。用户在读UDR后应检查OR位。17四、相关的I/O寄存器-数据寄存器1、UARTI/O数据寄存器-UDR-$0C($2C)D7D6D5D4D3D2D1D0UDR寄存器是两个物理上分离的寄存器,分享同一个I/O地址。当写入UDR时,写入的是UART发送数据寄存器;当读UDR时,读的是UART接收寄存器。初始化值:$00。18四、相关的I/O寄存器-状态寄存器2、UART状态寄存器—USR-$0B($2B)RXCTXCUDREFEOR---初始化值:$20。位7—RXC:UART接收完成当收到的字符从接收移位寄存器传到UDR中时该位被置1。不论探测到任何的帧错误,该位都被置1。当UCR中的相应的中断允许位(RXCIE)=1,UART接收完成中断将被执行(I=1),在读UDR时RXC被清0。当使用中断接收数据时,接收完成中断子程序必须读UDR而清除RXC,否则在中断完成后会引起新的中断。19四、相关的I/O寄存器-状态寄存器…2、UART状态寄存器—USR-$0B($2B)RXCTXCUDREFEOR---位6—TXC:UART发送完成当发送移位寄存器的全部数据被移出后且没有新的数据被写入UDR时该位被置1。这个标志位在半双工的通讯接口中很有用。当完成发送后立即释放通讯总线,并必须进入接收模式。当UCR中的TXCIE位被设置后,设置TXC将导致UART发送完成中断被执行,TXC在执行相应的中断向量时被硬件自动清除。或者TXC位也可以通过在该位写一个逻辑1而被清除。20四、相关的I/O寄存器-状态寄存器….2、UART状态寄存器—USR-$0B($2B)RXCTXCUDREFEOR---位5—UDRE:UART数据寄存器空当写入UDR的字符被传送到发送移位寄存器中时该位被置1,表示:发送器准备新的数据发送。相应的中断允许位:UDRIE。可以通过写UDR而清除UDRE位。当使用中断实现数据发送时,在其中断服务程序应该通过写UDR来清除UDRE位,否则在中断子程序完成时将发生新的中断。在复位时,UDRE被设置为1表明准备发送。21四、相关的I/O寄存器-状态寄存器…..2、UART状态寄存器—USR-$0B($2B)RXCTXCUDREFEOR---位4——FE:帧出错如果在帧出错条件被检测到时该位被设置(如当收到数据的停止位为0时)。FE在收到数据的停止位为1时被清除。位3——OR:过速(超越出错)过速时,则OR位被置1。位2~0——Res:保留位在AT90S8535中这些位被保留,读出为0。22四、相关的I/O寄存器-控制寄存器3、UART控制寄存器——UCR-$0A($2A)RXCIETXCIEUDRIERXENTXENCHR9RXB8TXB8初始化值:$00位7——RXCIE:RX完成中断使能置1时允许。位6——TXCIE:TX完成中断使能置1时允许。位5——UDRIE:UART数据寄存器空中断使能置1时允许。23四、相关的I/O寄存器-控制寄存器…3、UART控制寄存器——UCR-$0A($2A)RXCIETXCIEUDRIERXENTXENCHR9RXB8TXB8位4——RXEN:接收使能当该位被设置时允许UART接收。当接收器被禁止时,TXC、OR和FE无法置位。如果这些位被设置,在把RXEN关闭时不能清除它们。位3——TXEN:发送使能当该位被设置为1时允许UART发送。如在发送数据时禁止发送器,则在发送移位寄存器的数据和后续UDR中的数据被全部发送完成之前发送器不会被禁止。24四、相关的I/O寄存器-控制寄存器…..3、UART控制寄存器——UCR-$0A($2A)RXCIETXCIEUDRIERXENTXENCHR9RXB8TXB8位2——CHR9:9位字符当=1时,发送和接收的数据是9位加上起始和停止位。第9位通过UCR中的RXB8和TXB8位来分别读和写。第9位可以作为额外的停止位和奇偶位。=0时8位。位1——RXB8:收到的数据第8位当CHR9=1时,RXB8是收到数据的第9数据位。位0——TXB8:发送的数据第8位当CHR9=1时,TXB8是要发送数据的第9数据位。25四、相关的I/O寄存器-波特率寄存器4、波特率寄存器——UBRR-$09($29)D7D6D5D4D3D2D1D0初始化值:$00UBRR是8位可以读/写的寄存器,用来确定波特率。波特率的设定:BAUD=FCK/[16(UBRR+1)]其中BAUD表示波特率;FCK表示晶振频率;UBRR表示UART波特率寄存器的值,UBRR大小:0~255。26五、串行口编程应注意的问题1.定义TXD、RXD引脚(对UCR中的RXEN和TXEN位置1)2.定义波特率:给UBRR送一个适当值,注意双方的波特率一致。定义数据位数:UCR中的CHR9=1,9位。CHR9=0,8位。3.启动串行发送:用指令OUTUDR,Rn实现。27五、串行口编程应注意的问题4.多个数据发送的控制方法:由于串行发送过程较慢,发一个字节需要较长时间,连续发送数据时可采用如下方法。•查询方式(查USR的TXC位或UDRE位为1);•延时法(延时时间略大于发送总位数/波特率);•中断方式(UART数据寄存器空UDRE中断或UART发送完成TXC中断),在中断服务子程序中再发送下一个字节。第一个字符由主程序发送。注意:半双工时用TXC,不能用UDRE。28五、串行口编程应注意的问题5.使用UART中断发送数据时,注意中断初始化,把UCR中的TXCIE或UDRIE位置1使能中断和用SEI指令使能全局中断。6.将接收到的串行数据读到寄存器中:用指令INRn,UDR实现。29五、串行口编程应注意的问题7.接收数据读取的控制方法何时读UDR中收到的串行数据可采用:•查询方法,查询USR中的RXC位为1,但用此法MCU就不能干别的事了,所以很少使用;•中断法,采用UART接收完成RXC中断,在中断服务子程序中,读UDR中串行接收数据。一般不用延时法,半双工有时可以用。时间不好确定。8.接收中断的初始化,把UCR中的RXCIE位(UART接收中断允许位)置1和用SEI指令使能全局中断。30六、异步串行口应用UART异步串行口可直接用于机内传送数据。在一个智能仪器和控制设备内采用串行接口传送数据,可用TTL电平直接传送。在室内两个智能仪表或设备之间传送数据可以采用RS-232-C标准。将单片机的串行口经MAX232芯片转换成RS-232-C标准电平,传送距离可达15米。例PC机与8535单片机间传送数据。通过RS-232-C使用MODEM还可通过电话线远传。RS-232C电气特性如下:逻辑0:+5V+15V;逻辑1:-5V-15V;波特率20k之内;传送距离15米之内。31六、异步串行口应用工厂内的智能仪表或控制设备与上位机的通讯,常采用RS485或RS422标准。其中1.RS422是全双工四线传输;2.RS485是半双工二线传输;其逻辑电平均为:逻辑0为-0.2~-6V,逻辑1为+0.2~+6V,波特率可达10Mbit/s,传送距离1.2km,降低波特率还可增加传送距离。单片机的UART接口经MAX488、MAX490等芯片驱动可实现RS422接口;经MAX481、MAX483、MAX485和MAX487等芯片驱动可实现RS485接口。32七、UART串行通讯举例实现两个8535单片机之间的通讯,电路如图11.4所示。33具体要求:两单片机各自进行动态扫描显示0、1、2、3四个数字,甲机当键按下后,甲机向乙机通过串行口发送5、6、7、8四个数字,乙机收到后将收到的数字5、6、7、8显示出来。若乙机按一下键后也同样向甲机发送5、6、7、8四个数字,甲机收到后显示此四个数字。34方法一1.发送:采用查询USR中的UDRE位,接收:采用中断方式的程序。发送主程序思路:定义七段码表堆栈初始化并口初始化串口初始化(控制字、波特率)设置显示缓冲区(r18~r21)设置发送缓冲区(SRAM$110~$113)动态扫描显示1234直到有键按下循环发送6789循环动态扫描显示并等待中断
本文标题:AVR单片机串行接口及应用.
链接地址:https://www.777doc.com/doc-4782700 .html