STM32
直播中

杜喜喜

7年用户 1486经验值
私信 关注
[问答]

STM32F103C8T6串口IAP为什么会不成功呢

STM32F103C8T6串口IAP为什么会不成功呢?怎么去解决这个问题呢?

回帖(1)

李海玮

2021-12-6 10:59:16
STM32F103C8T6串口IAP 不成功问题梳理


前言(一定要看)

这篇文章是我在进行STM32串口IAP过程中遇到的一些问题以及解决办法,网上找一直也没找到,就只好自己写一篇,来供大家参考。我用的是正点原子的STM32F103ZET6的程序修改为STM32F103C8T6的。
注意:这篇文章不是教程,教程网上已经有很多了,这里不在啰嗦了,只是问题的总结,以此共勉!!!
1.启动文件的问题

因为我是ZET6的芯片,所以是大容量的芯片,之前做了很多程序这里不改也不会有问题,原因可能就是我的程序太小了,还没有可以到Flash或者是RAM有冲突的区域,这一次之前也没有改,但是APP也能成功运行,就是运行结果不对,(比如说:我的APP是串口输出一个01,但是通过IAP下载到芯片里面就成为了一个0C)这个原因就是我的启动文件选择没有改成md
2.APP的地址问题

这个相信网上面的答案也已经非常的详细了,就是Bootloader的地址和APP的地址要做一个连接,和向量表的跳转
3.APP的大小问题

我是自己做了一个上位机来下载程序的,发现APP到了一定的大小下载之后就会有问题,我查看程序发现,C8T6设置大于15K的程序接收缓存就会崩溃




这个原因是因为我用的C8T6的RAM只有20K,这个缓存是从





这个地址开始的,也就是说有4K不是我们用的,加上我们的15K和Flash写入的时候缓存的一个1K的变量也就到了20K,所以我们这样是没有办法下载大的APP的,那怎么办呢?有以下两个解决方案
1.直接一点更换一个大容量的芯片
2.片外加一个Flash,可以通过通讯接口把程序放进去,要用的时候,把他复制到内部的Flash处,就可以省掉一些内部的缓存空间
4.使用QT TCP协议下载程序的小伙伴注意

1.TCP传输文件的时候注意传输文件的大小
2.还有要注意你的BootLoader是否接受分段的传送,还是一次性的接受APP代码。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分