打印
[学习资料]

【PIC单片机】-- 串口相关知识

[复制链接]
453|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wowu|  楼主 | 2022-6-14 11:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
ic, pi
01 串口相关知识
串口通信也是一个很重要的基础知识,比如你做一个项目,前面摄像头采集完数据后进行数据处理后,可以将结果同串口通信,将结果发送给单片机。

先看一下原理图,看RC6、RC7两个引脚,这边有TX\RX(这两个是用得最多的功能,也就是咱们今天要学习的异步串行通信接口),后边这个CK\TD(同步串行接口,CK是两个设备的时钟,TD是数据线)


02 同步通信与异步通信的区别?
同步通信方式
以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符表示,硬件要求高,通信双方须严格同步。

同步通信格式:数据以“块”为单位,一个数据块包括同步字符、数据及校验字符CRC。

通信连线通常采用三线制:SDA(信号线)、SCL(时钟线)、GND(地线)
优点是数据传输速率较高,常用作串行系统总线(内总线),如I2C、SPI、USB等;
缺点是硬件上要求发送时钟和接收时钟保持严格同步。

异步通信方式
以字符为传送单位,用起始位和停止位标识每个字符的开始和结束字符,间隔不固定,只需字符传送时同步。

异步通信格式如下图


(1)没有数据发送时,数据线保持"1"状态。

(2)发送数据时,先发起始位“0”,其后是数据位,异步传送规定低位在前,高位在后

(3)奇偶位紧跟在数据最高位之后,占用一位(也可省去)

(4)数据发送完后,再发一位停止位“1”,表示一帧数据结束,同时为接收下一帧数据做准备。在下一帧的起始位“0”到来之前,都是默认的“1”

通信协议:(1)发送、接收双方的通信速率必须一致。(2)通信双方的数据帧格式必须一致

优点:不需要传送同步脉冲,可靠性高,所需设备简单适合远距离通信,常用作串行通信总线(外总线),如RS232、RS485等

缺点:数据中包含有起始位和停止位以实现同步,从而降低了有效数据的传输速率。

03 异步通信
本次实验我们主要是讲解异步通信;

波特率?起始位?结束位?奇偶校验位?
波特率(bandrate),指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。比如每秒钟可以传输9600个二进制(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600。

起始位:就是第一位

结束位:就是最后一位

奇偶校验位:如果规定为奇校验,就是前面八位数据位中1个的个数如果为奇数,奇偶校验位就写0,如果为偶数,就写1;就是最终前八位数据加上奇偶校验位数据1的个数为奇数。

04 寄存器
本实验我们还没用到中断,所以相应的寄存器可以忽略掉。
接下来看一下相应寄存器
TXSTA:


发送状态和控制寄存器
CSRC:时钟源选择,异步的时候不用管,设置为0;
TX9:9位发送使能(包含奇偶校验位,我们没有就是0);
TXEN:发送使能端,发送的时候,设置为1
SYNC:同步和异步的选择
BRGH:跟波特率有关
TRMT:发送移位寄存器的状态位,当这位为1时,表示数据已经发送完;为0,表示数据还未发送
TX9D:用来奇偶校验位,我们没有用到,直接设置为0即可

RCSTA:接受状态控制寄存器

SPEN:串行端口使能,为1的时候,端口就打开
RX9:这个同样是选择8位,0
SREN:信号接收时能,异步时候不用管,那就设置为0
CREN:连续接受使能端,我们接受完一个字节之后,需要再连续接受下一个字节,所以要设置为1
ADDEN:地址检测使能端,这个是用在9位数据时候,所以不用管,设置为0
FERR:奇偶校验出现错误,这位就置位

OERR:接受溢出置位
RX9D:接受到第9位,放在这里

波特率生成器:
1、SYNC选择同步还是异步,然后BRGH=0/1下,波特率的计算公式是不一样的;

9600波特率,选择高速下,16 x 9600 = 4000000/(X+1) 即可得X = 25
(直接看这个芯片手册里面表格就可以了!)

然后X是放在SPBRG寄存器中

05 注意事项
还有一个点需要给大家提醒一下,大家在做实验的时候,RC6/RC7必须设置为输入input,如果不这么设置,会出现一些问题;

06 bit banging 伪代码







使用特权

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

本版积分规则

91

主题

4082

帖子

1

粉丝