SPI和I2C总线协议

SPI总线协议

https://blog.csdn.net/ivy_reny/article/details/78189058

I2C总线传输协议

https://blog.csdn.net/jasonchen_gbd/article/details/77431951

I2C总线只需要两根线来传输数据,一根SCl时钟线,一根SDA数据线,是在地址信息之后附加上数据信息,对地址的位数有特殊的规定。

SPI总线至少需要四根线来双工传输数据(MISO/MOSI/SCK/CS),因为是主从模式所以我们在传输的时候会尽量保持双工通道接收和发送数据的频率是一致的。

在SPI协议中不管使用哪一种模式和不管从机还是主机,都是在时钟上升沿采样数据,在时钟下降沿输出数据,使用下图补充解释:

假设CPOL=0,CPHA=0。在SCK的第一个时钟周期,在时钟的前沿采样数据(上升沿),在时钟的后沿输出数据。先看主器件,主器件的输出口(MOSI)输出数据bit1,在时钟的前沿被从器件采样,那主器件是何时输出bit1的呢?bit1的输出时刻实际上在SCK信号有效以前,比SCK的上升沿还要早半个时钟周期,bit1的输出时刻与SSEL信号没有关系。再来看从器件,主器件的输入口MISO同样是在时钟的前沿采样从器件输出的bit1的,那从器件又是在何时输出bit1的呢?从器件实在SSEL信号有效后,立即输出bit1,尽管此时SCK信号还没有生效。(转)

使用这个样的方法就可以保证在下一个时钟周期的时候,主器件和从器件都可以依然在上升沿采样各自输入的数据,在下降沿输出各自的数据到MOSI和MISO。因为采样点相对于数据输出时刻间隔出一半的时钟周期,这样也可以有最好的建立时间和保持时间。最好的保证时序稳定!
 

在master端对数据的时钟进行控制,slave端只能被动接受数据,可以一开始用对master端发送时钟给slave端,slave端使用相同的时钟频率去接数据。

如果使用像光纤发送数据的协议,只需要规定好波特率不要传输时钟信号,发送端和接收端使用相同的波特率就可以发送和接收数据,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值