掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
在以網(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è)備和國(guó)防系統(tǒng)等[1]。作為嵌入式系統(tǒng)核心部分的微處理器分為8位,16位,32位和64位四大類。對(duì)于很大一部分應(yīng)用領(lǐng)域,性能要求相對(duì)較低,而產(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芯片,其中美國(guó)SILICON LAB公司的C8051Fxxx系列單片機(jī)就是一例。
在8051芯片家族的實(shí)際應(yīng)用中經(jīng)常遇到的問(wèn)題是沒(méi)有足夠的數(shù)據(jù)存儲(chǔ)器用于支持較大的嵌入式系統(tǒng)。但是采用常規(guī)的擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器的方法存在一個(gè)較大的引腳資源問(wèn)題(其通常占用了18條引腳)。這對(duì)于以外部引腳數(shù)本就不多的微處理器為核心的嵌入式系統(tǒng)來(lái)說(shuō)是致命的。
為了解決這一矛盾,本文C8051F 單片機(jī)和AT45DB081芯片為例,以介紹了一種利用串行外設(shè)接口(SPI)擴(kuò)展大容量數(shù)據(jù)存儲(chǔ)器的方法。
硬件簡(jiǎn)介
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ò)交叉開關(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)試電路,通過(guò)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頁(yè)、每頁(yè)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ò)交叉開關(guān)配置為SPI的CLK(串行時(shí)鐘)、MISO(主出從入)和MOSI(主出從入)信號(hào)線,分別與AT45DB081的時(shí)鐘、串行輸出和串行輸入引腳相連。將P3.0、P3.1和P3.2與AT45DB081的芯片復(fù)位、片選和忙閑狀態(tài)引腳相連。
單片機(jī)通過(guò)SPI與存儲(chǔ)器間啟動(dòng)一次數(shù)據(jù)傳輸?shù)倪^(guò)程為先將SPI標(biāo)志為SPIF清零,然后向數(shù)據(jù)寄存器SPI0DAT寫入一個(gè)字節(jié),當(dāng)SPIF由硬件置1表示一次傳輸結(jié)束。
軟件編程
AT45DB081的操作方式及操作碼
對(duì)于AT45DB081,共有十種操作方式,見表1所示。
表1 AT45DB081的操作方式及操作碼
軟件流程圖及示例
C8051F單片機(jī)對(duì)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ī)通過(guò)P3.1讀取AT45DB081的忙閑狀態(tài)引腳來(lái)判斷存儲(chǔ)器是否空閑,若P3.2為“1”表示存儲(chǔ)器空閑,否則表示存儲(chǔ)器忙。當(dāng)存儲(chǔ)器空閑時(shí)通過(guò)P3.1引腳輸出“0”選中存儲(chǔ)器。
選中存儲(chǔ)器后可以通過(guò)SPI發(fā)送命令字,表1所示的10種操作對(duì)應(yīng)的命令字見文獻(xiàn)[3]。下面以表1中的第二種操作為例給出命令字示例:操作碼(54H)、15位無(wú)效位、9位緩存器內(nèi)某字節(jié)的地址、8位無(wú)效數(shù)。當(dāng)發(fā)送完命令字后可以讀取數(shù)據(jù)。
圖2 對(duì)AT45DB081進(jìn)行數(shù)據(jù)讀寫操作的軟件流程圖
表1中的第二種操作為例的軟件示例(部分)如下。
void SendSPIByte(unsigned char ch) // 通過(guò)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) //通過(guò)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位無(wú)效位
SendSPIByte((unsigned char)(star_addr>>8)); //發(fā)送7位無(wú)效位和第一位地址位
SendSPIByte((unsigned char)star_addr); //發(fā)送后8位地址位
SendSPIByte(0x00); //發(fā)送8位無(wú)效位
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)中。
電腦硬盤是計(jì)算機(jī)最主要的存儲(chǔ)設(shè)備。硬盤(港臺(tái)稱之為硬碟,英文名:Hard Disk Drive, 簡(jiǎn)稱HDD 全名溫徹斯特式硬盤)由一個(gè)或者多個(gè)鋁制或者玻璃制的碟片組成。這些碟片外覆蓋有鐵磁性材料。絕大多數(shù)硬盤都是固定硬...
關(guān)鍵字: HDD 驅(qū)動(dòng)器 數(shù)據(jù)存儲(chǔ)器距離中國(guó)首次提出泛在電力物聯(lián)網(wǎng)的概念剛過(guò)去一年,通過(guò)升級(jí)電網(wǎng)基礎(chǔ)設(shè)施,以大數(shù)據(jù)、云計(jì)算、5G、邊緣計(jì)算等技術(shù)實(shí)現(xiàn)傳統(tǒng)電網(wǎng)向能源互聯(lián)網(wǎng)升級(jí),將隨著承擔(dān)“拉動(dòng)經(jīng)濟(jì)”重任的“新基建”而加速,泛在電力物聯(lián)網(wǎng)在電力系統(tǒng)基礎(chǔ)建設(shè)中的...
關(guān)鍵字: fram 數(shù)據(jù)存儲(chǔ)器 新基建RAM是用來(lái)存放各種數(shù)據(jù)的,MCS-51系列8位單片機(jī)內(nèi)部有128 B RAM存儲(chǔ)器,CPU對(duì)內(nèi)部RAM具有豐富的操作指令。但是,當(dāng)單片機(jī)用于實(shí)時(shí)數(shù)據(jù)采集或處理大批量數(shù)據(jù)時(shí),僅靠片內(nèi)提供的RAM是遠(yuǎn)遠(yuǎn)不夠的。此時(shí),我們可...
關(guān)鍵字: mcs-51 RAM 數(shù)據(jù)存儲(chǔ)器實(shí)驗(yàn)結(jié)果表明該服裝壓力檢測(cè)系統(tǒng)能正確測(cè)試服裝舒適度壓力值,其使用方便、功能強(qiáng)大、性能優(yōu)良,是進(jìn)行服裝測(cè)試的理想平臺(tái),它解決了以往傳統(tǒng)服裝壓力測(cè)試中不能測(cè)量動(dòng)態(tài)服裝壓力的困難,且具有數(shù)據(jù)儲(chǔ)存功能。
關(guān)鍵字: avr單片機(jī) CPU 嵌入式處理器 數(shù)據(jù)存儲(chǔ)器 服裝壓力檢測(cè)單片機(jī)片外程序存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器操作命令與通常所說(shuō)的存儲(chǔ)器不同,和I2C總線的AT24C02不同,SPI協(xié)議的也不同,是指采用專用接口電路,應(yīng)用P0口P2口地址總線和控制線的三總線方式訪問(wèn)的。關(guān)于編程的時(shí)候,和訪問(wèn)內(nèi)部程序...
關(guān)鍵字: 單片機(jī) 存儲(chǔ)器 存儲(chǔ)技術(shù) 數(shù)據(jù)存儲(chǔ)器 片外程序Analog Devices, Inc. (ADI),ADI公司今天宣布推出四款通過(guò)汽車應(yīng)用認(rèn)證的定點(diǎn)數(shù)字信號(hào)處理器(DSP)。ADAU1466和DAU1467 SigmaDSP ® 處理器專為滿足對(duì)...
關(guān)鍵字: adi 數(shù)據(jù)存儲(chǔ)器 汽車音頻