[技术问答] HC32L110C6UA和XY-MBO21F蓝牙芯片的通讯问题 -- 已解决

[复制链接]
2674|11
 楼主| JacksonChen 发表于 2024-11-21 10:58 | 显示全部楼层 |阅读模式
本帖最后由 JacksonChen 于 2024-11-25 17:33 编辑

使能HC32L110C6UA的串口1与XY-MBO21F进行通讯,与蓝牙连接的手机app能够进行printf的输出打印,但是发送AT指令时蓝牙模块没有响应,请教一下大家是什么原因导致的?

-----------------------------------------------------------------------------
以上问题已解决,最后发现是代码逻辑问题,但是又有新的问题。
电脑端发送AT指令蓝牙有响应,手机端发送指令蓝牙响应是“ERROR”。
-----------------------------------------------------------------------------
后续跟蓝牙芯片的技术人员咨询了解到,该款芯片AT指令只支持在串口下发送,不支持手机执行AT指令。

核心函数代码:
  1. //处理串口指令函数
  2. void Parse_Cmd(void)
  3. {
  4.         uint8_t tmp_buf[128] = {0};
  5.         
  6.         //接收完成才处理
  7.         if(u8Rx**)
  8.         {
  9.                 if(strstr((char *)u8RxData , "AT+"))//控制AT命令
  10.                 {
  11.                         printf("%s" , u8RxData);
  12.                         sprintf((char *)tmp_buf , "%s" , u8RxData);
  13.                         Usart1_Puts((char *)tmp_buf);
  14.                 }
  15.                 else if(strstr((char *)u8RxData , "+VER"))//查询固件版本号的成功响应
  16.                 {
  17.                         printf("Firmware version number:%s" , u8RxData);
  18.                         sprintf((char *)tmp_buf , "%s" , u8RxData);
  19.                         Usart1_Puts((char *)tmp_buf);
  20.                 }
  21.                 else if(strstr((char *)u8RxData , "OK"))//指令设置的成功响应
  22.                 {
  23.                         printf("The setting has been successfully configured.");
  24.                         sprintf((char *)tmp_buf , "The setting has been successfully configured.");
  25.                         Usart1_Puts((char *)tmp_buf);
  26.                 }
  27.                 else//非法命令
  28.                 {
  29.                         printf("Unknown command = %s\r\n" , u8RxData);
  30.                         sprintf((char *)tmp_buf , "Unknown command = %s" , u8RxData);
  31.                         Usart1_Puts((char *)tmp_buf);
  32.                 }
  33.                
  34.                 //清理缓冲区和标志
  35.                 memset((char *)u8RxData , 0 , sizeof(u8RxData));
  36.                 u8Rx** = 0;
  37.                 uart_rx_head = 0;
  38.                 uart_rx_tail = 0;
  39.         }
  40. }




 楼主| JacksonChen 发表于 2024-11-21 11:01 | 显示全部楼层
本帖最后由 JacksonChen 于 2024-11-22 15:48 编辑

主函数就是初始化串口,接着就是在死循环里面执行Parse_Cmd()函数
p0gon9y 发表于 2024-12-17 22:44 | 显示全部楼层
对的,蓝牙不能支持AT的,一般都是串口支持AT的

cen9ce 发表于 2024-12-19 07:33 | 显示全部楼层
其实你设置成透传就可以了

l1uyn9b 发表于 2024-12-19 09:48 | 显示全部楼层
确实,一般情况AT指令都是在串口下发送的

lamanius 发表于 2024-12-19 10:50 | 显示全部楼层
这种通讯你最好选择是透传,就简单很多

ex7s4 发表于 2024-12-19 11:58 | 显示全部楼层
你要是想在蓝牙层面实现AT的话,那就只能自己改协议了

kaif2n9j 发表于 2024-12-19 15:33 | 显示全部楼层
建议还是用透传的模式比较方便一些

suw12q 发表于 2024-12-19 17:18 | 显示全部楼层
可以加个MCU,MCU用AT的方式控制蓝牙模块

su1yirg 发表于 2024-12-19 19:16 | 显示全部楼层
肯定没有响应啊,蓝牙是发内容的,不能发AT指令的

y1n9an 发表于 2024-12-19 20:11 | 显示全部楼层
其实你发AT指令给蓝牙估计也是被透传出去了
d1ng2x 发表于 2024-12-20 08:54 | 显示全部楼层
现在蓝牙模块有很多类型啊,直接选择个透传的多好呀

您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

26

帖子

0

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