一..nRF52832开发背景
nordic开发环境用的是jlink+52832模块一体的开发板,还是很方便的
1. nrf52832资源:64K的ram和512K的flash还是够用了,资源太强大了
定时器,SPI,功耗,AES硬核,GPIO数量,比较器.....太牛逼了
2. nordic SDK分成softdevice、bootloader和application三个部分。Softdevice以bin提供,主要是操作系统和BLE协议和RF操作相关的程序,这部分不对外公开,熟悉接口即可。
不过nordic 的softdevice有几个版本,目前最新3.0,每个版本支持不同的SDK,目前最新15.2。
亲测15.2好用,不知道为什么15.0编译出错,放过一边。。
3. 由于memory足够大,所以nordicSDK在DATA RAM和CODE上对softdevice、bootloader和application三者的memory layout安排也很清晰。
4. DFU设备固件升级、OTA固件空中升级是BLE架构必备的模块。TI和DIALOG都是在应用层集成DFU进行固件空中升级,在bootloader负责版本校验和加载,因此应用和bootloader是共同负责DFU,需要协调配合。但nordic只让bootloader负责DFU空中升级,并做好校验和加载,工具链也简单。应用只需要负责一件事,就是接收到DFU命令就reset到bootloader即可,其不需要关心DFU的过程。这也是本人喜欢nordic架构的原因,当然,这是要损失一部分代码空间的,从成本角度不划算,但是nordic提供的flash也足够大了。---这个没看懂
5. SDK的应用分层做得比较好,硬件模块有对应的硬件驱动driver,SDK还会进行在驱动基础上进行再次封装,以库library的形式供应用使用,降低开发难度。如nrf_drv_gpiote是驱动,上层还会分别封装提供app_button按键接口、电平中断接口app_gpiote等。
9. SDK提供的GPIOTE模块是一个按键消息接口,比较有特色。其利用button集成消息模块,支持将消息安装到对应的某个按键上,也就是在广播状态时按这个键发出的消息和连接时发出的消息是不一样的,这样易于应用处理,架构也比较清晰。但是要花时间才能理解这个模块。
10. SDK的例程非常丰富。
11.SDK的开发文档支持也非常详尽,入门到深入都相对容易。http://infocenter.nordicsemi.com/。入门可以去看中文开发文档,深入就要多看看英文说明。
二、MDK开发环境,折腾了一圈才搞明白
外设例程有blank和softdevice版本,就是直接操作还是通过softdevice,softdevice的好处是版本迁移甚至芯片移植方便,只要是nordic他们家同样softdevice平台开发的,在不同芯片平台都可以使用,主要向下兼容的时候就减少开发工作量了,比如从51822迁移到52832。
就是keil烧录时候要注意:
1. 如果烧录了softdevice,要用jlink6.4(5.12不行)先擦除,再烧录
2. 如果是blank版本的工程,可以直接编译烧录
3. 如果是基于softdevice开发的工程,注意在下面选项中先选softdevice,然后download,再选择应用,编译后加载