开发环境搭建
1、安装集成开发环境IAR8.30
2、安装JLINK驱动
3、下载官方资料SDK17.1.0,该资料包包含了协议栈可执行文件及所有需要例程
4、安装SDK包中的插件,如下
说明:网上有介绍使用这些工具nRFgo Studio、Command-Line-Tools,本例中未使用。安装上述软件及驱动,安装jlink驱动后下文会用到J-link RTT viewer、J-Flash工具。前者用于调试查看打印信息,后者用于下载可执行文件。
5、手机或电脑下载nrf connect应用软件,该软件由Nordic公司开发。本例中用苹果手机下载应用测试。
6、使用JLINK以SWD模式连接电脑与目标芯片(nrf52833)。
7、芯片的运行需要下载两部分代码,使用J-FLASH分别下载协议栈(SoftDevice)与用户代码。协议栈命名Sxxx所表示的功能,自行网上查阅。
J-FLASH下载说明
1、打开J-flash选择与芯片对应的模板工程,未找到52833工程,但采用52832也可使用。
2、按下图连接目标芯片。下载前需擦除整片falsh,之后将两部分代码写入芯片内。调试过程中发现编译好的代码,需先通过j-falsh下载代码后,通过IAR才可以调试。该问题暂时忽略
到此基本可以开始随便选择一个官方例程进行开发调试。
调试问题汇总
本文以\nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart工程为例进行问题说明。
通过J-FLASH下载协议栈S113和串口透传pca10100例程可执行文件。重启设备,打开手机测试APP,扫描连接(Nordic_UART),设备名称可以自己修改,在客户端界面可以进行收发测试。如果设备信号弱,可以通过函数sd_ble_gap_tx_power_set(BLE_GAP_TX_POWER_ROLE_ADV,
m_advertising.adv_handle, 8);nrf52833调整功率范围(-40dbm~8dbm)。本例中将信号功率调至最大。
1、编译问题
可以查找官方release说明,将x改为n,编译通过
2、调试问题
《1》调试状态下为程序打断点后,不能继续运行。查找资料发现,属于正常现象。调试射频通信时程序不能中断,可以采用打开DEBUG宏的方式,通过J-link RTT viewer进行调试信息打印
《2》打开DEBUG及连接jlinkRTT的情况下,程序进休眠模式时,sd_power_system_off()会返回错误本工程将sleep_mode_enter屏蔽。正式使用时根据项目情况可将DEBUG宏删除后使用该功能
《3》该工程中使用了串口,但是串口接收引脚配置时,未进行上下拉,运行过程中出现串口通信错误APP_UART_COMMUNICATION_ERROR。板卡受干扰时,极易出现该问题将串口接收引脚配置改为上拉
《4》当程序中调用ble_nus_data_send函数的情况下,会出现协议栈报错0x3401(13313),表示系统属性缺失。网络搜索后查找到如下解决办法将ble_nus_data_send函数中return sd_ble_gatts_hvx(conn_handle, &hvx_params);替换为如下代码
err_code = sd_ble_gatts_hvx(conn_handle, &hvx_params);
if (err_code == BLE_ERROR_GATTS_SYS_ATTR_MISSING)
{
err_code = sd_ble_gatts_sys_attr_set(conn_handle, NULL, 0, 0);
APP_ERROR_CHECK(err_code);
// Try again
err_code = sd_ble_gatts_hvx(conn_handle, &hvx_params);
}
return err_code;