第二章串行通信课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第二章串行通信课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 串行 通信 课件
- 资源描述:
-
1、第二章 串行通信一、通信概念介绍二、简单的单工串行通信举例三、UART异步串行接口应用 四、SPI串行接口应用 五、I2C串行总线应用六、附录-RS-232标准和RS-485标准一、通信的基本概念 n微处理器与外设交换数据的过程中可选择以下两种方式:并行通信并行通信:数据的各个数位同时传送;传输速度快,信息率高;占用的引脚资源多,需要的电缆多,成本高;远距离通信时数据的可靠性和抗干扰性下降。串行通信串行通信:数据按照位顺序一位一位传送。传输距离长,抗干扰性强;占用的引脚资源少,成本低。1.1 串行通信方式n通信双方只要约定好通信格式和通信速度即可通信。n串行通信方式可分为两类:异步通信:异步通
2、信:在异步串行通信中没有同步时钟信号。同步通信:同步通信:在同步串行通信中数据传送受到同步时钟的控制。1.2 异步通信n异步通信中,微处理器与外设之间必须有两项规定。n第一项规定第一项规定:双方通信时采用怎样的数据格式。例如UART串行通信双方规定:用ASCII编码,字符为7位,加一个偶校验位、一个起始位以及一个停止位,则一个字符总共由10位组成,形成的数据格式如图所示。n第二项规定第二项规定:即双方通信过程中每发送一个数位需要多长的时间。在有些场合也称之为波特率波特率,即每秒钟传送的二进制位数(bps)。n数据传送的速率为120字符/秒,每一个字符是10位,则波特率为1200bps。nPC串
3、口:115200bps 921600bpsnModem:19200bpsn工业场合:4800bpsnUART和1-Wire通信标准就是常见的异步通信。在异步通信中发送器和接收器不必用同一个时钟,只要求各局部时钟同一标称频率(波特率)。1.3 同步通信n在大量数据传送时,采用通信双方(发送器、接收器)在同一个时钟控制下传输数据的同步通信同步通信。n同步通信是先将许多的字符聚集成一字符块,再将每块信息(常称为信息帧)之前加上12个同步字符,接着再加适当的错误检测数据到字符块,最后才传送出去。注意:在同步通信时,数据上没有字符传输时,必须发送专用的空闲字符或是同步字符。n冗余:把传输的数据位当做被除
4、数,发送器本身产生一个固定的除数,前者除以后者得到的余数即为冗余字符。1.4 串行通信制式n在单工制式下,数据只能从发送站向接收站传送。如图:n在半双工制式下,数据能双向传送,但是不能同时在两个方向上传送。如图:n全双工制式下,接收数据和发送数据占用不同的线路。全双工通信可以同时发送和接收。如图:在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工、半双工和全双工3种制式。1.5 串行通信分类n串行通信标准有许多,下面仅对部分常见的串行通信标准进行简单介绍。串行通信标准引脚引脚说明通信方式通信制式UARTTXD、RXD、GND(三线)TXD:发送端RXD:接收端异步全
5、双工1-WireDQ (一线)DQ:发送/接收端异步半双工SPISCK、MISO、MOSI(三线)SCK:同步时钟MISO:主机输入,从机输出MOSI:主机输出,从机输入同步全双工I2CSCL、SDA(二线)SCL:同步时钟 SDA:数据输入/输出端同步半双工二、二、最简单的单工串行通信举例n与外设串行通信过程中,数据是一位一位依次顺序传送的;而在微处理器内部,数据是并行处理和传送的。n当微处理器发送数据到外设时,必须要先把并行的数据转换为串行数据再传送;当微处理器接收来自外设的数据时,必须要先把接收到的串行数据转换为并行数据才能处理。n这种并/串之间的转换既可用硬件实现也可用软件实现。n本小
6、节以74LS164芯片为例,介绍如何用软件方法实现数据的串并转换。(ARM与74LS164之间的串行通信)1.1 实验目的与内容n实验目的实验目的:学会用软件方法模拟串行通信的时序,完成串行通信;深刻理解串行通信的原理,掌握时序分析的基本方法。n实验内容实验内容:完成ARM芯片与74LS164芯片之间的串行通信,利用LED灯显示传输的数据;在完成基本通信的实验基础上,实现流水灯效果。1.2.1 实验原理分析nA、B:串行数据输入端。nClock:时钟输入端。nClear:清零端。低电平有效。nQAQH:数据输出引脚。ClearClock74LS 164238745691011121314ABQ
7、AVCCQBQCQDGNDQHQGQFQE11.2.2 74LS164真值表输入输入 输出输出 Clear ClockA BQA QB QHLXX X LLL HLX X H H H HHH H L X LLL H X L LLL n74LS164的时钟是由ARM处理器产生,每来1个上升沿74LS164就接收1位数据。n假设要使QAQH=10110011,则ARM要发送一串数据10110011给A、B输入端,并产生相应的时钟信号。如下图:1.3 电路原理图#define LS164_DATA (125)/LS164_DATA=0 x0200 0000#define LS164_CLK(129)
8、/LS164_CLK=0 x2000 0000#define LS164_CLR (117)/LS164_CLR=0 x0002 0000n74LS164通过ARM的3个I/O脚:P1.17、P3.29、P0.25,分别控制74LS164芯片的清零端口(CLR)、时钟端口(CLK)和数据端口(DATA),引脚定义如下:1.4.1程序清单-初始化子程序/*名称:void LS164_Init(void)*功能:初始化子程序。*入口参数:无*出口参数:无*/void LS164_Init(void)PINSEL1=PINSEL1&0 xfff3ffff;/设置Ls164引脚LS164_DATA(P
9、0.25)为GPIOPINSEL2=PINSEL2&0 xffffffb7;/设置Ls164引脚LS164_CLK(P3.29)为GPIO /设置Ls164引脚LS164_CLR(P1.17)为GPIO/-设置各引脚输出方向都为输出-IO0DIR=IO0DIR|LS164_DATA;/设置P0.25为输出IO3DIR=IO3DIR|LS164_CLK;/设置P3.29为输出IO1DIR=IO1DIR|LS164_CLR;/设置P1.17为输出1.4.2 程序清单-发送数据子程序void LS164_SendData(uint8 data)uint8 j;/定义一个8位无符号整型变量jIO1CL
10、R=LS164_CLR;/74LS164输出清零IO1SET=LS164_CLR;/-模拟时钟信号,循环8次完成数据传送-for(j=0;j=1;/data右移一位IO3SET=LS164_CLK;/向74LS164发送一个高电平时钟信号IO3CLR=LS164_CLK;1.4.3程序清单-主程序uint8 const LS164_TAB32=0 x00,0 x01,0 x03,0 x07,0 x0F,0 x1F,0 x3F,0 x7F,0 xFF,0 x7F,0 x3F,0 x1F,0 x0F,0 x07,0 x03,0 x01,0 x00,0 x81,0 x42,0 x24,0 x18,0
11、 x3c,0 x7e,0 xff,0 x00,0 xff,0 x00,0 x55,0 xaa,0 x55,0 xaa,0 x00;/*名称:main()*功能:通过64LS164控制LED灯,实现流水灯*/int main(void)uint8 i;LS164_Init();/引脚初始化 while(1)/-发送数据-for(i=1;i32;i+)LS164_SendData(LS164_TABi);DelayMS(100);/大约延时100毫秒,详见第一章蜂鸣器控制程序 return(0);1.5 实验结果n观看实验板,每次由ARM处理器向74LS164芯片发送一个8位数据,LED的开关会发
12、生相应的变化。当程序连续运行时,实验板上会出现各种灯闪烁的效果。三、UART异步串行接口应用nUART通信标准就有专门的硬件UART,即异步接收发送器。nUART有2个对外连接的引脚:RxD、TxD:RxD是输入引脚,用于串行数据接收;TxD是输出引脚,用于串行数据发送。1.1 硬件UART的结构框图 nUART数据的接收过程示意图nUART数据的发送过程示意图1.2 UART的功能1传输转换功能传输转换功能 UART既能发送,把并行数据转换成串行数据输出;又能接收,把接收的串行数据转换成并行数据输入。2奇偶校验功能奇偶校验功能 UART在发送时,检查每个要传送的字符中的“1”的个数,自动在奇
13、偶校验位上添“l”或“0”,使之满足要求;UART在接收时,检查每个字符的各位及奇偶校验位,“1”的个数是否满足要求。3出错标识功能出错标识功能常用的有以下三种:l奇偶错误l帧错误l溢出错误1.3 UART通信协议nUART异步串行通信协议需要定义以下5个内容:1起始位起始位 2数据位数据位3奇偶校验位奇偶校验位 4停止位停止位5波特率设置波特率设置n 范例如图:1.4 UART的应用nUART一般可以应用到如下一些场合:1.芯片间的近距离通信 2.与PC机之间的通信 3.模块之间的远距离通信1、芯片间的近距离通信n同一块板卡上的芯片需要通信时,我们可以采用UART异步串行通信。n连接示意图
14、如下:2、与PC机的通信nRS-232-C接口是PC机目前最常用的一种串行通讯接口。芯片利用UART可以与PC机进行通讯,由于接口不同从而电流不同,需要使用RS232转换器对通讯信号进行转换 芯片接RS232转换器与PC机通讯图 3、模块之间的远距离通信nRS-485接口的最大传输距离可达 3000米,最高传输速率10Mbps,且抗噪声干扰性好。n RS-485的电气特性:逻辑“1”以两线间的电压差为+2V +6V表示;逻辑“0”以两线间的电压差为-2V -6V表示。接口信号电平比RS-232-C降低了,该电平与TTL电平兼容,可方便与TTL 电路连接。RS-485通信电路示意图n RS-48
15、5接口具有多站能力,能够实现多机间远距离通信。下图是基于RS-485的多机通信系统:1.5 LPC2220内部UART模块nUART0具有16字节发送FIFO和16字节接收FIFO。nUART0内置了波特率发生器。nUART0主要包括3个模块:UART0接收器模块接收器模块(U0Rx)UART0发送器模块发送器模块(U0Tx)UART0波特率发生器模块波特率发生器模块(U0RBG)nUART0波特率发生器模块(U0RBG),产生UART0所使用的定时,U0BRG模块时钟源为VPB时钟(pclk),它保存了VPB时钟(pclk)的分频值。n时钟源(pclk)与除数锁存LSB寄存器(U0DLL)和
16、除数锁存MSB寄存器(U0DLM)所定义的除数相除得到UART0模块所使用的时钟,该时钟必须为波特率的16倍。n波特率计算如下:分频后的时钟分频后的时钟=pclk/(U0DLM*256+U0DLL)波特率波特率=分频后的时钟/16问题:系统时钟(pclk)为64MHz,UART0串行通信所需要的波特率为115200bps,如何设置U0DLL和U0DLM?除数=64MHz/(16*115200)U0DLM=除数/256=0U0DLL=除数%256=36n注意:当U0DLM和UODLL中的值为0 x0000时,系统默认为0 x0001。1.6 寄存器介绍nUART0包含10个8位位寄存器。U0RB
17、R、U0THR、U0SCR、U0DLL、U0DLM、U0IER、U0FCR、U0LCR、U0IIR、U0LSR。名称描述访问权限地址复位值U0RBR接收缓冲寄存器只读0 xE000 C000未定义U0THR发送缓冲寄存器只写0 xE000 C000未定义U0IER中断使能寄存器读/写 0 xE000 C0040U0IIR中断标识寄存器只读0 xE000 C0080 x01UOFCRFIFO控制寄存器只写0 xE000 C0080U0LCR线控制寄存器读/写0 xE000 C00C0UOLSR线状态寄存器只读0 xE000 C0140 x60U0SCR高速缓存寄存器读/写0 xE000 C01C
18、0U0DLL除数锁存(低8位)寄存器读/写0 xE000 C0000 x01UODLM除数锁存(高8位)寄存器读/写0 xE000 C0040除数锁存访问位DLAB=1时可以设置波特率U0LCR线控制寄存器 U0LCR决定发送和接收数据字符的格式。U0LCR功能描述复位值1:0字长度选择00:5位字符长度 01:6位字符长度10:7位字符长度 11:8位字符长度02停止位0:1个停止位1:2个停止位03奇偶使能0:禁止奇偶产生和校验1:使能奇偶产生和校验05:4奇偶选择00:奇数 01:偶数10:强制为1 11:强制为006间隔控制0:禁止间隔发送1:使能间隔发送当该位为1时,输出引脚UART
19、0 TxD强制为逻辑007除数锁存访问位DLAB0:禁止访问除数锁存寄存器1:使能访问除数锁存寄存器0U0LSR线状态寄存器 U0LSR为只读寄存器,它提供UART0的接收和发送模块的当前状态信息。U0LSR功能描述复位值0接收数据就绪(RDR)0:U0RBR为空1:U0RBR包含有效数据01溢出错误(OE)0:溢出错误状态未激活1:溢出错误状态激活02奇偶错误(PE)0:奇偶错误状态未激活1:奇偶错误状态激活03帧错误(FE)0:帧错误状态未激活1:帧错误状态激活04间隔中断(BI)0:间隔中断状态未激活1:间隔中断状态激活05发送保持寄存器(THRE)0:U0THR包含有效数据1:U0TH
20、R为空16发送器(THRE)0:U0THR/U0TSR包含有效数据1:U0THR/U0TSR为空17Rx FIFO错误(RXFE)0:U0RBR中没有UART Rx错误,或U0FCR的bit0为01:U0RBR中有UART Rx错误(至少有一个错误)0UART0的初始化设置程序*名称:UART0_Init(unit32 UART_BPS)*功能:初始化串口0,设置波特率,数据位长度,停止位长度,奇偶校验类型 默认设置为8位数据位,1位停止位,无奇偶校验*入口参数:UART_BPS*出口参数:无*Void UART0_Init(uinit32 UART_BPS)unit16 Fdiv;PINSE
21、L0=0 x00000005;/设置P0.0(Txd)和P0.1(Rxd)连接到UART0 /*设置波特率*/U0LCR=0 x83;/DLAB=1,可设置波特率 Fdiv=(Fpclk/16)/UART_BPS;/计算分频值 U0DLM=Fdiv/256;U0DLL=Fdiv%256;/*设置数据格式/*U0LCR=0 x03;/8位数据长度、1个停止位、禁止奇偶校验位 UART0初始化包括三项内容:1引脚连接功能的设置 2波特率的设置 3通信数据格式的设置 1.7 实验目的与内容n实验目的:掌握LPC2220的UART模块中各个控制寄存器的设置,并能使用UART 通信标准与PC机或其他板块
22、进行通信。n实验内容1:使用UART0通过RS-232接口向PC机发送数据,并在PC机的超级终端上显示。n实验内容2:使用UART1通过RS485接口与另一个板块进行通信,通信数据通过8个LED灯显示。实验1nPC机一般都会配有12个RS232串行通信接口(简称COM口),利用COM口PC机可以与外部设备实现通信连接。n本实验中,我们用ARM实验平台连接PC机。/*名称:UART0_SendByte(uint8 data)*功能:向串口发送一个字节数据,并等待发送完毕。*入口参数:data要发送的字节数据*/void UART0_SendByte(uint8 data)U0THR=data;/
23、发送数据 while(U0LSR&0 x40)=0);/等待数据发送完毕/*名称:uint8 UART0_RcvByte()*功能:接收一个字节数据。*出口参数:接收到的数据*/uint8 UART0_RcvByte()uint8 rcv_data;while(U0LSR&0 x01)=0);/当U0RBR中没有数据就一直等待rcv_data=U0RBR;return(rcv_data);实验1 程序清单 实验1 程序清单 uint8 const UART0_SEND_TAB=Oh,Succeed!n;/*名称:main()*功能:向串口UART0发送字符串 Oh,Succeed!*/int
24、main(void)uint8*str,data;UART0_Init(115200);while(1)str=UART0_SEND_TAB;while(*str!=0)UART0_SendByte(*str+);/向PC机发送数据data=UART0_RcvByte();/等待PC发送数据 return(0);实验1结果在AXD调试软件中全速运行程序,串口调试助手,将会显示一串字符“Oh,Succeed!”。当PC台式机向实验板发送任何字符后,串口调试助手的接收窗口会再多一串字符“Oh,Succeed!”。实验2n当设备间需要远距离通信时可以考虑采用RS485通信。Max483是一款半双工的
25、芯片板卡1用于数据发送(客户端)板卡2用于数据接收(服务器端)实验2 程序清单-服务端程序#define DERE (110)/连接 P0.10/*名称:UART1_Init(uint32 UART_BPS)*功能:ARM处理器UART1相关引脚与功能模块的初始化*入口参数:UART_BPS 串口的波特率*/void UART1_Init(uint32 UART_BPS)uint16 Fdiv;PINSEL0=(PINSEL0&0 xfff0ffff)|(0 x05 16);/将 p0.8 P0.9设置为TxD1 RxD1功能 IO0DIR=IO0DIR|DERE;/将连接 DE/RE 引脚的
展开阅读全文