[导读]前言手里有几个STM32F103RET6应用的板子,整天被采购问询是否能用国产替代,成本快搂不住了。这次又拿了HK的样片,作为替代,尝试一下。开始没做任何修改,程序下载了就跑起来,让我还抱怨了一番,感觉是不是拿错片子了。后面静下心来,详细测试了使用的各功能模块,还是有点小问题的,...
前言
手里有几个STM32F103RET6应用的板子,整天被采购问询是否能用国产替代,成本快搂不住了。这次又拿了HK的样片,作为替代,尝试一下。
开始没做任何修改,程序下载了就跑起来,让我还抱怨了一番,感觉是不是拿错片子了。后面静下心来,详细测试了使用的各功能模块,
还是有点小问题的,不过非常好修改,作为应急替代使用,应该问题不大。所以,补写个序,告知下本次替代容易至极,如果有同样需求,放心大胆的干吧!
随之而来的悲催就是,这几天的工作就大部分的成了拍照,留念,技术内容并不是很多,有ST使用的底子,基本上不需要强制查阅手册之类的文档,完全无压力。本来准备好的替代步骤,技术攻坚,变成了如下的“旅游回忆录”。1. 先把芯片换了再说
换之前,先留个ST的影像,一会就换了它。
换好了,拿回办公位,我的焊工还算可以吧。只是酒精干了,杂质没有清理干净,引脚有些发白。
准备就绪,后面怎么办?网上说的那么的神,直接烧ST的程序,行不行?2. 直接原ST程序直接烧写
我无语,直接烧写原ST的程序,不做任何修改,居然能跑起来?那我还玩什么?
都准备好一顿操作了,结果,给我直接憋在了开始~~~~红色电源指示,蓝色闪烁程序运行指示。
是我出现幻觉了么?这是第一次接触航顺啊,怎么可能这么的顺利。
打开MDK,来确认下眼神,确实把ST的程序,烧到了HK的片子里,直接就跑起来。本来是打算挑挑毛病的呢……
好吧,既然事实已经如此,那么回过头来,看看当初STM32里到底使用了哪些资源。整个程序基于HAL库,硬件初始化部分。
程序是同事开发的,我当前只是尝试验证是否满足芯片替代的条件,程序开发的过程中,兼容了一些产品,初始化的资源,比实际使用的多一点,下面验证下使用到的模块是否正常。
GOIO:PC13DMA1: 后来程序测试的过程中,发现并没有使用DMAADC1: ADC_CHANNEL_9 , ADC_CHANNEL_10,ADC_CHANNEL_11USART: COM1 COM4Timer(PWM) : TIM3SPI2:这个实际没有用到,作为预留功能的。DAC: DAC_CHANNEL_13. 既然程序跑起来了,突然觉得没事干了,验证下当前使用的资源,工作是不是正常吧。
3.1 IO输出(PC13)
直接看程序运行状态指示,闪烁频率正常。 还用到了其他IO,单纯的IO使用,问题不大。
3.2 串口
数据收发正常。
3.3 DAC输出检测
电压输出可控,正常。(开始着急了,这也正常?都正常我去哪找毛病?)实测DAC输出正常,但是在HK的应用笔记中,找到如下注意事项,我想,在应用中,还是参考下应用笔记吧。
3.4 ADC检测
开始没注意,一看ADC采样有数据,貌似正常,差点溜过去。但是,我用了9,10,11三个通道。那么,问题来了,我之前的采样顺序是10,9,11,实际测试发现,通道顺序乱了,导致我的采样数据也乱了。
哈哈,终于找到了毛病,可以发泄和吐槽~~~直到这里,才刚刚开始找HK的资源。先换HK的pack,编译尝试一下,设置和芯片选择如下:
选M3至此,编译下载,问题没有解决,不是PACK包的事。接着在在HK的应用笔记中,看到了对多通道ADC使用的过程中的一些描述。
那么好,按照应用笔记试试,加延迟。结果,哎,不是我想要的结果啊,这下只能靠自己了~可别让我丢人啊~~还有哪里呢?既然是通道顺序乱了,那么,ADC初始化里~至此,更改完之后,ADC几个通道采样值正常了!!缓口气,前面吹了半天,差点掉链子~
但是讲真,我还没搞明白为什么,还特意的找个ST的板子验证了下,用ST的片子,我之前的设置没有问题,用HK的,要改一下,哪位大神,调试过ADC,还望指点~
这个后面,再看看HK的手册,既然当前adc的值正常了,这里先跳过了。3.5 没耐性了,基本用到的模块也都简单验证了,直接装到整机里,看看效果。替换原设备位置,整机检验,工作2h,设备状态稳定~~~~ 暂且认为替代成功,后面的验证,交给质量部门。3.6 忽悠忽悠同事,换到他的板子上试试。
由于替代比想象的容易,又扔给同事,把芯片换到他的板子上,反馈我的信息是:
1、程序直接下载就能用,2、串口,定时器没问题,3、有个i2c的器件,读不到数据(程序中使用了硬件i2c,这个应该不叫事,应用笔记中有提到,实在不行IO模拟也能解决。)4. 浏览航顺官网
貌似都完事了,官网都没有打开,有点不合适。也禁不住那个懒惰的小精灵,在头上叫着“是不是可以用ST去开发,然后简单修改就好了?”
但是,我要让那个勤劳的小精灵获胜,还是要回到官网去看看~~
http://www.hsxp-hk.com/companyfile/23/
在这里下载F103的PACK包,同时可以根据自己的需求,下载用户手册和数据手册。航顺官网做的还是很工整的,资料很好找。
选型表,这个很多人会问,不用的时候,啥用没有。想找一找的时候,又找不到。记得顺便存一下,或者联系技术支持聊聊天。
后面应该会一点点的过度好航顺的库上去,毕竟用谁家的东西,就要用谁家的“灵魂”嘛。5. 小结
或许是使用的资源有限,或许是运气好。替代过程,非常的容易,基本上没有过多的查看HK的手册和应用笔记。程序直接下载就能跑起来,功能模块详细测试时,发现adc多通道采集时,通道采集顺序与预期不符,也是简单修正初始化部分,就能正常。
感觉如果产品已经定型,寻求芯片替代的话,真的可以考虑,硬件不用修改,软件测试下功能模块就好了,要求严格的话,测试下整机和环境适应性,应该问题不大。在测试过程中,选用ST和HK的pack进行编译,暂时没有发现不适应的状态,不过,我这里是初步测试,应急使用可以参照,后期替换的过程中,应该会慢慢的转到HK的库上来。
-END-我是张巧龙,一名教电子的大学老师,欢迎关注!
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
在嵌入式系统工程领域,主要挑战在于在严格的时间约束下实现任务的确定性执行。微控制器通常需要同时执行复杂的数学运算,并管理高频的输入和输出。如果采用简单的定时方法,例如使用阻塞式的忙等待循环,常常会导致处理器饥饿问题,即一...
关键字:
信号发生器
嵌入式系统
STM32
本实验活动重点在于利用微控制器的模数转换器(ADC)外设来监测外部电压源。具体而言,该系统设计用于测量CR1220纽扣电池和5V USB总线供电电源的电压。对这些电平进行监测对于依赖电池作为备用电源的嵌入式系统非常有用,...
关键字:
电压分压器
噪声滤波器
STM32
本项目展示了我们在固件编程方面的初步工作。我们开发该项目,旨在通过实践操作更好地理解课程中的概念和应用。我们的项目名为“电子音调发生器”,通过一个小扬声器产生不同的声音。按下不同的按钮或组合按键,系统会生成不同频率,从而...
关键字:
扬声器
音频合成器
示波器
STM32
嵌入式系统,STM32内部Flash的擦写寿命始终是悬在开发者头顶的达摩克利斯之剑。STM32F103系列Flash典型擦写次数仅为10000次,若每次温度调整、参数变更都直接写入,按每日操作数十次计算,不足一年便逼近寿...
关键字:
STM32
Flash
电池供电的物联网设备中,降低待机功耗是延长续航的核心课题。STM32的Stop模式提供了保留SRAM和寄存器内容的最低功耗状态,是实现“微安级待机、毫秒级唤醒”的关键技术。实测数据表明,STM32L4系列在Stop 2模...
关键字:
STM32
低功耗
一切始于一个我不断在身边发现的常见问题——无论是亲密的朋友,还是我在健身训练的健身房圈子中。经过数周高强度的锻炼后,很多人都在问同一个问题:“我想要增肌的肌肉为什么没有增长,而那些我本意没想练的肌肉却反而变得酸痛?”
关键字:
可穿戴设备
机器学习
STM32
在STM32嵌入式控制中,PID控制器是温度、电机转速、平衡小车等闭环系统的核心算法。本文提供一份可直接移植的增量式PID代码模板,并分享工程中行之有效的参数整定方法。
关键字:
STM32
PID控制器
在STM32软件开发中,ST官方提供两套固件库:HAL(Hardware Abstraction Layer)与LL(Low-Layer)。很多工程师困惑:两者除了API风格不同,运行效率和资源消耗究竟差多少?本文基于S...
关键字:
STM32
HAL库
LL库
本项目是一个专为RT-Thread RT-Spark开发板设计的硬件与软件定制接口。它创建了一个交互式系统,通过物理输入(按钮)产生数字输出(LCD文本和LED信号)。通过连接外部面包板组件与开发板内置功能之间的桥梁,我...
关键字:
LCD
LED
STM32
在STM32嵌入式开发中,精确延时是非常基础但又极其关键的功能。无论是驱动单总线传感器(比如DS18B20)、控制LCD屏幕时序、还是生成精确的脉冲信号,都需要用到微秒级甚至纳秒级精度的延时。很多新手刚开始使用STM32...
关键字:
STM32
嵌入式
在STM32嵌入式开发中,RAM(随机存取存储器)是程序运行时存储动态数据、堆栈、全局变量的核心资源,直接决定了程序能实现的功能复杂度。很多开发者都遇到过莫名的程序崩溃、硬件异常,追根溯源往往是RAM分配错误、占用溢出:...
关键字:
RAM
STM32
在嵌入式STM32开发中,程序崩溃是开发者最常遇到也最头疼的问题之一:程序运行中突然跑飞、进入HardFault中断,开发者往往只能靠加打印猜位置,排查一个bug可能需要几天时间。这时候,Backtrace功能就像是嵌入...
关键字:
嵌入式STM32
STM32
当一个项目需要在STM32上运行FreeRTOS时,摆在工程师面前的不止一条路。STM32CubeMX图形化配置工具的出现,让RTOS的集成从“手工作坊”变成了“流水线作业”。但这是否意味着传统的手写移植已经过时?答案并...
关键字:
STM32
FreeRTOS
一块STM32G431、三颗IRFS7530 MOSFET、两个1mΩ采样电阻——这就是一台20A无人机电调的全部硬件。但从上电到电机平稳空转,中间隔着寄存器配置、ADC同步触发、Park变换、PI调参、SVPWM生成五...
关键字:
STM32
无人机
FOC电调
该项目是一个基于 RT-Spark STM32 开发板的实时、裸机硬件接口。它充当了一个交互式的控制面板,将物理世界与数字世界连接起来。通过读取来自一个 5 个方向操纵杆的输入,该系统会立即触发数字逻辑来控制外部独立的...
关键字:
液晶显示屏
FSMC
开发板
STM32
在工业现场,Modbus凭借其简单性成为事实标准。在STM32上实现Modbus,核心难点在于RTU帧同步与TCP粘包处理。本文将基于FreeModbus库,详解STM32上Modbus RTU与TCP的完整实现,并提供...
关键字:
Modbus RTU
TCP协议
STM32
在STM32开发中,HAL库(Hardware Abstraction Layer)与LL库(Low-layer)的选择常引发争议。HAL库开发快但体积大,LL库性能强但更底层。本文通过实测数据对比两者差异,并提供工程级...
关键字:
STM32
HAL库
LL库
在嵌入式实时系统中,任务切换速度是衡量RTOS实时性的核心指标。标准FreeRTOS在STM32F4系列上的任务切换时间通常在10-20微秒级别,但对于电机控制、高速通信等应用,这仍显不足。本文将探讨如何通过深度内核裁剪...
关键字:
RTOS
STM32
FreeRTOS
裸机
在资源受限的嵌入式场景中,传统RTOS的复杂架构往往成为性能瓶颈。本文将介绍一种基于STM32的极简RTOS内核实现方案,通过精简设计达到微秒级响应,同时保持代码量在2KB以内。
关键字:
裸机开发
STM32
RTOS内核
在物联网设备、可穿戴设备等电池供电场景中,微安级电流优化是延长续航的核心挑战。以STM32L4系列(典型工作电流200μA/MHz)和ESP32为例,其停止模式(Stop Mode)和待机模式(Standby Mode)...
关键字:
STM32
低功耗实战
物联网