【车载开发系列】MCU选型

【车载开发系列】MCU选型

【车载开发系列】MCU选型

  • 【车载开发系列】MCU选型
    • 一. 重要概念
    • 二. MCU选型的风险
      • 风险1
      • 风险2
    • 三. MCU选型要点
    • 四. MCU选型维度
    • 五. MCU 选型需要考虑的因素
      • 1)ROM/RAM
      • 2)速度/主频
      • 3)分析外设需求
      • 4)工作电压(VCC)
      • 5)仿真器
      • 6)应用领域
    • 六. 元器件选型基本原则

一. 重要概念

在了解MCU选型之前,必须要知道以下这几个概念。
固件:这个概念在不同的系统中有不同的含义,不管如何,程序BIN文件也是固件,本文的固件就是编译软件编译完成后的完整BIN
PIN TO PIN:管脚兼容
Code为程序代码部分
RO-data 表示 程序定义的常量const temp;
RW-data 表示 已初始化的全局变量
ZI-data 表示 未初始化的全局变量
MPU Micro-Processor Unit,微处理器
在这里插入图片描述

二. MCU选型的风险

风险1

硬件工程师缺乏软件知识,根据经验或者其他类似项目使用过该型号的MCU,主观选择好已经用过的MCU,但是项目变化,原先配置的MCU FLASH空间可能不足,内存可能不足会导致项目风险大大增加;

风险2

软件工程师不熟悉硬件外部电路原理,对成本不敏感,需要更理解底层的工程师如驱动工程师来解决。软件工程师喜欢大FALSH 大RAM 给编程预留足够余地,但是较少甚至没有考虑过成本情况。

三. MCU选型要点

涉及硬件MCU的项目选型中,MCU的FLASH空间,SRAM空间大小对软件涉及影响非常之大。因此如何选择一款符合项目要求,成本又低的MCU非常的重要。
这就需要软件开发工程师根据当前项目需求情况以及后续项目升级需求上考虑选择,硬件工程师需要更多听取软件的意见来选择型号!
懂软件与硬件的系统工程师,在此可以发挥出重要价值。

四. MCU选型维度

1,看Flash和RAM容量、余量
2,看管脚数量够不够
3,看运算能力,主频多少
4,看通讯接口资源够不够 - 为了保证开发效率一定要选择带硬件接口的,不用软件模拟的
5,看是否带FIFO或者DMA - 需要处理大量数据时必须带

五. MCU 选型需要考虑的因素

1)ROM/RAM

MCU单片机运行时主要存在两个区域,只读的代码code以及const字符串数据,存放在FLASH空间中,可读写的全局变量,静态变量,局部变量等均分布在SRAM中。程序启动初始化时RW-data等从flash拷贝到SRAM,执行的程序等还在ROM(FLASH)中执行。
需要提前,分析好,各个软件模块所用的 ROM/RAM资源。最好能够细化到各个模块各占用多少ROM/RAM。(特别是占用比较大的模块,例Lib相关)

2)速度/主频

时钟频率越高速度越快。
时钟频率越高功耗也就越大。
因此,要尽量寻找可以在很高的时钟频率下运行而功耗又不高的单片机。
在应用过程中不需要高频的主频参与运算时,可以适当降低主频,可以间接降低整体的功耗,这样就可以实现主频可控了。
大部分的MCU在进入低功耗后就会把IO口的时钟完全关闭,这时的IO口是没有输出能力,当这些外设的控制脚使能后,可能会有一定程度的漏电流,所以在进入低功耗之前,需要将外设的控制脚的状态提前预设好,防止有意外的漏电流。

3)分析外设需求

根据设计需要,选择GPIO数目,ADC数目, UART /SPI /IIC 等模块。寻找一款集成所有这些外设的单片机。

4)工作电压(VCC)

工作电压越高,单片机的功耗也就越大。因此,必须要尽可能地降低工作电压。我们一般都是用一次性的锂电池供电3.3V(满电)~2.4V(快没电)

5)仿真器

仿真器是硬件和底层软件调试时要用到的工具,开发初期如果没有它基本上会寸步难行。选择配套适合的仿真器,将会给开发带来许多便利。对于已经有仿真器的人们,在选型过程中要考虑它是否支持所选的芯片。

6)应用领域

一个产品的功能、性能一旦定制下来,其所在的应用领域也随之确定。应用领域的确定将缩小选型的范围,例如:工业控制领域产品的工作条件通常比较苛刻,因此对芯片的工作温度通常是宽温的,这样就得选择工业级的芯片,民用级的就被排除在外。目前,比较常见的应用领域分类有航天航空、通信、计算机、工业控制、医疗系统、消费电子、汽车电子等。

六. 元器件选型基本原则

通用性原则:所选的元器件要是被广泛使用验证过的,尽量少使用冷门、偏门芯片,减少开发风险。
高性价比原则:在功能、性能、使用率都相近的情况下,尽量选择价格比较好的元器件,降低成本。
采购方便原则:尽量选择容易买到、供货周期短的器件。
可持续原则:尽量选择寿命周期长的器件。可替代原则:尽量选择pin to pin兼容芯片品牌比较多的元器件。
公司兼容原则:尽量选择以前老产品用过的元器件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/345596.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法家族之一——二分法

目录 算法算法的打印效果如果算法里的整型“i”为1如果算法里的整型“i”为11 算法的流程图算法的实际应用总结 大家好&#xff0c;我叫 这是我58&#xff0c;现在&#xff0c;请看下面的算法。 算法 #define _CRT_SECURE_NO_WARNINGS 1//<--预处理指令 #include <stdi…

html--万年历

<!DOCTYPE html> <html lang"zh_CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><meta charset"utf-8" /><title>万年历</title><link rel"styles…

压力测试-性能指标-Jmeter使用-压力测试报告

文章目录 1.压测目的2.性能指标3.Jmeter3.1Jmeter使用3.1.1 运行Jmeter3.1.2 添加线程组3.1.3设置HTTP请求3.1.4 设置监视器 3.2 查看Jmeter压测结果3.2.1 查看结果树3.2.2 查看汇总报告3.2.3 查看聚合报告3.2.4 查看汇总图 1.压测目的 内存泄漏&#xff1a;OOM&#xff0c;重…

Llama模型家族之Stanford NLP ReFT源代码探索 (四)Pyvene论文学习

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

【嵌入式】波特率9600,发送8个字节需要多少时间,如何计算?

问题&#xff1a; 波特率9600&#xff0c;发送 01 03 00 00 00 04 44 09 (8字节) 需要多少时间&#xff0c;如何计算&#xff1f; 在计算发送数据的时间时&#xff0c;首先要考虑波特率以及每个字符的数据格式。对于波特率9600和标准的UART数据格式&#xff08;1个起始位&…

彩虹易支付最新版源码

源码简介 彩虹易支付最新版源码&#xff0c;更新时间为5.1号 2024/05/01&#xff1a; 1.更换全新的手机版支付页面风格 2.聚合收款码支持填写备注 3.后台支付统计新增利润、代付统计 4.删除结算记录支持直接退回商户金额 安装环境 1.PHP版本>7.4 2.Mysql数据库 安装教…

C++ Qt实现http url启动本地应用程序

更多Qt文章,请访问《深入浅出C++ Qt开发技术专栏》:https://blog.csdn.net/yao_hou/category_9276099.html 文章目录 1、注册自定义协议2、编写web页面3、编写C++应用程序我们在使用腾讯会议时经常会通过http链接打开本地的腾讯会议,例如下图: 打开会议发起人给的链接,会出…

⾃动化批量管理-Ansible

目录 一、ansible 简介 自动化工具选择 &#xff08;了解&#xff09;​编辑 1、ansible 是什么&#xff1f; 2、ansible 特点 3、ansible 架构图 二、ansible 任务执行 1、ansible 任务执行模式 2、ansible 执行流程 3、ansible 命令执行过程 三、ansible 配置详解 …

【iOS】UI学习——登陆界面案例、照片墙案例

文章目录 登陆界面案例照片墙案例 登陆界面案例 这里通过一个登陆界面来复习一下前面学习的内容。 先在接口部分定义两个UILabel、两个UITextField、两个UIButton按键&#xff1a; #import <UIKit/UIKit.h>interface ViewController : UIViewController {UILabel* _lb…

基于AT89C51单片机的红外防盗报警器设计

第一章 绪论1.1 选题背景 随着社会科学的不断进步和发展,人们生活水平得到很大的提高,对个人私有财产的保护越来越重视,因而对于防盗的措施提出了更高的要求。本设计就是为了满足现代生活防盗的需要而设计的应用于家庭、车库、仓库和保险柜等处进行防盗监控的无线防盗报警装…

【RAG入门教程03】Langchian框架-文档加载

Langchain 使用文档加载器从各种来源获取信息并准备处理。这些加载器充当数据连接器&#xff0c;获取信息并将其转换为 Langchain 可以理解的格式。 LangChain 中有几十个文档加载器&#xff0c;可以在这查看https://python.langchain.com/v0.2/docs/integrations/document_lo…

Hive日志介绍

日志描述 日志路径&#xff1a;Hive相关日志的默认存储路径为“/var/log/Bigdata/hive/角色名”&#xff0c;Hive1相关日志的默认存储路径为“/var/log/Bigdata/hive1/角色名”&#xff0c;以此类推。 HiveServer&#xff1a;“/var/log/Bigdata/hive/hiveserver”&#xff0…

【算法】常用排序算法(插入排序、希尔排序、堆排序、选择排序、冒泡排序、快速排序、归并排序、计数排序)超详细

排序算法是数据结构相关知识中非常重要的一节&#xff0c;相信很多小伙伴对这部分知识一知半解。那么接下来&#xff0c;小编就要带领大家一起来进行对排序算法的深入剖析学习&#xff0c;希望本篇文章能够使你有所收获&#xff01; 一.常见的排序算法 排序算法有很多种&#…

‘AndroidStudio工具平台’尝试运行‘Android原生项目’

AndroidStudio工具平台 (内嵌Intelli IDEA集成环境) /Users/haijunyan/Library/Android/sdk 配置环境变量: #adb命令&#xff0c;安装APK查看连接设备 platform-tools #emulator命令&#xff0c;通过命令创建模拟器 tools #用NDK框架搭建的项目&#xff0c;用到下面的命令编译 …

【Oracle】Oracle导入导出dmp文件

文章目录 前言一、什么是dmp&#xff1f;二、imp/impdp、exp/expdp对比及示例1.区别2.imp/impdp对比及示例a. impb. impbp 3.exp/expdp对比及示例a. expb.expdp 3.其他事项 三、执行导入导出前置条件1.创建角色并授权2.创建目录映射 前言 在工作中&#xff0c;经常会遇到需要备…

Serif Affinity 2.5 (macOS, Windows) - 专业创意软件

Serif Affinity 2.5 (macOS, Windows) - 专业创意软件 Affinity Designer 2, Affinity Photo 2, Affinity Publisher 2 请访问原文链接&#xff1a;Serif Affinity 2.5 (macOS, Windows) - 专业创意软件&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

【数据结构(邓俊辉)学习笔记】图06——最小支撑树

文章目录 0. 概述1. 支撑树2. 最小支撑树3. 歧义性4. 蛮力算法5. Prim算法5.1 割与极短跨越边5.2 贪心迭代5.3 实例5.4 实现5.5 复杂度 0. 概述 学习下最小支撑树和prim算法。 1. 支撑树 最小的连通图是树。 连通图G的某一无环连通子图T若覆盖G中所有的顶点&#xff0c;则称…

【算法小记】深度学习——时间序列数据分析 Time series Data Analysis

在本篇博客中将简单介绍常见的几种循环神经网络和一维卷积神经网络&#xff0c;并使用一些简答的数据进行拟合分析。本文相对适合刚入门的同学&#xff0c;同时也作为自己过去一段时间学习的总结和记录&#xff0c;现在神经网络框架已经非常完善的支持了很多常见和有效的深度学…

Channels无法使用ASGI问题

Django Channels是一个基于Django的扩展, 用于处理WebSockets, 长轮询和触发器事件等实时应用程序. 它允许Django处理异步请求, 并提供了与其他WebSockets库集成的功能.当我们在Django Channels中使用ASGI_APPLICATION设置时, 我们可以指定一个新的ASGI应用程序来处理ASGI请求.…

Linux基础I/O

一&#xff0c;系统文件I/O 写文件: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> int main() {umask(0);int fd open("myfile", O_WRO…