跳转至

UART

功能介绍

系芯片有两路UART:UART0 - UART1。UART模块的主要特征如下:

  • 独立的发送FIFO和接收FIFO
  • 波特率可编程,支持DMA接口
  • 支持标准的UART协议
  • 开始bit错误检测
  • 支持奇偶校验
  • 数据帧可以配置为5,6,7,8bits
  • stop位可配置为1bit,1.5bit,2bit
  • 支持Timeout中断机制,且Timeout大小可配置
  • FIFO大小为64 * 8 bit,支持FIFO上溢出下溢出错误检测
  • 支持FIFO空满中断和传输错误中断
  • 最高可达3M波特率

寄存器映射

UART0 / 1 寄存器映射的基地址分别为0x40022000,0x40023000,详细的寄存器映射见表U-1。

表U-1 UART寄存器映射

偏移量 名称 位宽 类型 复位值 描述
0x00 UART_RdD_R 32 RO 0x00000000 读数据寄存器
0x04 UART_WrD_R 32 WO 0x00000000 写数据寄存器
0x08 UART_Rx_Er_R 32 R/W 0x00000000 接收错误标志寄存器
0x0C UART_Flag_R 32 RO 0x0000034F 标志寄存器
0x10 UART_I_BRD 32 R/W 0x00000000 波特率分频计数器整数部分寄存器
0x14 UART_F_BRD 32 R/W 0x00000000 波特率分频计数器小数部分寄存器
0x18 UART_LCR 32 RO 0x00000000 线性控制寄存器
0x1C UART_CR 32 RO 0x00000300 控制寄存器
0x20 UART_FLS 32 R/W 0x00000012 FIFO触发深度配置寄存器
0x24 UART_Mask_Int 32 R/W 0x00000FFF 中断屏蔽寄存器
0x28 UART_RIS 32 RO 0x00000020 原始的中断状态寄存器
0x2C UART_MIS 32 RO 0x00000000 屏蔽后的中断状态寄存器
0x30 UART_ICR 32 WO 0x00000000 中断清零寄存器
0x34 UART_DMA_CR 32 R/W 0x00000000 DMA控制寄存器
0x38 UART_TIMEOUT_R 32 R/W 0x00000020 接收时延寄存器
0x50 UART_DMA_BYTE_EN 32 R/W 0x00000000 DMA模式支持byte传输

读数据寄存器(UART_RdD_R)

偏移量:0x00

复位值:0x00000000

位域 名称 复位值 类型 描述
31:8 Reserved 0x000000 R 保留
7:0 DATA 0x00 R 读数据

写数据寄存器(UART_WrD_R)

偏移量:0x04

复位值:0x00000000

位域 名称 复位值 类型 描述
31:0 WDATA 0x00000000 W 32位写数据

接收错误标志寄存器(UART_Rx_Er_R)

偏移量:0x08

复位值:0x00000000

位域 名称 复位值 类型 描述
31:4 Reserved 0x00000000 R/W 保留
3 OE 0 R/W Overrun错误标志
2 BE 0 R/W Break错误标志
1 PE 0 R/W 奇偶校验错误标志
0 FE 0 R/W 传输Frame错误标志

标志寄存器(UART_Flag_R)

偏移量:0x0C

复位值:0x0000034F

位域 名称 复位值 类型 描述
31:11 Reserved 0x00000 R 保留
10 Error Data Flag(EDF) 0 R 为1时表示当前FIFO中错误数据还没有被读出,CPU应继续出RXFIFO中的数据
9 End of current trans(EOC) 1 R 完成当前传输的标志信号
8 Transmit FIFO Empty (TXFE) 1 R 发送FIFO空标志位
7 Transmit FIFO Full(TXFF) 0 R 发送FIFO满标志位
6 Receive FIFO Empty(RXFE) 1 R 接收FIFO空标志位
5 Receive FIFO Full(RXFF) 0 R 接收FIFO满标志位
4 UART Busy(BUSY) 0 R UART忙标志,当TXFIFO不空时该信号为1
3:1 Reversed - R 保留
0 Clear To Send(CTS) 1 R 当外部modem的CTS信号有效时,该bit位为1

波特率分频计数器整数部分寄存器(UART_I_BRD)

偏移量:0x10

复位值:0x00000000

位域 名称 复位值 类型 描述
31:0 Baud Rate Integer 0x00000000 R/W 波特率分频寄存器整数部分

波特率分频计数器小数部分寄存器(UART_F_BRD)

偏移量:0x14

复位值:0x00000000

位域 名称 复位值 类型 描述
31:6 Reserved 0x0000000 R/W 保留
5:0 Baud Rate Integer 0x00 R/W 波特率分频寄存器小数部分

线性控制寄存器(UART_LCR)

偏移量:0x18

复位值:0x00000000

位域 名称 复位值 类型 描述
31:6 Reserved 0x000000 R/W 保留
8 Byte_select(BS) 0 R/W 向给bit写1,表示APB和AHB以byte方式向TXFIFO发送数据。为0时表示以word的方式向TXFIFO发送数据。
7 Stick Parity Select (SPS) 0 R/W 固定奇偶校验位
6:5 Word length [1:0] (WLEN) 0x0 R/W 每帧中有效数据的个数
00=5bit
01=6bit
10=7bit
11=8bit
4 FIFOs Clear (FIFO_CLR) 0 R/W 向该bit写1,FIFO将清零。
3:2 Two Stop Bits Select (STP) 0x0 R/W 停止位的个数
00=1bit
01=1.5bit
10=2bit
11=reserved
1 Even Parity Select (EPS) 0 R/W 偶校验选择,为1时为偶校验,为0时为奇校验
0 Parity Enable (PEN) 0 R/W 奇偶检验enable信号

控制寄存器(UART_CR)

偏移量:0x1C

复位值:0x00000300

位域 名称 复位值 类型 描述
31:16 Reserved 0x0000 R/W 保留
15 CTS Hardware Flow Control Enable (CTSEn) 0 R/W 该bit位写1,由硬件判断CTS信号:采样到CTS有效则继续向外发送数据。
14 RTS Hardware Flow Control Enable (RTSEn) 0 R/W 该bit位写1,由硬件产生RTS信号,当RXFIFO没有达到域值时RTS信号就一直有效,请求外部继续发送数据。
13 Out2 0 R/W 当该bit写1时,在输出端口nUARTOUT2上输出0。在用作modem时,该端口可作为响铃信号RI
12 Out1 0 R/W 当该bit写1时,在输出端口nUARTOUT1上输出0。在用作modem时,该端口可作为数据载波检测信号DCD
11 Request to Send (RTS) 0 R/W 该位是UART请求发送(nUARTRTS)调制解调器状态输出的补充。当该位编程为1时,输出为0
10 Data Transmit Ready (DTR) 0 R/W 该位是UART数据传输就绪(nUARTDTR)调制解调器状态输出的补充。当该位编程为1时,输出为0
9 Receive Enable (RXE) 1 R/W 当该bit位写1,表示允许接收,如果在一帧传输的中间disable,要先完成当前的传输然后再停止接收
8 Transmit Enable (TXE) 1 R/W 当该bit位写1,表示允许发送,如果在一帧传输的中间disable,要先完成当前的传输然后再停止发送
7:2 Reversed 0 R/W 保留
1 Don’t care error data(NCED) 0 R/W 该bit位写1时,不管RXFIFO是否有错误数据(奇偶校验错误、帧错误、break错误和overrun错误),只要RXFIFO达到域值就发送DMA请求或CPU接收中断。
0 UART Enable(UARTEN) 0 R/W UART enable信号。当该bit写1时,表示enabled。如果在一次传输的中间disable UART,要等当前传输完成后,UART才停止工作。

FIFO触发深度配置寄存器(UART_FLS)

偏移量:0x20

复位值:0x00000012

位域 名称 复位值 类型 描述
31:6 Reserved 0x000000 R/W 保留
5:3 Receive Interrupt FIFO Level Select (RXIFLSEL) 0x2 R/W 接收FIFO触发深度选择
000 = Receive FIFO becomes >= ⅛ full
001 = Receive FIFO becomes >= ¼ full
010 = Receive FIFO becomes >= ½ full
011 = Receive FIFO becomes >= ¾ full
100 = Receive FIFO becomes >= ⅞ full
101 = Receive FIFO 中只要有>=1个byte数据就触发
110 = Receive FIFO 中只要有>=2个byte数据就触发
111 = reserved.
2:0 Transmit Interrupt FIFO Level Select (TXIFLSEL) 0x2 R/W 发送FIFO触发深度选择
000 = Transmit FIFO becomes < ⅛ full(有大于⅞的空间为空)
001 = Transmit FIFO becomes < ¼ full(有大于¾的空间为空)
010 = Transmit FIFO becomes < ½ full(有大于½的空间为空)
011 = Transmit FIFO becomes < ¾ full(有大于¼的空间为空)
100 = Transmit FIFO becomes < ⅞ full(有大于⅛的空间为空)
101:111 = reserved.

中断屏蔽寄存器(UART_Mask_Int)

偏移量:0x24

复位值:0x00000FFF

位域 名称 复位值 类型 描述
31:12 Reserved 0x00000 R/W 保留
11 Error data interrupt Mask (EDIM) 1 R/W 该bit写1表示屏蔽Error Data Interrupt
10 Overrun Error Interrupt Mask (OEIM) 1 R/W 该bit写1表示屏蔽Overrun Error Interrupt
9 Break Error Interrupt Mask (BEIM) 1 R/W 该bit写1表示屏蔽Break Error Interrupt
8 Parity Error Interrupt Mask (PEIM) 1 R/W 该bit写1表示屏蔽Parity Error Interrupt
7 Framing Error Interrupt Mask (FEIM) 1 R/W 该bit写1表示屏蔽Framing Error Interrupt
6 Receive Timeout Interrupt Mask (RTIM) 1 R/W 该bit写1表示屏蔽Receive Timeout Interrupt
5 Transmit Interrupt Mask (TXIM) 1 R/W 该bit写1表示屏蔽Transmit Interrupt
4 Receive Interrupt Mask (RXIM) 1 R/W 该bit写1表示屏蔽Receive Interrupt
3:2 Reversed 0x3 R/W 保留
1 nUARTCTS Modem Interrupt Mask (CTSMIM) 1 R/W 该bit写1表示屏蔽nUARTCTS Modem Interrupt
0 nUARTRI Modem Interrupt Mask (RIMIM) 1 R/W 该bit写1表示屏蔽nUARTRI Modem Interrupt

原始的中断状态寄存器(UART_RIS)

偏移量:0x28

复位值:0x00000020

位域 名称 复位值 类型 描述
31:12 Reserved 0x00000 R/W 保留
11 Error data interrupt Status(EDRIS) 0 R/W 原始的Error Data Interrupt状态
10 Overrun Error Interrupt Status (OERIS) 0 R/W 原始的Overrun Error Interrupt状态
9 Break Error Interrupt Status (BERIS) 0 R/W 原始的Break Error Interrupt状态
8 Parity Error Interrupt Status (PERIS) 0 R/W 原始的Parity Error Interrupt状态
7 Framing Error Interrupt Status (FERIS) 0 R/W 原始的Framing Error Interrupt状态
6 Receive Timeout Interrupt Status (RTRIS) 0 R/W 原始的Receive Timeout Interrupt状态
5 Transmit Interrupt Status (TXRIS) 1 R/W 原始的Transmit Interrupt状态
4 Receive Interrupt Status (RXRIS) 0 R/W 原始的Receive Interrupt状态
3 nUARTDSR Modem Interrupt Status (DSRRMIS) 0 R/W 原始的nUARTDSR Modem Interrupt状态
2 nUARTDCD Modem Interrupt Status (DCDRMIS) 0 R/W 原始的nUARTDCD Modem Interrupt状态
1 nUARTCTS Modem Interrupt Status (CTSRMIS) 0 R/W 原始的nUARTCTS Modem Interrupt状态
0 nUARTRI Modem Interrupt Status (RIRMIS) 0 R/W 原始的nUARTRI Modem Interrupt状态

屏蔽后的中断状态寄存器(UART_MIS)

偏移量:0x2C

复位值:0x00000000

位域 名称 复位值 类型 描述
31:12 Reserved 0x00000 R 保留
11 Error data Masked interrupt Status(EDMIS) 0 R 屏蔽后的Error Data Interrupt状态
10 Overrun Error Masked Interrupt Status (OEMIS) 0 R 屏蔽后的Overrun Error Interrupt状态
9 Break Error Masked Interrupt Status (BEMIS) 0 R 屏蔽后的Break Error Interrupt状态
8 Parity Error Masked Interrupt Status (PEMIS) 0 R 屏蔽后的Parity Error Interrupt状态
7 Framing Error Masked Interrupt Status (FEMIS) 0 R 屏蔽后的Framing Error Interrupt状态
6 Receive Timeout Masked Interrupt Status (RTMIS) 0 R 屏蔽后的Receive Timeout Interrupt状态
5 Transmit Masked Interrupt Status (TXMIS) 0 R 屏蔽后的Transmit Interrupt状态
4 Receive Masked Interrupt Status (RXMIS) 0 R 屏蔽后的Receive Interrupt状态
3 nUARTDSR Modem Masked Interrupt Status (DSRMMIS) 0 R 屏蔽后的nUARTDSR Modem Interrupt状态
2 nUARTDCD Modem Masked Interrupt Status (DCDMMIS) 0 R 屏蔽后的nUARTDCD Modem Interrupt状态
1 nUARTCTS Modem Masked Interrupt Status (CTSMMIS) 0 R 屏蔽后的nUARTCTS Modem Interrupt状态
0 nUARTRI Modem Masked Interrupt Status (RIMMIS) 0 R 屏蔽后的nUARTRI Modem Interrupt状态

中断清零寄存器(UART_ICR)

偏移量:0x30

复位值:0x00000000

位域 名称 复位值 类型 描述
31:12 Reserved 0x00000 W 保留
11 Error data interrupt Clear(EDIC) 0 W 向该bit写1清除Error Data Interrupt
10 Overrun Error Interrupt Clear (OEIC) 0 W 向该bit写1清除Overrun Error Interrupt
9 Break Error Interrupt Clear (BEIC) 0 W 向该bit写1清除Break Error Interrupt
8 Parity Error Interrupt Clear (PEIC) 0 W 向该bit写1清除Parity Error Interrupt
7 Framing Error Interrupt Clear (FEIC) 0 W 向该bit写1清除Framing Error Interrupt
6 Receive Timeout Interrupt Clear (RTIC) 0 W 向该bit写1清除Receive Timeout Interrupt
5 Transmit Interrupt Clear (TXIC) 0 W 向该bit写1清除Transmit Interrupt
4 Receive Interrupt Clear (RXIC) 0 W 向该bit写1清除Receive Interrupt
3 nUARTDSR Modem Interrupt Clear (DSRMIC) 0 W 向该bit写1清除nUARTDSR Modem Interrupt
2 nUARTDCD Modem Interrupt Clear (DCDMIC) 0 W 向该bit写1清除nUARTDCD Modem Interrupt
1 nUARTCTS Modem Interrupt Clear (CTSMIC) 0 W 向该bit写1清除nUARTCTS Modem Interrupt
0 nUARTRI Modem Interrupt Clear (RIMIC) 0 W 向该bit写1清除nUARTRI Modem Interrupt

DMA控制寄存器(UART_DMA_CR)

偏移量:0x34

复位值:0x00000000

位域 名称 复位值 类型 描述
31:12 Reserved 0x00000000 R/W 保留
1 Transmit DMA Enable (TXDMAE) 0 R/W 如果此位设置为1,则启用传输FIFO的DMA请求
0 Receive DMA Enable (RXDMAE) 0 R/W 如果此位设置为1,则启用接收FIFO的DMA请求

接收时延寄存器(UART_timeout_R)

偏移量:0x38

复位值:0x00000020

位域 名称 复位值 类型 描述
31:10 Reserved 0x000000 R/W 保留
9:0 Timeout size (TS) 0x020 R/W Timeout延时的大小寄存器,默认为32个波特bit的大小,最大支持1023个波特bit的大小

DMA传输模式控制寄存器(UART_DMA_BYTE_EN)

偏移量:0x50

复位值:0x00000000

位域 名称 复位值 类型 描述
31:1 Reserved 0x00000000 R/W 保留
0 EN 0x00 R/W 使用DMA模式传输时,使能支持最小传输单位为BYTE,否则最小单位为WORD