![]() |
發布時間: 2021-11-20 19:24
正文摘要:單片機型號位STC8A8K64S4A12, 手上有兩塊自己做的開發板, 都是這個問題, 下載一次或幾次后就無法下載, 開發板靜置10分鐘左右又可以下載程序了USB轉串口芯片為CH340C, 無外部晶振 ISP軟件為STC-ISP v6.86u 確定沒 ... |
hhh402 發表于 2021-11-23 11:11 串口沒有時鐘線,如果波特率過高,晶振誤差導致誤碼,這就是握手失敗或下載到一半出錯的問題。 |
這個問題我遇到過,主要是電磁干擾問題,開發板的連接線隨意接會有干擾影響下載,解決方法是將最高下載波特率從115200改為9600就可以了。減速就好![]() |
道理很簡單: 燒寫或仿真程序是由內置的一段固有監控程序完成的,固有監控程序只在冷起動時運行一下,當它發現沒有燒寫或仿真命令時,就跳轉0000H,執行用戶程序。 而發現有燒寫或仿真命令時,才執行燒寫或仿真命令。 |
保證下載命令發出后,單片機處理于掉電狀態,這時再上電,就成功了。 |
npn 發表于 2021-11-21 19:06 請將該指令放置到需要的地方,比如串口、外部中斷、按鍵長按等事件,一但執行就會 立即復位。 |
Kituro 發表于 2021-11-21 13:31 C語言哪有這么寫的? 指令要放到函數里。 |
本帖最后由 npn 于 2021-11-21 12:27 編輯 Kituro 發表于 2021-11-21 10:57 你可以看一下STC自帶的這個功能,板子不需要改動,執行一條指令 IAP_CONTR |= 0x60; 復位到ISP程序區就可以下載。 ![]() |
grb7906 發表于 2021-11-21 07:09 這個方法很有效! 感謝!! |
npn 發表于 2021-11-20 23:07 是這樣的! 短路電容兩端后就可以下載了! 感謝大佬指導! 那板子設計的時候有沒有什么方法規避這種問題呢?不然每次下載都要給電容放電很麻煩 沒有大電容就不能有效退耦, 有大電容放電又很慢, 應該怎么解決? |
mtdzok 發表于 2021-11-20 22:14 一語中的! 感謝指導!! |
每次下載,接通電源前,短路下板上電源,再接入電源下載 |
如果單片機進入掉電模式,1uF就能維持很長時間,下載前請將電容放電。 |
1) 按規范,8A8K 的 AVCC, AGND 都需要連接。最差也要并到 VCC 和 GND 2) 8A和8F系列, P3.1需要接300R電阻,(太高太低都會間歇性下載失敗)。P3.0的二極管就不說了,沒啥變化。 3) 由于設計上的不足,下載8A8K時,條件允許的話,斷電時斷GND。 |
應該是電源兩端有大電容,下載時的斷電動作無法使單片機復位 |
補充: "無法下載"指的是軟件一直顯示"正在檢測單片機" |