當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]引言在以網(wǎng)絡(luò)通訊、軟件和微電子為主要標(biāo)志的信息產(chǎn)業(yè)飛速發(fā)展的今天,以為微處理器為核心的嵌入式系統(tǒng)隨處可見,這些系統(tǒng)應(yīng)用的典型例子包括移動(dòng)電話系統(tǒng)、汽車的應(yīng)用、家用電器、航天應(yīng)用、醫(yī)療設(shè)備和國防系統(tǒng)等[1

引言

在以網(wǎng)絡(luò)通訊、軟件和微電子為主要標(biāo)志的信息產(chǎn)業(yè)飛速發(fā)展的今天,以為微處理器為核心的嵌入式系統(tǒng)隨處可見,這些系統(tǒng)應(yīng)用的典型例子包括移動(dòng)電話系統(tǒng)、汽車的應(yīng)用、家用電器、航天應(yīng)用、醫(yī)療設(shè)備和國防系統(tǒng)等[1]。作為嵌入式系統(tǒng)核心部分的微處理器分為8位,16位,32位和64位四大類。對于很大一部分應(yīng)用領(lǐng)域,性能要求相對較低,而產(chǎn)品成本是最重要的考慮因素,這種情況下8位微處理器將是最佳選擇。在8位微處理器中8051芯片家族具有低成本、大范圍、易獲得和應(yīng)用廣泛的特點(diǎn),是開發(fā)嵌入式優(yōu)秀平臺(tái)。另外需要指出的是為了適應(yīng)目前IC產(chǎn)業(yè)中流行的SOC(system on a chip)設(shè)計(jì)潮流,許多著名半導(dǎo)體公司紛紛推出了基于8051架構(gòu)的8051 SOC芯片,其中美國SILICON LAB公司的C8051Fxxx系列單片機(jī)就是一例。

在8051芯片家族的實(shí)際應(yīng)用中經(jīng)常遇到的問題是沒有足夠的數(shù)據(jù)存儲(chǔ)器用于支持較大的嵌入式系統(tǒng)。但是采用常規(guī)的擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器的方法存在一個(gè)較大的引腳資源問題(其通常占用了18條引腳)。這對于以外部引腳數(shù)本就不多的微處理器為核心的嵌入式系統(tǒng)來說是致命的。

為了解決這一矛盾,本文C8051F 單片機(jī)和AT45DB081芯片為例,以介紹了一種利用串行外設(shè)接口(SPI)擴(kuò)展大容量數(shù)據(jù)存儲(chǔ)器的方法。

硬件簡介

    C8051F 系列單片機(jī)[2]是完全集成的混合信號(hào)SOC芯片,具有與8051指令集完全兼容的CIP-51內(nèi)核。它在一個(gè)芯片集成了構(gòu)成一個(gè)數(shù)據(jù)采集或控制系統(tǒng)所需的幾乎所有模擬和數(shù)字外設(shè)以及其他功能部件。這些部件包括:ADC,可編程增益放大器、DAC、電壓比較器、電壓基準(zhǔn)、溫度傳感器、SMBus/I2C、UART、SPI、定時(shí)器、PCA、內(nèi)部振蕩器、WDT和電源監(jiān)視器等。各個(gè)有輸入/輸出的內(nèi)部部件可以通過交叉開關(guān)配置到I/O端口(P0、P1和P2)的外部引腳上。它內(nèi)置了FLASH程序存儲(chǔ)器、內(nèi)部RAM,部分器件內(nèi)部還有一定數(shù)量的位于外部數(shù)據(jù)存儲(chǔ)器空間的XRAM。C8051F單片機(jī)具有片內(nèi)調(diào)試電路,通過JTAG接口可以進(jìn)行非侵入式、全速的在系統(tǒng)調(diào)試。這種真正能獨(dú)立工作的SOC單片機(jī)使得設(shè)計(jì)體積小、功耗低、可靠性高的單片機(jī)系統(tǒng)變得方便。

    AT45DB081[3]是ATMEL公司推出的工作電壓為2.7~3.6V、可在系統(tǒng)重寫的SPI兼容的FLASH數(shù)據(jù)存儲(chǔ)器。它具有4096頁、每頁264字節(jié)(共計(jì)8M字節(jié))的主存儲(chǔ)器容量以及2個(gè)264字節(jié)的SRAM數(shù)據(jù)緩存器。這種串聯(lián)接口FLASH存儲(chǔ)器十分適用于要求存儲(chǔ)密度高、引腳資源占用少、電源電壓低和功耗小的商業(yè)和工業(yè)應(yīng)用領(lǐng)域。

硬件原理圖

    C8051F單片機(jī)(以C8051F020為例)與AT45DB081的硬件原理圖見圖1所示。

圖1 C8051F020和AT45DB081的硬件連接原理圖

    圖中將C8051F020的P0.2、P0.3和P0.4引腳通過交叉開關(guān)配置為SPI的CLK(串行時(shí)鐘)、MISO(主出從入)和MOSI(主出從入)信號(hào)線,分別與AT45DB081的時(shí)鐘、串行輸出和串行輸入引腳相連。將P3.0、P3.1和P3.2與AT45DB081的芯片復(fù)位、片選和忙閑狀態(tài)引腳相連。

    單片機(jī)通過SPI與存儲(chǔ)器間啟動(dòng)一次數(shù)據(jù)傳輸?shù)倪^程為先將SPI標(biāo)志為SPIF清零,然后向數(shù)據(jù)寄存器SPI0DAT寫入一個(gè)字節(jié),當(dāng)SPIF由硬件置1表示一次傳輸結(jié)束。

軟件編程

AT45DB081的操作方式及操作碼

   對于AT45DB081,共有十種操作方式,見表1所示。

表1  AT45DB081的操作方式及操作碼

軟件流程圖及示例

    C8051F單片機(jī)對AT45DB081進(jìn)行數(shù)據(jù)讀寫操作的軟件流程圖如圖2所示。

圖2中系統(tǒng)初始化包括系統(tǒng)時(shí)鐘初始化、設(shè)置交叉開關(guān)表將P0.2、P0.3和P0.4引腳配置為SPI接口,設(shè)置SPI特殊狀態(tài)寄存器和復(fù)位數(shù)據(jù)存儲(chǔ)器。

    單片機(jī)通過P3.1讀取AT45DB081的忙閑狀態(tài)引腳來判斷存儲(chǔ)器是否空閑,若P3.2為“1”表示存儲(chǔ)器空閑,否則表示存儲(chǔ)器忙。當(dāng)存儲(chǔ)器空閑時(shí)通過P3.1引腳輸出“0”選中存儲(chǔ)器。

    選中存儲(chǔ)器后可以通過SPI發(fā)送命令字,表1所示的10種操作對應(yīng)的命令字見文獻(xiàn)[3]。下面以表1中的第二種操作為例給出命令字示例:操作碼(54H)、15位無效位、9位緩存器內(nèi)某字節(jié)的地址、8位無效數(shù)。當(dāng)發(fā)送完命令字后可以讀取數(shù)據(jù)。

圖2 對AT45DB081進(jìn)行數(shù)據(jù)讀寫操作的軟件流程圖

       表1中的第二種操作為例的軟件示例(部分)如下。

void SendSPIByte(unsigned char ch)  // 通過SPI發(fā)送一個(gè)字節(jié)數(shù)據(jù)

{

         SPIF = 0;                   // SPIF位清零

         SPI0DAT = ch;              // 啟動(dòng)一次數(shù)據(jù)發(fā)送

         while (SPIF == 0);                // 等待數(shù)據(jù)發(fā)送完畢

}

unsigned char GetSPIByte(void)    //通過SPI接收一個(gè)字節(jié)數(shù)據(jù)

{

    SPIF = 0;                  // SPIF位清零

         SPI0DAT = 0;              //啟動(dòng)一次數(shù)據(jù)接收

         while (SPIF == 0);          // 等待數(shù)據(jù)接收完畢

         return  SPI0DAT;          // 讀取SPI接收到的數(shù)據(jù)

}

SendSPIByte(54H);            //發(fā)送操作碼52H

SendSPIByte(0x00);  //發(fā)送8位無效位

SendSPIByte((unsigned char)(star_addr>>8));  //發(fā)送7位無效位和第一位地址位

SendSPIByte((unsigned char)star_addr);      //發(fā)送后8位地址位

SendSPIByte(0x00);                   //發(fā)送8位無效位

Data=GetSPIByte();                  //讀取緩存器中數(shù)據(jù)

    示例中star_addr為unsigned int型數(shù)據(jù),其低9位用于存放地址位。

結(jié)論

    本文介紹的方法在占用C8051F單片機(jī)引腳數(shù)極少的情況下實(shí)現(xiàn)了大容量外部存儲(chǔ)器的擴(kuò)展,并給出了軟件流程圖及示例。這種方法同樣可應(yīng)用于其它帶有SPI接口電路的微處理器?,F(xiàn)在我們正將這種方法應(yīng)用到以C8051F020為核心的嵌入式數(shù)據(jù)采集系統(tǒng)中。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉