MCU项目1:上位机图像处理与嵌入式模块部署(报警器功能)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
不管是什么样的mcu chip,要想深入了解,最终还是要通过项目来实现的。前面,我们可能学习了mcu的各种外设,比如gpio、spi、iic、iis、usb、eth、can等等,但是怎么把它用起来,就看具体的项目和产品需求了。至于做项目,一般用不到全部的外设,只需要把一部分功能merge在一起就好了。本来,mcu就是为了解决特定问题而存在的,不可能像开发板那样大而全。
1、开始行动比光说不练更重要
很多时候,我们可能拿不定主意可以做哪些项目,不妨拿别人已经做过的项目练练手,甚至是别人已经存在的产品,这都是可以的。开始做,总比光想不练要好得多。
2、完成比完美更重要
一开始的时候,很多方面考虑得不是很完善,这都问题不大。很多问题,也是开发的过程中慢慢发现的,发现后及时改正就可以了。此外,对于发现的问题,也可以通过ota升级等方法来解决。所以刚开始,我们要做的,应该是把基础的功能实现即可。
3、编写windows上位机软件
除了mcu开发板、mcu固件之外,还需要编写windows上位机软件。上位机的作用一般有两个,一个是对固件部分进行升级,一个是对参数进行配置。固件配置参数的时候,很多情况下是不需要立即生效的。这个时候,重启开发板即可。
4、固件的功能
这是一个报警器的项目。所谓的报警器,就是通过模块检测到有问题、有故障的环境之后,通过三色灯、蜂鸣器、故障灯等方法,向外界提示风险情况。这里的报警器,可以是各种传感器获得的数据,本质上都是通过模块获得特定的电压。只要电压正常,那么相安无事;反之就要进行报警提示。相关设备,一般都是24h运行的,所以稳定性其实就非常重要了。此外,为了升级的需要,还有两个固件需要开发,一个bootloader固件做到引导,一个app固件则是实现了报警器的功能。
5、总结下需要做的工作
对于上位机而言,
01)用qt进行界面开发;
02)利用串口进行通信,这部分其实就是普通的ttl串口,注意设置好波特率即可;
03)实现对bootloader的数据发送;
04)实现反馈数据的读取;
05)实现配置参数的下发;
06)实现重启开发板。
而对固件开发板而言,
目前这部分呢,不是很复杂。可以通过一个意法半导体的stm32f103或者国产类似的mcu开发板进行开发,这都问题不大。和f407相比较,f103除了频率低一点、没有硬件浮点、没有dac、不支持tf卡、没有eth之外,其实是可以应付大部分工作场合的。特别是那些本身不需要复杂功能的工业控制场景。
对于固件开发而言,
01)开发两个固件,一个bootloader,一个是app;
02)bootloader以后可以被其他的mcu项目复用处理;
03)bootloader需要实现uart收发和内部flash的读写;
04)bootloader需要实现app程序的跳转功能;
05)app需要实现中断向量起始地址的重新设置;
06)app需要实现ad功能,即模拟量采样;
07)app需要实现gpio功能,用来做led闪烁或者是蜂鸣器;
08)app需要实现两个串口,一个是debug打印使用,一个是和上位机进行通信使用;
09)app需要实现内部flash的读写,主要是为了参数的保存使用;
10)app需要实现看门狗,防止固件运行的过程中跑飞,有了看门狗后就可以长期稳定运行了。
6、其他准备
mcu开发除了keil、开发板之外,一般还要准备烧录器、串口、杜邦线、万用表等工具。甚至有些情况下还要准备一下焊接工具,这都是很正常的。不过大家也不用担心,目前这部分配件都很便宜的,到时候需要的话,网上购买就好了。
作者:嵌入式-老费