SPI/IIC

一、SPI

1.1、Motolora开发了SPI

1.2、连接方式有3种,入下图

1.2.1 一对一

1.2.2一对多 且 CS片选

1.2.3一对多 且 丛机均4线通信

1.2.4、

SPI是一种高速的,全双工,同步的通信总线,由Motorola开发,并没有一个官方标准。已知的有的器件SPI已达到50Mbps。具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。

对于STM32器件,如果用的固件库,那就是更改SPI_InitStructure.SPI_BaudRatePrescaler参数,赋值在stm32f10x_spi.h中有定义,是APB2或者APB1总线频率的1/2~1/256.

1.2.5

通常 SPI 通过 4 个引脚与外部器件相连:
● MISO :主设备输入 / 从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
● MOSI :主设备输出 / 从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
● SCK :串口时钟,作为主设备的输出,从设备的输入
● NSS :从设备选择。这是一个可选的引脚,用来选择主 / 从设备。它的功能是用来作为“片
选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

SPI配置过程
 SPI主模式配置

1. 通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率。
2. 选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系。
3. 设置DFF位来定义8位或16位数据帧格式。
4. 配置SPI_CR1寄存器的LSBFIRST位定义帧格式。
5. 如果需要NSS引脚工作在输入模式,硬件模式下,在整个数据帧传输期间应把NSS脚连接到高电平;在软件模式下,需设置SPI_CR1寄存器的SSM位和SSI位。如果NSS引脚工作在输出模式,则只需设置SSOE位。
6. 必须设置MSTR位和SPE位(只当NSS脚被连到高电平,这些位才能保持置位)。 在这个配置中,MOSI引脚是数据输出,而MISO引脚是数据输入。

SPI从模式配置

1. 设置 DFF 位以定义数据帧格式为 8 位或 16 位。
2. 选择 CPOL 和 CPHA 位来定义数据传输和串行时钟之间的相位关系。 为保证正确 的数据传输,从设备和主设备的CPOL 和 CPHA 位必须配置成相同的方式。
3. 帧格式 (SPI_CR1 寄存器中的 LSBFIRST 位定义的 ”MSB 在前 ” 还是 ”LSB 在前 ”) 必须与主设备相同。
4. 硬件模式下 ( 参考从选择 (NSS) 脚管理部分 ) ,在完整的数据帧 (8 位或 16 位 ) 传输过程中,NSS引脚必须为低电平。在 NSS 软件模式下,设置 SPI_CR1 寄存器中的 SSM 位并清除 SSI 位。
5. 清除 MSTR 位、设置 SPE 位 (SPI_CR1 寄存器 ) ,使相应引脚工作于 SPI 模式下。 在这个配置中,MOSI 引脚是数据输入, MISO 引脚是数据输出。

二、IIC

    S(标准模式)测量与控制场合,100kb/s

    F(快速模式),速率为 400kb/s

    Hs(高速模式),速率为 3.4Mb/s。  

    具体看器件要求,单片机一般是400k或以下常用。IIC协议是有规定的,其总线的容性负载要求

总结:

2种总线的异同点
1:I2C总线是半双工,2根线SCL SDA;SPI总线实现全双工,4根线SCK CS MOSI MISO。
2:I2C是多主机总线,通过SDA上的地址信息来锁定从设备;SPI只有一个主设备,主设备通过CS片选来确定从设备。
3:I2C总线传输速度100Kbps----4Mbps;SPI可达30Mbps以上。
4:I2C总线空闲时SDA SCL都是高电平,SPI总线空闲状态由CPOL(时钟极性)决定。
5:I2C高电平时SDA下降沿标志传输开始,上升沿标志传输结束;SPI总线CS拉低标志传输开始,CS拉高标志传输结束。
6:I2C总线SCL高电平采样;SPI具体根据CPHA(时钟相位)决定,一般情况下,master device是SCK的上升沿发送,下降沿采集。
7:I2C和SPI总线数据传输都是MSB(最高有效位)在前,LSB在后(串口是LSB在前)。
8:I2C总线和SPI总线时钟都是由主设备产生,并且只在数据传输时发出时钟。
9:I2C总线读写时序比较固定统一,设备驱动编写方便。SPI总线不同从设备datasheet来实现读写,相对复杂一些。

三、

CAN
CAN 总线的主要特点有:
( 1) CAN 为多主工作方式 ,网络上的任意节点在任意时刻都可以主动地向其他节点发送信息 ,不分主从 ,方式灵活。
( 2) CAN 网络节点可以安排优先级顺序 ,以满足和协调各自不同的实时性要求。
( 3) 采用非破坏性的总线仲裁技术 ,多点同时发送信息时 ,按优先级顺序通信 ,节省总线冲突仲裁时间 ,避免网络瘫痪。
( 4) 可以进行点对点、一点对多点和全域广播方式传递信息。
( 5) 通信速率最高可达 1M bps( 40m以内 ) ,最长传递距离达 10km(速率为 5kbps以下 )。
( 6) 网络节点目前可达 110个 ,报文标志符 2 032种 ( CAN2. 0A) ,扩展标准 ( CAN2. 0B)中报文标志符几乎不受限制。
( 7) 短帧数据结构 ,传输时间短 ,抗干扰能力强 ,检错效果好。
( 8) 通信介质可以用双绞线、同轴电缆或光纤。
( 9) 网络节点在错误严重的情况下可以自动关闭输出功能 ,脱离网络。
( 10) 实现了标准化、规范化 (国际标准 ISO11898)。

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

CAN

理论上,CAN总线在速率小于5K时,距离可达10000m;速率接近1M时,距离小于40m。现实中常用的高速CAN总线速率有500k或250k,低速CAN总线有125k和62.5k,传输距离在几米到几十米间。速率和传输距离的选择还有考虑硬件的要求。

理论上,一条CAN总线上可以连接无数个CAN设备,但实际上受到其他条件限制,数量总是有限的。例如,使用了更上层的CANOPEN协议,则一条总线上只能有128个设备。

http://www.eepw.com.cn/article/201706/353287.htm

https://wenku.baidu.com/view/bfc09f2acfc789eb172dc8c5.html
 

四、485

RS-485/422采用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号 A,B两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使用双绞线,又是差分传输,所以又极强的抗共模干扰的能力,总线收发器灵敏度很高,可以检测到低至200mV电压。故传输信号在千米之外都是可以恢复。RS-485/422最大的通信距离约为1219M,最大传输速率为10Mb/S,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。

RS-485标准采有用平衡式发送,差分式接收的数据收发器来驱动总线,具体规格要求:
     1.接收器的输入电阻RIN≥12kΩ
     2.驱动器能输出±7V的共模电压
     3.输入端的电容≤50pF
     4.在节点数为32个,配置了120Ω的终端电阻的情况下,驱动器至少还能输出电压1.5V(终端电阻的大小与所       用双绞线的参数有关)
     5.接收器的输入灵敏度为200mV(即(V+)-(V-)≥0.2V,表示信号“0”;(V+)-(V-)≤-0.2V,表示信      号“1”)

  因为RS-485的远距离、多节点(32个)以及传输线成本低的特性,使得EIA RS-485成为工业应用中数据传输的首选标准。

五、USB

USB1.1:
-------低速模式(low speed):1.5Mbps
-------全速模式(full speed): 12Mbps

USB2.0:向下兼容。增加了高速模式,最大速率480Mbps。
-------高速模式(high speed): 25~480Mbps 

USB3.0:向下兼容。

-------super speed :理论上最高达4.8Gbps,实际中,也就是high speed 的10倍左右。

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值