[前言]
本文记录WCH 的CH57x系列 CH58x系列的上手,资料获取等.
本文乃至于本Blog只探讨SOC类型的芯片,就是直接进行二次开发,或者说能同时跑用户代码的芯片,对于预烧firmware的芯片(如wch CH914x系列的芯片),不在本blog讨论范畴
[芯片选型]
官网的选型表在http://www.wch.cn/products/category/63.html 这里只做个简单的罗列,细节具体看官网的.
Series | P.N. | Core | Freq | Flash | Ram | Dataflash | BLE | USB | ETH | ADC | UART | SPI | I2C | GPIO | LCD | VDD | Package | 备注 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ch57x_gen1 | CH579 | ARM-M0 | 40Mhz | 250K | 32K | 2KB | 4.2 | 1H/D | 10M | 14*12B | 4 | 1M/S+1M | / | 40 | 4x24 | 2.2-3.6 | QFN48_5x5/QFN28_4x4 | 不推荐新的设计使用 |
CH578 | ARM-M0 | 40Mhz | 160K | 32K | 2KB | 4.2 | 1H/D | 10M | 6*12B | 2 | 1M/S | / | 40 | 4x24 | 2.2-3.6 | QFN48_5x5/QFN28_4x4 | CH578F 没有USB pin,不推荐新的设计使用 | |
CH577 | ARM-M0 | 40Mhz | 128K | 16K | 2KB | 4.2 | x | / | x | 2 | 1M/S | / | 20 | / | 2.2-3.6 | QFN28_4x4 | 不推荐新的设计使用 | |
ch57x_gen2 | CH573 | RISCV-IMAC | 60Mhz | 448K | 18K | 32KB | 4.2 | 1H/D | / | 10*12B | 4 | 1M/S | / | 22 | / | 2.3-3.6 | QFN32_4x4/QFN28_4x4/LQFP32 | 不推荐新的设计使用 |
ch57x_gen2 | CH571 | RISCV-IMAC | 60Mhz | 192K | 18K | 32KB | 4.2 | 1D | / | 6*12B | 2 | 1M/S | / | 20 | / | 2.3-3.6 | QFN28_4x4/ESSOP10/TSSOP16 | 不推荐新的设计使用 |
ch58x_gen1 | CH583 | RISCV-IMAC | 60Mhz | 448K | 32K | 32kB | 5.3 | 2H/D | / | 14*12B | 4 | 1M/S+1M | 1M/S | 40 | / | 1.7-3.6 | QFN48_5x5 | |
ch58x_gen1 | CH582 | RISCV-IMAC | 60Mhz | 448K | 32K | 32KB | 5.3 | 2H/D | / | 14*12B | 4 | 1M/S | 1M/S | 40 | / | 2.3-3.6 | QFN48_5x5/QFN28_4x4 | |
ch58x_gen1 | CH581 | RISCV-IMAC | 60Mhz | 192K | 32K | 32KB | 5.3 | 1D | / | 6*12B | 2 | 1M/S | x | 20 | / | 2.3-3.6 | QFN28_4x4 | BLE5.x的协议栈比4.2的大一些 |
ch59x_gen1 | CH592X | RISCV-IMAC | 60Mhz | 448K | 32K | 32kB | 5.3 | 1H/D | / | 12*12B | 4 | 1M/S | 1M/ | 24 | 4x20 | 1.7-3.6 | QFN32_4x4 | |
ch59x_gen1 | CH592F/A/D | RISCV-IMAC | 60Mhz | 448K | 32K | 32KB | 5.3 | 1H/D | / | 8*12B | 4 | 1M/S | 1M/S | 20 | 4x16 | 1.7-3.6 | QFN28_4x4 | A为105度,D为QFN20封装 |
ch59x_gen1 | CH591 | RISCV-IMAC | 60Mhz | 192K | 32K | 32KB | 5.3 | 1D | / | 8*12B | 2 | 1M/S | x | 20 | / | 2.3-3.6 | QFN28_4x4/QFN20/TSSOP16 |
参数备注:
- CH573/571/583/582/581 主频跟官方手册这里有差异,这里是官方例程代码的实际CPU主频,官方的手册里面的20Mhz是由于flash比较慢,代码放到flash里面运行时,综合下来的运行速度;
- 不是所有手册宣称的型号实际都有货,选用之前建议跟wch的业务沟通好,实际的供货版本和封装;
- 上述同样封装的芯片通常是可以Pin2Pin相互替换的,但是涉及到一些外设的引脚复用时,最好再三确认复用的引脚是否是兼容的,一个典型的就是PWM的引脚兼容.
- CH57x系列没有I2Cx,如果要用,要软件模拟.
芯片的软件兼容性
在每一代的芯片中,其代码是通用的,如果没有用到一些某些芯片没有的外设,固件是可以相互烧录的:
- 如CH577的代码可以直接烧录在CH579中运行,不用做任何修改,同样CH571里面正常运行的代码烧录到CH573上一定也能运行.
- 但是CH579的代码想烧录到CH577中运行,则必须保证程序中没有用到一些仅仅在CH579才有CH577上没有的外设.
[资料获取]
直接官网搜索对应的型号:http://www.wch.cn/ ,再其官网的搜索框直接搜索芯片的对应型号,就会弹出相关的资料,WCH在这方面还是比较开放的,不像个别公司普通人连完整型号都拿不到.
获取资料时候,要选用最高配置的芯片型号来获取资料,比如CH577/CH578建议找CH579的;同样CH571,建议找CH573的,本质上芯片没有太大区别.
[开发环境]
CH577/578/579(不推荐新的设计使用)
- 官方的SDK仅提供KEIL的, mounriver.com 的也宣传可以用来开发CH57x的m0系列的,但是wch的SDK并没有针对其适配,包括关键的蓝牙和以太网的协议栈并没有对应mrs的支持
- 也可以用其他编译器开发BLE,这时候我们可以使用app单独编译的方式进行开发,详见文章:https://www.cnblogs.com/iot-fan/p/16700055.html
CH571/CH573/CH58x/CH59x
[工程创建]
- 工程的创建,也是从内部模板里面拷贝出来的代码,维护IDE的人不可能总是有最新的代码.所以无论如何,始终不建议自己创建新的工程
- 建议直接使用wch官网下载的工程,找一个比较合适的工程修改即可,如果不知道如何选,联系他们,跟他们说清楚你要做什么产品之类,让他们帮你选,或者他们发一个给你.
官网下载的历程,全部解压,不要改变工程的相对路径.
[硬件设计]
参见CH579/CH57x 硬件设计 https://www.cnblogs.com/iot-fan/p/13458627.html
也可以按照上面资料获取里面,在WCH官网搜索对应的型号然后下载.
[固件烧录]
参见CH579/CH57x固件下载,烧录 https://www.cnblogs.com/iot-fan/p/13498088.html
关于在线调试
对于BLE/USB相关的工程,如果你想要快点开发,建议先扔掉在线仿真工具,转而使用串口打印的方式, 这几乎是任何一家BLE的供应商的惯用调试方法.
WCH 的CH5xx的蓝牙芯片例程里面,默认的串口日志输出在UART1 PA9, 115200 波特率
[用于调试的APP]
BLE技术属于标准的技术,通用的调试工具(能够遍历出所有的uuid并且)都可使用
- 安卓:
1.沁恒官网提供了一个安卓上的APP :http://www.wch.cn/downloads/BLEAssist_ZIP.html
2.[强烈推荐]当然很多人可能更习惯于使用Nordic的nrf-connect: https://github.com/NordicSemiconductor/Android-nRF-Connect/releases - IOS:
1.推荐使用nrf-connect
2.也可试试lightblue - Windows:
1,如果是仅仅为了调试,那就别浪费时间了