打印
[学习资料]

PIC单片机入门_异步通讯模式详解

[复制链接]
946|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
drer|  楼主 | 2019-7-26 12:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1.USART用于异步通讯详解
1.1 USART的异步工作模式
在异步工作模式下, USART 采用的是标准非归零 ( NRZ编码格式 :一位起始位、8 位或 9 位数据位和一位停止位 )。最常用的数据格式是 8 位。片内专用的 8 位波特率发生器可用于由振荡器产生标准的波特率频率。 USART 首先发送和接收最低有效位。 USART 的发送器和接收器在功能上是独立的, 但采用相同的数据格式和波特率。 波特率发生器可以根据 BRGH 位 (TXSTA<2>)的状态产生两种不同的移位速率:对系统时钟 16 分频或 64 分频的波特率时钟。 USART 硬件不支持奇偶校验,但可以用软件实现 ( 奇偶校验位是第 9 个数据位 )。在休眠状态下, USART 不能在异步模式下工作。通过对 SYNC 位 (TXSTA<4>) 清零,可选择 USART 异步工作模式。USART 异步工作模式包括如下重要部分: 波特率发生器, 采样电路, 异步发送器,异步接收器。
1.2 异步发送器

上图展示的是发送器发送原理图。设置异步发送模式应遵循以下一些步骤:
1. 选择合适的波特率,对 SPBRG 寄存器进行初始化。如果需要高速波特率,将 BRGH 位置1 ;
2. 将 SYNC 位清零、 SPEN 位置 1,使能异步串行端口;
3. 若需要中断,将 TXIE、 GIE 和 PEIE 位置 1 ;(发送中断使能、中断总开关,外围中断使能)
4. 若需要发送 9 位数据,将 TX9 位置 1 ;
5. 将 TXEN 位置 1 ,使能发送,这也将置位 TXIF 位;
6. 若选择发送 9 位数据,第 9 位数据应该先写入 TX9D 位;
7. 把数据送入 TXREG 寄存器 ( 启动发送 )。

异步通信数据发送的时序图如下所示:



使用特权

评论回复
沙发
drer|  楼主 | 2019-7-26 12:52 | 只看该作者
1.3 与异步发送相关的寄存器

1.4 异步接收器


上图展示的是接收数据器的功能电路图。设置异步接收模式时必须遵循以下步骤:
1. 选择合适的波特率对 SPBRG 进行初始化,如果需要高速波特率,将 BRGH 置 1 ;
2. 将 SYNC 清零, SPEN 置 1,使能异步串口;
3. 若需要中断,将 RCIE、 GIE 和 PEIE 位置 1 ;
4. 如果需要接收 9 位数据,将 RX9 位置 1 ;
5. 将 CREN 位置 1,使 USART 工作在接收方式;
6. 当接收完成后,中断标志位 RCIF 被置 1,如果此时 RCIE 已被置 1,便产生中断;
7. 读 RCSTA 寄存器获取第 9 位数据 (如果已使能),并判断在接收操作中是否发生错误;
8. 读 RCREG 寄存器来读取 8 位接受到的数据;
9. 如果发生错误,通过将 CREN 清零来清除错误。


使用特权

评论回复
板凳
drer|  楼主 | 2019-7-26 12:52 | 只看该作者
1.5 与异步接收相关的寄存器


使用特权

评论回复
地板
drer|  楼主 | 2019-7-26 12:52 | 只看该作者
2.USART异步通信初始化技巧
异步发送器/接收器实例分析:
BSF   STATUS,RP0  ; STATUE的PRO位置1
MOVLW <baudrate>  ; 设定波特率的值,并装载到波特率发生器寄存器中
MOVWF SPBRG
MOVLW 0x40        ; 设定发送状态器的状态 0100 0000B 的含义:  
MOVWF TXSTA       ; 从动模式(外部时钟)-8位传输数据-允许发送-异步 0-低速波特率-移位寄存器满标志-无奇偶校验
BSF   PIE1,TXIE   ; 外围中断PIE1的TXIE发送中断置1,打开
BSF   PIE1,RCIE   ; 外围中断PIE1的RCIE接收中断置1,使能
BCF   STATUS,RP0  ; 清除STATUE的PRO位
MOVLW 0x90        ; 设定接收状态控制器的状态 1001 0000B
MOVWF RCSTA       ; 串口使能-8位数据接收-禁止接收单字符-连续接收   0-无帧错误-无溢出错误-无奇偶校验


使用特权

评论回复
5
drer|  楼主 | 2019-7-26 12:53 | 只看该作者
3.为什么我的异步通信频繁报错?
最常见的原因是:
1. 对PIC16C187A单片机使用高速模式(BRGH置1), 而这些单片机在异步高速模式时,其采样电路的工作方式与其它型号单片机不同。
2. 没有正确计算出要装入 SPBRG 寄存器的值。
3. 发送和接收的波特率误差总和太大。


使用特权

评论回复
6
badyxch| | 2019-7-27 19:56 | 只看该作者
学习了

使用特权

评论回复
7
天灵灵地灵灵| | 2019-7-31 23:34 | 只看该作者
给楼主的教程点赞。

使用特权

评论回复
8
mjs0528| | 2019-10-6 20:00 | 只看该作者
感谢分享,感谢楼主!!!

使用特权

评论回复
9
wahahaheihei| | 2019-10-7 07:47 | 只看该作者
非常详细,学到了

使用特权

评论回复
10
heisexingqisi| | 2019-10-9 10:08 | 只看该作者
串口功能分太多类了,容易搞糊涂。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

3316

帖子

4

粉丝