STM32F103C8T6有128K的Flash

发布者:Amy啊111111最新更新时间:2019-03-18 来源: eefocus关键字:STM32F103C8T6  128K  Flash 手机看文章 扫描二维码
随时随地手机看文章

一 序:

1 STM32F103C8T6和STM32F103CBT6 引脚相同,唯一的区别是前者为64kflash(0x8000000~0x800FFFF) 后者为128kflash(0x8000000~0x801FFFF);

2 已经发现STM32Ff103C8T6 在 00x8010000~0x801FFFF是可读写的;


二 ST 技术人员对此回答:

STM32F103C8T6和STM32F103CBT6 是在同一圆晶上制造的,但测试时,只测试手册提供的参数范围所包含的内容,也就意味这 STM32F103C8T6也是128k Flash,只不过只测试了前面64k,然后打上 STM32F103C8T6标注(当然内部就写上 C8T6 的 ID);


三 简单测试;

 1 用stlink连接板子, 在STM32 STLINK UTILITY中将 size 由 0x10000 改为 0x20000 并连接,可见后面64Kflash能全部读出,然而修改数值后不能写入,估计是stlink会检查ID并拒绝写入超出该型号地址范围外的flash;

 2 但在jlink中,只要将型号选为STM32F103CBT6,就能读写后面的64kflash了。


四 验证:
       先准备个大小为64k的二进制文件bin,内容为 uint16_t 0x0000~0x7FFF;

该数据文件我是这样做的:(arduino程序)


复制代码

1.#define LED1 LED_BUILTIN
2.void setup() {
3. // put your setup code here, to run once:
4. pinMode(LED1,OUTPUT);
5. Serial.begin(115200);
6.
7. for (uint16_t i = 0; i < 0x8000; i++) {
8. Serial.write(i & 0xff); //out low byte
9. Serial.write((i >> 8) & 0xff); //out high 8 bit
10. }
11.}
12.
13.void loop() {
14. // put your main code here, to run repeatedly:
15. digitalToggle(LED1);
16. delay(500);
17.}
程序 简单的依次从串口输出0x0000~0x7fff(低位在前,高位在后),在pc上将接收的数据保存为一个*.bin文件;
将这个文件用jlink 烧入地址 0x8010000开始的flahs中;
然后,再写个验证程序:

复制代码

1.#define LED1 LED_BUILTIN
2.
3.#define EXT_FLASH_BASE ((uint32_t)(0x8010000))
4.#define p ((uint16_t *) EXT_FLASH_BASE)
5.
6.void setup() {
7. // put your setup code here, to run once:
8. pinMode(LED1, OUTPUT);
9. Serial.begin(115200);
10.}
11.
12.void loop() {
13. // put your main code here, to run repeatedly:
14. uint8_t j = 0;
15. for (volatile uint16_t i = 0; i < 0x8000; i++) {
16. Serial << _HEX(p[i]) << " ";
17. j++;
18. if (j == 16) {
19. j = 0;
20. Serial << “\n”;
21. }
22. delay(1000);
23. digitalToggle(LED1);
24.}


该程序从地址 0x8010000 开始按uint_16 读取数据并从串口输出,每16个数据换新行,重复输出,这是运行中的截图:


经验证,在程序中,该区域flash也是可读写的,如读取,则和从sram读是一样方便的,只要用指针指向需读取数据的地址即可;

现在,STM32F103C8T6可用的Flash扩大了一倍,这是ST公司给我们的福利,真的太好了,不用也是浪费了,这个区域可写上个常用汉字库或图片,我们可以扔掉外部的spi flash了!还可模拟个64K EEPROM(ST有现成的应用示例代码,arduino中有现成的库)或直接在arduino中当成CBT6用;


小秘密: STM32F101C8T6 和 STM32F103C8T6 ,前者没有USB,只是ST出厂是没有测试这一部分,其实完全可以当成和STM32F103CBT6用;

STM32F103VCT6 和 STM32F103VET6,也是如此,你完全可以使用后面的256k flash !

STM32F030F4P6 可以用32Kflash


这就是为什么ST公司产品中的stlink ob 都是用 STM32F103CBT6做到,而山寨的stlink ob基本都用 C8T6;

当然,ST没测试,你就需要测试一下了,业余玩玩完全可以,做产品当然就不推荐了,因为毕竟没做各种读写的可靠性的测试;

大家可以对其他型号,测试一下看看能否在读出手册Flash结束地址以后的内容,你肯定有收获的;


关键字:STM32F103C8T6  128K  Flash 引用地址:STM32F103C8T6有128K的Flash

上一篇:关于在Ubuntu下开发STM32程序printf函数的重映射问题
下一篇:STM32F103C8T6驱动ov2640拍照串口传输到上位机

推荐阅读最新更新时间:2024-03-16 16:26

STM32对内部Flash的保护措施
1、STM32对内部Flash的保护措施 所有STM32的芯片都提供对Flash的保护,防止对Flash的非法访问 - 写保护和读保护。 1)、读保护即大家通常说的“加密”,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出: 通过调试器(JTAG或SWD); 从RAM中启动并执行的程序; 2)、写保护是以四页(1KB/页) Flash存储区为单位提供写保护,对被保护的页实施编程或擦除操作将不被执行,同时产生操作错误标志。 读与写设置的效果见下表: 读保护 写保护 对Flash的操作功能 有效 有效 CPU只能读,
[单片机]
S3c2440如何利用JLINK烧写U-boot到NAND Flash
很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bootloader给删除了,这时候开发板上电后由于没有bootloader,硬件没有被初始化,在NAND Flash中的操作系统也就无法被加载,开发板成“砖”了,这时候笔记本又无法利用JTag烧写程序进Nand Flash。起始这些可以利用JLink通过两种
[单片机]
单片机内存(ram)、flash、与数据存储和启动过程说明
1 电脑程序运行过程与单片机的区别 由于电脑中的程序是存储在磁盘中的,而磁盘的读取速度非常慢,因此我们不可能从磁盘中直接读取当前要执行的代码,这样必然导致程序阻塞。好在,电脑的内存非常大,所以在程序执行之前,先把整个代码copy到内存中,然后CPU从内存中读取一条条指令,并运行。 为了合理利用和规划内存资源,除了操作系统的内存管理外,最重要的是内存的分段。对每一个进程,操作系统都会为其分配一片内存,同时将其分段为代码段、数据段、堆栈段等等,不同的段具有不同的属性,比如代码段一般是只读的,如下图所示。(参考博客:https://blog.csdn.net/iostream1001001/article/details/77112
[单片机]
单片机内存(ram)、<font color='red'>flash</font>、与数据存储和启动过程说明
一种基于MCU内部Flash的在线仿真器设计方法
    摘要: 提出了一种基于MCU内部Flash的仿真器设计方法,并完成了设计和仿真。     关键词: 微控制器 在线仿真 开发系统 Flash SRAM 由于市场对MCU功能的要求总是不断变化和升级,MCU应用的领域也不断扩展,因此往往需要对最初的设计进行修改。Flash MCU与以往OTP/MASK MCU相比,最大的优点就在于可进行高达上万次的擦写操作,顺应了MCU功能不断修改的需求;另一方面,Flash MCU市场价格也在不断下降。因此,许多OEM已将Flash MCU用于产品的批量生产。对于Flash MCU,基于内部Flash的在线仿真器更接近于程序真实的运行特性,程序调
[嵌入式]
FS2410 开发板上 Nand Flash 到内存的代码搬移
一、目的 前面做过一个实验,搬移 Nand Flash 里的前 4k 代码到内存指定位置,这其实是把 SRAM 从 0x40000000 开始的 4K 代码复制到 SDRAM 的指定位置,并没有涉及到对 Nand Flash 的操作。究其原因,开发板上电后,Nand Flash 开始的前 4K 数据会被自动复制到 SRAM 0x40000000 开始的 4K 区域里,这个区域被称为 Steppingstone 。那我们这次就来 操作 Nand Flash,读取它 4K 后的代码到 SDRAM 指定位置,并执行 SDRAM 中的代码。 二、代码 通过前面做的几个实验,我们已经熟悉了 ARM 开发的基本流程,这可以让我
[单片机]
Atmel推出SAM3N系列微控制器,扩展Cortex-M3 Flash阵容
微控制器 及触摸解决方案的领导厂商爱特梅尔公司(Atmel Corporation)在德国慕尼黑Electronica 2010展会上宣布推出全新SAM3N系列微控制器,扩展其ARM Cortex-M3 Flash系列。新推出的SAM3N系列是瞄准消费、工业控制、计量、玩具、医疗、测试和测量、802.15.4无线网络,以及PC、手机与游戏外设等应用的通用型微控制器,具有高性能、低功耗、可扩展 存储器 、低引脚数目、封装可选及支持电容式触摸优势。SAM3N系列产品拥有开发工具、软件,系统内编程功能,以及来自ARM第三方生态系统网络的支持,兼具高性能和使用简便的优势。 爱特梅尔SAM3N和SAM3S系列是首款可提供按键、
[工业控制]
STM32配置时钟时注意设置FLASH等待周期
兴致勃勃地把复位及时钟控制(RCC)的寄存器定义写完了,没得午觉睡倒算了,还累得满头大汗 看来这事有点吃力不讨好,真想用别人现成的头文件算了,最后还是咬咬牙自己写吧,至少可以让自己对寄存器结构熟悉一些。 傍晚回来再写个测试程序,满以为一次就OK的,可是调试时却发现,运行到选择PLL时钟后程序就跑飞 顿时就傻眼了 检查各个寄存器配置,似乎没什么问题啊:选择外部8M时钟,不分频输入到PLL,设置PLL为9倍频(注意实际写入到寄存器中为7),AHB、ABP2不分频,ABP1为2分频(注意设置为8才是2分频),都没有超过最大频率啊。看来想要搞个72M的主频遇到麻烦了 试着将倍频降下来,当主频为48M时,系统可以正常工作了,莫
[单片机]
【飞思卡尔 MC9S12】内部D-Flash模拟EEPROM
上一篇讲到内部Flash的读写,本篇讲述使用D-Flash模拟EEPROM。其实使用P-Flash也可以模拟,只不过D-Flash的Page更小(擦除复写占用更少时间),而且不会占用代码空间。 最近刚换工作,一直比较忙,更新会比较慢。若是需要源码可自行下载:https://download.csdn.net/download/u010875635/11435913 没有积分可以自己新建工程,下面的代码基本可以直接使用。 本篇关于Flash读写就不在赘述,跟PFlash除了Sector大小和指令不同,其余一致,后面直接贴出代码。 模拟EEPROM其实就是模拟其单字节读写功能,原理就是要修改某个Sector内某个字节的
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved