快速开发GD32和涂鸦CBU模组通信

Posted 三明治开发社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速开发GD32和涂鸦CBU模组通信相关的知识,希望对你有一定的参考价值。

MCU和CBU模组通信

采用兆易创新的GD32单片机和涂鸦 CBU (低功耗嵌入式Wi-Fi+BLE 双协议)模组进行通信。

本文将教大家如何从0开始上手GD32系列单片机,并移植涂鸦MCU-SDK来对接涂鸦CBU模组,快速接入涂鸦云。

实现功能:通过手机APP控制灯的亮灭。

程序下载路径:demo程序

工程搭建

本文选用的MCU型号为GD32E230C8T6,按照以下流程操作即可创建一个Keil5环境的工程模板:

  • 首先去官网下载GD32E230C8T6的环境支持包和标准固件库:
      对于E230、E231 如果您单独使用,要求KEIL 5.25以上,GD 的其他系列是支持KEIL4 的。 如果KEIL5版本低于5.25,程序会编译不通过。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6vB5Kurk-1622456754154)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531153057797.png)]
    环境开发支持包5.25以上
    在这里插入图片描述
    标准固件库

  • 按照自己使用的IDE选择相应的支持包进行安装:

  • 创建一个文件夹,并在其中按照下图创建相应的文件夹:
    - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JiVrPQBF-1622456713457)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531153949034.png)]

  • 下载GD32E23x_Firmware_Library
    在这里插入图片描述
    将其放在对应的文件夹里

  • 打开Keil5,创建新工程,然后选择对应的MCU型号。

    怎么在KEIL5中创建工程这里不在详述。

    MCU SDK移植
      进入涂鸦智能IoT平台,点击创建产品。这里不用纠结产品品类的选择,重点是为了拿到MCU-SDK文件,实际使用时可以根据具体的产品修改sdk内部的pid即可适配自己的产品。
    img
    这里以普通的灯为例,选择照明->光源->自定义方案
    img
    输入任意产品名称,通讯协议选择 WiFi+蓝牙,确认创建。
    在这里插入图片描述
    在跳出的界面点击红色箭头所指的地方,然后删除所有的已选功能,接着在左边选择光源的功能,选择功能为开关。选择好之后点击确定。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fga9mhMZ-1622456713460)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531175418150.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-73Jxh7zO-1622456713461)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531175706275.png)]
    点击设置面板,选择自由配置面板,如下所示。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6NVoB72I-1622456713463)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531174554842.png)]

    点开硬件开发一栏,对接方式选择“涂鸦标准模组MCU SDK开发”,模组选择CBU Wi-Fi&Bluetooth模组(在实际开发过程中可选择手上已有的涂鸦模组即可)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kp2GInrI-1622456713464)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531160311492.png)]

    固件选择标准通用固件

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TYUGMv6E-1622456713465)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531160346336.png)]

    拉到页面最下方,在下载资料一栏点击下载全部:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q5evB3kq-1622456713466)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531160229719.png)]

    在解压后的文件夹中找到mcu_sdk相关源文件和头文件,全部拷贝到我们创建好的GD32工程模板里的MCU_SDK文件夹里:; 打开GD32工程,将mcu_sdk的源文件添加进对应组里,同时添加include paths:
    在这里插入图片描述在这里插入图片描述

    点击编译,会崩出几个error,接下来就需要按照出error的地方注释提示一步步修改代码。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vLHUSwbO-1622456713467)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531160912620.png)]
    uart_receive_input()为串口接收数据处理接口,只需将它放进串口中断中即可,这里我们以串口1作为与模组通讯串口,调试中把串口0作为日志口,首先在main函数中添加串口0和串口1初始化代码,并使能接收中断(接收使能中断已在串口初始化函数中体现):
    在这里插入图片描述

  • 然后在usart.c文件中添加中断处理函数,然后包含 wifi.h 文件并将uart_receive_input()接口添加进去,添加完成后,删除error注释即可:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ls4EEMBB-1622456713471)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531161648466.png)]在这里插入图片描述

再来看下一个errror,由于我们上一步已经通过中断接收的形式实现了串口数据接收处理了,这个多字节处理我们可以不用,直接把error注释删除即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFbFRrZn-1622456713473)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531162850680.png)]
下一个errror:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6I5jwdyC-1622456713474)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531163026617.png)]

按照提示将该接口放在main函数的while循环内即可,别忘了在 main.c 中包含 wifi.h 头文件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FSCX5Pvq-1622456713474)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531163128709.png)]

再来看下一个error:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7hVtqZn-1622456713475)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531163323771.png)]
同样的,按照提示将该函数放到main函数开头部分即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MxPpHpiD-1622456713476)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531163407694.png)]

然后是串口发送相关:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lvhPqdy-1622456713476)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531163756239.png)]

这里只需实现串口1的数据发送函数然后放进去即可。使用GD32的串口单字节发送的库函数,同时对发送情况做一个判断,添加代码如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7tJzoQ3P-1622456713477)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531164000612.png)]在这里插入图片描述

然后是DP数据点上报相关的:

这里我们可以直接注释掉error提示,在实际开发过程中再实现该功能即可。红色标记的这句当硬件有设备可以控制灯的时候可以加上,如果没有可以不用加的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yrJKBc9B-1622456713478)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531164533518.png)]

以下这个函数,改成自己想实现的功能。此处当收到APP关灯指令时,让PA7这个口拉低,反之,则拉高。(PA7管脚控制灯的亮灭)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fkAt49yT-1622456713479)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531164837902.png)]

最后是产测相关的:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UYoxq0v0-1622456713479)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531165514528.png)]

一般开发者不涉及生产测试的话直接删除注释不用管就行。

下图这个红色标出的函数是进行配网的,通过板子上的一个用户按键进行配网连接。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cglaSeFh-1622456713480)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531173454830.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhm29uvR-1622456713482)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531173404454.png)]

修改完上述几处地方后,再次编译,显示error全部消除,至此涂鸦MCU SDK就已移植完毕,后续可使用涂鸦模组调试助手进行测试。涂鸦模组调试助手的使用方法可参考调试助手文档

实验结果演示:

通过之前配置好的面板,通过涂鸦智能APP进行配网控制灯的亮灭。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xnv8BIPc-1622456713483)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531170623734.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VPZvFeHz-1622456713483)(C:\\Users\\LDL\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210531170608515.png)]

以上是关于快速开发GD32和涂鸦CBU模组通信的主要内容,如果未能解决你的问题,请参考以下文章

涂鸦模组开发板,适用于cbu,ztu

涂鸦模组开发板,适用于cbu,ztu

涂鸦模组开发板,适用于cbu,ztu

涂鸦模组开发板,适用于cbu,ztu

如何快速使用STM32 HAL库和涂鸦Wi-Fi模组进行通信

制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)