MSP432的串行通信

目录

  • 专栏
  • 数字通信基本知识
    • 组成
    • 串行通信和并行通信
    • 同步通信和异步通信
    • 异步串行通信的通用基础知识
  • 异步串行通信的格式
  • 串行通信的波特率
  • 奇偶校验
  • 串行通信传输方式术语
    • 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模块支持以下通信模式:

  1. UART通信模式;
  2. 具有脉冲整型的IrDA通信模式;
  3. 具有自动波特率检测的LIN通信模式;
  4. SPI通信模式。

USCI_B模块支持以下通信模式:

  1. IIC通信模式;
  2. 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的特点如下

  1. 传输7位或8位数据,可采用奇校验、偶校验或者无校验;
  2. 具有独立的发送和接收移位寄存器;
  3. 具有独立的发送和接收缓存寄存器;
  4. 支持最低位优先或最高位优先的数据发送和接收方式;
  5. 内置多处理器系统,包括线路空闲和地址位通信协议;
  6. 通过有效的起始位检测,将MSP432单片机从低功耗模式下唤醒;
  7. 可编程实现分频因子为整数或小数;
  8. 具有用于检测错误或排除错误的状态标志位;

UART运行机理

应用

串口是嵌入式系统与外界联系的重要手段,主要用于以下两个方面:

  • UART直接和其他的控制器进行数据交换
  • UART和PC机通信:由于PC机串口是RS232电平,所以连接时需要使用RS232转换器

使用UART通信

使用UART通信需要两个引脚(将在下面的示例中用到),如下表:

引脚名称 类型 描述
RXD 输入 串行输入,接收数据
TXD 输出 串行输出,发送数据

串行发送机TxMachine

TxMachine支持下面的工作特性:

  1. 奇偶校验位的生成
  2. 清除发送
  3. 中断字符发送
  4. 双缓存区操作

串行接收机RxMachine

RxMachine把接收到的串行数据送到接收移位寄存器,接收完成后,数据送到串行接收缓存寄存器(SxRBUF),用户从SxRBUF中读取接收到的数据。

串行接收机在接收过程中能够检测出以下三种错误条件:

  1. 奇偶校验错:检测到奇偶校验错时,奇偶错标志位被置位。
  2. 帧错误:未收到停止位时,帧错误标志位被置位。
  3. 超越错误:当接收到一个新的字符前,以前收到的字符没有被CPU读走,旧的数据被覆盖,那么超越错误标志位被置位。

波特率的计算

一般填入波特率寄存器中的值都是通过如下的公式求出来:

UART_BR = MCLK / (BaudRate * N)

注意:N为波特率因子,大多数芯片取N = 16

有些波特率计算精度较高,它们有两个波特率寄存器UART_BR1和UART_BR2,其中UART_BR1则用来存放上式计算出来的整数部分,而UART_BR2则用来存放上式计算出来的小数部分,这样计算出来的波特率就更精确,误差更小。

如果假设时钟源选择12MHz,如果要取UART2的9600波特率,那么如何计算

  1. N = 12000000/9600 = 1250
  2. 1 -> OS16 UCBR2 = INT(1250/16) = 78
  3. UCBRF2 = INT(N/ 6 – INT(N/16)) * 16 = INT(0.125 * 16) = 2
  4. 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进行处理,非常感谢!

上一篇 2021年6月21日
下一篇 2021年6月21日

相关推荐