您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > STM32F2技术培训_片上闪存Flash
STM32F2片上闪存2培训内容片上闪存特性和系统框图存储空间组织架构用户闪存系统闪存OTP选项字节闪存读接口等待周期指令预取指令高速缓存数据高速缓存擦除和编程操作读保护和写保护STM32F2和STM32F1的闪存特性比较3培训内容片上闪存特性和系统框图存储空间组织架构用户闪存系统闪存OTP选项字节闪存读接口等待周期指令预取指令高速缓存数据高速缓存擦除和编程操作读保护和写保护STM32F2和STM32F1的闪存特性比较4片上闪存主要特性STM32F2系列产品中最高容量可达1M字节片上闪存宽度:128位(16个字节)独创的自适应闪存加速器预取址指令队列I-Code总线上的指令高速缓存(STM32F2新增)D-Code总线上的数据高速缓存(STM32F2新增)单独的编程供电引脚(STM32F2新增)编程宽度可高达64位增强的读保护级别(STM32F2新增)JTAG引脚熔断512字节OTP区域(STM32F2新增)5在系统架构中的闪存接口1MB128位宽度6培训内容片上闪存特性和系统框图存储空间组织架构用户闪存系统闪存OTP选项字节闪存读接口等待周期指令预取指令高速缓存数据高速缓存擦除和编程操作读保护和写保护STM32F2和STM32F1的闪存特性比较7片上闪存的组织结构最高1M字节用户闪存12个扇区容量不均匀4个16K字节的扇区1个64K字节的扇区7个128K字节的扇区30K字节系统闪存出厂前存放bootloaderUSART1/3CAN2USBOTGFS512字节OTP一次性编程区域选项字节读、写保护使能和控制BOR电平设置低功耗模式下,软、硬件看门狗的行为8一次性编程区域(OTP)528字节OTP区域528=32*16+16*116个数据Block,每个Block有32个字节1个上锁Block,包含16字节LOCKBi(0=i=15)以上内容都不能被擦除上锁Block中的每个字节用来给数据Block上锁上锁字节被写入0x00之后,对应数据Block不能再被修改上锁字节的值只能是0x00或者0xFFOTP区域的编程和用户闪存的编程流程一样(后详述)数据Block上锁Block块号01……15起始地址0x1FFF,78000x1FFF,78200x1FFF,79E00x1FFF,7A00容量大小32字节32字节32字节16字节OTP起始地址0x1FFF,78009选项字节16字节空间的选项字节目前只有4字节有应用意义其余空间保留地址描述位域描述功能0x1FFF,C000读保护控制15:8RDP0xAA表示没有保护;0xCC表示高级别保护;其他值表示普通保护用户选项字节7nRST_STDBY置位表示进入待机模式就产生复位6nRST_STOP置位表示进入停止模式就产生复位5WDG_SW选择硬件还是软件开启独立看门狗4设置BOR电平;四个值对应四个供电电压范围下的BOR电平3:2BOR_LEV1:00x1FFF,C00815:12写保护控制i(0=i=11)nWRP每个bit对应一个闪存扇区的写保护控制,低电平表示写保护有效10选项字节的访问控制修改和擦除之前,必须先解锁通过往选项字节键值寄存器写入正确的字节序列来解锁FLASH_OPTKEY1=0x08192A3BFLASH_OPTKEY2=0x4C5D6E7F以上序列完成后,解锁位被硬件清零OPTLOCK@FLASH_OPTCR选项字节修改流程确认闪存空闲:BSY@FLASH_SR更新选项字节内容:FLASH_OPTCR启动内部写逻辑:OPTSTRT@FLASH_OPTCR等待写操作完成:BSY@FLASH_SR用户可置位OPTLOCK来对更新的内容加上写保护11选项字节相关寄存器选项字节控制寄存器选项位的值在复位后从闪存的选项字节区域拷贝OPTSTAT:软件置位(开启写过程),硬件清零OPTLOCK:软件置位(上锁),解锁序列后硬件清零选项字节键值寄存器往此寄存器写入解锁序列OPTKEYR=0x08192A3BOPTKEYR=0x4C5D6E7F12选项字节和闪存接口寄存器中的OPTCR512MBBlock2Periphrals512MBBlock1SRAM512MBBlock0Code0x0000,00000x1FFF,FFFF0x2000,00000x4000,00000x3FFF,FFFF别名区(用户闪存/系统闪存/用户SRAM)Size=1MB0x0000,0000~0x000F,FFFF片上用户闪存(size=1MB)0x0800,0000~0x080F,FFFF系统闪存(size=30KB)0x1FFF,0000~0x1FFF,77FFOTP(size=528B)0x1FFF,7800~0x1FFF,77FF选项字节(size=16B)……Flash接口寄存器组@AHBBKPSRAM(size=4KB)RCC接口寄存器组@AHB0x1FFF,C000RDP&USRnWRP……0x4002,3C0015:0偏移0x14处1315:0RDP&USRnWRP修改选项字节上电装载选项字节信息修改Flash_OPTCR,置位OPTSTRT来启动选项字节写逻辑:先擦除选项字节区域再把寄存器中的值更新过去复位后,从选项字节区域装载信息到闪存接口寄存器Flash_OPTCR中14培训内容片上闪存特性和系统框图存储空间组织架构用户闪存系统闪存OTP选项字节闪存读接口等待周期指令预取指令高速缓存数据高速缓存擦除和编程操作读保护和写保护STM32F2和STM32F1的闪存特性比较15闪存读接口的等待周期快速CPU和相对慢速闪存之间的平衡等待周期LATENCY@FLASH_ACR等待周期与HCLK以及供电范围的关系片上闪存属于VDD域VDD的电压范围影响闪存的工作性能复位后CPU频率默认16MHz等待周期(WS)LATENCYHCLK(MHz)电压范围:2.7V~3.6V电压范围:2.4V~2.7V电压范围:2.1V~2.4V电压范围:1.8V~2.1V0WS(1CPU周期)0HCLK=300HCLK=240HCLK=180HCLK=161WS(2CPU周期)30HCLK=6024HCLK=4818HCLK=3616HCLK=322WS(3CPU周期)60HCLK=9048HCLK=7236HCLK=5432HCLK=483WS(4CPU周期)90HCLK=12072HCLK=9654HCLK=7248HCLK=644WS(5CPU周期)96HCLK=12072HCLK=9064HCLK=805WS(6CPU周期)90HCLK=10880HCLK=966WS(7CPU周期)108HCLK=12096HCLK=1127WS(8CPU周期)112HCLK=12016读接口等待周期的动态调整复位后CPU默认跑在16MHz提升CPU频率,必须修改等待周期的个数写入更多的等待周期:LATENCY@FLASH_ACR读出LATENCY以确定写入成功提高CPU频率SW@RCC_CFGR(选择系统时钟源:HSI、HSE、PLL)HPRE@RCC_CFGR(AHB时钟分频因子:1~512)读出以上修改后的域以确保修改成功降低CPU频率,也应该修改等待周期的个数降低CPU频率SW@RCC_CFGRHPRE@RCC_CFGR读出以上修改后的域以确保修改成功写入更少的等待周期读出LATENCY以确定写入成功注意:对等待周期以及CPU时钟的配置不一定会马上生效。需要通过读取修改后的域来由用户确认已经修改成功17片上闪存读接口(1)假设等待周期设置LATENCY=3在120MHz的CPU频率下,需要4个周期读取闪存但是在要求第5条指令时,CPU又需要4个周期才能获得FETCH-M3withMPU120MHzI-32-bitFLASHI1-32-bitI2-32-bitI3-32-bitI4-32-bitI5-32-bit128-bit假设顺序读取都是32位的指令18没有预取指令的示意图假设顺序读取都是32位的指令假设等待周期设置LATENCY=3读出的4条指令放在currentinstructionline只要流水线空闲就可以执行相应的F操作,无须等待指令从闪存读取出来,因为它们对应的指令2/3/4都已经在currentinstructionline了读出的4条指令放在currentinstructionlineCPU第一次读片上闪存CPU第二次读片上闪存19片上闪存读接口(2)假设顺序读取都是32位的指令FETCH-M3withMPU120MHzI-32-bitPFQclk4x32-bit/8x16-bitbufferPFQ128-bitFLASHI1-32-bitI2-32-bitI3-32-bitI4-32-bitCPUclk使能预取指PFQ:PRFEN@FLASH_ACR当CPU通过I-Bus从currentins.Line获得数据时,PFQ可以提前从闪存中读取下一个128位的数据放在prefechedins.line在执行顺序代码的情况下,CPU之后就无需等待了20带预取指令功能的示意图假设顺序读取都是32位的指令假设等待周期设置LATENCY=3读出的4条指令放在currentinstructionlineCPU第一次读片上闪存闪存加速器把下4个指令预先读取出来读出的4条指令放在prefetchedinstructionline21片上闪存读接口(3)如果指令发生跳转FETCH-M3withMPU120MHzFLASHI1-32-bitI2-32-bitI3-32-bitI4-32-bitI-32-bit128-bit储存经常用到的指令,跳转发生又缓存击中的情况下,无需任何延迟地执行代码4x32-bitbuffer8x16-bitbufferPFQ8*128bitBC储存经常用到的literalpoolD-32-bit64*128bitBC22片上闪存读接口寄存器FLASH_ACR等待周期的配置:LATENCY@FLASH_CR预取指使能:PRFEN@FLASH_CR指令高速缓存复位:ICRST使能:ICEN数据高速缓存复位:DCRST使能:DCEN23培训内容片上闪存特性和系统框图存储空间组织架构用户闪存系统闪存OTP选项字节闪存读接口等待周期指令预取指令高速缓存数据高速缓存擦除和编程操作读保护和写保护STM32F2和STM32F1的闪存特性比较24片上闪存写接口特性擦除和编程操作要求HCLKMIN=1MHz擦除和编程操作之前需要解锁FLASH_KEYR=0x45670123FLASH_KEYR=0xCDEF89AB擦除和编程操作的并行宽度取决于VDD范围以及是否有外部编程电压VPP需要在PSIZE@FLASH_CR中由用户指明PSIZE设置和外部电压条件不符,擦除或编程操作会导致不能预料的错误,即使读出来正确也不能保证VPP:8~9V,最好只用于生产线上最初的编程引脚上供电不能超过1个小时,否则损坏片上闪存VDD2.7~3.6V&VPP2.7~3.6V2.4~2.7V2.1~2.4V1.8~2.1V最大并行宽度64位32位16位8位PSIZE[1:0]1110010025片上闪存写接口特性(2)擦除操作以扇区为单位(16KB、64KB和128KB)全部擦除不影响OTP和选项字节擦除之后最好清空高速缓存disablecacheresetcacheenablecache编程操作编程单位取决于PSIZE(8b、16
本文标题:STM32F2技术培训_片上闪存Flash
链接地址:https://www.777doc.com/doc-960547 .html