久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

STC12C系列的協議分析

作者:萬致遠   來源:萬致遠的博客   點擊數:  更新時間:2012年08月20日   【字體:

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

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

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

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

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

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

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

 

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

1 6.6I : 66 49
2 6.2I : 62 49

關于晶振速度的計算:

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

我正在想,那么C級別的單片機是不是xx 43呢~

以下數據幀省略幀頭幀尾幀長度校驗碼

——————–核對MCU型號幀————————-

發送數據 50 07 00 36 01 MCU型號

接收數據 8F

——————-波特率實驗幀—————————–

發送數據 8F xx yy zz aa dd 83

xx=0xC0 (C0=1100 0000,意思就是T1x12,波特率加倍)

yy=定時器重載值,按照加倍/1T計算。

zz=設置校驗值,計算方式是 ff=xx

aa=波特率校驗值,計算方式是aa=2 * (0×100 -yy)

dd=延時值,延時多少時間片切換

83為ISP定時常數,這個值適用于12M晶振,在STC手冊中有不明顯的描述:

 
1 //#define   ENABLE_IAP   0x80//if SYSCLK<30MHz
2 //#define   ENABLE_IAP   0x81//if SYSCLK<24MHz
3 //#define       ENABLE_IAP   0x82//if SYSCLK<20MHz
4 //#define   ENABLE_IAP   0x83//if SYSCLK<12MHz
5 //#define   ENABLE_IAP   0x84//if SYSCLK<6MHz
6 //#define   ENABLE_IAP   0x85//if SYSCLK<3MHz
7 //#define   ENABLE_IAP   0x86//if SYSCLK<2MHz
8 //#define       ENABLE_IAP    0x87//if SYSCLK<1MHz

但是實際上測試似乎83這個值在40M都沒有問題。

接受數據:

8F xx yy zz aa dd 83

—————————–波特率確認幀

發送數據 8E xx yy zz dd 83

接收數據 同上

——————————擦除幀:

這里我有充分的理由懷疑老妖是有毛病的。都到了下載程序的地步了還搞這么詭異的擦除命令:

 
1 84 FF 00 F0 00 00 F0 00 00 00 00 00 00 00 00 00 00 00
2 00 80 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 
3 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 
4 53 52 51 50 4F 4E 4D 4C
5 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 
6 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 1E 
7 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E

回應:

00 00

———————數據幀

發送 00 00 00 ADDR 00 LEN EF 0×80 bytes數據

ADDR = 2BYTE 的地址,高位在前低位在后

LEN  似乎是數據長度

數據字段如果不足80 bytes填ff補足

回應 07 ChkSum

ChkSum的算法和前面介紹的一樣,只不過只是針對數據部分的校驗

——————設置型號幀:

69 07 00 36 01 MCU_MODEL

MCU_MODEL是MCU型號

回應就一個字 8D

——————-設置選項幀

發送:8D FF x1 x2 FF FF FF FF FF x3 FF FF FF FF FF FF 00 A9 0A A6

x1,x2,x3參見前面的選項信息

接受:50 FF x1 x2 FF x3 03 FF 固件版本 FF x1 x2 FF x3 FF 00 A9 00 03 00 9A 04 79 1A 00 AD FF 00 62

——————RESET幀

發送:82 00 00

沒有回應。

具體實現可以看kSTC12-ISP的實現方式

關閉窗口

相關文章

主站蜘蛛池模板: 欧美久久久久久 | 国产精品99久久久久久www | 国产欧美精品一区二区三区 | 日韩精品久久一区二区三区 | 精品国产99 | 欧美一二三四成人免费视频 | 一区二区三区日韩 | 99re免费| 国产日韩欧美 | 国产精品久久久久一区二区三区 | 午夜免费视频 | 欧美成人自拍视频 | 久久精品一区二区三区四区 | 日韩欧美在线一区二区 | 亚洲免费视频在线观看 | 欧美综合久久 | 日日干天天操 | 国产精品入口 | 一区二区三区免费网站 | 欧美福利 | 五月婷婷丁香 | 亚洲精品久久久久久下一站 | 国产成人精品网站 | 亚洲成人蜜桃 | 午夜丰满寂寞少妇精品 | 人人做人人澡人人爽欧美 | 免费看国产a | 一区二区久久精品 | 免费观看黄a一级视频 | 午夜精品视频一区 | 日本a v在线播放 | 亚洲免费在线 | 国产福利在线播放麻豆 | 亚洲精品视频在线看 | 欧美精品一区二区三区在线 | 最新黄色在线观看 | 国产高清精品一区 | 精品日韩一区二区 | 欧洲一级毛片 | 国产无人区一区二区三区 | 国产视频中文字幕在线观看 |