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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5723|回復: 4
打印 上一主題 下一主題
收起左側

[轉帖]我自己小站上的對STC12系列下載協議的分析

[復制鏈接]
跳轉到指定樓層
樓主
ID:43499 發表于 2012-8-2 21:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 

這篇文章主要介紹STC12C系列的下載協議。

這個版本的協議和以前已經有了比較大的改變,包括包頭等等。但是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

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

01PUBLIC 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
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。

我正在想,那么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

接收數據 同上

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

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

184 FF 00 F0 00 00 F0 00 00 00 00 00 00 00 00 00 00 00
200 80 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B
36A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54
453 52 51 50 4F 4E 4D 4C
54B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35
634 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 1E
71D 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的實現方式

萬致遠原創,轉載注明出處:http://www.rwzy.co.cc

[此貼子已經被作者于2012-8-2 21:36:48編輯過]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:43499 發表于 2012-8-2 21:36 | 只看該作者
 貌似這個論壇沒有代碼高亮功能。
粘貼過來格式變得亂七八糟了
回復

使用道具 舉報

板凳
ID:1 發表于 2012-8-3 01:47 | 只看該作者

用ie發帖應該沒有問題的

回復

使用道具 舉報

地板
ID:43499 發表于 2012-8-3 13:33 | 只看該作者
 在Linux下面ies4linux可不好用……
回復

使用道具 舉報

5#
ID:276663 發表于 2018-3-2 10:21 | 只看該作者
也想做個離線下載器玩,樓主寫的有參考價值。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本一区二区三区四区 | 亚洲午夜视频在线观看 | 久久亚洲精品视频 | 黄色毛片一级 | 久久蜜桃精品 | 国产精品福利在线观看 | 在线激情视频 | 欧美精品电影一区 | 黄色网络在线观看 | 一级电影免费看 | 国产传媒在线观看 | av大片| 美女福利视频一区 | 草在线| 精品丝袜在线 | 电影91久久久 | 先锋资源站 | 久久高清国产视频 | 国产精品久久久久久久久久免费看 | 中文字幕亚洲精品 | 99精品国自产在线 | 国产成人免费视频网站高清观看视频 | 亚洲网在线 | 自拍偷拍一区二区三区 | 国久久 | 日韩精品专区在线影院重磅 | 中文字幕在线精品 | 99国产精品99久久久久久 | 麻豆久久久9性大片 | 国产精品a一区二区三区网址 | 丁香综合| 国产精品一区在线观看 | 亚洲成人精品在线观看 | 国产日韩精品视频 | 国产精品视频一区二区三区, | 欧美日韩高清在线一区 | 欧美激情一区二区三区 | 国产一区二区精品在线观看 | 中文字幕日韩欧美 | 热99精品视频 | 久久久成人一区二区免费影院 |