串行通信模块
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
9.3.1 与USART模块相关的寄存器
1.发送状态兼控制寄存器:TXSTA 2.接收状态兼控制寄存器:RCSTA 3.USART发送缓冲寄存器: TXREG 4.USART接收缓冲寄存器 :RCREG 5.PIE寄存器 6.PIR寄存器
2
1.发送状态兼控制寄存器TXSTA
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 CSRC TX9 TXEN SYNC - BRGH TRMT TX9D
21
USART异步发送其结构示意图
22
选择合适的波特率,对SPBRG进行初始 化; 置SYNC=0和SPEN=1,使其工作于异步 串行通信方式; 若需要中断,则置TXIE=1; 若要传送9位数据,则置TX9=1; 置TXEN=1,使USART工作在发送状态; 若需发送9位数据,则第9位应先写入 TXD9; 把待发送数据送入TXREG缓冲区,启动 发送;
16
波特率时钟发生器示意图
17
其波特率计算方式如下:
1.同步方式 波特率=fosc/[4(N+1)] N=fosc/(4×波特率)-1 注意, N 为 SPBRG 寄存器的初始值; BRGH 必须设置 为0,BRGH为1无用。 2.异步方式 BRGH=0时: 波特率=fosc/[64(N+1)] N=fosc/(64×波特率)-1 BRGH=1时: 波特率=fosc/[16(N+1)] N=fosc/(16×波特率)-1
25
3、带地址检测的9位异步接收方式
主要由RSR移位寄存器,RCREG寄存器即波 特 率 发 生 器 BRG 组 成 。 工 作 过 程 如 下 : 从 RC7/RX31引脚输入数据,在波特率时钟作用下, 一位一位移入 RSR 寄存器,一旦收到停止位, 就将收到的第9位数据分别装入RCREG和RX9D中, 并置 RCIF=1。再读取 RCREG 中的数据时,自动 将RCIF清零。
3
Bit0/TX9D:发送数据的第 9 位,可作为奇偶 校验位。(使用9位数据格式)。 0:不发送9位数据; 1:发送9位数据帧。 Bit1/TRMT:发送移位寄存器状态位,只读。 0:发送移位寄存器正在发送数据; 1:发送移位寄存器已空。
4
Bit2/BRGH:波特率控制位。 异步通信时:0:低速波特率发生模式; 1:高速波特率发生模式。 同步方式下,未用。 Bit4/SYNC:USART 同步 / 异步模式选择位。 0:选择异步通信模式(USAT); 1:选择同步通信模式(USRT)。
31
3、USART同步从动发送模式
USART 的同步从动方式和同步主控方式的 区别就是其时钟信号CK由外部提供,也就是由 对方提供,因此就是本机在睡眠状态下仍可进 行通信。
32
4、USART同步从动接收模式
同步从动接收和同步主控接收的操作基本 上是一样的,只是当 CPU 处于休眠方式下有所 区别。另外,在从动接收方式下,没有用到 SREN位。
7
2. 接收状态兼控制寄存器RCSTA
Bit7 SPEN
Bit6 RX9
Bit5 SREN
Bit4 Bit3 Bit2 CREN ADDEN FERR
Bit1 OERR
Bit0 RX9D
8
Bit0/RX9D:使用9位数据格式时的第9位接收 数据位,可作奇偶校验位或标识位等。 Bit1/OERR:接收数据溢出错误位,只读。 0:未发生溢出错误; 1:发生了溢出错误。 Bit2/FERR:接收数据帧错误标志位,只读。 0:无帧格式错误; 1:当前接收的数据发生帧错误,读一次 RCREG寄存器该位将被更新。
10
Bit5/SREN:单次接收使能控制位。 同步通信主模式式时: 0:禁止单次接收数据; 1 :使能单次接收方式,当接收完一个数据后 自动清0。 异步通信时:该位不起作用。 Bit6/RX9:9位数据格式接收使能控制位。 0:选择8位数据格式接收; 1:选择9位数据格式接收。 Bit7/SPEN:串行通信端口使能控制位。 0:禁止串行端口工作; 1:允许串行端口工作。 此时,RC7和RC6作为USART的接收发送引脚。
26
USART带地址检测9位异步接收结构图
27
选择合适的波特率,对SPBRG进行初始化; 置SYNC=0和SPEN=1,使其工作在异步串行工 作方式; 若需要中断,则置RCIE=1; 若要收第9位数据,则置RX9=1; 置CREN=1,使USART工作在接收器方式; 当接收完成后,中断标志位RCIF被置1,如果 RCIE=1,则产生中断; 如果设定接收9位数据,则读RCSTA获取第9位 数据; 读RCREG中的8位数据; 如果发生接收错误,则通过把CREN清0来清除 错误;
9
Bit3/ADDEN:地址检测使能位; 9位异步模式(RX9=1): 0 :取消地址检测,接收所有字节并且第 9 位可作为奇 偶校验位; 1 :启用地址检测,使能中断,当 RSR<8> 置 1 时装入接 收缓冲器; 8位异步模式(RX9=0):此位不起作用; Bit4/CREN:数据连续接收使能位。 异步模式下: 0:禁止连续接收功能; 1:使能连续接收功能。 同步模式下: 0 :禁止数据连续接收,将由 SREN 决定是否启动单次 数据接收。 1:使能数据连续接收,直到此位被清0。优于SREN位。
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 对于波特率发生器产生波特率的定义值
14
9.3.2 USART波特率发生器
USART 模块带有一个波特率发生器 BRG( baud rate generator),用以产生串行传送 所需的时钟,它支持 USART 的同步方式和异步 方式。在异步方式下,BRGH位用来控制波特率。 在同步方式下, BRGH位不起作用。
5
Bit5/TXEN:发送使能控制位。 0:关闭发送功能; 1:使能发送功能。
Bit6/TX9:发送数据长度选择位。 8 位数据 加 1 位校验或标识位( 9 位数据使能控制 位)。 0:8位数据位发送; 1:9位数据发送。
6
Bit7/CSRC:同步通信时钟源选择控制位。 同步模式下: 0:选择同步通信从模式(时钟来自外部 输入 信号); 1:选择同步通信主模式(时钟来自内部 波特率发生器)。 异步模式下,未用。
15
波特率发生器的逻辑结构如图 9-24 。其核 心实际是一个递减的8位二进制计数器,其计 数初始值是由寄存器 SPBRG 装入,在每次递减 计数器到达 00H 之后的下一个计数脉冲到来时 进行装入。系统时钟经过6位分频器后作为传 递计数器的计数脉冲,其分频比可以由 BRGH位 和SYNC位设定为1:4、1:16、或1:64。
30
2、USART同步主控接收模式
要使用 RSART 工作在同步主控接收模式时, 首先选择同步方式,然后把SREN位或CREN位置 位,即可进入同步主控接收状态,DT数据线上 的信号在时钟的下降沿被采样。如果 SREN=1 ,仅接收一个字节。如果 CREN=1,则可连续 地接收数据,直到CREN被清零为止。如果SREN 和CREN都被置位,则CREN状态优先于SREN状态, 进行连续接收。
24
特别注意以下几点:
如 RSR 将数据装载到 RCREG 时, RCREG 内已有 1 个
数据,则产生数据传送溢出错误。 OERR 置位。 RSR中数据将不能装入RCREG; OERR 置 位 后 , RSR 不 会 接 收 新 的 数 据 。 只 有 将 OERR 清 0 后才能接收新数据。 OERR 清零的方法是 将CREN清零再置位; 如收到停止位为0,则FERR置位;
Bit5 RX5
Bit4 RX4
Bit3 RX3
Bit2 RX2
Bit1 RX1
Bit0 RX0
每次接收到的数据都可从该缓冲器读取出来的。
13
5.SPBRG波特率控制寄存器
SPBRG 寄存器的设定值(0-255)与波特率成 反比关系。在同步方式下,波特率仅由该寄存器 来决定;而在异步方式下,则由 BRGH 位( TXSTA 寄存器的bit2)和该寄存器共同确定。
23
2、USART异步接收模式
主要是由接收移位寄存器 RSR和接收寄存 器RCREG 构成,串行信号从RC7/RX/DT引脚接 收,送入移位寄存器 RSR。一旦收到停止位, RSR 就将收到的 8 位数据装载到 RCREG 中。同时, RCIF置1,表示收到一个数据,当RCREG被读出 时RCIF被清零。
9.3 USART串行通信模块
PIC系列芯片中,片内除了含有同步串行 口 SSP(SPI,I2C)外,还有一个串行通信接 口 SCI。这是一个通用同步/异步收发器,简 称 USART,它是计算机最常用的通信接口之一。 USART可工作于如下三种方式:全双工异 步方式;半双工同步主控方式;半双工同步从 动方式。
源自文库33
29
1、USART同步主控发送模式
USART 同步主控发送方式与异步发送方式 基本相同, USART 发送器的结构示意图如图 927 。 发 送 器 的 核 心 是 串 行 发 送 移 位 寄 存 器 (TSR)和发送寄存器TXREG。用户将要发送的数 据装入 TXREG,一旦 TSR 中空就会从 TXREG 中读 出要发送数据装入 TSR。同时, TXIF 被置位。 一旦 TXIF 置位后只有当有新的数据写入 TXREG 后,才能使 TXIF 清零。当 TSR 为空时 TRMT 置位, 所以通过TRMT可查询TSR是否为空。
11
3.TXREG—USART发送缓冲寄存器
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TX7 TX6 TX5 TX4 TX3 TX2 TX1 TX0
每次发送的数据都是通过写入该缓冲器来实现的。
12
4.RCREG—USART接收缓冲寄存器
Bit7 RX7
Bit6 RX6
28
9.3.4 USART同步模式
USART 的同步模式是指进行通信双方之间, 除了有数据传输线以外,还有一条时钟专用线。 起着同步发送 / 接收的作用。在同步方式下, 数据格式可以使用 8位或9位。由于有专用的时 钟线同步,所以在串行字符中不再需要起始位 和停止位。在同步方式下只能工作在半双工方 式下。
18
【例题】在某应用系统中,采用 4800 波特 进行异步通信。假设单片机时钟频率为 fosc= 20MHZ,低速方式(BRGH=0)。
19
6.2.3 USART的异步模式
USART在异步模式下采用的数据格式为 l位 起始位、 8 位或 9 位数据位和 1 位停止位,无奇 偶校验码位(硬件不支持),常用的数据为 8 位。片内提供的8位波特率发生器BRG,可以利 用系统时钟信号产生标准的波特率频率。
20
1、USART异步发送模式
USART 发送器主要是由发送移位寄存器 (TSR)、发送缓冲器 TXREG 构成。 USART 异步发 送过程如下:要发送的数据送入 TXREG 中,寄 存 器 TXREG 中 的 数 据 就 被 装 入 TSR。 一 旦 把 TXREG中的数据送入TSR,就将中断标志位TXIF 置位。TXIF置位后,不能用软件清除,只有在 下一个要发送的数据送入 TXREG 后 TXIF 才能复 位。