1. BLE蓝牙通信
1) 简介
ch573芯片集成低功耗 2.4-GHz 无线通讯模块,包括 RF 收发器、基带和链路控制以及天线匹配网络,支持低功耗蓝牙 BLE。内部提供一百多个寄存器用于调节参数和控制过程及状态,官方优化的通讯协议栈和应用层 API,支持组网,支持各种主流操作系统下的上位机开发,提供各 OS 下的 API 和 APP,具体信息参考官方ch573手册和大量的官方例程。
2) 蓝牙串口例程测试
a) 打开工程
官方提供了几十个BLE例程供大家参考,这里以蓝牙串口为例,打开例程“BLE_UART”的工程文件:
b) 打开peripheral_main.c文件
在主函数中我们可以看到系统首先初始化了串口1:
按住ctrl,然后左键单机app_uart_init();函数:

可以看到在函数中初始化了串口3:
记住上面两个串口以及对应的引脚,在接下来的APP调试中会用到:
c) 编译
打开工程后,点击项目,然后点击编译:

d) 烧录运行
烧录后,使用USB-TTL连接开发板的串口1,即 PA8(RXD1)\PA9(TXD1),打开串口助手,波特率115200,然后按下复位,系统会打印初始化完成
e) 安装BLE调试助手
手机应用商店直接搜索“BLE调试助手”,可以看到有一款沁恒官方的APP,点击下载安装:
f) 在应用中连接开发板
打开上面下载的APP,点击连接,同时串口助手中也可以看到连接信息:
g) 通信测试
选择最后的“Unknow Service”,完成数据发送:
在发送后可以看到模块发送了三字节同时接收到了三字节,在串口助手中也可以看到接收的数据大小:
然后我们将USB-TTL连接开发板的串口1换成串口3,即 PA4(RXD3)\PA5(TXD3),然后再次重复上述的数据发送操作,系统可以显示接收的具体数据内容:
然后我们切换到数据接收界面,关闭“hex”并打开“接收通知数据”
串口助手中点击发送(此时连接的是串口3):
在数据接收界面可以收到数据:
至此BLE数据收发测试完成,接下来我们依托这个数据收发的工程完成自己的应用开发.
2. BLE蓝牙点灯
1) 新建工程
为了避免改用引起的错误,首先复制粘贴原来的工程项目,并命名为“CH573F_08_BLE_UART”

2) 蓝牙串口数据解析
在上面的BLE蓝牙通信的使用中介绍到了蓝牙串口通过UART1打印日志调试信息,例如连接情况以及蓝牙串口接收数据的大小,并通过UART3完成蓝牙串口数据的收发,具体主要是体现在“peripheral.c”中的on_bleuartServiceEvt函数中,如下图所示:
写一个数据处理函数:
void PERSON_BLE_UART_DATA_HANDLE(uint8_t *data, uint16_t length);
在头部添加声明:
在串口发送后的下方添加调用,并在下一函数实体中添加实现,例如将接收到的数据打印并根据接收的第一个字符控制LED的亮灭,如下图所示:
/******************************************************************
* 功能:蓝牙串口数据处理函数
* 参数:uint8_t *data,接收的数据; uint16_t length,接收的数据长度
* 返回值:无
******************************************************************/
void PERSON_BLE_UART_DATA_HANDLE(uint8_t *data, uint16_t length)
{
UART1_SendString(data,length);
UART1_SendString("\r\n",2);
PRINT("data[0]=%c",data[0]);
if(data[0]=='1')
{
GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_5mA);//推挽输出最大5mA
GPIOB_ResetBits(GPIO_Pin_15);
UART1_SendString("LED turn on\r\n",sizeof("LED turn on\r\n"));
}
else if(data[0]=='0'){
GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_5mA);//推挽输出最大5mA
GPIOB_SetBits(GPIO_Pin_15);
UART1_SendString("LED turn off\r\n",sizeof("LED turn off\r\n"));
}
}
3) 编译烧录运行
烧录后,使用USB-TTL连接串口1引脚PA8(RXD1)\PA9(TXD1),打开串口助手,设置波特率115200,打开串口,然后按下复位键,等待APP连接后重复上一讲的数据发送,不同的是,发送的数据是单个字符“0”和“1”,如下所示:文章来源:https://www.toymoban.com/news/detail-699276.html
在串口助手中可以看到对应的处理结果:文章来源地址https://www.toymoban.com/news/detail-699276.html
如果串口1和串口3的蓝牙数据收发状态如上图所示,即达到本实验的目的,如果异常,请检查源代码,如有疑问可关注公众号 “IOT趣制作”,将您遇到的问题描述出来,平台收到您的留言后会第一时间进行解决。
至此CH573快速入门-基础篇的教程到此结束,下一章节开始进入【第三章 进阶开发篇】,将结合多个传感器、执行器以及Android Studio的自定义蓝牙APP等多个内容进行详细讲解。
到了这里,关于CH573-08-BLE蓝牙(通信与点灯)——RISC-V内核BLE MCU快速开发教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!