<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > AMetal平臺快速實(shí)現SPI Flash功能

AMetal平臺快速實(shí)現SPI Flash功能

作者: 時(shí)間:2019-07-19 來(lái)源:電子產(chǎn)品世界 收藏
編者按:SPI NOR Flash是一種片外擴展存儲器,可用來(lái)存儲圖片、字庫等大量數據,其種類(lèi)繁多,應用廣泛,用戶(hù)每次使用時(shí)都需耗費大量時(shí)間閱讀相關(guān)的手冊。如何快速實(shí)現類(lèi)似的相關(guān)功能呢?下文做詳細介紹。

由于 NOR Flash種類(lèi)繁多,我們每次使用 NOR Flash時(shí),都耗費許多時(shí)間在閱讀相關(guān)的手冊上。AMetal助你快速實(shí)現!即使不閱讀Flash芯片手冊,也能順利使用,可以把專(zhuān)注力投入到應用優(yōu)化和算法中,提升產(chǎn)品質(zhì)量。

本文引用地址:http://dyxdggzs.com/article/201907/402869.htm

提供了IS25xx、MX25xx等系列 NOR Flash的組件,提供初始化函數及豐富的功能接口。

本次介紹所使用的SPI NOR Flash為:IS25LP064A。IS25LP064A是ISSI的其中一款存儲芯片,采用SOIC封裝,50MHz正常讀取,DTR高達66MHz,超過(guò)100000次擦除,具有高靈活性和高性能。該器件可通過(guò)4線(xiàn)SPI接口訪(fǎng)問(wèn),支持SPI模式0和模式3。該芯片可編程頁(yè)大小為256Bytes,可選擇的擦除方式為:扇區擦除、塊擦除、整片擦除。

使用之前,必須先完成該芯片的初始化,初始化IS25xx的函數如圖1所示,完成初始化后為設備的驅動(dòng)函數提供實(shí)例化句柄。

1563498758364210.png

圖1  IS25xx初始化接口函數

1.am_is25xx_dev_t為IS25xx的設備實(shí)例,為整個(gè)外設驅動(dòng)提供必要的內存空間,用戶(hù)只需要使用設備結構體類(lèi)型定義一個(gè)變量即可;

2.am_is25xx_devinfo_t為IS25xx的設備信息,包括使用的SPI模式、SPI片選引腳、使用的SPI速率以及器件型號,用戶(hù)按實(shí)際使用進(jìn)行配置即可正常工作;

3.IS25初始化函數中am_spi_handle_t為主機MCU的SPI初始化,支持的MCU提供了標準化的SPI接口函數及初始化函數,實(shí)際使用時(shí),通常只需根據實(shí)際情況配置SPI使用的引腳,提供SPI標準服務(wù)句柄。

IS25實(shí)例初始化函數為:

1563498783561538.png

在硬件連接一致的情況下,可直接調用IS25xx實(shí)例初始化函數完成SPI Flash的初始化:

am_is25xx_handle_t is25xx_handle = am_microport_flash_is25xx_inst_init(void);

SPI Flash比較特殊,在寫(xiě)入數據之前必須確保相應的地址單元已經(jīng)被擦除,因此除了讀、寫(xiě)函數外,還有一個(gè)擦除函數。IS25功能接口函數如圖2所示。

1563498802428562.png

圖2  IS25xx功能接口函數

1.擦除

擦除就是將數據全部重置為0xFF,即所有存儲單元的位設置為1。擦除操作不能直接擦除某個(gè)單一地址單元,擦除的最小單元是扇區,IS25一個(gè)扇區大小為4KB,即每次只能擦除單個(gè)或多個(gè)扇區。擦除函數原型為:

int am_is25xx_erase(am_is25xx_handle_t handle, uint32_t addr, uint32_t len);

其中,handle為IS25xx的實(shí)例句柄,addr為待擦除區域的首地址,由于擦除的最小單元為扇區,因此該地址必須為某個(gè)扇區的起始地址,len為擦除長(cháng)度,必須為扇區大小的整數倍。返回AM_OK,說(shuō)明擦除成功;

2.寫(xiě)入數據

在寫(xiě)入數據前,必須確保寫(xiě)入地址已被擦除。即需要變?yōu)?的位清0,寫(xiě)入操作無(wú)法將0變?yōu)?。從指定的起始地址開(kāi)始寫(xiě)入一段數據的函數原型為:

int am_is25xx_write(am_is25xx_handle_t handle, uint32_t addr, uint8_t *p_buf, uint32_t len);

其中,addr為待寫(xiě)入區域的首地址,只要確保addr之后的區域已經(jīng)經(jīng)過(guò)擦除,則可以從該芯片中任一存儲地址開(kāi)始寫(xiě)入,len為寫(xiě)入數據長(cháng)度。返回AM_OK,說(shuō)明寫(xiě)入數據成功;

3.讀取數據

從指定的起始地址開(kāi)始讀取一段數據的函數原型為:

int am_is25xx_read(am_is25xx_handle_t handle, uint32_t addr, uint8_t *p_buf, uint32_t len);

其中,addr為待讀取區域的首地址,可以指定該芯片中任一存儲地址開(kāi)始讀取,len為讀取數據長(cháng)度。返回AM_OK,說(shuō)明讀取數據成功。

由于讀、寫(xiě)數據需要的緩存空間較大,最好從全局數據區域中分配緩存。如果直接從函數的運行棧中分配較大字節空間,則完全有可能導致棧溢出,進(jìn)而系統崩潰。

提供了較全面的功能接口函數,所有接口函數均脫離底層,不與具體硬件綁定,切換MCU可快速移植。AMetal助你快速實(shí)現SPI ,將專(zhuān)注力投入到核心應用部分,讓具有競爭力的產(chǎn)品更快走向市場(chǎng)!



關(guān)鍵詞: AMetal平臺 SPI Flash功能

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>