[应用方案]

国产MCU之光 第38期 “我与极海APM32 MCU的故事”获奖作品精选

[复制链接]
2419|2
手机看帖
扫描二维码
随时随地手机跟帖
21ic小能手|  楼主 | 2022-12-21 13:46 | 显示全部楼层 |阅读模式
国产MCU之光 第38期“我与极海APM32 MCU的故事”获奖作品精选

**.jpg

*阅读说明:排名不分先后,详细过程及源码资料等请戳原链接查看


1、前言
作为一个DIYer,我囤的“小芯库”是见底了。一个应用方案或开发板上用一颗甚至好几颗MCU的奢侈年代已经一去不复返,但也因此萌生了使用国产优质芯片做“核心模块板”的想法。
拿到前不久申请的几颗极海APM32F407ZGT6样品,就准备用来试试水。仿照Raspberry PI Compute Module做一个基于APM32F407的Compute Module板。
2、整体设计
MCS Compute Module 1(以下简称CM1)是一个使用ARM Cortex-M4 32位微控制器作为核心,拥有板载WIFI & BLE 5.0、Ethernet接口的计算模块。同时用B2B接口保留407大多数外设核心功能,以满足不同开发底板的需求。
3、硬件设计
4、点个灯
板子做好时,发现RT-Thread 4.1版本已经支持APM32F407系列开发,那话不多说,直接用RT-Thread Studio上操作系统点灯。
5、上个云
设备要上云,肯定需要联网媒介,这里使用板载的ESP32 C3 WROOM模块,并写入ESP官方AT固件。
6、加个小程序buff
7、画个饼
接下来准备做个基于CM1的IOT扩展板、电机扩展板、触屏小终端、各种应用例程等等可以充分发挥APM32F407芯片性能的DIY
8、资料代码
3.jpg


我与APM32的故事:
在此基于APM32F10x_SDK,体验一把标准库函数开发的魅力;
以下是第一个应用:实例Eg1_KeyTest
我们想要测试一下按键的按下功能,主要是测试使用APM32F10x_SDK的库函数开发测试GPIO 输入模式的使用;
1、硬件设计   
2、软件设计
首先关于新建工程,我们直接使用官方的Examples下面的GPIO例子,将输出改成输入模式。
3、下载验证
我们通过我们自有的仿真器模块WCH-link(DAP模式)把程序下载进去即可,仿真器需要选择CMSIS-DAP Debugger;


我们公司采用APM32F003F6P6芯片,主要想用它的ADC和SPI功能。下面就是我跟极海芯片的三次碰撞:   
第一次碰撞,公司想做一个多路ADC的采集设备,用了NTC测温,用了AIN4、AIN5和AIN6管脚,一共是2路,1路加热和1路制冷。下面是MCU部分的原理图。
第二次碰撞也是跟ADC有关系,是为了读取一个电池的电压,使用采集完成中断来读取的,期间还用了SPI 读取了一个集成按键模块TM1628,一开始读取按键工作还正常,但有次出门之后,回来发现,莫名其妙读回来一个按键被按下的标志位,最终发现是ADC采集完成触发中断打断了SPI的读取,修改操作是用检测ADC采集完成的标志位来判断是否读取完成,再切换通道。
第三次碰撞是在一次系统独立看门狗喂狗。
1.png


STM32F103xE芯片只有一个CAN,而APM32E103xE是有2个CAN,且相互独立。因此使用CubeMX生成的F103xE_CAN程序(HAL库),无法满足APM32E103xE的CAN2使用。故建立文档,进行程序修改说明,以供电子同胞们参考学习使用。


对于MCU来说,时钟是单片机能够稳定执行程序的关键。通常,单片机使用的时钟源为外部晶振。如果在一些重要的场合中应用时,单片机的时钟收到外界的干扰而导致时钟失效,从而使得单片机无法正常运行程序,系统卡死,可能会造成损失。如果单片机使用在安全生产场所,还有可能造成人身事故。因此,对于时钟的安全管理对于单片机来说至关重要。正好,在我刚刚获得的APM32F030Mini板中,有相关的功能存在。因此,下面进行探讨。
1 时钟安全系统(CSS)
2 程序编写


32单片机在之前的学习中并未接触过,APM32单片机是我接触的第一款cotex内核的单片机,同时为了锻炼快速上手一款单片机的能力,申请APM32f103Mini开发板挂载超声波HC-SR04模块进行程序编写调试。
0开发环境搭建开发环境采用Arm-MDK5.33版本,烧录工具为ST-Link,利用外接的usb-ttl CH340G模块将超声波测距数据利用串口上传到电脑便于调试分析。超声波模块固有排针引出的四个接口,依次为VCC Trig(触发端) Echo(接收端) GND,与开发板的接线为Vcc接5v供电,GND接GND,Trig接PA4,Echo接PA5。至此硬件电路配置完成接下来结合几张图讲述工程模板搭建过程。


在使用APM32F407的芯片时,我们的使用到了其一个非常有意思的存储区域“OTP”区域,这个区域与普通的Flash不一样。那它有哪些特性呢,又如何使用呢?且同我一一往下看。
1 、APM32F4的OTP区域
2、 OTP 区域的作用
  2.1外部设备的校准值
  2.2序列号的保存
  2.3产品加密
3 、OTP 区域的使用
  3.1自编程方式
  3.2ISP 下载编程
  3.3仿真下载编程
4 、总结&代码


APM32E103作为极海APM32F103系列的增强版,在保持原有的极好兼容性的基础上增加了双CAN外设,并且主频可以达到120MHz。
相比STM32F105系列,只少了USBOTG功能。因此就想尝试下在ST库的105库的配置上兼容APM32E103。
而APM32E103要兼容105的代码就有了两种方式:
1、更改宏定义改成103的MD或HD,这样库就会变更为103的设置,但这样105就不能使用修改后的代码。
2、了解寄存器的差异,对有差异的地方根据是103还是105进行选择执行,这样可以做到两个型号兼容一套代码。
下面也主要讲讲寄存器方面的差异点。


HSICLK是RC振荡器,精度没有晶振高,理想情况下数值是8MHz,在出厂时,会在3.3V、25℃下校准至±1%的精度,即7.92~8.08。
但是随着温度、电压的变化,该精度是会变化的。这个时候,可以通过配置HSITRM进行微调。通过实验,记录了手中的MCU调整的范围。

使用特权

评论回复
Innercourage| | 2023-1-5 17:21 | 显示全部楼层
国产,支持国产

使用特权

评论回复
perseverance51| | 2023-1-13 21:34 | 显示全部楼层
不写一点有技术的文章,分享一些没有用的内容,你这么夸耀,怀疑是派来的水军。你应该感谢ST的工具兼容APM,后面ST的配置工具可能会做修改,不能匹配APM。APM外部低速时钟表现差劲,怎么就没人提。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则