nRF52832调试

需要用蓝牙芯片做无线串口,选择使用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,各种软件在官网都能下载到

 

你可能感兴趣的:(技术文档)