2024-07-02
GR5526 GUI专题(4) - Lvgl字体的位图数组合并转换为bin文件的说明
写技术文章
精选推荐
大道至简
最近居家办公,鼠标用着用着突然坏掉了。
怎么办?换一个?那是不可能的。直接撸起袖子修啊。
但是修着修着,为啥不直接升级呢?
为什么要升级?因为原有鼠标是用的2.4G,意味着要独占一个USB口,而我笔记本正好只有一个USB口,另外,之前也有遇到过紧要关头,突然电池就没电的尴尬境遇。希望能改为锂电池的。最后,家里面电脑也比较多,桌子上都是鼠标?换来换去,岂不是很不爽。
为了逐步解决这些问题,于是有了如下想法:
首先是硬件改动:
要满足上述需求,就必须要替换一颗带BLE 基带的SOC,然后将原厂鼠标硬件的外设,如按键,滚轮,光电传感器进行接管。
1、按键篇:
上图红框部分为鼠标的左右按键,原厂按键是矩阵扫描的方式,因此我们需要改造一下,
上图红圈是按键的背面,这里我已经打胶了,大体改动就是将之前的走线全部隔断后,将两个按键的GND短在一起,后面分别使用两个GPIO去读取信号,其中需要保持上拉。按键采取下降沿触发。
滚轮篇:
该鼠标用的是机械式滚轮,其原理也很简单,上图红框即为机械滚轮传感器,其中包含三个引脚,一个为GND,另外两个为信号分别为A,B信号脚。当滚轮转动的时候,A,B引脚分别和GND导通,以此产生特定方波,同时根据A,B信号脚的相位先后关系可以确认滚轮方向。
因此,只需要通过两个GPIO读取A,B信号脚,同时需要保证内部上拉电阻使能。
光电篇:
上图红框部分为光电传感器(型号:FCT3065),这个传感器是国产的,但实际上内核仿的是PAW3205, 因此只需要参考后者的datasheet即可。
从芯片引脚定义来看,我们仅需要接管2,3,4号引脚即可。
下面是总线时序图:
乍一看以为是I2C,实际一看完全不是,读写位放在高位,而不是低位,没有I2C的ACK信号,同时读,也不需要RE-START。因此整体看还是很简单的。
再结合下列寄存器列表:
在默认的情况下,仅需使用上图红框的寄存器,即可Driver该芯片。
如果我们需要打造低功耗的产品,异步通信极为重要,因此这里就需要它提供的MOTION脚。当有信号时,它会主动唤醒SLEEP时的SOC,然后SOC再去采集sensor中的数据。
SOC篇:
上面讲了原厂鼠标PCBA上的器件如何驱动,现在看下我们选用的SOC情况:
这里选用一颗名为GR55xx的芯片,内核架构是Cortex-M4F,主频高达96Mhz,内嵌BLE5.2 基带,512KB的RAM,以及1MB的flash。丰富的外设资源,此处来满足鼠标需求,堪称砍瓜切菜。
电源篇:
首先,我们支持充电,这里挂了一个TP5046 1A充电芯片,电池挂了一个380Mah的锂电池,
电池动态范围3.2v到4.2v,但是我选取了3.5v到4.2v作为有效电量区域。这里自己搭了一个简单的分压电路,分压比为1:3,因此4.2V时,ADC实采1.4v。
同时,我们选用的模组自带了一个LDO,因此不在需要额外追加稳压电路,只需要将模组上供出的VBAT电压分给鼠标PCBA用即可,SOC本身采用的VBAT。
硬件改动基本讲完了,这其中涉及到一些改模的地方,就不细数了。上几张装机后的照片:
这两张和原厂是没有什么区别的,主要看下张:
1、红框是一个跳线开关,切断电池电源用。
2、绿色为TYPE-C接口的充电头。
3、蓝色框标出的是一组SWD+UART 调试口。
软件篇:
1、整机采用了FREERTOS,开源,小巧,稳定,易用的嵌入式实时操作系统。
2、BLE部分,集成了HID/BAT/DIS 三大基础service。
3、其中涉及到按键,滚轮编码,光电传感器等驱动的集成。
功能对比:
改造前 | 改造后 | |
供电 | 干电池 | 锂电池 |
能否充电 | 不可以 | 可以 |
支持2.4G | 支持 | 不支持 |
支持BLE | 不支持 | 支持 |
支持多链接 | 不支持 | 支持 |
支持OTA | 不支持 | 支持 |
支持SHELL | 不支持 | 支持 |
支持电量采集 | 不支持 | 支持 |
截至目前,已调好基本的鼠标功能,配对,链接,基本通信,坐标上报,按键上报,电池电量上报。
后续有空在陆续完善OTA/多链接/低功耗调优等功能。
改完以后,再也不需要更换电池,不需要独占USB口了。这里说下为什么要支持多链接,因为这样可以一个鼠标,控制不同电脑了,不需要多个鼠标,或者换来换去的。
打开微信,使用“扫一扫”即可关注