⑴ ST福利:如何使用STM32F103C8T6的后64KB flash
ST福利揭秘:利用STM32F103C8T6的隐藏闪存资源
在STM32F103C8T6和CBT6型号中,虽然它们都采用LQFP48封装,但主要区别在于闪存容量,C8T6为64KB,而CBT6则拥有更大的128KB。实际上,C8T6与CBT6使用的是同一die封装,ST公司巧妙地提供了额外的64KB闪存空间供用户利用。
通过简单的操作,我们可以充分挖掘C8T6的这一潜能。首先,确保使用SWD接口连接DAPLink仿真器,仅需GND、SWCLK、SWDIO和3V3四根线。接着,从github下载预先配置好的openocd环境和脚本,无需额外安装,双击即可执行。
操作流程包括:检测芯片ID,通过flash_write.bat将预先准备的128KB镜像写入,验证写入成功,然后使用flash_mp.bat导出数据并进行hash校验。这些脚本分别执行挂载、闪存操作、擦除以及设置读写权限。
重要的是,openocd允许用户通过自定义配置来指定闪存大小,即使IDE如Keil或IAR未识别C8T6的全部闪存容量。这得益于openocd的底层灵活性,通过调整flash bank配置,我们可以利用C8T6的额外空间。
总结,尽管CBT6是更直接的选择,但对openocd和DAPLink有深入理解的开发者,可以通过这种方式充分利用STM32F103C8T6的后64KB闪存,扩展应用的存储能力。
⑵ stm32的嵌入式闪存:大容量产品主存储块最大为64k*64位,每个存储块划分为256个2k 字节的页,这两句话
按照存储单元的元[位]来讲,这两种说法是相等的:
64K * 64bits = 64 * 4 *2K * 8bits = 256个2K字节;
也就是说,总的存储容量还是没变的。
我的理解是这样的:
前者侧重页外,后者侧重页内,两种说法是和存储器的组织形式有关的:
主存储块的最大数目 = 64K * 64位,而每个单独的页(也就是存储芯片)的构成形式是2K*8位,那么就需要进行扩展:
首先应进行位扩展,即2K * 8位扩展为2K * 64位,则需要8个存储芯片,3根片选线,11根地址线;
然后进行字扩展,即2K 扩展为 64K,此时需要32个位扩展后的存储芯片,5根地址线;
如此共需要存储芯片数量为:32 * 8 = 256个,也就是存储块内共需要256个页,19根地址线。