新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC12C系列的協議分析

        STC12C系列的協議分析

        作者: 時間:2016-11-29 來源:網絡 收藏
        這個版本的協議和以前已經有了比較大的改變,包括包頭等等。但是STC有一個千年不變的開啟幀:0x7F,在STC15系列的MCU,仍然使用著這個ISP的開啟幀。原因我不說大家也明白

        那么進入主題:STC12系列下載的幀格式:

        本文引用地址:http://www.104case.com/article/201611/323423.htm

        協議幀簡介:主要構成如下

        Head

        Sign

        Reserved

        Length

        Frame

        Data

        Checksum

        Trail

        各個填充區詳細說明:

        名稱

        長度

        功能

        Head

        2-Byte

        包頭 (0×46,0xB9)

        Sign

        1-Byte

        標識 (0x6A或0×68)

        Reserved

        1-Byte

        預留區 (填充0×00)

        Length

        1-Byte

        (Head + Length + Frame+Data)的總長

        Frame

        1-Byte

        用以區分不同的幀

        Data

        0~0x8A Bytes

        數據

        Checksum

        2 Byte

        校驗和

        Trail

        1 Byte

        包尾 (0×16)

        至于Cmd的協議應答之類的:

        命令 說明 MCU回應
        7F 引導MCU進入ISP并測量時鐘 50 MCU選項信息

        50 設置MCU型號等 8F 應答

        8F 新波特率測試 8F 測試應答

        8E 正式修改波特率 84 修改波特率應答

        84 文件容量,擦除芯片 00 應答

        00 下載程序 00/30 應答校驗和,成功或失敗

        30 重新下載程序 00/30 應答校驗和

        69 型號等 8D 應答

        8D 設置選項 50 應答選項

        82 退出 重啟進用戶程序

        至于交互過程,也算是簡單的,就是看你的設備反應速度了。這就是為什么某些PL2303線下載老出錯的原因,不過我這里至少用的挺好。

        PC ->0x7f ->MCU

        MCU ->信息 ->PC

        PC -> 核對?MCU型號 -> MCU

        MCU ->波特率變更請求 ->PC

        PC ->波特率測試 ->MCU[此時,計算重載值切換波特率】

        MCU ->成功/無回應 -> PC

        PC ->波特率設置 ->MCU [切換到最低波特率上去

        MCU ->成功/無回應 ->PC [切換到數據波特率上去

        PC -> 擦除芯片 -> MCU

        MCU ->成功/無回應 ->PC

        PC -> 0x80個字節數據 ->MCU

        MCU -> 校驗碼 ->PC

        循環到文件結束

        PC ->設置?型號 ->MCU

        MCU ->成功/無回應 -> PC

        PC ->設置選項 ->MCU

        MCU ->成功/無回應 -> PC

        PC ->編程結束 ->MCU

        校驗和算法是將標識到數據區的內容統統加起來,取低十六位,看程序:

        01PUBLIC FUNCTION CheckSum(buff ASString, start ASInteger, endchr ASInteger) ASString返回兩個字
        02DIM i ASInteger
        03DIM chkSum ASLong
        04DIM lo ASByte
        05DIM hi ASByte
        06DIM tempStr ASString
        07chksum = 0
        08FOR i = start TO endchr
        09chksum = chksum + Asc(Mid(buff, i, 1))
        10NEXT
        11hi = Shr(chksum AND &HFF00, 8)
        12lo = chksum AND &H00FF
        13tempStr = Chr(hi) & Chr(lo)
        14RETURN tempStr
        15END

        關于STC12C5Ax系列的信息幀,這里有一張別人分析的圖:

        至于固件版本我這里測試的有:

        16.6I : 66 49
        26.2I : 62 49

        關于晶振速度的計算:

        如果是標準12M時鐘,1200Kps波特率,則計數值為1/1200*7 = 5833uS,數值也為5833。將八次技術求平均(假設為18 94=6292),則此時單片機時鐘頻率=6292*12M/5833 = 12.994MHz。


        上一頁 1 2 下一頁

        關鍵詞: STC12C系列協議分

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 京山县| 夹江县| 吴桥县| 慈溪市| 万载县| 元氏县| 渑池县| 花莲市| 嘉兴市| 武平县| 岚皋县| 霍城县| 罗定市| 台前县| 平舆县| 项城市| 宁阳县| 铜陵市| 潜山县| 河津市| 湟源县| 烟台市| 巴彦淖尔市| 青岛市| 霍州市| 静宁县| 岳阳市| 察哈| 屏南县| 吴旗县| 丰县| 邵阳市| 谢通门县| 石阡县| 阿勒泰市| 黎川县| 封开县| 隆林| 曲沃县| 涿州市| 朔州市|