如何有效地学习单片机?

Posted 嵌入式大杂烩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何有效地学习单片机?相关的知识,希望对你有一定的参考价值。

不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我

森山,10多年的硬件开发经验,做过的板卡数不清有多少块,做过量产的产品也涉及到各个行业,也做过不少失败的项目。他用自己的经验告诉大家,如何系统的学习单片机。

01

需要一块开发板——让单片机动起来

买一块开发板,按照配套的demo程序,自己改改,让外设动起来,比如OLED显示内容,电机启停、调速,温湿度采集等等。这一步是为了让你体会到,单片机如何通过编程实现对硬件的操作。

这样的开发板太多了,建议从STM32入手,原因有二:一是资料最全,开发环境比较友好,而且今后在产品中使用也比较多;二是开发板都不贵,而且最好选外设多的,带显示,带通信接口的开发板。

即使一开始不懂,开发板配套的学习包,足够你学一阵子了,STM32官方也有现成的Cubemx工具来帮你生成基础代码。

02

自己设计一个小demo——掌握基本外设

我建议有硬件设计能力的,可以自己设计制作一款开发板,尽量多的加入不同类型的外设,因为以后你研发产品,就是基于这些外设的应用逻辑组合。然后一个个移植外设驱动,当然更建议自己写驱动,驱动写得好能最大程度发挥硬件的性能。

受限于单片机的性能都比较一般,基础的外设的连接方式大致有这些:IO、I2C、SPI、AD\\DA、UART、CAN、RGB888……等这些低速接口,有的也带USB。

等你玩转了这些,以后升级到更强的平台,那么高速接口学习起来也只是工作量的问题,大同小异。

在移植和写驱动的过程中,要学会看datasheet,spec。虽然一个简单的芯片规格书就是几十上百页,但并不是你都要去看懂的,只要知道提取自己有用的信息,比如I2C设备,它的总线最高频率,你在做时序控制时不能超过它的上限。

在调试过程中,你一定会遇到非常细节的问题,这时候,借助一定的工具和手段,可以让你变得更加高效,比如学会用示波器去看数据波形,学会看时序,分析通信协议,用万用表去检测基本的故障。

下面视频是用STM32通过对步进电机和电磁铁的控制,来实现纺织机机头的功能。尽管我也做了多年开发,在遇到新的外设时,调试还是花了不少精力。参数是调出来的,有时候就差几十us的延时,性能就相差很多,所以在研发的过程中一定要耐心:

03

学着做一个完整的小产品——产品思维

前2步的基础,新手的你已经大致有信心了。接来下可以做一些设备的联动,实现一个产品的基础功能,一个简单的单机设备。举个例子,通过温湿度监测,来控制继电器,继电器外加电热丝或加热装置,并且实时显示该温度值,这就是一个温度控制的产品了。

这些设计不难的,难的是在这一步里你要有一定的产品思维了。要列出你这个产品的需求,解决了什么痛点,根据明确的需求去选择相应的单片机方案,你要知道实现这样的功能,需要选择什么样的技术方案,综合还要考虑成本。

这里面的信息量和变数其实非常大,比如你要设计一款带有线网络的产品,那么你是选择自带RMII接口的单片机,还是通过增加一个串口转网络的模组来实现?这可能涉及到你需要通信的网络速度,也要考虑综合成本,以及开发的难易程度。

有时候,这需要权衡产品本身的硬件成本,和你的开发周期,并不是一味追求硬件成本最优,如果出货量不大的产品或项目,应该更倾向于选择自己熟悉的单片机平台,这样开发周期最短,人力消耗最低,避免捡了芝麻,丢了西瓜的情况发生,因为很多项目,时间要求是很紧迫的。

做产品,实现功能很简单,但整体的可靠性、稳定性、兼容性是很难的,这个问题主要讨论单片机,所以产品其他延伸的话题就不展开了。

04

让你的单片机连接到全世界——尝试通信

现在很多产品都物联网化了,进一步的,你可以去研究基于单片机的有线、无线通信方式,最简单的通过串口连接WIFI、GPRS模组,学习MQTT等物联网通信协议实现单片机与互联网的连接。

MQTT协议基于json,即使完全不懂的人,学半天也就会了,上手比较容易,PC端有很多客户端可以直接用,适合信息量不大、实时性要求不高的数据采集、远程控制。

通信模组和方式就很多了,WIFI、Zigbee、BT、Lora、GPRS、Lora、NB、4G/5G、433等各种小无线,以后可以专门写一篇来介绍这些通信方式的不同应用场景。

之所以把通信这块单独拎出来,因为通信让万物互联,有了更多可玩性和可能性,让冰冷的单片机成为有想象力的产品。

最后的总结:做了越多的产品就越觉得,没有一个产品是简单的,容易的,希望大家耐心一点,打好基础,后面的路子就会很宽。

除了以上4点,后面遇到更复杂的项目,可以上RTOS、MBED等轻量化,适合单片机的操作系统。大家不要一味想着去搞linux,单片机一直在迭代,现在性能强的单片机还是很多的,而实际工业上有很多需求,单片机绰绰有余,性价比极高,开发周期短,稳定,这些都是很好的。

关于如何系列的学习,还推荐阅读:

硬件工程师技能树

电子专业新生指南

嵌入式学习路线+资料放送

学长,我们电子专业的毕业后究竟是做啥的?

嵌入式 Arm Linux 入门必读书籍推荐

硬件学习选择开发板指南

本文转载来自森山的知乎文章,达尔闻经作者同意发布。

END

项目分享 | 电赛系列 | 人工智能 | 考研 

必考知识点 毕业设计 | 开关电源 求职

我们是妮mo,达尔闻创始人,只讲技术不撩汉的小姐姐。达尔闻在线教育平台旨在服务电子行业专业人士,提供技能培训视频,覆盖各细分领域热门话题,比如嵌入式,FPGA,人工智能等。并针对不同人群量身定制分层级学习内容,例如常用知识点,拆解评测,电赛/智能车/考研等,欢迎关注。

官网:www.darwinlearns.com

B站:达尔闻

往期推荐:

几十行C代码就能实现一个shell?

稚晖君已经元婴后期了,咱们还在炼气期~

在公众号聊天界面回复1024,可获取嵌入式资源;回复 m ,可查看文章汇总。

点击阅读原文,查看更多分享。

以上是关于如何有效地学习单片机?的主要内容,如果未能解决你的问题,请参考以下文章

基于STM32单片机智能RFID刷卡汽车位锁设计(论文

基于STM32单片机智能RFID刷卡汽车位锁设计(论文

单片机调试 - 如何简单有效的插入和删除调试语句

单片机编程技术学习攻略

怎么样学习STM32单片机

教程如何优雅地使用vs code代替keil开发51单片机/STC单片机