找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3693|回復: 16
收起左側

STC單片機下載幾次后就無法下載, 靜置一會兒后又可以下載

[復制鏈接]
ID:884307 發(fā)表于 2021-11-20 19:24 | 顯示全部樓層 |閱讀模式
單片機型號位STC8A8K64S4A12, 手上有兩塊自己做的開發(fā)板, 都是這個問題, 下載一次或幾次后就無法下載, 開發(fā)板靜置10分鐘左右又可以下載程序了USB轉串口芯片為CH340C, 無外部晶振

ISP軟件為STC-ISP v6.86u 確定沒有任何設置錯誤:
Snipaste_2021-11-20_19-13-21.jpg


我的猜想:
1. 可能是我電源退耦沒有做好, 上電時可能有電涌, 干擾串口信號或直接讓CH340C停止工作\

    我的退耦方案: 一個47uF和0.1uF的電容放置在USB口旁邊退耦, CH340C按Datasheet給的方案來放置電容, VCC和V3.3接0.1uF退耦
    USB口到CH340C大約有1.5-2cm左右的距離, UD+和UD-兩條數(shù)據(jù)線近似等長, 長度相差167mil
2. 在板子的某個地方有電容效應, 下載后電荷量積攢到一定程度就影響信號無法下載, 靜置后讓電容放電, 于是又可以下載

求教這是什么問題?應該如何解決?
跪謝大佬相助!
回復

使用道具 舉報

ID:884307 發(fā)表于 2021-11-20 22:02 | 顯示全部樓層
補充: "無法下載"指的是軟件一直顯示"正在檢測單片機"
回復

使用道具 舉報

ID:884147 發(fā)表于 2021-11-20 22:14 | 顯示全部樓層
應該是電源兩端有大電容,下載時的斷電動作無法使單片機復位
回復

使用道具 舉報

ID:624769 發(fā)表于 2021-11-20 22:33 | 顯示全部樓層
1)  按規(guī)范,8A8K 的 AVCC, AGND 都需要連接。最差也要并到 VCC 和 GND
2) 8A和8F系列, P3.1需要接300R電阻,(太高太低都會間歇性下載失敗)。P3.0的二極管就不說了,沒啥變化。
3) 由于設計上的不足,下載8A8K時,條件允許的話,斷電時斷GND。
回復

使用道具 舉報

ID:57657 發(fā)表于 2021-11-20 23:07 | 顯示全部樓層
如果單片機進入掉電模式,1uF就能維持很長時間,下載前請將電容放電。
回復

使用道具 舉報

ID:28752 發(fā)表于 2021-11-21 07:09 | 顯示全部樓層
每次下載,接通電源前,短路下板上電源,再接入電源下載
回復

使用道具 舉報

ID:884307 發(fā)表于 2021-11-21 10:56 | 顯示全部樓層
mtdzok 發(fā)表于 2021-11-20 22:14
應該是電源兩端有大電容,下載時的斷電動作無法使單片機復位

一語中的! 感謝指導!!
回復

使用道具 舉報

ID:884307 發(fā)表于 2021-11-21 10:57 | 顯示全部樓層
npn 發(fā)表于 2021-11-20 23:07
如果單片機進入掉電模式,1uF就能維持很長時間,下載前請將電容放電。

是這樣的! 短路電容兩端后就可以下載了! 感謝大佬指導!
那板子設計的時候有沒有什么方法規(guī)避這種問題呢?不然每次下載都要給電容放電很麻煩
沒有大電容就不能有效退耦, 有大電容放電又很慢, 應該怎么解決?
回復

使用道具 舉報

ID:884307 發(fā)表于 2021-11-21 10:58 | 顯示全部樓層
grb7906 發(fā)表于 2021-11-21 07:09
每次下載,接通電源前,短路下板上電源,再接入電源下載

這個方法很有效! 感謝!!
回復

使用道具 舉報

ID:57657 發(fā)表于 2021-11-21 12:23 | 顯示全部樓層
本帖最后由 npn 于 2021-11-21 12:27 編輯
Kituro 發(fā)表于 2021-11-21 10:57
是這樣的! 短路電容兩端后就可以下載了! 感謝大佬指導!
那板子設計的時候有沒有什么方法規(guī)避這種問題呢? ...

你可以看一下STC自帶的這個功能,板子不需要改動,執(zhí)行一條指令 IAP_CONTR |= 0x60; 復位到ISP程序區(qū)就可以下載。
1.png
回復

使用道具 舉報

ID:884307 發(fā)表于 2021-11-21 13:31 | 顯示全部樓層
本帖最后由 Kituro 于 2021-11-21 13:36 編輯
npn 發(fā)表于 2021-11-21 12:23
你可以看一下STC自帶的這個功能,板子不需要改動,執(zhí)行一條指令 IAP_CONTR |= 0x60; 復位到ISP程序區(qū)就可 ...

我復制IAP_CONTR |= 0x60;到我的程序中, 提示error C129: missing ';' before '|=' Snipaste_2021-11-21_13-36-29.jpg

回復

使用道具 舉報

ID:57657 發(fā)表于 2021-11-21 19:06 | 顯示全部樓層
Kituro 發(fā)表于 2021-11-21 13:31
我復制IAP_CONTR |= 0x60;到我的程序中, 提示error C129: missing ';' before '|='

C語言哪有這么寫的? 指令要放到函數(shù)里。
回復

使用道具 舉報

ID:57657 發(fā)表于 2021-11-21 21:08 | 顯示全部樓層
npn 發(fā)表于 2021-11-21 19:06
C語言哪有這么寫的? 指令要放到函數(shù)里。

請將該指令放置到需要的地方,比如串口、外部中斷、按鍵長按等事件,一但執(zhí)行就會 立即復位。
回復

使用道具 舉報

ID:123289 發(fā)表于 2021-11-23 10:37 | 顯示全部樓層
保證下載命令發(fā)出后,單片機處理于掉電狀態(tài),這時再上電,就成功了。
回復

使用道具 舉報

ID:123289 發(fā)表于 2021-11-23 10:39 | 顯示全部樓層
道理很簡單:
燒寫或仿真程序是由內(nèi)置的一段固有監(jiān)控程序完成的,固有監(jiān)控程序只在冷起動時運行一下,當它發(fā)現(xiàn)沒有燒寫或仿真命令時,就跳轉0000H,執(zhí)行用戶程序。
而發(fā)現(xiàn)有燒寫或仿真命令時,才執(zhí)行燒寫或仿真命令。
回復

使用道具 舉報

ID:491577 發(fā)表于 2021-11-23 11:11 | 顯示全部樓層
這個問題我遇到過,主要是電磁干擾問題,開發(fā)板的連接線隨意接會有干擾影響下載,解決方法是將最高下載波特率從115200改為9600就可以了。減速就好
回復

使用道具 舉報

ID:57657 發(fā)表于 2021-11-23 11:20 | 顯示全部樓層
hhh402 發(fā)表于 2021-11-23 11:11
這個問題我遇到過,主要是電磁干擾問題,開發(fā)板的連接線隨意接會有干擾影響下載,解決方法是將最高下載波特 ...

串口沒有時鐘線,如果波特率過高,晶振誤差導致誤碼,這就是握手失敗或下載到一半出錯的問題。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表