上一章我们介绍了I²C接口和USART接口。这章我们来介绍一下其他通信接口。
我们先来看一下SPI接口,SPI接口是串行外设接口,这是SPI接口设备连接图。左面是三个SPI设备,这些设备上都包含有SPI接口。右面是STM32单片机芯片,绿色部分是SPI接口,包括四条通信线。SPI设备有主从两种工作模式,主模式是Master用M表示,从模式是Slave用S表示。I是in的缩写,表示输入,O是out的缩写,表示输出。所以MISO这个引脚表示在主模式下是接收数据,从模式下是发送数据。同样MOSI就表示在主模式下这个引脚是发送数据,从模式下接收数据。MISO和MOSI这两根都是数据线,如果工作在主模式下,MISO表示接收数据,MOSI表示发送数据。两根线一发一收可以实现全双工通信。在数据通信中。数据在线路上的传输方式可以分为单工通信、半双工通信和全双工通信三种。所谓单工通信就是指数据只能单方向传输的工作方式,比如说遥控或者是遥测数据,就是单工通信方式。单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收。接收端只能接收信息,不能发送。信息的流向是单方向的。半双工通信是指数据可以沿两个方向传送,但同一时刻只允许单方向传送,又被称为双向交替通道。
大家来看一下我们之前讲的I²C总线,它有两根信号线,一根是同步时钟线,另一根是数据线。数据线只有一根,因此数据只能在这一根数据线上发送或接收,但是不能同时发送和接收。就好像对讲机一样,在同一时间内,只允许一方讲话,另一方收听。这就是半双工通信。而SPI接口拥有两根数据线MISO和MOSI,不管是在主模式下还是在从模式下,任意时刻在线路上都可以同时存在双向信号传输,数据同时在两个方向上传送,就如同电话机一样,通话双方可以同时进行通话,这也是SPI和I²C总线的差别之一。SPI接口包括两根数据线,可以进行全双工通信,I²C总线只有一根数据线,只能进行半双工通信。SCK是时钟同步线,I²C总线也包含一条时钟同步线,它们都可以进行同步串行数据传输。这三条信号线分别与其他SPI设备的信号线并联在一起,另外所有的SPI设备共地,GND连接在一起。再来看NSS,这是一个使能引脚,它能独立连接到SOI设备的CS片选引脚,用于取用或禁止设备。如果有多个SPI设备的话,其他设备的CS片选端还需要占用单片机设备的I/O口,因此连接的SPI设备也不宜过多。SPI与I²C接口相比,它们都是用于板级设备间通信,不同的是SPI是在硬件上来片选通信设备,用于确定与那个SPI设备进行通信。不需要像I²C一样在传输内容中包含地址来识别从设备,而且SPI是全双工通信,因此SPI的传输速率要比I²C快很多,通信速率可达18兆/秒,它可以用于SD卡、Flash存储芯片读写以及与LCD显示屏等设备的通信。接下来再看一下CAN接口。在数据手册中可以找到相关介绍。
CAN是控制器区域网络,与之前讲的通信接口不同,CAN总线用于多个设备之间连接,形成区域网络,而且对网络中连接的设备数量没有限制,关键是网络中的CAN设备没有主从之分,网络中的每个设备既可以是主设备也可以是从设备,都可以进行数据的收发。CAN总线的传输速率很快,位速率高达1兆位/秒,比SPI接口传输速率要低一些。
这是CAN总线通信连接图。SPI和I²C总线连线时,右边是主设备,然后总线上挂接多个从设备。在CAN总线网络中,设备没有主从之分,每个设备都可以是主设备,也都可以是从设备,这些CAN设备都挂接在CAN总线上。CAN接口包含两条通信线H和L,可以通过双绞线进行连接,传输距离很远,可达10千米,通信速度也比较快,而且CAN总线还集成了自动查错功能,传输数据比较稳定,应用范围也非常广泛,可用于楼与单元门门铃控制‘摄像头智能云台控制以及工业智能设备通信等场景。
接下来再介绍一下USB接口和SDIO接口。
USB是通用串行总线,STM32单片机当中,内嵌了一个兼容全速USB的设备控制器,遵循全速USB设备标准,速度可达12兆位/秒,这里需要注意USB时钟源必须是一个HSE晶体振荡器。SDIO接口是在SD内存卡接口上发展起来的接口,兼容以前的SD内存卡,并且可以连接SDIO接口的设备。
这样我们就介绍完了通信接口功能,STM32提供了这六种通信接口,六种通信接口的传输距离和速度都有不同,一般传输距离越远,数据传输速率越低。USB和SDIO接口用于专门的设备暂且先不考虑。CAN接口、SPI接口、USART接口和I²C接口这四种接口当中,CAN接口传输距离最远,有10千米,协议也最复杂,而且CAN总线网络上的设备没有主从之分。其次传输较远的是USART通用同步/异步收发接口,一般采用异步方式进行通信,在USART接口的基础之上,可以有不同的电器接口标准RS485或RS232,RS485比RS232的传输距离要远一些。SPI接口和I²C接口属于板级总线。SPI接口有四根信号线,分别是时钟线、片选线、和两根数据线,可以进行全双工通信,通信速率比较高。I²C接口有两根信号线,分别是时钟线和数据线,数据只能在这一根数据线上接收或者是发送,但是不能同时进行,它可以实现半双工通信,它的速度比SPI的速度要低。每一个通信接口都有各自的优缺点和适应环境,大家在使用时要根据数据情况再通信成本和性能之间做出最优选择。
里出生滴
其实早在泰迪熊出现之前,毛绒玩具熊就已经存在了。虽然目前,还没有直接的证据可以证明玩具熊最早的发明始末和来源,不过,早在十九世纪末,就已经有玩具熊的踪迹出现。1880年,柏林当地最受欢迎的玩具就是一只站在四轮上的木制熊(on all fours是一种可以拉着四处走的玩具车),同一时期,在莫斯科当地的酒吧,也流行一种由自动发条制造的饮酒熊(Drinking Bear,上了发条的熊玩具,除了可以拿着酒瓶把酒倒在酒杯里喝掉外,还会抽烟和跳舞),这种会自动饮酒的玩具熊,在当时非常新奇和受欢迎。现在最著名的玩具熊制造公司史泰福(Steiff)在1893年时,也曾经制作过一些直立式、鼻子上嵌有铁链的非布偶熊玩具,不过这些还未经过这一百多年时间洗礼的玩具熊,是以写实的形象出现的,不但在视觉上比较逼真,在触觉上也较为沉重和坚硬,要发展成为现在所认知的四肢可转动的毛绒熊模样,还要经过长久的许多材质、填充物和外型的演变。
其实泰迪熊原本是一个独立的专有名词,最正确的说法,应该只有在第一次世界大战之前,也就是老罗斯福总统任内时,于1903年至1912年间制造的熊,才能称为泰迪熊