《串行通信》PPT课件.ppt
《《串行通信》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《串行通信》PPT课件.ppt(97页珍藏版)》请在三一办公上搜索。
1、第二章 串行通信,一、通信概念介绍二、简单的单工串行通信举例三、UART异步串行接口应用 四、SPI串行接口应用 五、I2C串行总线应用六、附录-RS-232标准和RS-485标准,一、通信的基本概念,微处理器与外设交换数据的过程中可选择以下两种方式:并行通信:数据的各个数位同时传送;传输速度快,信息率高;占用的引脚资源多,需要的电缆多,成本高;远距离通信时数据的可靠性和抗干扰性下降。串行通信:数据按照位顺序一位一位传送。传输距离长,抗干扰性强;占用的引脚资源少,成本低。,1.1 串行通信方式,通信双方只要约定好通信格式和通信速度即可通信。串行通信方式可分为两类:异步通信:在异步串行通信中没有
2、同步时钟信号。同步通信:在同步串行通信中数据传送受到同步时钟的控制。,1.2 异步通信,异步通信中,微处理器与外设之间必须有两项规定。第一项规定:双方通信时采用怎样的数据格式。例如UART串行通信双方规定:用ASCII编码,字符为7位,加一个偶校验位、一个起始位以及一个停止位,则一个字符总共由10位组成,形成的数据格式如图所示。,第二项规定:即双方通信过程中每发送一个数位需要多长的时间。在有些场合也称之为波特率,即每秒钟传送的二进制位数(bps)。数据传送的速率为120字符/秒,每一个字符是10位,则波特率为1200bps。PC串口:115200bps 921600bpsModem:19200
3、bps工业场合:4800bpsUART和1-Wire通信标准就是常见的异步通信。在异步通信中发送器和接收器不必用同一个时钟,只要求各局部时钟同一标称频率(波特率)。,1.3 同步通信,在大量数据传送时,采用通信双方(发送器、接收器)在同一个时钟控制下传输数据的同步通信。同步通信是先将许多的字符聚集成一字符块,再将每块信息(常称为信息帧)之前加上12个同步字符,接着再加适当的错误检测数据到字符块,最后才传送出去。,注意:在同步通信时,数据上没有字符传输时,必须发送专用的空闲字符或是同步字符。,冗余:把传输的数据位当做被除数,发送器本身产生一个固定的除数,前者除以后者得到的余数即为冗余字符。,1.
4、4 串行通信制式,在单工制式下,数据只能从发送站向接收站传送。如图:在半双工制式下,数据能双向传送,但是不能同时在两个方向上传送。如图:全双工制式下,接收数据和发送数据占用不同的线路。全双工通信可以同时发送和接收。如图:,在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工、半双工和全双工3种制式。,1.5 串行通信分类,串行通信标准有许多,下面仅对部分常见的串行通信标准进行简单介绍。,二、最简单的单工串行通信举例,与外设串行通信过程中,数据是一位一位依次顺序传送的;而在微处理器内部,数据是并行处理和传送的。当微处理器发送数据到外设时,必须要先把并行的数据转换为串行数
5、据再传送;当微处理器接收来自外设的数据时,必须要先把接收到的串行数据转换为并行数据才能处理。这种并/串之间的转换既可用硬件实现也可用软件实现。本小节以74LS164芯片为例,介绍如何用软件方法实现数据的串并转换。(ARM与74LS164之间的串行通信),1.1 实验目的与内容,实验目的:学会用软件方法模拟串行通信的时序,完成串行通信;深刻理解串行通信的原理,掌握时序分析的基本方法。实验内容:完成ARM芯片与74LS164芯片之间的串行通信,利用LED灯显示传输的数据;在完成基本通信的实验基础上,实现流水灯效果。,1.2.1 实验原理分析,A、B:串行数据输入端。Clock:时钟输入端。Clea
6、r:清零端。低电平有效。QAQH:数据输出引脚。,74LS164真值表,74LS164的时钟是由ARM处理器产生,每来1个上升沿74LS164就接收1位数据。假设要使QAQH=10110011,则ARM要发送一串数据10110011给A、B输入端,并产生相应的时钟信号。如下图:,1.3 电路原理图,#define LS164_DATA(125)/LS164_DATA=0 x0200 0000#define LS164_CLK(129)/LS164_CLK=0 x2000 0000#define LS164_CLR(117)/LS164_CLR=0 x0002 0000,74LS164通过ARM
7、的3个I/O脚:P1.17、P3.29、P0.25,分别控制74LS164芯片的清零端口(CLR)、时钟端口(CLK)和数据端口(DATA),引脚定义如下:,程序清单-初始化子程序,/*名称:void LS164_Init(void)*功能:初始化子程序。*入口参数:无*出口参数:无*/void LS164_Init(void)PINSEL1=PINSEL1/设置P1.17为输出,1.4.2 程序清单-发送数据子程序,void LS164_SendData(uint8 data)uint8j;/定义一个8位无符号整型变量jIO1CLR=LS164_CLR;/74LS164输出清零IO1SET=
8、LS164_CLR;/-模拟时钟信号,循环8次完成数据传送-for(j=0;j=1;/data右移一位IO3SET=LS164_CLK;/向74LS164发送一个高电平时钟信号IO3CLR=LS164_CLK;,程序清单-主程序,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 x3c,0 x7e,0 xff,0 x00,0 xff,0 x00
9、,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 实验结果,观看实验板,每次由ARM处理器向74LS164芯片发送一个8位数据,LED的开关会发生相应的变化。当程序连续运行时,实验板上会出现各种灯闪烁的效果。,
10、三、UART异步串行接口应用,UART通信标准就有专门的硬件UART,即异步接收发送器。UART有2个对外连接的引脚:RxD、TxD:RxD是输入引脚,用于串行数据接收;TxD是输出引脚,用于串行数据发送。,1.1 硬件UART的结构框图,UART数据的接收过程示意图,UART数据的发送过程示意图,1.2 UART的功能,1传输转换功能 UART既能发送,把并行数据转换成串行数据输出;又能接收,把接收的串行数据转换成并行数据输入。,2奇偶校验功能 UART在发送时,检查每个要传送的字符中的“1”的个数,自动在奇偶校验位上添“l”或“0”,使之满足要求;UART在接收时,检查每个字符的各位及奇偶
11、校验位,“1”的个数是否满足要求。,3出错标识功能常用的有以下三种:奇偶错误帧错误溢出错误,1.3 UART通信协议,UART异步串行通信协议需要定义以下5个内容:1起始位 2数据位3奇偶校验位 4停止位5波特率设置,范例如图:,1.4 UART的应用,UART一般可以应用到如下一些场合:1.芯片间的近距离通信 2.与PC机之间的通信 3.模块之间的远距离通信,1、芯片间的近距离通信,同一块板卡上的芯片需要通信时,我们可以采用UART异步串行通信。连接示意图 如下:,2、与PC机的通信,RS-232-C接口是PC机目前最常用的一种串行通讯接口。芯片利用UART可以与PC机进行通讯,由于接口不同
12、从而电流不同,需要使用RS232转换器对通讯信号进行转换,芯片接RS232转换器与PC机通讯图,3、模块之间的远距离通信,RS-485接口的最大传输距离可达3000米,最高传输速率10Mbps,且抗噪声干扰性好。RS-485的电气特性:逻辑“1”以两线间的电压差为+2V+6V表示;逻辑“0”以两线间的电压差为-2V-6V表示。接口信号电平比RS-232-C降低了,该电平与TTL电平兼容,可方便与TTL电路连接。,RS-485通信电路示意图,RS-485接口具有多站能力,能够实现多机间远距离通信。下图是基于RS-485的多机通信系统:,1.5 LPC2220内部UART模块,UART0具有16字
13、节发送FIFO和16字节接收FIFO。UART0内置了波特率发生器。,UART0主要包括3个模块:UART0接收器模块(U0Rx)UART0发送器模块(U0Tx)UART0波特率发生器模块(U0RBG)UART0波特率发生器模块(U0RBG),产生UART0所使用的定时,U0BRG模块时钟源为VPB时钟(pclk),它保存了VPB时钟(pclk)的分频值。时钟源(pclk)与除数锁存LSB寄存器(U0DLL)和除数锁存MSB寄存器(U0DLM)所定义的除数相除得到UART0模块所使用的时钟,该时钟必须为波特率的16倍。波特率计算如下:分频后的时钟=pclk/(U0DLM*256+U0DLL)波
14、特率=分频后的时钟/16,问题:系统时钟(pclk)为64MHz,UART0串行通信所需要的波特率为115200bps,如何设置U0DLL和U0DLM?,除数=64MHz/(16*115200)U0DLM=除数/256=0U0DLL=除数%256=36注意:当U0DLM和UODLL中的值为0 x0000时,系统默认为0 x0001。,1.6 寄存器介绍,UART0包含10个8位寄存器。U0RBR、U0THR、U0SCR、U0DLL、U0DLM、U0IER、U0FCR、U0LCR、U0IIR、U0LSR。,除数锁存访问位DLAB=1时可以设置波特率,U0LCR线控制寄存器,U0LCR决定发送和接
15、收数据字符的格式。,U0LSR线状态寄存器,U0LSR为只读寄存器,它提供UART0的接收和发送模块的当前状态信息。,UART0的初始化设置程序,*名称:UART0_Init(unit32 UART_BPS)*功能:初始化串口0,设置波特率,数据位长度,停止位长度,奇偶校验类型 默认设置为8位数据位,1位停止位,无奇偶校验*入口参数:UART_BPS*出口参数:无*Void UART0_Init(uinit32 UART_BPS)unit16 Fdiv;PINSEL0=0 x00000005;/设置P0.0(Txd)和P0.1(Rxd)连接到UART0/*设置波特率*/U0LCR=0 x83;
16、/DLAB=1,可设置波特率 Fdiv=(Fpclk/16)/UART_BPS;/计算分频值 U0DLM=Fdiv/256;U0DLL=Fdiv%256;/*设置数据格式/*U0LCR=0 x03;/8位数据长度、1个停止位、禁止奇偶校验位,UART0初始化包括三项内容:1引脚连接功能的设置 2波特率的设置 3通信数据格式的设置,1.7 实验目的与内容,实验目的:掌握LPC2220的UART模块中各个控制寄存器的设置,并能使用UART 通信标准与PC机或其他板块进行通信。实验内容1:使用UART0通过RS-232接口向PC机发送数据,并在PC机的超级终端上显示。实验内容2:使用UART1通过R
17、S485接口与另一个板块进行通信,通信数据通过8个LED灯显示。,实验1,PC机一般都会配有12个RS232串行通信接口(简称COM口),利用COM口PC机可以与外部设备实现通信连接。本实验中,我们用ARM实验平台连接PC机。,/*名称:UART0_SendByte(uint8 data)*功能:向串口发送一个字节数据,并等待发送完毕。*入口参数:data要发送的字节数据*/void UART0_SendByte(uint8 data)U0THR=data;/发送数据 while(U0LSR,实验1 程序清单,实验1 程序清单,uint8 const UART0_SEND_TAB=Oh,Suc
18、ceed!n;/*名称:main()*功能:向串口UART0发送字符串 Oh,Succeed!*/int 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台式机向实验板发送任何字符后,串口调试助手的接收窗口会再多一串字符“
19、Oh,Succeed!”。,实验2,当设备间需要远距离通信时可以考虑采用RS485通信。,Max483是一款半双工的芯片,板卡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/8位字符长度、1个停止位、禁止奇偶效验,/*名称
20、:uint8 UART1_RcvByte(void)*功能:通过RS-485接收一字节数据。*出口参数:data接收到的数据*/uint8 UART1_RcvByte(void)uint8rcv_data;IO0CLR=DERE;/RE引脚置低,使其处于接收状态while(U1LSR,实验2 参考程序清单-客户端程序,void UART1_SendData(uint8 data)IO0SET=DERE;/DE引脚置高,使Max483处于发送状态 U1THR=data;/发送数据 while(U1LSR,四、SPI串行接口应用,SPI是由Motorola公司提出的一种同步串行外围接口。它在速度要
21、求不高、低功耗、需保存少量参数的智能化传感系统中得到了广泛应用。SPI是一个全双工的同步串行接口。在数据传输过程中,总线上只能是一个主机和一个从机进行通信。,在数据传输中,主机总是向从机发送1字节的数据(MOSI),同时从机向主机发送1字节的数据(MISO)。,1.1 SPI接口的信号描述,1MISO(Master In Slave Out)主机输入、从机输出信号。2MOSI(Master Out Slave In)主机输出、从机输入信号。3SCK(Serial Clock)串行时钟信号。4SS(Slave Select)从机选择信号。低电平有效。,注意:1、主设备必须为微处理器,从设 备可以
22、是微处理器也可以是其他带有SPI接口的芯片。2、主设备的SS应接高电平。3、先发送MSB,在发送LSB。4、SCK由主设备产生。主设备和从设备必须在相同的时序下工作。,1.2 基于SPI接口的系统组成,SPI总线可在软件的控制下构成各种简单或复杂的系统。,SPI总线与多从机连接示意图,1.3 SPI接口的工作原理,SPI的基本结构相当于两个8位移位寄存器的首尾相接,构成16位的环形移位寄存器。从而实现了主机与从机的数据交换。,SPI接口的基本结构图,1.4 LPC2220内部SPI模块,LPC2220中具有两个完全独立的SPI控制器:SPI0和SPI1。其中SPI0模块有4个引脚:SCK0、S
23、SEL0、MISO0、MOSI0,其功能如下:,一个SPI总线可以连接多个主机和多个从机,但是在同一时刻只允许有一个主机操作总线。可通过SSEL引脚设置LPC222为SPI主机或从机。,1.5 SPI数据传输,SPI接口可由CPOL和CPHA设定4种不同传输格式的时序。CPOL决定时钟脉冲SCK的有效脉冲方式(正脉冲、负脉冲)。CPHA决定数据线MOSI什么时候输出数据或采集数据。根据CPOL和CPHA的组合数目,一共有4种设置情况。,4种时序下的数据传输,其中“第一位数据的输出”和“其他位数据的输出”栏是表示数据在什么时候更新输出。还需注意数据采样是上升沿还是下降沿有效。数据与时钟的相位关系
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行通信 串行 通信 PPT 课件
链接地址:https://www.31ppt.com/p-5457025.html