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

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

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

一、GPIO和门电路原理图

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

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

数据寄存器:1或0

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

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

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

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

二、协议类接口

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

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

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

  • UART

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

       

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

  • I2C

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

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

其数据传输格式为:

  • SPI

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

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

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

  • NAND Flash

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

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

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

三、内存类接口

内存类接口主要有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的整数倍,因此最低两位地址线可以不接。

         

2440中内存地址映射图。

时间: 2024-11-09 09:24:36

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

[转] 嵌入式入门学习法(写给惠州学院电子系学嵌入式的同学们)

我是08届惠州学院电子系的毕业生,现在从事于linux嵌入式研发工作.本人写这一篇所谓的“嵌入式入门学习法”,是因为自己一开始学习嵌入式的时候,电子系里几乎没有人可以带自己入门或者教授相关学习方法,基本上都是自己摸索着学习,可想而知,这过程蛋疼的程度让人想死.所以希望通过这一年来自己的学习,整理出一条学习路线给以后电子系的师弟们作参考. 废话不多说,进入正题.首先大家应该理解两个概念,什么是处理器,什么是控制器.相信很多电子系的学生,一开始是从玩51单片机开始进入电子研发领域的,再者就是AVR单

ARM与嵌入式入门的建议(转)

转载:不知道这是哪位大神写的学习嵌入式的经验 转载出来供自己以后借鉴 感谢原作者 ARM与嵌入式入门的建议 由于很多人总问这个问题,所以这里做一个总结文档供大家参考.这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE.也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主.我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一

poj3624 01背包入门 dp+滚动数组

poj3624 01背包 dp+滚动数组 Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 25458   Accepted: 11455 Description Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the bes

【转载】COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM

原文:COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM 原文:http://www.codeproject.com/Articles/633/Introduction-to-COM-What-It-Is-and-How-to-Use-It 本文的目的是为刚刚接触COM的程序员提供编程指南,并帮助他们理解COM的基本概念.内容包括COM规范简介,重要的COM术语以及如何重用现有的COM组件.本文不包括如何编写自己的COM对象和接口. COM即组件对象模型,是Component

Cocos2d-x 3.1.1 安装和创建项目---(入门必看)

1.安装python2.7.8,安装cocos2dx 3.1.1,并将python2.7.8安装路径加入系统环境变量中; 2.python2.7.8很简单,基本就是默认就可以了. 3.cocos2dx 3.1.1下载完之后,就解压.然后F:\cocos2d-x-3.1.1\build(我的解压之后是放在f盘的),然后在build这里可以找到cocos2d-win32.vc2012.sln,用vs2012打开它,然后生成解决方案(生成的这个过程比较慢,大概10分钟吧),然后在F:\cocos2d-

嵌入式入门-远程登录

嵌入式入门-远程登录 一 登录前提 1 windows与linux相互ping通 ifconfig 2 linux关闭防火墙 /etc/init.d/iptables stop 二 登录工具-命令行 1 putty 2 SecureCRT 三 登录工具-图形化 1 vncserver 附:my_qq872785786若想免费获取更多资料,请联系我即可-共享精神,提供2000G+的技术资料 ios,安卓,嵌入式,及各种编程语言

COM编程入门不得不看的文章:第二部分 深入COM服务器

原文:http://www.codeproject.com/Articles/901/Introduction-to-COM-Part-II-Behind-the-Scenes-of-a 本文为刚刚接触COM的程序员提供编程指南,解释COM服务器内幕以及如何用C++编写自己的接口(前一篇博文主要是COM编程的入门:COM编程入门不得不看的文章 :第一部分 什么是COM,如何使用COM).继上一篇COM编程入门之后,本文将讨论有关COM服务器的内容,解释编写自己的COM接口和COM服务器所需要的步

嵌入式入门-破解root密码

嵌入式入门-破解root密码 一 进入grub 1 开机倒数5秒的的时候按下ESC键进入grub 2 选择第二项按e 3 进入命令行按空格和1进入单用户模式即安全模式 4 直接按一个空格在写一个1也可以 5 进入1模式 6 vi /etc/passwd 7 删除第一行的root的密码位x 8 然后ESC返回按b重启 二 返回图形化界面 1 root进入系统 2 修改passwd中root密码即可变为自己设置的root密码 3 在没有设置grub密码的情况下可以破解,若设置了grub的密码这不能破

嵌入式入门-linux文件共享

 嵌入式入门-linux文件共享 一 文件共享前提 1 linux与win相互ping通 2 关闭linux的防火墙/etc/init.d/iptables stop 二 连接WinSCP 三 连接samba 1 安装samba:yum install samba 2 添加用户:useradd win 3 设置密码:passwd win 4 设置在PC上登录samba的密码sampasswd -a win 5 配置samba: path:共享的路径为根目录 wrianle:可写 vaild us