嵌入式分享合集76

news/2024/5/17 19:30:04/文章来源:https://blog.csdn.net/qq_29788741/article/details/127324800

一、推挽、开漏、OC、OD

 与推挽输出相对的是开漏输出,而开漏输出分为OC、OD两种,下文分别详细介绍。

推挽输出

    推挽输出(Push-Pull Output)是由两个MOS或者三极管受到互补控制信号的控制,两个管子始终处在一个导通另一个截止的状态,如图1所示:

推挽输出的最大特点是可以真正的输出高电平和低电平,而且在两种电平下都具有驱动能力。

补充说明:

    所谓的驱动能力,就是指输出电流的能力。对于驱动大负载(即负载内阻越小,负载越大)时,例如IO输出为5V,驱动的负载内阻为10ohm,于是根据欧姆定律可以正常情况下负载上的电流为0.5A(推算出功率为2.5W)。显然一般的IO不可能有这么大的驱动能力,也就是没有办法输出这么大的电流。于是造成的结果就是输出电压会被拉下来,达不到标称的5V。当然如果只是数字信号的传递,下一级的输入阻抗理论上最好是高阻,也就是只需要传电压,基本没有电流,也就没有功率,于是就不需要很大的驱动能力。

    对于推挽输出,输出高、低电平时电流的流向如图2所示。所以相比于后面介绍的开漏输出,输出高电平时的驱动能力强很多。

缺点
    但推挽输出的一个缺点是,如果当两个推挽输出结构相连在一起,一个输出高电平,即上面的MOS导通,下面的MOS闭合时;同时另一个输出低电平,即上面的MOS闭合,下面的MOS导通时。电流会从第一个引脚的VCC通过上端MOS再经过第二个引脚的下端MOS直接流向GND。整个通路上电阻很小,会发生短路,进而可能造成端口的损害。这也是为什么推挽输出不能实现" 线与"的原因。
开漏输出

    常说的与推挽输出相对的就是开漏输出(Open Drain Output),对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。关于上下拉电阻可以参考此文:通俗理解STM32中的上/下拉电阻。
    下面就从内部结构和原理上说明为什么开漏输出输出高电平时没有驱动能力,以及进一步比较与推挽输出的区别。
    首先需要介绍一些开漏输出(OD)和开集输出(OC)。这两种输出的原理和特性基本是类似的,区别如下:
开漏使用MOS管,其中的"漏"指的就是MOS管的漏极
开集使用三极管,其中的"集"指的就是三极管的集电极
    这两者其实都是和推挽输出相对应的输出模式,由于使用MOS管的情况较多,很多时候就用"开漏输出"这个词代替了开漏输出和开集输出。
OC
    介绍就先从开集输出开始,其原理电路结构如图3所示。

 

 图3左边电路是开集(OC)输出最基本的电路,当输入为高电平时,NPN三极管导通,Output被拉到GND,输出为低电平;当输入为低电平时,NPN三极管闭合,Output相当于开路(输出高阻)。高电平时输出高阻(高阻、三态以及floating说的都是一个意思),此时对外没有任何的驱动能力。这就是开漏和开集输出最大的特点,如何利用该特点完成各种功能稍后介绍。这个电路虽然完成了开集输出的功能,但是会出现input为高,输出为低;input为低,输出为高的情况。
    图3右边的电路中多使用了一个三极管完成了"反相"。当输入为高电平时,第一个三极管导通,此时第二个三极管的输入端会被拉到GND,于是第二个三极管闭合,输出高阻;当输入为低电平时,第一个三极管闭合,此时第二个三极管的输入端会被上拉电阻拉到高电平,于是第二个三极管导通,输出被拉到GND。这样,这个电路的输入与输出是同相的了。
OD
    接下来介绍开漏输出的电路,如图4所示。原理与开集输出基本相同,只是将三极管换成了MOS而已。
 

特点及应用
    接着说说开漏、开集输出的特点以及应用,由于两者相似,后文中若无特殊说明,则用开漏表示开漏和开集两种输出电路。
    开漏输出最主要的特性就是高电平没有驱动能力,需要借助外部上拉电阻才能真正输出高电平,其电路如图5所示。 

 

   当MOS管闭合时,开漏输出电路输出高电平,且连接着负载时,电流流向是从外部电源,流经上拉电阻RPU,流进负载,最后进入GND。
开漏输出的这一特性一个明显的优势就是可以很方便的调节输出的电平,因为输出电平完全由上拉电阻连接的电源电平决定。所以在需要进行电平转换的地方,非常适合使用开漏输出。
开漏输出的这一特性另一个好处在于可以实现"线与"功能,所谓的"线与"指的是多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。而推挽输出就不行,如果高电平和低电平连在一起,会出现电流倒灌,损坏器件。
推挽、开漏对比 

 

二、ARM 架构 ARM7 ARM9 STM32 Cortex M3 M4 51 AVR 区别

ARM架构、ARM7、ARM9、STM32、Cortex M3 M4、51、AVR之间有什么区别和联系?

ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类。

ARM7:一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核。

ARM9:一类采用ARMv4或ARMv5架构的,使用哈佛结构的内核。

Cortex M3:采用了ARMv7架构的,使用哈佛结构的内核。

Cortex M4:采用了ARMv7架构的,使用哈佛结构的内核。(较前者最大区:增加了一个DSP处理功能,SIMD单指令多数据功能。其他区别请自己在实际项目开发中体验)

STM32:意法半导体公司(ST)推出的系列基于Cortex-M0/Cortex-M3/Cortex-M4等内核的微处理器/微控制器芯片。

图片
51:Intel在1981年推出的由8031微控制器芯片改造升级的、使用CISC指令集的、冯诺依曼架构的、8位的8051微控制器。后Intel将8051微控制器的内核授权给其他芯片厂商,使得市面上广泛出现类似于8051的芯片,这种采用8051内核的芯片被简称为51。
图片
AVR:一系列由Atmel公司在九十年代初推出的系列8位的、采用改进哈佛结构的、使用RISC指令集的微处理器芯片。
图片

最开始的Intel公司都是自己从头研发处理器芯片。从4004、8008、8086、80286……TI公司的TMS 1000……还有其他的公司研发的可编程芯片。因为是不同公司,而且各公司之间也不可能有交流(防止商业秘密泄露),所以各自做的芯片都有在内部CPU、总线、存储单元、指令集上的不同(如果有相同,那就是专利侵权了,比如Intel当年锲而不舍控告AMD)。但每个公司研发的新老芯片之间都有一定的结构和技术上的传承,所以出现了不同公司研发的芯片中有不同的架构。

架构 architecture:是一个抽象的概念,是一个结构内的元素及元素间关系的一种主观映射的产物。概念性的东西请看微架构。

比如我们常说的计算机处理器有486、Ivy Bridge、Pentium M……这就是架构的不同(其都从属于x86架构),维基的内容里只提到了计算机处理器中的常见硬件架构,而没提到你想了解的、常用于嵌入式系统中的微处理器/微控制器芯片所用到的架构。

而所谓的联系,就是我前面用分割线隔离开来的:ARM架构到STM32这些名称都属于ARM架构的范畴。

这两天忙着考虑控制步进电机的程序设计,所以脑子有点不够用,表达有点障碍。如果你关注过计算机CPU历史,就能理解我所说的架构是怎么一回事。

内核 IP core:概念请看IP核。可以说IP核是硬件架构这个抽象概念在芯片内的具体实现。

上面说了,最开始都是各个厂家自己做,从架构研发到芯片成型,这种好处是自己完全掌握了核心技术。但劣势是投入巨大,一旦大投入,但设计出来的芯片因为架构的不合理而导致市场流失,那之前的投入就打水漂了。

而当年Intel的8031和8051在嵌入式工控领域热卖(其实现在还有些工控领域坚持用8031,因为稳定,这个以后有空再说)。而Intel可能是从生产成本和扩展领域方面的考虑(人家做计算机微处理器比这赚钱多了),自己逐渐放弃了8051芯片的生产,转而允许授权其他公司生产。集成芯片内部就是一堆晶体管的集合,用硬件描述语言来规定晶体管的排列组合从而实现中央处理器、总线,存储单元……,Intel把如何实现8051架构的硬件描述语言授权卖给其他公司(买内核),获授权的公司就能生产具有8051内核的芯片了。

微控制器MCU/微处理器μP:

一开始只有小型微型计算机所使用的微处理器,后来Intel从4004发展到8086阶段中衍生出了专门用于工业控制方面的8031到8051,然后是用于计算机的微处理器慢慢发展向超高集成度、大容量、高频率、大处理能力以符合计算机技术的日益发展需求。而8051则平稳发展向了高稳定性、多功能集成度的微控制器,以满足工业控制领域对内存需求相对不是太大,但稳定性高、外设功能较多、占用面积小的要求。

最开始的区分就是微控制器带有内部RAM(等同于计算机的内存条,当然芯片内集成不会有那么大的内存,一般撑死了128K内存)、和ROM(等同于计算机的硬盘,当然也不会有像硬盘大的容量),以及其他的外设功能(如串口、spi、I2C等功能)。简单的说就是把一个缩小资源容量的计算机放到一个芯片内。也因为这样单芯片集成了一个完整的计算机系统在里面,大陆地区在80、90年代的电子工程师将其称为“单片机”,然后影响至今。

(注意,一个完整的计算机系统是处理器、总线、存储结构、输入输出结构,所以不要跟我说为啥没有显示器和鼠标键盘,它单片机也敢说继承了一个计算机系统,你可以翻翻《计算机系统原理》课本)

而计算机微处理器因为需要从处理数据角度考虑,纯粹只做处理方面的升级,所以在一开始的区分中,微处理器是不集成RAM、ROM、和其他外设功能的。

只是因为PowerPC往嵌入式发展,以及后来ARM的出现,开始慢慢的又缩小了微处理器和微控制器的区别,这些微处理器也开始集成了RAM、ROM、其他外设……

但现在国际上也没有一个统一的,通用的标准说微处理器和微处理器之间的区别是什么。跟“单片机”一样,都是工程师自己叫出来的。也有人把8051也称为微处理器的……

而从我做过的TI的DSP、ARM7、ARM9等芯片来看:

微处理器μP是需要通过并口外扩RAM、ROM,并且程序从外部ROM启动,在外部RAM运行的。

微控制器MCU通过内部ROM启动程序,在内部或外部RAM运行程序的。

这只是我的个人见解,因为有的芯片可以被配置为微处理器,也可以被配置为微控制器,其配置后的区别就是程序从哪里启动在哪里运行。比如德州仪器TI的TMS320F2812 DSP芯片。

BTW:DSP芯片本质上其实也是一个微处理器/微控制器芯片,只是它内含了DSP数字信号处理功能,比如上面说到的Cortex-M4也是集成了DSP数字信号处理功能呢,但ARM公司不称呼它为DSP,这都是工程师自己称的。没有统一标准。

ARM和 Intel谁能代替 DSP?
//


关于冯诺依曼结构


冯诺依曼结构:是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。应该说ARMv3之类的内核的存储结构模式和寻址模式使用了这种冯诺依曼结构,一个完整的微处理器架构还需要指令集等其他系列结构。

如果是问不理解冯诺依曼结构的话,建议学习一下《计算机系统》或《计算机系统原理》这一类书籍。在我记忆中貌似大学大一大二必修的《计算机原理》这一类的都会提到(用于考计算机一二级神马的教材)。             whaosoft aiot http://143ai.com
//  
插一个关于嵌入式概念的补充


IEEE和IEC对于嵌入式系统(Embedded System)的诠释,从最早期的4004、8031、8051,直到现在流行的ARM和很难学的PowerPC,这些芯片如果应用在“用于控制、监视或者辅助操作机器和设备的装置”上时,都应该是属于嵌入式(还有人曾将X86架构的80386用于嵌入式系统的)。

所以不要再来问我如何从单片机转向嵌入式这种问题了。因为做单片机开发本身就是嵌入式开发。要问请问清楚你是想从8051转向ARM还是PowerPC。

最后,我想提一下CPU这个概念:一般人听到CPU都会想到个人电脑里面的那个被散热片、风扇重压的大芯片。其实严格来说这是一个错误的概念。

CPU:(zh.wikipedia.org/wiki/CPU)严格来说CPU只是指微处理器/微控制器芯片内部的中央处理器这个模块,但人都有把某主要功能夸大、忽略其他必备的辅助功能的这种思维。所以有的时候听到了某个电子工程师、嵌入式工程师说CPU输出什么什么东西的时候,不要以为他在说电脑里的那颗大芯片,他可能是在说ARM、PowerPC、51、AVR之类的芯片。

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

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

相关文章

解决github分支提交冲突

一、背景 github上fork了base仓库 648540858/wvp-GB28181-pro 到自己仓库,并进行了个性化更改。base仓进行了代码更新,此时我和base仓有了冲突如何解决? 思路:自己仓库的代码合并到主仓是Pull Requests,两个不同仓库or…

PDF怎么转图片?建议收藏这些方法

PDF是我们在传输文件的时候,经常会使用到的一种格式。它可以帮助我们在不同的设备上,打开文件并且不会影响到文件内容的文字结构。而jpg是一种常见的图片格式,有时我们可能会遇到PDF转jpg的情况,那你们知道PDF转jpg怎么转吗&#…

git push 所有分支到新仓库地址

例:从gitee上拉取test-code代码,到自己新仓库地址,test-code仓库有master和test两个分支;具体命令和结果如下 xxxxxxxxopen02:~/src/code/tmp$ git clone gitgitee.com:striver-wy/test-code.git //从gitee下载代码 Cloning into test-code..…

CVPR2022-Rethinking Efficient Lane Detection via Curve Modeling

概述 总结分析了当前(图像)车道线检测的三类方法,为了解决现有多项式曲线方法的优化困难,提出了使用参数贝塞尔曲线拟合车道线的方案。此外还提出了基于变形卷积的特征翻转融合,以利用驾驶场景中车道的对称特性。 Pape…

Mysql基于binlog日志恢复数据

Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的问题 1.net-tools未安装,执行yum install net-tools 2.远程连接工具连接不上mysql grant all privileges on *.* to root% identified…

R语言caret机器学习(四):数据拆分

【R语言数据科学】 🌸个人主页:JOJO数据科学📝个人介绍:统计学top3高校统计学硕士在读💌如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏✨本文收录于【R语言数据科学】本系列主要介绍R语言在数据科学领域的应用包括: R语言编程基础、R语言可视化、R…

垃圾分类查询管理系统

垃圾分类查询管理系统1.介绍1.1 功能点2.软件架构3.安装启动4.运行截图参考网站:https://lajifenleiapp.com/ 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类&…

【最详细最全】Github的jenkins的自动化部署

1>创建项目 2>General 设置 3>配置源码管理 1>勾选Git选项之后,就会出现相关的填写项,根据下图的指引来填写就行了 填写项目的 git 地址, eg: GitHub - Leader755/leader755.github.io: github 博客(hexo一键搭建博…

(附源码)计算机毕业设计SSM基于Java的图书馆座位预约系统

(附源码)计算机毕业设计SSM基于Java的图书馆座位预约系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 …

Torch网络结构/训练过程可视化

一、网络结构的可视化 我们训练神经网络时,除了随着step或者epoch观察损失函数的走势,从而建立对目前网络优化的基本认知外,也可以通过一些额外的可视化库来可视化我们的神经网络结构图。这将更加地高效地向读者展现目前的网络结构。 为了可…

ARM接口技术:汇编语言实现1~100的累加,1+2+3+4+...+99+100=?还有汇编语言程序的编译和运行步骤

进入正题: 在终端输入:vi sum.S,建立文件 1、编写代码:定义两个变量,r0、r1 .global _start _start:mov r0,#1mov r1,#0 sum:add r1,r0add r0,#1cmp r0,#100bgt endb sumend:mov r2,r1nopnopnop2、编译建立一个makefi…

客流管控系统可以协助博物馆进行人数管理

进入21世纪,我国的博物馆建设迎来了新的高潮,无论是数量,还是规模,都前所未有。目前,全国的博物馆总数已经达到5 000多座,为了管控博物馆的人数,很多博物馆都安装了客流管控系统。客流管控系统可…

Android 开发学习(一)

文章目录1. Android 安装2. 创建第一个Android项目3. 什么是Gradle?4. 运行第一个Android程序5. Android架构 介绍6. 控件 之 textView(文本)6.1 textView 基础语法6.2 带阴影的textView6.3 跑马灯效果的 textView7. 控件 之 Butto(按钮)7.1 Button 的 基本属性 和 …

电源纹波,有这样几种测试方法,值得收藏

【嵌入式学习资料】V/ X 公/众/号 https://pan.baidu.com/s/1K8_EKVtOaN42IvuFSj8vJA tiquma:6666 纹波测试在电源质量检测中十分重要,虽然看似简单,但却包含诸多细节。这些细节在您测试的时候是否面面俱到?我们又如何把一项简单…

上海雷卯推出SOD123HE封装肖特基,帮工程师解决发热问题

为何肖特基二极管会发热? 肖特基二极管在工作时发热量不可小视,发热量大小与实际工作电流大小有关,与肖特基二极管实际压降大小有关。这是可以通过测量和计算得到,很方便。 方法是:测得二极管两端实际压降假如为0.5V…

浅谈C语言文件操作以及对先前通讯录的简单改造

文章目录前言1.为什么要使用文件以及文件简单介绍文件的简单介绍2.文件的相关操作1.文件的打开和关闭2.文件的顺序读写文件的顺序写文件的顺序读总结3.文件的随机读写4.文本文件和二进制文件介绍以及文件的读取结束的判定3.文件缓冲区4.对先前通讯录的改造5总结前言 之前简单的…

一家公司需要多少名产品经理?从这三个角度评估

扩张你的产品团队前应当考虑的一件事情是,当前阶段问题的根源是否真的在于人手不足——毕竟只有在适当的发展时机扩张团队,才能起到良好的作用。 当你开始考虑是否要扩张产品团队时,你就会面临所谓的“高质量问题”。 对更多产品管理资源的需…

C# 连接 MySQL 数据库

一、需求 C# 使用 MySQL 数据库的情况还是比较少的,大部分使用 Windows 平台一般使用 SQL Server,在两年前我买过100元一年的学生服务器,当时也是买着玩的,装 MySQL 数据库使用起来就非常卡,也不知道为什么&#xff0…

node.js中的url.parse方法

学习node.js中的url.parse方法 文章目录前言一、URL模块之parse方法详解1、参数2、实例例子1:url.parse只传一个参数的情况例子2:url.parse第二个参数为true的情况例子3:url.parse第三个参数为true的情况默认为false情况:设置为tr…

【LeetCode成长之路:序列DP运用题】940.不同的子序列 II

⭐️前面的话⭐️ 本篇文章介绍一道动态规划序列DP运用题【940. 不同的子序列 II】,难度为: 困难 ,标签 : 动态规划,展示语言java。 📒博客主页:未见花闻的博客主页 🎉欢迎关注&…