[牛人杂谈] 新唐NuMaker-M032BT测评-极简氛围灯

[复制链接]
 楼主| yangjiaxu 发表于 2021-8-22 22:58 | 显示全部楼层 |阅读模式
本帖最后由 yangjiaxu 于 2021-8-22 23:01 编辑

@21小跑堂

感谢新唐的新品开发板-NuMaker-M032BT评测活动,说起来这应该是第二次参与新品评测了,挺开心,也不陌生了,新品嘛,资料肯定在官网找不全了,所以,在这里也要感谢21ic管理员帮忙从中协调,要到了一手资料来方便我们测评。接下来先看看NuMaker-M032BT长啥样吧。
0002.png
1 NuMaker-M032BT开发板
       NuMaker-M032BT开发板依然继承了新唐的大红颜色,非常显眼,图1右半边是板载Nu-link2,方便用户直接对M032BT芯片进行开发,减少用户开发时一些不必要的麻烦。在图1中的1是串口选择,是Nu-link2引出的一路虚拟串口,通过这个拨码开关来选择是连接到主芯片还是外部,拨码开关如图1所示的位置,是选择连接到主芯片上的。图1中的2是主芯片的电源选择拨码开关,正常按出厂默认即可。图1中的3是主芯片的扩展接口,新唐非常贴心的把要评测的主芯片的所有IO都引出了,还做了一组arduino接口,方便硬件拓展。图1中的4是主芯片的调试接口,这个在没有右侧Nu-link2调试器的时候可以排上用场。到此,硬件基本上是介绍完了。接下来讲一讲硬件如何快速上手开发。
       首先,需要官方的开发资料,如图2所示,其中,较为重要的是M031_Series_BSP_CMSIS_V3.03.000_NuMaker-M03xBT_210730文件夹。这里包含对NuMaker-M032BT开发板的所有软件方面的开发资料。这个开发资料可以在下方回帖找我索取。或者找官方的FAE索取都是可以的。
0003.png
2 开发资料
       本次使用的是Keil uVision5软件进行程序开发,官方的Demo代码支持GCC/keil/IAR,非常人性化,支持了大多数的开发软件,再也不用为开发平台不同,需要移植而发愁。既然第一次使用新唐的蓝牙MCU,还是先用个简单的例程先感受一下吧,所以本次我选择使用蓝牙控制灯的Demo-TRSP_LED,打开keil的工程。
0004.png
3 需要注意的地方
       图3原来是_CHIP_M031BT,如果我们使用032BT的话,需要把箭头所指的地方修改成_CHIP_M032BT,其实,这样的好处是代码集成度高,维护一套代码即可,通过程序也可以看出,M031BT和M032BT的使用方法基本一致。可能也就管脚初始化方面有些出入罢了。所以如果程序烧录进去发现MCU运行不正常,可以看看宏定义部分,程序是否是M032BT的。接下来是烧录,在keil的魔术棒的debug中选择nulink,选择之后其他默认即可,就可以烧录程序和代码仿真了。设置仿真器如图4所示。
0005.png
4 仿真器的设置
      一切准备就绪,就可以测试代码了,先把硬件连接电脑,然后烧录程序,使用官方提供的DemoAPP,即可测试蓝牙方面,蓝牙APP界面如图5所示,首先需要扫描蓝牙,也就是SCAN BLE,接下来选择要连接的蓝牙,看代码和搜索到的蓝牙,可以确定是Nuvoton_LED,点击这个蓝牙名称即可,如果连接成功,下方会提示英文:蓝牙连接成功,同时显示成绿色。
0006.jpg
4 APP的界面操作
      操作LED可以按照图5所示操作,点击OFF即可关灯,点击ON即可开灯。
0007.jpg
5 APPLED-Demo操作
      到此,软硬件的使用就完成了,总的来说,上手是没有难度的,从硬件到软件基本上是0门槛,大家都知道蓝牙比较难,但是新唐把复杂的部分给做成了lib,用户仅仅需要调用即可,不需要了解蓝牙底层的东西,所以就跟外挂一个蓝牙模块,MCU通过串口与蓝牙通讯一样简单,最后,我通过M032BT做了一个蓝牙氛围灯,同时还加了串口回显蓝牙接受到的数据,方便后续应用拓展,来结束本次的测评。
代码如下:
     蓝牙接收到数据,进行数据判断,如果是0X31即让灯亮,同时串口显示蓝牙接收到的数据,与此同时,我做了个氛围灯,调用rainbowCycle()即可。后两段代码是讲述了串口发数据和rainbowCycle()的内容。
  1. void trspx_receive_data_callback(uint8_t length, uint8_t *data)
  2. {
  3.                 uint16_t i;
  4.         
  5.     if (data[0] == 0x31) //user write '1'
  6.     {
  7.         //turn on LED
  8.         PF15 = 0;
  9.                                 rainbowCycle(255);
  10.                                 UART_TX_Send(length, data);
  11.     }
  12.     else
  13.     {
  14.         //turn off LED
  15.         PF15 = 1;
  16.                                 RGB_LED_Reset();RGB_LED_Reset();RGB_LED_Reset();RGB_LED_Reset();RGB_LED_Reset();
  17.                                 UART_TX_Send(length, data);
  18.     }
  19. }
  1. //show data on UART
  2. void UART_TX_Send(uint32_t len, uint8_t *ptr)
  3. {
  4.     uint32_t i;

  5.     for (i = 0; i < len; i++)
  6.     {
  7.         UART_WRITE(UART0, *ptr++);
  8.         UART_WAIT_TX_EMPTY(UART0);
  9.     }

  10.     //add a new line
  11.     //UART_WRITE(UART0, 0x0D);
  12.     //UART_WRITE(UART0, 0x0A);
  13.     UART_WAIT_TX_EMPTY(UART0);
  14. }
  1. void rainbowCycle(uint8_t wait)
  2. {
  3.     uint16_t i, j;

  4.     for(j = 0; j < 256 * 5; j++)
  5.     {
  6.         // 5 cycles of all colors on wheel
  7.         for(i = 0; i < PIXEL_MAX; i++)
  8.         {
  9.             SetPixelColor(i, Wheel(((i * 256 / PIXEL_MAX) + j) & 255));
  10.         }
  11.     }
  12. }
      效果如下:
0008.jpg
图6 氛围灯效果
0009.jpg
图5 串口回显数据效果




kiwis66 发表于 2021-8-23 07:15 | 显示全部楼层
nice,很棒啊
呐咯密密 发表于 2021-8-23 09:42 | 显示全部楼层
感谢豆包在周末给我们更新测评,泪目了

评论

+1  发表于 2021-8-23 10:48
 楼主| yangjiaxu 发表于 2021-8-24 11:57 | 显示全部楼层
呐咯密密 发表于 2021-8-23 09:42
感谢豆包在周末给我们更新测评,泪目了

给我哭 感动落泪那种
昱枫 发表于 2021-9-8 15:46 | 显示全部楼层
我看看
skay5288 发表于 2022-3-1 15:46 | 显示全部楼层
好棒
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:擅长电路设计、物联网产品开发、射频产品开发,喜欢打篮球,技术交流,欢迎各位来聊~

783

主题

3316

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部