本文主要是對於CH57x系列芯片的固件燒錄方式進行說明
本文使用以下芯片
- CH577/CH578/CH579
- CH571/CH573
- CH581/CH583
閱讀本文時建議同時參考 CH579/CH57x 硬件設計
固件燒錄
ISP燒錄
ISP支持的方式
- USB
- UART
ISP工具獲取
- 官網下載地址:http://www.wch.cn/downloads/WCHISPTool_Setup_exe.html
- 本blog gitee 倉庫:https://gitee.com/iot-fan/iot-fan_at_cnblogs/tree/master/Tools/wch_isp_tool
ISP的原理
- ISP燒錄就是,芯片通過某些方式進入芯片內部預置的ISP升級程序,開啟升級功能,然后與外部通信,然后通過相關的協議,完成程序區的擦除,寫入,校驗和相關的配置等一些列操作的過程.
- wch的芯片,上電復位后,都會默認進入ISP,進行檢測,是否進入ISP.
上電進入ISP升級的方式
芯片 | USB下載IO | 串口下載IO(注1) | 默認進ISP模式 IO | 進入ISP檢測時機 | 可選進ISP IO |
---|---|---|---|---|---|
CH577F | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH578F | 不支持 | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH578M | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH579F | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH579M | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH573X | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH573F | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH571F | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB22 低電平 | 上電時候 | PB11 高電平 |
CH571D | PB10_D- /PB11_D+ | PA8_RX/PA9_TX | PB7 低電平 | 上電時候 | PB11 高電平 |
CH571K | 不支持 | 不支持 | 不支持 | 不支持 |
注1: 芯片亦支持 在ISP檢測時候,通過串口的命令檢測(所謂的 "串口免按鍵下載"),但是這個過程非常短暫,通常只有幾十ms.
注2: WCH的芯片,在flash 的0地址為0xffffffff時候(通常是空白的芯片),則上電會停留在ISP中,而不會跳轉,所以全新的芯片上電后第一次會進bootloader,即使沒有控制ISP io.
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是否有短路,短路現象,以及是否有按照官方的原理圖進行設計.
- 設備管理器沒有任何動靜:
1. 上電時候ISP 沒有檢測到有效的 進入ISP模式的標志.
2. 數據線可能是只能充電,不能當數據線用,一些劣質的"數據線",只有電源不能用於傳輸數據;
3. 硬件要能夠滿足進bootloader下載的條件,比如CH577/578/579 bootloader>=2.8的情況下, 外部復位引腳的電容不能大於10nF,CH573/CH583系列必須要焊接高頻32M晶體等.具體可參考ch579/ch573/ch57x 硬件設計
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的電阻,大大降低這種風險.
- UART一定要是 ttl的電平,切記不能使用RS232,雖然這是比較常識的問題,寫這里就當湊字數吧,雖然大家不會犯這種低級錯誤.
WCHISP 工具注意事項
- 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引腳都被引了出來
其他資源:
- 使用J-FLASH下載的方法見 使用J-flash/jlink操作CH32F10x/CH578/CH579等WCH芯片