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

发布者:SerendipityGlow最新更新时间:2024-04-18 来源: elecfans关键字:国民技术  N32  操作流程 手机看文章 扫描二维码
随时随地手机看文章

前言

目前大形势影响,芯片价格日益上涨,采购周期变长,导致国产芯片替代进口芯片成为大趋势,该文章记录了使用国民技术的N32替换STM32的操作流程。


话不多说,上步骤。

一、工程配置

1.安装硬件库

硬件库为厂家提供的资料,如下图所示,双击安装,使得keil能够找到该芯片。

82505ce6-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.更改J-Flash配置

由于Keil官方没有对该芯片的支持,所以J-Link下载时也无法找到该芯片,所以需要手动添加芯片。更改步骤官方提供有说明文档。

826062d0-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

主要步骤是:

修改JLinkDevices配置文档

添加Nationstech的下载算法文件

添加Nationstech的JFlash 工程文件

添加解锁Nationstech芯片读保护L1 等级的应用程序

进行如上步骤后,启动J-Flash就能够扫描并连接到芯片,但是有可能keil链接的J-Flash和安装的J-Flash不是一个路径,所以将配置好的J-Flash文件替换keil下Keil5ARMSegger目录文件,就能够正常下载调试。

3.更改芯片

826d54ea-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

4.添加驱动文件

将N32的底层驱动库拷贝到工程目录下,并将include路径添加进去。

827ab0ea-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

828ba616-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

5.更改全局变量

829a4176-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

6.将启动文件和驱动文件替换为N32库文件

82a5ee40-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

7.将所有的stm32l1xx替换为n32g45x

二、底层驱动函数接口对照表

更改代码,将STM32的驱动函数替换为N32的驱动函数,这部分比较繁琐,需要慢慢替换,下面是我整理的替换对照表。

82bde5d6-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

82d6e93c-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

82eb5c28-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

三、踩坑记录

经过上面的替换,应该可以编译过去了,但是这指示开始,后面悲剧的踩坑大战才刚刚开始。

1.仿真卡死

程序仿真卡死,单步调试发现卡死在OSInit()函数里面,这个函数是OS的初始化函数,所以应该是OS配置的问题,排查下来发现是启动文件里面的OS启动项没有更改,更改如下:

82f76d9c-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

2.DMA配置出错

程序能够进入到任务中后,调试发现无法进入到串口接收中断,但是示波器中有数据,而且中断都没有进入,应该是卡死在优先级高的中断中,排查发现,是DMA发送中断的配置有问题,导致一直卡死在DMA中断中。下面是DMA部分的配置。

8304fcb4-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

8311bfee-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

3.Flash配置

由于国民芯片和STM32芯片的FLASH划分有区别,所以FLASH的替换是比较费事的部分,先对比一下两个片子的区别:

STM32L151的flash部分:

832479ea-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

N32G455芯片的flash部分:

8331e5c6-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

可以看出STM32单独有EEPROM的划分,而N32是没有的,只有flash部分。所以要注意两点:

Flash空间的问题,STM32可用空间要比N32的空间大;

底层接口函数,STM32有操作EEPROM的函数,而N32没有,只能使用flash操作函数。

下面是flash部分的操作:

834548b4-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

4.bootloader移植

由于本项目采用bootloader引导主程序的方式,因此要注意烧写空间的配置,配置点在下面位置:

8356fa64-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

当单独调试其中的程序时,烧写程序需要将整个flash擦除,要不运行不正常。

5.OS初始化卡死

又遇到程序卡死问题,这次是主程序,而且主程序起始地址为0x8000000时单独运行良好,但是改成0x8007000用bootloader跳转过去就卡死,也是卡死在OS的初始化中。因为单独运行良好,所以排查起来困难些。最终定位是堆栈和堆的空间设置太大了,设置小了后就可以运行。更改该空间的位置如下:

8363fdd6-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

而且问题还不是堆栈的空间不够用,是空间设置太大了。有点无语。

6.程序跳转后运行不正常

这是最后的问题,程序能够从bootloader跳转,但是运行不正常,咨询了厂家技术人员,技术人员反馈可以采用分散加载的方式进行排查,也就是让芯片直接在主程序烧录的位置启动,分散加载的教程网上比较多,主要需要设置烧录域和启动域地址,还有VTOR寄存器

配置如下所示:

8379a4ce-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

需要编写*.ini文件更改VTOR,ini文件编写如下:

838639d2-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

在keil中加载,使得软件启动后先配置单片机

8390a552-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

配置好后可以实现分散加载,能够是程序在烧录位置启动,发现程序分散加载可以运行正常,但是bootloader跳转不正常,因此需要排查跳转部分的问题。最终定位STM32在主程序启动时不会重启向量表,而N32会重启向量表,在主程序启动位置更改如下:

83a6a50a-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000

跳转部分代码如下:

83b78492-c446-11ec-bce3-dac502259ad0.png?imageView2/2/w/1000


关键字:国民技术  N32  操作流程 引用地址:使用国民技术的N32替换STM32的操作流程

上一篇:STM32之SD卡内部结构简图
下一篇:STM32三种开发方式及其区别

推荐阅读最新更新时间:2026-03-23 23:42

ch32f103c8t6替换stm32可以吗
首先,让我们来了解一下这两个芯片。STM32是意法半导体公司推出的32位ARM Cortex-M系列单片机,它具有高性能、低功耗和广泛的外设集成等优点,被广泛应用于各种嵌入式应用领域。而CH32F103C8T6是国产的32位ARM Cortex-M3核心的单片机,也具有类似的性能和功能,但是价格更加亲民。 那么,是否可以用CH32F103C8T6替换STM32呢?答案是取决于具体的应用场景和需求。 首先,从硬件方面来看,这两个芯片具有类似的外设集成和引脚布局,因此在一些简单的应用场景下,它们可以相互替换。但是,在一些对性能和稳定性要求比较高的应用中,比如高速通信、实时控制等,使用STM32更加稳定可靠。 其次,从软件方面来看,这两
[单片机]
STM32替换Arduino直通车
前言 众所周知,用Arduino进行开发简单快捷,一个项目能很快的做好,而Arduino相比STM32,贵且性价比也很低,Arduino Uno可用的针脚也少得可怜,怎么办?换做STM32吧!STM32高性能,STM32的最小系统版价格很低,对我这种穷学生来说是福利啊!于是我兴致勃勃的淘了STM32的最小系统版准备入坑STM32。 可接下来我就要下载各种各样的软件进行编程,烧录,写个最简单的Blink程序都非常麻烦,折腾我一天。 要是能像Arduino一样简单方便快捷就好了,怎么办呢?那么现在正式开始教程! 所需工具 STM32最小系统板,配套数据线,20元以下的就可以了。 Arduino(不是必须,但如果你不想买USB转
[单片机]
<font color='red'>STM32</font><font color='red'>替换</font>Arduino直通车
GD32和STM32有何区别?GD32如何替换STM32呢?
GD32和STM32是两种不同的微控制器系列,一般被用于嵌入式系统开发。GD32是中国华大基因(Gigadevice)公司开发的微控制器,而STM32是瑞士意法半导体(STMicroelectronics)公司开发的微控制器。 首先,我们来看一下GD32和STM32在技术规格上的区别。GD32系列采用了中国自主研发的ARM Cortex-M3和Cortex-M4内核,而STM32系列则采用了瑞士意法半导体公司的ARM Cortex-M系列处理器。从处理器性能和架构上来看,两者基本上是相似的。然而,由于GD32系列是后来者,它在一些方面对原有的STM32系列做了一些改进和增强,例如增加了更多的外设和功能模块。 其次,GD32和STM
[单片机]
空调系统工作原理 冷水机组的开关机操作流程
一、空调系统工作原理 在蒸汽压缩制冷系统中,压缩机、冷凝器、节流装置、蒸发器是必不可少的四大件。 蒸发器:输送冷量设备,制冷剂在其中吸收被冷却物体的热量实现蒸发制冷; 压缩机:制冷系统的心脏,起着吸气、压缩、输送制冷剂蒸汽的作用; 冷凝器:放出热量的设备,将蒸发器中吸收的热量连同压缩机功耗所转化的热量一起传递给冷却介质; 节流装置:制冷剂起节流降压作用,同时控制和调节进入蒸发器中制冷剂液体的数量,并将系统分为高压侧和低压侧两大部分。 实际制冷系统中,除上述四大件之外,还有一些辅助设备,如: 电磁阀; 单向阀; 分配器; 干燥过滤器; 温度传感器; 压力控制器; ......... 等部件,它们是为了提高制冷空调系
[嵌入式]
空调系统工作原理 冷水机组的开关机<font color='red'>操作</font><font color='red'>流程</font>
ATX-3000线束检测仪操作流程
随着技术的发展,越来越多的线束生产厂商开始使用高效线束测试仪设备对线束进行检测。不同的行业对线束可靠性的要求不同,所以测量的项目也不同。另外,企业对线束测试仪的检测速度﹑检测容量和通用性的要求越来越高。因此,需要一种具备自学习功能,并且检测容量大、操作简单、智能化的线束自动测试设备具有十分重要的意义。 今天给大家介绍的是ATX-3000线束测试仪Demo演示,本期所使用的到的仪器有:ATX-3000线束测试仪、排线、演示Demo版、(可顺序模拟PINTOPIN、乱序、断线、乱序加断线、等不同线束情况) 接下来连接仪器准备实验,连接完成开始测试。 首先进行线束的通断模拟测试。 点击主界面的分段测试,测试选项选择自学习通断测试,起
[测试测量]
ATX-3000线束检测仪<font color='red'>操作</font><font color='red'>流程</font>
机器人曲线焊缝的操作流程
在大型铝合金航天器结构中,存在大量复杂形式的焊缝,如球形、圆柱形、圆台壳体与圆形、异形法兰形成的相贯线等。载人飞船、目标飞行器、军用卫星、月球探测飞行器等舱体结构都不同程度地涉及到这类形式焊缝的问题。目前大多靠手工钨极来完成这类曲线焊缝的焊接。存在如下问题: ①反复补焊影响产品研制进度。手工焊容易出现缺陷,排除缺陷和补焊的效率往往牵制结构的研制进度; ②热输入量大,焊接残余水平高,容易导致产品尺寸超差; ③新一代长期在轨航天器密封舱体要求在轨寿命十五年以上。手工钨极氩弧焊工艺焊接热输入量大,焊缝显微组织粗大,焊缝残余应力较大,应力腐蚀倾向严重,该工艺已不适应航天器结构长寿命、高可靠的制造需求。 跟踪具有信号处理
[机器人]
U-tron发布自动停车方案 采用机器人操作完成停车流程
外媒报道,Unitronics发布了U-tron新事业部,旨在提供首款以客户为中心的应用控制型自动停车方案。 U-tron正在打造Unitronics业内领先的、经现场验证的停车系统,可提供非凡的用户体验,利用iPhone或安卓手机应用,为驾驶员提供无缝式进程、采用了额外的设计空间及研发人员,为当今房地产买家提供最新款便利设施。 U-tron自动停车方案的操作进程快捷而简便,当驾驶员进入停车场后,该系统会引导驾驶员到置指定位置,该进程耗时仅为20秒。当抵达指定位置后,驾驶员就可以下车了,并利用手机应用(或其他凭证)亦或是抽出停车券来激活停车进程。随后,利用先进的软件算法来控制一组机器人,确保车辆的安全停放。 此外,用户还能利用应
[机器人]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved