原文
https://blog.csdn.net/libin55/article/details/101770888
本人是转发的,原文在上面。
一、前言
Nordic52810串口外设手册命名为 UARTE
,直译的意思就是带EasyDma的通用异步收发器 ;
52810仅一路UARTE0外设,应用中如果需要多路串口进行通信的话,可以重新映射到任意的GPIO引脚上,实现异步的串口切换(无法同时进行多路收发)
二、工作原理详解
UARTE功能特点
- 全双工
- 硬件流控制
- EasyDMA
- 高达1Mpbs波特率
UARTE原理框图
原理框图如下图,RXD输入信号通过FIFO经由EasyDMA输出到RXD缓存中,输出反之EasyDMA读取TXD缓存,调制后经由TXD引脚发送
数据发送
在这里插入图片描述如下图
TXD.MAXCNT
计数器中存放了需要发送的数据长度,使能STARTTX
任务后即开始进行发送(将会生成一个TXSTARTTED
指示开始发送)- 每发送一个字节后,会触发一个
TXDRDY
事件- 当数据发送完成后(
MAXCNT
)将会生成ENDTX
事件- 使能
STOPTX
任务后,串口发送停止时将会触发一个TXSTOPPED
事件- 当UARTE发送器停止时,如果尚未生成ENDTX事件,UARTE将显式生成ENDTX事件
- 如果启用了发送流控
CTS
,当CTS
被停用时传输将自动挂起,当CTS
再次被激活时将继续传输
数据接收
在这里插入图片描述EasyDma将串口接收的数据传到数据缓存中,如下图
- RX缓存地址通过
RXD.PTR
寄存器指定- RX缓存大小由
RXD.MAXCNT
寄存器配置,当RX缓存填满后将会触发ENDRX
事件- RXD每接收一个字节数据,将会产生
RXDRDY
事件RXD.AMOUNT
寄存器指示有多少数据已经被搬移到RAM中
三、寄存器
-
SHORTS [5-6]:地址偏移0x200,
ENDRX_STARTRX
写1开启DMA接收任务,ENDRX_STOPRX
写1停止接收任务 - INTEN [0-2/4/7-9/17/19-20/22]:中断控制寄存器,写0禁用中断,写1使能中断
- INTENSET:中断使能寄存器,写1使能中断,写0无效
- INTENCLR:中断禁用寄存器,写1禁止中断,写0无效
- ERRORSRC:错误状态寄存器,当串口异常触发时,可读取该寄存器(帧错误、校验错误),写1可进行清状态
- ENABLE:写1使能串口,写1禁用串口
- PSEL.RTS[0-4]: RTS映射寄存器,将串口RTS信号关联到指定的引脚
- PSEL.TXD[0-4]:TXD映射寄存器,将串口TXD信号关联到指定的引脚
- PSEL.CTS[0-4]:CTS映射寄存器,将串口CTS信号关联到指定的引脚
- PSEL.RXD[0-4]:RXD映射寄存器,将串口RXD信号关联到指定的引脚
- BAUDRATE[0-31]:波特率控制寄存器(1200baud - 1Mbaud)
- RXD.PTR:接收数据制作
- RXD.MAXCNT:接收缓存数据大小
- RXD.AMOUNT:接收数据长度
- TXD.PTR:发送数据指针
- TXD.MAXCNT:发送缓存数据大小
- TXD.AMOUNT: 发送数据长度
- CONFIG: 配置寄存器,配置校验与硬件流控
https://blog.csdn.net/qq_33784286/article/details/104899319
还有参考这篇文章。
网友评论