Nordic52810 uarte

原文
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
还有参考这篇文章。

你可能感兴趣的:(Nordic52810 uarte)