一、通信基本概念
通信:嵌入式系统中的通信是指两个或两个以上的主机之间的数据交互。
时钟线:是一个固定的节拍,协同不同主机间的工作节奏。
异步、同步:异步无时钟线,同步有时钟线。
串行、并行:串行通过一根数据线传输数据,并行通过多根数据线传输数据。
- 串行优势:引脚占用资源少。
- 并行优势:通信速率快。eg:AHB总线,32根数据线,32根地址总线,若干控制总线。
单工、半双工、全双工:数据收发方向的不同。
- 单工:数据接收方和数据发送方是固定的,数据传输是通过一根数据线实现,数据传输的方向是单一的。
- 半双工:通信双方既可以作为数据发送方也可以作为数据接收方(接收方和发送方不固定),数据传输是通过一根数据线实现,数据传输的方向可以是双向的(但同一时刻数据传输呈现单一性)。
- 全双工:通信双方既可以作为数据发送方也可以作为数据接收方,数据传输是通过两根数据线实现,任意时刻数据传输方向是双向的。
串口通信格式:115200 N 8 1
- 波特率:115200,每秒可发送的比特数
- 校验方式:N,无校验;O,奇校验;E,偶校验。
- 数据位:8个比特的数据位
- 停止位:1个
电器标准:规定高低电平的认定标准。
- TTL:晶体管跟晶体管间电平,指芯片引脚产生的电压。高电平5V,低电平0V。
- RS232:负逻辑,全双工通信。高电平-3V~-15V,低电平3V~15V。
上面两种电平标准的传输距离都比较有限,因为导线在传输中有电阻会衰减电压,干扰传输数据。
- RS485:差分信号,半双工通信。用两根数据线的电压差表示高低电平。抗干扰能力极强。
二、硬件
UART:异步、串行、全双工的通信方式。
- UART1_RXD:数据接收线
- UART1_TXD:数据发送线
1. UART_CLK_ROOT
UART时钟根默认80MHz,预分频: 1分频。
2.引脚初始化
数据接收线和数据发送线都要配置复用功能和电器属性。
IOMUXC_SetPinMux(IOMUXC_UART1_TX_DATA_UART1_TX, 0); IOMUXC_SetPinConfig(IOMUXC_UART1_TX_DATA_UART1_TX,0x10B0); IOMUXC_SetPinMux(IOMUXC_UART1_RX_DATA_UART1_RX, 0); IOMUXC_SetPinConfig(IOMUXC_UART1_RX_DATA_UART1_RX,0x10B0);3.存储寄存器
1).收发的数据存储寄存器:
UART1->URXD: 只读寄存器,b0-7: 保存接收到的字符。
UART1->UTXD:b0-7:需要发送的数据。
UART1->USR2:
- b3:发送完成标志位。
- b0:接收数据就绪位。
2).UART1初始化寄存器:
UART1->UCR1:b0,整个UART(通用异步收发传输器)模块的总开关。
UART1->UCR2:
- b14:置1忽略RTS引脚流控(轮询模式)
- b8:置0表示无校验使能,置1表示奇偶校验使能;
- b6:停止位数量。0表示1位,1表示2位;
- b5:字长(数据位宽度)。1表示8位模式,0表示7位模式;
- b2:置1发送器使能;
- b1:置1接收器使能;
- b0:软件复位,软件复位将保持有效 4 个模块时钟周期;
UART1->UCR3:b2,UART工作于多路复用 (MUXED) 模式,此位应始终设置为1。
UART1->UFCR:b7-b9,设置模块时钟的分频值,0x101表示1分频
3).波特率配置寄存器
UART1->UBIR:b0-b15,UBIR;
UART1->UBMR:b0-b15,UBMR;
波特率配置:
- RefFreq:模块时钟频率,80M
- BaudRate:目标比特率,115200M
- 令UBIR+1=1000,则UBIR=999,UBMR=43402
注意:先改变UBIR,后改变UBMR。