前言:
很感謝深圳雷龍發(fā)展有限公司為博主提供的兩片SD NAND的存儲芯片,在這里博主記錄一下自己的使用過程以及部分設(shè)計。
深入了解該產(chǎn)品:
拿到這個產(chǎn)品之后,我大致了解了下兩款芯片的性能。CSNP4GCR01-AMW是一種基于NAND閃存和SD控制器的4Gb密度嵌入式存儲;而CSNP32GCR01-AOW是一種基于NAND閃存和SD控制器的32Gb密度嵌入式存儲。與原始NAND相比其具有嵌入式壞塊管理和更強的嵌入式ECC。即使在異常斷電,它仍然可以安全地保存數(shù)據(jù)。作為一個存儲芯片,它確實做到了小巧,LGA-8的封裝對比我之前用到過的TF卡,只占到了其面積的三分之一,這樣對于一些嵌入式的設(shè)計就方便了很多。
雷龍官方還很貼心的提供了樣品的測試板,在這款測試板上,我焊接了4GB的CSNP4GCR01-AMW上去,并且跑了一下分,對于一款小的存儲芯片而言,實在難得。
(上圖為測試板焊接圖)
博主日前在設(shè)計基于H616與NB-IOT的嵌入式智能儲物柜的時候考慮過存儲方面的問題,當時在SD NAND和EMMC與TF卡中徘徊,以下是幾個存儲類型的對比。
經(jīng)過多方對比,本著不需要頻繁更換的原則,同時也為了更好的防水和成本考慮,最終決定使用雷龍公司的SD NAND 作為設(shè)計樣品的存儲部分。
此外,SD NAND還具有不用寫驅(qū)動程序自帶壞塊管理的NAND FLASH(貼片式TF卡),不標準的SDIO接口,也同時兼容SPI/SD接口,10萬次的SLC晶圓擦寫壽命,通過一萬次的隨機掉電測試耐高低溫,經(jīng)過跑分測得,速度級別Class10。標準的SD2.0協(xié)議,普通的SD卡可以直接驅(qū)動,支持TF卡啟動的SOC都可以用SD NAND,而且雷龍官方還貼心的提供了STM32參考例程和原廠技術(shù)支持,這對于剛上手的小白而言,十分友好。
設(shè)計理念:
使用H616作為主控CPU并搭配NB-IOT來向申請下來的云端傳輸數(shù)據(jù),當WIFI正常時,儲物數(shù)據(jù)每擱兩小時向云端傳輸一次,當有人取出物品時再次向云端發(fā)送一次數(shù)據(jù)(不保留在SD NAND中);一旦系統(tǒng)檢測到WIFI出現(xiàn)問題,儲物數(shù)據(jù)轉(zhuǎn)而存儲到SD NAND中,取物時輸入的物品ID和取出時間一并放入SD NAND中(我也是看中了SD NAND與原始NAND相比其具有嵌入式壞塊管理和更強的嵌入式ECC。即使在異常斷電,它仍然可以安全地保存數(shù)據(jù)這一點)。
部分SD NAND的參考設(shè)計
根據(jù)官方數(shù)據(jù)手冊提供的SD NAND參考設(shè)計,只占用8個GPIO,對于H616來說,確實很友好
這里為了不泄露他人的勞動成果,我也就不粘PCB設(shè)計了。
采用H616驅(qū)動SD NAND的示例代碼
下面是關(guān)于H616驅(qū)動SD NAND的示例代碼,這里記錄一下自己當初的學(xué)習過程(注:這個代碼不能直接拿過來就用,而是要根據(jù)自己的需求修改)
- #include
- #include
- #include
- #include
- #include "h616_sdio.h"
- // 定義SDIO引腳
- #define SDIO_CMD_PIN 0
- #define SDIO_CLK_PIN 1
- #define SDIO_D0_PIN 2
- #define SDIO_D1_PIN 3
- #define SDIO_D2_PIN 4
- #define SDIO_D3_PIN 5
- // 定義NAND芯片命令
- #define CMD_READ 0x00
- #define CMD_WRITE 0x80
- #define CMD_ERASE 0x60
- #define CMD_STATUS 0x70
- #define CMD_RESET 0xff
- // 定義NAND芯片狀態(tài)
- #define STATUS_READY 0x40
- #define STATUS_ERROR 0x01
- // 初始化SDIO控制器
- void sdio_init()
- {
- // 設(shè)置SDIO引腳模式和速率
- h616_sdio_set_pin_mode(SDIO_CMD_PIN, H616_SDIO_PIN_MODE_SDIO);
- h616_sdio_set_pin_mode(SDIO_CLK_PIN, H616_SDIO_PIN_MODE_SDIO);
- h616_sdio_set_pin_mode(SDIO_D0_PIN, H616_SDIO_PIN_MODE_SDIO);
- h616_sdio_set_pin_mode(SDIO_D1_PIN, H616_SDIO_PIN_MODE_SDIO);
- h616_sdio_set_pin_mode(SDIO_D2_PIN, H616_SDIO_PIN_MODE_SDIO);
- h616_sdio_set_pin_mode(SDIO_D3_PIN, H616_SDIO_PIN_MODE_SDIO);
- h616_sdio_set_clock(H616_SDIO_CLOCK_FREQ_25MHZ);
- // 初始化SDIO控制器
- h616_sdio_init();
- }
- // 發(fā)送NAND芯片命令
- void nand_send_cmd(uint8_t cmd)
- {
- // 設(shè)置SDIO控制器傳輸模式和命令碼
- h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
- h616_sdio_set_command_code(cmd);
- // 發(fā)送命令
- h616_sdio_send_command();
- }
- // 發(fā)送NAND芯片地址
- void nand_send_addr(uint32_t addr)
- {
- // 設(shè)置SDIO控制器傳輸模式和地址
- h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
- h616_sdio_set_address(addr);
- // 發(fā)送地址
- h616_sdio_send_address();
- }
- // 讀取NAND芯片數(shù)據(jù)
- void nand_read_data(uint8_t *data, uint32_t size)
- {
- // 設(shè)置SDIO控制器傳輸模式
- h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_READ);
- // 讀取數(shù)據(jù)
- h616_sdio_read_data(data, size);
- }
- // 寫入NAND芯片數(shù)據(jù)
- void nand_write_data(const uint8_t *data, uint32_t size)
- {
- // 設(shè)置SDIO控制器傳輸模式
- h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
- // 寫入數(shù)據(jù)
- h616_sdio_write_data(data, size);
- }
- // 讀取NAND芯片狀態(tài)
- uint8_t nand_read_status()
- {
- uint8_t status;
- // 發(fā)送讀取狀態(tài)命令
- nand_send_cmd(CMD_STATUS);
- // 讀取狀態(tài)
- nand_read_data(&status, 1);
- return status;
- }
- // 等待NAND芯片準備就緒
- void nand_wait_ready()
- {
- uint8_t status;
- // 循環(huán)讀取狀態(tài),直到NAND芯片準備就緒
- do {
- status = nand_read_status();
- } while ((status & STATUS_READY) == 0);
- }
- // 讀取NAND芯片數(shù)據(jù)
- void nand_read(uint32_t page, uint32_t column, uint8_t *data, uint32_t size)
- {
- // 發(fā)送讀取命令和地址
- nand_send_cmd(CMD_READ);
- nand_send_addr(column | (page << 8));
- // 等待NAND芯片準備就緒
- nand_wait_ready();
- // 讀取數(shù)據(jù)
- nand_read_data(data, size);
- }
- // 寫入NAND芯片數(shù)據(jù)
- void nand_write(uint32_t page, uint32_t column, const uint8_t *data, uint32_t size)
- {
- // 發(fā)送寫入命令和地址
- nand_send_cmd(CMD_WRITE);
- nand_send_addr(column | (page << 8));
- // 寫入數(shù)據(jù)
- nand_write_data(data, size);
- // 等待NAND芯片準備就緒
- nand_wait_ready();
- }
- // 擦除NAND芯片塊
- void nand_erase(uint32_t block)
- {
- // 發(fā)送擦除命令和地址
- nand_send_cmd(CMD_ERASE);
- nand_send_addr(block << 8);
- // 等待NAND芯片準備就緒
- nand_wait_ready();
- }
- // 復(fù)位NAND芯片
- void nand_reset()
- {
- // 發(fā)送復(fù)位命令
- nand_send_cmd(CMD_RESET);
- // 等待NAND芯片準備就緒
- nand_wait_ready();
- }
- // 示例程序入口
- int main()
- {
- uint8_t data[2048];
- memset(data, 0x5a, sizeof(data));
- // 初始化SDIO控制器
- sdio_init();
- // 復(fù)位NAND芯片
- nand_reset();
- // 擦除第0塊
- nand_erase(0);
- // 寫入第0頁
- nand_write(0, 0, data, sizeof(data));
- // 讀取第0頁
- nand_read(0, 0, data, sizeof(data));
- return 0;
- }
-
芯片
+關(guān)注
關(guān)注
456文章
51243瀏覽量
427509 -
存儲
+關(guān)注
關(guān)注
13文章
4358瀏覽量
86195 -
內(nèi)存卡
+關(guān)注
關(guān)注
0文章
62瀏覽量
14835
發(fā)布評論請先 登錄
相關(guān)推薦
SD NAND、SPI NAND 和 Raw NAND 的定義與比較
![<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>、SPI <b class='flag-5'>NAND</b> 和 Raw <b class='flag-5'>NAND</b> 的定義與比較](https://file1.elecfans.com//web3/M00/06/1B/wKgZPGeHiw-AahzaAAEPf29VKgY84.jpeg)
SD NAND、SPI NAND 和 Raw NAND 的定義與比較
【半導(dǎo)體存儲】關(guān)于NAND Flash的一些小知識
關(guān)于NAND Flash的一些小知識
關(guān)于SD NAND 的概述
![](https://file1.elecfans.com/web2/M00/0C/CF/wKgaomc8Nf-Af94AAAas6i09Inc750.png)
如何格式化貼片式SD卡/貼片式TF卡(SD NAND)#電路知識 #pcb設(shè)計 #芯片 #存儲芯片 #嵌入式
一文帶你了解什么是SD NAND存儲芯片
國產(chǎn)安路FPGA SD NAND FLASH 初步描述
![](https://file1.elecfans.com/web1/M00/F2/97/wKgZoWcGQtqACeAWAAX22GpRjto026.png)
ESP32應(yīng)用教程—SD NAND如何記錄飛控LOG#SDNAND #硬件 #存儲芯片
SD NAND在智能眼鏡上的怎么應(yīng)用
![<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>在智能眼鏡上的怎么應(yīng)用](https://file1.elecfans.com/web2/M00/07/4F/wKgaombk7KuAdSmmAAEEhe3ZLMw859.png)
SD NAND測試套件:提升存儲芯片驗證效率
![<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>測試套件:提升<b class='flag-5'>存儲芯片</b>驗證效率](https://file1.elecfans.com/web2/M00/03/2B/wKgaoma6um2APb0vAAAoOMv1UfQ947.png)
【CS創(chuàng)世 SD NAND】SD NAND芯片的測評與使用(基于卷積神經(jīng)網(wǎng)絡(luò)的數(shù)字識別)
![](https://file1.elecfans.com/web2/M00/F3/1E/wKgZomZ742eAfVbZAAWU76I2M-0938.png)
評論