第8章串行口通信.ppt

上传人:sccc 文档编号:4750506 上传时间:2023-05-13 格式:PPT 页数:91 大小:3.27MB
返回 下载 相关 举报
第8章串行口通信.ppt_第1页
第1页 / 共91页
第8章串行口通信.ppt_第2页
第2页 / 共91页
第8章串行口通信.ppt_第3页
第3页 / 共91页
第8章串行口通信.ppt_第4页
第4页 / 共91页
第8章串行口通信.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《第8章串行口通信.ppt》由会员分享,可在线阅读,更多相关《第8章串行口通信.ppt(91页珍藏版)》请在三一办公上搜索。

1、2,第8章 串行口通信,3,主要内容,8.1 串行通信的概念8.2 串行口1的相关寄存器8.3 串行口1的工作方式8.4串行口1通信中波特率的设置8.5 串行口2的相关寄存器8.6串行口2的工作方式8.7 串行口的应用8.8 RS-232串行标准8.9 RS485串行接口8.10 SPI串行接口概述8.11 SPI串行数据通信8.12 SPI接口的应用,4,8.1 串行通信的概念,串行通信是按一位一位的顺序传送数据,串行通信方式又分为同步通信和异步通信两种。,同步通信:发送方和接收方用同一个时钟控制信号,5,8.1 串行通信的概念,异步通信是一种将数据以一个字符为单位进行传送的通信方式,传送一

2、个字符又称为一帧信息,发送与接收之间无时钟信号控制,发送和接收的速率要求相同,起始位:位于一帧数据的开头,逻辑“0”电平信号,用来通知接收设备开始接收一帧信息,数据位:紧跟起始位之后的是数据位,对51内核单片机来说,低位在前,高位在后,第9位:常用于对串行通信数据进行奇偶校验,停止位:逻辑“1”电平信号,应大于或等于一个位数据的时间。在发送完一帧信息后,用于发送的数据线一直处于高电平状态,等待再次发送,6,8.1 串行通信的概念,串行通信可分为单工、半双工和全双工3种方式,单工方式只有一根数据线,数据只能按照一个固定的方向传送,半双工方式的数据可以由甲向乙传送,也可以由乙向甲传送,但是不能在两

3、个方向上同时传送,全双工方式可以在同一时刻实现双向传送。,在串行通信中,用波特率衡量通信速度的快慢。波特率是指每秒钟传送的二进制数的位数,单位:位/秒(b/s或Kb/s)字节/秒(bps),波特率(bps)=1个字符的二进制位数 Bps,7,8.1 串行通信的概念,STC12C5A60S2单片机具有2个UART工作方式的串行口,接收缓冲器SBUF地址:99H,发送缓冲器SBUF地址:99H,串行口1,接收缓冲器S2BUF地址:9BH,发送缓冲器S2BUF地址:9BH,串行口2,8,8.2 串行口1的相关寄存器,STC12C5A60S2单片机的串行口1 与8个特殊功能寄存器相关,串行控制寄存器S

4、CON电源控制寄存器PCON辅助寄存器AUXR独立波特率发生器寄存器BRT唤醒控制寄存器WAKE_CLKO中断寄存器IE、IP、IPH。,9,8.2 串行口1的相关寄存器,1.串行控制寄存器SCON,地址为98H,可进行位寻址,SM0/FE:寄存器PCON中的SMOD0位为1时,该位用于帧错误检测(FE)。当检测到停止位无效时,硬件会将该位置1,必须由软件清零,SMOD0位为0时,SM0、SM1两位一起确定串行口1的工作方式,SM2:在方式0中,该位必须为0;在方式2和方式3中,该位为1时,只有接收到的第9位数据RB8位为1时,接收才能有效。在方式1中,该位为1时,只有正确接收到停止位时,接收

5、才能有效,REN:允许串行接收控制位。当该位为1时,允许接收信息;当该位为0时,禁止接收信息。,TB8:发送数据的第9位,RB8:接收数据的第9位,TI:串行口1发送中断请求标志位,RI:串行口1接收中断请求标志位,10,8.2 串行口1的相关寄存器,2.电源控制寄存器PCON,地址为87H,SMOD:波特率倍频选择位。该位置1,串行口1工作在方式1、2、3时波特率加倍;该位为0,各工作方式的波特率不加倍,SMOD0:帧错误检测有效控制位。该位置1,SCON寄存器中的SM0/FE位用于FE功能;该位为0,SCON寄存器中的SM0/FE位用于方式选择。,11,8.2 串行口1的相关寄存器,3.辅

6、助寄存器AUXR,地址为8EH,UART_M0 x6:串行口1方式0的通信速度控制位。UART_M0 x6=0,方式0的波特率为系统时钟频率的12分频;UART_M0 x6=1,方式0的波特率为fosc/2。,BRTR:独立波特率发生器运行控制位。BRTR=0时,不允许独立波特率发生器工作;BRTR=1时,允许独立波特率发生器工作,BRTx12:独立波特率发生器计数控制位。BRTx12=0时,独立波特率发生器的计数时钟源为系统时钟频率fosc的12分频;BRTx12=1,独立波特率发生器的计数时钟源为系统时钟频率。,S1BRS:串行口1的波特率发生器选择位。S1BRS=0时,选择定时/计数器T

7、1作为串行口1的波特率发生器;S1BRS=1时,选择独立波特率发生器作为串行口1的波特率发生器,12,8.2 串行口1的相关寄存器,4.独立波特率发生器寄存器BRT,地址为9CH,独立波特率发生器是专门用于控制串行通信速度的定时器,与定时/计数器T1工作于方式2的情况相似。BRT用于保存重装时间常数的一个8位寄存器,注意:串行口2:只能使用独立波特率发生器控制发送与接收,串行口1:既可以选择T1作为波特率发生器,也可以选择独立波特率发生器。串行口1和串行口2不能同时使用独立波特率发生器,,13,8.2 串行口1的相关寄存器,5.唤醒控制寄存器WAKE_CLKO,地址为8FH,RXD_PIN_I

8、E=0时,禁止P3.0/RxD引脚的下降沿置位RI,也禁止RxD引脚唤醒掉电模式;RXD_PIN_IE=1时,允许P3.0/RxD引脚的下降沿将RI置1,并且RxD引脚的下降沿能够唤醒掉电模式,14,8.3 串行口1的工作方式,8.3.1方式0,串行口1工作在方式0,作同步移位寄存器使用,UART_M0 x6:串行口1方式0的通信速度控制位。UART_M0 x6=0,方式0的波特率为系统时钟频率的12分频;UART_M0 x6=1,方式0的波特率为fosc/2。,15,8.3 串行口1的工作方式,8.3.1方式0,串行口数据由RxD引脚输入或输出,同步移位脉冲通过TxD引脚输出,发送、接收均为

9、8位数据,发送过程:,在TI=0的条件下,执行MOV SBUF,A指令,启动发送,注意:发送顺序:低位在前,高位在后发送完一帧数据后,由硬件将发送中断标志位TI置1,向CPU发出中断请求。若要再次发送数据,必须先通过程序将TI位清0。,16,8.3 串行口1的工作方式,8.3.1方式0,串行口数据由RxD引脚输入或输出,同步移位脉冲通过TxD引脚输出,发送、接收均为8位数据,接收过程:,在RI=0的条件下,接收允许控制位REN置1时,处于接收状态接收完一帧数据后,硬件将接收到的数据存入接收缓冲器SBUF,并将中断标志位RI置1,向CPU发出中断请求,注意:接收顺序:先收到的是低位,后收到的是高

10、位若要继续接收数据,必须先通过程序将RI位清0。,17,8.3 串行口1的工作方式,8.3.2方式1,8位数据,低位在前高位在后,发送过程:,在TI为0的条件下,执行将数据写入SBUF的指令时,启动发送过程。在内部移位脉冲的控制下,TxD引脚首先发送起始位、8位数据、停止位,发送完毕后TI置1,向CPU发出中断请求,18,8.3 串行口1的工作方式,8.3.2方式1,接收过程:,在RI为0、接收允许控制位REN被置1的条件下,CPU处于接收状态。当硬件检测到RxD引脚由高电平变为低电平时,开始接收一帧数据,并同步波特率发生器。,19,8.3 串行口1的工作方式,8.3.2方式1,接收过程:,(

11、1)RI=0(2)SM2=0或接收到的停止位为1时 硬件自动将接收到的数据装入接收缓冲器SBUF,同时将停止位写入RB8,置中断标志位RI为1,向CPU提出中断请求。,若不满足两个条件,接收到的数据无法装入接收缓冲器SBUF,数据丢失。,注意:无论满足这两个条件与否,接收控制器将继续检测RxD引脚,接收下一帧数据,所以在接收的过程中,应及时清接收中断标志位RI,以免数据丢失,20,8.3 串行口1的工作方式,8.3.3方式2、方式3,方式2 与方式3唯一的区别在于方式2的波特率是固定的,而方式3的波特率与波特率发生器有关,方式1与方式3的区别是:方式1是8位的串行异步通信、方式3是9位串行异步

12、通信,21,8.3 串行口1的工作方式,8.3.3方式2、方式3,发送过程:,将发送中断标志位TI清0,并通过位传送指令将第9位数据写入TB8中,然后执行MOV SBUF,A指令,启动发送过程。一帧数据发送完毕,硬件将发送中断标志位TI置1,22,8.3 串行口1的工作方式,8.3.3方式2、方式3,接收过程:,允许控制位REN被置1后处于接收状态。接收到的第9位(而不是停止位)装入到RB8位中,注意:在方式2和方式3中,SM2为1时,只有接收到的第9位数据RB8位为1时,接收才能有效,23,8.3 串行口1的工作方式,8.3.4 多机通信,在多机通信中方式2和方式3更适合主从通信,主机的SM

13、2位清0,从机的SM2位置1,通信过程举例,(1)主机向从机发送某一从机的地址,发送前将TB8位置1,然后进入接收状态,(2)各从机接收到主机送出的地址信息后,与本机地址相符时,表示被选中,将本机地址回发给主机(TB8位为0),执行CLR SM2指令。未被选中的从机,SM2位依然为1,接收不到TB8位为0的数据信息。,24,8.3 串行口1的工作方式,8.3.4 多机通信,在多机通信中方式2和方式3更适合主从通信,主机的SM2位清0,从机的SM2位置1,通信过程举例,(3)主机收到从机回发的地址后,检验是否与主机先前发送的地址一致,若不同,说明发送过程出现错误,再回到第(1)步,若相同,可以发

14、出指令或数据信息(TB8位为0)。,(4)从机正确地接收到主机所发送到的指令或数据信息后,回发先前约定好的应答信号给主机,同时将SM2位重新置1,以便从机能够接收主机再次发送地址信息,本次主机与从机通信过程结束。,理论上,一个主机可以与256个从机通信,但由于每个单片机引脚的输入阻抗及总线上阻抗的存在,总线上所允许并联从机的数量要受到限制。如果主机与过多的从机连接时,波特率应设置的低一些以减少通信错误,25,8.4串行口1通信中波特率的设置,(1)方式0,辅助寄存器AUXR,UART_M0 x6=0时,波特率是fosc/12,UART_M0 x6=1时,波特率是fosc/2,26,8.4串行口

15、1通信中波特率的设置,(2)方式2,电源控制寄存器PCON,波特率=(2SMOD/64)fosc,SMOD=0时,波特率=fosc/64,当SMOD=1时,波特率=fosc/32,SMOD=0时,波特率=fosc/64,当SMOD=1时,波特率=fosc/32,27,8.4串行口1通信中波特率的设置,(3)方式1和方式3,波特率=2SMOD(定时/计数器T1的溢出率/32),SMOD=0时,波特率=T1的溢出率/32,当SMOD=1时,波特率=T1的溢出率/16,T1x12=0时,T1的溢出率=(fosc/12)/(256-THl),T1x12=1时,T1的溢出率=fosc/(256-TH1)

16、,28,8.4串行口1通信中波特率的设置,(3)方式1和方式3,波特率=2SMOD(独立波特率发生器的溢出率/32),BRTx12=0时,独立波特率发生器的溢出率=(fosc/12)/(256-BRT),BRTx12=1时,独立波特率发生器的溢出率=fosc/(256-BRT),29,8.4串行口1通信中波特率的设置,(3)方式1和方式3,T1x12=0,T1工作在方式2时,几种波特率所对应T1的重装初值,30,8.5 串行口2的相关寄存器,与串行口2相关的寄存器有:,1.串行口2的控制寄存器S2CON,地址为9AH,不能位寻址,2.辅助寄存器AUXR波特率加倍控制位S2SMOD,S2SMOD

17、位为0时,串行口2的波特率不加倍,S2SMOD位为1时,串行口2的波特率加倍,31,8.5 串行口2的相关寄存器,与串行口2相关的寄存器有:,3.辅助寄存器AUXR1,4.独立波特率发生器寄存器BRT,5.中断寄存器IE、IE2、IP2、IP2H,S2_P4位为0时,TxD2为P1.3,RxD2为P1.2,S2_P4位为1时,TxD2为P4.3,RxD2为P4.2,6.发送缓冲器S2BUF与接收缓冲器S2BUF 共用同一个地址9BH,32,8.6串行口2的工作方式,8.6.1 方式0,当S2SM0、S2SM1为00时,串行口2工作在方式0,波特率=fosc/12 仅有这一种情况,8位数据低位在

18、前,高位在后通过RxD2 引脚接收或发送数据,TxD2引脚输出同步移位时钟,33,8.6串行口2的工作方式,8.6.2 方式1,当S2SM0、S2SM1为01时,串行口2工作在方式1,TxD2引脚发送、RxD2引脚接收,一帧数据包含一个起始位、8个数据位和一个停止位,停止位存放在S2CON寄存器的S2RB8位,34,8.6串行口2的工作方式,8.6.2 方式1,波特率=(2S2SMOD/32)独立波特率发生器的溢出率,BRTx12=0时,独立波特率发生器的溢出率=(fosc/12)/(256-BRT),BRTx12=1时,独立波特率发生器的溢出率=fosc/(256-BRT),35,8.6串行

19、口2的工作方式,8.6.3 方式2,当S2SM0、S2SM1为10时,串行口2工作在方式2,TxD2引脚发送、RxD2引脚接收,一帧数据包含一个起始位、9个数据位和一个停止位,发送时,第9位数据位来自S2CON寄存器中的S2TB8位,接收时,第9位数据装入S2CON寄存器中的S2RB8位,S2SMOD位为0时,波特率=fosc/64,S2SMOD位为1时,波特率=fosc/32,36,8.6串行口2的工作方式,8.6.4 方式3,当S2SM0、S2SM1为11时,串行口2工作在方式3,TxD2引脚发送、RxD2引脚接收,一帧数据包含一个起始位、9个数据位和一个停止位,发送时,第9位数据位来自S

20、2CON寄存器中的S2TB8位,接收时,第9位数据装入S2CON寄存器中的S2RB8位,波特率的设定与方式1相同,37,8.7 串行口的应用,1.串行口1的初始化,(1)设置SCON寄存器中各个相关位,由SM0、SM1两位确定工作方式,将TI、RI清0,如果需要接收,将REN位置1;(2)设置合适的波特率,即设置定时/计数器T1的工作方式、给TL1、TH1赋初值,启动T1工作;使用独立波特率发生器时,给BRT赋初值,并初始化AUXR寄存器的BRTR及BRTx12两位;(3)根据需要确定是否需要开放中断及中断优先级;(4)编写相应的中断或查询方式的服务程序。,38,8.7 串行口的应用,2.串行

21、口2的初始化,(1)即设置S2CON寄存器中的各个相关位的值,由S2SM0、S2SM1两位确定工作方式,S2RI、S2TI两位清0。如果允许接收,将S2REN位置1;(2)设置独立波特率发生器。初始化AUXR寄存器中的BRTx12、S2SMOD等位,将初值装入BRT寄存器;(3)将AUXR中的BRTR位置1,启动独立波特率发生器工作;(4)根据需要设置中断优先级,开放中断 ES2、EA;(5)编写相应的中断或查询方式的服务程序。,39,【例81】STC12C5A60S2单片机的串行口1与一片8位串入并出的芯片74HC164连接,驱动一组发光二极管,使发光二极管从右至左延时轮流显示。,分析:74

22、HC164是一个串行输入并行输出的移位寄存器,Q0Q7是并行输出端,Dsa、Dsb为串行输入端。CP为时钟输入端。复位端,低电平有效,当复位端输入低电平时清除移位寄存器的值,强制所有的输出为低电平,设STC12C5A60S2单片机的系统时钟频率为12MHz,串行口1工作在方式0。对SCON寄存器赋初值为00H,40,(1)汇编程序:ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV SP,#0BFH;初始化堆栈指针 MOV SCON,#00H;串行口1工作在方式0 MOV A,#0FEH;LED显示码存A寄存器START:MOV SBUF,A;启动发送过程LOOP:JN

23、B TI,LOOP;判断发送是否完毕 CLR TI;发送完毕,将TI位清0 ACALL DELAY;延时 RL A;发光二极管显示码左移一位 SJMP START,41,DELAY:MOV R7,#0BDH;500ms的延时程序DL1:MOV R6,#0E6HDL0:MOV R5,#21H DJNZ R5,$DJNZ R6,DL0 DJNZ R7,DL1 RET END,42,(2)C语言程序:#include#include/声明本征函数库void DELAY();/延时函数void main()unsigned char j;SCON=0 x00;/串行口1工作在方式0j=0 xFE;/L

24、ED显示码for(;)SBUF=j;/启动发送过程 while(!TI);/等待发送完毕 TI=0;DELAY();/延时500ms j=_crol_(j,1);/循环左移一位,43,void DELAY()/延时500ms函数 unsigned char a,b,c;for(c=189;c0;c-)for(b=230;b0;b-)for(a=33;a0;a-);,44,【例82】利用STC12C5A60S2单片机的串行口1外接一片8位的并入串出芯片74HC165,用于扩展并行输入,如图所示。,分析:74HC165是一种并入串出的芯片,其中D0D7为并行数据输入端,DS为串行数据输入端,Q7为

25、串行输出端,为串行互补输出端。,当并行输入允许引脚 输入为低时,从D0至D7引脚并行输入的数据被输入到内部移位寄存器内,而当 为高时,并行输入禁止,移位寄存器的数据在CP引脚输入的时钟脉冲上升沿的控制下,向右移动一位DSQ0 Q1 Q7,Q7的状态出现在第9引脚上。,设串行口1工作在方式0,SCON寄存器的内容为00H。,45,(1)汇编程序段如下:MOV SCON,#00000000B CLR P1.7;并行输入允许 NOP;等待引脚状态稳定 NOP NOP NOP NOP NOP SETB P1.7;禁止并行输入 NOP;等待引脚状态稳定 NOP NOP NOP NOP NOP,CLR R

26、I;清除中断标志RI SETB REN;允许接收LOOP:JNB RI,LOOP;等待 CLR RI MOV A,SBUF,46,(2)C语言程序#include#includesbit P1_7=P17;void main()unsigned char temp;SCON=0 x00;P1_7=0;/并行输入允许 _nop_();/等待引脚状态稳定 _nop_();_nop_();_nop_();_nop_();_nop_();P1_7=1;/并行输入禁止_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();,RI=0;/清除接收中断标志RIREN=

27、1;/允许接收while(!RI);/等待接收数据RI=0;/清除接收中断标志RItemp=SBUF;/读入数据while(1);,47,【例83】在图810所示的甲、乙两机间的串行通信中,单片机系统的时钟频率为11.0592MHz,要求波特率为1200bps,编程实现将甲机片内的30H3FH单元的数据传送到乙机片内40H4FH单元中。,(1)汇编子程序:分析:甲、乙两机都选择串行口1工作在方式3,9位异步通信方式,TB8用作奇偶校验位,甲机串口控制寄存器SCON的初值为0C0H,乙机的控制字0D0H。,定时/计数器T1工作在方式2作为波特率发生器,TMOD为20H;波特率2SMOD(定时/计

28、数器T1的溢出率)/32,T1的溢出率=(波特率 32)/2SMOD,T1的重装初值=256(fosc/12)2SMOD/(波特率32)=256(11059200/12)/(120032)=232=E8H,甲机的发送子程序:,48,TRA_UART:MOV TMOD,#20H;T1工作在方式2 ANL AUXR,#0BFH;T1计数工作在系统时钟的12分频 MOV TL1,#0E8H;给T1的低8位赋初值 MOV TH1,#0E8H;给T1的高8位赋初值 ANL PCON,#7FH;波特率不加倍 MOV SCON,#0C0H;串行口1工作在方式3 MOV R0,#30H;R0作为片内RAM指针

29、 MOV R7,#10H;R7作为发送计数器 SETB TR1;波特率发生器开始工作LOOP:MOV A,R0;读取片内30H3FH单元的内容 MOV C,P MOV TB8,C;将奇偶校验位写入TB8 MOV SBUF,A;启动发送过程WAIT:JNB TI,WAIT;等待发送完毕CLR TI;发送完毕,将TI清0INC R0;指向下一个单元地址DJNZ R7,LOOP;如果数据未发送完,将继续发送RET,49,乙机接收子程序:,RES_UART:MOV TMOD,#20H;T1的初始化 MOV TL1,#0E8H MOV TH1,#0E8H ANL AUXR,#0BFH;系统时钟的12分频

30、 ANL PCON,#7FH;波特率不加倍 MOV SCON,#0D0H;方式3,且允许接收 MOV R0,#40H;R0作为片内RAM指针 MOV R7,#10H;R7作为计数器 SETB TR1;波特率发生器开始工作,LOOP:NOPWAIT:JNB RI,WAIT CLR RI MOV A,SBUF;,50,;P与RB8位异或,出错时跳转,MOV C,P ANL C,/RB8 MOV F0,C MOV C,RB8 ANL C,/P ORL C,F0 JC ERROR,MOV R0,A;数据正确,存放进40H开始的单元 INC R0;R0指向下一个单元 DJNZ R7,LOOP;数据未接收

31、完,则继续 RETERROR:;错误处理,此处略 RET,51,(2)C语言程序:,分析:为了保持通信的通畅与准确,通信中做如下约定:通信开始时,甲机(主机)首先发送乙机(从机)的地址0AAH,并且TB8位为1,乙机接收后与自己的地址比较,回发地址0AAH,并将自己的SM2位清0。甲机收到0AAH后,说明地址发送正确开始发送16个字节的数据。数据缓冲区为数组buf,数据发送完成后发送校验和的低字节。乙机接收到数据后,存入乙机的缓冲区buf中,并用接收的数据产生校验和与接收的校验和相比较,如相同,乙机发送00H,回答接收正确;如不同,则发送0FFH,请求甲机重发。,根据以上约定,利用串行口2的工

32、作方式3,实现甲机作主机,乙机作从机的通信方式。由于甲、乙两机都要发送和接收信息,所以甲、乙两机的串口控制寄存器的S2REN位都应该为1,方式控制字都是0D0H。,52,甲机的发送程序:,#include STC12C5A.hunsigned char idata buf16;/定义16字节的缓冲区unsigned char pf;/校验和的低字节,void main(),unsigned char i,j;S2CON=0 xD8;/串行口2的初始化,S2TB8位为1BRT=0 xE8;/独立波特率发生器寄存器装入初值AUXR=AUXR|0 x10;/独立波特率发生器开始工作,53,for(;

33、),do S2BUF=0 xAA;/发送乙机地址do j=S2CON;while(j/TI位清0,do j=S2CON;while(j/RI位清0,while(S2BUF0 xAA)!=0);/如果地址有误;继续联络,54,do pf=0;/校验和变量赋初值0 S2CON=(S2CON/S2TB8位写入0,for(i=0;i16;i+)/发送16个字节的数据 S2BUF=bufi;/发送数据 pf+=bufi;/求校验和的低8位字节,do j=S2CON;while(j,55,S2BUF=pf;/发送校验和的低8位字节do j=S2CON;while(j/TI位清0,do j=S2CON;wh

34、ile(j/RI位清0,while(S2BUF!=0 x00)break;/收到正确应答,退出循环/否则再重发,while(1);,56,8.8 RS-232串行标准,在实际应用系统中,通常需要单片机进行数据采集,并将采集的数据以串行通信方式传送给计算机,或计算机以串行通信方式向单片机传送指令,如扫描仪、打印机等。,因通信时(传输电缆线上有干扰)信号要衰减,所以常采用RS232标准接口,拉开“0”和“1”的电压档次,以免信息出错。数据传输速率020000bps,TTL正逻辑:“0”:0 2.4V;“1”:3.6V+5V;高阻:2.4V3.6V。TTL电平直接传输距离一般不超过1.5米。,RS2

35、32负逻辑(EIA电平):“0”:+5V+15V;“1”:-5V-15V。最大传输信息的长度为15米。,57,能够适应RS232通信协议的芯片有很多,下面以MAX232为例介绍各引脚的功能,16引脚是内部电源变换电路部分与外部电容连接端,功能是产生+12V和-12V两个电源,提供给RS232内部串行口的电平转换电路,单片机输出的TTL电平数据从T1IN、T2IN输入,转换成RS232电平数据从T1OUT、T2OUT输出到总线。总线上的RS232电平数据从R1IN、R2IN输入后转换成TTL电平数据再从R1OUT、R2OUT输出送给单片机。,58,完整的RS232接口由主信道、辅信道共25根连线

36、组成,用25芯插座实现连接,但在实际应用中有很多信号线用不到,常采用9芯插座,信号引脚含义如图所示。,当设备间进行串行通信联络时,只需要TxD、RxD、GND三根线实现串行通信,其余的联络信号端可以悬空。,TxD:串行数据发送引脚,作为输出,RxD:串行数据接收引脚,作为输入,GND:接地信号,59,RS232的典型应用电路,60,8.9 RS-485串行接口,RS232传输距离有限,抗干扰性弱。RS485标准接 口,能够很好的解决上述问题。,RS485采用电流驱动,接口处的电平比RS232电平低,不易损坏接口处芯片,且与TTL电平兼容;传输的最大速率为10Mbps由于采用了差分驱动器,提高了

37、抗干扰能力,传输距离可达1200m。,RS232负逻辑(EIA电平):“0”:+5V+15V;“1”:-5V-15V。最大传输信息的长度为15米。,RS485差分信号负逻辑:“0”:-6V-2V;“1”:+2V+6V。最大传输信息的长度为1200米。,61,以MAX485为例介绍其功能,RO:接收器的输出端。若A引脚的电压大于B引脚的电压200mV时,RO为高电平,若A引脚的电平小于B引脚的电平200 mV时,RO为低电平。,/RE:接收器输出使能端。当 为低电平时,RO才有效;当 为高电平时,RO处于高阻态。,DI:发送器输入端。,DE:发送器输出使能端。当DE为高电平时,可以正常发送。在接

38、收时,应将DE拉低,使DI输出驱动器的两输出端呈现高阻态,不影响接收。,A:同向接收器输入和同向驱动器输出端。,B:反向接收器输入和反向驱动器输出端。,62,在发送时应将DE拉高,/RE拉低,接收时应将DE、/RE都拉低。RS485的总线可以采用双绞线传输信号,Rt为终端电阻,可以吸收空间电磁波的干扰,标准值为120。,RS485典型的通信电路如图所示,63,8.10 SPI串行接口概述,当前有很多类器件(如存储器、A/D转换器、LCD驱动器等)具有SPI通信接口;STC12C5A60S2等系列单片机为了满足与这些类别器件通信的需要,内部集成了SPI接口电路;STC12C5A60S2单片机的S

39、PI接口是一种全双工同步传输的高速通信总线,有主模式和从模式两种工作方式;被设置为主模式时,可以提供给从机的最高时钟频率为fosc/4。,64,8.10.1 SPI接口电路,STC12C5A60S2单片机的SPI接口电路如图所示。,MOSI:SPI同步串行接口的主机的输出和从机的输入引脚,用于实现主机到从机的串行数据传输。在该线上,从机需配置为仅为输入模式,作为传输数据的入口。根据SPI通信协议,主机在时钟信号的前半周期通过该线输出数据,从机在时钟信号的控制下获取数据。,MISO:SPI同步串行接口的主机的输入和从机的输出引脚,用于实现从机到主机的数据传输。在该线上,主机配置成输入模式,作为传

40、输数据的入口。根据SPI通信协议,当主机与多个从机中的某一从机通信时,其他从机总线被禁止,被禁止通信从机的MISO引脚为高阻状态。,SCLK:串行时钟的输入、输出信号。SCLK时钟用以控制主机和从机同步的时钟信号,控制主机和从机之间在MOSI和MISO线上的串行数据传输。当主机启动一次数据传输时,自动产生8个SCLK时钟周期信号给从机。在SCLK的每个上升沿或下降沿处移出一位数据。所以,主机启动一次可以连续传输一个字节的数据。SCLK信号在主模式时为输出,在从模式时为输入。,/SS:从机选择信号。主机通过控制 引脚的电平来选择处于多从机中的某一从机,主机的 引脚(P1.4)可以作为I/O口使用

41、,在从机模式下,无论是发送还是接收信息,引脚必须处于低电平。在只有一主一从的情况下,SPI接口可以由3根线构成,从机的/SS 引脚直接接地。,65,8.10.2 SPI串行通信的特殊功能寄存器,1.控制寄存器SPCTL(字节地址为0CEH)复位后的值为00000100B;,SSIG:/SS引脚忽略位。SSIG=1时,由MSTR位确定器件是主机还是从机;SSIG=0时,/SS引脚与MSTR位共同确定器件是主机还是从机。,SPEN:SPI串行通信接口使能位。SPEN=1,SPI串行通信功能有效;SPEN=0,SPI通信功能被禁止,此时,所有SPI串行通信引脚都可作为I/O口或其他功能使用。,DOR

42、D:设定SPI数据发送和接收的位顺序。DORD=1时,数据字的最高位(D7)最先发送及接收;DORD=0时,数据字的最低位(D0)最先发送及接收。,MSTR:主/从模式选择位。该位置1时,被选择为主机模式;该位置0时,被选择为从机模式。,CPOL:SPI时钟极性选择位。该位为1时,SCLK空闲时为高电平,SCLK的时钟前沿为下降沿而后沿为上升沿;该位为0时,SCLK空闲时为低电平,SCLK的时钟前沿为上升沿而后沿为下降沿。,CPHA:SPI时钟相位的选择控制位。该位为1时,从机输出给主机的首位数据在 引脚的下降沿时被驱动输出,主机输出给从机的首位数据由写入数据寄存器SPDAT的指令控制输出,在

43、SCLK的时钟后沿改变主、从机的位数据输出,由时钟前沿控制采样输入;该位为0时,位数据在SCLK的时钟前沿控制输出,在时钟后沿采样输入。在CPHA位为1时,SSIG位必须为0才能有效。,SPR1、SPR0:SPI时钟速率选择控制位。,66,8.10.2 SPI串行通信的特殊功能寄存器,2.状态寄存器SPSTAT(字节地址为0CDH)复位后的值为00B;,SPIF:SPI传输完成标志位。当一个字节的数据串行输出完成时,硬件电路将SPIF位置1。此时,如果SPI中断被允许,则产生中断。当单片机处于主模式且SSIG=0时,如果/ss引脚出现由高变低的下降沿,硬件也将SPIF位置1,表示模式改变,由主

44、模式强行改变为从模式。在SPIF标志位为1的情况下,只有通过指令向其写入1才能将其清零。,WCOL:SPI写冲突标志位。当数据正在传输过程中,如果又向数据寄存器SPDAT执行写操作,WCOL位将被置位。只有通过指令对WCOL标志位写入1才能清零。,67,8.10.2 SPI串行通信的特殊功能寄存器,3.数据寄存器SPDAT(字节地址为0CFH)复位后的值为00000000B;SPI串行通信的发送数据寄存器SPDAT与接收数据寄存器SPDAT属于两个寄存器,地址都是CFH,通过读、写指令加以区分。4.辅助功能寄存器AUXR1(字节地址为0A2H)当SPI_P4位为0时,SPI在P1口;当SPI_

45、P4位为1时,SPI从P1口切换到P4口:SCLK从P1.7切换到P4.3引脚、MISO从P1.6切换到P4.2引脚、MOSI从P1.5 切换到P4.1引脚、从P1.4切换到P4.0引脚。,68,8.11 SPI串行数据通信,当单片机之间进行SPI串行通信时,主机可以给从机发送数据,从机也可以给主机发送数据主机给从机发送数据是将发送数据寄存器SPDAT中的数据经MOSI引脚在SCLK的控制之下,一位一位的移出;而从机在SCLK的控制之下,将主机移出的数据一位一位的移入从机的移位数据寄存器。从机的发送数据寄存器中的数据在SCLK的控制之下一位一位的从MISO引脚送出,输入给主机的移位寄存器。即一

46、个8位字节数据从输出引脚移出的同时,另一个8位字节数据从输入引脚输入,一条串行时钟线上的时钟信号控制着两条串行数据线上的信息移位与采样同步进行。SPI的核心是一个8位移位寄存器和数据缓冲器,数据可以同时发送和接收。STC12C5A60S2单片机之间的SPI接口的数据通信方式有3种:单主单从、互为主从、单主多从。,69,8.11.1 单主单从通信方式,在单主单从的通信方式中,主机将SPCTL寄存器中的SSIG及MSTR位置1,选择成主机模式,从机将SSIG及MSTR位清0,选择成从机模式,此时主机可使用任何一个I/O引脚来控制从机的 引脚,当从机的 引脚被拉为低电平时,从机被选中。单主单从数据通

47、信方式的连接如图所示。,当主机向SPDAT写入一个字节数据时,立即启动一个连续的8位字节数据移位通信过程,即主机的SCLK向从机的SCLK的引脚连续发出8个脉冲,在这串脉冲的控制下,写入主机SPDAT寄存器的数据从MOSI引脚移出,发送到从机的MOSI引脚,同时从机SPDAT寄存器的数据从MISO引脚移出发送到主机的MISO引脚。,当传输完一个字节后,SPI时钟发生器停止,主机及从机的输出完成标志位SPIF由硬件自动置1并产生中断请求。通过字节指令MOV SPSTAT,#0C0H将SPIF位清0。发送与接收的过程都由主机控制,只有主机向数据寄存器写入数据,启动主机发送过程的同时,从机才能实现向

48、主机发送数据,70,8.11.2 互为主从通信方式,互为主从数据通信方式的连接如图所示。,在互为主从的通信方式中,通常情况下,初始化时甲乙双方都将各自设置成忽略 引脚的主模式,即将各自的控制寄存器SPCTL中的MSTR、SPEN位置1,SSIG位清0,P1.4引脚配置为准双向(复位模式)并输出高电平。,在某一时刻,甲方要向乙方发送数据时,首先检测/SS引脚的状态,如果/SS引脚是高电平,说明乙方没有行动,这时将自己的SSIG位置1,设置成忽略/SS引脚的主模式,并将/SS引脚拉低,将乙方设置成从模式,这时的配置方式已成为单主单从数据通信方式。甲机同乙机的通信完毕后,甲机再次将/SS引脚置高,将

49、SSIG位清0,回到初始状态。乙机要发送数据时,可采用同样的方法将自己设置成主机。,在SPI被配置为主机(MSTR=1),并且P1.4引脚配置为输入且SSIG=0的情况下,只要/SS引脚被拉低,即可实现模式的转变,成为从机,并将状态寄存器SPSTAT中的中断标志位SPIF置1。注意:互为主/从模式时,双方的SPI通信速率必须相同,使用相同的外部晶体振荡器。,71,8.11.3 单主多从通信方式,在这种方式下,各个从机将SSIG位清0,主机要同某一从机通信时,只要将对应从机的/SS引脚拉低,该从机即被选中。其他从机的 引脚保持高电平,这时主机与该从机的通信已成为单主单从的通信。通信完毕,再将该从

50、机的/SS引脚置高。,72,8.11.4 SPI通信的具体过程,在以上SPI的三种通信方式中,/SS引脚的使用在主模式和从模式下是有区别的。对于主模式来说,当发送一字节数据时,只需将数据写到SPDAT寄存器中,即可启动发送过程,此时/SS 信号不是必需的,可作任何的I/O口使用。在从模式下,/SS 引脚必须在被主机驱动为低电平的情况下,才可进行数据传输,/SS引脚变为高电平时,表示通信结束。,73,8.11.4 SPI通信的具体过程,STC12C5A60S2单片机的SPI串行通信接口的模式配置,由SPEN、SSIG、MSTR位和/SS引脚的状态共同决定。主/从模式的配置及使用如表84所示。,7

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号