0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CS创世SD NAND的存储芯片应用方案

深圳市雷龙发展有限公司 2023-11-15 18:09 次阅读

前言:

很感谢深圳雷龙发展有限公司为博主提供的两片SD NAND的存储芯片,在这里博主记录一下自己的使用过程以及部分设计。

深入了解该产品

拿到这个产品之后,我大致了解了下两款芯片的性能。CSNP4GCR01-AMW是一种基于NAND闪存和SD控制器的4Gb密度嵌入式存储;而CSNP32GCR01-AOW是一种基于NAND闪存和SD控制器的32Gb密度嵌入式存储。与原始NAND相比其具有嵌入式坏块管理和更强的嵌入式ECC。即使在异常断电,它仍然可以安全地保存数据。作为一个存储芯片,它确实做到了小巧,LGA-8的封装对比我之前用到过的TF卡,只占到了其面积的三分之一,这样对于一些嵌入式的设计就方便了很多。

image.php?url=YD_cnt_100_01S74cotZJkP

雷龙官方还很贴心的提供了样品的测试板,在这款测试板上,我焊接了4GB的CSNP4GCR01-AMW上去,并且跑了一下分,对于一款小的存储芯片而言,实在难得。

image.php?url=YD_cnt_100_01S74cwNmGXa

(上图为测试板焊接图)

博主日前在设计基于H616与NB-IOT的嵌入式智能储物柜的时候考虑过存储方面的问题,当时在SD NAND和EMMC与TF卡中徘徊,以下是几个存储类型的对比。

image.php?url=YD_cnt_100_01S74ct8xcnT

image.php?url=YD_cnt_100_01S74cuFWRNL

经过多方对比,本着不需要频繁更换的原则,同时也为了更好的防水和成本考虑,最终决定使用雷龙公司的SD NAND 作为设计样品的存储部分。

此外,SD NAND还具有不用写驱动程序自带坏块管理的NAND FLASH(贴片式TF卡),不标准的SDIO接口,也同时兼容SPI/SD接口,10万次的SLC晶圆擦写寿命,通过一万次的随机掉电测试耐高低温,经过跑分测得,速度级别Class10。标准的SD2.0协议,普通的SD卡可以直接驱动,支持TF卡启动的SOC都可以用SD NAND,而且雷龙官方还贴心的提供了STM32参考例程和原厂技术支持,这对于刚上手的小白而言,十分友好。

设计理念:

使用H616作为主控CPU并搭配NB-IOT来向申请下来的云端传输数据,当WIFI正常时,储物数据每搁两小时向云端传输一次,当有人取出物品时再次向云端发送一次数据(不保留在SD NAND中);一旦系统检测到WIFI出现问题,储物数据转而存储到SD NAND中,取物时输入的物品ID和取出时间一并放入SD NAND中(我也是看中了SD NAND与原始NAND相比其具有嵌入式坏块管理和更强的嵌入式ECC。即使在异常断电,它仍然可以安全地保存数据这一点)。

部分SD NAND的参考设计

根据官方数据手册提供的SD NAND参考设计,只占用8个GPIO,对于H616来说,确实很友好

image.php?url=YD_cnt_100_01S74csjjIkc

这里为了不泄露他人的劳动成果,我也就不粘PCB设计了。

image.php?url=YD_cnt_100_01S74cvEChCC

采用H616驱动SD NAND的示例代码

下面是关于H616驱动SD NAND的示例代码,这里记录一下自己当初的学习过程(注:这个代码不能直接拿过来就用,而是要根据自己的需求修改)

  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芯片状态
  20. #define STATUS_READY 0x40
  21. #define STATUS_ERROR 0x01
  22. // 初始化SDIO控制器
  23. void sdio_init()
  24. {
  25. // 设置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. // 发送NAND芯片命令
  37. void nand_send_cmd(uint8_t cmd)
  38. {
  39. // 设置SDIO控制器传输模式和命令码
  40. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
  41. h616_sdio_set_command_code(cmd);
  42. // 发送命令
  43. h616_sdio_send_command();
  44. }
  45. // 发送NAND芯片地址
  46. void nand_send_addr(uint32_t addr)
  47. {
  48. // 设置SDIO控制器传输模式和地址
  49. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
  50. h616_sdio_set_address(addr);
  51. // 发送地址
  52. h616_sdio_send_address();
  53. }
  54. // 读取NAND芯片数据
  55. void nand_read_data(uint8_t *data, uint32_t size)
  56. {
  57. // 设置SDIO控制器传输模式
  58. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_READ);
  59. // 读取数据
  60. h616_sdio_read_data(data, size);
  61. }
  62. // 写入NAND芯片数据
  63. void nand_write_data(const uint8_t *data, uint32_t size)
  64. {
  65. // 设置SDIO控制器传输模式
  66. h616_sdio_set_transfer_mode(H616_SDIO_TRANSFER_MODE_WRITE);
  67. // 写入数据
  68. h616_sdio_write_data(data, size);
  69. }
  70. // 读取NAND芯片状态
  71. uint8_t nand_read_status()
  72. {
  73. uint8_t status;
  74. // 发送读取状态命令
  75. nand_send_cmd(CMD_STATUS);
  76. // 读取状态
  77. nand_read_data(&status, 1);
  78. return status;
  79. }
  80. // 等待NAND芯片准备就绪
  81. void nand_wait_ready()
  82. {
  83. uint8_t status;
  84. // 循环读取状态,直到NAND芯片准备就绪
  85. do {
  86. status = nand_read_status();
  87. } while ((status & STATUS_READY) == 0);
  88. }
  89. // 读取NAND芯片数据
  90. void nand_read(uint32_t page, uint32_t column, uint8_t *data, uint32_t size)
  91. {
  92. // 发送读取命令和地址
  93. nand_send_cmd(CMD_READ);
  94. nand_send_addr(column | (page << 8));
  95. // 等待NAND芯片准备就绪
  96. nand_wait_ready();
  97. // 读取数据
  98. nand_read_data(data, size);
  99. }
  100. // 写入NAND芯片数据
  101. void nand_write(uint32_t page, uint32_t column, const uint8_t *data, uint32_t size)
  102. {
  103. // 发送写入命令和地址
  104. nand_send_cmd(CMD_WRITE);
  105. nand_send_addr(column | (page << 8));
  106. // 写入数据
  107. nand_write_data(data, size);
  108. // 等待NAND芯片准备就绪
  109. nand_wait_ready();
  110. }
  111. // 擦除NAND芯片块
  112. void nand_erase(uint32_t block)
  113. {
  114. // 发送擦除命令和地址
  115. nand_send_cmd(CMD_ERASE);
  116. nand_send_addr(block << 8);
  117. // 等待NAND芯片准备就绪
  118. nand_wait_ready();
  119. }
  120. // 复位NAND芯片
  121. void nand_reset()
  122. {
  123. // 发送复位命令
  124. nand_send_cmd(CMD_RESET);
  125. // 等待NAND芯片准备就绪
  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. // 复位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. }
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409128
  • 存储
    +关注

    关注

    12

    文章

    3856

    浏览量

    84661
  • 内存卡
    +关注

    关注

    0

    文章

    52

    浏览量

    14538
收藏 人收藏

    评论

    相关推荐

    Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

    兼容。   5. CS SD NAND : 小巧轻便的TF卡替代方案   前段时间使用了一款CSNP4GCR01-AMW存储芯片,它免驱动(
    发表于 04-03 12:05

    什么是存储芯片?有什么作用呢?

    存储芯片是一种用于存储数据的集成电路芯片,也被称为存储芯片
    的头像 发表于 02-29 09:09 953次阅读

    CS 创世SD NAND FLASH 存储芯片,比TF卡更小巧轻便易用的大容量存储,TF卡替代方案

    /6196382.html   下图是大小比对,可以看到 创世SD NAND的尺寸非常小,而且是一种可以表贴的存储芯片。 []()   SD
    发表于 01-24 18:30

    CS 创世SD NAND FLASH 存储芯片,比TF卡更小巧轻便易用的大容量存储,TF卡替代方案

    文章目录介绍创世SD卡引脚与NORFlash存储比较介绍SDNANDFLASH(SecureDigitalNANDFlash)是一种安全数字NAND闪存技术,通常用于
    的头像 发表于 01-24 18:29 407次阅读
    <b class='flag-5'>CS</b> <b class='flag-5'>创世</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>

    半导体芯片研究:中国存储芯片行业概览

    DRAM、NAND Flash、NOR Flash合计约占整体存储芯片市场的97%;自2022年初起,下游需求市场的萎缩以及宏观环境进一步恶化导致存储芯片市场不断承压,
    的头像 发表于 01-14 09:47 1432次阅读
    半导体<b class='flag-5'>芯片</b>研究:中国<b class='flag-5'>存储芯片</b>行业概览

    什么是SD NAND存储芯片? SD NAND与TF卡的区别

    什么是SD NAND?它俗称贴片式T卡,贴片式TF卡,贴片式SD卡,贴片式内存卡,贴片式闪存卡,贴片式卡...等等。虽然SD NAND 和T
    的头像 发表于 01-06 14:35 948次阅读
    什么是<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卡的区别

    什么是SD NAND存储芯片?

    前言   大家好,我们一般在STM32项目开发中或者在其他嵌入式开发中,经常会用到存储芯片存储数据。今天我和大家来介绍一款存储芯片,我这里采用(雷龙) CS
    发表于 01-05 17:54

    什么是SD NAND存储芯片?

    前言大家好,我们一般在STM32项目开发中或者在其他嵌入式开发中,经常会用到存储芯片存储数据。今天我和大家来介绍一款存储芯片,我这里采用(雷龙)CS
    的头像 发表于 01-05 17:53 724次阅读
    什么是<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b><b class='flag-5'>存储芯片</b>?

    微尺寸大储力:智能穿戴时代 SD NAND的崭新优势

    SD NAND是一种可以直接焊接在智能穿戴设备主板上的存储芯片,其小型化设计有助于紧凑设备尺寸,同时提供可靠的嵌入式存储解决方案。 这种集
    的头像 发表于 01-03 00:00 303次阅读
    微尺寸大储力:智能穿戴时代 <b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>的崭新优势

    【MCU】SD NAND芯片之国产新选择

    : 大家好,请问有没有SD芯片,可以直接焊接到PCB板上的。 项目需要保存900M以上字节,nand flash 比较贵。或者有什么便宜的存储芯片提供。谢谢! 传统做法无非如下几种:
    发表于 11-23 17:25

    CS创世SD NAND存储芯片应用方案

    前言:  很感谢深圳雷龙发展有限公司为博主提供的两片SD NAND存储芯片,在这里博主记录一下自己的使用过程以及部分设计。  深入了解该产品:  拿到这个产品之后,我大致了解了下两款芯片
    发表于 11-15 18:07

    CS SD NAND在STM32精英V2开发板的测试-是时候将TF卡换为SD NAND

    前言 嵌入式项目中,比较常见的存储扩展方案是使用TF/SD卡或者EMMC或者RAW NAND,各种方案都有其优缺点,而
    发表于 09-26 17:40

    SD NAND FLASH : 什么是pSLC?

    CS创世推出的2GB pSLC SD Nand,尺寸为6.2*8mm,使用标准SD2.0协议,可以无需修改软件直接替换
    发表于 08-11 10:48

    【贴片SD Card介绍】贴片式tf卡/SD NAND/SD2.0协议

    申请到雷龙发展代理的CS创世 贴片 SD Card (SD NAND) 样品,做出测试,分享一下。 型号:CSNP32GCR01-BOW;C
    发表于 07-28 16:23

    STM32+SD NAND(贴片SD卡)完成FATFS文件系统移植与测试

    这篇文章就手把手教大家,在STM32上完成FATFS文件系统的移植;主控芯片采用STM32F103ZET6, 存储芯片我这里采用(雷龙) CS创世
    的头像 发表于 07-17 17:24 4568次阅读
    STM32+<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>(贴片<b class='flag-5'>SD</b>卡)完成FATFS文件系统移植与测试