一、背景
近期收到了沁恒发来的三模键盘(BLE+2.4G+USB)方案demo,准备测一下看看demo做到了什么程度。
先看看提供的资料包(命名有点随意,哈哈哈哈哈)。
解压以后的资料内容,如下图共5个文件。
第1个firmware是软件,里面有2个文件夹。
第2个firmware是软件,里面有3个压缩包,没有说明,打开看了一下第3个是dongle,第1和2个是键盘硬件,2看命名应该是新一点的。
用Altium Designer可以打开,打开如下图:
第3个image打开来看里面是2个逻辑框图,一个数据处理,一个是RF配对流程。对应后面理解程序有一些作用,方便阅读代码。
第4个不知道是啥,接着往下看。
第5个是简介,用浏览器可以打开,里面相当于说明文件。
比较良心的是寄来测试硬件(键盘PCB+Dongle),不然还得自己打样焊接,不能立马测试,这服务没的说。
正面(我测过硬件,顺便把几个功能切换按键标注出来了,贴纸部分的按键)
反面+Dongle(Dongle比1角硬币还小,很紧凑)
这里不得不夸一句,沁恒提供的测试硬件还是很良心的,看焊工不错,一看就是有功底的电子工程师,板子很干净,焊点也比较漂亮,初测了一下,正常下载都没有问题,各个按键都是可用的。
二、调试准备工作
下面来分享一下具体的测试(CH582是RISC-V内核的,哈哈也算是赶潮流的,沁恒在自己涉及的专业领域都钻研的比较深,比如最开始使用的CH340/CH341 USB 转串口,后来用过U盘管理芯片CH376,现在连103都做了,BLE也做的不错,看过网上拆解的游戏手柄用的就是CH573),所以想来RISC-V应该也不会差。
编译器安装环境,我参考这个链接:
https://blog.csdn.net/qq_36353650/article/details/120348521?spm=1001.2014.3001.5501
先安装MRS,打开工程
界面对比keil还是有点相似的,用法实际上也比较相似,都是C编程,上手不太难。
编译问题解决了,现在要想办法把代码下载到硬件里面,咨询了技术支持,CH582每个芯片都自带BOOT,可以使用USB和串口进行下载,三模键盘都有USB口,可以用USB口,感觉要简单一点。
下载工具链接:http://www.wch.cn/downloads/WCHISPTool_Setup_exe.html
安装后的样子
先把编译好的dongle和键盘代码下载进去测一下已经实现的功能
下载键盘固件
把P6这个跳冒短接,然后USB接PC
下载的几个坑要注意回避:
1) RST不能使能复位,因为RST是PB23,RST低电平有效,如果勾选,有些按键会导致复位生效,然后就外部复位;
2) 下载引脚为PB11。默认下载脚是PB22,如果不选择PB11,用默认的PB22,每次上电都会进BOOT,但是会超时,后来我测差不多是10s,问了官方技术支持,BOOT确实有这个超时退出的功能。
当时这个也是查了很久,一开始没注意,每次都过了很久键盘才能上传值,后来看设备管理器,发现设备管理器会跳,以为是上电会复位一次,但是仔细看现实外部接口-USB Moudle的设备,然后才是HID的设备,然后偶然发现USB Moudle的设备ISP工具能搜索到设备,是进BOOT了,整个大乌龙;
3) dataflash清空可以把dataflash里面存的信息清掉,调试过程还是有用的;
上图键盘代码已经下载进去了,下载Dongle要麻烦一点。
Dongle下载也要PB11触发,PB11实际是D+引脚,要触发我搞了个转接头,用的时候用镊子短接一下D+和V33,这样就可以触发进BOOT了。
至此下载终于搞完了,下面就是测试功能了。
沁恒的USB做的比较久,尤其是CH340 CH341,每个做嵌入式开发的技术工程师都应该至少有1个吧,USB这块问题应该不大,先从最稳妥的下手,测USB模式。
三、具体测试
(1)USB模式测试:
按照这个说明,Fn+Pause是USB有线模式
键盘的背面P7有个插针是TXD,可以输出打印信息
波特率921600,默认的打印信息,上电以后默认是BLE模式,这个时候按住Fn+Pause测试USB有线模式
测试打印字符(吐槽一下,这个小白的按键测试真心废手,按的有点疼),测试效果如下,先简单试试功能,后面具体对照代码再详细测试,至少目前测试USB模式下可以正常进行按键扫描和USB数据上传。
(2)蓝牙模式测试:
测一下蓝牙模式,按住Fn+Insert切换到蓝牙模式,
可以看到广播开启,
搜索设备,点击连接
设备连接状态,测一下打字,可以正常打字如下图:
测一下蓝牙回连,键盘上下电,测试回连速度:
切断键盘供电,电脑提供连接断开时间在3-5s,说明默认配置的蓝牙通讯超时时间是这么久,这个在代码里面是可以配置的;
回连基本上电后秒连接,时间长不到1-2s,比较快,很不错,连上直接可以发送键值,基本零等待。
蓝牙多设备功能(1台键盘可以在PC、pad、甚至手机等多个主机之间进行切,直接进行字符上传),配对多个设备,切换后零等待,办公就方便多了,是个很实用的功能。
Fn+1、Fn+2、Fn+3、Fn+4可以和4个主机进行配对,功能挺好。
比如Fn+1跟主机1连上去以后,按Fn+2切换到从机2,主机可以重新搜索配对,连接后正常收发,此时主机1是处于配对模式,重新切换到Fn+1,可以立即回连,零等待。
(3)2.4G模式测试:
2.4G模式相比蓝牙,虽然都是无线模式,不过蓝牙模式有使用限制,比如有的不支持蓝牙的主机就无法使用,CH582做的三模键盘,就是纯BLE的,不支持经典蓝牙,所以即使是蓝牙也有区分;2.4G模式就没有这个限制因素,它必须有个USB的Dongle接收头,避免了无线对主机的兼容问题,另外2.4G可以做到1000Hz的上报率,BLE通讯间隔最小7.5ms,2.4G的传输更快。
Fn+Src切换到2.4G模式,按住Fn+5开始配对,基本零等待,秒连接,如上(左)图。按下按键可以正常发送键值。测试2.4G断连和回连速度
键盘重新上下电,测试Dongle自动回连的速度,配对后,键盘重新上电,Dongle不掉电,秒连接,零等待,立即可以发码打字;
Dongle重新上电,Dongle上电后10s处于等待新配对模式,10s后,秒连接,零等待,立即可以回连发码。
反复多次测试键盘和Dongle上下电,均可以正常使用,异常情况处理也很不错。
优缺点总结:
1) 基本都已经实现,功能规划比较合理;
2) 2.4G回连速度挺快的,也有跳频,抗干扰要实测;
3) 2.4G模式上下电测试反应速度挺好;
4) 上传模式支持普通按键、多媒体按键、鼠标和系统控制报表;
5) BLE多设备功能;
可以改进的地方
1) 工程代码比较复杂,多点注释就好了。