nRF52832调试

本文详细介绍了使用nRF52832蓝牙芯片进行无线串口开发的过程,包括板子测试、程序烧写、调试及验证步骤。解决了编译优化、时钟配置等问题,实现了与手机的正常通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要用蓝牙芯片做无线串口,选择使用nRF52832。taobao上买了一个hc-42的小板子自己调试用。

1 第一步,测试板子串口转蓝牙是否正常--正常

2 第二步,烧写程序

将板子上的SWDIO、SWDCLK、VCC、GND都焊线出来,一开始使用ST-LINK,查文档发现不行,只能用J-LINK,后来链接到J-LINK上。在SDK中找例程,编译,烧写失败。再查资料,这个芯片必须先使用nRFgo软件将芯片擦除才可以烧写程序。官网有一个 getting_started_keil.pdf 指导一步一步烧写程序。

3 第三步,验证

一开始太着急,想直接测试蓝牙串口,发现不行,就先选了一个GPIO点灯的。找到hc-42板子上的led灯对应的IO,修改相应的代码,下载,LED可以正常控制,说明基本操作没问题。

4第四步,调试蓝牙串口

SDK默认的工程中,用了O3的优化编译选项,断点找不到位置,需要先改成O0。单步调试代码发现sd_softdevice_enable死循环,百度搜到https://devzone.nordicsemi.com/f/nordic-q-a/18340/device-loops-on-sd_softdevice_enable sdk用的开发版用的32.768kHz的晶振,而自己用的hc-42是32M的晶振,因此需要修改配置,按照如下修改

    nrf_clock_lf_cfg_t const clock_lf_cfg =
    {
        .source       = 0,//from xtal
        .rc_ctiv      = 16,//NRF_SDH_CLOCK_LF_RC_CTIV,
        .rc_temp_ctiv = 2,//NRF_SDH_CLOCK_LF_RC_TEMP_CTIV,
        .accuracy     = 0//NRF_SDH_CLOCK_LF_ACCURACY
    };

编译,加载。可以喝手机正常通信。

nRF52832资料较少,Nordic上的SDK都是按照自己家的开发版搞的。看起来云里雾里。下面记录一下:

首先是SDK版本

  • S112 SoftDevice v6.1.1 
  • S132 SoftDevice v6.1.1
  • S140 SoftDevice v6.1.1 
  • S212 SoftDevice v6.1.1 
  • S312 SoftDevice v6.1.1 
  • S332 SoftDevice v6.1.1 
  • S340 SoftDevice v6.1.1 

S132版本的API对应的是nRF52832的蓝牙。S332版本的API对应的是nRF52832的蓝牙和NFC。其他版本都和nRF52832没关系。

其次是不同的开发版

pca100xx

pca200xx

不同的开发版上面有不同的nRF芯片,只有pca10040开发版使用了nRF52832芯片,因此找程序和工程只能看pca10040的,其他板子都不对应这个芯片。

https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52832

官网资料很多,SDK,各种软件在官网都能下载到

 

### 关于nRF52832调试的方法 #### 使用J-Link进行日志调试 为了实现有效的日志记录和调试,可以利用SEGGER公司的J-Link工具配合RTT (Real-Time Transfer)技术来实现实时的日志输出。通过配置`sdk_config.h`文件中的相应选项,能够开启或关闭特定的功能模块以便更好地控制硬件资源并减少干扰[^1]。 对于具体的设置,在`sdk_config.h`中有如下定义用于启用UART接口作为RTT通道: ```c #define NRF_LOG_BACKEND_RTT_ENABLED 1 ``` 这允许开发者将打印的信息发送到PC端的J-Link RTT Viewer窗口中查看,从而方便地监控程序运行状态以及排查错误信息[^2]。 #### 配置SDK环境 当基于官方提供的nRF SDK构建项目时,确保已经正确安装了必要的编译器链(如GNU ARM Embedded Toolchain)、IDE(比如Keil MDK 或 SEGGER Embedded Studio)以及其他依赖项。此外还需要下载最新的J-Link驱动程序以保障设备间的通信顺畅无阻。 #### 开启BLE UART服务 如果应用程序涉及到Bluetooth Low Energy(BLE),那么可以通过激活BLE UART Service来进行更高级别的数据交换测试。此特性使得手机或其他兼容客户端可以直接连接至嵌入式系统并通过串口协议传输任意长度的数据帧,这对于远程诊断非常有用。 #### 利用SoftDevice事件跟踪 除了传统的断点调试之外,还可以借助软设备(softdevice)发出的各种事件来进行逻辑分析。这些事件涵盖了链接建立、属性变更等多个方面,并且可以在应用层代码里被捕获处理进而辅助定位潜在问题所在之处[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值