(完整版)串行通信原理与应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
76
5
4
32
10
0 TX9 TXEN SYNC 0 BRGH 0 TX9D
无用位,清0 高波特率使能 发送位第9位
TXSTA(98H):发送控制寄存器
7 bit6 bit5 bit4 3 bit2 bit1 bit0 CSRC TX9 TXEN SYNC - BRGH TRMT TX9D
思考题:我想让PIC的USART模块采用8 位数据位发送数据,异步方式,高速状
思考题:如何用程序判断是否接收完毕?
PIifR(({1PI://R//17把R&C收0I6bF到5R0=的0C11I,数说0F0据明40读0收0走3到)!。一=2 0个)1数据0
}
例题1
电路图如上图 通过PIC16F877向PC的COM1不停的 发送字符’A’,要求波特率为 9600bps 8位数据位,无奇偶校验位,一位停 止位,无数据流控,请编程实现。
流程图 初始化串行口
TXREG‘A’
FALSE
PIR1的TXIF位==1
TRUE
TXREG‘A’
程序源代码
MAIN()
{
RCSTA=0b10010000; // 串口使能,接收使能
SPBRG=25;
// 9600bps@4MHz
TXSTA=0b00100100; //发送使能,高波特率
TXREG=‘A’; //发送字符‘A’
思考题:如何用程序判断是否发送成功?
if((PIR1&0b00010000)!=0)
PIR1{:
//7 TX6IF=51,本4次发3送2成功1 // 发下一个数T据XI或F结束发送
0
}
如何判断接收完毕?
对于接收而言,当接收到一个字节后 PIR1的RCIF标志位会置1,通过判断此 位可得知是否收到一个数据,当RCREG 被读取后,RCIF自动被清空。
b7 b6 b5 b4 B3 b2 b1 b0
SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
PORTC<6>:TXD Transmitter PORTC<7>:RXD Receiver
考虑传输速率问题
可能出现设备之间的主频不同的情 况,为了解决这个问题,两个设备 之间必须协商通信速率。
bit7 6
5
SPEN RX9 0
4
3
CREN 0
bit2 FERR
bit1 bit0 OERR RX9D
思考题:我想让PIC的USART模块在 异步方式下桢采格式用错8位数溢出据错位接接收收数的第据9,位
请问RCSTA该设定何值?
RCS未T用A=,置0b0 10010000;
要发送或接收的数据放在哪里?
while(1)
//死循环,循环发送
{ if((PIR1&0b00010000)!=0) //发送完毕吗?
串行通信桢格式
常见的串行通信协议
名称 特点
USART
USB
I2C
CAN
用途 PC与MCU PC与MCU MCU之间 MCU之间
特点 简单
快, 可靠
简单 复杂, 可靠
USART特点
支持同步串行通信和异步串行通信 支持全双工 桢格式可编程
串行输出原理
串行输入原理
PIC的USART结构
接收 RCIF
串行通信格式图
相关寄存器有两个: TXSTA: 发送控制寄存器 RCSTA:接收控制寄存器
TXSTA(98H):发送控制寄存器
76
5
4
32
10
0 TX9 TXEN SYNC 0 BRGH 0 TX9D
功能: 控制UART发送数据的格式
TXSTA(98H):发送控制寄存器
9位wenku.baidu.com送使能 发送使能 同步模式使能
DB0-DB7 WR RD CS ALE信号等
举例:内存的写数据过程(两部分)。
通过时序图让学生明白
Phase 1
Phase 2
CLK
ALE
WR
A[15:0]
Address
D[7:0]
Data
如何串行通信
就用极少的数据线就能实现数据 通信,那么是如何实现的呢?
桢的概念:起始位,数据位,速 率(波特率),应答位或停止位。
串行通信原理及应用
什么是通信
两个设备之间交换数据 的过程我们称之为通信
单工
A
B
双工
通信的方式 从同时传输的数据位数来分为:
1、并行通信(Parrel) 2、串行通信(Serial)
串并行方式各自特点
速度 价格 距离 并 相对快 贵 短 行 串 相对慢 廉价 远 行
如何并行通信(有时间再讲)
要发送的数据放在TXREG里
TXREG=‘A’;
收到的数据放在RCREG里
char var=RCREG;
TXREG和RCREG都在0体中
如何判断发送成功?
对于发送而言,当一个字节发送完毕后 PIR1的TXIF标志位会被自动置1,通过 判断此位就可得知数据发送是否完毕, 当TXREG被赋值后,TXIF自动被清空。
态,T请X问STTXAST=A0该b设0定01何0值0?100;
RCSTA:接收控制寄存器
bit7 6 5
4
SPEN RX9 SREN CREN
3
bit2 bit1
bit0
ADDEN FERR OERR RX9D
功能: 控制UART接收数据的格式和状态
RCSTA:接收控制寄存器
串口使能 9位使能 连续接收使能
接收缓冲寄存器
SPEN
1 接收移位寄存器 0
1 停 止 位
波特率发生器
起始位 0
数据
8 8
发送 TXIF
发送缓冲寄存器
1 发送移位寄存器 0
停 止
10
位
TXEN
波特率发生器
SPEN 起起 1 始始 位位
停止位 1
(教材89页)图3-9 USART异步传送模式结构原理及时序图
串行通信时必须要考虑的问题
对于UART而言,传输速率是两个设 备之间预先协商好的,通过设置相 应寄存器来实现。
传输速率相关寄存器及标志位
波特率发生寄存器:SPBPG(99H) 高波特率标志位:BRGH@TXSTA<2> 同步收发标志位:SYNC@TXSTA<4>
常用SPBPG的值:当主频是4Mhz时, 速度希望采用9600bps进行异步通信 则SPBRG=25,BRGH=1,SYNC=0
硬件如何连接? 传输速度是多少? 通信格式是什么样的? 要发送或接收的数据放在哪里? 如何判断发送或接收完毕?
MCU通过UART与PC连接图
PC
MAX232
电平转换器
RX TX
+12V/-12V+5V/0V
+12V 代表 1 -12V 代表 0
+5V 代表 1 0V 代表 0
寄存器设置
RXSTA<SPEN>:1