使用国民技术的N32替换STM32的操作流程

前言
目前大形势影响,芯片价格日益上涨,采购周期变长,导致国产芯片替代进口芯片成为大趋势,该文章记录了使用国民技术的n32替换stm32的操作流程。
话不多说,上步骤。
一、工程配置
1.安装硬件库
硬件库为厂家提供的资料,如下图所示,双击安装,使得keil能够找到该芯片。
2.更改j-flash配置
由于keil官方没有对该芯片的支持,所以j-link下载时也无法找到该芯片,所以需要手动添加芯片。更改步骤官方提供有说明文档。
主要步骤是:
修改jlinkdevices配置文档
添加nationstech的下载算法文件
添加nationstech的jflash 工程文件
添加解锁nationstech芯片读保护l1 等级的应用程序
进行如上步骤后,启动j-flash就能够扫描并连接到芯片,但是有可能keil链接的j-flash和安装的j-flash不是一个路径,所以将配置好的j-flash文件替换keil下keil5armsegger目录文件,就能够正常下载调试。
3.更改芯片
4.添加驱动文件
将n32的底层驱动库拷贝到工程目录下,并将include路径添加进去。
5.更改全局变量
6.将启动文件和驱动文件替换为n32库文件
7.将所有的stm32l1xx替换为n32g45x
二、底层驱动函数接口对照表
更改代码,将stm32的驱动函数替换为n32的驱动函数,这部分比较繁琐,需要慢慢替换,下面是我整理的替换对照表。
三、踩坑记录
经过上面的替换,应该可以编译过去了,但是这指示开始,后面悲剧的踩坑大战才刚刚开始。
1.仿真卡死
程序仿真卡死,单步调试发现卡死在osinit()函数里面,这个函数是os的初始化函数,所以应该是os配置的问题,排查下来发现是启动文件里面的os启动项没有更改,更改如下:
2.dma配置出错
程序能够进入到任务中后,调试发现无法进入到串口接收中断,但是示波器中有数据,而且中断都没有进入,应该是卡死在优先级高的中断中,排查发现,是dma发送中断的配置有问题,导致一直卡死在dma中断中。下面是dma部分的配置。
3.flash配置
由于国民芯片和stm32芯片的flash划分有区别,所以flash的替换是比较费事的部分,先对比一下两个片子的区别:
stm32l151的flash部分:
n32g455芯片的flash部分:
可以看出stm32单独有eeprom的划分,而n32是没有的,只有flash部分。所以要注意两点:
flash空间的问题,stm32可用空间要比n32的空间大;
底层接口函数,stm32有操作eeprom的函数,而n32没有,只能使用flash操作函数。
下面是flash部分的操作:
4.bootloader移植
由于本项目采用bootloader引导主程序的方式,因此要注意烧写空间的配置,配置点在下面位置:
当单独调试其中的程序时,烧写程序需要将整个flash擦除,要不运行不正常。
5.os初始化卡死
又遇到程序卡死问题,这次是主程序,而且主程序起始地址为0x8000000时单独运行良好,但是改成0x8007000用bootloader跳转过去就卡死,也是卡死在os的初始化中。因为单独运行良好,所以排查起来困难些。最终定位是堆栈和堆的空间设置太大了,设置小了后就可以运行。更改该空间的位置如下:
而且问题还不是堆栈的空间不够用,是空间设置太大了。有点无语。
6.程序跳转后运行不正常
这是最后的问题,程序能够从bootloader跳转,但是运行不正常,咨询了厂家技术人员,技术人员反馈可以采用分散加载的方式进行排查,也就是让芯片直接在主程序烧录的位置启动,分散加载的教程网上比较多,主要需要设置烧录域和启动域地址,还有vtor寄存器,
配置如下所示:
需要编写*.ini文件更改vtor,ini文件编写如下:
在keil中加载,使得软件启动后先配置单片机:
配置好后可以实现分散加载,能够是程序在烧录位置启动,发现程序分散加载可以运行正常,但是bootloader跳转不正常,因此需要排查跳转部分的问题。最终定位stm32在主程序启动时不会重启向量表,而n32会重启向量表,在主程序启动位置更改如下:
跳转部分代码如下:
csdn德玛西亚吴彦祖
原文链接:https://blog.csdn.net/zhang421412170/article/details/116779169


便携式atp荧光检测仪产品介绍
梯度科技打造以用户为中心的智慧运维平台
国产手机续航哪家强?小米MAX2夺冠,华为Mate9次之、一加5排第三
上海立法禁止电动自行车在楼道充电
高精度、高可靠性、可引线接合安装的NTC热敏电阻
使用国民技术的N32替换STM32的操作流程
华为Mate10什么时候上市?华为Mate10最新消息:骁龙835+第三代徕卡双摄+麒麟970,华为首款四摄像头?
RS232接口和RS485接口的区别
Vishay推出新款193 PUR-SI Solar系列卡扣式功率铝电容器,提高额定电压
BIOS开发笔记:CMOS简介
集成电路的纳米新线推动上海先进制造业能级大提升
影响蓄电池性能的技术因素
通过利用DC微电网提高智能能源效率
台积电新增1500多个招聘职位 拟全力推进5纳米制程
锂电池可以用直流稳压开关电源充电吗?
同茂直线电机的分类和选型
高利润核心零部件基本由外资企业垄断
电源设计的10阶段测试小贴士
三星显然正在努力提高其5nm EUV产量
微软放在支架的太阳能电池板专利