9

ESP-01S无线下载器 - 北極星

 2 years ago
source link: https://www.cnblogs.com/polaris07/p/17058702.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

ESP-01S无线下载器

-项目概述-

最开始学习51的时候,总是“冷启动”,手动按动开关重启,下载一次程序重启一次,觉得很麻烦

而且另一方面,我的最小系统板是有自带电源的,那么这根数据线也显得有些多余了,于是打算做一个“无线自动烧录器”。

  •  程序发送特定重启指令实现“热启动”。
  • ESP-01S作为无线串口使用。
  • 烧录器端口指定。

材料清单:51系统板一块(STC8G1K08),ESP-01S模块两个(收发),CH340G下载模块

注意:我用的是51单片机是STC8G系列,对于老版本的STC89C52能否使用特定指令重启,需要自己去查看数据手册,具体位置下面会提到。

-成品预览-

2282112-20230117201415995-233985265.png
2282112-20230117201434287-1103462233.png

2282112-20230117201536380-710800868.png
2282112-20230117201558024-1414732548.png

-项目框架-

这个项目硬件逻辑很简单,主要在于特定指令重启这一块,查阅文档很麻烦,整体流程如下:

2282112-20230117202407114-2012156623.png

-硬件资料,代码-

  • ISP软复位方法:

    根据STC8G芯片文档(下文文末):

                2282112-20230117202932584-606015006.png

    一共有四种方法,这里我选择串口特定指令检测复位,其余方法可以自己查阅文档调试。

    关键代码:

  • IAP_CONTR = 0x60; //复位到系统区
  • #include "reg51.h"
    #include "intrins.h"
    #define FOSC 11059200UL
    #define BR115200 (65536 - FOSC / 4 / 115200)
    sfr IAP_CONTR = 0xc7;
    sfr AUXR = 0x8e;
    sfr P3M0 = 0xb2;
    sfr P3M1 = 0xb1;
    char stage;
    
    /*
    每一次读取一个字符,当当前字符满足要求,(每一个case的if语句作用)
    就判断下一位是否满足要求,如果全部满足,(每一行stage作用)
    就执行跳转指令。如果当中有一位不满足,
    就从新跳转到第一位,重新进行判断。(go to 语句作用)
    */
    void UartIsr() interrupt 4 //串口中断服务程序
    {
        char dat;
        if (TI)
        {
            TI = 0;
        }
        if (RI)
        {
            RI = 0;
            dat = SBUF;
            switch (stage)
            {
                case 0:
                default:
                L_Check1st:
                if (dat == 'S') stage = 1;
                else stage = 0;
                break;
                
                case 1:
                if (dat == 'T') stage = 2;
                else goto L_Check1st;
                break;
                
                case 2:
                if (dat == 'C') stage = 3;
                else goto L_Check1st;
                break;
                
                case 3:
                if (dat == 'I') stage = 4;
                else goto L_Check1st;
                break;
                
                case 4:
                if (dat == 'S') stage = 5;
                else goto L_Check1st;
                break;
                
                case 5:
                if (dat == 'P') stage = 6;
                else goto L_Check1st;
                break;
                
                case 6:
                if (dat == '$') //当检测到正确的用户下载命令时
                IAP_CONTR = 0x60; //复位到系统区
                else goto L_Check1st;
                break;
            }
        }
    }
    void main()
    {
        P3M0 = 0x00;
        P3M1 = 0x00;
        SCON = 0x50;
        TMOD = 0x00;
        AUXR = 0x40;
        TH1 = BR115200 >> 8; //设置串口波特率为 115200
        TL1 = BR115200;
        TR1 = 1;
        ES = 1;
        EA = 1;
        stage = 0;
        while (1)
        {
        }
    }

项目全部文件:

个人博客下方私信领取

http://potatoworld.top:5800/

最后,下载成功,非常nice ~

2282112-20230117210105726-1304637500.png

-项目槽点-

  • 对于STC新系列的单片机,串口寄存器相关的配置还是交给软件去做吧,想要自己配置练练手的拿STC89系列就够了

      切记。新系列需要配置AUXR寄存器,具体配置方式查看数据手册,也可以STC烧录器自带的

    

2282112-20230117205105813-1713868312.png
  • 注意电平转换,5V转3.3V ,电平转换电路如下

  

2282112-20230117205723018-1799022219.png

Recommend

  • 109

    ESP라고 불리는 이 핵은 적의 위치가 화면에 나타난다. ESP는 ExtraSensory Perception, 초감각적 지각이라는 뜻이다. 월핵과 유사해 보이지만 캐릭터 말고도 물체의 상태나 정보를 화면에 표시해주는 점에...

  • 10

    也來玩物聯網:窮人的原子彈 - ESP 開發板 2021-04-02 03:01 PM 0 2,492 從小我就對電子有濃厚興趣,無奈自己的聯考分數不給力,唸不了電子電機。 上專科後有...

  • 62
    • blog.darkthread.net 4 years ago
    • Cache

    IoT 練習 - ESP Web 介面溫溼度記錄器

    IoT 練習 - ESP Web 介面溫溼度記錄器 2021-05-02 10:12 PM 0 226 寫好 ESP WiFi 設定...

  • 30

    北極星指標與 Product Led Growth 加入FB社團,乾貨不漏接 ...

  • 10

    這是在 Product Tank Taipei 分享的關於怎麼訂立北極星指標的分享。還拿了 商業思維學院 的北極星指標當例子,說明是怎麼一步一步篩選出專屬的北極星指...

  • 7
    • abcdxyzk.github.io 4 years ago
    • Cache

    ipsec(AH和ESP)

    ipsec(AH和ESP) 2021-06-15 22:24:00 https://blog.csdn.net/lyg920/article/details/51658295 最初的IP协议是没有任何的安全措施的...

  • 7
    • abcdxyzk.github.io 4 years ago
    • Cache

    Linux2.6下ESP包解析流程

    Linux2.6下ESP包解析流程 2021-06-15 21:50:00 http://www.360doc.com/content/11/0516/05/706976_117227003.shtml 以...

  • 1

    使用 PowerShell 製作 Arduino/ESP TFT 圖檔資料-黑暗執行緒618 免運優惠失心瘋買了一堆 Arduino/ESP 零件,裡面有兩塊 TFT 彩色螢幕,想玩玩彩色顯示。 花了點時間,總算試出來

  • 7

    [公告] Euro2020 版的投票结果 CRO-ESP [复制链接] 分享:

  • 1
    • mrpm.cc 2 years ago
    • Cache

    職涯的北極星指標

    職涯的北極星指標 40多歲後,職涯選擇變多,當顧問很有趣、真正做好一件事也很有趣,當有這麼多選擇時,把自己的北極星定義清楚真的很重要。 去年決定把自己的北極星設定在「為對的人貢獻價值,並得到快樂」,體...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK