历史上的今天
返回首页

历史上的今天

今天是:2025年03月18日(星期二)

正在发生

2019年03月18日 | STM32F103C8T6有128K的Flash

2019-03-18 来源:eefocus

一 序:

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结束地址以后的内容,你肯定有收获的;


推荐阅读

史海拾趣

CML公司的发展小趣事

面对日益增长的市场需求,CML开始积极寻求市场扩张的机会。公司通过与各大电子产品制造商建立合作关系,将自己的产品广泛应用于电视、手机、电脑等消费电子产品中。同时,CML还积极开拓新兴市场,如汽车电子、工业控制等领域,不断扩大自己的市场份额。这些策略的实施,使得CML的业绩逐年攀升,公司规模不断壮大。

Degson Electronics Co Ltd公司的发展小趣事

在电子连接器领域取得成功后,Degson开始寻求多元化发展,并逐步拓展到其他相关行业。公司利用自身在电子连接器领域的技术优势和经验积累,成功开发出了一系列应用于工业自动化、仪器仪表、电梯、电力电气等领域的电子产品。这些新产品不仅丰富了Degson的产品线,还进一步扩大了公司的市场份额和影响力。通过多元化发展,Degson在电子行业中的地位得到了进一步巩固和提升。

Decawave公司的发展小趣事

Decawave公司成立于2007年,总部位于爱尔兰都柏林。成立之初,公司就专注于超宽带(UWB)技术的研发。在初创阶段,Decawave面临着技术难度大、资金紧张等挑战。然而,凭借对UWB技术的深入理解和研究,公司成功开发出了具有高精度定位能力的UWB芯片,这一技术突破为Decawave在电子行业中赢得了声誉。

Eagle Plastic Devices公司的发展小趣事

Eagle Plastic Devices公司成立于20世纪90年代初期,当时市场上对于高性能塑料电子部件的需求日益增长。公司创始人张先生,凭借其在塑料材料科学和电子工程领域的深厚背景,带领团队研发出了一系列具有革命性的塑料电子封装和连接器产品。这些产品以其优异的电气性能、耐用性和成本效益,迅速在行业内获得了认可,为Eagle Plastic Devices公司奠定了坚实的基础。

Eaton公司的发展小趣事

除了能源管理领域外,伊顿公司还在商用车领域取得了显著成就。自1985年首次将技术引进中国以来,伊顿的变速器产品已经进入中国市场30多年。通过与国内各个商用车生产企业的紧密合作,伊顿成功地将其先进的变速器技术应用于各种商用车型中,提高了车辆的燃油经济性和驾驶舒适性。特别是在物流行业,伊顿的变速器产品帮助车队降低了油耗成本,提高了运营效率。

Cooper Industries公司的发展小趣事

随着市场需求的不断变化,Cooper Industries不断通过收购来扩大其业务范围和提升技术实力。例如,在2008年,公司宣布收购了三家公司:Sure Power Industries、OMNEX Control Systems和Roam Secure。这三家公司在各自的领域都有着丰富的经验和卓越的技术,收购后极大地增强了Cooper在电力系统管理、无线电远程控制以及文字报警、区域警示系统等领域的能力。这些收购不仅使公司的产品线更加丰富,也为其在全球市场的竞争提供了有力武器。

问答坊 | AI 解惑

谁有iccv7 for avr注册机

谁有iccv7 for avr注册机,发一下,谢谢!…

查看全部问答>

串口发送数据格式

现在要用软件方式模拟方式向单片机的串口 发送数据.   就是我在程序中向一根线写数据(位) 请问串口的数据线的格式定义是怎么. 采用的是波特率是9600. 8位数据位. 1位停止位. 比如说:我一要向该线写数据0xA5B6(10100101)(10110110) ...…

查看全部问答>

那个用vs2005写过wince下的串口通信程序!!!!

我要用VS2005写一个wince下的串口通信程序, 用的是CreateFile   WriteFile   ReadFile   谁有示例代码,能贴出来吗? 恼火的很搞了很久了就是有问题!!!…

查看全部问答>

我也小谈一下PID 见笑了 呵呵

  今天在看到有人求助PID,结果楼下下吵了起来,小弟课设无聊,正好有一点认识就发上来也欢迎大家给予指正,在此拜谢。还有小弟不大爱打标点,先道歉了。     回复原文如下:         &n ...…

查看全部问答>

edma3和CPU同步

使用dma方式接收uart的数据,uart产生接收事件到DMA,EDMA一次搬运一个字符产生一个中断。假如PC那边发来字符串\"abcd\",EDMA产生4个中断。我原意是将这个4个字符复制到另一个缓冲。可是复制过去全是\"dddd\"。分析了一下,可能是EDMA搬运的速度过 ...…

查看全部问答>

CCSv3.3加载程序时,弹出警告

CCSv3.3加载程序时,弹出如下警告…

查看全部问答>

反馈环上增加反馈电阻的对数放大电路

该电路在经典的对数放大器的反馈环上增加了一个反馈电阻R10,不知道该如何分析该电路的输入输出特性?…

查看全部问答>

PIC24HJ128GP204发生非预期的软件复位

我在使用PIC24HJ128GP204,发现程序在休眠状态下会被复位,仿真发现复位后RCON的值是0x48,即发生了软件复位,但我的程序中并没有调用过RESET指令。有大侠遇到过这样的问题的吗?求解…

查看全部问答>

单片机蜂鸣器报警程序,总是不能运行

主函数是超声波测距函数,我想加个报警程序,距离30-50蜂鸣器响,距离30一下蜂鸣器响(频率加快)。我现在运行是,只能刷新一遍距离,第二次就卡住了,是不是distance没有读取到beep函数 程序如下(节选) //延时void delay_1ms(uint m){  ...…

查看全部问答>