嵌入式系统原理与实践-第08章 通信外设
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
传输距离有限,最大传输距离标准值为50英尺,实际 上也只能 用在50米左右。
2019/6/7
12
UART
RS232简介--常用DB9引脚说明
9芯
信号方向来 缩写
描述
自
1
调制解调器 CD
载波检测
2
调制解调器 RXD
接收数据
3
PC
TXD
发送数据
4
PC
DTR
数据终端准
备好
5
GND
信号地
6
调制解调器 DSR
2019/6/7
6
UART
Universal Asynchronous Receiver and Transmitter
异步通信收发器
2019/6/7
7
UART
应用
串口是嵌入式系统与外界联系的重要手段,主要用于以 下两个方面:
UART直接和其他的控制器进行数据交换 UART和PC机通信:由于PC机串口是RS232电平,所以
2019/6/7
10
UART
RS232简介
RS232的全名是“数据终端设备(DTE)和数据通讯 设备(DCE)之间串行二进制数据交换接口技术标准”。 该标准规定采用一个25个脚的 DB25连接器,对连接器的 每个引脚的信号内容加以规定,还对各种信 号的电平加 以规定。
接口的信号内容 实际上RS-232-C的25条引线中有许 多是很少使用的,在计算机与终端通讯中一般只使用3-9 条引线。
1位 一般可选为1位或2位
8位数据、无校验、一位停止位的工作示例图
2019/6/7
15
UART
使用UART通信
使用UART通信需要两个引脚(将在下面的示例中用 到),如下表:
引脚名称 RxD TxD
类型 输入 输出
描述 串行输入,接收数据 串行输出,发送数据
2019/6/7
16
UART
通信设备准
备好
7
PC
RTS
请求发送
8
调制解调器 CTS
允许发送
9
调制解调器 RI
响铃提示器
2019/6/7
13
UART
UART工作原理
需选择一波特率作为发送(/接收)数据的时序,交互 双方的波特率必须一致。
UART的数据以帧为单位发送,一帧数据由以下几个部 分顺序组成:开始位、数据位(可选位数7位或8位)、 校验位(可选)、停止位(可选位数1位或2位)。通 信双方的可选部分的设置必须完全一致。
串行发送机TxMachine
TxMachine支持下面的工作特性: (1)奇偶校验位的生成 (2)清除发送 (3)中断字符发送 (4)双缓冲区操作
2019/6/7
17
UART
串行接收机RxMachine
RxMachine把接收到的串行数据送到接收移位寄存器,接收 完成后,数据送到串行接收缓冲寄存器(SxRBUF),用户从 SxRBUF中读取接收到的数据。
2019/6/7
29
SPI
Serial Peripheral Interface 串行外部设备接口
2019/6/7
30
SPI
应用
SPI总线系统是一种同步串行外设接口,允许MCU与各种外 围设备以串行方式进行通信、交换信息。例如: 简单的TTL移位寄存器(用作并行输入或输出口) LCD显示驱动器(主要用于静态显示) A/D转换器 Flash RAM 网络控制器 MCU
2019/6/7
4
数字通信系统概述
同步通信和异步通信
异步通信:处理器之间不使用公共的参考时钟,通信 双方分别有自己的时钟源,但必须使用相同的波特率。 例如UART就是属于串行异步通信。
同步通信:由主机提供时钟与数据,从机使用该时钟 接收数据或发送数据,即通信双方公用时钟源。例如: SPI和I2C就属于串行同步通信。
2019/6/7
26
UART
操作实例
int main(void) { MAP_WDT_A_holdTimer(); //GPIO 配置 MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1, GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION); //配置DCO 频率 CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_12); //配置UART MAP_UART_initModule(EUSCI_A0_BASE, &uartConfig); MAP_UART_enableModule(EUSCI_A0_BASE);
2019/6/7
25
UART
操作实例
程序功能:MSP432 通过UART 与PC 通信。 //UART 配置结构体 const eUSCI_UART_Config uartConfig = { EUSCI_A_UART_CLOCKSOURCE_SMCLK, //时钟源 78, //BRDIV = 78 2, //UCxBRF = 2 0, //UCxBRS = 0 EUSCI_A_UART_NO_PARITY, //无校验 EUSCI_A_UART_LSB_FIRST, EUSCI_A_UART_ONE_STOP_BIT, //一个停止位 EUSCI_A_UART_MODE, //UART模式 EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION };
2019/6/7
3
数字通信系统概述
串行通信和并行通信
串行通信:将数据一位一位地由端口送出或接收进来
并行通信:数据的各个数据位(一般为8 位及其整数倍) 在多条数据线上同时被传输
并行通信的传输速度快、效率高,但抗干扰能力差,且需 要的资源多,一般用于短距离、高带宽的大数据量传输
串行通信节省传输线,但数据传送效率没有并行通信高
2019/6/7
23
UART
初始化配置
时钟配置——时钟源、时钟频率等 GPIO配置——TXD、RXD UART配置——数据帧格式、波特率等 中断配置
2019/6/7
24
UART
操作实例
程序功能:MSP432 通过UART 与PC 通信。
描述:MSP432 将通过串口收到的字符发回给PC,并在 串口调试工具中显示出来。UART 帧格式被配置为一个 起始位,一个停止位,无校验位。P1.2 与P1.3 分别为 接收端口与发送端口。使用的波特率为9600Baud。
嵌入式系统
2019/6/7
——嵌入式系统的I/O模块
华东师范大学计算机系 沈建华
1
数字通信系统概述
2019/6/7
2
数字通信系统概述
组成
发送器:处理要发送的信息,将其构造成一定格式的帧。
接收器:接收信息并解析信息。
通信介质:发送器和接收器之间的桥梁,为信息提供物 理介质,通常为双绞线、光纤或无线射频。
当MCU片内功能或存储器不能满足需要时,可用SPI与各种 外围器件相连以扩展I/O功能。
2019/6/7
31
SPI
SPI简介
SPI是一种全双工的同步串行接口,利用3条线完成两个芯
片之间的双工高速通信。两条数据线用于收发数据,一条时钟线 用于同步。
一个SPI总线可以连接多个主机和多个从机。在同一时刻 只允许一个主机操作总线,并且同时只能与一个从机通信。主机 控制数据的传输过程。
9芯信号方向来自缩写描述1调制解调器cd载波检测2调制解调器rxd接收数据3pctxd发送数据4pcdtr数据终端准备好5gnd信号地6调制解调器dsr通信设备准备好7pcrts请求发送8调制解调器cts允许发送9调制解调器ri响铃提示器201961013uart?rs232简介常用db9引脚说明201961014uart?uart工作原理?需选择一波特率作为发送接收数据的时序交互双方的波特率必须一致
2019/6/7
21
UART
MSP432中的UART
当MSP432 要发送数据时,发送缓冲器中要发送的值装入发送移位 寄存器中,再一位一位地从发送端口UCAxTXD 中发送出去。
2019/6/7
22
UART
MSP432中的UART
当MSP432 接收数据时,数据从UCAxRXD 一位一位送入接收移位 寄存器,然后装入接收缓冲寄存器中。接收端在接收数据时可以实 现错误检测、解码、侦听等功能。
数据成功的发送和接收,都有专门的中断和状态位来 指出,例如,接收到一帧数据,如果相应的中断开启, 那么进入中断处理程序读出数据,如果未开启,则可 以通过循环查看接收状态位来确定数否收到数据。
2019/6/7
14
UART
帧结构图
起始位 数据区(由低到高) 校验位 停止位
1位 一般为7位或8位
2019/6/7
5
数字通信系统概述
单工、半双工和全双工
单工通信:通信双方在任何时刻都只能进行单向的数 据传输,即一方固定为发送器;另一方固定为接收器
半双工通信:通信双方可以双向传输信息,但在同一 时刻,信息只能单向传输
全双工通信:任何时刻通信双方都可以同时进行信息 收发、实现同时双向信息传输
波特率的计算
一般填入波特率寄存器中的值都是通过如下的公式 求出来:
UART_BR = MCLK / (BaudRate×N)
注意:N为波特率因子,大多数芯片取N=16
有些芯片波特率计算精度较高,它们有两个波特率 寄存器UART_BR1和UART_BR2,其中UART_BR1用 来存放上式计算出来的整数部分,而UART_BR2则用 来存放上式计算出来的小数部分,这样计算出来的波 特率就更精确,误差更小。
串行接收机在接收过程中能够检测出以下3种错误条件: (1)奇偶校验错:检测到奇偶校验错时,奇偶错标志位被置位。 (2)帧错误:未收到停止位时,帧错误标志位被置位 (3)超越错误:当接收到一个新的字符前,以前收到的字符没有 被CPU读走,旧的数据被覆盖,那么超越错误标志位被置位
2019/6/7
18
UART
连接时需要使用RS232转换器
2019/6/7
8
UART
TxD
片内 UART Rx
RS232
RxD 电平转换
2019/6/7
TxD
RxD
其它
通信设备
TxD
RxD PC机串口
9
UART
相关概念
RS232:是美国电子工业协会(EIA)制定的串行通讯标 准,又称RS-232-C 。RS232是一个全双工的通讯标 准,它可以同时进行数据接收和发送的工作。
2019/6/7
11
UART
RS232简介
接口的电气特性 在RS-232-C中任何一条信号线的电压 均为负逻辑关系。即:逻 辑“1”,-5— -15V;逻辑 “0” +5— +15V 。噪声容限为2V。即 要求接收器能 识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作
为逻辑“1” 。
2019/6/7
27
UART
操作实例
//使能中断 MAP_UART_enableInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_I NTERRUPT); MAP_Interrupt_enableInterrupt(INT_EUSCIA0); MAP_Interrupt_enableSleepOnIsrExit(); MAP_Interrupt_enableMaster(); while(1) { MAP_PCM_gotoLPM0();//进入LPM0 } }
2019/6/7
19
UART
常用波特率列表
300 600 1200 2400 4800 9600 19200 38400
43000 56000 57600 115200
2019/6/7
20
UART
MSP432中的UART
MSP432 上包含了8 个兼容不同通信协议的模块—4 个 eUSCI_A 和4 个eUSCI_B。其中,eUSCI_A 兼容UART、SPI。 eUSCI_B 兼容I2C、SPI。在同一个模块固件下,一个模块可以支持 多路串行通信。
2019/6/7
28
UART
操作实例
//UART 中断处理程序 void EUSCIA0_IRQHandler(void) {uint32_t status = MAP_UART_getEnabledInterruptStatus(EUSCI_A0_BASE); MAP_UART_clearInterruptFlag(EUSCI_A0_BASE,status);//清除中断标志 if(status & EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG) { //发送接收到的数据 MAP_UART_transmitData(EUSCI_A0_BASE,MAP_UART_receiveData(EUSCI _A0_BASE)); } }
串行时钟由主机产生,当主机发送一字节数据(通过主出从 入MOSI引脚)的同时,从机返回一字节数据(通过主入从出 MISO引脚)。
2019/6/7
12
UART
RS232简介--常用DB9引脚说明
9芯
信号方向来 缩写
描述
自
1
调制解调器 CD
载波检测
2
调制解调器 RXD
接收数据
3
PC
TXD
发送数据
4
PC
DTR
数据终端准
备好
5
GND
信号地
6
调制解调器 DSR
2019/6/7
6
UART
Universal Asynchronous Receiver and Transmitter
异步通信收发器
2019/6/7
7
UART
应用
串口是嵌入式系统与外界联系的重要手段,主要用于以 下两个方面:
UART直接和其他的控制器进行数据交换 UART和PC机通信:由于PC机串口是RS232电平,所以
2019/6/7
10
UART
RS232简介
RS232的全名是“数据终端设备(DTE)和数据通讯 设备(DCE)之间串行二进制数据交换接口技术标准”。 该标准规定采用一个25个脚的 DB25连接器,对连接器的 每个引脚的信号内容加以规定,还对各种信 号的电平加 以规定。
接口的信号内容 实际上RS-232-C的25条引线中有许 多是很少使用的,在计算机与终端通讯中一般只使用3-9 条引线。
1位 一般可选为1位或2位
8位数据、无校验、一位停止位的工作示例图
2019/6/7
15
UART
使用UART通信
使用UART通信需要两个引脚(将在下面的示例中用 到),如下表:
引脚名称 RxD TxD
类型 输入 输出
描述 串行输入,接收数据 串行输出,发送数据
2019/6/7
16
UART
通信设备准
备好
7
PC
RTS
请求发送
8
调制解调器 CTS
允许发送
9
调制解调器 RI
响铃提示器
2019/6/7
13
UART
UART工作原理
需选择一波特率作为发送(/接收)数据的时序,交互 双方的波特率必须一致。
UART的数据以帧为单位发送,一帧数据由以下几个部 分顺序组成:开始位、数据位(可选位数7位或8位)、 校验位(可选)、停止位(可选位数1位或2位)。通 信双方的可选部分的设置必须完全一致。
串行发送机TxMachine
TxMachine支持下面的工作特性: (1)奇偶校验位的生成 (2)清除发送 (3)中断字符发送 (4)双缓冲区操作
2019/6/7
17
UART
串行接收机RxMachine
RxMachine把接收到的串行数据送到接收移位寄存器,接收 完成后,数据送到串行接收缓冲寄存器(SxRBUF),用户从 SxRBUF中读取接收到的数据。
2019/6/7
29
SPI
Serial Peripheral Interface 串行外部设备接口
2019/6/7
30
SPI
应用
SPI总线系统是一种同步串行外设接口,允许MCU与各种外 围设备以串行方式进行通信、交换信息。例如: 简单的TTL移位寄存器(用作并行输入或输出口) LCD显示驱动器(主要用于静态显示) A/D转换器 Flash RAM 网络控制器 MCU
2019/6/7
4
数字通信系统概述
同步通信和异步通信
异步通信:处理器之间不使用公共的参考时钟,通信 双方分别有自己的时钟源,但必须使用相同的波特率。 例如UART就是属于串行异步通信。
同步通信:由主机提供时钟与数据,从机使用该时钟 接收数据或发送数据,即通信双方公用时钟源。例如: SPI和I2C就属于串行同步通信。
2019/6/7
26
UART
操作实例
int main(void) { MAP_WDT_A_holdTimer(); //GPIO 配置 MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1, GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION); //配置DCO 频率 CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_12); //配置UART MAP_UART_initModule(EUSCI_A0_BASE, &uartConfig); MAP_UART_enableModule(EUSCI_A0_BASE);
2019/6/7
25
UART
操作实例
程序功能:MSP432 通过UART 与PC 通信。 //UART 配置结构体 const eUSCI_UART_Config uartConfig = { EUSCI_A_UART_CLOCKSOURCE_SMCLK, //时钟源 78, //BRDIV = 78 2, //UCxBRF = 2 0, //UCxBRS = 0 EUSCI_A_UART_NO_PARITY, //无校验 EUSCI_A_UART_LSB_FIRST, EUSCI_A_UART_ONE_STOP_BIT, //一个停止位 EUSCI_A_UART_MODE, //UART模式 EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION };
2019/6/7
3
数字通信系统概述
串行通信和并行通信
串行通信:将数据一位一位地由端口送出或接收进来
并行通信:数据的各个数据位(一般为8 位及其整数倍) 在多条数据线上同时被传输
并行通信的传输速度快、效率高,但抗干扰能力差,且需 要的资源多,一般用于短距离、高带宽的大数据量传输
串行通信节省传输线,但数据传送效率没有并行通信高
2019/6/7
23
UART
初始化配置
时钟配置——时钟源、时钟频率等 GPIO配置——TXD、RXD UART配置——数据帧格式、波特率等 中断配置
2019/6/7
24
UART
操作实例
程序功能:MSP432 通过UART 与PC 通信。
描述:MSP432 将通过串口收到的字符发回给PC,并在 串口调试工具中显示出来。UART 帧格式被配置为一个 起始位,一个停止位,无校验位。P1.2 与P1.3 分别为 接收端口与发送端口。使用的波特率为9600Baud。
嵌入式系统
2019/6/7
——嵌入式系统的I/O模块
华东师范大学计算机系 沈建华
1
数字通信系统概述
2019/6/7
2
数字通信系统概述
组成
发送器:处理要发送的信息,将其构造成一定格式的帧。
接收器:接收信息并解析信息。
通信介质:发送器和接收器之间的桥梁,为信息提供物 理介质,通常为双绞线、光纤或无线射频。
当MCU片内功能或存储器不能满足需要时,可用SPI与各种 外围器件相连以扩展I/O功能。
2019/6/7
31
SPI
SPI简介
SPI是一种全双工的同步串行接口,利用3条线完成两个芯
片之间的双工高速通信。两条数据线用于收发数据,一条时钟线 用于同步。
一个SPI总线可以连接多个主机和多个从机。在同一时刻 只允许一个主机操作总线,并且同时只能与一个从机通信。主机 控制数据的传输过程。
9芯信号方向来自缩写描述1调制解调器cd载波检测2调制解调器rxd接收数据3pctxd发送数据4pcdtr数据终端准备好5gnd信号地6调制解调器dsr通信设备准备好7pcrts请求发送8调制解调器cts允许发送9调制解调器ri响铃提示器201961013uart?rs232简介常用db9引脚说明201961014uart?uart工作原理?需选择一波特率作为发送接收数据的时序交互双方的波特率必须一致
2019/6/7
21
UART
MSP432中的UART
当MSP432 要发送数据时,发送缓冲器中要发送的值装入发送移位 寄存器中,再一位一位地从发送端口UCAxTXD 中发送出去。
2019/6/7
22
UART
MSP432中的UART
当MSP432 接收数据时,数据从UCAxRXD 一位一位送入接收移位 寄存器,然后装入接收缓冲寄存器中。接收端在接收数据时可以实 现错误检测、解码、侦听等功能。
数据成功的发送和接收,都有专门的中断和状态位来 指出,例如,接收到一帧数据,如果相应的中断开启, 那么进入中断处理程序读出数据,如果未开启,则可 以通过循环查看接收状态位来确定数否收到数据。
2019/6/7
14
UART
帧结构图
起始位 数据区(由低到高) 校验位 停止位
1位 一般为7位或8位
2019/6/7
5
数字通信系统概述
单工、半双工和全双工
单工通信:通信双方在任何时刻都只能进行单向的数 据传输,即一方固定为发送器;另一方固定为接收器
半双工通信:通信双方可以双向传输信息,但在同一 时刻,信息只能单向传输
全双工通信:任何时刻通信双方都可以同时进行信息 收发、实现同时双向信息传输
波特率的计算
一般填入波特率寄存器中的值都是通过如下的公式 求出来:
UART_BR = MCLK / (BaudRate×N)
注意:N为波特率因子,大多数芯片取N=16
有些芯片波特率计算精度较高,它们有两个波特率 寄存器UART_BR1和UART_BR2,其中UART_BR1用 来存放上式计算出来的整数部分,而UART_BR2则用 来存放上式计算出来的小数部分,这样计算出来的波 特率就更精确,误差更小。
串行接收机在接收过程中能够检测出以下3种错误条件: (1)奇偶校验错:检测到奇偶校验错时,奇偶错标志位被置位。 (2)帧错误:未收到停止位时,帧错误标志位被置位 (3)超越错误:当接收到一个新的字符前,以前收到的字符没有 被CPU读走,旧的数据被覆盖,那么超越错误标志位被置位
2019/6/7
18
UART
连接时需要使用RS232转换器
2019/6/7
8
UART
TxD
片内 UART Rx
RS232
RxD 电平转换
2019/6/7
TxD
RxD
其它
通信设备
TxD
RxD PC机串口
9
UART
相关概念
RS232:是美国电子工业协会(EIA)制定的串行通讯标 准,又称RS-232-C 。RS232是一个全双工的通讯标 准,它可以同时进行数据接收和发送的工作。
2019/6/7
11
UART
RS232简介
接口的电气特性 在RS-232-C中任何一条信号线的电压 均为负逻辑关系。即:逻 辑“1”,-5— -15V;逻辑 “0” +5— +15V 。噪声容限为2V。即 要求接收器能 识别低至+3V的信号作为逻辑“0”,高到-3V的信号 作
为逻辑“1” 。
2019/6/7
27
UART
操作实例
//使能中断 MAP_UART_enableInterrupt(EUSCI_A0_BASE,EUSCI_A_UART_RECEIVE_I NTERRUPT); MAP_Interrupt_enableInterrupt(INT_EUSCIA0); MAP_Interrupt_enableSleepOnIsrExit(); MAP_Interrupt_enableMaster(); while(1) { MAP_PCM_gotoLPM0();//进入LPM0 } }
2019/6/7
19
UART
常用波特率列表
300 600 1200 2400 4800 9600 19200 38400
43000 56000 57600 115200
2019/6/7
20
UART
MSP432中的UART
MSP432 上包含了8 个兼容不同通信协议的模块—4 个 eUSCI_A 和4 个eUSCI_B。其中,eUSCI_A 兼容UART、SPI。 eUSCI_B 兼容I2C、SPI。在同一个模块固件下,一个模块可以支持 多路串行通信。
2019/6/7
28
UART
操作实例
//UART 中断处理程序 void EUSCIA0_IRQHandler(void) {uint32_t status = MAP_UART_getEnabledInterruptStatus(EUSCI_A0_BASE); MAP_UART_clearInterruptFlag(EUSCI_A0_BASE,status);//清除中断标志 if(status & EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG) { //发送接收到的数据 MAP_UART_transmitData(EUSCI_A0_BASE,MAP_UART_receiveData(EUSCI _A0_BASE)); } }
串行时钟由主机产生,当主机发送一字节数据(通过主出从 入MOSI引脚)的同时,从机返回一字节数据(通过主入从出 MISO引脚)。