本次试用的作品创意是计划做一对对讲机,即通过TKB-623评估板传输音频数据。因此我比较关注数据传输速度和稳定性。从参数上看,该模组最高通讯速度可达85.106kbps。理论上是能个满足基础的语音通信的。

我通过一个USB hub连接2个评估板,在设备管理器里面可以看到有两个CH340转换出来的串口。

我先在串口调试工具中把可能用到的一些命令先录入快捷按钮中,方便后面测试。

先是进行了一些常规命令的测试,确认两个模块都有响应,都能正常工作。

然后把两个模块使用重置命令“AT+RSTPARA”都重置成默认参数,进行数据对传。经过验证,不管是发字符串,发短十六进制数,还是发长串的十六进制数,都能正确收发。

考虑到做对讲机的话,透传模式最为合适,下面我着重测试透传模式的性能和传输可靠性。首先就是使用At指令“AT+RATE=18”和“AT+TXP=15”将模块设最大速率和最高功率,然后用“AT+WORKMODE=81”让模块双双进入透传模式。这里多说一下,这个设置是掉电保存的,非常好,方便后续做程序。

为了便于计算,我先设置了100字节的字符串数据,使用不同时间间隔定时发送,然后对比发送和接收的数据量,判断其速度和稳定性。通过一步步测试,发现这两个模块传输还有差异,其中一个模块(设为A)可以设置到16ms间隔发送一次,另一个模块(设为B)都能完整接收。然而模块B只能设置最小48ms间隔才能保证A模块完整接收不丢数。
下图是47ms间隔丢数的测试结果。

下图是48ms间隔不丢数的测试结果。

经过反复测试,这个不丢数的间隔偶尔也会差几毫秒,没有找到规律,也没摸清为啥这两个板子差这么多。然后我查找板卡规格书,指令操作手册,芯片规格书等资料,最终在《TK8620 无线终端芯片数据手册_V1.3》中找到原因,这个差异应该是发送字节数和缓存不匹配造成的。

规格书中描述收发都是由两个64字节的缓存交替存储临时数据,我一下发送100个字节超出了缓存值,在来不及交换时收到新数据,就会丢数。基于此,更改发送数据为64字节,然后我把发送间隔最小改为1ms,都不再丢数。

由于串口调试工具最小间隔就是1ms,没法测试更快的发送间隔了。基于此计算实际传输速度。大概相当于每秒4K字节,40K位每秒,达到了宣称的一半速度,理论上减小发送间隔时间还能再提高传输速度。

在实际单纯语音传输中,通过数据压缩,4KB/s的数据传输速度也能凑合用,我在后面实际设计中再测试效果。
另外我还测试了两个模块一起发送的效果。在200ms以上间隔的时候,两边都能正常收发,低于这个间隔,就会出现丢包情况。这个在官方文档中也有说明,模块为半双工模式,同时发数如果时隙不够就可能丢数。这个情况不影响做对讲机的需求。

以上测试了基础的通讯速度和可靠性范围,得出结论是每次发送数据包不能大于64字节,最小间隔能小到1ms,后续编写应用程序,就以此为基础。
|