目录
- 专栏
- 数字通信基本知识
-
- 组成
- 串行通信和并行通信
- 同步通信和异步通信
- 异步串行通信的通用基础知识
- 异步串行通信的格式
- 串行通信的波特率
- 奇偶校验
- 串行通信传输方式术语
-
- 1.全双工(Full-duplex)
- 2.半双工(Half-duplex)
- 3.单工(Simplex)
- RS232总线标准
- UART编程相关
-
- eUSCI模式下的UART
-
- UART
- UART运行机理
-
- 应用
- 使用UART通信
- 串行发送机TxMachine
- 串行接收机RxMachine
- 波特率的计算
- UART相关寄存器
-
- 1寄存器地址分析
- 2控制寄存器
- 3状态寄存器
- 4波特率寄存器
- 5数据寄存器
- 常用波特率列表
- MSP432中的UART
- UART相关的SDK函数
- UART操作实例
- 资料
专栏
基于MSP432的嵌入式系统实践
数字通信基本知识
组成
-
发送器:处理要发送的信息,将其构造成一定格式的帧。
-
接收器:接收信息并解析信息。
-
通信介质:发送器和接收器之间的桥梁,为信息提供物理介质,通常为双绞线、光纤或无线射频。
串行通信和并行通信
- 串行通信:将数据一位一位地由端口送出或接收进来
- 并行通信:数据的各个数据位(一般为8位及其整数倍)在多条数据线上同时被传输
- 并行通信的传输速度快、效率高,但抗干扰能力差,且需要的资源多,一般用于短距离、高带宽的大数据量传输
- 串行通信节省传输线,但数据传送效率没有并行通信高
同步通信和异步通信
- 异步通信:处理器之间不使用公共的参考时钟,通信双方分别有自己的时钟源,但必须使用相同的波特率。例如UART就是属于串行异步通信。
- 同步通信:由主机提供时钟与数据,从机使用该时钟接收数据或发送数据,即通信双方公用时钟源。例如:SPI和I2C就属于串行同步通信。
异步串行通信的通用基础知识
定义
串行通信接口,即异步串行通信,简称UART,也就是我们常说的“串口”或SCI,在USB未普及之前,就是PC机必备的通信接口之一
特殊地位
串行通信具有特殊重要地位的原因
- 原因一:在通信方式上,属于单字节通信,是嵌入式开发中重要的调试手段之一
- 原因二:它是最简单的串行通信方式,硬件上所说的232、485通信均是指这个串口通信
- 原因三:硬件接线简单,与MCU引脚直接相连的一般只需要发送线、接收线和地线
异步串行通信的格式
串行通信数据以字节为单位,按位的顺序从发送线送出。从MCU引脚来看,高电平就是逻辑“1”,低电平就是逻辑“0”
引脚 | 功能 | 引脚 | 功能 |
---|---|---|---|
1 | 接收线信 检测 | 6 | 数据通信设备准备就绪(DSR) |
2 | 接收数据线(RXD) | 7 | 请求发送(RTS) |
3 | 发送数据线(TXD) | 8 | 允许发送(CTS) |
4 | 数据终端准备就绪(DTR) | 9 | 振铃指示 |
5 | 信 地(SG) |
注:在RS232通信中,常常只用三根线:接收线、发送线和地线
eUSCI模式下的UART
Enhanced Universal Serial Communication Interface
增强的通用串行通信接口(eUSCI)模块支持多种串行通信模式。不同的eUSCI模块支持不同的模式。每一个不同的eUSCI模块以不同的字母命名,例如:eUSCI_A、eUSCI_B等。MSP432单片机实现了不止一个相同的eUSCI模块,这些模块将以递增的数字命名,例如,MSP432单片机支持四个eUSCI_A模块时,这四个模块应该被命名为eUSCI_A0、eUSCI_A1、eUSCI_A2、eUSCI_A3。
eUSCI_A模块支持以下通信模式:
- UART通信模式;
- 具有脉冲整型的IrDA通信模式;
- 具有自动波特率检测的LIN通信模式;
- SPI通信模式。
USCI_B模块支持以下通信模式:
- IIC通信模式;
- SPI通信模式。
下面首先介绍eUSCI的异步模式——URAT。
UART
Universal Asynchronous Receiver and Transmitter
异步通信收发器
UART的特点及结构
UART即异步串行通信,可设置成全双工异步通讯方式,与PC(个人计算机)等通讯;或设置成半双工同步模式与其他外设通信,如ADC或DAC。
MSP432单片机内置了UART功能,它的作用是将外部设备串行数据转换为并行数据接收;讲内部并行数据转换为串行数据发送。在通用异步收发模式下eUSCI_Ax模块通过两个外部收发引脚UCAxRXD和UCAxTXD把MSP432单片机与外界连接起来。当寄存器UCAxCLT0的UCSYNC控制位被清零,UCMODEx控制位被配置为00时,eUSCI_A模块被配置为UART异步通信模式。
UART的特点如下:
- 传输7位或8位数据,可采用奇校验、偶校验或者无校验;
- 具有独立的发送和接收移位寄存器;
- 具有独立的发送和接收缓存寄存器;
- 支持最低位优先或最高位优先的数据发送和接收方式;
- 内置多处理器系统,包括线路空闲和地址位通信协议;
- 通过有效的起始位检测,将MSP432单片机从低功耗模式下唤醒;
- 可编程实现分频因子为整数或小数;
- 具有用于检测错误或排除错误的状态标志位;
UART运行机理
应用
串口是嵌入式系统与外界联系的重要手段,主要用于以下两个方面:
- UART直接和其他的控制器进行数据交换
- UART和PC机通信:由于PC机串口是RS232电平,所以连接时需要使用RS232转换器
使用UART通信
使用UART通信需要两个引脚(将在下面的示例中用到),如下表:
引脚名称 | 类型 | 描述 |
---|---|---|
RXD | 输入 | 串行输入,接收数据 |
TXD | 输出 | 串行输出,发送数据 |
串行发送机TxMachine
TxMachine支持下面的工作特性:
- 奇偶校验位的生成
- 清除发送
- 中断字符发送
- 双缓存区操作
串行接收机RxMachine
RxMachine把接收到的串行数据送到接收移位寄存器,接收完成后,数据送到串行接收缓存寄存器(SxRBUF),用户从SxRBUF中读取接收到的数据。
串行接收机在接收过程中能够检测出以下三种错误条件:
- 奇偶校验错:检测到奇偶校验错时,奇偶错标志位被置位。
- 帧错误:未收到停止位时,帧错误标志位被置位。
- 超越错误:当接收到一个新的字符前,以前收到的字符没有被CPU读走,旧的数据被覆盖,那么超越错误标志位被置位。
波特率的计算
一般填入波特率寄存器中的值都是通过如下的公式求出来:
UART_BR = MCLK / (BaudRate * N)
注意:N为波特率因子,大多数芯片取N = 16
有些波特率计算精度较高,它们有两个波特率寄存器UART_BR1和UART_BR2,其中UART_BR1则用来存放上式计算出来的整数部分,而UART_BR2则用来存放上式计算出来的小数部分,这样计算出来的波特率就更精确,误差更小。
如果假设时钟源选择12MHz,如果要取UART2的9600波特率,那么如何计算
- N = 12000000/9600 = 1250
- 1 -> OS16 UCBR2 = INT(1250/16) = 78
- UCBRF2 = INT(N/ 6 – INT(N/16)) * 16 = INT(0.125 * 16) = 2
- N = N – INT(N)
其中根据第一步,N=1250,INT(N)=0,因此N-INT(N)=0,查表TABLE24-4,可以得到UCBRSx的值应该为0.
注意,如果N-INT(N)不等于0,那么按照官方文档要求,在TABLE24-4中按照往前靠的原则进行查表,例如小数部分为0.125,那么查表对应数据为0.100对应的数值。
UART相关寄存器
1寄存器地址分析
- MSP432芯片有四个UART模块。每个模块有其对应的寄存器。以下地址分析均为16进制,为书写简化起见,在不至于引起歧义的情况下,略去十六进制后缀“0x”不写。
- UART模块x的寄存器地址=4000_1000+x * 400+n * 2(x = 0~3;n = 0~15(除2、10、11、12), n代表寄存器 )。
2控制寄存器
- eUSCI_Ax控制字寄存器0(UCAxCTLW0)
- eUSCI_Ax控制字寄存器1(UCAxCTLW1)
- eUSCI_Ax中断使能寄存器(UCAxIE)
- eUSCI_Ax调制控制字寄存器(UCAxMCTLW)
3状态寄存器
- eUSCI_Ax状态寄存器(UCAxSTATW)
- eUSCI_Ax中断标志寄存器(UCAxIFG)
- eUSCI_Ax中断向量寄存器(UCAxIV)
4波特率寄存器
- eUSCI_Ax波特率控制字寄存器(UCAxBRW)
- eUSCI_Ax自动波特率控制寄存器(UCAxABCTL)
5数据寄存器
- eUSCI_Ax接收缓存区寄存器(UCAxRXBUF)
- eUSCI_Ax发送缓存区寄存器(UCAxTXBUF)
常用波特率列表
- 300
- 600
- 1200
- 2400
- 4800
- 9600
- 19200
- 38400
- 43000
- 56000
- 57600
- 115200
MSP432中的UART
UART操作实例
程序功能:MSP432通过UART与PC通信。
描述:MSP432将通过串口收到的字符发回给PC,并在串口调试工具中显示出来。UART帧格式被配置为一个起始位,一个停止位,无校验位。使用的波特率为9600Baud。若使用UART0,P1.2与P1.3分别为接收端口与发送端口;若使用UART3,P9.6与P9.7分别为接收端口与发送端口。查看对应针脚可参阅官方手册表4-1。下面是MSP432通过UART0和UART3与PC通信:
UART0:UCA0RXD(P1.2),UCA0TXD(P1.3)
因为MSP432P401R串口0被跳帽接到仿真器上了,将跳帽取下来用杜邦线接到通信设备即可。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!