我平时玩 STM32 比较多,去年刚好又从玩NXP的KW41入门学习了BLE,这次借机会重新温习一下BLE,从不同角度把 BlueNRG-1 与其它产品进行了一下比较。
评估板的配置方面,STEVAL-IDB007V1 并没有带调试器,而是提供20-pin的JTAG连接口。板子上的USB口连接PC得到的是虚拟串口和虚拟磁盘,可以支持软件烧写程序以及直接复制文件到虚拟磁盘方式烧写。但是和用ST-Link通过SWD进行烧写比较,并不那么好用,比如在 BlueNRG-1已经有程序运行时可能不容易进入bootloader. 虽然能玩这个的基本上手里都有其它开发板带的调试器可以拿来用,我觉得还是集成ST-Link-v2-1更实用些。
其它的,Arduino兼容的插口似乎成为开发板的标配了没什么可说。在供电方面,针对低功耗评估 STEVAL-IDB007V1 留出了电源选择的跳线,背面还有电池盒,板上附带了两款传感器芯片—— LPS25HB 和 LSM6DS3,单靠这个板子就可以直接做点小应用了。细节处的不足还是有的,比如两个传感器没有设置断开电源的跳线,如果用不到也会消耗一点电流(相对于BlueNRG-1的电流并不一定可忽略)。
开发软件方面,评估板配套的 Navigator 软件可以说是很友好,哪怕没有开发工具,也可以直接下载已编译好的HEX进行体验,有利于初次接触BLE的用户。对熟悉STM32软件开发的朋友,用起BlueNRG-1不会太陌生 (参看 http://bbs.**/thread-609249-1-1.html 以及 http://bbs.**/thread-609649-1-1.html)。SDK的函数和STM32系列的 Std Periphral Library 提供的很相似,只是好像缺了 HAL库和 CubeMX 的支持。在像我这样喜欢写寄存器操作硬件的玩家看来,尽管都是ST家的产品,BlueNRG-1和STM32F0的硬件寄存器差异还是明显的,不能直接把自己写好的STM32的程序不改就搬过来用。
和我早前接触的NXP KW41在BLE开发上进行对比,BlueNRG-1 是更容易上手的。KW41因为用了操作系统抽象层,比如结合 FreeRTOS,入门的门槛提高了,代码树也复杂。BlueNRG-1 的 BLE Stack API 简洁了很多,在有了STM32开发的基础,拿DK中Demo的工程学习一下,上手编写一个BLE设备不是困难的事。要再提一下,BlueNRG-1 的文挡和 STM32 比起来就不够详尽了,我在自己写程序测试的时候就遇到几个坑(http://bbs.**/thread-611910-1-1.html)。
最后总结低功耗,确实板子能做到 BlueNRG-1 手册上的 0.5uA Standby模式,和带有32kHz时钟的 0.9uA Sleep模式。BLE无线只在需要的时候间歇工作,系统基本在休眠状态,这样的确是很省电的。这个低功耗的实现是软硬件结合,见我写的 http://bbs.**/thread-611873-1-1.html 帖子. 在 BlueNRG-1 本身的资源有限(SRAM不大, 片上其它设备也不多且缺乏low-power唤醒功能)的情况下,把它作为单独一块BLE部分配合更强的MCU来使用也可以是很好的方案。
|