01-嵌入式入门-如何看原理图

2023-05-16

    最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识。新手学习知识感觉有一个通病:喜欢收集各种各样的视频、资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的"学习综合征"。而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军。市场上关于嵌入式方面的视频或资料有很多,比如国嵌、韦东山、华清远见、朱有鹏等等,各有千秋但是最后还是殊途同归,以我之见把其中一套吃透也算是入门,之后的成长还是要靠工作中的沉淀,看源码,做项目才能提高。

    现在准备根据韦东山老师的视频写一下自己学习的体会,这一次写的主要是关于如何看原理图,主要分为以下几个部分:GPIO和门电路,协议类接口(UART/I2C/SPI/NAND)、内存类接口。

一、GPIO和门电路原理图

   General Purpose Input Output(通用输入/输出)简称为GPIO,或总线扩展器。通常GPIO寄存器可以分为三类:

控制寄存器:为输入、输出、或其它特殊功能

数据寄存器:1或0

上拉寄存器:设置IO的输出模式是高阻,还是带上拉的电平输出,或者不带上拉的电平输出


输入.png输出.png

    上图所示,可以配置按键所以对应引脚控制寄存器为输入功能,LED引脚为输出功能,那么就通过按键控制LED灯的亮与灭。上拉(下拉)电阻是将不确定的信号通过一个电阻钳位在高(低)电平,电阻同时起限流作用。

  

上拉.png下拉.png

  上图所示的电阻作用就是分别对应上拉电阻,与下拉电阻。引脚输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到VCC,影响电路工作,所以要接上拉电阻。下拉电阻情况相反,让芯片引脚输出低电平,结果由于后续电路影响输出的低电平达不到GND,所以接个下拉电阻。

  门电路用以实现基本逻辑运算和复合逻辑运算的单元电路。常用的门电路在逻辑功能上有与门、或门、非门、与非门、或非门、与或非门、异或门等几种。如下图所示:

门电路.png


二、协议类接口

   协议类接口电路分为两个方面:硬件电路的搭建与引脚工作的时序。协议类接口主要实在两个设备之间进行通信,类比两个人的对话,就要解决两个问题:

1、你说的话别人要能听懂(两个设备之间约定好相同的信号协议)

2、双方说话的语速不能太快,要不然别人反应不过来(双方满足相同的时序要求)

  •   UART

  这里以UART、I2C、SPI、NAND Flash四个个通信协议说明协议类接口的硬件原理图与时序图。通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。在TQ2440中串口电路如下:

串口.png       串口2.png

  由于UART传输过程,为了保证信号的有效性和传输距离,采用的是负逻辑电平,即逻辑"1"用-3~-12V表示,逻辑"0"用3~12V表示,因此2440输出的信号需要进行电压转换,上图即为电压转换的原理图。在UART的协议中,没有统一的时钟,依靠起始位和停止位标识一帧数据。其帧格式起始位1位(低电平),数据位5-8位,校验位0-1位,停止位有(1、1.5、2 高电平表示)几种。

串口数据.png

  • I2C  

  I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出.需通过上拉电阻接电源VCC.当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.

上拉.png


  在I2C总线上,发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续。数据传输的开始条件为:时钟保持高电平时,数据由高电平变为低电平;结束条件为:时钟保持高电平时,数据由低电平变为高电平。

I2C.png

  其数据传输格式为:

I2C数据传输.png

  • SPI

  SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议,比如AT91RM9200。在TQ2440中,没有专门引出SPI总线的外设接口,但是查看2440芯片手册可以知道,该芯片支持4中SPI工作方式。其总线构成可以用下图表示:

SPI.png

  各引脚表示的含义为:1)MOSI – Master数据输出,Slave数据输入  2)MISO – Master数据输入,Slave数据输出  3)SCK  – 时钟信号,由Master产生  4)/CS  – Slave使能信号,由Master控制。

SPI数据传输.png

  SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB first)。如上图所示,在SCK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

  • NAND Flash

  Nand-flash存储器是flash存储器的一种,NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。下图为一块NAND Flash芯片,除去不用引脚与电源引脚外,主要有数据引脚线、片选、写、读等引脚,个引脚功能可从芯片手册上查到。

nand.png

  在Nand Flash芯片,一块芯片称为一个device,一个device又可以分为多个Block,一个Block可以分为多页,因此要读取指定区域的数据时,要分多次传输地址。

nand数据.pngnand地址传输.png


  

  以上介绍了四个协议类接口,其具体的使用与编程在以后再作总结。


三、内存类接口

  内存类接口主要有SDRAM、NOR Flash等芯片,这类芯片信号传输可以分为片选、地址信号、数据信号三大类。对于这类设备的访问,首先选定其片选信号,其次确定地址,在读取数据。在2440中,其内存控制分为8个区域,每个区域为128M,下图为TQ2440中,sdram的电路图,这是由两块16位的SDROM组成一个32位SDROM。由图可以知道其片选信号接到2440的nGCS6,在2440的内存映射图中nGCS6的起始地址为0x30000000,这也是为什么我们刚开始学习ARM裸机编程时,老师让我们将程序烧录到0x30000000。在图中,地址线接到2440的ADD2-ADD14,而没有接ADD1、ADD0那是因为,2440的字宽为32位,即4个字节,最少读取数据与写入数据的单元为4个字节。那么,想要处理一个字节数据也是只有先取出4个字节,再从中拆除需要的数据,处理的数据必然是4的整数倍,因此最低两位地址线可以不接。



sdrom.png    sdrom1.png     sdrom2.png

  2440中内存地址映射图。

内存.png



本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/2052206,如需转载请自行联系原作者

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

01-嵌入式入门-如何看原理图 的相关文章

  • ROS的单线程Spinning和多线程Spinning

    单线程Spinning ros spin 是最简单的单线程自旋 它会一直调用直到结束 用法 ros spin 另一个单线程spinning是ros spinOnce 它定期调用等待在那个点上的所有回调 用法 ros spinOnce 简单的
  • antd 的form 表单怎么回显数据_antd Form表单的initialValue问题

    在initial中是有初始值的 xff0c 但是却不显示初始值 xff0c 请大佬解答一下这个问题 const formItem 61 type 3 label 39 柜子编号 39 name 39 ID 39 width 39 150px
  • echarts 与 highcharts

    一 xff0e 简介 echarts echarts是百度公司前端开发的一个图表库 xff0c 2013年发布第一版 xff0c 主要采用canvas画图 xff0c 目前版本3 8 4 xff1b 完全免费 xff1b highchart
  • c语言不同源文件变量,我在哪里可以在c程序中声明全局变量,无论是在头文件还是源文件中...

    本问题已经有最佳答案 xff0c 请猛点这里访问 嗨 xff0c 我是一个C 43 43 开发者 xff0c 现在我正在做C编程 我的问题是 xff0c 在C程序中 xff0c 哪个地方更好地声明全局变量 头文件或源文件 如果我的全局变量未
  • ***网址大全

    网址大全 最全的 国内 基地 http www hackbase com 帝国 http www darkup com 中国 联盟 http www chinahacker com起点 网络 http www qdhack com 边缘 h
  • 监控硬盘容量计算

    如何快速的计算摄像头一天存储量 摄像机的码流即监控视频流的带宽 xff0c 分为主码流和子码流 xff0c 主码流用来存储 xff0c 子码流一般用来预览 xff0c 所以录像回放时大家看到的视频质量要高于预览时看到的 在不同分辨率 帧率以
  • 【原】Hadoop伪分布模式的安装

    Hadoop伪分布模式的安装 环境参数 1 Host OS xff1a Win7 64bit 2 IDE xff1a Eclipse Version Luna Service Release 2 4 4 2 3 虚拟机 xff1a VMwa
  • 背景建模技术(四):视频分析(VideoAnalysis)模块

    视频分析模块主要包含两个函数 xff0c 一个是VideoAnalysis setup xff08 xff09 xff0c 其主要功能就是确定测试的视频是视频文件或摄像头输入亦或是采用命令行参数 xff1b 第二个函数是VideoAnaly
  • ubuntu 安装docker + seagull实现图形化管理

    环境 xff1a ubuntu 14 04 server 通过Docker源安装最新版本 要安装最新的 Docker 版本 xff0c 首先需要安装 apt transport https 支持 xff0c 之后通过添加源来安装 sudo
  • Ethzasl MSF源码阅读(1):程序入口和主题订阅

    关于IMU融合知乎上的一篇问答 xff1a 有哪些开源项目是关于单目 43 imu做slam的 xff1f Ethz的Stephen Weiss的工作 xff0c 是一个IMU松耦合的方法 1 程序入口 xff1a ethzasl msf
  • 自动化运维的5大好处

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 努力解决企业IT日益增长的运维挑战 xff0c 大多数运维团队面临的最核心问题在于 如何用更少的资源完成更多工作 自动化运维则是这一问题的理想解决方案 xff0c 特别是在
  • UP Board 串口使用心得

    前言 原创文章 xff0c 转载引用务必注明链接 本文使用Markdown写成 xff0c 为获得更好的阅读体验和正常的图片 链接 xff0c 请访问我的博客 xff1a http www cnblogs com sjqlwy p up s
  • [转]Linux守护进程基础

    为什么80 的码农都做不了架构师 xff1f gt gt gt 1 守护进程中涉及到的基本概念 1 1进程组 1 1 1 进程组基本概念 进程组是一个或多个进程的集合 xff0c 可以接收来自同一个终端的各种信号 每运行一个程序或是命令都将
  • Spring Cloud核心组件详解

    转自 xff1a 作者 xff1a 石杉的架构笔记 链接 xff1a https juejin im post 5be13b83f265da6116393fc7 来源 xff1a 掘金 著作权归作者所有 商业转载请联系作者获得授权 xff0
  • unity 3d开发的大型网络游戏

    unity 3d开发的大型网络游戏 一 总结 1 unity的官网 上面应该有游戏列表 2 unity3D是很好的3d游戏引擎 xff0c 也支持2d xff0c 也能做很多画面精良的3A级游戏 3 范围 xff1a 电脑游戏 xff0c
  • 多系统电脑切换系统操作步骤

    1 电脑搜索栏输 msconfig 会出现下图 2 点引导 xff0c 多个系统的话 xff0c 引导这里显示的是多条信息 3 切换系统 在引导框中选中自己要切换的系统 xff0c 然后点击设为默认值 xff0c 再点应用 xff0c 再确
  • STM32标准外设库、 HAL库、LL库

    工作以来一直使用ST的STM32系列芯片 xff0c ST为开发者提供了非常方便的开发库 到目前为止 xff0c 有标准外设库 STD库 HAL库 LL库 三种 前两者都是常用的库 xff0c 后面的LL库是ST最近才添加 xff0c 目前
  • 图形算法可视化

    最近看了一些和图形 算法可视化相关的文章和代码 xff0c 挺有意思 xff0c 于是自己也学着做了些东西 迷宫生成算法 迷宫小时候玩过 xff0c 但从来没琢磨过迷宫是怎么设计的 xff0c 以为就是有人慢慢画出来的 看过网上这篇文章后
  • C/C++变量命名规则

    变量命名规则是为了增强代码的可读性和容易维护性 以下为C 43 43 必须遵守的变量命名规则 xff1a 1 变量名只能是字母 xff08 A Z xff0c a z xff09 和数字 xff08 0 9 xff09 或者下划线 xff0
  • 会议论文重新投稿算不算侵权?这肯定是所多人都遇到过的问题。

随机推荐

  • ubutu使用apt-get 安装报:Err http://security.ubuntu.com precise-security InRelease 等

    今天安装了下ubutu xff0c 安装完后按照教程使用apt get install 安装相关软件 xff0c 报错 复制错误百度了很久 xff0c 基本都是说源了问题 更换了好几个源 xff0c 还是没有成功 最后看见这个帖子 xff0
  • [追加评论]三款SDR平台对比:HackRF,bladeRF和USRP

    这三个月 xff0c 有幸把3种板子都用到了 说说使用体会 我用过其中的HackRF xff0c bladeRF x115 xff0c USRP B210 我并没有仔细的测量各种板子的射频指标什么的 xff0c 只是做各种实验的时候用到它们
  • linux zip

    zip r myfile zip 将当前目录下的所有文件和文件夹全部压缩成myfile zip文件 xff0d r表示递归压缩子目录下所有文件 2 unzip unzip o d home sunny myfile zip 把myfile
  • Eclipse中文注释乱码解决

    将别人的项目或JAVA文件导入到自己的Eclipse中时 xff0c 常常会出现JAVA文件的中文注释变成乱码的情况 xff0c 主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同 总结网上的建议和自己的体会 xff0c 可
  • H3C子接口配置要点及实例说明

    xfeff xfeff 类型一 xff1a 以太网子接口配置要点 单臂路由 第一步 xff1a 在路由器对端的交换机上配置好vlan信息 xff08 如vlan10 vlan20 xff09 第二步 xff1a 将交换机上与路由器直接相连的
  • 常用的SQL聚合函数:

    AVG 返回集合的平均值 COUNT 返回集合中的项目数 MAX 返回集合中的最大值 MIN 返回集合中的最小值 SUM 返回集合中所有或不同值的总和 GROUP BY 将结果按照指定的列进行分组 HAVING 过滤分组后的结果 聚合函数不
  • int型除以int型

    int型除以int型得到的还是int型 就算你是这样的 xff1a float a 61 5 3 xff0c 虽然你定义的a是float型 xff0c 但a得到的结果依旧是1 0000而不是1 66666 5 3先得到1 xff0c 然后再
  • Keepalived两节点出现双VIP情况及解决方法【原创】

    1 故障现象 俩台服务器keepalived的vip在俩台服务器同时出现 A xff1a 10 70 12 72 B xff1a 10 70 12 73 2 问题分析 1 xff09 先分析那台服务器在提供服务 A xff1a 10 70
  • 10款值得推荐的论坛系统源码

    无论您是一个技术娴熟的站长朋友 xff0c 还是初入互联网并致力于在这片领土发展的准站长 xff0c 或者您只是一个还未毕业的学生 xff0c 在为了毕业设计 课程设计不停的搜集资料 xff0c 只要您需要的是社区论坛系统的源码 xff0c
  • make[1]: *** [storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/all] 错误 2 解决方法...

    make 2 storage perfschema unittest pfs connect attr t 错误 1 make 1 storage perfschema unittest CMakeFiles pfs connect att
  • Yii2 中cookie的用法(1)

    Yii使用 yii web Cookie对象来代表每个cookie xff0c yii web Request 和 yii web Response 通过名为 cookies 的属性维护一个cookie集合 xff0c 前者的cookie
  • 修改.srt格式字幕文件

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 正文前 xff1a 20160821104107 下载了 惊天魔盗团2 电影来看 xff0c 发现字幕只有英文没有中文 打开 srt文件 xff0c 随便改了一下 xff0
  • VC6.0+MSDN 下载(含链接)安装 全教程

    Microsoft Visual Studio 6 0 简体中文企业版 下载路径显示不出 xff0c 这个软件比较好下载 xff0c 主要是MSDN MSDN CD1 http ftp sdshiyan cn soft program DN
  • Dynamic Drop Down(Translate Values)

    This code i have got Ittool box com It is very usefull we usually have requirement when we want to hide some translate v
  • Windbg实用手册

    摘要 Windbg的命令分为标准命令 xff0c 原命令和扩展命令 xff0c 输入问号 可以显示所有的标准命令的帮助信息 元命令以一个点 开始 xff0c 输入 help可以显示所有的原命令的帮助信息 扩展命令以叹号 开始 阅读全文 Ri
  • Spring注解@Component、@Repository、@Service、@Controller区别 .

    Spring 2 5 中除了提供 64 Component 注释外 xff0c 还定义了几个拥有特殊语义的注释 xff0c 它们分别是 xff1a 64 Repository 64 Service 和 64 Controller 在目前的
  • sql 语句中如何写判断

    当ID为26时 xff0c 查询的result是ok span class token keyword select span name span class token punctuation span span class token
  • 光流定位原理是什么??【转】

    转自 xff1a https www zhihu com question 35980316 Jessie Lee HIT 控制 无人机 光流是测速算法 xff0c 并不是直接定位的 简单理解 xff0c 光流就是通过检测图像中光点和暗点的
  • 算法杂货铺——分类算法之决策树(Decision tree)

    3 1 摘要 在前面两篇文章中 xff0c 分别介绍和讨论了朴素贝叶斯分类与贝叶斯网络两种分类算法 这两种算法都以贝叶斯定理为基础 xff0c 可以对分类及决策问题进行概率推断 在这一篇文章中 xff0c 将讨论另一种被广泛使用的分类算法
  • 01-嵌入式入门-如何看原理图

    最近由于找到的工作是偏于嵌入式方向 xff0c 因此又重新开始学习已经丢弃两年的知识 新手学习知识感觉有一个通病 xff1a 喜欢收集各种各样的视频 资料 xff0c 网盘里收藏一大堆 xff0c 但是却从没有打开看过 xff0c 到头来还