嵌入式开发常用总线

总线

1.总线

总线:连接多个部件的信息传输线 ,是各部件共享的传输介质

​ 芯片内部总线:芯片内部的各个外设通信的总线

​ 芯片外部总线:芯片和芯片之间通信的总线(UART,IIC,SPI,USB,485,CAN等)

2.串行通信及并行通信

2.1串行通信

​ 同一时刻只能收或者发1bit位的信息

​ 数据按位传输 占用引脚资源少 速度相对较慢

​ UART IIC SPI 485 CAN USB2.0 USB3.0 等

2.2并行通信

​ 同一时刻可以收或者发多个bit位的信息

​ 数据各个位同时传输 占用引脚资源多 速度快

​ LCD屏 摄像头 内存条 等

3.同步通信及异步通信

3.1同步通信

​ 通信双方根据同步信号进行通信的方式

​ 通信双方有一个共同的时钟信号,根据时钟信号的变换进行通信

​ 一个时钟周期内收发一bit位的数据

image-20220923114614385

3.2异步通信

​ 通信双方约定好通信速度,传输速度依赖于自己独立的系统时钟

​ 异步通信不需要同步时钟信号,要求通信的速度一致,也就是时钟频率一致(每秒发送信号的频率)

image-20220923114804397

4.UART总线

​ 串口使用了三根线:TXD(发送数据线) RXD(接收数据线) GND(共地线)

​ 调用的异步串行全双工总线

image-20220923115458336

5.UART串口通信协议

​ 通信协议:通信双方按照某个特定的格式进行数据收发

image-20220923134032443

​ 起始位:发送数据开始的信号,由发送器产生

​ 数据位:发送的数据位,先发送低位,再发送高位

​ 校验位:判断是否正确

奇校验
	数据位和校验位中,1的个数之和位奇数
	demo:
		发送的数据 0x55---> 0101 0101 --->偶数个1
		校验位:自动补1
		发送的数据 0x51---> 0101 0001 --->奇数个1
		校验位:自动补0
偶校验
	数据位和校验位中,1的个数之和位偶数
	demo:
		发送的数据 0x55---> 0101 0101 --->偶数个1
		校验位:自动补0
		发送的数据 0x51---> 0101 0001 --->奇数个1
		校验位:自动补1

​ 波特率(比特率):串口收发数据的速率,单位是bps(1s发送数据的bit位)

​ 常用的比特率为115200bps,9600bps

​ 8N1协议:8–>8位数据位 N–>没有校验位 1–>1个停止位

6.IIC

​ 1>IIC也叫I2C,是一种同步串行的半双工总线,主要用于连接整体电路

​ 同一个PCB之上,两个芯片之间通常采用IIC

​ 2>I2C总线为两线制,只有两根双向信号线 数据线SDA 时钟线SCL

​ 3>I2C的通信速率在100K-400K之间,一般用于各种传感器中,不需要很快的传输速率

image-20220928133950453

​ I2C总线必须接两个上拉电阻,保持在空闲状态,I2C总线处于高电平的状态

6.1 I2C总线连接

​ 1> I2C是具备多主机多从机系统所需的高性能串行总线,一般采用的是单主机多从机

​ 2> 每个接到I2C总线的器件都有唯一的从机地址(设备地址,一般为7位)

​ 3> 发送器:总线上发送数据的器件

​ 4> 总线上接收数据的器件

​ 5> 主机:可以主动发起通信或者结束通信的器件,一般为处理器

​ 6> 从机: 只能被动接收数据或者发送数据的器件,一般为传感器

6.2 IIC总线的时间图

​ 时序图: 随着时钟信号的变化,数据在信号线上的信号也随着改变

6.3 起始信号及终止信号

image-20220928135010536 1>SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号

2> SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号

3> 起始信号以及终止信号都是由主机发出,其中起始信号产生后,总线就处于占用态,终止信号产生后,总线就处于空闲态

6.4 数据信号的时序图

image-20220928135224427

1> I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,

只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

2> 在时钟为高电平期间,数据线上的数据必须要保持稳定,此时接收器从数据线上读取数据。

3> 在时钟为低电平期间,数据线上的数据可以改变,此时发送器向数据线上写入数据。

4> 一个时钟周期收发一个bit位的数据

6.5 应答信号时序图

image-20220928135624753

1> 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。

2> 应答信号是由接收器产生的,当接收器收到8个bit位的数据之后需要给发送器返回一个应答信号或者非应答信号。

3> 在第九个时钟周期的低电平期间,接收器向数据线上写入数据,

​ 在第九个时钟周期的高电平期间,发送器从数据线上读取数据,

如果读到的是低电平,则认为为应答信号,如果读到的是高电平,则认为为非应答信号。

6.6 I2C总线的从机地址

image-20220928140458756

1> I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

2> 主机在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/W),

​ 用“0”表示主机发送数据(W),“1”表示主机接收数据(R)。

​ 总线上的每个从机都将这7位地址码与自己的地址进行比较,

​ 如果相同,则认为自己被主机寻址,根据R/W位将自己定为发送器或接收器。

7. I2C总线的通信协议

7.1 主机给从机发生一个字节数据的通信协议

image-20220928143518135

8位的数据被写到寄存器对应的地址中。

7.2 主机给从机发生连续的多个字节数据的通信协议

image-20220928143642905

第一个8位数据被写到寄存器地址中;

第二个8位数据被写到寄存器地址+1中;

第三个8位数据被写到寄存器地址+2中;

以此类推即可。

7.3 从机给主机发送一个字节数据的通信协议

image-20220928144141091

从机将寄存器地址中的数据发送给主机。

7.4 从机给主机发送连续多个字节数据的通信协议

image-20220928144250651

从机将寄存器地址中的数据发送给主机;

从机将寄存器地址+1中的数据发送给主机;

依次类推类推。

为什么从机给主机发送数据时,最后一个数据时主机给从机的是非应答信号?

从机只能被动的停止发送或者接收数据,如果从机收到的是要给应答信号,则从机认为你想接收下一个数据,从机就会给主机发送下一个字节的数据,如果从机收到的是非应答信号,从机是不会发送下一个字节的数据的。

8. SPI总线

1> SPI接口是全双工四线同步串行外围接口,采用主从模式(Master Slave)架构;

2> 支持多slave模式应用,一般仅支持单Master。

3> 时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first);

4> SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。

5> SPI总线被广泛地使用在FLASH、ADC、LCD等设备与MCU间,要求通讯速率较高的场合

image-20220929092137816

8.1 SPI总线的硬件连接

SPI接口共有4根信号线,分别是:
						__  __
	设备选择线(片选线) : CS  SS  NCS  NSS   SS0  CS0
	时钟线 : CLK  SCK  SCLK 
	串行输出数据线 : MOSI 
	串行输入数据线 :  MISO
	M : Master    S : Slave 
	I : Input     O : Output	
	
SPI总线物理·拓扑结构
• (1)MOSI:主器件数据输出,从器件数据输入
• (2)MISO:主器件数据输入,从器件数据输出
• (3)SCLK :时钟信号,由主器件产生
• (4)/SS:从器件使能信号,由主器件控制(片选线)
image-20220929092927480

8.2 4线制SPI总线(单主机多从机/单主机单从机)

image-20220929092137816

8.3 3线制SPI总线(单主机单从机)

image-20220929093148942

8.4 SPI的四种通信模式

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式。

1>时钟极性CPOL :设置时钟空闲时的电平

​	当CPOL = 0 ,SCK引脚在空闲状态保持低电平;

​	当CPOL = 1 ,SCK引脚在空闲状态保持高电平。

2>时钟相位CPHA :设置数据采样时的时钟沿

​	当 CPHA=0 时,MOSI或 MISO 数据线上的信号将会在 SCK时钟线的奇数边沿被采样

​	当 CPHA=1时, MOSI或 MISO 数据线上的信号将会在 SCK时钟线的偶数边沿被采样

CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式。

1>时钟极性CPOL :设置时钟空闲时的电平

​	当CPOL = 0 ,SCK引脚在空闲状态保持低电平;

​	当CPOL = 1 ,SCK引脚在空闲状态保持高电平。

2>时钟相位CPHA :设置数据采样时的时钟沿

​	当 CPHA=0 时,MOSI或 MISO 数据线上的信号将会在 SCK时钟线的奇数边沿被采样

​	当 CPHA=1时, MOSI或 MISO 数据线上的信号将会在 SCK时钟线的偶数边沿被采样

image-20220929094444027

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值