nRF51822 UART学习

本文详细介绍了nRF51822的UART配置,包括引脚配置、波特率设定、UART的启用及串口的发送接收操作。还探讨了接收超时和UART中断的启用,以及中断优先级设置与中断处理函数的应用。
摘要由CSDN通过智能技术生成

nRF51822 UART引脚配置

UART引脚配置

和STM32不同,nRF51822没有固定的串口引脚RX和TX,与UART相关的信号RXD、CTS(Clear To Send)、RTS(Request To Send)和TXD可根据PSELRXD、PSELCTS、PSELRTS和PSELTXD寄存器的独立配置映射到相应的物理引脚。
nRF51822中与UART相关的寄存器如下图所示。


可见,为了使用nRF51822的UART,首先必须配置相应的引脚为UART的信号引脚,所幸的是,Nordic Semiconductor官方的SDK中已经给出了配置管脚映射的函数:simple_uart_config();该函数的源程序如下所示。
void simple_uart_config(  uint8_t rts_pin_number,
                          uint8_t txd_pin_number,
                          uint8_t cts_pin_number,
                          uint8_t rxd_pin_number,
                          bool    hwfc)
{
/** @snippet [Configure UART RX and TX pin] */
  nrf_gpio_cfg_output(txd_pin_number);
  nrf_gpio_cfg_input(rxd_pin_number, NRF_GPIO_PIN_NOPULL);  

  NRF_UART0->PSELTXD = txd_pin_number;
  NRF_UART0->PSELRXD = rxd_pin_number;
/** @snippet [Configure UART RX and TX pin] */
  if (hwfc)
  {
    nrf_gpio_cfg_output(rts_pin_number);
    nrf_gpio_cfg_input(cts_pin_number, NRF_GPIO_PIN_NOPULL);
    NRF_UART0->PSELCTS = cts_pin_number;
    NRF_UART0->PSELRTS = rts_pin_number;
    NRF_UART0->CONFIG  = (UART_CONFIG_HWFC_Enabled << UART_CONFIG_HWFC_Pos);
  }

  NRF_UART0->BAUDRATE         = (UART_BAUDRATE_BAUDRATE_Baud38400 << UART_BAUDRATE_BAUDRATE_Pos);
  NRF_UART0->ENABLE           = (UART_ENABLE_ENABLE_Enabled << UART_ENABLE_ENABLE_Pos);
  NRF_UART0->TASKS_STARTTX    = 1;
  NRF_UART0->TASKS_STARTRX    = 1;
  NRF_UART0->EVENTS_RXDRDY    = 0;
}
下面对这段程序进行说明,程序的参数为RTS(Request To Send,请求发送)引脚号、TXD(数据发送信号线)引脚号、CTS(Clear To Send,发送允许)引脚号和RXD(数据接收信号线)引脚号。
UART引脚 名称 作用 方向 开发板中对应的引脚号
RTS Request To Send nRF51822向外部发出的请求发送信号,外部设备接到此请求信号后,开始发送数据,nRF51822通过RXD信号线接收数据(低电平有效) 输出  
TXD     输出 P0.09
CTS Clear To Send 外部向nRF51822发送的发送允许信号,nRF51822接收到此信号后,开始发送数据,nRF51822通过TXD信号线开始发送数据(低电平有效) 输入  
RXD     输入 P0.11

RTS (Require ToSend,发送请求)输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。

CTS (Clear ToSend,发送允许)输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。

此处有人将CTS翻译为发送允许,我感觉的确比翻译为清除发送好。因为CTS是对方的RTS控制己方的CTS是否允许发送的功能。

源程序中在进行引脚映射的时候
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值