iot-fan

联系: iotfan123#163.com
注意:
1,本博客之内容来源于网上收集以及相关技术人员提供,如果有侵犯到您的权益,请电邮我沟通;
2,本博客之内容乃分享,交流,学习,研究之目的,作者不对内容的真实性,有效性,及时性负责,也不对因本博客的任何内容导致的任何后果负责;
3,本博客之内容禁止转发到CSDN网站,转到别的网站请保留出处.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

本文主要是对于wch ch57x,ch58x系列芯片的固件烧录方式进行说明

本文使用以下芯片

  • CH577/CH578/CH579
  • CH571/CH573
  • CH581/CH583
  • CH591/CH592
  • 其他CH5xx 系列芯片,仅供参考

阅读本文时建议同时参考 CH579/CH57x/CH582/CH573/CH571 硬件设计

固件烧录

ISP烧录

ISP支持的方式

  • USB
  • UART

ISP工具获取

工具说明

下载步骤

USB下载连接和步骤

ISP下载模式通过USB下载

  • USB识别需要装驱动,用到的是CH372的驱动,在安装WCHISPTool_Setup_exe时候,会自动安装该驱动,在isp识别后,设备管理器通常会出现一个USB Module 设备
  • 使用USB进行ISP是WCH 推荐的方式,包括批量生产.
USB下载上位机不识别?
  • 设备管理器没有"USB Module"设备: 重新安装wchisptool 工具,安装过程中会安装对应的驱动,或者直接安装CH372的驱动.
  • 设备管理器有"USB Module"设备,但是叹号: 在win7下可能会有设备管理器出现黄色叹号的问题,这通常是是win7没有打microsoft新版本数字签名补丁导致的,可下载相关的补丁安装:win7_64bit_update_KB3033929,或者关闭数字签名;
  • 描述符错误/无法识别的USB设备: 检查硬件设计,如USB是否有短路,晶体是否贴错(CH573/CH571/CH58x/CH59x 必须32M晶体),以及供电是否有按照官方的原理图进行设计,尤其要看VINTA引脚是否在1.05v附近.
  • 设备管理器没有任何动静:
    1. 上电时候ISP 没有检测到有效的 进入ISP模式的标志.
    2. 数据线可能是只能充电,不能当数据线用,一些劣质的"数据线",只有电源不能用于传输数据;
    3. 硬件要能够满足进bootloader下载的条件,比如CH577/578/579 bootloader>=2.8的情况下, 外部复位引脚的电容不能大于10nF,CH573/CH583系列必须要焊接高频32M晶体等.具体可参考ch579/ch573/ch57x 硬件设计
    4. 芯片供电一定不要超过芯片的供电范围,比如有时候不小心可能供电了5v,导致芯片损坏,这时候我们需要换个芯片

串口下载连接和步骤

image

ISP下载模式通过UART下载

  • 默认波特率为115200
    • CH577/CH578/CH579在bootloader2.8版本开始,支持1M和2M波特率下载
    • 新版本的CH571/CH573也支持1M和2M波特率下载
  • 如果选择了"串口免按键下载",芯片在上电时候 会额外等待40ms 等待串口下载握手,如果握手成功,就会继续等待下载
UART下载上位机不识别?
  • 跟usb下载一样,上电时候需要触发,如CH573F,默认是上电检测PB22,低电平有效,其他芯片见上面: 上电进入ISP升级的方式
  • UART 的TX 没有数据时候是高电平,通常是push-pull输出,这就存在对外部设备供电的可能, 而芯片进入isp模式又是上电时候检测,如果引文这种串口TX灌电,导致芯片没有有效断电产生上电复位,这就会导致进不去ISP下载模式,这种情况,临时可以TX,RX端串联2K的电阻,大大降低这种风险.
  • 检查硬件设计,如晶体是否贴错(CH573/CH571/CH58x/CH59x 必须32M晶体),以及供电是否有按照官方的原理图进行设计,尤其要看VINTA引脚是否在1.05v附近.
  • UART一定要是 TTL的电平,切记不能使用RS232,虽然这是比较常识的问题,写这里就当凑字数吧,虽然大家应该不会犯这种低级错误.
高波特率烧录失败
  • 低版本bootloader的芯片,不支持高波特率,只支持115200
  • 实际选用的串口不支持高波特率,比如CP2102 设置1Mbps的波特率,实际上是921600bps
  • 条件允许下,尽可能的用高性能的烧录串口芯片如CH343,CH910x,CP2102N等

ISP的原理

  • ISP烧录就是,芯片通过某些方式进入芯片内部预置的ISP升级程序,开启升级功能,然后与外部通信,然后通过相关的协议,完成程序区的擦除,写入,校验和相关的配置等一些列操作的过程.
  • wch的芯片,上电复位后,都会默认进入ISP,进行检测,是否进入ISP.

上电进入ISP升级的方式

系列 芯片 USB下载IO 串口下载IO(注1) 默认进ISP模式IO(注3) 进入ISP检测时机 可选进ISP IO(注4) 备注
ch57x_gen1 CH579M/578M/579F/577F PB10_D- /PB11_D+ PA8_RX/PA9_TX PB22 低电平 上电复位后 PB11 高电平
CH578F 不支持 PA8_RX/PA9_TX PB22 低电平 上电复位后 PB11 高电平
ch57x_gen2 CH573F/571F/571R PB10_D- /PB11_D+ PA8_RX/PA9_TX PB22 低电平 上电复位后 PB11 高电平
CH571K 不支持 PA15_RX/PA14_TX 不支持 上电复位后 不支持 串口免按键下载,上电时候强制等待40ms下载握手
ch58x_gen1 CH583M/582M/582F PB10_D- /PB11_D+ PA8_RX/PA9_TX PB22 低电平 上电复位后 PB11 高电平 CH58x 的USB2 也支持USB ISP
ch58x_gen2 CH585M/584M PB10_D-/PB11_D+ PA8_RX/PA9_TX,PA15_RX/PA14_TX PB22 低电平 上电复位后 PB11 高电平 ch585 的usb2 也支持烧录
CH585F/584F PB10_D-/PB11_D+ PB12_RX/PB13_TX,PA15_RX/PA14_TX PB22 低电平 上电复位后 PB11 高电平 ch585 的usb2 也支持烧录
CH585C PB10_D-/PB11_D+ PB12_RX/PB13_TX,PA15_RX/PA14_TX PB22 低电平 上电复位后 PB11 高电平
ch59x_gen1 CH592X/592F/592A/591R PB10_D-/PB11_D+ PA8_RX/PA9_TX PB22 低电平 上电复位后 PB11 高电平
CH591D PB10_D-/PB11_D+ PA8_RX/PA9_TX PB7 低电平 上电复位后 PB11 高电平
CH592D PB10_D-/PB11_D+ PB12_RX/PB13_TX PB15 低电平 上电复位后 PB11 高电平 部分GPIO与CH591D不兼容

注1: 芯片亦支持 在ISP检测时候,通过串口的命令检测(所谓的 "串口免按键下载"),但是这个过程非常短暂,通常只有40ms.
注2: 芯片在flash 的0地址为擦除默认值时候,则上电会停留在ISP中而不会跳转,所以全新的芯片上电后第一次会进bootloader,即使没有控制ISP io.
注3: 芯片仅当在上电复位后才会检测ISP引脚,检测时候,芯片会对应的IO开启上拉或者下拉
注4: 默认不支持,需要在ISP下载时候修改, 然后芯片重新上电生效

WCHISP 工具注意事项

  1. HEX文件和bin文件的处理问题:
  • wchisptool 工具可以下载bin文件和hex文件,但是最终都是转换为bin文件下载
  • 涉及到hex转bin 就存在当hex描述的内容不连续时候,数据填充问题, 对于ch57x/ch58x系列的芯片下载时候 wchisptool的处理方式是:其hex转bin在不连续的地方是填充是0x00,这和大多数的hex转bin的实现方式可能不太一样.
  • 仍然是wchisptool 的hex转bin下载的问题,对于hex如果不是从0地址开始的,wchisp的逻辑是从0地址开始填充0x00转成bin后再下载.
  • 鉴于上面两种方式, 建议客户在做ota,或者分布固件时候,用自己的工具,转换成从0地址起始的bin文件进行下载,从而避免不同的填充方式导致可能带来的校验问题.

其他下载方式

CH578M/CH579M使用 ARM-SWD下载

(仅支持ARM内核的CH579M/578M,不支持RISC-V的CH573/CH571)
其他诸如调试,或者在keil里面下载参考 https://www.cnblogs.com/iot-fan/p/14922920.html
芯片支持兼容ARM-SWD协议的一些工具已经测试的工具包括:

已经测试过的支持的工具
  • jlink
  • daplink
  • st-link
ARM-SWD下载注意事项
  • 对于ch577/ch578/ch579 只有芯片直接的bootloader版本在2.5以后,才能开启swd 成功,之前的版本不行
  • SWD可以用官方的ISP工具(需要V2.8版本以上)去手动打开,点击打开后,芯片之前的flash会被清空,然后芯片会自动软重启
  • SWD打开后,对应的IO不能被程序控制
  • 使用USB/UART下载后 SWD下载会自动关闭,如需要使用需要再次打开
  • 低功耗下,SWD会被禁用,导致芯片不能响应SWD,从而下载失败
  • 不是所有的芯片SWD引脚都被引了出来

其他资源:

posted on 2020-08-13 18:26  iot-fan  阅读(10619)  评论(0编辑  收藏  举报