这里仅总结一下IO控制相关及这种总线等  ~持续更新

一、 单片机IO直接驱动继电器

上图是随便找到的两个不同型号的继电器。继电器就是个开关,这个开关是由它内部的线圈控制的,给线圈通电,继电器就吸合,开关就动作了。绝大部分的继电器反面都会有如下图一样的标识,看标识也就能看出,下图中1脚2脚之间是线圈,3脚和5脚在继电器不动作的时候是连一起的,当1脚2脚上加电压后,继电器动作,此时3脚就断开5脚,吸合到了4脚上去。

比如你要控制一条线的通断,就可以把这条线故意搞断以后,一端接到3脚,一端接到4脚,然后通过给线圈通电和断电,就可以控制这条线的通断了。我们通过单片机开控制1脚2脚上的线圈通电就可以控制这个开关的闭合与断开了。

线圈1脚和2脚加多大电压呢?

这个问题,需要看你用的继电器的正面,比如蓝色这个继电器,最下面一行字为“SRD-05DCV-SL-C”,其中的“05DCV”就表示线圈上所需要的电压值,在此表示需要直流5V电压才能驱动这个继电器吸合。

前面我们说过了,可以用单片机控制这个线圈上的电压,你可以直接用两只手拿上5V和GND两条线直接通到继电器线圈的两个引脚,就会听到响声了。

那用单片机怎么给他加电压?我们知道,单片机引脚就可以输出5V,是不是直接用单片机引脚连接继电器线圈,就可以了呢?

答案当然不是的!

下面我们来测试一下,用万用表测量一下这个线圈的电阻,如下图所示这个继电器的线圈上的电阻是67.3Ω,假设我们把这个线圈当做一个电阻来看的话,在它两端加上5V的电压,欧姆定律用上一算,电流就是74mA左右。但是,我们单片机的普通引脚最大输出10mA电流,大电流的引脚最大输出20mA电流(具体的单片机输出能力需要参照单片机的datasheet)。

通过上面的计算,虽然5V的单片机可以输出5V的电压,但是输出电流能力有限,远远达不到驱动继电器的电流,所以无法直接驱动继电器。假如我们采用灌电流的连接方式,这样很有可能直接烧坏单片机的IO口。

这时候我们就需要想办法,想想怎么能通过小电流来控制大电流呢,此时我们应该不叫容易想到的三极管,比如比较常用的S8050三极管,ICE最大允许电流是500mA,远远大于70mA,所以用S8050驱动继电器绝对是没有问题的。电路图如下所示:

看上图,ICE也就是从C流到E的电流,就是和继电器线圈一条线的电流。NPN三极管,在这里就是个开关,单片机引脚输出5V高电平,ICE就导通继电器就会吸合;单片机引脚输出0V低电平,ICE就截止,继电器就不吸合。值得注意的是,刚才计算时候我们是吧线圈当作了电阻,而实际它是线圈,线圈内的电流不能突变,所以在断开的瞬间会形成反向电动势,上图中的二极管就是为了释放这个反向电动势而设计的。

同理,电磁阀也是一种电阻很小功率很大的负载,也需要按照上述欧姆定律的方法,选择合适的驱动元件。

在更多的使用场景下,在同一个项目中可能需要驱动多个继电器,此时采用分立元件三极管来驱动可能就会有写繁琐了,此时可以采用一些驱动芯片,比较常见的有达林顿管ULN2003、ULN2803。采用这样的集成芯片驱动可以让电路变得简洁,还可以增加可靠性。如果需要更加保险的考虑的话可以在输入驱动信号的地方采用光耦作为隔离。

whaosoft aiot http://143ai.com

二、常见内部总线介绍

IIC

IIC(Inter-Integrated        Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通讯或在主设备和从设备之间的双向数据传送。I2C是OD输出的,大部分I2C都是2线的(时钟和数据),一般用来传输控制信号。

IIS

I2S(Inter-IC        Sound        Bus)是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准。I2S有3个主要信号:1.串行时钟SCLK,也叫位时钟,即对应数字音频的每一位数据,SCLK有1个脉冲。2.帧时钟LRCK,用于切换左右声道的数据。LRCK为“1”表示正在传输的是左声道的数据,为“0”则表示正在传输的是右声道的数据。3.串行数据SDATA,就是用二进制补码表示的音频数据。有时为了使系统间能够更好地同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(Sys        Clock)。

SPI

SPI(Serial        Peripheral        Interface:串行外设接口);SPI是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

  • MOSI            – 主器件数据输出,从器件数据输入

  • MISO – 主器件数据输入,从器件数据输出

  • SCLK – 时钟信号,由主器件产生

  • SS             – 从器件使能信号,由主器件控制

UART

UART(Universal        Asynchronous Receiver        Transmitter:通用异步收发器)。将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区。常用TXD,RXD,/RTS,/CTS。

JTAG

JTAG        (Joint Test Action Group        联合测试行动小组)是一种国际标准测试协议(IEEE1149.1兼容),主要用于芯片内部测试。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。测试复位信号(TRST,一般以低电平有效)一般作为可选的第五个端口信号。一个含有JTAGDebug接口模块的CPU,只要时钟正常,就可以通过JTAG接口访问CPU的内部寄存器和挂在CPU总线上的设备,如FLASH,RAM,内置模块的寄存器,象UART,Timers,GPIO等等的寄存器。

CAN

CAN全称为“Controller        Area        Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初,CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之        间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips        P82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN        可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。

SDIO

SDIO是SD型的扩展接口,除了可以接SD卡外,还可以接支持SDIO接口的设备,插口的用途不止是插存储卡。支持        SDIO接口的PDA,笔记本电脑等都可以连接象GPS接收器,Wi-Fi或蓝牙适配器,调制解调器,局域网适配器,条型码读取器,FM无线电,电视接收        器,射频身份认证读取器,或者数码相机等等采用SD标准接口的设备。

GPIO

GPIO        (General Purpose Input Output        通用输入/输出)或总线扩展器利用工业标准I²C、SMBus™或SPI™接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统        需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。

每个GPIO端口可通过软件分别配置成输入或输出。

三、 串口通信原理--232、422、485

1 串口通讯

串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。

串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。

串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。

2 串口通讯的数据格式

一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。

每一个字符的前面都有一位起始位(低电平),字符本身由7位数据位组成,接着字符后面是一位校验位(检验位可以是奇校验、偶校验或无校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。实际传输时每一位的信号宽度与波特率有关,波特率越高,宽度越小,在进行传输之前,双方一定要使用同一个波特率设置。

3 通讯方式

单工模式(Simplex Communication)的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。

半双工模式(Half Duplex)通信使用同一根传输线,既可以发送数据又可以接收数据,但不能同时进行发送和接收。数据传输允许数据在两个方向上传输,但是,在任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工模式既可以使用一条数据线,也可以使用两条数据线。半双工通信中每端需有一个收发切换电子开关,通过切换来决定数据向哪个方向传输。因为有切换,所以会产生时间延迟,信息传输效率低些。

全双工模式(Full Duplex)通信允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。在全双工模式中,每一端都有发送器和接收器,有两条传输线,信息传输效率高。

显然,在其它参数都一样的情况下,全双工比半双工传输速度要快,效率要高。

4 偶校验与奇校验

在标准ASCII码中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

5 停止位

停止位是按长度来算的。串行异步通信从计时开始,以单位时间为间隔(一个单位时间就是波特率的倒数),依次接受所规定的数据位和奇偶校验位,并拼装成一个字符的并行字节;此后应接收到规定长度的停止位“1”。所以说,停止位都是“1”,1.5是它的长度,即停止位的高电平保持1.5个单位时间长度。一般来讲,停止位有1,1.5,2个单位时间三种长度。

6 波特率

波特率就是每秒钟传输的数据位数。

波特率的单位是每秒比特数(bps),常用的单位还有:每秒千比特数Kbps,每秒兆比特数Mbps。串口典型的传输波特率600bps,1200bps,2400bps,4800bps,9600bps,19200bps,38400bps。

PLC/PC与称重仪表通讯时,最常用的波特率是9600bps,19200bps。PLC/PC或仪表与大屏幕通讯时,最常用的波特率是600bps。

7 典型的串口通讯标准

EIA RS232(通常简称“RS232”): 1962年由美国电子工业协会(EIA)制定。

EIA RS485(通常简称“RS485”): 1983年由美国电子工业协会(EIA)制定。

8 RS232串口

RS232是计算机与通信工业应用中最广泛一种串行接口。它以全双工方式工作,需要地线、发送线和接收线三条线。RS232只能实现点对点的通信方式。

8.1 RS232串口缺点

● 接口信号电平值较高,接口电路芯片容易损坏。

● 传输速率低,最高波特率19200bps。

● 抗干扰能力较差。

● 传输距离有限,一般在15m以内。

● 只能实现点对点的通讯方式。

8.2 RS232串口接口定义

RXD:接收数据,TXD:发送数据,GND/SG:信号地。

8.3 电脑DB9针接口定义

电脑DB9针接口是常见的RS232串口,其引脚定义如下:

2号脚:RXD(接收数据)

3号脚:TXD(发送数据)

5号脚:SG或GND(信号地)

其它脚:我们不用

电脑RS232串口与仪表串口连接图:

在9针串口接头中,公头和母头的管脚定义顺序是不一样,这一点需要特别注意。那么,这些管脚都有什么作用呢?9针串口和25针串口常用管脚的功能说明如下图所示:

9 RS485串口

9.1 RS485串口特点

● RS485采用平衡发送和差分接收,具有良好的抗干扰能力,信号能传输上千米。

● RS485有两线制和四线制两种接线。采用四线制时,只能实现点对多的通讯(即只能有一个主设备,其余为从设备)。四线制现在很少采用,现在多采用两线制接线方式。

● 两线制RS485只能以半双式方式工作,收发不能同时进行。

● RS485在同一总线上最多可以接32个结点,可实现真正的多点通讯,但一般采用的是主从通信方式,即一个主机带多个从机。

● 因RS485接口具有良好的抗干扰能力,长的传输距离和多站能力等优点使其成为首选的串行接口。

9.2 RS485串口接口定义

A或Data+(D+)或+:信号正;

B或Data-(D-)或-:信号负。

9.3 计算机与RS485仪表通讯

计算机自带的串口只有RS232,没有RS485,如果计算机要与RS485串口的仪表进行通讯,必须使用串口转换器或装上RS485串口转换卡后才能进行通讯。

9.4 RS485串口的终端电阻

● 一般情况下不需要增加终端电阻,只有在RS485通信距离超过100米的情况下,要在RS485通讯的开始端和结束端增加终端电阻,RS485典型终端电阻是120欧。

● 终端电阻是为了消除在通信电缆中的信号反射在通信过程中,有两种信号因导致信号反射:阻抗不连续和阻抗不匹配。

阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。

引起信号反射的另一原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。

10 串口通讯硬件常见的注意事项

● 通讯电缆端子一定接牢,不可有任何松动,否则,可能会烧坏仪表或上位机的通讯板。

● 不可带电拔插通讯端子,否则,可能会烧坏仪表或上位机的通讯板,一定要关闭仪表电源后才能去拔插通讯端子或接通讯线。

● 不可带电拔插通讯端子,否则,可能会烧坏仪表或上位机的通讯板,一定要关闭仪表电源后才能去拔插通讯端子或接通讯线。

● 通讯用的屏蔽电缆最好选用双层隔离型屏蔽电缆,其次选用单层屏蔽电缆,最好不要选用无屏蔽层的电缆,且电缆屏蔽层一定要能完全屏蔽,有些质量差的电缆,屏蔽层很松散,根本起不到屏蔽的作用。单层屏蔽的电缆屏蔽层应一端接地,双层屏蔽的电缆屏蔽层其外层(含铠装)应两端接地,内层屏蔽则应一端接地。

● 仪表使用RS232通讯时,通讯电缆长度不得超过15米。

● 一般RS485协议的接头没有固定的标准,可能根据厂家的不同引脚顺序和管脚功能可能不尽相同,用户可以查阅相关产品RS485的引脚图。

● RS485通讯电缆最好选用阻阬匹配、低衰减的RS485专用通讯电缆(双绞线),不要使用普通的双绞电缆或质量较差的通讯电缆。因为普通电缆或质量差的通讯电缆,可能阻抗不匹配、衰减大、绞合度不够、屏蔽层太松散,这样会导致干扰将非常大,会造成通讯不畅,甚至通讯不上。

● 仪表使用RS485通讯时,每台仪表必须手牵手地串下去,不可以有星型连接或者分叉,如果有星型连接或者分叉,干扰将非常大,会造成通讯不畅,甚至通讯不上。

● 485总线结构理论上传输距离达到1200米,一般是指通讯线材优质达标,波特率9600,只有一台485设备才能使得通讯距离达到1200米,而且能通讯并不代表每次通讯都正常,所以通常485总线实际的稳定通讯距离远远达不到1200米。负载485设备多,线材阻抗不同时,通讯距离更短。

● 仪表使用RS485通讯时,必要时,请接入终端电阻,以增强系统的抗干扰性,典型的终端电阻阻值是120欧。

11 串口通讯软件设置要点

11.1 有关通讯的一些基本概念

● 主机与从机:在通讯系统中起主要作用、发布主要命令的称为主机,接受命令的称为从机。

● 连续方式:指主机不需要发布命令,从机就能自动地向主机发送数据。

● 指令方式:指主机向从机发布命令,从机根据指令执行动作,并将结果“应答”给主机的模式。

● 输出数据类型:指在连续方式通讯时,从机输出给主机的数据类型。

● 通讯协议:指主机与从机通讯时,按哪一种编码规则来通讯。

● 波特率:主从机之间通讯的速度。

● 数据位:每次传输数据时,数据由几位组成。

● 校验位:数据传输错误检测,可以是奇校验、偶校验或无校验。

● 地址:每一台从机的编号。

11.2 主从机之间通讯设置要点

● 要点一:主/从RS232/485硬件有无设置正确,通讯线有无接对。有些通讯板卡是RS422与RS485共用的,依靠板上跳线来实现的,有些仪表RS232/485也需要通讯跳线来实现。

● 要点二:主机上的通讯端口有无设置正确;超时(一般设置为2s)、通讯延时(一般设置为5~20ms)、ACK信号延时(一般设置为0ms)有无设置正确。

● 要点三:主/从机通讯协议有无选择正确。

● 要点四:主/从机波特率有无选择正确。

● 要点五:主/从机数据位有无选择正确。数据位可以选择7位,8位。

● 要点六:主/从机校验位有无选择正确。校验位一般可选择偶校验、奇校验、无校验。

● 要点七:主/从机停止位有无选择正确。停止位可以选择1位、1.5位还是2位。

● 要点八:从机地址有无选择正确。

● 要点九:主/从机的通讯方式有无选择正确。

进行通讯测试的时候经常会进行线路测试,测试所用的串口线是否可用,方法如下:

1. 把串口线接到不同的串口,用串口调试工具从一个串口发数据,另一个能正常收到说明串口线是OK的。

2. 把串口线的一端短接(用金属把2,3号脚连通),用万用表测另一端的2,3号如果正常的话会有嘀嘀的短接报警声。

嵌入式分享~IO相关1 ##相关推荐

  1. 嵌入式分享~IO相关2 ##

    这里仅总结一下IO控制相关及这种总线等  ~持续更新 第二部的啊    whaosoft aiot http://143ai.com 一.SPI.UART.I2C通信的区别与应用 电子设备之间的通信就 ...

  2. 嵌入式分享~开关相关1 ##

    一.接近开关的功能原理和用途 (其实也可叫行程开关) 接近开关是一种无需与运动部件进行机械直接接触而可以操作的位置开关,当物体接近开关的感应面到动作距离时,不需要机械接触及施加任何压力即可使开关动作, ...

  3. linux嵌入式 控制io口,基于ARM9嵌入式的RS485总线接口设计,自动控制IO口实现通信方向控制...

    描述 随着ARM处理器应用的范围的不断深入,根据需求的不同ARM提供的外设也越来越丰富,常用的通信接口有RS232.RS485.CAN.以太网等.RS485总线凭其传输距离远.抗干扰能力强.价格低廉等 ...

  4. 与IO相关的等待事件troubleshooting-系列9

    Buffer Cache与IO相关的等待事件: 这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作. 'db file parallel write' , 'd ...

  5. java io运用_Java IO相关使用

    date: 2020-06-14 14:42:22 updated: 2020-08-21 17:35:45 Java IO相关使用 1. 文件 创建 File 对象的三种方式 一个路径名:File( ...

  6. vue如何获取年月日_好程序员web前端教程分享Vue相关面试题

    好程序员web前端教程分享Vue相关面试题,Vue是一套构建用户界面的渐进式框架,具有简单易用.性能好.前后端分离等优势,是web前端工程师工作的好帮手,也是企业选拔人才时考察的重点技能.接下来好程序 ...

  7. 嵌入式分享合集105

    一.智能灯光控制系统(基于stm32) 带你走进物联网的世界说一个整天方案哦 这次是基于stm32的 当然你可以用esp "智能光照灯"使用STM32作为系统的MCU,由于单片机I ...

  8. 嵌入式分享合集102

    一.嵌入式开发Bug定位解决 一.问题复现 稳定复现问题才能正确的对问题进行定位.解决以及验证.一般来说,越容易复现的问题越容易解决. 1.1 模拟复现条件 有的问题存在于特定的条件下,只需要模拟出现 ...

  9. 2003引脚功能电压_嵌入式篇-IO引脚

    IO引脚即输入输出引脚,可以说是数字电路中最为基础的部分.就像我们在学习一门新的语言,我们都会先去编写一个"hello,world"的程序一样,我们学习嵌入式往往做的第一个例程,就 ...

最新文章

  1. mysql delete and or_Mysql delete操作
  2. 系统中编译安装ZLMediaKit的步骤
  3. 教你写出可读性高的Python代码
  4. 序列化的高阶认识-绕开 transient 机制的办法
  5. 机器学习生态全景图3.0
  6. C语言攻略指南(五)数组篇
  7. 如何限制对象只能建立在堆上或者栈上
  8. Linux三剑客之grep 与 egrep
  9. 传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...
  10. 技术支持诈骗手段翻新:借勒索软件类锁屏界面恐吓用户
  11. mac 安装 cocoapods
  12. 27. Minimize casting
  13. ignite安装及简单使用命令
  14. 最近一段时间的找工作计划
  15. 平时杂技,串口摄像头+portmon.exe
  16. 【HTML/CSS】HTML/CSS个人学习总结
  17. OpenCV批量读取路径下所有图片
  18. 疑难杂症、易混淆、易遗忘的知识点记录
  19. 从互动直播到在线抓娃娃,实时视频超低延迟架构的思考与实践
  20. 如何写《软件需求规格说明书》

热门文章

  1. Sigmoid激活的是第几维呢?
  2. 本题要求实现一个统计整数中指定数字的个数的简单函数。
  3. 【python】request HTTPS代理
  4. C++ opencv基于OTSU图像多阈值分割
  5. 【TB-02模组专题⑦】TB02二次开发玩转各种接入天猫精灵智能家居产品,彩灯、灯具、插座、单火线总有一款适合你。
  6. 【数据结构】List相关知识的学习【详解篇2】
  7. EntityFramework项目“The model backing xxx context has changed ”错误解决-CodeFirst迁移踩坑记录
  8. pdf怎么加水印,pdf加水印简单方法
  9. 【Scala】Scala语言基础(IDEA创建项目、基本数据类型、range、键盘输入语句)
  10. 判断一个字符串是否是JSON字符串的坑