当前位置:文档之家› 第6章:串行总线技术

第6章:串行总线技术


(1)发送程序的设计。
TRT: MOV SCON,#50H ;初始化方式1,波特率为F/32
MOV PCON,#80H
MOV R0,#50H
MOV R7,#10H ;发送16个字节
LOOP:MOV A,@R0
MOV C,P
;发送的第9数据位
MOV TB8,C
MOV SBUF,A ;数据给SBUF,启动发送
(1)打开串口。 可使用CreateFile ( )函数,其格式如下:
HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSharedMode,
DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribute, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile
MOV R7,#10H ;接收长度16个字节
MOV SCON,#0D0H ;串行口化方式3,接收
MOV PCON,#00H ;置SMOD = 0
WAIT0: JBC RI,PRI
SJMP WAIT0
PRI: MOV A,SBUF
JNB P,PNP
JNB RB8,ERROR ;转出错处理
SJMP RIGHT
00000011
同步(SYN)
0010110
00110010
送毕(EOT)
0000100
00110111
询问(ENQ)
0000101
00101101
确认(ACK)
0000110
00101110
否认(NAK)
0010101
00111101
转义(DLE)
0010000
00010000
(2)面向比特的同步协议(SDLC/HDLC)
》按照数据流的方向可分为全双工、半双工和单工。 》串行通信按通信双方是否用同一个时钟,分同步通信和异步通信
发信方
收信方
发信方
收信方
第6章串行总线Leabharlann 术6.1 串行通信概述》按照数据流的方向可分为全双工、半双工和单工。
》串行通信按通信双方是否用同一个时钟,分同步通信和异步通信
》串行通信的传输速率:波特率(BaudRate)表示 每秒传送的位数(bit/s)。
》通信协议(链路层协议和应用层协议)之链路层协议。 1、异步协议(适合于异步通信) 每次通信1帧,每帧1个字符 2、同步协议(适合于同步通信): 每次通信1帧(用帧头和帧尾标注1个帧) ,每帧若干个字符。

1. 异步通信协议的实例——起止式异步协议
发信方
收信方
2、同步协议(适合于同步通信): 每次通信1帧(用帧头和帧尾标注1个帧) ,每帧若
WAIT: JBC TI,CONT ;判断发送中断标志
SJMP WAIT
CONT: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
每次通信1帧(用帧头和帧尾标注1个帧) ,每帧若干个字位。
(1)标志场:01111110,称标志场。 (2)地址场A和控制场C。
》地址场A用来规定与之通信的次站的地址。 》控制场C可规定若干个命令。 (3)信息场I。 I场包含有要传送的数据。并不是每一帧都必须有信息场。即数 据场可以为0,当它为0时,则这一帧主要是控制命令。 (4)帧校验场FC。紧跟在信息场之后的是两字节的帧校验场。 16位循环冗余校验码CRC,经计算获得。除了标志场和自动插 入的“0”以外,所有的信息都参加CRC计算。
);
(2)设置串口。设置串口可以分两步完成。首先用 BuildCommDCB ( )函数修改DCB (串行通信设备控制块)结构,然 后用SetCommState ( )函数将DCB结构写到打开的串口,便完成了 串口的设置。
(1)打开串口。 可使用CreateFile ( )函数,其格式如下:
HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSharedMode,
1、硬件连接 PC机的COM口,输入输出为RS-232C电平,而51单片机串行 口的输入输出均为TTL电平,必须进行电平转换。
2、软件设计 》初始化 PC机和单片机在进行通信时,首先分别对各自的串行口进行初 始化、确定串行口工作方式、设定波特率(两者应设置一致)、传 输数据长度等。 》数据传输。
1) PC机通信软件的设计 》在Windows环境下提供了完备的API应用程序接口函数,程 序员通过这些函数与通信硬件接口。 》初始化 》通信 通信函数是中断驱动的: 发送数据时,先将其放入缓存区,串口准备好后,就将其发送 出去; 传来的数据迅速申请中断,使Windows接收它并将其存入缓冲 区,以供读取。 》接收 查询方式时:CPU要不断测试串口是否有数据,以防接收串 口数据时出现错误、效率低; 中断方式:一旦有数据传至,CPU终止当前任务,由中断服 务程序完成操作。因此,中断方式具有效率高、接收准确、编程简 单等特点。
第6章 串行总线技术
一、本章主要内容: 链路层通信协议、各种串行总线。 二、本章重点: PC机与单片机的通信,I2C总线、SPI总线 三、本章难点: I2C总线 四、教学内容如下:
第6章串行总线技术
6.1 串行通信概述
》按照数据流的方向可分为全双工、半双工和单工。
第6章串行总线技术
6.1 串行通信概述
);
(3)设置缓冲区大小。 如果程序需要重新分配发送和接收缓冲区,则使用SetupComm ( ) 函数。
(4)清除缓冲区。 可使用PurgeComm( )函数。 (5)从串口接收数据。 可使用ReadFile( ) 函数。 (6)从串口发送数据。 可使用WriteFile( )函数。 (7)关闭串口。 可使用CloseHandle( )函数。
PNP: JB RB8,ERROR ;转出错处理
RIGHT: MOV @R0,A ;数据到缓冲器
INC R0
DJNZ R7,WAIT0 ;判断数据是否接收结束
CLR REN
;清接收标志
RET
ERROR: (略)
6.2.4 PC机与多个单片机间的通信 1. PC机与多个单片机通信电路 PC机与多个单片机通信,不能采用点对点的RS-232C标准, 要采用一点对多点的RS-485标准等,要将PC机RS-232C接口转换 成RS-485接口:
》实际应用时的两个技术问题:
(1)“0”位插入/删除。 协议规定以01111110为标志,但在信息场中也完全有可能有同
一种模式的字符,为了把它与标志区分开来,所以采取了“0”位插 入和删除技术:
发送端在发送所有信息(除标志字节外)时,只要遇到连续5 个“1”,就自动插入一个“0”。
接收端在接收数据时(除标志字节)如果连续收到5个“1”,就 自动将其后的一个“0”删除,以恢复信息的原有形式。
》BuildCommDCB( )函数使用格式如下:
BOOL BuildCommDCB( LPCTSTR lpDef, LPDCB lpDCB );
如果该函数调用成功,则返回值为TRUE;否则返回值为FALSE。 》SetCommState( )函数使用格式如下:
BOOL SetCommState( HANDL EhFile, LPDCB lpDCB
);
(1)打开串口。 可使用CreateFile ( )函数,其格式如下:
HANDLE CreateFile ( LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSharedMode,
DWORD LPSECURITY_ ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDistribute, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile
2. PC机与多个单片机通信协议 要保证串行通信的可靠进行,在相互通信时,必须有一套严格的 通信协议。一般称为应用层通信协议。一般包含: 》帧头标志; 》地址:主机/从机地址、广播地址; 》命令:点对点命令和广播命令两大类。 》长度; 》数据; 》校验; 》帧尾标志。
6.2 串行通信RS系列总线标准及其接口 6.2.1 RS-232C标准接口总线
》机械标准:控制信号线的定义。
》电气标准:-5V~-15V规定为“1” +5V~+15V规定为“0”。
6.2.3 单片机与PC机之间的通信 单片机内部的串行口可以作为通信接口,利用该串行口与PC机
的COM口进行串行通信:将单片机采集的数据传送到PC机中,由 PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理就 能满足实际的应用需要。
这种“0”位的插入和删除过程是由硬件自动完成的。
》实际应用时的两个技术问题: (1)“0”位插入/删除。 (2)异常结束。
若在发送过程中出现错误,则协议常用异常结束字符使本帧作 废。
在HDLC中,7个连续的“1”被作为失效字符。 在SDLC中,8个连续的“1”被作为失效字符。 》在两帧之间,发送器可以连续输出标志字符序列,也可以输 出连续的高电平,它被称为空闲(Idle)信号。
干个字符。
(1)面向字符的同步协议
每次通信1帧(用帧头和帧尾标注1个帧) ,每帧若干个字符。 用若干特殊字符标注一帧
名称 序始(SOH)
相关主题