【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
很多朋友读书的时候学的是stm32,工作中用的也是stm32。这本来问题不大,但是过去两三年的经历告诉我们,mcu的使用一定要进行分散采购,不能把鸡蛋放在一个篮子里面。对于个人来说,stm32这样的经典mcu需要学习,而国产的mcu也同样需要学习,很多项目,比如说军工、央企或者的国企的项目,会指定要求国产mcu。这个时候如果我们没有对应的国产mcu预案,整体就会显得很被动。当然,不仅仅是mcu国产化的问题,还有一些其他的事情,我们可以一并讨论下。
1、熟悉不同stm32 mcu的区别
一般用的比较多的mcu就是stm系列。103负责基础领域的应用,但是没有浮点,频率也比较低,同时没有网络mac。407系列在运动控制比较多,频率也是103的2倍多,有浮点、有网络。750系列的mcu,频率更高,可以达到480m,搭配sdram、摄像头sensor,还可以做一些图像方面的应用,openmv就是这个道理。
2、了解同系列stm32 mcu的区别
很多情况下,我们选择mcu外设资源是够的,但是片内资源就不太够了。同样以103为例,如果我们选择的是stm32f103c8t6,它的资源只有20k ram和64k flash。一旦我们编写的代码复杂一点,这里面空间很容易就不够了。所以这个时候,一般会选择stm32f103cbt6。当然,如果不幸的是,ram也不够,那么这种情况,相同pin脚的mcu已经无法满足要求了,只能重新找一个新的103芯片了。厂家一般都会提供类似下面这张表,大家可以灵活选择。
3、国产mcu的选择
目前为止,我尝试使用了3款国产mcu,分别是沁恒wch、普冉puya和广芯微。整体用下来效果还是可以的,这也许是因为自己只用了数字电路部分的原因。只需要安装keil软件,加上各个厂家的pack包和示例代码,mcu这部分上手其实还是比较容易的。如果操作比较快的话,基本上1-2h就可以开始干活了。只要克服了心里上的顾虑,剩下来的问题其实并不大。毕竟,大部分厂家的mcu示例代码,基本上和stm32是一样的。
4、三种烧录方式最好都要学会
大部分同学学习mcu的时候,一般都是通过某原子、某火的开发板来学习的。用的烧录方式就是dap。但是一旦涉及到其他品牌的mcu,特别是国产的mcu,则有可能是st-link v2,也有可能是j-link。特别是j-link,这是用的比较多的烧录方式,建议大家可以自己买一个j-link仿真器,使用上面也不是很复杂。自己平时三种仿真器都准备下,这样不管遇到那种情况,都能灵活应对。
对于某些特殊的下载方法,到时候购买特定的仿真器就好了。
5、arm vs risc-v
不是所有的mcu都是arm系列的,这里面沁恒wch的ch32v307系列的mcu,本身的cpu就是risc-v。它使用的编译器是mounriver,调试器是wch-link调试器。使用上面基本上没有什么差别。ch32v307vct6本身集成了高速usb和eth phy,同价位的mcu,这是很大的一个优势,所以实际使用的场景还是非常多的。有兴趣的同学可以去好好测试下。
6、让我们自己的业务代码解耦特定的mcu
现在的mcu很多,不管是进口的还是国产的,这就要求我们在编写代码的时候,要脱离具体mcu的束缚。不管是中间件的代码,还是业务的代码,都要实现和mcu之间的解耦。这样,一旦因为供应、或者是成本的考量,需要替换mcu的时候,我们的软件可以很容易port到其他mcu上面。
另外,这也提示我们,对mcu的熟悉和掌握,这不是我们的核心竞争力。我们自己的优势,应该是怎么把mcu和具体的业务绑定在一起,并且提供有高性价比的嵌入式产品,这才是我们应该努力的方向。