BES(恒玄)单线 串口通讯实现

本文介绍 恒玄方案 耳机和充电盒之间的单线 通讯和是实现。

充电仓通讯有很多用途:a.充电盒基于霍尔senor的开关盒/配对等命令;b.获取修改耳机蓝牙地址; c.耳机当前电量获取等。

一:单线通讯协议定义:
双方TTL信号通过一根信号线,一根地线来进行通讯。(半双工)
在这里插入图片描述
充电盒 耳机连接 逻辑 示意图
在这里插入图片描述
耳机部分原理图设计 。

二 :充电仓通讯

  1. 单线通讯比特率 :38400 用户可以根据不同充电盒设计修改通讯波特率 (个人建议使用较低的波特率 ,硬件调试相对容易)

  2. 通讯协议命令: 支持用户自定义通讯协议和命令。(本文采用 帧头+命令 的形式)。

比如 我下文介绍使用的 开盒指令 0xa1 ,0x01;关盒指令 0xa1,0x02.

3.通讯原理以及过程实现:

由于LED2(GPIO_CHARGE)不仅需要承担出入盒检测 ,还需要做单线通讯。

所以在通常状态下需要把LED2设置为GPIO中断模式,等待LED2被拉低 触发中断后,再次 初始化为RX接收模式。

如果这个时候有消息需要发送就初始化为 TX 模式 ,在TX数据发送完成后 默认切回RX模式 RX模式等待时间可以调整(默认150*100ms=15s)调整的时间不能小于一个充电盒发码周期。

三:源代码修改和实例化:

1.初始化 原SDK携带的单线通讯端口。

在这里插入图片描述

2.注册回调函数 ,写好对应接口函数(RX message处理)。

在这里插入图片描述

3.在apps文件中 app_init 函数里面相应位置初始化启动。

在这里插入图片描述

四:常见问题和调试

1.无法接收充电盒数据

这个可以分步骤查询

a, 检查默认初始化是否为RX接受模式;

b,如果配置为IO中断的情况下 是不是充电盒无法将5V拉到底 没有触发中断 ;

c, 充电盒发出波形异常导致。

2.RX接收数据总是为 “UART RX status:0 len:1 00”

这个一般是已经启动了RX数据接收,但是由于充电盒 波形不对 或者不标准导致,需要用示波器抓波形分析。

3.在RX数据接收 状态下 或者RX idle 状态下 无法检测出入盒问题

因为在RX模式下 关闭了IO 中断 ,所以只能使用 轮询模式检测耳机出盒动作。

在这里插入图片描述

在这里插入图片描述

五 :总结

BES 充电盒的单线通讯其实比较简单,就是IO口基于不同状态的切换 然后在原有的接口函数上加自己的通讯协议 .
后面附件会加上我这边的实例化 代码 供大家参考 指正 ,谢谢!

微盘链接:

https://share.weiyun.com/YHebhaJt

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值