1. 問(wèn)題:根據(jù)WCH其它型號(hào)芯片的經(jīng)驗(yàn),CHIP_ID應(yīng)該返回CH5XX的后兩位,這里應(yīng)該為55。
????實(shí)測(cè):讀取CHIP_ID寄存器,得到的是56。
2. 問(wèn)題:CH555芯片資料顯示,ROM_STATUS寄存器在Flash操作成功后應(yīng)該返回0xC0。
????實(shí)測(cè):以4 字節(jié)為單位讀取ReadOnly 只讀信息區(qū)域,操作成功后ROM_STATUS返回的是0x00。
//?測(cè)試代碼 ROM_ADDR_L?=?0x10;????????//?讀芯片唯一ID碼 ROM_ADDR_H?=?0x00; ROM_CTRL?=?0x8D; if?(ROM_STATUS)???????????//?檢查操作結(jié)果(這里讀取成功會(huì)返回0x00) { ????return?ROM_STATUS;????//?返回錯(cuò)誤代碼 }
3. 問(wèn)題:CH555芯片資料顯示,ROM_STATUS寄存器在Flash操作成功后應(yīng)該返回0xC0。
????實(shí)測(cè):?jiǎn)巫止?jié)寫flash-ROM,操作成功后ROM_STATUS返回的是0x40。
????注意:?jiǎn)巫止?jié)寫flash-ROM,操作成功后ROM_ADDR會(huì)自動(dòng)+1,這點(diǎn)芯片資料沒提到。
//?測(cè)試代碼 //?測(cè)試用數(shù)據(jù) UINT8X?TestData[4]?=?{1,2,3,4}; UINT8D?i?=?0; UINT8D?Length?=?4; //?關(guān)閉Flash寫保護(hù) SAFE_MOD?=?0x55; SAFE_MOD?=?0xAA; GLOBAL_CFG?|=?bCODE_WE?|?bDATA_WE; //?設(shè)置CodeFlash操作地址 ROM_ADDR_L?=?0x00;????//?寫入地址低位 ROM_ADDR_H?=?0xF0;????//?寫入地址高位 //?寫入CodeFlash數(shù)據(jù) for?(i?=?0;?i?!=?Length;?++i) { ????ROM_BUF_MOD?=?0x80;????????????//?選擇單字節(jié)編程模式 ????ROM_DAT_BUF?=?TestData[i];?????//?將數(shù)據(jù)寫入緩沖寄存器 ????ROM_CTRL?=?ROM_CMD_PROG;???????//?執(zhí)行Flash寫入操作(注:操作成功后ROM_ADDR會(huì)自動(dòng)+1) ????if?(ROM_STATUS?!=?0x40)????????//?檢查操作結(jié)果(注:芯片資料有誤,這里操作成功會(huì)返回0x40) ????{ ????????return?ROM_STATUS;?????????//?返回錯(cuò)誤代碼 ????} ????//++ROM_ADDR;??????????????????//?寫入成功后地址+1 } //?啟用Flash寫保護(hù) SAFE_MOD?=?0x55; SAFE_MOD?=?0xAA; GLOBAL_CFG?&=?~(bCODE_WE?|?bDATA_WE);