最近需要一款低成本的蓝牙芯片,KT6368A是不错的选择,但需外配MCU,需要一款能像NRF52840那样带USB的蓝牙SOC,价格又要美美的,于是就找到了它:CH573F !官方资源开放的连PCB的源文件都提供了,刚好某创和某配都提供了免费PCB打样,赶紧去薅了一把羊毛,PCB文件直接拿去打样,在此非常感谢沁恒市场经理李先生,不仅提供了CH573F和CH569的样片,还提供了一个烧写器用于调试,真是太贴心了~
CH573F
- 32位RISC处理器WCH RISC-V3A
- 支持RV32 IMAC指令集,支持单周期乘法和硬件除法
- 内置18K SRAM,512K Flash ROM,支持ICP、ISP和IAP,支持OTA无线升级
- 集成2.4GHz RF收发器和基带及链路控制,提高优化的协议栈和应用层API,支持组网
- 内置USB控制器和USB收发器,支持USB2.0全速和低速主机或设备
- 多种低功耗模式:Idle,Halt, Sleep, Shutdown, 内置电池电压低压监控,最低睡眠电流0.3uA
- 内置AES-128加解密单元,芯片唯一ID
- 其他传统接口:UARTx4、SPI、12位ADC、8通道触摸按键等。
主频不详?!貌似只有20MHz?32MHz的主晶振时钟输入,不明白为何主频这么低。先不管了,谁让它这么便宜呢~ ( 看程序主频应该最高60MHz)顺便上一张沁恒的BLE选型:
环境搭建
- 先从官网下载所需资源:http://www.wch.cn/products/CH573.html
Datasheet:CH573DS1.PDF
CH573评估板说明及参考应用例程:CH573EVT.ZIP
集成开发环境(IDE):MounRiver Studio(MRS)
CH573F板载天线核心板:CH573PCB.ZIP
系统平台低功耗蓝牙开发接口库:WCHBleLib_MultiOS.ZIP
沁恒芯云物联平台说明及参考应用例程:WCHIOT.ZIP
单片机系列芯片程序烧录软件:WCHISPTool_Setup.exe - 开发环境只能用官方提供的MounRiver Studio,看介绍也支持JLink,慢慢熟悉之。
埋坑笔记 - HW
- 芯片背面的焊盘要接地!芯片背面的焊盘要接地!芯片背面的焊盘要接地!整个芯片的地只有芯片背面的焊盘,所以必须要可靠接地!对于DIY者来说不够友好,焊之前处理下也能搞定。
- 电感L1是22uH电感,0805封装的,这个封装以及32K RTC晶振的封装、0603封装的LED、0402的某几个电容都很蛋疼,翻箱倒柜找好物料然后开焊。
- 芯片的仿真引脚:PB14-TIO-SWDIO,PB15-TCK-SWCLK,默认boot PIN:PB22
- 两线仿真调试接口通过ISP工具配置,仿真调试接口启用后,PB15和PB14仅用作TCK和TIO,不再用于GPIO或外设复用功能引脚。如需复用,需关闭仿真调试接口功能。
- 系统SysTick定时器:64位,递减型计数器,支持HCLK或HCLK/8作为时基,具有较高优先级。
- 上电后默认不启用DC-DC,而是提供直通电源,为了降低正常运行时的系统功耗,可以选择启用DC-DC提升电源能耗利用率,工作电流通常会下降到直通方式的60%左右。
- USB Device模式下,有0、1、2、3、4、共5组双向端点,最大数据包长64字节。
- 断点0是默认断点,发送和接收共用64字节数据缓冲区。
- 端点1、2、3各自包含一个发送端点IN和一个接收端点OUT,发送和接收各有一个独立的64字节或者双64字节数据缓冲区,支持批量、中断和实时/同步传输。
- 端点4包括一个发送端点IN和一个接收端点OUT,发送和接收各有一个独立的64字节数据缓冲区,支持批量、中断和实时/同步传输。
- USB总线上的上拉电阻可以由软件随时设置是否启用。当R8_USB_CTRL中的RB_UC_DEV_PU_EN置1时,在内部位USB总线的DP/DM引脚连接上拉电阻,并启用USB设备功能。
埋坑笔记 - SW
硬件手册基本上粗略看完一遍,接下来开始折腾软件。
- 首先安装WCHISPTool_Setup.exe,按住Boot按键上电,如下图示,确认能识别出CH573F的设备,选择开启仿真。
- 安装MounRiver Studio,解压CH573EVT.ZIP,然后导入一个USB的例程 ..\USB\Device\CompoundDev\CompoundDev.wvproj,貌似是一个USB HID的复合设备,导入成功后CTRL+B编译,只要没有其他误操作,这个过程基本上都会编译成功的,在obj目录下会有编译出的CompoundDev.hex文件,重复上一步的操作,按住Boot进USB ISP模式,通过WCHISPTool将该文件下载进去,重启后查看设备管理器,人体学输入设备中会多出两个USB输入设备。
- 测试蓝牙工程,BLE目录下有25个例程,真丰富,选择其中HID KeyBoard测试,导入..\BLE\HID_Keyboard\HID_Keyboard.wvproj,编译之。重复ISP的步骤,将生成的HID_Keyboard.hex文件烧入其中,打开手机蓝牙搜寻设备,会出现HID Keybrod的蓝牙设备,连接后提示配置实体键盘。打开手机App便签,然后就会每隔一秒钟收到一个字符,从abcdef ~ xyz。
- BLE目录下的文档 沁恒低功耗蓝牙软件开发参考手册.pdf ,搞蓝牙的话还是需要好好看看的。
- 配置MounRiver Studio,生成BIN文件:(Help文件中有描述)
- 右键工程配置选项 - > C/C++ Build - > Settings , 切换至 Build Steps标签页,在下面的 Post-build steps中输入如下命令:
- “${eclipse_home}\toolchain\RISC-V Embedded GCC\bin\riscv-none-embed-objcopy” -O binary “${ProjName}.elf” “..\${ProjName}.bin”
- 或者直接在GNU RISC-V Cross Greate Flash Image选项中,选择Output file format Raw binary即可。
不知为何,我这边使用MounRiver Studio,Ctrl+B编译 很慢很慢的,make -j4或-j8都一样的慢。
- 博客园中有非常好的笔记,满满的干货,在此记录并感谢之~
https://www.cnblogs.com/iot-fan/tag/CH57x/
TMOS系统介绍:https://www.cnblogs.com/iot-fan/p/13460082.html
用户Boot和App:https://www.cnblogs.com/iot-fan/p/14976335.html
从应用跳到芯片Boot的方法:https://www.cnblogs.com/iot-fan/p/14344779.html