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

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

3天内不再提示

基于CS的SD_NAND FLASH驱动

嵌入式技术 ? 来源:嵌入式技术 ? 作者:嵌入式技术 ? 2025-02-20 17:44 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.CS创世简介

创世半导体成立于2016年,在香港,韩国,中国设有办公室。创世成立是预见到5G人工智能物联网等行业的崛起。用户对芯片的需求会有新一个世代的要求。

创世半导体利用韩国,台湾地区的芯片设计能力和供应资源,在中国实现封装和测试,并提供本地化的服务与支持。目前专注于SD NAND存储产品的研发和生产。

2016年,创世推出了第一代SD NAND,给客户提供兼容性强,一致性高,焊接稳定可靠的产品。大大降低了客户使用其他存储产品带来的不良率,也帮助客户缩短了调试小容量存储芯片驱动的研发时间,加快客户项目的迭代速度。

2018年,为满足更轨道交通,航空航天,工业控制仪器仪表等行业类客户需求,创世半导体首家推出了第二代SD NAND产品。能够实现更快的读写速度,更宽泛的使用环境。能够承受高低温冷热冲击,随机掉电等苛刻的操作环境。同时能给客户提供个性化的固件定制服务。

2020年,随着智能穿戴设备的兴起和物联网的不断发展,用户对存储容量的需求也不断增长。创世半导体推出了4GB SD NAND产品,能够实现同等容量下,最小的尺寸封装和最少的pin脚。帮助用户推出更小巧,稳定的产品。

创世的产品已经广泛应用于医疗设备,工业控制,轨道交通,安防,网络设备,IPC,执法记录仪,可视对讲,门禁考勤,平板电脑汽车电子,电力设备,工业仪器设备,POS机,教育电子等行业。成功合作客户包括中国中车,中国航天,中国船舶集团,清华大学,糖猫,360等企业。合作CPU平台包括:ST, NXP,TI, Microchip, Nordic, ESPRESSIF, MTK,Qualcomm等。

2.SD NAND FLASH简介

SD NAND FLASH,即安全数字NAND闪存技术,是一种结合了NAND闪存的高密度存储能力和安全性能的存储解决方案。是一种非易失性存储器技术,意味着它在断电后仍能保存数据。它通过电荷的存储与释放来实现数据的存储,基本单元结构是一个浮栅晶体管。将NAND Flash集成到SD卡中,提供了一个集成的存储解决方案。它通常具有额外的安全特性,如加密和访问控制,以保护存储的数据免受未经授权的访问或篡改。

SD NAND FLASH的工作原理与NAND Flash相似,涉及一系列的编程(写入)、擦除和读取操作。写入过程:通过施加高电压,电子被注入浮栅,改变浮栅上的电荷,进而影响晶体管的导通状态,从而表示不同的存储信息(通常是“0”或“1”)。采用块擦除的方式。通过施加反向电压,浮栅上的电子被移除,恢复晶体管的原始状态。擦除通常是对整个块进行操作,而不是单个字节。通过检测浮栅上的电荷状态,可以确定存储单元的导通状态,从而读取出存储的信息。

SD NAND FLASH具有更高的存储密度,使其适用于需要大容量存储的应用。提供了硬件和软件层面的安全性保护,包括加密和访问控制,以确保存储的数据不容易被盗取或篡改。常用于数码相机、手机、平板电脑等需要可移动存储和数据保护的设备。

随着技术的不断发展,SD NAND FLASH在持续改进和创新。它将继续提高性能和存储密度,以满足高容量、高性能的需求。同时,随着物联网、人工智能等技术的兴起,SD NAND FLASH将在更多领域发挥重要作用,如安全摄像头、工业控制系统等。

SD NAND FLASH是一种结合了高密度存储能力和安全性能的存储解决方案。它具有便携性、高密度、安全性等优势,并广泛应用于各种需要可移动存储和数据保护的设备中。随着技术的不断进步和应用领域的拓展,SD NAND FLASH的市场前景将更加广阔。

创世SD NAND FLASH二代采用SDIO驱动接口,兼容SPI模式。有多种存储容量,外围接口电路简单,工作电压为3.3V,适用于各种嵌入式平台,如STM32系列单片机

wKgZPGe293GAR_qKAAeuMDJRGCo511.pngwKgZO2e293qAQB9FAAJNFf1tjxU479.png

3.SD NAND FLASH PC端测试

??将创世的SD NAND存储芯片焊接到官方提供的测试底板,然后使用读卡器插入电脑端,硬件实物如图所示:

wKgZPGe294-AfueZABk2Fd_9zyk121.png

??磁盘可用大小为3.6GB。

wKgZO2e296yAEl4lAAKbwgJoC20784.png

??通过使用磁盘检测工具对整个空间进行写入测试,平均写入速度可达17.6MB/S。

wKgZPGe297iAGySXAATXE7hzmOY393.png

??在实际拷贝文件测试中,可以看到平台写入速度为7MB/S。

wKgZO2e29-CAM3uOAALsGew8z6A427.png

4.STM32 SDIO驱动SD NAND示例

SDIO(Secure Digital Input Output),即安全数字输入输出接口,是一种基于SD(Secure Digital)卡技术的扩展接口标准。SDIO最早由SD协会(SD Association,SDA)于2001年发布,作为SD卡标准的一种扩展。它允许外部设备通过标准的SD卡槽连接并通信,不仅支持传统的存储功能,还允许设备通过SD卡接口进行输入输出操作。

SDIO协议支持高达50MHz的数据传输速率(某些模式下甚至更高,如UHS-I模式可达到104MB/s或更高),可以实现快速的数据读写操作。

多设备连接:SDIO接口可以同时连接多个设备,通过多个数据线同时进行数据传输,提高通信效率。支持热插拔功能,允许用户在不关闭系统的情况下插入或移除外设,增强了系统的灵活性和易用性。同时,SDIO设备通常被划分为多个功能单元(Function),每个功能单元可以看作是一个独立的外设,具有自己的寄存器和配置选项。

SDIO接口继承了SD卡的紧凑尺寸和低功耗特性,同时提供了更高的数据传输速率和更多的功能选项。然而,由于SDIO协议的不同版本和设备之间的差异,可能存在兼容性问题。开发人员需要针对不同的设备进行适配和测试。

4.1 STM32F10x上的SDIO接口

STM32 SDIO总线上的通信是通过传送命令和数据实现。在多媒体卡/SD/SD I/O总线上的基本操作是命令/响应结构,这样的总线操作在命令或总线机制下实现信息交换;另外,某些操作还具有数据令牌。

在SD/SDIO存储器卡上传送的数据是以数据块的形式传输;在MMC上传送的数据是以数据块或数据流的形式传输;在CE-ATA设备上传送的数据也是以数据块的形式传输。

wKgZPGe2-CiAUvhnAAJ6ofpJu2o468.png

4.2 硬件接口

wKgZPGe2-EmAZJSTAAgaSwBcNRQ000.pngwKgZO2e2-FiACUpeAAJNQsSmg5Q820.png

4.3 软件设置

??1.芯片选择

wKgZO2e2-HCAM-pIAAXHXQWRyT0829.png

??2.时钟配置

wKgZPGe2-IGACUa6AAFb7i8l1SA393.pngwKgZPGe2-I-AXE1cAAUF4XxKBI4452.png

??3.SDIO配置

wKgZO2e2-KOAMjp0AAPsqBo0074954.png

4.4 代码生成

wKgZPGe2-MCAWU9RAAKdOA_5EXU059.png

void MX_SDIO_SD_Init(void)
{

  /* USER CODE BEGIN SDIO_Init 0 */

  /* USER CODE END SDIO_Init 0 */

  /* USER CODE BEGIN SDIO_Init 1 */

  /* USER CODE END SDIO_Init 1 */
  hsd.Instance = SDIO;
  hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;//在主时钟SDIOCLK的上升沿产生SDIO_CK
  hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;//盘路时钟失能
  hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;//始终输出SDIO_CK
  hsd.Init.BusWide = SDIO_BUS_WIDE_1B;//总线宽度
  hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;//关闭硬件流控制
  //当SD/SDIO卡或多媒体卡在识别模式, SDIO_CK的频率必须低于400kHz。
  hsd.Init.ClockDiv = 6;//时钟分频系数,SDIO_CK=HCLK/(ClockDiv+2)
  if (HAL_SD_Init(&hsd) != HAL_OK)//SD初始化
  {
    Error_Handler();
  }
  if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK)//配置总线宽度
  {
    Error_Handler();
  }
  /* USER CODE BEGIN SDIO_Init 2 */
  hsd.Init.ClockDiv=0;//重新设置时钟速度
  /* USER CODE END SDIO_Init 2 */

}

??2.SD读写扇区函数
??为了方便后续FATFS文件系统移植,我们这里封装两个函数SD卡写扇区和读扇区。

void SD_WriteDisk(uint8_t *buf,uint32_t sector_add,uint32_t cnt)
{
	HAL_SD_WriteBlocks(&hsd,buf,sector_add,cnt,5000);//SD卡写块
	while(HAL_SD_GetCardState(&hsd)!=HAL_SD_CARD_TRANSFER);//等待数据传输完成

}
void SD_ReadDisk(uint8_t *buf,uint32_t sector_add,uint32_t cnt)
{
	HAL_SD_ReadBlocks(&hsd,buf,sector_add,cnt,5000);//SD卡读块
	while(HAL_SD_GetCardState(&hsd)!=HAL_SD_CARD_TRANSFER);//等待数据传输完成
}

??3.主函数
??初始化HAL库、GPIO端口、LCD屏(FSMC驱动)、SD卡初始化;获取卡类型、卡容量,最后调用SD卡读写扇区函数实现数据读写测试。

uint8_t buf_tx[4096]="SD卡SDIO驱动HAL库配置测试数据STM32F103ZET6  -- Ver1.0";
uint8_t buf_rx[4096];  
MX_GPIO_Init();
  MX_FSMC_Init();
  MX_SDIO_SD_Init();
  MX_USART1_UART_Init();
  MX_SPI2_Init();
  /* USER CODE BEGIN 2 */
	char buff[200];
	NT35310_Init();//LCD初始化
	LCD_Display_Str(LCD_WIDTH/2-strlen("SD卡初始化")/2*8,20,16,(u8 *)"SD卡初始化",BLACK);
	if(hsd.State!=HAL_SD_STATE_READY)
	{
		LCD_Display_Str(20,40,16,(u8 *)"SD Init  ERR",RED);
	}
	else
	{
		LCD_Display_Str(20,40,16,(u8 *)"SD Init  OK",RED);
		LCD_Display_Str(20,60,16,(u8 *)"卡类型:",RED);
		if(hsd.SdCard.CardType==CARD_SDHC_SDXC)//2.0告诉卡
		{
			LCD_Display_Str(20+8+strlen("卡类型:")*8,60,16,(u8 *)"SDHC",RED);
		}
		else if(hsd.SdCard.CardType==CARD_SDSC)//2.0普通卡
		{
			LCD_Display_Str(20+8+strlen("卡类型:")*8,60,16,(u8 *)"SDSC",RED);
		}
		snprintf(buff,sizeof(buff),"块大小: %d byten",hsd.SdCard.BlockSize);
		LCD_Display_Str(20,80,16,(u8 *)buff,RED);
		snprintf(buff,sizeof(buff),"卡容量大小: %.2f GBn",(hsd.SdCard.BlockNbr>>11)/1024.0);
		LCD_Display_Str(20,100,16,(u8 *)buff,RED);
	}
	LCD_Display_Str(LCD_WIDTH/2-strlen("SD数据读写测试")/2*8,130,16,(u8 *)"SD数据读写测试",BLACK);
	SD_WriteDisk(buf_tx,100,2);
	LCD_Display_Str(20,150,16,(u8 *)"SD写数据: OK",RED);
	SD_ReadDisk(buf_rx,100,3);
	LCD_Display_Str(20,170,16,(u8 *)"SD读数据: OK",RED);
	LCD_Display_Str(20,190,16,(u8 *)"数据内容:",RED);
	LCD_Display_Str(20,210,16,(u8 *)buf_rx,BLUE);

4.5 运行效果

??将SD NAND FLASH插入到STM32 SD卡座上,使用SDIO方式驱动,读取卡容量信息并进行数据读写测试。

wKgZPGe2-RSAOgpsAEjexNJKrBE854.png


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1679

    浏览量

    152005
  • ST
    ST
    +关注

    关注

    32

    文章

    1181

    浏览量

    130559
  • SD NAND
    +关注

    关注

    0

    文章

    93

    浏览量

    1508
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NAND FlashSD NAND的存储扇区架构差异

    NAND Flash?和?SD卡(SD NAND)的存储扇区分配表都是用于管理存储设备中扇区的分配信息。它们记录了哪些扇区已被使用、哪些是空
    的头像 发表于 03-13 15:20 ?1160次阅读
    <b class='flag-5'>NAND</b> <b class='flag-5'>Flash</b>与<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>的存储扇区架构差异

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

    的问题。CS(创世)SD NAND可以无需安装驱动,即插即用,省去了编写NAND Flash
    发表于 01-24 18:30

    关于SD NAND 的概述

    Flash驱动,降低了工程师的开发难度。   减少CPU负荷:将针对NAND Flash的操作交由SD
    发表于 12-06 11:22

    关于CS品牌SD接口NAND在全志等MCU上的应用

      在越来越多的工程是朋友,使用到了我们的CS品牌的贴片式TF卡(SD NAND),我们也在各个渠道进行了宣传和推广,比如我们之前发过的一篇关于SD接口的
    发表于 07-18 16:24

    SPI接口MCU如何使用搭配CS品牌SD NAND

    `  现在很多工程师朋友,越来越多的使用到了CS品牌SD NAND,也称之为贴片式SD卡,随着使用的变多,那么很多客户都会问到,如何通过SPI口来使用
    发表于 09-24 15:07

    为什么传统的SD卡逐渐没落?CS品牌SD NAND逐步崛起

    ,降低成本。  第四,简单易用。CS品牌SD NAND内置坏块管理,平均读写,动态和静态的EDC/ECC算法等等,除了让产品的质量更稳定,更好的延长寿命,更能减少CPU的负荷。让后续针对NAN
    发表于 09-26 15:15

    SD NAND Flash哪家好?CS品牌(创世)最佳选择

    。  综合以上的情况,大家都在想,是否有一种品质稳定可靠,尺寸又小,简单易用,还不用写驱动NAND Flash产品呢?  SD NAND
    发表于 09-29 16:45

    比E2PROM和NOR Flash容量大稳定性高的SD NAND Flash

    的存储需求,有没有一种简单易用、稳定可靠的NAND Flash产品呢?我们介绍一下CS品牌的SD NAND,很多朋友也称之为贴片式T卡,贴片
    发表于 10-10 16:55

    存储IC领域中的一匹黑马CS品牌SD NAND Flash

    NAND这款产品,分享给很多工程师,得到的反馈非常的好。  那SD NAND/贴片式SD卡好在哪?    CS品牌
    发表于 10-11 16:22

    可焊接的SD卡又叫做可焊接的SD NAND Flash

    Flash产品呢?    CS品牌SD NAND就是这样一款产品。内部使用寿命最长、性能最稳定的SLC NAND
    发表于 10-15 17:01

    什么是tSD/qSD?CS创世 SD NAND又有什么区别呢?

    ,那么CS创世 SD NAND和tSD/qSD有什么相同和不同的呢?  简单来说相同的,它们的架构都是一个控制器+ NAND Flash晶圆
    发表于 06-09 14:46

    基于FPGA的SD卡的数据读写实现(SD NAND FLASH

    文章目录1、存储芯片分类2、NOR FlashNAND Flash的区别3、什么是SD卡?4、什么是SD
    发表于 12-16 17:18

    SD NAND FLASH : 什么是pSLC?

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

    NAND_Flash结构与驱动分析

    NAND_Flash结构与驱动分析NAND_Flash结构与驱动分析NAND_Flash结构与驱动
    发表于 03-17 14:14 ?37次下载

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

    NAND FLASH,嵌入式sd卡,工业级sd卡,单片机 nand flash,贴片式TF卡
    的头像 发表于 11-15 18:09 ?959次阅读
    <b class='flag-5'>CS</b>创世<b class='flag-5'>SD</b> <b class='flag-5'>NAND</b>的存储芯片应用方案