第6章:串行总线技术概要课件.ppt
《第6章:串行总线技术概要课件.ppt》由会员分享,可在线阅读,更多相关《第6章:串行总线技术概要课件.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第6章 串行总线技术 一、本章主要内容:链路层通信协议、各种串行总线。二、本章重点:PC机与单片机的通信,I2C总线、SPI总线 三、本章难点:I2C总线 四、教学内容如下:第第6章串行总线技术章串行总线技术 6.1 串行通信概述串行通信概述按照数据流的方向可分为全双工、半双工和单工。第第6章串行总线技术章串行总线技术 6.1 串行通信概述串行通信概述按照数据流的方向可分为全双工、半双工和单工。串行通信按通信双方是否用同一个时钟,分同步通信和异步通信 发信方 收信方 发信方 收信方 第第6章串行总线技术章串行总线技术 6.1 串行通信概述串行通信概述按照数据流的方向可分为全双工、半双工和单工
2、。串行通信按通信双方是否用同一个时钟,分同步通信和异步通信串行通信的传输速率:波特率(BaudRate)表示 每秒传送的位数(bit/s)。通信协议(链路层协议和应用层协议)之链路层协议。1、异步协议(适合于异步通信)每次通信1帧,每帧1个字符 2、同步协议(适合于同步通信):每次通信1帧(用帧头和帧尾标注1个帧),每帧若干个字符。1.异步通信协议的实例异步通信协议的实例起止式异步协议起止式异步协议 发信方 收信方 2、同步协议、同步协议(适合于同步通信适合于同步通信):每次通信每次通信1帧帧(用帧头和帧尾标注用帧头和帧尾标注1个帧个帧),每帧若,每帧若干个字符。干个字符。(1)面向字符的同步
3、协议面向字符的同步协议 每次通信1帧(用帧头和帧尾标注1个帧),每帧若干个字符。用若干特殊字符标注一帧名名 称称ASCIIASCIIEBCDICEBCDIC序始序始(SOH)(SOH)000000100000010000000100000001文始(文始(STXSTX)000001000000100000001000000010组终组终(ETB)(ETB)001011100101110010011000100110文文终终(ETXETX)000001100000110000001100000011同步同步(SYN)(SYN)001011000101100011001000110010送送毕毕(
4、EOT)(EOT)000010000001000011011100110111询问询问(ENQ)(ENQ)000010100001010010110100101101确确认认(ACK)(ACK)000011000001100010111000101110否否认认(NAKNAK)001010100101010011110100111101转义转义(DLE)(DLE)001000000100000001000000010000(2)面向比特的同步协议(面向比特的同步协议(SDLC/HDLC)每次通信1帧(用帧头和帧尾标注1个帧),每帧若干个字位。(1)标志场:01111110,称标志场。(2)地址
5、场A和控制场C。地址场A用来规定与之通信的次站的地址。控制场C可规定若干个命令。(3)信息场I。I场包含有要传送的数据。并不是每一帧都必须有信息场。即数据场可以为0,当它为0时,则这一帧主要是控制命令。(4)帧校验场FC。紧跟在信息场之后的是两字节的帧校验场。16位循环冗余校验码CRC,经计算获得。除了标志场和自动插入的“0”以外,所有的信息都参加CRC计算。实际应用时的两个技术问题:(1)“0”位插入/删除。协议规定以01111110为标志,但在信息场中也完全有可能有同一种模式的字符,为了把它与标志区分开来,所以采取了“0”位插入和删除技术:发送端在发送所有信息(除标志字节外)时,只要遇到连
6、续5个“1”,就自动插入一个“0”。接收端在接收数据时(除标志字节)如果连续收到5个“1”,就自动将其后的一个“0”删除,以恢复信息的原有形式。这种“0”位的插入和删除过程是由硬件自动完成的。实际应用时的两个技术问题:(1)“0”位插入/删除。(2)异常结束。若在发送过程中出现错误,则协议常用异常结束字符使本帧作废。在HDLC中,7个连续的“1”被作为失效字符。在SDLC中,8个连续的“1”被作为失效字符。在两帧之间,发送器可以连续输出标志字符序列,也可以输出连续的高电平,它被称为空闲(Idle)信号。6.2 串行通信串行通信RS系列总线标准及其接口系列总线标准及其接口6.2.1 RS-232
7、C标准接口总线标准接口总线 机械标准:控制信号线的定义。电气标准:-5V-15V规定为“1”+5V+15V规定为“0”。6.2.3 单片机与单片机与PC机之间的通信机之间的通信 单片机内部的串行口可以作为通信接口,利用该串行口与PC机的COM口进行串行通信:将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理就能满足实际的应用需要。1、硬件连接 PC机的COM口,输入输出为RS-232C电平,而51单片机串行口的输入输出均为TTL电平,必须进行电平转换。2、软件设计 初始化 PC机和单片机在进行通信时,首先分别对各自的串行口进行初始化、确定串行口工作方
8、式、设定波特率(两者应设置一致)、传输数据长度等。数据传输。1)PC机通信软件的设计机通信软件的设计 在Windows环境下提供了完备的API应用程序接口函数,程序员通过这些函数与通信硬件接口。初始化 通信 通信函数是中断驱动的:发送数据时,先将其放入缓存区,串口准备好后,就将其发送出去;传来的数据迅速申请中断,使Windows接收它并将其存入缓冲区,以供读取。接收 查询方式时:CPU要不断测试串口是否有数据,以防接收串口数据时出现错误、效率低;中断方式:一旦有数据传至,CPU终止当前任务,由中断服务程序完成操作。因此,中断方式具有效率高、接收准确、编程简单等特点。(1)打开串口。可使用Cre
9、ateFile()函数,其格式如下:HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwSharedMode,DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDistribute,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile );(1)打开串口。可使用CreateFile()函数,其格式如下:HANDLE CreateFile(LPCTSTR lpFileName,DWORD dw
10、DesiredAccess,DWORD dwSharedMode,DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDistribute,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile );(2)设置串口。设置串口可以分两步完成。首先用BuildCommDCB()函数修改DCB(串行通信设备控制块)结构,然后用SetCommState()函数将DCB结构写到打开的串口,便完成了串口的设置。(1)打开串口。可使用CreateFile()函数,其格式如下:HANDLE
11、CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwSharedMode,DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDistribute,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile );(2)设置串口。设置串口可以分两步完成。首先用BuildCommDCB()函数修改DCB(串行通信设备控制块)结构,然后用SetCommState()函数将DCB结构写到打开的串口,便完成了串口的设置。B
12、uildCommDCB()函数使用格式如下:BOOL BuildCommDCB(LPCTSTR lpDef,LPDCB lpDCB );如果该函数调用成功,则返回值为TRUE;否则返回值为FALSE。(1)打开串口。可使用CreateFile()函数,其格式如下:HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwSharedMode,DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDistribute,DWORD dwFlags
13、AndAttributes,HANDLE hTemplateFile );(2)设置串口。设置串口可以分两步完成。首先用BuildCommDCB()函数修改DCB(串行通信设备控制块)结构,然后用SetCommState()函数将DCB结构写到打开的串口,便完成了串口的设置。BuildCommDCB()函数使用格式如下:BOOL BuildCommDCB(LPCTSTR lpDef,LPDCB lpDCB );如果该函数调用成功,则返回值为TRUE;否则返回值为FALSE。SetCommState()函数使用格式如下:BOOL SetCommState(HANDL EhFile,LPDCB l
14、pDCB );(3)设置缓冲区大小。如果程序需要重新分配发送和接收缓冲区,则使用SetupComm()函数。(4)清除缓冲区。可使用PurgeComm()函数。(5)从串口接收数据。可使用ReadFile()函数。(6)从串口发送数据。可使用WriteFile()函数。(7)关闭串口。可使用CloseHandle()函数。编写Win32 串行通信程序的基本步骤是:使用CreateFile()函数获得串口句柄;使用BuildCommDCB()和SetCommState()函数设置串口工作状态;可根据需要选择相应的结构和函数进行其它设置。如重新设置发送接收缓冲区可使用SetupComm()函数;设
15、置超时则可修改COMMTIMEOUTS结构并使用SetCommTimeouts()函数等;使用ReadFile()和WriteFile()函数读写串口;串行通信结束时,使用CloseHandle()函数关闭串口以释放控制权,使串口可以被其它的程序使用。2.单片机收发软件设计单片机收发软件设计 设计单片机的通信软件,实际上是对单片机的串行口的设计,通常采用汇编语言来设计。首先必须设置串行通信方式(SCON)和波特率(PCON)。汇编程序如下所示:(1)发送程序的设计。TRT:MOV SCON,#50H ;初始化方式1,波特率为F/32 MOV PCON,#80H MOV R0,#50H MOV
16、R7,#10H ;发送16个字节LOOP:MOV A,R0 MOV C,P ;发送的第9数据位 MOV TB8,C MOV SBUF,A ;数据给SBUF,启动发送WAIT:JBC TI,CONT ;判断发送中断标志 SJMP WAITCONT:INC R0 DJNZ R7,LOOP RET (2)接收程序的设计。RVE:MOV TMOD,#20H ;初始化定时器T1方式2 MOV TH1,#0F4H ;定时器T1赋初值 MOV TL1,#0F4H SETB TR1 MOV R0,#50H MOV R7,#10H ;接收长度16个字节 MOV SCON,#0D0H ;串行口化方式3,接收 MO
17、V PCON,#00H ;置SMOD=0WAIT0:JBC RI,PRI SJMP WAIT0PRI:MOV A,SBUF JNB P,PNP JNB RB8,ERROR ;转出错处理 SJMP RIGHTPNP:JB RB8,ERROR ;转出错处理RIGHT:MOV R0,A ;数据到缓冲器 INC R0 DJNZ R7,WAIT0 ;判断数据是否接收结束 CLR REN ;清接收标志 RETERROR:(略)6.2.4 PC机与多个单片机间的通信机与多个单片机间的通信 1.PC机与多个单片机通信电路 PC机与多个单片机通信,不能采用点对点的RS-232C标准,要采用一点对多点的RS-48
18、5标准等,要将PC机RS-232C接口转换成RS-485接口:2.PC机与多个单片机通信协议 要保证串行通信的可靠进行要保证串行通信的可靠进行,在相互通信时在相互通信时,必须有一套严格的必须有一套严格的通信协议。一般称为应用层通信协议。一般包含:通信协议。一般称为应用层通信协议。一般包含:帧头标志;地址:主机/从机地址、广播地址;命令:点对点命令和广播命令两大类。长度;数据;校验;帧尾标志。2.PC机与多个单片机通信协议 要保证串行通信的可靠进行要保证串行通信的可靠进行,在相互通信时在相互通信时,必须有一套严格的必须有一套严格的通信协议。一般称为应用层通信协议。一般包含:通信协议。一般称为应用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行 总线技术 概要 课件
限制150内