云途芯片YTM32B1LE0x_RM文档串口部分翻译

说明

云途芯片原文档(YTM32B1LE0x_RM_v1.5)是全英文的,因为本人英语不好看不懂所以给他翻译了一下,当然只翻译了一下我需要用的的部分,即第十七章串口部分。同时因为本文英文不好所以本文使用了大量的AI翻译。

第十七章 通用串口(UART)

17.1 芯片特定的串口信息

17.1.1 实例化信息

UART模块支持基本的UART功能,包括DMA接口,并支持波特率的×4到×32过采样。

注:不同的过采样率意味着UART模块可以配置为在不同的过采样率下工作,从而适应不同的通信速度要求。例如,如果系统需要更高的数据传输速率,可以选择更高的过采样率来实现。这种灵活性使得UART模块可以用于多种不同的通信场景。

减小过采样的倍数可以产生更精确的波特率,但是减小过采样倍数后,由于采样次数的减少在输入数据发生抖动的时候会导致误码率的增加.

过采样率= 波特率​/信号的最高频率成分

  • 波特率是通信系统中每秒传输的符号数。
  • 信号的最高频率成分通常是指信号带宽的一半,根据奈奎斯特定理,这是为了避免混叠现象而需要的最小采样频率。

17.1.2 信号描述

表17.1:串口信号表

信号描述方向
TXD数据发送输出,在线路交换模式(半双工)下可以切换为数据输入IO
RXD接收数据输入,在线路交换模式下可以切换为数据输出IO

TXD(发送数据)引脚可以在某些模式下与 RXD(接收数据)引脚交换或RXD(接收数据)引脚可以在线路交换模式下与 TXD(发送数据)引脚交换功能,从而允许同一物理引脚既可以接收数据也可以发送数据。这种模式有时称为 “线路交换模式” 或 “双向通信模式”。在这种模式下,通信双方可以根据需要动态地改变引脚的数据方向,实现更灵活的通信方式。

17.1.3 时钟介绍

表 17.2:串口时钟表

时钟名称描述
APB Clock主设备和从设备寄存器访问的时钟
Function Clock主设备和从设备寄存器访问的时钟

17.1.4 电源模式

表17.3:串口电源模式表

电源模式描述
Active活动状态,全部的功能
Sleep当功能时钟可用时继续工作
Deepsleep当功能时钟可用时继续工作
Standby当功能时钟可用时继续工作

"当功能时钟可用时继续工作"指的是即使在低功耗或睡眠模式下,只要功能时钟(即模块正常工作所需的时钟信号)仍然可用,该设备或模块就可以继续执行其功能。

17.2 介绍

17.2.1 特性

UART模块的功能包括:

  • 支持LIN断裂检测

  • 发送/接收FIFO(数据缓存)

  • 支持通过DMA进行发送/接收

  • 设置波特率

  • 可配置的停止位大小, 1位/2位

  • 可变的帧大小,7位/8位/9位/10位

  • 可以设置数据发送和接收的电平极性

  • 接收数据匹配

  • 线路空闲或地址匹配与唤醒

  • 支持收发线路切换

17.2.2 框图

图17.1 串口框图
在这里插入图片描述

17.3 寄存器定义

17.3.1 串口内存映射

UART0 基址 4006a000h

UART1 基址 4006b000h

UART2 基址 4006c000h

表 17.4:串口地址映射

偏移寄存器宽度权限重置值/复位值
0h波特率配置寄存器(BAUD)32读写000F0004h
4h控制0寄存器(CTRL0)32读写00000000h
8h控制1寄存器(CTRL1)32读写10000000h
ch中断标志寄存器(INTF)32读写00000006h
10h中断使能寄存器(INTE)32读写00000000h
14h匹配配置寄存器(MATCH)32读写00000000h
18h数据缓冲寄存器(DATA)32读写00010000h
1chTX FIFO配置寄存器(TXFIFO)32读写81000000h
20hRX FIFO配置寄存器(RXFIFO)32读写81000000h
17.3.1.1 串口波特率(UART BAUD)寄存器

表 17.5: UART 波特率寄存器描述

位域功能
20-16
OSRVAL
过采样值配置(Over Sample Value)
过采样值配置,仅在模块禁用时支持更新。

00000b (0x00) - 过采样值为 16
00001b (0x01) - 保留
00010b (0x02) - 保留
00011b (0x03) - 过采样值为 4,需要设置 BOTHEDGE 位
00100b (0x04) - 过采样值为 5,需要设置 BOTHEDGE 位
00101b (0x05) - 过采样值为 6,需要设置 BOTHEDGE 位
00110b (0x06) - 过采样值为 7,需要设置 BOTHEDGE 位
00111b (0x07) - 过采样值为 8
其他过采样值为 OSRVAL + 1
12 - 0
DIV
时钟分频(Clock Divider)
功能时钟分频,用于生成采样波特率时钟。
0000000000000b (0x0000) - 保留
其他时钟分频值是 (功能时钟) / DIV
17.3.1.2 控制0寄存器(CTRL0)

在这里插入图片描述

表 17.5:串口控制0(UART CTRL0)寄存器描述

位域功能描述
29
TXDMAEN
TXDMAEN (29位): 发送数据DMA使能

* 0b - DMA请求禁用
* 1b - 当TX FIFO小于水印或缓冲区为空时,使能TX数据请求DMA
28
RXDMAEN
RXDMAEN (28位): 接收数据DMA使能

* 0b - DMA请求禁用
* 1b - 当RX FIFO大于水印或缓冲区满时,使能RX数据请求DMA
21
MATEN
MATEN (21位): 匹配使能

* 0b - UART数据匹配禁用
* 1b - 使能UART接收数据匹配逻辑
17-16
MATMOD
MATMOD (17-16位): 数据匹配模式

* 00b - 地址匹配唤醒
* 01b - 空闲匹配唤醒
* 10b - 匹配开和匹配关
* 11b - 保留
9-8
STDMODE
* STDMODE (9-8位): 待机模式选择

* 00b - 正常工作模式
* 01b - 待机工作模式,通过空闲线唤醒
* 11b - 待机工作模式,通过地址匹配唤醒
1
TXEN
TXEN (1位): 发送使能

* 0b - 发送逻辑禁用
* 1b - 发送逻辑使能
0
RXEN
RXEN (0位): 接收使能

* 0b - 接收逻辑禁用
* 1b - 接收逻辑使能
17.3.1.3 串口控制0(UART CTRL1)寄存器

在这里插入图片描述

表 17.7: UART CTRL1 寄存器描述

位域功能描述
31 - 30
FRAMESZ
帧大小
FRAMESZ (31-30位): 控制一帧传输中的位计数。

* 00b - 7位数据模式
* 01b - 8位数据模式
* 10b - 9位数据模式
* 11b - 10位数据模式
27
STOPSZ
停止位大小
STOPSZ (27位): 停止位大小选择。

* 0b - 1位停止位
* 1b - 2位停止位
24
TXINV
发送线路反转
STOPSZ (27位): 停止位大小选择。

* 0b - 1位停止位
* 1b - 2位停止位
23
RXINV
接收线路反转
RXINV (23位): 接收线路反转,改变数据、开始、停止、断开和空闲的极性。

* 0b - 接收数据线没有被反转
* 1b - 接收数据线被反转
21
SWAP
发送和接收线路交换
SWAP (21位): 发送和接收线路交换。

* 0b - 发送和接收线路在正常模式下
* 1b - 发送和接收线路交换,数据输入在发送线路,数据输出到接收线路
28 -16
IDLESZ
空闲大小
IDLESZ (18-16位): 空闲检测字节大小。

* 000b - 1个空闲字符
* 001b - 2个空闲字符
* 010b - 4个空闲字符
* 011b - 8个空闲字符
* 100b - 16个空闲字符
* 101b - 32个空闲字符
* 110b - 64个空闲字符
* 111b - 128个空闲字符
15
BOTHEDGE
双边沿采样
设置此位允许UART在波特率时钟的上升沿和下降沿采样数据。当BAUD[OSRVAL]小于7时需要设置此位,仅在接收逻辑被禁用时支持更新。
10
LBKDEN
LIN间隔段检测使能(LIN Break Detect Enable)
LBKDEN用于使能串口检测LIN间隔段,并且间隔段字符不会被存储在接收缓存(RX FIFO) 中。
0b - LIN 间隔段检测被禁用。
1b - LIN 间隔段检测被启用。
9
LBKSZ
LIN 间隔段检测大小(LIN Break Detection Size)
0b - 间隔段以 9 到 13 个位时间的长度传输。
1b - 点歌段以 12 到 15 个位时间的长度传输。
8
MSBF
最高位优先模式(MSB First Mode)
设置此位将改变后续数据传输的移位顺序。
0b - 在开始位之后,最低位(LSB)首先被移出。
1b - 在开始位之后,最高位(MSB)首先被移出。
6
SBK
发送间隔段(Send Break)
发送LIN断裂,当SBK位被设置时,UART将持续发送LIN断裂,直到SBK位被清除。
1
PAREN
奇偶校验使能(Parity Enable)
设置此位将在Rx和Tx上启用串口硬件奇偶校验位 检查/生成
0b - 硬件奇偶校验特性被禁用。在这种情况下,UART 在发送和接收数据时不会进行奇偶校验。
1b - 硬件奇偶校验特性在接收(RX)和发送(TX)上被启用。启用后,UART 将自动在发送的数据中添加适当的奇偶校验位,并在接收时检查数据的奇偶校验。
0
PARSEL
奇偶校验选择(Parity Selection)
当设置了PARSEL位有效时,PARSEL控制串口使用偶校验或奇校验来检查和生成。
0b - 偶校验。
1b - 奇校验。
17.3.1.4:串口中断标志(UART INTF)寄存器

在这里插入图片描述

表 17.8: 串口中断(UART INTF) 寄存器描述

位字段功能描述
17
RXBUSY
接收忙(RX Busy)
0b-接收线空闲并等待数据
1b-接收正在接收数据。
13
RFEIF
接收FIFO错误中断标志(RX FIFO Error Interrupt Flag)
0b - 未检测到接收FIFO下溢
1b - 检测到接收FIFO下溢
注:
当RX FIFO为空,且系统尝试读取它时,会发生下溢(underflow)。这是一个错误条件,表明试图访问的数据不存在,这可能是由于接收数据被过快地读取或FIFO本身没有正确填充。
12
TFEIF
发送FIFO错误中断标志(TX FIFO Error Interrupt Flag)
接收FIFO满时,向发送FIFO写入数据将会触发溢出,这将设置(置位)溢出中断标志
0b - 未检测到发送FIFO溢出;
1b - 检测到发送FIFO溢出。
11
LBKDIF
LIN间隔段检测中断标志(LIN Break Detected Interrupt Flag)
0b - 未检测到LIN断裂;
1b - 检测到LIN断裂。
10
RXEDGEIF
接收边沿检测中断标志(Receive Edge Detected Interrupt Flag)
0b - 未检测到UART接收活动边沿;
1b - 检测到UART接收活动边沿
9
MATIF
数据匹配中断标志(Data Match Interrupt Flag)
0b - 未检测到UART接收到匹配的数据;
1b - 检测到UART接收到匹配的书数据匹配。
7
NOZIF
噪声中断标志(Noise Interrupt Flag)
0b - 未检测到UART接收噪声;
1b - 检测到UART接收噪声。
6
OVRIF
溢出中断标志(Overrun Interrupt Flag)
当串口的接收缓存(RX FIFO)已满时再接收到新数据,将会设置此位。
注意: 用户在接收FIFO未满之前接收新数据,必须先清除此位。
0b - 未检测到UART RX溢出
1b - 检测到UART RX溢出,并且不会存储新数据
5
FEIF
帧错误中断标志(Frame Error Interrupt Flag)
当数据阶段后未接收到有效的停止位时,将设置FEIF。
0b - 未检测到UART RX帧错误
1b - 检测到UART RX帧错误
4
IDLEIF
空闲中断标志(IDLE Interrupt Enable)
“IDLE” 在串口接收线保持高电平时间超过设置的空闲条件时被设置。清除该位后,除非接收到新数据,否则空闲标志不会被再次设置。
0b - 未检测到 UART 接收空闲
1b - 检测到 UART 接收空闲
3
PARIF
奇偶校验中断标志(Parity Check Interrupt Flag)
在硬件计算的奇偶校验位与接收到的数据不匹配时,会发生奇偶校验错误。
0b - 未检测到 UART 接收数据的奇偶校验错误
1b - 检测到 UART 接收数据的奇偶校验错误
2
TCIF
发送完成中断标志(Transmit Complete Interrupt Flag)
TCIF 在写入发送数据和开始发送数据时被清除,当发送线(TX线)处于空闲状态时,TCIF 被置位。
0b - 串口发送器忙碌并正在传输数据
1b - 串口发送器处于空闲状态
1
TXIF
发送请求标志(TX Request Flag)
表示发送缓存(TX FIFO)中的字数等于或少于发送缓冲(TX FIFO)的水位线。
0b - 发送缓存(TX FIFO)中的字数大于水位线
1b - 发送缓存(TX FIFO中的字数等于或少于水位线,请求写入新数据
0
RXIF
接收请求标志(RX Request Flag)
表示接收缓存(RX FIFO)中的字数大于接收缓存(RX FIFO)的水位线设置。
0b - 接收缓存(RX FIFO)中的字数等于或少于水位线
1b - 接收缓存(RX FIFO)中的字数大于水位线,应该读取数据寄存器
17.3.1.5 中断使能(UART INTE)寄存器

在这里插入图片描述

位域功能描述
13
RFEIE
接收缓冲错误中断使能(TX FIFO Error Interrupt Enable)
0b - 中断禁用
1b - 中断启用
12
TFIFOEIE
发送缓冲错误中断使能(TX FIFO Error Interrupt Enable)
0b - 中断禁用
1b - 中断启用
11
LBKDIE
LIN间隔段检测中断使能(LIN Break Detected Interrupt Enable)
0b - 中断禁用
1b - 中断启用
10
RXEDGEIE
接收边沿检测中断使能(Receive Edge Detected Interrupt Enable)
0b - 中断禁用
1b - 中断启用
9
MATIE
数据匹配中断使能(Data Match Interrupt Enable)
0b - 中断禁用
1b - 中断启用
7
NOZIE
噪声中断使能(Overrun Interrupt Enable)
0b - 中断禁用
1b - 中断启用
6
OVRIE
溢出中断使能(Frame Error Interrupt Enable)
0b - 中断禁用
1b - 中断启用
5
FEIE
帧错误中断使能(Frame Error Interrupt Enable)
0b - 中断禁用
1b - 中断启用
4
IDLEIE
帧错误中断使能(IDLE Interrupt Enable)
0b - 中断禁用
1b - 中断启用
3
PARIE
空闲中断使能(Parity Check Interrupt Enable)
0b - 中断禁用
1b - 中断启用
2
TCIE
发送完成中断使能(Transmit Complete Interrupt Enable)
0b - 中断禁用
1b - 中断启用
1
TXIE
发送请求数据中断使能(TX Request Data Interrupt Enable)
0b - 中断禁用
1b - 中断启用
0
RXIE
接收请求读取数据中断使能(RX Request Read Data Interrupt Enable))
0b - 中断禁用
1b - 中断启用
17.3.1.6 串口匹配配置(UART MATCH)寄存器

在这里插入图片描述

表 17.10: 串口匹配寄存器描述

位域功能描述
9-0
DATA
匹配数据(Match Data)
数据匹配比较值
17.3.1.7 串口数据(UART DATA)寄存器

读取数据(DATA)寄存器将返回接收缓存中的数据,向数据(DATA)寄存器写入数据将把数据推入发送缓存并等待传输

注意: 这个寄存器只支持32位访问

在这里插入图片描述

表 17.11:串口数据寄存器描述

位域功能描述
16
RXEMPT
接收FIFO空标志(RX FIFO Empty)
0b-接收缓存不为空,表示可以读取有效的数据。
1b-接收缓存为空,表示从数据(DATA)寄存器读取数据是无效的。
15
LINBRK
发送LIN间隔段(Send LIN Break)
向串口的 LINBRK 位写入数据将使得 串口 发送 LIN 间隔段,而不是数据。
9-0
DATA
数据字段(DATA Field)
读此字段时将从读取缓存中读取,写此字段时将推送到写入缓存中。
17.3.1.8 串口写缓存(UART TXFIFO )寄存器

在这里插入图片描述

表17.12:串口读缓存(UART TXFIFO )寄存器描述

位域功能描述
31
EMPTY
发送缓存为空(FIFO Empty)
当发送缓存中没有数据时,此位被置为1。
1b - 发送缓存为空
30
ERROR
发送缓存错误(TX FIFO Error)
当向空的读取缓存读取数据时,将设置此位
1b - 读缓存有下溢错误
26-24
SIZE
发送缓存大小(TX FIFO Size)
可用的缓存大小是 2^SIZE 个字节
15
RESET
写缓存重置(TX FIFO Reset)
写缓存的地址指针复位
14
EN
发送缓存使能(TX FIFO enable)
0b - 缓存未使能,使用数据缓冲区(buffer)
1b - 缓存使能。
10-8
COUNT
发送缓存中的数据计数(Word Count in TX FIFO)
获取写缓存中当前数据计数
2-0
WATER
发送缓存水位值(Word Count in TX FIFO)
发送缓存中的字数计数值等于或小于水位值时,TXIF位被设置。
17.3.1.9 串口读缓存(UART RXFIFO)寄存器

在这里插入图片描述

表 17.13:串口读缓存寄存器描述

位域功能描述
31
EMPTY
发送缓存为空(FIFO Empty)
当发送缓存中没有数据时,此位被置为1。
1b - 发送缓存为空
30
ERROR
发送缓存错误(TX FIFO Error)
当向满的发送FIFO写入数据时,将设置此位
1b - 发送缓存有溢出错误
26-24
SIZE
发送缓存大小(TX FIFO Size)
可用的FIFO大小是 2^SIZE 个字节
15
RESET
读缓存重置(TX FIFO Reset)
读缓存的地址指针复位
14
EN
读取缓存使能(RX FIFO enable)
0b - 缓存未使能,使用数据缓冲区(buffer)
1b - 缓存使能。
10-8
COUNT
读取缓存中的数据计数(Word Count in TX FIFO)
获取读缓存中当前数据计数
2-0
WATER
读取缓存水位值(RX FIFO Watermark)
当接收FIFO中的字数计数值大于水印值时,RXIF位被设置

17.4 功能描述

UART 支持全双工、异步、NRZ 串行通信,并由波特率生成器、发送器和接收器模块组成。发送器和接收器虽然使用同一个波特率生成器,但它们独立操作。

17.4.1 波特率发生器

波特率发生器内的13位模量计数器为接收器和发送器提供波特率时钟。BAUD[DIV]的可写入值为1~8191,它决定了异步串口波特率时钟的时钟分频数。接收器由波特率时钟驱动,而发送器由波特率时钟除以过采样比率生成的位时钟驱动。根据采样比率,接收器的采样率为每比特时间4至32个样本。

17.4.1.1 波特率生成器示意图

图 17.2:波特率生成器示意图

在这里插入图片描述

17.4.2 发送器功能描述

发送器的输出TXD默认的空闲状态是逻辑高电平,如果设置了CTRL1[TXINV],则会变为逻辑低电平。通过设置CTRL1[TXINV],发送器的输出会被反转。通过设置CTRL0[TXEN]来启用发送器。然后发送器会保持空闲状态,直到传输数据缓冲区中有数据可用。程序通过向DATA寄存器写入数据来存储数据到传输数据缓冲区中。

发送器的移位寄存器长度根据CTRL1[FRAMESZ]和CTRL1[STOPSZ]的设置而变化,长度从9位到13位不等。例如,如果将CTRL1[FRAMESZ]设置为2’b01,并且清除了CTRL1[STOPSZ],则选择了8位数据模式。在8位数据模式下,移位寄存器包含一个起始位、八个数据位和一个停止位。当发送器的移位寄存器准备好接受一个新字符时,等待在发送数据寄存器中的值会被同步到移位寄存器,并与波特率时钟同步。同时,TX请求(INTF[TXIF])状态标志被设置,以指示可以向DATA寄存器中传输数据缓冲区写入另一个字符。

如果在一个停止位被发送到TXD引脚后,传输数据缓冲区中没有等待发送的新字符,发送器将设置传输完成(INTF[TCIF])标志,并进入空闲模式,等待更多的字符来传输。
向CTRL0[TXEN]写入0不会立即禁用发送器。等待当前正在进行的传输活动将完成,然后发送器将不再发送另一个字符。

17.4.3 接收器功能描述

通过设置 CTRL1[RXINV],接收器输入电平极性会被反转。通过设置 CTRL0[RXEN] 位,启用接收器。字符帧由一个逻辑0的起始位、七到十个数据位(可以是最高位或最低位优先),以及一个或两个逻辑1的停止位组成。
在接收移位寄存器接收到停止位之后,并且只要接收数据寄存器尚未满,数据字符就会被转移到接收数据寄存器中,并设置接收请求(INTF[RXIF])状态标志。如果接收请求(INTF[RXIF])状态标志已经被设置,那么溢出(INTF[OVRIF])状态标志将被设置,并且最后接收到的数据将丢失。

当一个程序检测到接收数据寄存器已满(INTF[RXIF] = 1)时,它通过读取DATA寄存器来获取接收数据寄存器中的数据。

原文

请添加图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值