手把手教你嵌入式国产化-实战项目-无刷电机驱动(1)

[复制链接]
1258|5
手机看帖
扫描二维码
随时随地手机跟帖
nbutjyy|  楼主 | 2024-6-3 15:51 | 显示全部楼层 |阅读模式
#申请原创# 文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发

       以GD32F103RCT6为例,蓝牙模块使用安信可BW16

        向上代码兼容GD32F303RCT6中使用

       感兴趣的点个关注收藏一下吧!

手把手教你嵌入式国产化-实战项目-无刷电机驱动(1)

介绍
       BW16是基于 RTL8720DN开发的双频Wi-Fi+蓝牙SoC模组。BW16支持双频(2.4GHz 或 5GHz)WLAN和低功耗蓝牙5.0;它集成了ARM V8(兼容 Cortex-M4F)高性能 MCU、ARM V8M(兼容 Cortex-M0)低功耗 MCU、WLAN(802.11 a / b / g / n)、MAC,蓝牙基带和 RF 基带,并提供了一组可配置的 GPIO 口,用于不同外围设备的控制。BW16 同时集成了内部存储器,支持简单的应用程序开发,可实现完整的 Wi-Fi 和 BLE 5.0 协议功能。

特点
支持802.11a/b/g/n 1×1,2.4GHz or 5GHz

支持HT20/HT40模式

支持低功耗信标监听模式,低功耗接收模式,低功耗挂起模式

内置AES / DES / SHA硬件引擎

支持TrustZone-M,支持安全启动

支持SWD调试端口访问保护和禁止模式

支持BLE 5.0

蓝牙支持高功率模式(7dBm,与Wi-Fi共享同一PA)

Wi-Fi和BLE共用同一天线

支持 STA/AP/STA+AP 工作模式

支持安卓、iOS的 Simple Config(APP) 一键配网

支持串口本地升级和远程固件升级(FOTA)

       我们本小结以板载BW16完成本实验:
48381665d74c2ac3ca.png



       首先查看原理图:

手把手教你嵌入式国产化-杂项-开发板V1.0版本(调试版本)
51460665d74d7d6cdb.png


       这里跳线帽对应的接口,与485复用,所以采样跳线帽方式连接。

代码
       首先初始化串口1(GD32系列命名是从串口0开始的)

       编程要点:

              1.初始化时钟
              2.配置USART1参数
              3.使能串口
              4.配置串口中断
              5.使能中断接受
41524665d754509d84.png
       这里初始化不是本节重点,我们主要以BW16配置为主!

       大家可以参阅手册去看一下所有的AT指令集,在这里经过测试,我已经整理出来了用作蓝牙主机/从机通讯的AT指令:

主机

AT+BLENAME=zhuji             //设置名称

AT+BLEMODE=1                 //设置为主机模式

AT+BLESCAN                   //设置网络

AT+BLECONNECT=94c96049c4cb   //连接从机地址

ATE0                         //关闭回显

从机

AT+BLENAME=congji            //设置名称

AT+BLEMODE=0                 //设置从机模式

       这里从机的地址可以通过地址查询码去获取本机的地址!

       对应代码:

       主机:

    Delay(0xfffff);
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"AT\r\n");
    Delay(0xfffff);
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"ATE0\r\n");
    Delay(0xfffff);
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"AT+BLENAME=zhuji\r\n");
    Delay(0xfffff);
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"AT+BLEMODE=1\r\n");
    Delay(0xfffff);
        Delay(0xfffff);
    Usart_SendString( DEBUG_USARTx,"AT+BLECONNECT=94c96049c5b1\r\n");
    Delay(0xfffff);
        Delay(0xfffff);

       从机:

    Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"AT\r\n");
    Delay(0xfffff);       
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"ATE0\r\n");
    Delay(0xfffff);
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"AT+BLENAME=congji\r\n");
    Delay(0xfffff);
        Delay(0xfffff);
        Usart_SendString( DEBUG_USARTx,"AT+BLEMODE=0\r\n");
    Delay(0xfffff);
    Delay(0xfffff);
       这里延时我为了保证每次成功,因此是加了延时的,大家可以根据一个实际使用情况,去自行更改,这里的DEBUG_USARTx我使用了宏定义去表达,其实就是串口1啦

       之后在建立了通讯后,就可以通过透传去传输数据了!

       我这里是使用按键去控制板子上LED的开启与关闭!

6355665d75d582b68.png

       主要是按键1和按键2,具体板子上的原理图可以去查看前面一章板载资源,为了方便移植,我这边源码里面已经全部采用宏定义的方式去表达!

       因为是简单的编写,所以我这里采用的是发送0和1去代码LED1和LED2!

       对应的接收文件:

65240665d75e75c796.png

       对应上文的发送,分别点亮LED1和LED2,同时会在OLED,屏幕上显示打印信息!

       相较于传统的HC-05/HC-06系列,安信可的BW16以及同系列在很多方面完胜,主要是价格也十分便宜!

       那么大家在使用过程中觉得哪个要更好一些呢?

HC-05学习传送门

       自此结束,目前
       GD32F103RCT6 基础型 目前已经完成了教程文档开发、源码编写、UCOSIII移植、函数重写,正在进行电机驱动开发
       GD32F107RCT6 互联型 目前正在制作多路CAN、485、以太网通讯,输入输出隔离的开发以及源码编写和UCOSIII移植
       GD32F407ZET6 目前尚未开始


       我会在后续时机合适的时候发表,关注我!第一时间了解!
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_62316532/article/details/136845437

使用特权

评论回复
caigang13| | 2024-6-3 19:27 | 显示全部楼层
怎么这么多搬运贴子了?

使用特权

评论回复
chenjun89| | 2024-6-4 08:10 | 显示全部楼层
安信可的模块价格这么低,它是怎么盈利的呢?

使用特权

评论回复
小鱼儿1045| | 2024-6-4 09:50 | 显示全部楼层
关注~

使用特权

评论回复
FranklinUNK| | 2024-6-20 19:47 | 显示全部楼层
这个模组多少钱啊

使用特权

评论回复
咕咕呱呱孤寡| | 2024-6-21 08:45 | 显示全部楼层
学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

1

粉丝