Linux驱动设计的硬件基础

驱动设计的硬件基础

1、处理器

1.1、通用处理器GPP

微控制器MCU和微处理器MPU 中会包含一个通用处理器核。MPU 通常代表一个 CPU(中央处理器),而 MCU 则强调把中央处理器、存储器和外围电路集成在一个芯片中。早期,微控制器被称为单片机,指把计算机集成在一个芯片内。

中央处理器的体系架构可以分为两类, 一类为冯· 诺伊曼结构, 一类为哈佛结构。

1.2、数字信号处理器DSP

数字信号处理器(DSP)针对通信、图像、语音和视频处理等领域的算法而设计。DSP 分为两类,一类是定点 DSP,一类是浮点 DSP。浮点 DSP 的浮点运算用硬件来实现,可以在单周期内完成,因而其浮点运算处理速度高于定点 DSP。

2、存储器

存储器可分为只读储存器(ROM) 、闪存(Flash) 、随机存取存储器(RAM) 、光介质存储器和磁介质存储器。

 

2.1、ROM

ROM 还可再细分为不可编程 ROM、可编程 ROM(PROM)、可擦除可编程 ROM(EPROM)和电可擦除可编程 ROM(EEPROM),目前 ROM 有被 Flash 替代的趋势。

2.2、Flash

NOR(或非)和 NAND(与非)是市场上两种主要的 Flash闪存技术。

  • NOR Flash 和 CPU 的接口属于典型的类 SRAM 接口,不需要增加额外的控制电路。而 NAND Flash 和 CPU 的接口必须由相应的控制电路进行转换,当然也可以通过地址线或 GPIO 产生 NAND Flash 接口的信号。

  • NOR Flash 的特点是可芯片内执行(XIP,eXecute In Place),程序可以直接在 NOR内运行。。NAND FLASH 以块方式进行访问,不支持芯片内执行

  • NAND Flash 较 NOR Flash 容量大,价格低

  • NAND Flash 中每个块的最大擦写次数是一百万次,而 NOR 的擦写次数是十万次。

  • NAND Flash 的擦除、编程速度远超过 NOR Flash。

  • 由于 Flash 固有的电器特性,在读写数据过程中,偶然会产生 1 位或几位数据错误,即位反 转,NAND Flash 发生位反转的几率要远大于 NOR Flash。位反转无法避免,因此,使用 NAND Flash 的同时,应采用错误探测/错误更正(EDC/ECC)算法。

     

    注:Flash 的编程原理都是只能将 1 写为 0,而不能将 0 写为 1。所以在 Flash 编程之前,必须将 对应的块擦除,而擦除的过程就是把所有位都写为 1 的过程,块内的所有字节变为 0xFF。

     

2.3、RAM

以上所述的各种 ROM、Flash 和磁介质存储器都属于非易失性存储器(NVM)的范畴,掉电信息不会丢失,而 RAM 则与此相反,为易失性存储器

RAM 也可再分为静态 RAM(SRAM)和动态 RAM(DRAM)。

DRAM 以电荷形式进行存储,数据存储在电容器中。由于电容器会由于漏电而导致电荷丢失,因而DRAM 器件需要定期被刷新。 通常所说的 SDRAM、DDR SDRAM 皆属于 DRAM 的范畴。

SRAM 是静态的, 只要供电它就会保持一个值, SRAM没有刷新周期

每个 SRAM 存储元由 6 个晶体管组成,而 DRAM 存储单元由 1 个晶体管和 1 个电容器组成。

针对许多特定场合的应用,嵌入式系统中往往还使用了一些特定类型的 RAM。

1.NVRAM:非易失性 RAM

NVRAM 借助带有备用电源的 SRAM 或借助 NVM(如 EEPROM)存储 SRAM的信息并恢复来实现

2.DPRAM:双端口 RAM

DPRAM 的特点是可以通过 2 个端口同时访问,具有 2 套完全独立的数据总线、地址总线线和读写控制线,通常用于 2 个处理器之间交互数据。

 

 

3.CAM:内容寻址 RAM

CAM 是以内容进行寻址的存储器,是一种特殊的存储阵列 RAM,它的主要工作机制就是将一个输入数据项与存储在 CAM 中的所有数据项自动同时进行比较,判别该输入数据项与 CAM 中存储的数据项是否相匹配,并输出该数据项对应的匹配信息。

 

 

3、低速接口与总线

3.1、串口UART

1、RS232

全双工、点对点、几米。

电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现.

RS-232-C标准规定的数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、19200、38400波特

RS-232点对点连接,一个串口只能连接一个外设。

接口的信号电平值较高,易损坏接口电路的芯片。因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。传输速率较低,在异步传输时,波特率为20Kbps

传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。

2、RS-485

半双工、主节点、轮询方式、一公里

具有联网功能

RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点

下面我们看下 RS485 的特点:

(1)接口电平低,不易损坏芯片。 RS485 的电气特性:逻辑“ 1”以两线间的电压差为+(2~6)V 表示;逻辑“ 0”以两线间的电压差为-(2~6)V 表示。接口信号电平比 RS232 降低了,不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。

(2)传输速率高。10 米时,RS485 的数据最高传输速率可达 35Mbps,在1200m 时,传输速度可达 100Kbps。

(3)抗干扰能力强。 RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。

(4)传输距离远,支持节点多。RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到128 个或者 256 个节点,最大的可以支持到 400 个节点。

3、RS-422

全双工 点对多 一公里

共5根线。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。

4、串口基础知识

串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。

通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

1、波特率

这是一个衡量通信速度的参数它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。波特率可以远远大于这些值,但是波特率和距离成反比。

2、数据位

这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

3、停止位

用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

4、奇偶校验位

在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。

3.2、集成电路总线IIC

I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL

1、初始化、起始和停止

初始化:IIC的初始化为SDA和SCL均为高。

开始信号:处理器让SCL时钟保持高电平,然后让SDA数据信号由高变低就表示一个开始信号。同时IIC总线上的设备检测到这个开始信号它就知道处理器要发送数据了。

停止信号:处理器让SCL时钟保持高电平,然后让SDA数据信号由低变高就表示一个停止信号。同时IIC总线上的设备检测到这个停止信号它就知道处理器已经结束了数据传输,我们就可以各忙各个的了,如休眠等。

 

2、数据传输和响应信号

数据传输:SDA上的数据只能在SCL为低电平期间翻转变化,在SCL为高电平期间必须保持稳定,IIC设备只在SCL为高电平期间采集SDA数据。

在选择从设备时,如果从设备采用 7 位地址,则主设备在发起传输过程前,需先发送 1 字节的地址信息,前 7 位为设备地址,最后 1 位为读写标志。之后,每次传输的数据也是 1 个字节,从 MSB 位开始传输。每个字节传完后,在 SCL 的第 9 个上升沿到来之前,接收方应该发出 1 个 ACK 位。SCL 上的时钟脉冲由 I 2 C 主控方发出,在第 8个时钟周期之后,主控方应该释放 SDA。

响应信号(ACK):单片机发完8bit数据后就不再驱动总线了(SDA引脚变输入),而SDA和SDL硬件设计时都有上拉电阻,所以这时候SDA变成高电平。那么在第8个数据位,如果外接IIC设备能收到信号的话接着在第9个周期把SDA拉低,那么处理器检测到SDA拉低就能知道外接IIC设备数据已经收到。

 

 

注:将SCL拉低,为后续SDA电平变化做准备参考博客从硬件到软件的实现过程:https://blog.csdn.net/lingdongtianxia/article/details/81135456

3.3、SPI

1、简介

SPI是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线。主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

  • 优点:

支持全双工,push-pull的驱动性能相比open-drain信号完整性更好;

支持高速(100MHz以上);

协议支持字长不限于8bits,可根据应用特点灵活选择消息字长;

硬件连接简单;

  • 缺点:

相比IIC多两根线;

没有寻址机制,只能靠片选选择不同设备;

没有从设备接受ACK,主设备对于发送成功与否不得而知;

典型应用只支持单主控;

相比RS232 RS485和CAN总线,SPI传输距离短;

2、硬件结构

SPI总线定义两个及以上设备间的数据通信,提供时钟的设备为主设备Master,接收时钟的设备为从设备Slave。

信号定义如下:
SCK : Serial Clock 串行时钟
​
MOSI : Master Output, Slave Input 主发从收信号
​
MISO : Master Input, Slave Output 主收从发信号
​
SS/CS : Slave Select 片选信号

电路连接如下:

单个主设备和单个从设备:

单个主设备和多个从设备,通过多个片选信号或者菊花链方式实现:(其实就是串并联两种方式)

片选时,主机的NSS信号为高电平,从机的NSS信号被主机片选,即低电平的被选中。

3、SPI传输模式

通过设置控制寄存器SPICR1中的CPOL和CPHA位,将SPI可以分成四种传输模式。

CPOL,即Clock Polarity,决定时钟空闲时的电平为高或低。

不同的从设备可能在出厂是就是配置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式,具体如下:

Mode0:CPOL=0,CPHA=0 Mode1:CPOL=0,CPHA=1 Mode2:CPOL=1,CPHA=0 Mode3:CPOL=1,CPHA=1

时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA是用来配置数据采样是在第几个边沿: CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时 CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时 CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿 CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

例如: CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是 SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。

CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是 SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是 SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。

CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是 SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。

3.4、CAN BUS

1、简介

CAN是控制器局域网络(Controller Area Network, CAN)的简称,是一种能够实现分布式实时控制的串行通信网络。

优点:

传输速度最高到1Mbps,通信距离最远到10km,无损位仲裁机制,多主结构。近些年来,CAN控制器价格越来越低。

Ø 低成本:ECUs通过单个CAN接口进行通信,布线成本低。

Ø 高集成:CAN总线系统允许在所有ECUs上进行集中错误诊断和配置。

Ø 可靠性:该系统对子系统的故障和电磁干扰具有很强的鲁棒性,是汽车控制系统的理想选择。

Ø 高效率:可以通过id对消息进行优先级排序,以便最高优先级的id不被中断。

Ø 灵活性:每个ECU包含一个用于CAN总线收发芯片,随意添加CAN总线节点。

2、CAN总线网络

CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻。为什么是120Ω,因为电缆的特性阻抗为120Ω,为了模拟无限远的传输线。

3、CAN收发器

CAN收发器的作用是负责逻辑电平和信号电平之间的转换。

即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据。具体的引脚定义如下:

4、CAN信号表示

CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。

显性与隐性电平的解释:

CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。

按照定义的:

  • CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。

  • CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为"逻辑0"- 低电平。

5、CAN信号传输

发送过程: CAN控制器将CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN发射器接收逻辑电平之后,再将其转换为差分电平输出到CAN总线上。

接收过程: CAN接收器将CAN_H 和 CAN_L 线上传来的差分电平转换为逻辑电平输出到CAN控制器,CAN控制器再把该逻辑电平转化为相应的信号发送到CPU上。

 

5、CAN数据传输

CAN总线传输的是CAN帧,CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧和帧间隔。

数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)

帧起始

由一个显性位(低电平)组成,发送节点发送帧起始,其他节点同步于帧起始;

帧结束

由7个隐形位(高电平)组成。

仲裁段

只要总线空闲,总线上任何节点都可以发送报文,如果有两个或两个以上的节点开始传送报文,那么就会存在总线访问冲突的可能。但是CAN使用了标识符的逐位仲裁方法可以解决这个问题。

CAN总线控制器在发送数据的同时监控总线电平,如果电平不同,则停止发送并做其他处理。如果该位位于仲裁段,则退出总线竞争;如果位于其他段,则产生错误事件。

帧ID越小,优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合如图27所示。

数据量小,发送和接收时间短,实时性高,被干扰的概率小,抗干扰能力强。

 

注:更多详细请参考https://blog.csdn.net/liuligui5200/article/details/79030676

 

3.5、LIN BUS

 

3.6、IE BUS

 

4、高速接口与总线

4.1、USB

 

4.2、PCI/PCIE

 

4.3、SD/SDIO

 

4.4 EMMC

 

4.5 UFS

 

4.6 AVB

 

4.7 MOST

 

4.8 STAT

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值