#申请原创# 文章基于兆易创新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完成本实验:
首先查看原理图:
手把手教你嵌入式国产化-杂项-开发板V1.0版本(调试版本)
这里跳线帽对应的接口,与485复用,所以采样跳线帽方式连接。
代码
首先初始化串口1(GD32系列命名是从串口0开始的)
编程要点:
1.初始化时钟
2.配置USART1参数
3.使能串口
4.配置串口中断
5.使能中断接受
这里初始化不是本节重点,我们主要以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的开启与关闭!
主要是按键1和按键2,具体板子上的原理图可以去查看前面一章板载资源,为了方便移植,我这边源码里面已经全部采用宏定义的方式去表达!
因为是简单的编写,所以我这里采用的是发送0和1去代码LED1和LED2!
对应的接收文件:
对应上文的发送,分别点亮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
|