機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
SST89C54/58簡介
SST89C54/58簡介
 更新時間:2008-7-26 20:37:34  點擊數(shù):5
【字體: 字體顏色

一. SST89C54/58性能簡介
二. SST89C54/58功能圖
兼容于INTEL公司的P87C54/58 , 擴展了IAP及4K E2PROM。

三. SST89C54/58程序空間
在動態(tài)修改Block0程序的問題上,應當確保將要加載的程序正確無誤,至少做到進入Block1塊入口程序的正確性,否則就只有借助編程器來燒錄自舉程序了。但這樣就失去IAP的意義,不可不察。
在本公司的LOG2001 USB DEMO KIT開發(fā)系統(tǒng)上,需要完全更新Block0塊的內(nèi)容,讓用戶真實擁有P87C54/58的全部功能。這樣,當用戶在開發(fā)USB時,就不需要用定位器或者匯編語言來混合編程。只需象平時那樣操作自己熟悉的C51開發(fā)環(huán)境。
LOG2001 USB DEMO KIT開發(fā)系統(tǒng)使用UART來傳送Firmware,其默認Buadrate為9600bps。除了確保自舉程序入口正常以外,串口的Buadrate在當次也要相符。改動Buadrate只有在裝載成功以后才有效。
一般來說,在完全掌握IAP及232口以前,而身邊又缺乏編程器的情況下,應謹慎對待與之相關(guān)的程序語句。在本公司的LOG2001 USB DEMO KIT開發(fā)系統(tǒng)上,還預備有最后一種自舉能力:硬件自舉! 

四. IAP編程模式

SST89C54/58除了提供IAP編程模式以外,也可以借助外力(如編程器)強行將程序灌入,就象寫Flash ROM一樣。其實自舉程序就唯有通過這種方式載入。稱之為“外主編程模式”。
外主編程模式對于大多數(shù)程序員而言意義不大,有興趣的話參閱SST89C54/58的 Datesheet,下面介紹IAP模式。
IAP模式就是CPU一邊在某個Block 中運行,同時對另一個Block進行擦空,寫入,校驗等操作。注意,同一個Block內(nèi)不允許Program。被Program的Block整個兒處于“忙”狀態(tài),其代碼不可見。
IAP命令見下表:(略)
與此相關(guān)的特殊功能寄存器定義如下:
1.SFST
其中,SECDx為加密表,不同的加密級別將決定被加密單位對外的透明度,具體見下表:
2.SFCF
3.SFCM
4.SFDT
5.SFAL
6.SFAH

IAP程序設計:
對照上述介紹,很容易編寫出IAP燒錄函數(shù),下面給出幾個事例:
1. 塊擦除:
void block_erase (unsigned char block)
{
unsigned int timeout = 0xA555;
SFCF = 0xC0; 
SFAH = block; 
SFDT = 0x55;
SFCM = 0x0D;

while (--timeout){
if (Busy = = 0)
return;
}
}
2. 字節(jié)編程:
void byte_program (unsigned char laddr,unsigned char haddr,unsigned char udata)
{
unsigned char timeout = 0xFF;
SFCF = 0xC0;
SFAH = haddr; 
SFAL = laddr;
SFDT = udata;
SFCM = 0x0E;

while (--timeout){
if ( Busy = = 0)
return;
}
}
對于只需要Download Firmware來說,上述兩個函數(shù)已經(jīng)夠用。完整的IAP匯編子程序請參閱:http://www.ssti.com/
采用C語言編寫IAP函數(shù)需要一定的技巧,它關(guān)系到定位并訪問絕對地址等問題,而且這些函數(shù)只是應用系統(tǒng)中的一小部分,雖然嵌匯編或者純匯編更便于處理絕對地址,但卻不利于整個大系統(tǒng),有點丟西瓜的味道。
LOG2001 USB DEMO KIT開發(fā)系統(tǒng)的自舉程序使用純C語言編寫,而且也適用于低價位的SST89F54/58(和Philips的價位比大概二比一吧)。
如何拿IAP來當I2C使用,以便節(jié)省24LCxx或93Cxx呢。Sector的概念在這里尤為重要,因為改動數(shù)據(jù)不能影響程序,故而要求在小范圍內(nèi)操作。下面是關(guān)于Sector的函數(shù):
void sector_erase (unsigned int sector)
{
unsigned int timeout = 0xA555;
SFCF = 0xC0; 
SFAH = sector /256; 
SFAL = sector; 
SFCM = 0x0B;

while (--timeout){
if (Busy == 0)
return;
}
}
如果僅僅要修改某一兩個Byte,可將該Sector內(nèi)的數(shù)據(jù)全部保存于RAM中,改好后再全部回送Sector。
一般來說,數(shù)據(jù)Sector應設置在Block1的高端,這樣才不會和CODE競爭。

五. SST89C54/58發(fā)展系統(tǒng)

前面說過,SST89C54/58兼容于INTEL的P87C54/58,故而其編譯環(huán)境毋須作大的改動,如果不打算使用IAP功能,干脆一點也不改。
擴展IAP功能,對于匯編語言來說,只是在源文件開頭用EQU或DATA偽指令定義那六個新增加的SFR地址即可。而C語言也同樣在頭文件中增加定義的SFR地址。本公司網(wǎng)站(www.usb11.com)上有SST89C58.h供Download?蓪⑵渲苯犹娲<<reg51.h>>。
因為是IAP,仿真器不太重要,其實目前也沒有專門針對SST89C54/58的仿真器。即便有也沒市場,IAP應用最多的地方也就是當仿真器!

六. IAP應用場合

第一,IAP很方便,在網(wǎng)絡高速發(fā)展的今天,具備遠程升級軟件的產(chǎn)品無疑將受到歡迎。
第二,在編譯代碼的時候,對于稍稍多出來的一些程序代碼,可將其定位到Block1,從而避免購買更高容量的IC。
第三,在需要保存過程數(shù)據(jù)的系統(tǒng),可將原先的外部存儲器去掉,直接拿Block1當成外部E2PROM。此時,Block1等同于24LC32,而且操作速度要比24LC32快幾十上百倍。
第四,IAP在線軟件更新,沒有死角,包括自舉程序本身也可以重來,且毋須借助任何外力。仿真器的一大特點不就是編譯裝載嗎!沒錯,很多地方就拿它來當仿真器使用。
若要觀察程序變量,IAP的解決辦法是通過UART輸出調(diào)試信息。LOG2001 USB DEMO KIT就是采用這一調(diào)試技術(shù)。一點也不遜色于仿真器,特別在USB枚舉的過程中,仿真器特有的單步,中斷功能不可用,此時唯有UART可以信賴。詳情請見《USB枚舉步驟》。
IAP當仿真器的另一買點就是價廉物美,區(qū)區(qū)幾十元RMB的材料錢就可搞定。特別適合于單片機初學者。
傳統(tǒng)的仿真器在電氣性能方面,還無法做到和應用系統(tǒng)完全一致,這就是常見的“仿真通過,燒片不行”的毛病。IAP雖說是仿真,其實就是實際應用,不存在電氣性能或者物理接口方面的問題。
第五,產(chǎn)品小型化。一般地說,SMD只適合于大批量的生產(chǎn)廠家,因為SMD測試工具也是一筆不小的投資。如果商家在出售SST89C54/58以前,預先導入自舉程序,則用戶拿了SMD之后,可以先裝配,再燒錄,管它大封裝,小封裝還是微封裝呢!
關(guān)于LOG2001 USB DEMO KIT自舉程序的入口及入口參數(shù)設置,在本文附錄中給出。

附錄
LOG2001 USB DEMO KIT自舉程序入口參數(shù)

下列參數(shù)要求通過UART輸入:
1. “h”:選擇Download INTEL格式文件*。hex;
2. “b”:選擇Download 誠通格式文件*。Rom,它和*。Hex區(qū)別是將ASIC碼轉(zhuǎn)換成bin數(shù)據(jù),并去掉“0D,0A”等控制信息。數(shù)據(jù)量壓縮一倍,節(jié)省時間;
3. 輸入第一次“h”或者“b”之后,自舉程序?qū)⒎祷匾粋確認符0x20(空格),如果再次肯定要改寫Firmware,第二次輸入“h”或者“b”才啟動擦除和寫入。否則不改變原來的Firmware;
4. 輸入其它代碼,則系統(tǒng)提示錯誤后復位系統(tǒng);
5. 自舉程序入口地址:0xF8DD,不帶任何參數(shù),只需置好Buadrate;
下面給出入口事例函數(shù),可將其嵌入任何用戶系統(tǒng),實際上, LOG2001 USB DEMO KIT開發(fā)系統(tǒng)就是使用如下語句:
if (RI)
{
switch ( _getkey() )
{
case 'p':
(( void (code *)(void) ) &hard_reload[0] )();
break;
default:break;
}
} // if reload firmware
當然,在進入自舉程序以前,還要設置好Buadrate等等一系列參數(shù)。自舉程序?qū)⒉捎眠@些設置而不作任何修改。
下面是自舉程序:
switch (_getkey())
{
case 'h':
sst_send232 (' ');

if ( _getkey() != 'h')
goto nError;

sst_block_erase (0x00);
while ( read_write_hex_line (0x00) );
break;

case 'b':
sst_send232 (' ');

if ( _getkey() != 'b')
goto nError;

sst_block_erase (0x00);
while ( read_write_bin_line (0x00) );
break;

nError: default :
printf ("\nError!\n");
printf ("\n'h':for (*.hex);\n");
printf ("\n'b':for (*.rom);\n");
(( void (code *) (void) ) &reset_0x0000 [0]) ();
break;
}
Download文件最大可達32K,裝載完成之后,采用20秒鐘倒記時,自動復位運行剛剛Download的程序,毋須任何機械動作。
由于某種原因而破壞入口函數(shù),則只有通過編程器來恢復。在燒寫入口函數(shù)的時候,請先限制DEVICER Buffer Size在0x8000之內(nèi),以免連鎖破壞自舉程序。
為了便于調(diào)試USB及其裝載IAP不會出錯,本公司特推出“USB集成化開發(fā)環(huán)境”,它具有如下功能:
1. USB功能調(diào)試,詳情請參閱《USB集成化開發(fā)環(huán)境》;
2. 串口精靈,可任意設置串口參數(shù),收發(fā)單個數(shù)據(jù)或者文件,接受單片機C語言的人機信息(printf,scanf, _getkey()等等);
3. IAP程序下載。IAP不須要任何機械動作,可以直接全面而徹底更新firmware,稍微操作不當就會影響到自舉程序。《USB集成化開發(fā)環(huán)境》有多重查驗措施,用戶只需全神關(guān)心自己的源文件就是了;
4. 自動疊加硬件自舉功能,不管用戶如何修改Firmware,即便死機,或者是由于前次IAP時中途停電而造成程序飛跑,仍然可通過該功能下載程序。具體是:P2.0=P2.1à“h”à“ h”à*.hex。
5. C51編譯(可選),建立好開發(fā)環(huán)境也是件十分重要工作,尤其是初學者

 

  • 上一篇: STC89C51定時器2的應用
  • 下一篇: 內(nèi)部EEPROM 放數(shù)據(jù)STC89C58RD+ FLASH-ISP-IAP
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1