找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 12603|回復(fù): 21
收起左側(cè)

STC免冷啟動(dòng)下載器制作 附單片機(jī)程序+原理圖PCB文件

  [復(fù)制鏈接]
ID:210139 發(fā)表于 2020-5-27 15:38 | 顯示全部樓層 |閱讀模式
終于把這個(gè)東西做出來(lái),前前后后卡好久運(yùn)力,這是一款用于給STC各個(gè)系列單片機(jī)燒錄程序的下載器,支持STC12,STC15,STC8系列,STC的支持。
下載原理
USB轉(zhuǎn)TTL芯片是CH340N,控制芯片STC15F104W,
當(dāng)STC燒錄軟件發(fā)起燒錄程序指令時(shí),會(huì)想單片機(jī)發(fā)送一連串的 F8指令,(用其他串口工具可以觀測(cè)到,波特率9600)。并且CH340N的聯(lián)絡(luò)腳RTS會(huì)產(chǎn)生低電平脈沖。
利用這兩點(diǎn),用STC15F104W監(jiān)測(cè)CH340N的狀態(tài),有下載信號(hào)時(shí),先給目標(biāo)單片機(jī)斷電再上電,即可完成下載。
具體原理:可參考這個(gè)鏈接https://blog.csdn.net/recclay/article/details/81347339

這里要注意一點(diǎn),STC15F104W這個(gè)型號(hào)的單片機(jī)沒(méi)有串口,只能用軟件模擬一個(gè)串口,具體可以參考STC15的官方例程庫(kù),在官網(wǎng)有,當(dāng)然我上的的附件也有
我這一款下載器有一點(diǎn)要說(shuō)明,那個(gè)按鍵開(kāi)關(guān)是常閉狀態(tài)的,即沒(méi)有按下時(shí),是導(dǎo)通的,按下以后開(kāi)關(guān),斷開(kāi)。設(shè)計(jì)這個(gè)開(kāi)關(guān),一方面是起冷啟動(dòng)的作用,另一方面,在調(diào)試產(chǎn)品的時(shí)候,可以按這個(gè)鍵對(duì)產(chǎn)品斷電再上電,免得去插拔USB接口。

下載的成功率也是很高的,保守96%以上吧,當(dāng)不能下載時(shí)可以通過(guò)手動(dòng)開(kāi)關(guān)進(jìn)行斷電再上電。如此還不行的話,請(qǐng)檢查電路是否正確。
制作出來(lái)的實(shí)物圖如下:
實(shí)物圖.jpg
Altium Designer畫(huà)的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png 原理圖.png 3D圖.png


以下是主程序,完整的程序見(jiàn)附件

  1. #include "Drive.h"

  2. u8 Int1Num=0;        //中斷次數(shù)
  3. u8 UART_TX_BUFF[30]={1,2,3,4,5,6,7};

  4. sbit ISP = P3^4;        //控制電源端口
  5. sbit RTS = P3^3;        //檢測(cè)CH340C下載信號(hào)

  6. void Delay(u16 t)
  7. {
  8.         u16 j,k;
  9.         for(k=0;k<t;k++)
  10.                 for(j=0;j<500;j++);
  11. }

  12. //--外部中斷1初始化
  13. void Init_Int1()
  14. {
  15.         PT1 = 1;        //將外部中斷1設(shè)為最高優(yōu)先級(jí)
  16.         INT1 = 1;        //中斷引腳P3^3;
  17.         IT1 = 1;        //中斷類(lèi)型1:下降沿,0:上升沿和下降沿
  18.         EX1= 1;
  19.         EA= 1;
  20. }

  21. void main()
  22. {
  23.         u8 a;
  24. //--用定時(shí)器0模擬一個(gè)串口
  25.         Time0_Init();
  26.         Init_Uart();
  27. //-----------------------
  28.         Init_Int1();
  29.         ISP = 0;
  30.         while(1)
  31.         {
  32.                 if(Int1Num==1)
  33.                 {
  34.                         while(a<20)
  35.                         {
  36.                                 if(RxOK == 1)
  37.                                 {
  38.                                         if(UART_RX_BUFF[0] == 0XF8)
  39.                                         {
  40.                                                 a++;
  41.                                         }
  42.                                         //else        break;
  43.                                         Clear_UART_BuffFlag();
  44.                                 }
  45.                                 
  46.                         }
  47.                         if(a>=20)        //斷開(kāi)電源,再接通電源,開(kāi)啟下載
  48.                         {
  49.                                 ISP =1;        //斷開(kāi)
  50.                                 TR0 = 0;
  51.                                 Delay(800);
  52.                                 Delay(800);
  53.                                 ISP =0;        //接通
  54.                                 Clear_UART_BuffFlag();
  55.                                 Delay(800);
  56.                                 a=0;
  57.                         }
  58.                         Int1Num = 0;
  59.                 }
  60.                 else
  61.                 {
  62.                         TR0 = 1;
  63.                         ISP = 0;        //接通電源
  64.                 }
  65.         }
  66. }

  67. void EXint2() interrupt 2
  68. {
  69.         Int1Num=1;
  70. }
復(fù)制代碼
51hei.png 51hei.png
全部資料51hei下載地址:
STC免冷啟動(dòng)下載器-程序-原理圖.zip (4.27 MB, 下載次數(shù): 216)

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:224782 發(fā)表于 2020-6-29 11:46 | 顯示全部樓層
下載時(shí)是向單片機(jī)發(fā)0xF8???????
回復(fù)

使用道具 舉報(bào)

ID:210139 發(fā)表于 2020-7-21 13:55 | 顯示全部樓層
大風(fēng)吹過(guò)啊 發(fā)表于 2020-6-29 11:46
下載時(shí)是向單片機(jī)發(fā)0xF8???????

自己用串口軟件觀察
回復(fù)

使用道具 舉報(bào)

ID:66757 發(fā)表于 2021-2-13 09:53 來(lái)自手機(jī) | 顯示全部樓層
對(duì)!就是一大串!
回復(fù)

使用道具 舉報(bào)

ID:434663 發(fā)表于 2021-6-2 22:29 | 顯示全部樓層
下載的時(shí)候 發(fā)送的是 0x7F
回復(fù)

使用道具 舉報(bào)

ID:434663 發(fā)表于 2021-6-2 22:30 | 顯示全部樓層
CH340N???
回復(fù)

使用道具 舉報(bào)

ID:884042 發(fā)表于 2021-6-12 17:58 | 顯示全部樓層

不是0xf7嗎?
回復(fù)

使用道具 舉報(bào)

ID:59830 發(fā)表于 2021-6-13 14:06 | 顯示全部樓層
下載看一下。其實(shí)不用單片機(jī)。
直接用RST 控制  場(chǎng)效應(yīng)管 或 開(kāi)關(guān)切換IC 也可以吧.
串口這樣接會(huì)不會(huì)影響串口功能.
回復(fù)

使用道具 舉報(bào)

ID:210139 發(fā)表于 2021-6-18 15:47 | 顯示全部樓層
yygdzjs 發(fā)表于 2021-6-13 14:06
下載看一下。其實(shí)不用單片機(jī)。
直接用RST 控制  場(chǎng)效應(yīng)管 或 開(kāi)關(guān)切換IC 也可以吧.
串口這樣接會(huì)不會(huì)影響 ...

不會(huì)影響串口功能,不燒錄程序的時(shí)候,就可當(dāng)串口使用
回復(fù)

使用道具 舉報(bào)

ID:210139 發(fā)表于 2021-6-18 15:48 | 顯示全部樓層
rsurb0371 發(fā)表于 2021-6-2 22:29
下載的時(shí)候 發(fā)送的是 0x7F

用串口觀察的時(shí)候,波特率不一樣,結(jié)構(gòu)就不一樣,我是用115200觀察的
回復(fù)

使用道具 舉報(bào)

ID:210139 發(fā)表于 2021-6-18 15:49 | 顯示全部樓層

對(duì)沒(méi)錯(cuò),就是CH340N,不用外部晶振的
回復(fù)

使用道具 舉報(bào)

ID:210139 發(fā)表于 2021-6-18 15:50 | 顯示全部樓層
殺死比亞 發(fā)表于 2021-6-18 15:47
不會(huì)影響串口功能,不燒錄程序的時(shí)候,就可當(dāng)串口使用

直接用硬件來(lái)控制,我沒(méi)有試過(guò)
回復(fù)

使用道具 舉報(bào)

ID:245629 發(fā)表于 2022-11-21 17:11 | 顯示全部樓層
波特率9600時(shí),確實(shí)是F8。
無(wú)標(biāo)題.png
回復(fù)

使用道具 舉報(bào)

ID:245629 發(fā)表于 2022-11-21 17:17 | 顯示全部樓層
波特率2400,是 0x7F
10.png
回復(fù)

使用道具 舉報(bào)

ID:16255 發(fā)表于 2022-11-22 14:08 | 顯示全部樓層
chenbl 發(fā)表于 2022-11-21 17:17
波特率2400,是 0x7F

實(shí)際是0x7F。
請(qǐng)看,軟件上的設(shè)定最低波特率為2400,所以這個(gè)7F也是用2400來(lái)發(fā)送的。
回復(fù)

使用道具 舉報(bào)

ID:245629 發(fā)表于 2022-11-23 08:56 | 顯示全部樓層
mengsiu 發(fā)表于 2022-11-22 14:08
實(shí)際是0x7F。
請(qǐng)看,軟件上的設(shè)定最低波特率為2400,所以這個(gè)7F也是用2400來(lái)發(fā)送的。

嗯,是的,下載軟件是用最低波特率來(lái)發(fā)送,只要設(shè)置最低波特率跟接收同樣,接收的是0x7F,但是STC下載軟件每次打開(kāi)默認(rèn)最低波特率2400,最高115200,所以這個(gè)燒錄器使用時(shí),打開(kāi)下載軟件不用去調(diào)最低波特率工作是正常的。
回復(fù)

使用道具 舉報(bào)

ID:408539 發(fā)表于 2023-1-11 22:37 | 顯示全部樓層
這個(gè)我也研究過(guò),不用那么復(fù)雜    CH340收到USB發(fā)來(lái)的串口信號(hào)時(shí)RST腳輸出一個(gè)低電平脈沖,,利用這個(gè)脈充用RC延時(shí)一下斷開(kāi)MUC電源即可 6.png
回復(fù)

使用道具 舉報(bào)

ID:292518 發(fā)表于 2023-4-7 10:15 | 顯示全部樓層
明記冷氣 發(fā)表于 2023-1-11 22:37
這個(gè)我也研究過(guò),不用那么復(fù)雜    CH340收到USB發(fā)來(lái)的串口信號(hào)時(shí)RST腳輸出一個(gè)低電平脈沖,,利用這個(gè)脈充用RC ...

學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:1089126 發(fā)表于 2023-9-22 14:12 | 顯示全部樓層
額,如果說(shuō)我不用軟件進(jìn)行冷啟動(dòng)加個(gè)按鍵進(jìn)行冷啟動(dòng)會(huì)怎么樣?
回復(fù)

使用道具 舉報(bào)

ID:491875 發(fā)表于 2023-9-23 15:58 | 顯示全部樓層
明記冷氣 發(fā)表于 2023-1-11 22:37
這個(gè)我也研究過(guò),不用那么復(fù)雜    CH340收到USB發(fā)來(lái)的串口信號(hào)時(shí)RST腳輸出一個(gè)低電平脈沖,,利用這個(gè)脈充用RC ...

實(shí)驗(yàn)這個(gè)電路可行,延時(shí)電容104有些小了,我把他改成474效果很好。
回復(fù)

使用道具 舉報(bào)

ID:491875 發(fā)表于 2023-9-25 22:53 | 顯示全部樓層
147532 發(fā)表于 2023-9-22 14:12
額,如果說(shuō)我不用軟件進(jìn)行冷啟動(dòng)加個(gè)按鍵進(jìn)行冷啟動(dòng)會(huì)怎么樣?

按鍵肯定可以,不過(guò)需要手動(dòng)控制
回復(fù)

使用道具 舉報(bào)

ID:292518 發(fā)表于 2023-9-26 10:15 | 顯示全部樓層
明記冷氣 發(fā)表于 2023-1-11 22:37
這個(gè)我也研究過(guò),不用那么復(fù)雜    CH340收到USB發(fā)來(lái)的串口信號(hào)時(shí)RST腳輸出一個(gè)低電平脈沖,,利用這個(gè)脈充用RC ...

大神的電路,驗(yàn)證過(guò)了,可以使用,全自動(dòng)下載...
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表