打印
[信息]

【我与ST MCU的故事】+ 风雨同舟

[复制链接]
893|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Luciferkeji 于 2019-3-19 00:12 编辑

写在最前
那年,暑假刚比完 TI杯省赛。大三开学第一周照例来到实验室,老师每人发了一块开发板。“明年的国赛不限定MCU品牌,我们讨论决定用STM32,你们先熟悉一下”。看着手上这块有4个独立按键、4个LED蓝色的微雪出品的STM32F103开发板,。却没想到这块小小的开发板对我的大学生涯与工作有着如此深远的影响。。。
一,初识STM32
    按照工程模版,创建keil工程,使用3.5版本的STD标准库配置时钟、设置外部晶振,计算好分频、配置好GPIO,终于点亮了第一个流水灯。不禁感叹,相比51和430的寄存器式编程,标准库方便好多啊。于是乎ADC采集,TIM定时器中断,PWM输出、定时捕获信号、外部中断、SPI、I2C通讯等一个个MCU外设功能逐渐熟练。其中也会遇到很多坑,比如使用标准库进行什么操作必须严格按照流程,经常出现一个某寄存器没读、某标志没清、某外设初始化有个地方没配置好,导致程序异常,这个时候编译器可不会给你报错,只能自己一个一个对着例程去找错误。
    记得当时的库开发指南有一本厚厚的书,后来为了避免标准库配置出错导致程序异常,在标准库的基础上我们自己封装了一层函数,反正开发板引脚多(LQPF100封装),实际功能用不了那么多,于是限定某些IO只用于什么功能,实验室的人分工合作,每人负责几个外设的驱动,编写了一个大而全的工程。想用什么功能执行对应的初始化函数就行,虽然外设都是用的普通方式。不过后来事件中证明在只考虑功能实现和速度,不考虑成本的竞赛中,这样确实很简单高效,实在需要用到中断或者DMA再自己单独配置。
沙发
Luciferkeji|  楼主 | 2019-3-18 23:53 | 只看该作者
本帖最后由 Luciferkeji 于 2019-3-19 09:27 编辑

最终国赛选题我们组选了E题 80M-100M频谱分析仪。 软件部分方案为STM32通过spi驱动带数字接口的可调锁相环芯片输出扫频信号、ADC采集功率检波器输出的电压信号和峰值检测电路输出的正选波峰值电压、DAC输出电压控制压控增益运放作软件自动增益,串口驱动组态TFT彩屏显示频谱、外加几个独立按键。要考虑的东西实在太多,上选题后芯片要第二天才能到手。多亏了STM32完善的驱动库和例程,使我们在软件调试上几乎没有遇到什么困难。鏖战4天3夜,又经历过舌战群儒后,终于拿下省一等奖。遗憾的是选题人数过少只能推2组去全国评奖,最终我们组无缘国奖。

二,STM32工作上的那些事
    快毕业时进了北京一家大牛云集的初创公司,做的是使用射频雷达技术测量生理信号,20人的小团队,CEO、CTO都是全球 top10半导体公司出来的,我进的是硬件部门,负责硬件测试,日常需要测一些MCU输出的数据和生理参数,并整理成表格,其他时间则熟悉公司的代码。公司的原型机用MCU的恰巧也是STM32,还是低功耗系列的 STM32L476。但是整个工程是基于HAL库,当时STM32已经发布了图形化自动配置工具cubeMX和硬件抽象层的HAL库。于是日常加班自虐成为我的常态,每天的测试任务完成后,熟悉公司的MCU代码,学习使用cubeMX和HAL库。MCU的代码有2个部分,一个是算法,一个是控制射频的驱动部分。代码是CTO(前博通的软件工程师写的),程序是跑在 FreeRTOS系统上的,对于当时只会裸机编程的我来说,看起来非常吃力很多功能都看不懂为什么程序可以运行到这里、这个参数是怎么传递的、队列和信号量的概念、各种指针结构体传参和一些很精妙的逻辑实现(这个只能怪自己C语言功底不扎实。。)在此我要感谢我的2位职场启蒙老师,也就是文中的CTO和硬件部门主管。秉着不懂的问题自己先百度、谷歌,实在查不到了问上司、问CTO,他们有空的时候都会很耐心的给我解答。从刚开始的一知半解,到熟知工程的运行逻辑和每一个函数的作用。期间由标准库转向 cubeMX配合HAL库和对FreeRTOS的学习也让我感觉似乎开启了新世界的大门,原来MCU还能这么玩,原来程序在操作系统上还能这么跑;从之前胆战心惊的生怕配错一个寄存器,到现在需要什么功能只需要动动鼠标,即可自动生成你需要的初始化代码。基本不用关心太硬件底层实现,只需要专注程序功能,应用逻辑的开发。从之前为了几个外设和功能之间不发生冲突,绞尽脑汁编写各种逻辑,全局变量和各种flag到处乱飞;到现在只需要创建对应的任务、消息队列,设置好优先级,共享的资源设置好信号量,其他的就交给操作系统去调度。半年后,我已经可以配合硬件研发,在公司原有的工程基础上添加新的功能和改动之前的功能了。
正在加班调试代码的时候:

测ECG和脉搏波





使用特权

评论回复
板凳
Luciferkeji|  楼主 | 2019-3-18 23:53 | 只看该作者
本帖最后由 Luciferkeji 于 2019-3-19 20:11 编辑

三、STM32的进阶与展望
一年后,我开始接手公司大部分的MCU软件开发的活。同时ST每一期的线下技术培训,有机会我都会请假去参加,(在这里吐槽一下能不能把线下培训放到周末呀,请假扣钱真的很伤。。。)在此十分感谢 ST的 tomas老师,我每次都会提前预习培训内容,带着问题去,都能得到Tomas老师专业,详尽的解答。有时候工作上遇到的问题发邮件询问,也会及时回复,即使不能明确的定位到问题,都会告知应该从哪些方面着手去查,真的让我在自学和工作中少走了很多弯路。凭借着在公司的积累,我开始积极去参加了一些公开的比赛。凭借着对STM32的技术积累,利用公司的动脉雷达模块和APP 配合主办方提供的蓝牙透传模块在工作之余的时间参加了艾睿的电子设计大赛,作品是使用PWV原理的便携式动脉硬化检测仪。17年底,有幸进入前十被邀请到上海参加总决赛,最终拿到二等奖。大赛讲解和演示作品的过程

颁奖典礼



得到主办方的肯定后,更加激励了我对STM32的学习兴趣。基本功能都了解之后开始学习扩展功能,使用SensorTile学习快速搭建运动传感器的应用、使用ST的电机驱动软件SDK学习电机的FOC驱动、使用带屏幕的F7 F4系列Discover板学习TouchGFX制作GUI界面。。
久而久之,通过学习买的,比赛送的,论坛活动送的,官网积分换的,参加ST峰会甚至线下培训送的累计了很多ST的开发板。
晒一下开发板中一部分



这些开发板除了加速我学习新知识新技术的进程,在工作上实际项目中有时候也能迅速搭建起一个环境用来验证某方案是否可行,或者配合cubeMX快速的做一个DEMO。


道阻且长,行则将至!今年是STM32和我风雨同舟的第5年,也是我工作的第3年。作为忠实的蝴蝶粉,从17年参加的STM32北京峰会,到18年参加的深圳峰会,每次都让我大开眼界,收获颇丰。从刚开始学习HAL库,除了官方文档,网上基本找不到任何说明,到现在基本不管什么问题,各大论坛、搜索引擎上一搜都能找到详尽的解答。我相信STM32的生态环境一定会越来越好!


使用特权

评论回复
地板
八层楼| | 2019-4-8 12:50 | 只看该作者
直接放在胳膊上 不会短路吗

使用特权

评论回复
5
Luciferkeji|  楼主 | 2019-4-9 16:46 | 只看该作者
八层楼 发表于 2019-4-8 12:50
直接放在胳膊上 不会短路吗

不会的  本来就是测心电的设备。而且主要是都是3.3 5V的弱电  人体电阻相对来说很高的。     有强电就不敢放身上了

使用特权

评论回复
6
八层楼| | 2019-4-10 09:04 | 只看该作者
Luciferkeji 发表于 2019-4-9 16:46
不会的  本来就是测心电的设备。而且主要是都是3.3 5V的弱电  人体电阻相对来说很高的。     有强电就不 ...

哈哈 看起来真是不错

使用特权

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

本版积分规则

2

主题

33

帖子

0

粉丝