一般来说,单片机属于硬件工程师的工作范畴。毕竟单片机驱动编程和电路设计是分不开,只有明白了单片机如何驱动才能设计出更为合理的电路产品。
如果想更好的从事单片机相关工作:
1、必须熟悉C语言。目前基本上所有的单片机的开发环境都支持C语言编程。
2、最好熟悉汇编语言。
原因如下:
①、虽然大部分单片机都支持C语言编程,但某些单片机采用汇编语言编程更好一些,如PIC8位单片机。
②、对于一些对时间要求较高的产品,采取汇编语言会更节省时间并且时间可控性更高。
③、由于单片机的启动文件等底层文件都采用汇编语言,产品采用实时系统,如UCOS、FreeRTOS等,必须需要汇编语言进行一致。即使不采用实时系统,熟悉汇编语言也可更好的了解单片机系统。
3、熟悉各种元器件以及电子电路原理。只有熟悉电路原理,才能更好的利用单片机驱动做出好的产品来。
4、熟悉一款单片机的外设功能。单片机方面,基本上熟悉了一款,便可举一反三,能迅速上手其余的单片机。
5、熟练使用相关实验调试设别,如电烙铁、万用表、示波器等。只有熟练使用这些工具,才能迅速的调试出一款合格的产品。
单片机工程师,就这个名称来讲,一般是指硬件工程师。从事单片机开发工作,可分为软件工程师和硬件工程师。今时今日,分工已经很明确,一般情况下,写软件的,不需要熟悉硬件,只要会调用API,或者会看编程指导即可。成熟的平台或团队,都会提供库函数版本或寄存器版本给开发应用。做硬件的,也不需要懂得编程,只需要看懂电路图,会分析,会改板,会测量即可。
要求软硬都熟悉的人,是软件底层工程师,硬件上要求看懂电路图,知道每个元件的作用,知道每个回路每个网格每个IP的工作原理,要求熟悉基本元器件的焊接操作,要求会使用示波器,万用表,甚至是逻辑分析仪,负载器等等的使用。软件上要就熟悉C语言,汇编语言,熟悉I2C,SPI,CAN,SDIO,USB,I2S等协议,熟悉GPIO的配置。编程指导,数据手册,原理图,丝印图,是底层工程师最常用到的四大宝典。
当然,由于分工已经模块化,LCD,Sensor,NandFlash等等IP已经分由不同的工程师甚至是团队负责,所以做底层的,写驱动的,通常只需熟悉对应的模块即可。
从业十多年,调试过很多开发板,包括裸板。我最大的感受是:理论正确,弄板有力,才能调通调好。所写的软件,首先是要理论正确,且严格符合编程指导和数据手册。弄板有力,指的是有能力测量,分析,焊接开发板,不用事事去找硬件求助,那样的话时间成本太高。