0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CS創(chuàng)世SD NAND的存儲芯片應(yīng)用方案

深圳市雷龍發(fā)展有限公司 ? 2023-11-15 18:09 ? 次閱讀

前言:

很感謝深圳雷龍發(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è)計就方便了很多。

image.php?url=YD_cnt_100_01S74cotZJkP

雷龍官方還很貼心的提供了樣品的測試板,在這款測試板上,我焊接了4GB的CSNP4GCR01-AMW上去,并且跑了一下分,對于一款小的存儲芯片而言,實在難得。

image.php?url=YD_cnt_100_01S74cwNmGXa

(上圖為測試板焊接圖)

博主日前在設(shè)計基于H616與NB-IOT的嵌入式智能儲物柜的時候考慮過存儲方面的問題,當(dāng)時在SD NAND和EMMC與TF卡中徘徊,以下是幾個存儲類型的對比。

image.php?url=YD_cnt_100_01S74ct8xcnT

image.php?url=YD_cnt_100_01S74cuFWRNL

經(jīng)過多方對比,本著不需要頻繁更換的原則,同時也為了更好的防水和成本考慮,最終決定使用雷龍公司的SD NAND 作為設(shè)計樣品的存儲部分。

此外,SD NAND還具有不用寫驅(qū)動程序自帶壞塊管理的NAND FLASH(貼片式TF卡),不標(biāo)準(zhǔn)的SDIO接口,也同時兼容SPI/SD接口,10萬次的SLC晶圓擦寫壽命,通過一萬次的隨機掉電測試耐高低溫,經(jīng)過跑分測得,速度級別Class10。標(biāo)準(zhǔn)的SD2.0協(xié)議,普通的SD卡可以直接驅(qū)動,支持TF卡啟動的SOC都可以用SD NAND,而且雷龍官方還貼心的提供了STM32參考例程和原廠技術(shù)支持,這對于剛上手的小白而言,十分友好。

設(shè)計理念:

使用H616作為主控CPU并搭配NB-IOT來向申請下來的云端傳輸數(shù)據(jù),當(dāng)WIFI正常時,儲物數(shù)據(jù)每擱兩小時向云端傳輸一次,當(dāng)有人取出物品時再次向云端發(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來說,確實很友好

image.php?url=YD_cnt_100_01S74csjjIkc

這里為了不泄露他人的勞動成果,我也就不粘PCB設(shè)計了。

image.php?url=YD_cnt_100_01S74cvEChCC

采用H616驅(qū)動SD NAND的示例代碼

下面是關(guān)于H616驅(qū)動SD NAND的示例代碼,這里記錄一下自己當(dāng)初的學(xué)習(xí)過程(注:這個代碼不能直接拿過來就用,而是要根據(jù)自己的需求修改)

  1. #include
  2. #include
  3. #include
  4. #include
  5. #include "h616_sdio.h"
  6. // 定義SDIO引腳
  7. #define SDIO_CMD_PIN 0
  8. #define SDIO_CLK_PIN 1
  9. #define SDIO_D0_PIN 2
  10. #define SDIO_D1_PIN 3
  11. #define SDIO_D2_PIN 4
  12. #define SDIO_D3_PIN 5
  13. // 定義NAND芯片命令
  14. #define CMD_READ 0x00
  15. #define CMD_WRITE 0x80
  16. #define CMD_ERASE 0x60
  17. #define CMD_STATUS 0x70
  18. #define CMD_RESET 0xff
  19. // 定義NAND芯片狀態(tài)
  20. #define STATUS_READY 0x40
  21. #define STATUS_ERROR 0x01
  22. // 初始化SDIO控制器
  23. void sdio_init()
  24. {
  25. // 設(shè)置SDIO引腳模式和速率
  26. h616_sdio_set_pin_mode(SDIO_CMD_PIN, H616_SDIO_PIN_MODE_SDIO);
  27. h616_sdio_set_pin_mode(SDIO_CLK_PIN, H616_SDIO_PIN_MODE_SDIO);
  28. h616_sdio_set_pin_mode(SDIO_D0_PIN, H616_SDIO_PIN_MODE_SDIO);
  29. h616_sdio_set_pin_mode(SDIO_D1_PIN, H616_SDIO_PIN_MODE_SDIO);
  30. h616_sdio_set_pin_mode(SDIO_D2_PIN, H616_SDIO_PIN_MODE_SDIO);
  31. h616_sdio_set_pin_mode(SDIO_D3_PIN, H616_SDIO_PIN_MODE_SDIO);
  32. h616_sdio_set_clock(H616_SDIO_CLOCK_FREQ_25MHZ);
  33. // 初始化SDIO控制器
  34. h616_sdio_init();
  35. }
  36. // 發(fā)送NAND芯片命令
  37. void nand_send_cmd(uint8_t cmd)
  38. {
  39. // 設(shè)置SDIO控制器傳輸模式和命令碼
  40. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
  41. h616_sdio_set_command_code(cmd);
  42. // 發(fā)送命令
  43. h616_sdio_send_command();
  44. }
  45. // 發(fā)送NAND芯片地址
  46. void nand_send_addr(uint32_t addr)
  47. {
  48. // 設(shè)置SDIO控制器傳輸模式和地址
  49. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
  50. h616_sdio_set_address(addr);
  51. // 發(fā)送地址
  52. h616_sdio_send_address();
  53. }
  54. // 讀取NAND芯片數(shù)據(jù)
  55. void nand_read_data(uint8_t *data, uint32_t size)
  56. {
  57. // 設(shè)置SDIO控制器傳輸模式
  58. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_READ);
  59. // 讀取數(shù)據(jù)
  60. h616_sdio_read_data(data, size);
  61. }
  62. // 寫入NAND芯片數(shù)據(jù)
  63. void nand_write_data(const uint8_t *data, uint32_t size)
  64. {
  65. // 設(shè)置SDIO控制器傳輸模式
  66. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
  67. // 寫入數(shù)據(jù)
  68. h616_sdio_write_data(data, size);
  69. }
  70. // 讀取NAND芯片狀態(tài)
  71. uint8_t nand_read_status()
  72. {
  73. uint8_t status;
  74. // 發(fā)送讀取狀態(tài)命令
  75. nand_send_cmd(CMD_STATUS);
  76. // 讀取狀態(tài)
  77. nand_read_data(&status, 1);
  78. return status;
  79. }
  80. // 等待NAND芯片準(zhǔn)備就緒
  81. void nand_wait_ready()
  82. {
  83. uint8_t status;
  84. // 循環(huán)讀取狀態(tài),直到NAND芯片準(zhǔn)備就緒
  85. do {
  86. status = nand_read_status();
  87. } while ((status & STATUS_READY) == 0);
  88. }
  89. // 讀取NAND芯片數(shù)據(jù)
  90. void nand_read(uint32_t page, uint32_t column, uint8_t *data, uint32_t size)
  91. {
  92. // 發(fā)送讀取命令和地址
  93. nand_send_cmd(CMD_READ);
  94. nand_send_addr(column | (page << 8));
  95. // 等待NAND芯片準(zhǔn)備就緒
  96. nand_wait_ready();
  97. // 讀取數(shù)據(jù)
  98. nand_read_data(data, size);
  99. }
  100. // 寫入NAND芯片數(shù)據(jù)
  101. void nand_write(uint32_t page, uint32_t column, const uint8_t *data, uint32_t size)
  102. {
  103. // 發(fā)送寫入命令和地址
  104. nand_send_cmd(CMD_WRITE);
  105. nand_send_addr(column | (page << 8));
  106. // 寫入數(shù)據(jù)
  107. nand_write_data(data, size);
  108. // 等待NAND芯片準(zhǔn)備就緒
  109. nand_wait_ready();
  110. }
  111. // 擦除NAND芯片塊
  112. void nand_erase(uint32_t block)
  113. {
  114. // 發(fā)送擦除命令和地址
  115. nand_send_cmd(CMD_ERASE);
  116. nand_send_addr(block << 8);
  117. // 等待NAND芯片準(zhǔn)備就緒
  118. nand_wait_ready();
  119. }
  120. // 復(fù)位NAND芯片
  121. void nand_reset()
  122. {
  123. // 發(fā)送復(fù)位命令
  124. nand_send_cmd(CMD_RESET);
  125. // 等待NAND芯片準(zhǔn)備就緒
  126. nand_wait_ready();
  127. }
  128. // 示例程序入口
  129. int main()
  130. {
  131. uint8_t data[2048];
  132. memset(data, 0x5a, sizeof(data));
  133. // 初始化SDIO控制器
  134. sdio_init();
  135. // 復(fù)位NAND芯片
  136. nand_reset();
  137. // 擦除第0塊
  138. nand_erase(0);
  139. // 寫入第0頁
  140. nand_write(0, 0, data, sizeof(data));
  141. // 讀取第0頁
  142. nand_read(0, 0, data, sizeof(data));
  143. return 0;
  144. }
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50206

    瀏覽量

    420826
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4226

    瀏覽量

    85574
  • 內(nèi)存卡
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

    14713
收藏 人收藏

    評論

    相關(guān)推薦

    國產(chǎn)安路FPGA SD NAND FLASH 初步描述

    等優(yōu)點。這一節(jié)我們主要是介紹一下SD NAND FLASH,該應(yīng)用實例的SD NAND FLASH采用深圳市雷龍發(fā)展有限公司的CSNP1GCR01-AOW型號的
    發(fā)表于 10-16 18:12

    ESP32應(yīng)用教程—SD NAND如何記錄飛控LOG#SDNAND #硬件 #存儲芯片

    存儲芯片
    深圳市雷龍發(fā)展有限公司
    發(fā)布于 :2024年10月09日 16:51:51

    SD NAND在智能眼鏡上的怎么應(yīng)用

    隨著智能時代的到來,智能眼鏡的產(chǎn)品不斷的更新迭代,越來越接近我們大眾的生活,翻譯、音頻、視頻、導(dǎo)航等功能也日益完善。同時也越來越考驗存儲芯片的容量和存儲芯片的大小。 SD NAND是一
    的頭像 發(fā)表于 09-14 09:55 ?273次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>在智能眼鏡上的怎么應(yīng)用

    CS創(chuàng)世8GB SD NAND的創(chuàng)新與可靠性

    ? ? ? ?CS創(chuàng)世半導(dǎo)體的8GB SD NAND芯片在創(chuàng)新和可靠性方面展現(xiàn)了其卓越的性能。這款芯片
    的頭像 發(fā)表于 09-06 16:57 ?242次閱讀

    SD NAND測試套件:提升存儲芯片驗證效率

    SD NAND轉(zhuǎn)接板和燒錄座是一種專為工程師設(shè)計的輔助工具,它能夠?qū)⒉煌叽绲?b class='flag-5'>SD NAND芯片轉(zhuǎn)換為通用TF接口封裝,從而方便地進(jìn)行性能測
    的頭像 發(fā)表于 08-13 09:44 ?280次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>測試套件:提升<b class='flag-5'>存儲芯片</b>驗證效率

    CS創(chuàng)世 SD NANDSD NAND芯片的測評與使用(基于卷積神經(jīng)網(wǎng)絡(luò)的數(shù)字識別)

    時常會影響系統(tǒng)的穩(wěn)定性,因此一個可以反復(fù)擦拭的穩(wěn)定存儲芯片顯得十分重要。 通過將測試板和芯片進(jìn)行簡單的焊接,我們可以像使用SD卡一樣對SD NAND
    發(fā)表于 07-24 18:24

    Flash閃存簡介及“SD NAND Flash”產(chǎn)品測試#存儲芯片 #sd卡? #NAND #TF卡

    存儲芯片
    深圳市雷龍發(fā)展有限公司
    發(fā)布于 :2024年06月26日 18:11:03

    SD NAND 簡介

    SD NAND是一種創(chuàng)新的存儲芯片,可直接貼片,又名貼片式TF卡、貼片式T卡、貼片式SD卡、貼片式內(nèi)存卡、SD Flash、
    的頭像 發(fā)表于 05-29 16:34 ?1080次閱讀
    <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b> 簡介

    Flash存儲芯片:NOR Flash、NAND Flash、UFS和eMMC的比較與解析

    兼容。   5. CS SD NAND : 小巧輕便的TF卡替代方案   前段時間使用了一款CSNP4GCR01-AMW存儲芯片,它免驅(qū)動(
    發(fā)表于 04-03 12:05

    CS 創(chuàng)世SD NAND FLASH 存儲芯片,比TF卡更小巧輕便易用的大容量存儲,TF卡替代方案

    /6196382.html   下圖是大小比對,可以看到 創(chuàng)世SD NAND的尺寸非常小,而且是一種可以表貼的存儲芯片。 []()   SD
    發(fā)表于 01-24 18:30

    CS 創(chuàng)世SD NAND FLASH 存儲芯片,比TF卡更小巧輕便易用的大容量存儲,TF卡替代方案

    文章目錄介紹創(chuàng)世SD卡引腳與NORFlash存儲比較介紹SDNANDFLASH(SecureDigitalNANDFlash)是一種安全數(shù)字NAND閃存技術(shù),通常用于
    的頭像 發(fā)表于 01-24 18:29 ?726次閱讀
    <b class='flag-5'>CS</b> <b class='flag-5'>創(chuàng)世</b><b class='flag-5'>SD</b> <b class='flag-5'>NAND</b> FLASH <b class='flag-5'>存儲芯片</b>,比TF卡更小巧輕便易用的大容量<b class='flag-5'>存儲</b>,TF卡替代<b class='flag-5'>方案</b>

    什么是SD NAND存儲芯片? SD NAND與TF卡的區(qū)別

    什么是SD NAND?它俗稱貼片式T卡,貼片式TF卡,貼片式SD卡,貼片式內(nèi)存卡,貼片式閃存卡,貼片式卡...等等。雖然SD NAND 和T
    的頭像 發(fā)表于 01-06 14:35 ?1622次閱讀
    什么是<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲芯片</b>? <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>與TF卡的區(qū)別

    什么是SD NAND存儲芯片?

    前言   大家好,我們一般在STM32項目開發(fā)中或者在其他嵌入式開發(fā)中,經(jīng)常會用到存儲芯片存儲數(shù)據(jù)。今天我和大家來介紹一款存儲芯片,我這里采用(雷龍) CS
    發(fā)表于 01-05 17:54

    什么是SD NAND存儲芯片?

    前言大家好,我們一般在STM32項目開發(fā)中或者在其他嵌入式開發(fā)中,經(jīng)常會用到存儲芯片存儲數(shù)據(jù)。今天我和大家來介紹一款存儲芯片,我這里采用(雷龍)CS
    的頭像 發(fā)表于 01-05 17:53 ?1198次閱讀
    什么是<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存儲芯片</b>?

    CS創(chuàng)世SD NAND存儲芯片應(yīng)用方案

    前言:  很感謝深圳雷龍發(fā)展有限公司為博主提供的兩片SD NAND存儲芯片,在這里博主記錄一下自己的使用過程以及部分設(shè)計。  深入了解該產(chǎn)品:  拿到這個產(chǎn)品之后,我大致了解了下兩款芯片
    發(fā)表于 11-15 18:07