本帖最后由 imwangwang79 于 2022-10-4 10:50 编辑

本次收到Telink B91系列的开发板是8月末的事情了。说实在的,试用了一番之后,感觉有点失望。
Telink主打是蓝牙BLE,和蓝牙Classic 2.1 EDA的功能,也就是蓝牙全栈、全系类的覆盖。由于蓝牙覆盖了音频的功能,所以开发板也自带了双DMIC (数字MIC)和双AMIC(模拟MIC);并且带了一个Audio Codec。Telink和其他蓝牙开发板相比主要的特色在于Audio 相关的功能增强;并号称支持最新的Bluetooth BLE Audio。可惜的是,从商家客服得到消息,此次开发板并不支持Bluetooth BLE AUDIO的功能,其实以我的经验,BLE Audio对硬件并没有太多的依赖,在尝试编译SDK自带的BlE Audio相关的组件的时候,报错部分库文件丢失。我相信应该是Telink相关的软件开发工作并没有到可以出正式版的地步,或者是仅供付费用户使用。这一点让我有些失望。
Telink的SOC也未带相关的PA,Audio Codec内部其实是一个非常简单的DAC和ADC功能。感觉比较鸡肋,还不如把ADC/DAC做成通用模块, Audio Codec使用Circular DMA管理PCM数据,但从代码里面只看到Polling的方式,并未看到设置water level 的中断方式。如果只能用polling的方式的话那要占用大量的CPU;功耗也下不来,那就很大程度上限制了Codec的使用。

也许是我使用Nordic的芯片久了,同样是主打蓝牙的芯片,Telink的芯片设计思路相对比较混乱;Nordic是用软件面向对象的思路去设计SOC的各个模块,Timer/SPI/I2C/RTC/PWM等都有各种TASK和EVENT,这些模块就是OO设计中的对象,TASK/EVENT对应于线程/进程和状态机的事件响应。这些模块要么可以通过MCU的中心处理器用软件来协同处理,要么透过逻辑器件PPI在硬件上进行联动。从而达到了效率和功耗的最佳匹配,在蓝牙芯片这一块,我认为Nordic是我所有用过的此类芯片的天花板。Telink的SOC设计其实是想走蓝牙专用芯片这一路,但是没有一个特定的场景去有针对性的设计,比如说蓝牙音箱(降噪、PA,更好的Codec(无损),音效等),BLE Audio (功耗,PA,音效),蓝牙AOA (极小的footprint,功耗等);最终做了一个四处折中的设计,反而影响了竞争力。
撇开硬件不谈,如果软件上有所突破创新也许也能有特色,然而,我并没有看到准确率更高的语音唤醒功能,也没有看到特别好的降噪,音效等算法。仔细看了相关的测试代码,USB音频只是很傻的copy一段固定buffer,根本没有愿意多加几行代码把circular buffer用上,Quality有点堪忧。贴上我改过的USB MIC代码,现在已经可以完整的支持录音功能了。其实也就一个函数而已,有点说明Telink的软件能力也偏弱。
code_snapshot.png