Toolchain Manager安装完成打开后,进入SETTINGS修改SDK的安装目录
设置好目录后,返回SDK ENVIRONMENTS进行安装
安装过程中会弹出J-LINK的安装,默认一直下一步完成安装
SDK安装完成后,选择“Open VS Code”打开
再次打开“Open VS Code”,提示需要安装VS Code扩展,点击“Install missing extensions”进行安装
安装完扩展后,点击“Open VS Code”打开,
打开后提示需要安装命令行工具,点击“Install nRF Command Line Tools”到网站下载命令行工具,下载后一直下一步直到安装完成。
但是打开SDK的目录,发现SDK是不全的。
接下来在Toolchain Manager中更新SDK
到此,nRF Connect SDK开发需要的工具及SDK已经下载完成。SDK的目录如下
三、打开SDK的例程
在nrf和zephyr文件夹内都有一个samples的文件夹,这两个文件夹内都有很多的例程。
本次以nrf\samples\bluetooth\peripheral_uart的历程为例,打开后编译测试,可以测试安装的工具及SDK是否正常。
打开VS Code软件,切换到nRF Connect一栏,点击Create a new application,Application type选择Freestanding,Application location选择新建项目的存储地址,Application template选择nrf\samples\bluetooth\peripheral_uart,Application name填写项目名称nrf\samples\bluetooth\peripheral_uart,然后点击Create Application创建项目。
建好项目后,点击项目的Add Build Configuration,Board选择Nordic boards中的nrf7002dk_nrf5340_cpuapp,Configuration选择prj.conf,点击Build Configuration确认后进入编译。
在编译过程中,可以在终端查看编译是否有问题。
编译完成后,通过nRF Connect for Desktop的Programmer固件烧录到开发板中
连接上开发板,在Programmer的SELECT DEVICE选择开发板进行连接
在Programmer的点击Add file添加固件,固件在项目文件夹内的build\zephyr下面,选择merged_domains.hex,点击Erase &write进行烧录。
烧录完成后,手机打开nRF Connect,连接开发板的蓝牙Nordic_UART_Service,在电脑端用串口调试工具,就可以通过蓝牙与手机进行发送数据。串口调试工具发送数据时,需要在数据末尾添加回车换行。
四、创建新的板
在VS Code点击Create a new board可以创建自己的板,Name输入自己板的名称,SoC选择nrf5340_cpuapp,Vendor name输入厂商名称,Board root folder输入板的存放目录,点击Create Board创建新的板。
由于板的文件比较多,要自己去完善,需要发不少功夫。我们可以直接把开发板的文件直接复制过来再修改,这样会比较快。在SDK目录v2.4.1\nrf\boards\arm\nrf7002dk_nrf5340下的文件,除了名称带有cpuapp_ns、cpunet外的文件,复制到刚才创建的board的boards\arm\myboard文件下下。
把nrf7002dk_nrf5340_cpuapp.dts的名称改为myboard.dts,把nrf7002dk_nrf5340_cpuapp.yaml的名称改为myboard.yaml,把nrf7002dk_nrf5340_cpuapp_defconfig的名称改为myboard_defconfig
Kconfig、Kconfig.board、Kconfig.defconfig这三个文件中的BOARD_NRF7002DK_NRF5340_CPUAPP改为BOARD_MYBOARD
myboard.dts中的model和由"Nordic NRF7002 DK NRF5340 Application"改为"Myboard",compatible由"nordic,nrf7002-dk-nrf5340-cpuapp"改为"vendor-name,myboard"
CMakeLists.txt、board.cmake、nrf7002dk_nrf5340_cpuapp_defconfig这三个文件中的CONFIG_BOARD_NRF7002DK_NRF5340_CPUAPP改为CONFIG_BOARD_MYBOARD
在nrf5340_cpuapp_common.dts文件中,可以修改MCU的外围。比如,我把2个LED灯改为1个,另外一个用作PWM输出,把原来的led0的代码注释掉,把led1的信息改为led0的信息。
到此,就建好自己的板了。
五、BLE调光灯
在开发板上有2个LED灯,LED2在蓝牙未连接时进行闪烁,当蓝牙连接后,LED2常亮;LED1用PWM控制,可以进行远程开关和调光。同时板上有2个按键,按键1作为LED1的开关灯按键,按键2作为LED1的亮度调节按键。
软件功能需要创建2个服务,一个服务用于LED的亮度调节,1%-100%(0x01-0x64)的亮度,另外一个服务用于LED1的开关(0x00:关灯,0x01:开灯),当数据大于1个字节时,数据直接从串口输出,从窗口输入的数据,也会从这个服务发送出去。这2个服务的UUID是直接在网上自动生成的。
按上面自己创建的板,用nrf\samples\bluetooth\peripheral_uart为模版创建项目
在项目目录的src下创建lamp.c和lamp.h文件
在cmakelists.txt文件中,添加刚建的lamp.c文件
把prj.comf文件中的设备名称改为Dimming Lamp,把设备外观改为通用灯具1408(0x0580)。同时在该文件中添加CONFIG_PWM=y,使能PWM功能。在该文件中删除CONFIG_BT_NUS=y。
修改完以上内容后,就可以进行main.c、lamp.c和lamp.h这三个文件的编写了。这里就不具体介绍,附上这3个文件的源代码,详见附件代码。
同时附上该项目的视频运行情况:详见附件视频。
六、总结
从拿到开发板到调完调光灯,碰到了一些麻烦,一个是SDK的下载需要用到梯子,不然根本就下载不全,这方面我觉的原厂还是需要做下改善;另外一个就是创建自己的板,需要用到DeviceTree去管理配置,而本人于对DeviceTree没有研究,所以就把例程上的文件拷贝过来稍作调整。
nRF5340出来包含nRF52系列功能的超级集,在性能方面和安全性方面又都做了提升,同时将电流消耗降至最低,可以满足更多的应用场景需求;此外,在国内的智能应用中,一直偏向于Wi-Fi和Bluetooth LE,Nordic之前一直缺少Wi-Fi的产品,这两年终于推出了Wi-Fi的产品,可以提供无缝Wi-Fi连接和基于Wi-Fi的定位(本地Wi-Fi集线器的SSID嗅探)功能,可轻易集成到广泛的应用中。
nRF Connect SDK提供了全面统一开发平台,包括一套工具和软件库,集成了 Zephyr RTOS 和各种示例、应用程序协议、协议栈、库和硬件驱动程序,使开发人员能够快速、轻易地将无线连接功能添加到产品中。
代码: