想實現(xiàn)單片機的串口一鍵下載功能,CH343P的流控是像CH340X一樣免外圍電路的嗎?
您好,CH343P一鍵下載電路適應于部分單片機(DTR引腳默認高電平),資料鏈接:https://blog.csdn.net/WCH_TechGroup/article/details/124319456?
追問:
拿邏輯分析儀和在電腦上用串口抓包軟件試了下。
串口抓包軟件顯示:DTR經(jīng)歷了“高->低->高”的變化然后開始程序下載。
邏輯分析儀獲取到:DTR經(jīng)歷了短時間拉低后,變高電平,又在下載時處于長時間拉低。
他們的狀態(tài)好像不對應,這是怎么回事呢?
您好,請問下載程序失敗了嗎,麻煩發(fā)下電路原理圖給我檢查下。
回復4#:
答:程序下載是成功的,但是并不是用的自動下載。而是由人手動按下復位(P0.21)按鍵,重啟進入的DFU下載。經(jīng)嘗試,DTR、RTS接到板子上都無法實現(xiàn)自動下載,故用此方法接邏輯分析儀測狀態(tài)。
開發(fā)板和CH343P都是從網(wǎng)上買的模塊,自行外接的CH343P模塊。
板子使用的是arduino的開發(fā)環(huán)境(第三方),根據(jù)文檔,其在復位啟動時會檢測有沒有下載信號,若有則進入下載模式,若無則正常啟動。
這是相關原文描述:
Forcing Serial Boot Mode
The Bluefruit nRF52 Feather is designed to briefly enter serial bootloader mode for a short delay every time the device comes out of reset, and the DTR line on the CP2104 USB to Serial adapter will trigger a reset every time the Serial Monitor is opened. This means that you can normally flash a user sketch to the nRF52 with no manual intervention on your part at a HW level.
If you need to force the serial bootloader mode, however, you can connect the?DFU?pin to?GND?at startup, which will force you to enter serial bootloader mode and stay in that mode until you reset or power cycle the board.
This can be used to recover bricked boards where a bad user sketch has been uploaded, since you will enter serial bootloader mode without executing the user sketch, and you can flash a new sketch directly from the Arduino IDE.
Forcing the serial bootloader can often be used to recover bricked devices.
nRF52840-based board can also use double reset trick to force into serial bootloader
接線方法附圖:
根據(jù)上述接線方法,以手動復位的方式下載,使用邏輯分析儀測得:
Hi,如上原文看了下,MCU在上電時如檢測到 DFU 低電平則會自動自動boot升級模式,此方式是需要下載軟件的配合。建議是上電時同時監(jiān)控MCU的電源端和DFU的Pin(如有無可能軟件端未自動操作DTR)
此外,檢查下CH343是否使用了廠商驅(qū)動,如使用Modem信號線則務必使用VCP驅(qū)動,鏈接:http://www.findthetime.net/downloads/CH343SER_EXE.html?
你好,剛剛重新安裝了鏈接里的驅(qū)動,將DTR接到MCU復位(P0.21)上,不人工干預復位,下載失敗。
使用AccessPort軟件可以觀察到:電腦有對CH343P發(fā)送了操作DTR的命令,第9/14/15行,分別是拉高、低、高。這一方面符合您說的,電腦上的下載軟件確實有配合發(fā)送了對應的命令;另一方面發(fā)送的命令也符合MCU復位的需求。
但根據(jù)3#樓和6#樓的邏輯分析儀圖片數(shù)據(jù)來看,DTR的電平實際變化是經(jīng)歷了短時間的高低高,然后又長時間保持在低。
這表明AccessPort顯示電腦發(fā)送給CH343P的操作,與邏輯分析儀實際獲取到的DTR信息狀態(tài)不一致。
附圖三張:
圖1.將DTR接到MCU復位,未人工操作,自動下載失敗
圖2.DTR不接,人工復位操作,下載成功(開始部分信息截圖)
圖3.DTR不接,人工復位操作,下載成功(結(jié)束部分信息截圖)
Hi,安裝完VCP串口驅(qū)動后,測試前可以通過COM口屬性那里勾選“禁用Modem流控”來屏蔽打開串口時伴隨的DTR信號的變化。關閉后的DTR測試就會是準確的,如這樣還不行,則應該不是DTR的控制問題,而是單片機端沒有其他引腳控制自動復位或上下電導致的問題。
你好,看到您發(fā)的圖,想和您確認一下:
9#您發(fā)的圖中寫的DTR SET是TTL低電平?!俏也樵兊降腎OCTL_SERIAL_SET_DTR命令,即SET DTR是拉高。
究竟哪種情況是正確的?
按照您所述,勾選了禁用流控后結(jié)果如下:
可觀察出電腦在發(fā)送了SET_DTR后,DTR處于低電平狀態(tài)。
可否將其設置為:SET_DTR是拉高,CLR_DTR是拉低,這樣就符合了下載軟件對自動下載所需的邏輯了。