首页 > 编程知识 正文

汽车电子技术应用主要学什么,汽车电子技术可以做什么工作

时间:2023-05-04 10:23:28 阅读:253819 作者:1291

​前不久有一个朋友想转去做汽车软件开发,问我需要学习什么内容。今天在这里做一个分享,希望可以帮到这位朋友以及以后想要从事汽车电子软件开发的朋友们。

随着SDV(软件定义汽车)概念的提出, 大家都认识到了软件在汽车电子领域的重要性,各大汽车主机厂纷纷成立了软件研发中心并争夺软件开发人才。上汽集团在今年年初成立了上汽软件中心(后改名为零束),长城汽车成立了诺博、诺创、诺博,还有很多OEM也成立或者扩大了各自的软件研发中心,这里都不赘述了。

总之,这对从事汽车软件开发的妩媚的含羞草们是很大的利好。2019年大家经历了汽车销量下滑带来的零部件供应商效益下滑,2020年的疫情对汽车行业来说更是雪上加霜,好在从9月份开始汽车销量迎来了不错的增长,给我们汽车电子从业者们带来了更多信心。未来随着SDV的进一步推进,以及汽车新四化的逐渐开展,对软件开发人员的需求也会进一步增加。

啰嗦了这么多就是想给正在或者想要从事软件开发的大家一点信心,提升自己的开发技能、做好自己的开发工作,未来大有可为。下面回到本文的主题,想要从事汽车软件开发需要掌握哪些技能,本文讨论的scope是单片机软件开发,关于带有操作系统的Soc软件开发我们以后可以讨论。

1.首先要对单片机(MCU)的基本构成有一个了解,如果是计算机或者电子信息相关的专业,大学应该都学过一门叫做“微机原理”的课程,那这一步就可以跳过了。如果没有学过这门课,可以自己买一本单片机原理的书来看一下,对单片机的各个组件(什么是ALU、RAM、ROM、寄存器等)有个基本的了解。

2.接下来就是C语言编程知识了,C语言是你和MCU进行沟通的语言,通过C程序告诉MCU你要它完成什么工作(比如通过一个端口输出一个PWM)。C语言的强大之处是可以直接操控硬件,大部分操作系统都是使用C语言来编写的,包括你每天都会使用的Windows系统和Android系统(部分组件是用汇编来写的),从世界编程流行语言排行榜上,常年霸占榜首就可以看出C语言的重要程度。相信大部分人大学应该都学过C语言这门课程,因为现在不管是不是理工科的专业,利用编程解决问题的思想还是有必要学习一下的。如果你没有学过C语言也不要方,可以自己买一本C语言的入门书籍来学习,掌握C语言的基本语法即可,更多的编程技巧可以在单片机编程的过程中强化学习。网上比较推荐《C Primer Plus》这本书来入门,本人没有看过这本书,不作评价,感兴趣的朋友可以先了解一下,再决定是否选择它作为入门书籍,鉴于目前国内的翻译水平参差不齐,英文没问题的话可以直接阅读原版。进阶的话有《C和指针》,《C陷阱与缺陷》。

3.MCU虽然很强大,但是如果只有一个MCU没有相关的外围电路它也干不了什么事情,因此我们需要能看懂和MCU交互的外围电路的原理图。比如现在让你通过MCU来控制一个LED的亮灭,首先你要看一下电路上这个LED连在了MCU的哪一个端口上了,如此你才知道通过控制哪个端口的电平状态来点亮和熄灭该LED。其次还要看一下端口输出什么电平可以点亮LED,同样的输出什么电平可以熄灭LED。我们举一个例子来说明,下图中的RGB_RED是连接到MCU的一个端口上的,通过该端口来控制红色LED的亮灭,那么如何点亮这个红色的LED呢?我们看到RGB_RED接到了一个NPN型(什么是NPN和PNP自行百度查阅)三极管的基极上(1),当端口RGB_RED输出高电平时集电极(3)到发射极(2)就会导通,红色LED的一端是5V(P5V0),另一端是GND,此时就会有电流流过红色LED,红色LED就会被点亮;相反,当端口RGB_RED输出低电平时集电极(3)到发射极(2)截止(不导通),就不会有电流通过红色LED,红色LED就会熄灭。真实的项目中除了控制LED的亮灭外,还要控制LED的亮度水平(白天亮度需要更高,夜晚亮度低一些),此时就要用到MCU的PWM(脉冲宽度调制)功能了,PWM其实就是一个频率和占空比可以调节的方波,通过调节占空比的大小(0%-100%)来调节LED的亮度。原理也很简单,调节占空比其实就是调节加在LED上面的电压:假设最大电压是5V,那50%占空比对应的就是2.5V,输出的电压和占空比是一个线性的关系。

4.有了上面的这些基础就可以开始简单的MCU编程了,推荐想要入门的同学可以买一个MCU开发板(最好带有CAN、LIN、SPI、I2C这些常用通信接口),开发板上有丰富的外围电路设备以及编写好的程序例程,跟着这些例程可以快速地掌握相关的开发技能。想要从事汽车电子领域的MCU软件开发工作,还需要掌握该领域内常用的一些通信接口,比如和整车其他模块交互的CAN、LIN网络,以及MCU和板上资源交互的I2C、SPI等串行通信接口。这些内容可以在具体的例程项目中去学习,也不是一朝一夕的事情,需要大家沉下心去钻研。

好了,以上就是本次分享的全部内容。如果大家对具体的MCU中的模块感兴趣的话,可以在讨论区留言。如果你觉得本文对你有用,可以点击阅读原文或者关注公众号"汽车软件后花园"一起学习交流。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。