公司新闻
行业新闻
炬芯-蓝牙语音遥控器方案

行业新闻|2021-11-12|YIPPEE

时下智能语音交互市场发展火热,越来越多的设备都开始支持远场AI语音数据交互。例如:智能音箱,智能手机电视系统等等。但这类产品的识别率和误唤醒率还需再不断的优化提升,即使在日常生活中,人们仍然离不开各种遥控器。 蓝牙语音遥控产品作为远场语音交互的近场配件,也搭上了这趟语音交互的高速列车,成长过也是令人惊讶。基于炬芯的ATB1103芯片的语音遥控器方案,打造了一个AIoT时代的高性价比精品。

1949.jpg

遥控器应用总体架构
遥控器的整体结构分为四层,从上到下分别是应用层、应用框架层、硬件抽象层、底层驱动层。

应用层

应用状态机–事件触发让遥控器应用处理不同的状态

应用定时器– 定时触发不同的事件,驱动遥控器正常运行

应用输入处理-处底层的不同按键信息

应用音频输入处理–对底层音频处理消息进行编码,并通过蓝牙将其发送到对方设备。

  BLE profile
Hid 配置文件,提供按键输入/输出接口服务

BAS服务,提供电池服务
DIS service,提供数据读取设备进行基本信息的接口服务
ota profile,提供 ota 升级服务


应用框架层:输入管理–按键映射处理、按键过滤机制,消息管理-消息的分配和发布,消息的发送和接收,内存管理–动态内存管理,闪灯管理– 灯资源进行分配和释放电池管理: 电源读取和电源管理。
   硬件抽象层:分离应用层和驱动层的中间件层。
底层驱动层:底层硬件操作接口。


遥控器模块流程概述
系统启动:系统相关初始化、板级相关外设初始化、蓝牙协议栈相关初始化、HidApp应用初始化,进入Main循环等待消息处理。遥控器状态机:遥控器在运行中,主要靠如下3 种状态可以维持他的正常运行。
触发遥控器进入空闲状态的事件:广播状态,无连接成功,超时事件,进入空闲,连接状态,断开,如无操作断开主动连接,然后进入空闲状态。

触发遥控器进入激活状态的事件:空闲状态,有按键、首次上电,进入激活状态,连接状态,异常断开,需要连接回来,进入激活状态

触发遥控器进入工作状态的事件:激活状态下,配对成功或者回连成功,进入工作状态。

按键处理:因为遥控器有很多键值,所以通常使用矩阵键盘来节省pin的使用。当使能Key 模块后,钥匙控制器将处于矩阵扫描状态。当检测到外部按键有值时,它将生成一个中断,中断将按键信息上报给应用。

  红外处理:在非连接状态下,按下按键,就会发射红外码,进而可以通过利用红外操作对端设备,如使用一个红外进行配对在 irc 上,最短的 ir 代码重新传输时间为108ms,而按键重新传输时间可能小于108ms 或大于108ms,因此按键输入和 ir 传输模块时间有三种可能性:
慢速点按

  慢速点按动作的特点是超过Trpc时间后有多个按键输入。Ta时发送第一个键值,Tb时不响应,Tc时继续发送检测到的键值,不发送重码。

快速点按
  快速点按动作是在 trpc 时间内的两个或多个推送拥有属性动作。在 Ta 时刻,将发送出初次按键,而 tb 时刻不发送按键值。在 tc 时,如果键仍然按下,则键值将被发送,否则将丢掉按键值长按。

语音采集
当语音键启动时,模数转换器开始采集。
采集的数据可以通过DMA 搬运到应用的循环buffer 中,同时发送消息给Main 线程,让其处理语音数据。
如果主线程不够快,audioin 驱动程序会丢弃收集到的语音数据,因为它没有缓冲区。

ble 数据传输:
编码和压缩 audioin 驱动程序发送的数据。
然后将编码后的压缩数据切成几个20byte 的数据包
最后可以通过hid profile notify 接口发送给BLE 协议栈