解析CKS32F4xx系列MCU的FSMC功能
本文将为大家讲解CKS32F4xx系列产品的FSMC应用实例,FSMC全称是Flexible Static Memory Controller,读作灵活的静态存储控制器,顾名思义,MCU可以通过FSMC扩展静态内存,灵活则是因为支持PC卡/CF卡、SRAM、PSRAM、NOR Flash和NAND Flash等几种模式,本应用实例主要是帮助读者们学习驱动NAND Flash。注意,FSMC并不能支持如SDRAM这类型动态存储器,需要FMC功能才支持。
FSMC简介
FSMC主要框图
FSMC的主要思路是内核想访问存储器,但是存储器需要接收到特定的数据/地址/控制等信号,内核并不好操作,于是就诞生了FSMC外设,有了这个外设我们就无须自己写复杂的硬件时序,由配置好的FSMC替我们完成。根据配置的不同,FSMC可用于控制ROM、SRAM、NOR Flash、PSRAM和NAND Flash,其结构框图如图1所示。
图1 FSMC框图
从框图可以了解到,FSMC外设包含4个模块:AHB总线接口(包含配置寄存器)、NOR Flash/PSARM控制器、NAND Flash/PC 卡控制器、外部接口。
(1)内核通过AHB总线发送总线事务请求,AHB时钟(HCLK)是FSMC的参考时钟。
(2)配置寄存器按配置形成扩展外设的通信协议,驱动相应的存储器控制器,进而控制外设。
(3)两大控制器用于生成适当的时序,如NOR Flash/PSRAM控制器用于驱动8位、16位、32位的异步SRAM和ROM、异步或突发模式的NOR Flash和PSRAM;NAND/PC卡控制器用于驱动8位或16位的NAND Flash以及16位的PC卡兼容设备。
(4)不同外设共用一组地址数据总线、读写使能和输入等待线,此共用信号基本上涵盖了扩展外设读写所需要的所有信息,地址用于寻址,读写使能和输入等待线用于控制数据传输方向,并标识数据有效时间以同步数据。FSMC每次访问外设时,都会切换片选信号,如NOR Flash的NE信号,NAND Flash和PC卡的NCE信号,其余外设接口信号根据具体外设驱动方式分配。
FSMC设备地址映射
FSMC的外部设备地址映射划分在0x60000000~0x9FFFFFFF这一段存储空间内,我们可以直接以读写内存的形式访问存储设备,类似访问片上外设寄存器一样方便,如图2所示将外部存储器划分为四个存储块(Bank),每个Bank对应256M字节的空间,加起来FSMC总共管理着1G字节的空间。Bank1用于NOR Flash/PSRAM,最多可以连接4个存储器,Bank2/3可以各接入1个NAND Flash,Bank4则用于扩展PC卡兼容设备。本文主要探讨NAND Flash驱动,因此主要讨论块2、块3的相关配置。
图2 FSMC存储区域
对于NAND Flash/PC卡控制器,块2.3.4被划分为表1所示的访问空间,地址映射分通用区和特性区,块4-PC卡相比多了一个I/O空间,分别由各自的时序寄存器控制访问时序。
表1 NAND Flash/PC卡地址
对于NAND Flash,通用空间和特性空间在其低256K字节部分划分了3个区,前64K为地址区,中64K为命令区,后128K为数据区,地址范围如表2所示。访问NAND存储空间流程简单描述为:先发送命令到命令区,其次发送需要操作的地址至地址区,最后在数据区写入或读出数据,以上流程只需要在三个区内任意地址执行即可。
表2 每个存储块的低256K字节
NAND Flash/PC卡存储器控制器
FSMC内部有两个独立的控制器分别用于驱动NOR/PSRAM内存和NAND/PC卡。由于本文所涉及的例子是驱动一个8位NAND Flash(型号K9F1G08U0E),所以这里主要讲述一下NAND/PC卡控制器。
支持设备和接口
表3列出了FSMC支持的NAND设备、访问模式和总线事务,可以看到NAND Flash/PC卡控制器能够以异步方式访问8位或16位的NAND Flash,而请求AHB操作的数据宽度可以是8位、16位、32位,为了保障数据传输的一致性,FSMC遵循以下原则:
1、AHB操作的数据宽度和外部存储器宽度相同时,无传输一致性问题。
2、AHB操作的数据宽度大于外部存储器宽度,FSMC将AHB操作分割成几个连续的较小数据宽度的存储器操作,以适应外部存储器。
3、AHB操作的数据宽度小于外部存储器宽度,异步传输时不能进行写的操作,只能进行读操作,如表3灰色部分所示。
表3 支持的存储器和事务
表4列出了用于连接8位NAND Flash的接口信号,我们主要通过地址区(A17)、命令区(A16)和数据区(D[7:0])这三个区来访问NAND Flash,注意名称前缀N表示低电平有效。
表4 8位NAND存储器接口信号
NAND Flash操作流程
以NAND Flash页读取操作流程为例,说明控制器是怎么参与操作的:
1、根据所选8位NAND Flash的特性,配置控制寄存器FSMC_PCRx、通用区时序寄存器 FSMC_PMEMx和特性区时序寄存器FSMC_PATTx,进而配置并使能相应的存储区域
2、根据NAND Flash命令集在通用区域的命令区执行字节写操作,将页读取的命令写入命令区,在NWE低电平时,Flash的CLE输入有效,将命令锁存。
3、在通用区域或特性区域的地址区写入表示读操作起始地址的相应字节,在NEW低电平时,Flash的ALE输入有效,将地址锁存为读操作起始地址。
4、借助特性存储器空间,可设置预等待功能,当写入地址结束时,控制器会等待存储器准备好,R/NB信号变为低电平后方可访问新的存储空间。
5、在通用区域的数据区按字节读出数据完成页读取操作。
6、后续可继续执行第五步读出数据而无需再进行命令和地址的写操作,或重新执行第三步写入新的地址,或重新执行第二步发送新的命令。
NAND Flash/PC卡寄存器
控制寄存器FSMC_PCRx
位1 PWAITE:等待特性使能位=1时,使能等待特性,注意当使能等待特性后,需配置相应等待时间,如使用读芯片忙脚作为反馈时,可关闭等待特性。
位2 PBKEN:NAND Flash/PC卡存储区域使能位=1时使能存储块功能,于FSMC_NANDcmd函数内使能。
位3 PTYP:存储器类型=1时为NAND Flash,设置0时为PC卡、PC卡等。
位5:4 PWID:数据总线宽度,用于定义外部存储器设备宽度,00时为8位,01则16位。位6 ECCEN:ECC计算逻辑使能位=1时使能ECC逻辑。
位12:9 TCLR:CLE到RE的延迟时间,从0000到1111可配置1到16个HCLK周期。
位16:13 TAR:ALE到RE的延迟时间,从0000到1111可配置1到16个HCLK周期。
位19:17 ECCPS:ECC页大小,自定义扩展ECC的页大小,000为256字节,001为512字节,最大配置101为8192字节。
通用存储器空间时序寄存器FSMC_PMEMx
位7:0 MEMSETx:通用存储器x的建立时间,定义为读写使能命令(NWE,NOE)前建立地址所需要的HCLK周期数,可设置0x00到0xFF表示2到257个周期数(NAND Flash)。
位15:8 MEMWAITx:通用存储器x的等待时间,定义为保持读写使能命令(NWE,NOE)所需要的HCLK周期数,可设置0x01到0xFF表示2到256个周期数(再加上NWAIT变低的等待时间),0x00用于保留。
位23:16 MEMHOLDx:通用存储器x的保持时间,定义为读写禁止命令(NWE,NOE)后保持地址信号或数据信号的HCLK周期数,可设置0x01到0xFF表示1到255个周期数,0x00用于保留。
位31:24 MEMHIZx:数据总线高阻态时间,当进行写操作时,数据总线需要保持一段时间的高阻态状态,可设置0x00到0xFF表示1到256个HCLK周期数(NAND Flash)。
特性存储器空间时序寄存器FSMC_PATTx与通用寄存器一样,有同样的4个参数分别为ATTHIZx、ATTHOLDx、ATTWAITx和ATTSETx,可自行对应参考。
驱动NAND Flash示例
FSMC代码示例
(1)FSMC初始化配置:A.首先开启GPIO、FSMC、AFIO复用等三个时钟,按外接引脚配置除PD6以外所有引脚复用推挽输出,PD6忙脚作为上拉输入,然后所有脚开启FSMC复用功能。B.FSMC寄存器配置,使用外接忙脚作为应答,因此关掉等待特性,数据宽度选择8bit,使能ECC校验功能,ECC页大小为512字节,各信号时序因为外接模块,最后初始化并使能复位。
(2)进行读取NAND Flash ID号的操作,按照上一节的控制逻辑,ReadID,必须发送命令90H(H代表16进制)到命令区(命令区、地址区和数据区的地址如表2所示),接着发送0x00到地址区,最后在数据区读回32位的ID号0xECF10095。
(3)写入操作前,需要先整块擦除,命令区输入0x60,然后地址区输入要擦除的地址,再第二轮输入命令区0xD0执行擦除,函数最后返回读取当前状态的值,会持续等待设备擦除完毕或超时退出。
(4)填充TxBuffer用于写入实验,目前填充共2K的空间,刚好一个页容量。
(5)页写入TxBuffer的数据,函数的三个参数为TxBuffer、写入地址和写入页的数量,给定TxBuffer数据,写入地址为WriteReadAddr.Zone=0x00、WriteReadAddr.Block=0x00、WriteReadAddr.Page=0x00,写入页数量为1。当写入页数量不为0、地址状态有效且状态已准备好时,进入循环,发送写入一次命令80H,写入列地址表示页内偏移,无偏移所以为0x00,写入行地址为当前块地址,在将Txbuffer依次连续写入数据区,完成后二次命令0x10结束写入,读NAND Flash的忙脚等待写入完成信号,等待完成后行地址递增,可进行下一个页的写入。
(6)页读取操作同页写入,命令区一次写入0x00,二次写入0x30,列地址0x00,行地址选当前页地址。二次命令写入后才读出数据给到RxBuffer。
(7)最后利用串口打印,读ID、比较TxBuffer和RxBuffer(比较前100个数据)是否一致可以看到ID识别为0xECF10095,TxBuffer和RxBuffer数据一致。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由犀牛先生转载自中科芯MCU公众号,原文标题为:MCU微课堂|CKS32F4xx系列FSMC功能,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
【经验】中科芯CKS32F1系列MCU替代其他厂牌产品兼容性问题处理注意事项
中科芯基于ARM Cortex-M3的CKS32F1系列MCU功耗较国外品牌低20%,有多种低功耗模式。多重、多样化保护机制,自定义分级读写保护更是提高了产品的安全性。但是在与其他品牌产品进行替换时会遇到一些兼容性问题,在此将常见的问题和解决办法进行说明。
中科芯CKS32K148系列MCU SCG寄存器配置以及相关示例(二)
在前文中,已经对中科芯CKS32K148 MCU SCG时钟进行了整体介绍,下面以RUN模式下配置SPLL为系统时钟源为例,对时钟配置的具体方法进行讲解。
解析中科芯CKS32F107xx系列MCU的GPIO配置
本文中中科芯来给大家介绍CKS32F107xx系列MCU的GPIO配置,希望对各位工程师有所帮助。GPIO是通用输入输出端口的简称,也是CKS32可控制的引脚,CKS32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
中科芯(CETC)32位MCU选型指南
目录- 公司简介 MCU MCU型号定义&封装参考 MCU开发工具 LoRa/ NB-IoT LoRa/ NB-IoT产品简介 MCU应用案例
型号- CKS32F103V8T6,CKS32F031K6U6,CKS32F102C6T6,CKS32F417ZET6,CKS32F105VDT6,CKS32F107,SX1262,CKS32F105,CKS32F102R4T6,CKS32F103,CKS32F101,CKS32F102,CKS32F101R6T6,CKS32F103C4T6,CKS32F051K6U6,CKS32F101ZCT6,CKS32F030F6P6,CKS32F101VET6,CKS32F417VGT6,SX1280,CKS32L063C8T6,CKS32F031F4P6,CKS32F101C8T6,CKS32F107V8T6,SX1278,CKS32F103RCT6,CKS32F107RBT6,CKS32F051K6T6,CKS32F405ZGT6,TP20L607,CKS32F103ZET6,CKS32L052R6T6,CKS32L052C8T6,CKS32F105VCT6,CKS32F107系列,CKS32F105RET6,CKS32L051系列,CKS32L051R8T6,CKS32L053C6T6,CKS32F101ZDT6,CRF-62,CKS32F072R6T6,CKS32F051系列,CKS32F103RDT6,CKS32F072C8T6,CKS32F103VBT6,CKS32F030K6T6,CKS32F042K8T6,CKS32F407VET6,CKS32F103R4T6,CKS32F415系列,CKS32F103ZDT6,CKS32F102C8T6,CKS32F417ZGT6,CKS32F042系列,CKS32F105VBT6,CKS32F030R8T6,CKS32F102R6T6,CKS32F105RDT6,CRF62-LKWAN-CY,CKS32F103C6T6,CKS32L052系列,CKS32F030K6U6,CKS32F102系列,CKS32F101R8T6,CKS32F030F4P6,CKS32F101ZET6,CKS32L063R8T6,CKS32F101CBT6,CKS32F031系列,CKS32F107R8T6,CKS32F031G6U6,CKS32F103RET6,CKS32L051K6T6,CRF1278系列,CKS32F415RGT6,CKS32L063系列,CKS32F103VCT6,CKS32F051C8T6,CKS32F103ZCT6,CKS32F417IET6,CKS32L052R8T6,CKS32F105RCT6,CKS32L053系列,CRF1278,CKS32F051R8T6,CKS32F101系列,CKS32L053C8T6,CKS32F072CBT6,CKS32F105V8T6,CKS32F407ZET6,CKS32F101RBT6,CKS,CKS32F030系列,CKS32F072R8T6,CRF62-L2,CRF62-L5,CKS32F042C6T6,CKS32F103VDT6,CKS32L053R6T6,CKS32F107VET6,CKS32F407VGT6,CKS32F103R6T6,CKS32F417系列,CKS32F030C8T6,CKS32F102R8T6,CKS32F105RBT6,CKS32F031C6T6,CKS32F103C8T6,CKS32F102CBT6,CKS32F405系列,CKS32F101RCT6,CKS32L052K6T6,CKS32F415VGT6,CKS32F031G4U6,CKS32F103VET6,CKS32F107VDT6,CKS32F051,CKS32F051C6T6,CKS32L051K8T6,CKS32F417IGT6,CRF-62系列,CRF62-WAN,CKS32,CKS32F103系列,CKS32F072RBT6,CKS32F042,CKS32F407IET6,CKS32F405RGT6,CRF1280-12S,CKS32F107RET6,CKS32F407ZGT6,CKS32F101VBT6,CKS32F102RBT6,CKS32F101RDT6,CKS32L053R8T6,CKS32F031,CKS32F103R8T6,CKS32F042C8T6,CKS32F107VCT6,CKS32F030,CRF1278-L3,CRF1278-L1,CKS32F030C6T6,XY1100,CRF1278-L4,CKS32F103CBT6,CKS32F030K6,CKS32F102C4T6,ASR6601,CKS32F101R4T6,CKS32F105R8T6,CKS32F051K8U6,CKS32F407系列,CKS32F107RDT6,CKS32F101VCT6,CKS32F415ZGT6,CKS32F101RET6,CKS32L052K8T6,CKS32F417,CKS32F417VET6,CKS32F101C6T6,CKS32F415,CKS32F031F6P6,CKS32F107VBT6,CKS32L051C6T6,CKS32F051K8T6,TP20H607,CKS32L051C8T6,CKS32F042K6T6,CKS32L052C6T6,ASR6505,CKS32F105VET6,CKS32F407,CKS32F405,ASR6501,ASR6502,CKS32X...,CKS32F105系列,CKS32L051R6T6,CKS32L063,CKS32F407IGT6,CKS32F405VGT6,CKS32F072,CKS32F101VDT6,CKS32F072系列,CKS32F031K6T6,CKS32F103RBT6,CKS32F072C6T6,CRF1100-N1,CKS32L052,CKS32F107RCT6,CKS32L051,CKS32L053
Top Chinese 8/32-bit MCU Manufacturers with ARM Cortex-M0, M0+, M3, M4 and Stable Supply
In the face of rising semiconductor raw material prices and a continued shortage of production capacity, Sekorm has joined Civil Technology, Arteli, Chipsea, China Microelectronics, Fudan Microelectronics, Aerospace Shun, and other mainstream MCU manufacturers to provide stable MCU supply guarantees
中科芯(CETC)CKS32F030C8/C6/K6/F4 32位MCU数据手册
描述- 本资料给出了中科芯CKS32F030 xx 微控制器产品的器件特性
型号- CKS32F030XX,CKS32F030C6,CKS32F030R8T6XXX,CKS32F030C8,CKS32,CKS32F030K6,CKS32F030F4
中科芯CKS32K148系列MCU SCG(系统时钟发生器)模块应用指南(一)
系统时钟发生器(SCG)是MCU中的重要模块,它能够为芯片提供多个灵活的时钟源,并支持各种时钟输出选项,实现对芯片内部各个模块的时钟供应。CKS32K148的时钟生成电路提供了各种时钟分频器和选择器,允许不同的模块以该模块特定的频率运行,而时钟生成逻辑实现了可以独立关闭的模块特定时钟门控,从而能够优化芯片性能以满足低功耗的需求。本文将围绕CKS32K148的SCG模块展开介绍。
【选型】中科芯(CETC)CKS32通用32位MCU快速选型指南
目录- CKS32F030超值型-48Mhz/CKS32F031入门型-48Mhz CKS32F051入门型-48Mhz/CKS32F103系列-72MHz
型号- CKS32F051K8T6,CKS32F051K6T6,CKS32F030C6T6,CKS32F030C8T6,CKS32F031K6U6,CKS32F103CBT6,CKS32F030R8T6,CKS32F031C6T6,CKS32F103,CKS32,CKS32F030K6U6,CKS32F051R8T6,CKS32F103C8T6,CKS32F103TBU6,CKS32F103T8U6,CKS32F030F4P6,CKS32F051K8U6,CKS32F051K6U6,CKS32F030F6P6,CKS32F031K6T6,CKS32F031F4P6,CKS32F103RBT6,CKS32F103VBT6,CKS32F030K6T6,CKS32F031F6P6,CKS32F031,CKS32F051C8T6,CKS32F103R8T6,CKS32F051,CKS32F030
解析中科芯CKS32F107xx MCU的DAC模块
DAC即数模转换器,它可以将数字信号转换为模拟信号。在常见的数字信号系统中,传感器信号被ADC模块把电压模拟信号转换成易于计算机存储、处理的数字信号,由计算机处理完成后,再由DAC模块转化输出电压模拟信号来驱动某些执行器件。本文将为您解析CKS32F107xx MCU的DAC特点和结构。
【产品】国产32位MCU、从M0到M4内核8大系列产品和STM32软硬件全兼容 | 视频
在2021年4年27日主控器件及存储专场|世强硬创新产品研讨会中,中科芯分享了其32位通用MCU,从M0到M4内核8大系列产品,同STM32软硬件全兼容,并且讲解了在工业、物联网、通信领域的应用。
【视频】国产32位MCU,从M0到M4内核8大系列产品和STM32软硬件全兼容|世强硬创新产品在线研讨会
在世强硬创新产品在线研讨会——IoT&消费专场中,中科芯技术专家介绍了其32位MCU,产品从M0到M4内核8大系列产品和STM32软硬件全兼容。
中科芯CKS32F107xx系列MCU内部温度传感器ADC采集应用指南
中科芯推出的CKS32F107xx系列MCU有一个内部的温度传感器,可以用来测量MCU及周围的温度(TA)。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。
中科芯CKS32F4xx系列MCU Flash模拟EEPROM的操作应用指南
中科芯CKS32F4xx系列芯片内部嵌入一个FLASH,若FLASH存储了用户的应用程序后仍留有空间,剩余空间可被当作EEPROM使用,这比访问外部FLASH速度优势更为明显。在本章节中,将会向大家简要介绍内部FLASH,并通过一个例程来演示FLASH模拟EEPROM的操作。
【经验】中科芯CKS32F4xx系列MCU DAC功能应用指南
DAC模块作为中科芯CKS32F4xx系列MCU的一个常用外设,可以将数字信号转换成模拟信号,最高分辨率可达12位,且两个独立DAC输出通道转换互不影响,各个通道均能使用DMA功能,可由软硬件触发。因此,为了实现DAC输出正弦波,拟采用一定的时间向DAC的数据寄存器写入数据,随后进行数模转换输出不同的电压,最后在时间轴上显示出波形。
中科芯MCU诚邀新老朋友莅临上海慕尼黑电子展交流指导
中科芯MCU诚邀新老朋友2024年7月8日-10日莅临上海慕尼黑电子展交流指导!望与客户朋友们洽谈合作、携手共赢!
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
拥有IC烧录机20余款,100余台设备,可以烧录各种封装的IC;可烧录MCU、FLASH、EMMC、NAND FLASH、EPROM等各类型芯片,支持WIFI/BT模组PCBA烧录、测试。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论