ccdebug io引脚_nrf52832调试记录之IO引脚配置

本文详细记录了nrf52832芯片在开发过程中的IO引脚配置问题,包括ADC采集引脚设定、NFC功能引脚与普通IO的转换,以及复位引脚的特殊处理。在调试中,作者发现需要手动修改寄存器才能正确配置PSELRESET,并提到了串口通信时RX引脚的上拉电阻解决方案。
摘要由CSDN通过智能技术生成

nrf52832调试记录之IO引脚配置

[复制链接]

本帖最后由 志心工作室 于 2020-11-18 14:38 编辑

由于本工作室开发的蓝牙心电记录模块采用的是nrf52832作为主控芯片,在开发过程中遇到一些问题会陆续和大家分享:

下图是nrf52832芯片QFN48封装的引脚图

image.png (99.03 KB, 下载次数: 0)

2020-11-18 11:36 上传

其中P0.02~P0.05和P0.28~P0.31可配置为ADC采集引脚,其他的IO脚可任意分配到各个外设

其中P0.09和P0.10默认分配到NFC功能外设,如果需要设置为普通IO或映射到其他外设需要添加宏CONFIG_NFCT_PINS_AS_GPIOS

image.png (38.41 KB, 下载次数: 0)

2020-11-18 11:41 上传

P0.21默认作为复位引脚,如果需要设置为普通IO或映射到其他外设需删除宏CONFIG_GPIO_AS_PINRESET

image.png (38.46 KB, 下载次数: 0)

2020-11-18 11:44 上传

但是实际调试删除后无效,debug观察发现PSELRESET还是连接到默认的复位引脚

image.png (60.97 KB, 下载次数: 0)

2020-11-18 11:48 上传

查找源码发现下面的if语句始终不成立,因此需要手动修改 NRF_UICR->PSELRESET[0] NRF_UICR->PSELRESET[1]至需要的reset引脚或断开连接,我在debug调试的时候直接修改寄存器至空着的IO脚

由于此寄存器掉电不丢失,所以可以正常修改

/* Bit 31 : Connection */

#define UICR_PSELRESET_CONNECT_Pos (31UL) /*!< Position of CONNECT field. */

#define UICR_PSELRESET_CONNECT_Msk (0x1UL << UICR_PSELRESET_CONNECT_Pos) /*!< Bit mask of CONNECT field. */

#define UICR_PSELRESET_CONNECT_Connected (0UL) /*!< Connect */

#define UICR_PSELRESET_CONNECT_Disconnected (1UL) /*!< Disconnect */

#if defined (CONFIG_GPIO_AS_PINRESET)

if (((NRF_UICR->PSELRESET[0] & UICR_PSELRESET_CONNECT_Msk) != (UICR_PSELRESET_CONNECT_Connected << UICR_PSELRESET_CONNECT_Pos)) ||

((NRF_UICR->PSELRESET[1] & UICR_PSELRESET_CONNECT_Msk) != (UICR_PSELRESET_CONNECT_Connected << UICR_PSELRESET_CONNECT_Pos))){

NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Wen << NVMC_CONFIG_WEN_Pos;

while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}

NRF_UICR->PSELRESET[0] = 0xffff;

while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}

NRF_UICR->PSELRESET[1] = 0xffff;

while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}

NRF_NVMC->CONFIG = NVMC_CONFIG_WEN_Ren << NVMC_CONFIG_WEN_Pos;

while (NRF_NVMC->READY == NVMC_READY_READY_Busy){}

NVIC_SystemReset();

}

#endif

串口通信引脚

配置串口通信时,当串口接收引脚悬空,并使能接收时容易出现错误,导致程序死在串口接收错误里,可在RX引脚接上拉电阻解决

由于正常使用的32768时钟所以未作IO配置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值