nRF52832学习记录(二、外设之 串口)

nRF52832的串口分为: UART 和 UARTE

UART

UART就是通常所指的串口,通用异步收发器,全双工通讯,其内部结构如下:
在这里插入图片描述
UARTE

UARTE是带有 EasyDMA 的UART,其内部结构如下:在这里插入图片描述我们在上一节讲到过,nRF52832的 IO 口没有固定死哪个IO必须对应哪个外设,所以一般的 IO口都可以作为串口使用

UART的使用Demo

	  //设置配置参数结构体
    const app_uart_comm_params_t comm_params =
      {
          RX_PIN_NUMBER,   //RX引脚设置,根据自己的硬件来,任意IO口都可以,注意避开特殊用途的就行
          TX_PIN_NUMBER,   //同 RX
          RTS_PIN_NUMBER,  //RTS 引脚和CTS 引脚,一般不使用流控,所以不会用,但是不确定是否能随意设置
          CTS_PIN_NUMBER,  //
          APP_UART_FLOW_CONTROL_DISABLED,/*库函数中的注释*< UART Hw Flow Control is disabled.禁止流控 */
          false,///**< Even parity if TRUE, no parity if FALSE. 奇偶校验,True有,..*/
#if defined (UART_PRESENT)
          NRF_UART_BAUDRATE_57600 //波特率
#else
          NRF_UARTE_BAUDRATE_115200
#endif
      };
      
//串口初始化(FIFO)
/**@brief Macro for safe initialization of the UART module in a single user instance when using
 *        a FIFO together with UART.
 *
 * @param[in]   P_COMM_PARAMS   Pointer to a UART communication structure: app_uart_comm_params_t
 * @param[in]   RX_BUF_SIZE     Size of desired RX buffer, must be a power of 2 or ZERO (No FIFO).
 * @param[in]   TX_BUF_SIZE     Size of desired TX buffer, must be a power of 2 or ZERO (No FIFO).
 * @param[in]   EVT_HANDLER   Event handler function to be called when an event occurs in the
 *                              UART module.
 * @param[in]   IRQ_PRIO        IRQ priority, app_irq_priority_t, for the UART module irq handler.
 * @param[out]  ERR_CODE        The return value of the UART initialization function will be
 *                              written to this parameter.
 *
 * @note Since this macro allocates a buffer and registers the module as a GPIOTE user when flow
 *       control is enabled, it must only be called once.
 */
 //串口初始化(FIFO)
   	APP_UART_FIFO_INIT(&comm_params,
                         UART_RX_BUF_SIZE,//RX缓冲区大小
                         UART_TX_BUF_SIZE,
                         uart_error_handle,//中断回调,错误处理
                         APP_IRQ_PRIORITY_LOWEST,//中断优先级
                         err_code);
                         
	APP_ERROR_CHECK(err_code);

一般来说,使用 UARTE中断接收,初始化和 UART一样,在回调函数中处理接收发送操作,参考下面的例子,例子是参考清风教程中的代码修改的:

#define UART_TX_BUF_SIZE 256                         
#define UART_RX_BUF_SIZE 256                        
uint8_t commad[] = {0x55,0x44,0xA7,0x88};

void UART_WriteData(uint8_t *pData, uint8_t dataLen)
{
	uint8_t i;
	for(i = 0; i < dataLen; i++)
	{
		app_uart_put(pData[i]);
	}
}

void uart_error_handle(app_uart_evt_t * p_event)
{
    uint8_t RX;
    if (p_event->evt_type == APP_UART_COMMUNICATION_ERROR)
    {
        APP_ERROR_HANDLER(p_event->data.error_communication);
    }
    else if (p_event->evt_type == APP_UART_FIFO_ERROR)
    {
        APP_ERROR_HANDLER(p_event->data.error_code);
    }
    else if (p_event->evt_type == APP_UART_DATA_READY)
    {
		//从FIFO中读取数据  
      app_uart_get(&RX);  
	    //串口输出数据  
	  printf("%c",RX); 
      UART_WriteData(commad,sizeof(commad)); 
    }
	  //串口发送完成事件,主函数找中的循环发送测试也会触发这个事件
    else if (p_event->evt_type == APP_UART_TX_EMPTY)
    {
        nrf_gpio_pin_toggle(LED_1);		  
    }	
}

int main(void)
{
    LEDS_CONFIGURE(LEDS_MASK);
    LEDS_OFF(LEDS_MASK);
    uint32_t err_code;
    const app_uart_comm_params_t comm_params =
      {
          RX_PIN_NUMBER,
          TX_PIN_NUMBER,
          RTS_PIN_NUMBER,
          CTS_PIN_NUMBER,
          APP_UART_FLOW_CONTROL_DISABLED,
          false,
          UART_BAUDRATE_BAUDRATE_Baud115200
      };

    APP_UART_FIFO_INIT(&comm_params,
                         UART_RX_BUF_SIZE,
                         UART_TX_BUF_SIZE,
                         uart_error_handle,
                         APP_IRQ_PRIORITY_LOW,
                         err_code);

    APP_ERROR_CHECK(err_code);
    while (1)
    {
       UART_WriteData(commad,sizeof(commad));//发送完成也会进入中断回调函数 
       nrf_delay_ms(1000); 
       nrf_delay_ms(1000);
    }
}

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: nRF52832是一款由Nordic Semiconductor开发的低功耗蓝牙系统级芯片(SoC),可以广泛应用于物联网、可穿戴设备、智能家居等领域。其硬件原理图是指将nRF52832的引脚、外设电路和组件等关键元件进行详细标注和连接的图纸。 nRF52832的硬件原理图主要包括以下部分: 1. 引脚定义:硬件原理图首先标出了nRF52832芯片的引脚定义,包括主要通信接口(如SPI、I2C、UART)、GPIO接口、电源供电接口等等。这些引脚定义了芯片与其他外部器件的连接关系。 2. 外设电路:硬件原理图还显示了nRF52832芯片连接的各种外设电路,例如晶振电路、电源管理电路、射频电路等。这些外设电路提供了芯片正常工作所需的支持。 3. 组件标注:硬件原理图中会对每个组件进行详细的标注,包括电容器、电阻器、电感、晶体管等等。这些组件构成了整个电路的基本元素,起到了电流控制、信号调节、滤波等功能。 4. 连接关系:硬件原理图清晰地显示了组件之间的连接关系,通过线路的连接和电路板的布局,使得信号能够在不同的电路之间流通,并实现不同功能模块之间的通信。 硬件原理图在设计、开发和问题排查等过程中起到了重要的作用,它为工程师们提供了理解和分析整个电路的便利。同时,硬件原理图也是在研发过程中修改和更新设计的重要工具。通过对硬件原理图的分析,工程师可以更好地理解nRF52832芯片的工作原理,加快开发进度,提高产品的可靠性和性能。 ### 回答2: nRF52832是一款由Nordic Semiconductor公司开发的多协议无线系统芯片,广泛应用于物联网、蓝牙设备以及低功耗应用场景。硬件原理图是指该芯片在设计过程中所使用的电路图,用于展示芯片的内部电路连接和各个外部接口的连接方式。 nRF52832硬件原理图通常由以下几个部分组成: 1. 主芯片连接:展示了nRF52832芯片与其他核心电路部件的连接方式,包括时钟源、电源管理电路、复位电路等。 2. 外设接口:包括与其他外设模块连接的接口,如UART串口、SPI总线、I2C总线等。这些接口可以连接外部传感器、存储器、显示器等外设模块。 3. 蓝牙连接:nRF52832芯片主要用于蓝牙通信,因此硬件原理图中会展示与蓝牙模块相关的连接方式,包括天线连接、射频电路连接等。 4. 电源管理:展示了芯片的电源管理电路,包括电池接口、电池充电电路、低功耗模式切换电路等。这些电路对于实现低功耗运行至关重要。 5. 外部元件:硬件原理图还会展示与nRF52832芯片连接的其他外部电子元件,如电容、电阻、晶振等。 通过硬件原理图,可以清晰地了解nRF52832芯片的内部结构和各个部件之间的连接关系。这对于芯片设计工程师、硬件工程师以及研发人员来说都是非常重要的参考资料。此外,硬件原理图还可以帮助检查设计是否符合规范,以及对于故障排查和维修也有很大的帮助作用。 总之,nRF52832硬件原理图是展示该芯片内部电路连接和外部接口连接方式的重要参考资料,对于芯片设计和应用具有重要的意义。 ### 回答3: nRF52832是一款由挪威公司诺德公司开发的低功耗蓝牙系统级芯片(SoC)。硬件原理图是指该芯片的布线和电路连接图,用于描述芯片的硬件结构和电路设计。 nRF52832芯片的硬件原理图涵盖了多个功能模块,包括处理器核心、存储器、外设等。它采用了ARM Cortex-M4内核,主频达到64MHz,具有强大的处理能力。此外,芯片有256KB的闪存和32KB的RAM,用于存储程序和数据。 在外设方面,nRF52832集成了多种接口和传感器。它支持蓝牙低能耗(Bluetooth Low Energy)和2.4GHz射频通信,并具备蓝牙5.0和NFC的功能。此外,芯片还有多个通用IO引脚,可以连接外部设备和传感器。 nRF52832的硬件原理图还包含了电源管理电路、时钟电路等。为了保证芯片的低功耗特性,它采用了多种节能技术,如低功耗模式、功耗优化设计等。电源管理电路用于稳定芯片的供电电压和电流。 除了上述组成部分,nRF52832的硬件原理图还可能包括其他辅助电路和连接器。例如,调试接口(如JTAG或SWD接口)可用于软件调试和开发。此外,可能还有外部晶振和天线连接器等。 总的来说,nRF52832的硬件原理图是该芯片设计的基础图纸,它展示了芯片的主要硬件组成部分和电路连接方式。通过理解硬件原理图,可以更好地了解该芯片的功能和性能,并进行相关应用的设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

矜辰所致

您们的鼓励是我奋斗的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值