nRF51822有几种型号,区别在于FLash和SRAM的大小不同。而micropython需要大于128K的Flash才能运行,因此需要nRF51822AA或者nRF51822AC,nRF51822AB则不行。
找了一下已有的开发板和蓝牙模块,发现有三种带有nRF51822,其中微雪的BLE400使用了nRF51822AC,另外一个蓝牙串口模块使用了nRF51822AA,可以尝试,另外一个Seeed Arch BLE使用了nRF51822AB,不能使用。在研究了一下电路图,发现microbit的REPL使用的串口是P0.24/P0.25,只有微雪的BLE400可以通过飞线方式实现。
在BLE400上,取下连接串口的两个短路帽,用杜邦线连接到P24/P25,其中P24连接CPRX,P25连接CPTX。
![](https://static.assets-stash.eet-china.com/optimized/2X/6/655b8fd0ac174979e4ad6b8e426db86894765cd6_1_800x444.jpg)
找了一个Jlink OB,将microbit.hex下载进去。下载后LED开始有规律的闪动,说明程序开始运行了。另外从J-FLash的文件窗口可以看到,FLash已经使用到0x3E090,256K的空间已经所剩不多了,不到8K。
![](https://static.assets-stash.eet-china.com/optimized/2X/0/0c149fb254d59ee9f49d7f22408462a93cc64ecb_1_800x620.jpg)
因为BLE400上带有CP2102芯片,可以直接通过它连接串口,所以不用另外的USB转串口了。连上超级终端,设置好串口参数(115200,无流量控制),发现没有任何反映。感觉可能是hex文件中带有默认的程序,已经在运行默认的程序了,所以没有提示,于是按下Ctrl+C尝试终止,果然就看到了熟悉的MicroPython的REPL界面,做了简单的尝试,大部分功能都在,支持浮点运算和大数计算,这一点比CC3200好多了。当然板级库不在是pyb或者machine,而是变为了microbit。
![](https://static.assets-stash.eet-china.com/optimized/2X/7/7c033b6853b929f0e0d9ab9ea367a9def529a4ff_1_800x533.jpg)
先写这么多了。如果大家也有nRF51288AA或者nRF51822AC,并且P24/P25可以引出来,可以试试下面的固件,体验一下。
固件文件