CH32V208 USB 转蓝牙键盘装置
2022-12-181.1万
精华项目
AI 快速预览详细
这个项目基于CH32V208WBU6微控制器,实现了USB键盘到蓝牙键盘的转换。硬件部分包括QFN68X8封装的CH32V208WBU6、天线设计、外部晶振校准等。软件部分结合了官方提供的示例代码,实现了USB Host与键盘通讯,并通过BLE蓝牙发送按键数据。该项目提供了详细的电路设计和代码实现,适合DIY爱好者和开发者。
|
CH32V208系列是一款32位RISC-V设计的无线型微控制器。它的外部接口非常丰富,片上集成2Mbps低功耗蓝牙BLE 通讯模块、USB2.0全速设备+主机/设备接口。这次的作品就是基于蓝牙BLE和USB 主机功能实现的。 简单的说这个作品的原理是通过 USB Host 和键盘进行通讯,取得按键之后再通过BLE蓝牙发送出去。 作品设计是围绕 CH32V208进行的,目前公开的型号有如下几种,这次使用的是CH32V208WBU6,它是QFN68X8封装的,这个对于手工焊接稍微有难度,如果有可能最好使用加热焊台配合焊锡膏进行。选择这种封装的唯一原因是目前市场上还没有其他封装。
完整电路图如下: ![]() 需要特别注意的有下面几点: 1.E1 是一个天线,我是根据WCH官方提供的 LIB 导入到立创EDA完成的其中L1和C16。C17 的电容是来自官方评估板电路图,我并不知道为什么这样选择,也不知道是否需要进行调整; ![]() 2.和评估板相比,没有设计 OSC32IN/OUT 这一组晶振,它只在使用 BLE Client的时候才会用到,这次的设备是作为BLE Server 的,因此不需要。外部使用了32Mhz的晶振,CH32V208内部带有可以设定的匹配电容,所以外部不需要。晶振是YXC(扬兴晶振)的X503232MSB2GI,从立创商城购买。 ![]() 3.芯片工作电压为3.3V,沿用了多次使用的TLV1117芯片 ![]() 4.板子带有一个USB母头和一个USB公头,前者用于连接USB键盘,后者用于取电 ![]() 5.下面是一个负载消耗电流的设计。很多充电宝在小电流输出一段时间之后会自动切断输出,因此使用PA3GPIO控制每隔一段时间拉一个大电流出来,这样能够维持充电宝的输出。 ![]() 6.预留了下载按钮,这样可以方便烧写程序 ![]() 7.最后是预留的调试接口,串口输出: ![]() 天线的设计来自WCH官方提供的参考库,对应的 PCB 厚度为 1.6mm。 ![]() PCB 设计如下: ![]() 硬件介绍完毕,下面讲一下代码设计。官方提供了丰富的示例代码(比 CH567 多很多)。对于我们来说相当于将下面这两个示例代码合并在一起: 1. BLE 蓝牙键盘的示例代码,位于 CH32V20xEVT\EVT\EXAM\BLE\HID_Keyboard。这个代码的功能是:模拟键盘设备,连接主机后定时上传键值; 2. USB Host 连接USB键盘的代码,位于CH32V20xEVT\EVT\EXAM\USB\USBFS\HOST_KM。这个代码的功能是主机操作键鼠,获取键鼠上传的端点的数据并打印,支持U口下1级hub; 针对这次的设计有如下修改: 1. hidkbd_main.c使用1M作为串口调试波特率,在速度较低的情况下,发送调试信息可能会导致USB方面的问题,所以这里使用比较高的波特率(我是用 CH343 制作USB串口调试器)避免调试代码干扰运行
3. 使用 PA3 来控制三极管,进行电流消耗。在hidkbd_main.c中定义了一个变量Elsp进行计时 app_km.c 文件中,有一个函数void TIM3_IRQHandler( ) 用于处理USB HID 的间隔事件,同样的,我们在其中更新Elsp,具体可以看 TIM3 的初始化相关代码,这个函数每隔9ms触发一次,我们在其中对Elsp进行自增。 在Main_Circulation()函数中我们检查这个计时变量当10秒左右的时候拉一次PA3控制三极管输出大电流。 void Main_Circulation(void) 4. 获得键盘数据的代码在 app_km.c 文件中的voidUSBH_MainDeal( void )函数。取得之后,通过HidDev_Report()函数即可从BLE蓝牙发送出去。 3.4.13 外部晶振校准控制寄存器(HSE_CAL_CTRL) 偏移地址:0x00 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
1514 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Reserved
上面就是基于CH32V208的USB键盘转BLE蓝牙的设计,本次设计使用立创EDA设计,硬件和软件都是完全开源的有兴趣的朋友可以尝试制作自己的专属设备。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-
1.jpg (92.71 KB, 下载次数: 4808)
















我想5.1再学习研究研究的,现在卡在这里过不去了,不知道哪里出错。希望得到你的帮助。
要不你直接去官方询问一下?
我用vs的,觉得vs没这么多的设置,eclipse没用过,更不敢大言不惭的说编译器有关
我用的MounRiver Studio Version: v1.84 生成的项目,目录结构。
我发我的工程文件源码给你,能不能帮我看看?怎么发你?
我真是败了,我把源码下载直接编译,烧录能用。
我照抄楼主代码,自己建项目,然后编译也显示成功同时没有任何报错信息,但烧录进去连蓝牙都发现不了。生成的hex文件比楼主的略大。
现在我连哪里出问题了不知道,难怪说微软的VS是宇宙最强编辑器。楼主有群吗,能不能帮扶一下。
win7,MounRiver Studio Version: v1.84
如果是官方的板子,那么“3.4.13 外部晶振校准控制寄存器(HSE_CAL_CTRL)” 这里需要恢复成原来的数值。
之前我自己做的板子也遇到无法找到蓝牙的问题,最后发现是这里的问题。
电路图和PCB
[media=x,500,375]https://www.bilibili.com/video/BV1944y1Z7fK/?vd_source=cf6121716e06cb669a27c10276f9c920[/media]
本文提到的电路图和PCB