嵌入式常见接口协议总结
在嵌入式中有以下5种常见接口协议UARTRS232RS485IICSPI其他的还有USB以太网网络通信协议入TCP/IP、UDP等CAN汽车领域常用接口本文重点讲述最常用的5种接口协议其他的附带说明。UART51单片机内部外设串口通信_路溪非溪的博客-CSDN博客在实际产品中很少使用串口现在一般都只是用串口来做输出调试。为什么串口很少用于实际产品开发呢因为它存在很多问题使用的是TTL电平抗干扰能力差通信距离短最重要的一点是电气接口不统一。UART只是对信号的时序进行了定义而未定义接口的电气特性。UART通信时一般直接使用处理器使用的电平即TTL电平但不同的处理器使用的电平存在差异比如51是5V电压32是3.3V电压所以不同的处理器使用UART通信时一般不能直接相连。UART没有规定不同器件连接时连接器的标准所以不同器件之间通过UART通信时连接很不方便。工作中遇到一个问题那就是程序用STLINK下载后再通过串口调试可是串口工具上没有任何显示。将电源拔掉重新插上就可以显示了。起初我以为是串口的问题难道是串口没有连接电源吗但是这个想法存在问题。不管是串口还是其他的接口在连接时连接线是不需要连接电源和地的只需要将对应的信号线连接起来即可此时连接线其实就只起到个连接导通的作用。至于连接的两端接口自有其供电和接地的设计但是这个过程和连接介质是没有关系的。串口之所以需要接地是因为地线对于串口来说是根参考的信号线而不要当做一般的接地来看看作是一根信号线即可。还有个问题看到一个电路图没有设计CH340只有TTL串口于是我就想这没有设计CH340芯片咋用USB转串口调试我之前一直使用的是普通的USB线那是因为板上已经设计有CH340芯片了如果板上没有CH340芯片就需要使用USB转串口线而不是普通的USB线了USB转串口线里自带了CH340芯片这样照样可以实现调试功能。RS232通常在电路板的两个芯片之间使用的串口是基于TTL电平标准的。电平电压范围小适合距离近且干扰小的情况。为了进一步提升其抗干扰能力又有另一种RS232标准。无论是TTL标准、RS232标准还是接下来要讲的RS485标准来说这都是属于电气层面的标准都是为了串口服务的只不过各标准之上的串口的抗干扰能力不一样。RSrecommended standard代表推荐标准232是标识号。DB9接口介绍DB9接口是串口通信早期比较常用的一种规范化接口。串行通信在早期是计算机与外界通信的主要手段那时候的计算机都有标准配置的串口以实现和外部通信。那时候就定义了一套标准的串口规约DB9接口就是标准接口。DB9接口中有9根通信线其中3根很重要为GND、Tx、Rx必不可少剩余6根都是和流控有关的现代我们使用串口都是用来做调试一般都禁用流控所以这6根没用。现在一般使用串口时要记得把流控禁止掉不然可能发生意想不到的问题。串口及引脚定义以上就是RS232协议的标准接口。RS-232是串行数据接口标准最初都是由电子工业协会EIA制订并发布的RS-232在1962年发布命名为EIA-232-E作为工业标准以保证不同厂家产品之间的兼容。RS232电平规定-5V~-15V为电平15~15位电平0。目的在于提高抗干扰能力增大通信距离。一般可达15米传输。如何在单片机中使用RS232虽然很多处理器中都会集成UART控制器但处理产生的信号一般都是TTL信号并不是符合RS232标准的信号所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换。注意RS232只是电气层的协议对于软件编程来说只用针对串口即可没有任何影响。RS232的缺陷接口的信号电平电平值较高易损坏接口电路的芯片又因为与TTL电平不兼容所以需要使用电平转换芯片才能与TTL电路连接通信速率较低易产生共模干扰抗干扰抗噪声性弱使用的是电平信号传输距离还是不够长。RS485RS485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485是由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。并且该标准允许连接多个收发器即具有多站能力这样可以利用单一的RS485接口方便地建立起一个设备网络。RS485只是支持但并没有规定具体如何管理多个设备我们可以通过编程实现比如采取iic的管理逻辑即确定主设备和从设备然后寻址。RS485标准规定采用差分信号进行数据传输当两线间电压差为2V ~ 6V时为逻辑“1”而电压差为-2V ~ -6V时为逻辑“0”使用差分信号能有效减少噪声信号的干扰延长传输距离可达1500米。RS485电平信号比RS232降低了所以不易损坏接口电路的芯片且该电平与TTL电平兼容可方便地与TTL电路连接。为什么差分信号能够有效降低干扰呢首先了解下什么是共模干扰“共模”干扰的定义是指电源线对大地或中线对大地之间的电位差。对于三相电路来说共模干扰存在于任何一相与大地之间。共模干扰有时也称为纵模干扰不对称干扰或接地干扰这是载流导体与大地之间的电位差。差分信号能够降低共模干扰带来的误差因为差分信号采用的是相对值即电压差来表示电平如果有干扰那么两根线一起干扰了电压差仍然是不变的。更通俗点说假如电平信号输出时是5V但是因为电线也有一定的压降可能等到接收时就只有4V了但是差分信号不同5V的电压差到了接收端仍然是5V。RS485采用两线制这种连接方式为总线式拓扑结构在同一总线上可以同时存在多个节点。因为采用两线制数据的发送和接收都要使用这对差分信号发送和接收不能同时进行所以是半双工的编程时也要注意加以处理发的时候不能收收的时候不能发和RS232同理我们需要和单片机的TTL电平之间接上转换芯片。实际操作时芯片的接收器输出端RO与单片机的Rxd相连驱动器输入端DI则与单片机的Txd相连。IIC51单片机存储篇EEPROM(I2C)_路溪非溪的博客-CSDN博客_51单片机 eepromSPI51单片机内部外设实时时钟(SPI)_路溪非溪的博客-CSDN博客_单片机实时时钟USB重点参考USB接口的引脚定义与通信协议 - wyuu101 - 博客园通用串行总线英语Universal Serial Bus缩写USB是连接计算机系统与外部设备的一种串口总线标准也是一种输入输出接口的技术规范。USB为解决即插即用需求而诞生支持热插拔。USB协议版本有USB1.0、USB1.1、USB2.0、USB3.1等USB2.0目前比较常用。由于USB是主从模式的结构设备与设备之间、主机与主机之间不能互连为解决这个问题扩大USB的应用范围出现了USB OTG全拼 ON The Go。USB OTG同一个设备在不同的场合下可自行在主机和从机之间切换。先来看看日常使用中常见的USB接口较早的设备通常使用的是Mini-B接口后来慢慢的Micro-B得到了普遍使用。现在最常见的就是Type-C和Lighting一个用在安卓机一个用在苹果机。USB传输标准自1996年USB-IFUSB Implementers Forum组织发布USB 1.0标准以来USB标准经历了USB 1.1、USB 2.0、USB 3.0、USB 3.1、USB 3.2多个版本的发展。2019年USB-IF组织发布了最新的USB4标准USB和4之间没有空格为USB接口带来了全新的标准规范。助记low_fullhighspeed慢拳高超USB接口标准USB接口分为标准USB接口、Mini USB接口、Micro USB接口和Type-C四种类型。标准USB接口又分为Type-A和Type-B两种样貌如下其中Type-A和Type-B根据支持的USB标准不同又可以分为USB 2.0和USB 3.0标准USB接口。根据接口的颜色我们很容易区分该接口是支持USB 2.0还是支持USB 3.0的。Type-A型接口也是我们日常生活中最常见的USB接口广泛应用于鼠标、键盘、U盘等设备上Type-B型则常用于打印机、特殊显示器等设备上。Mini USB接口是一种小型的USB接口其指标与标准USB相同但是加入了ID针脚用于区分设备是主机还是外设以支持OTGOn The Go该功能允许在没有主机的情况下实现设备间的数据传送功能。Mini USB接口主要分为Mini-A和Mini-B两种样貌如下Mini USB接口由于相对较小的体型常见于一些小型设备上比如MP3、MP4、收音机等某些型号的手机也采用了该接口。Micro USB接口属于Mini USB的下一代规格接口Micro USB接口的插头采用了不锈钢材料插拔寿命提高为10000次相比Mini USB接口在宽度几乎不变的情况下高度减半更为小巧。Micro USB接口也可分为Micro-A和Micro-B两种样貌如下Micro-B类型的USB接口相信大家都认识只是不知道它的专业名称在智能手机发展的前期绝大多数的智能手机苹果手机除外都采用了Micro-B型接口作为充电和数据接口。在USB 3.0标准发布后Micro-B接口也有了新的造型相信大家也不陌生我们购买的支持USB 3.0的移动硬盘盒大部分就采用了该接口。Type-C接口是近几年出现的新型USB接口该接口对于使用者来说相信最大的好处就是可以正反插拔了吧。据统计平均每人每年在插USB上浪费的时间是30分钟第一次插总是插不进去的多次插拔到怀疑人生时最后发现还是第一次的才是对的后面的N次尝试不过是人生中的小小曲折有了type-C接口后终于可以一次搞定了。Type-C接口的样貌如下最新的USB4标准目前仅支持Type-C接口同时USB4采用了Thunderbolt协议俗称雷电接口协议是由Intel主导开发的接口协议具有速度快供电强可同时兼容雷电、USB、Display Port、PCIe等多种接口/协议的特点因此支持USB4标准的Type-C接口也是可以兼容雷电接口的。如此看来Type-C接口已是大势所趋了。关于各类型USB接口的引脚定义参考这篇文章常见几种USB接口引脚定义Type A、Type B、Micro USB、Mini USB、Type C_【ql君】qlexcel的博客-CSDN博客_usb引脚Type-C专题介绍Type-C引脚、24Pin Type-C、16Pin Type-C、12Pin Type-C、6Pin Type-C_【ql君】qlexcel的博客-CSDN博客_typec6pin接口定义补充关于Lighting接口苹果高速多功能I/O接口是2012年9月12日美国旧金山芳草地会议中心苹果发布了全新的Lightning Dock接口中文可将其译为”闪电”接口。新接口标准的发布同时也意味着苹果使用了长达9年的30针Dock接口将被正式取代。参考苹果iphone lightning引脚接口图自己焊接图_hu5566798的博客-CSDN博客_苹果接口定义USB接口结构USB只有4根线分别是5V电源、DATA传输数据端 DP、DATA-传输数据端- DM)、和GND地线故信号是串行传输的。usb接口也称为串行口。DMDP是用来传输数据的VCCGND充电。USB是通过DM和DP两根线来实现差分信号传输数据的。DMdata minus 负DPdata plus 正。工作原理当一个USB设备插入PC机PC机怎么知道有设备插入?如图1-1和图1-2所示USB接口只有4条线: VCC5VGNDD-D。 PC机的USB插孔的D-和D数据线均连接15K欧姆的下拉电阻。而USB设备端的D-或D数据线连接1.5K欧姆的上拉电阻。当设备插入PC机的时候会将PC机的D-或D端的电压拉高当PC机在D-或D端检测到高电平时就知道有设备插入了。如果是PC机D-端被拉高接入的则是USB低速设备如果是PC机D端被拉高接入的则是USB全速或高速设备具体是全速设备还是高速设备会由PC机和USB设备发包握手确定。当USB设备插入后PC机 会提醒我们“某某设备接入”PC机怎么知道我们插入的设备的信息的呢如图2-1所示当PC机检测到有USB设备插入后会主动向设备发送命令包要求设备告诉PC机设备信息。这时设备必须向PC机回复自己的信息以描述符形式。明确一点USB设备不会主动给PC机发数据只能被动的等待PC机来拿。PC机上接有非常多的USB设备怎么分辨它们每一个USB设备接入PC时USB总线驱动程序都会给它分配一个编号接在USB总线上的每一个USB设备都有自己的编号(地址)。PC机想访问某个USB设备时发出的命令都含有对应的编号(地址)。USB设备刚接入PC时还没有编号那么PC怎么把分配的编号告诉它新接入的USB设备的默认编号是0在未分配新编号前PC使用0编号和它通信。USB传输协议事务在介绍USB传输类型之前请允许我先简答介绍一下USB事务。事务一般由令牌包、数据包可选、握手包组成。令牌包用来启动一个事务总是由主机发送。数据包可以从主机到设备也可以由设备到主机方向由令牌包决定。握手包通常情况数据的接收者发送握手包ACK或者NAK。USB协议规定了四种传输类型控制传输、批量传输、同步传输、中断传输。下面简答介绍一下这四种传输类型及其注意事项。具体参考USB 四种传输方式详解_申小白的博客-CSDN博客_usb传输USB包结构可直接参考USB协议详解第19讲USB包-包的组成及分类_一个早起的程序员的博客-CSDN博客以太网网络通信是一个较大的板块具体内容可详见《计算机网络》主要使用的是TCP/IP协议。网线采用的是差分信号。因为是四线制所以是全双工的。无线通信参考五种无线通信协议及其特点_要月亮的博客-CSDN博客_无线通信协议电磁波传输原理参考通俗讲解无线通信背后的物理原理_哔哩哔哩_bilibili更多内容参考无线通信原理了解手机里的wifi接收和热点用的是同一个部件吗iPhone是的,因为iPhone上的WiFi接收器和热点发射器用的是同一个零件,不能既接收又发射,所以iPhone是不能同时开启WiFi和热点;但是安卓手机是可以的,因为安卓手机的WiFi接收器和热点发射器是两个部件,而且互不影响,所以是可以同时开启WiFi和热点的,连WiFi的时候开热点是不会消耗数据流量的,连WiFi的时候开热点给别的设备用,WiFi信号从路由器到手机再到其他设备就是信号的远路传输,所以安卓手机WiFi和热点用的不是同一个部件。关于信号塔基站信号塔_百度百科了解手机信号空中传输原理是什么手机信号以电磁波的形式在空气中进行传播。手机通信系统由三大部分组成即手机移动站、基站天线、无线电信号的接收、发射设备及基站控制器等还有交换网络移动交换机、跨地区的中继传送设备等。手机信号是一种高频的振荡波它将声波加密后加载在手机自身电路产生的高频电波上在功放放大后,通过天线发送到最近的一个移动基站,基站通过有线连接到机房的交换机交换机再通过线连接到另一部手机最近的基站基站将信号发送出去通过已知信道被另一部手机接收另一站手机解调解密后变成声波。当用手机拨打电话时手机会把语音转化成信号然后通过电磁波的形式发送到距离最近的基站A基站A接收到信号之后再通过交换机转发到覆盖对方手机信号的基站B基站B再把信号发送给对方手机手机接收到信号之后再把信号转换成语音从而实现双方通话。CAN可直接参考CAN详解小白教程_瓶邪·的博客-CSDN博客_邮箱种类CAN 是控制器局域网络 (Controller Area Network) 的简称它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的并最终成为国际标准(ISO11519以及ISO11898)是国际上应用最广泛的现场总线之一。CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线并且拥有以CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。近年来它具有的高可靠性和良好的错误检测能力受到重视被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强及振动大的工业环境。贴图一个车载网络构想图CAN 物理层与 I2C、SPI 等具有时钟信号的同步通讯方式不同CAN 通讯并不是以时钟信号来进行同步的它是一种异步通讯只具有 CAN_High 和 CAN_Low 两条信号线共同构成一组差分信号线以差分信号的形式进行通讯USB 协议、485 协议、以太网协议及 CAN 协议的物理层中都使用了差分信号传输。。我们来看一个示意图闭环总线网络CAN 物理层的形式主要有两种下图中的 CAN 通讯网络是一种遵循 ISO11898 标准的高速、短距离“闭环网络”它的总线最大长度为 40m通信速度最高为 1Mbps总线的两端各要求有一个“120 欧”的电阻。开环总线网络下图中的是遵循 ISO11519-2 标准的低速、远距离“开环网络”它的最大传输距离为 1km最高通讯速率为 125kbps两根总线是独立的、不形成闭环要求每根总线上各串联有一个“2.2千欧”的电阻。通讯节点从 CAN 通讯网络图可了解到CAN 总线上可以挂载多个通讯节点节点之间的信号经过总线传输实现节点间通讯。由于 CAN 通讯协议不对节点进行地址编码而是对数据内容进行编码的所以网络中的节点个数理论上不受限制只要总线的负载足够即可可以通过中继器增强负载。CAN 通讯节点由一个 CAN 控制器及 CAN 收发器组成控制器与收发器之间通过 CAN_Tx 及CAN_Rx 信号线相连收发器与 CAN 总线之间使用 CAN_High 及 CAN_Low 信号线相连。其中CAN_Tx 及 CAN_Rx 使用普通的类似 TTL 逻辑信号而 CAN_High 及 CAN_Low 是一对差分信号线使用比较特别的差分信号下一小节再详细说明。当 CAN 节点需要发送数据时控制器把要发送的二进制编码通过 CAN_Tx 线发送到收发器然后由收发器把这个普通的逻辑电平信号转化成差分信号通过差分线 CAN_High 和 CAN_Low 线输出到 CAN 总线网络。而通过收发器接收总线上的数据到控制器时则是相反的过程收发器把总线上收到的 CAN_High 及 CAN_Low 信号转化成普通的逻辑电平信号通过 CAN_Rx 输出到控制器中。例如STM32 的 CAN 片上外设就是通讯节点中的控制器为了构成完整的节点还要给它外接一个收发器在我们实验板中使用型号为 TJA1050 的芯片作为 CAN 收发器。 CAN 控制器与 CAN收发器的关系如同 TTL 串口与 MAX3232 电平转换芯片的关系 MAX3232 芯片把 TTL 电平的串口信号转换成 RS-232 电平的串口信号CAN 收发器的作用则是把 CAN 控制器的 TTL 电平信号转换成差分信号 (或者相反) 。目前有以下CAN电平转换芯片不全我们来用TJA1050来看下原理图CAN 协议中的差分信号CAN 协议中对它使用的 CAN_High 及 CAN_Low 表示的差分信号做了规定见表及图。以高速 CAN 协议为例当表示逻辑 1 时 (隐性电平) CAN_High 和 CAN_Low 线上的电压均为 2.5v即它们的电压差 VH-V:sub:L0V而表示逻辑 0 时 (显性电平) CAN_High 的电平为 3.5VCAN_Low 线的电平为 1.5V即它们的电压差为 VH-V:sub:L2V。例如当 CAN收发器从 CAN_Tx 线接收到来自 CAN 控制器的低电平信号时 (逻辑 0)它会使 CAN_High 输出3.5V同时 CAN_Low 输出 1.5V从而输出显性电平表示逻辑 0 。由于 CAN 总线协议的物理层只有 1 对差分线在一个时刻只能表示一个信号所以对通讯节点来说CAN 通讯是半双工的收发数据需要分时进行。在 CAN 的通讯网络中因为共用总线在整个网络中同一时刻只能有一个通讯节点发送信号其余的节点在该时刻都只能接收。CAN 协议层进一步内容参考秀靠这篇我竟然2天理解了CAN协议实战STM32F4 CAN_Wireless_Link的博客-CSDN博客_can控制器与can收发器常见协议速率对比IIC总线的工作速度分为3种版本S(标准模式)100Kbps即 100/8 12.5KB/sF(快速模式)400Kbps即400/8 50KB/sHS(高速模式)3.4Mbps即3.4M/8 435KB/s超高速模式5Mbit/s即5M/8 525KB/s最高才525KB/s算一下如果你要下载一张10M的图片要花多久10*1024/525大约需要20秒。看起来好像也还可以。看看SPISPI全双工同步传输速度约有50Mbps即约5.9MB/s传输一张10M的图片需要多久10/5.91.7秒左右理论上只需要嗖两下就传完了。这么一看20秒还是挺长的。在IIC以最高速率运行时SPI的速率约为IIC的10倍。当IIC以标准模式运行时SPI的速率约为IIC的500倍。UART理论上无限制速度取决于波特率常用9600bps1.2KB/s和115200bps14KB/s115200波特率的情况下和IIC的标准速率差不多。RS232RS232传输距离有限最大传输距离标准值为15米且只能点对点通讯最大传输速率最大为20KB/s。RS485RS485最大无线传输距离为1200米。最大传输速率为10Mbps(1.2MB/s)在100Kb/S(12.5KB/s)的传输速率下才可以达到最大的通信距离。CAN距离小于40米速度有1Mbps即约128KB/s距离大于40米小于10千米速度低于5KbpsSDIOSD内存卡接口基础上的接口10Mbps以上USB以USB4为例传输一张10M图片需要多久10/(40/8*1024)约2毫秒传输500张这样的图片仅需1秒。速度很夸张。至于网络传输就是我们平时入网时的速率。以前10Mbps/50Mbps的比较常见。现在基本都是100Mbps起步了即12.5MB/S。还有200Mbps/300Mbps/500Mbps/1000Mbps等。我家开的是200M的网理想情况下每秒传输字节数为25M。如果我想要下载一部6G的电影需要多久理想情况下6*1024/25约246秒即4分钟左右。注意有时候有些地方会用Hz来作为速率的单位。比如STM32中讲IIC的速率的时候。频率本来就是表示单位时间内的次数每秒如果传输协议是一个时钟周期传输一位数据那么此时100kHz就相当于100kbps。