SPI、I2C、UART三种串行总线协议的区别
来源:互联网 发布:淘宝怎么给卖家评价 编辑:程序博客网 时间:2024/04/29 05:18
第一个区别当然是名字:
第二,区别在电气信号线上:
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;
第四,看看牛人们的意见吧!
SPI接口介绍
(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK – 时钟信号,由主器件产生
(4)/SS
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。
http://hailany.blog.163.com/blog/static/134395556201012623620912
SPI总线 SPI接口 SPI协议 SPI模式 SPI通讯
SPI interface
SPI接口介绍
SPI总线协议
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来
SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。图3示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):
图2
SPI总线接口及时序
SPI功能模块的设计
根据功能定义及SPI的工作原理,将整个IP Core分为8个子模块:uC接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。
深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别
- SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍
- SPI、I2C、UART三种串行总线的区别
- 自定义二维码
- 程序员北京三年买房的秘密
- linux服务(daemon and service)- 设置开机启动服务
- tableViewCell左滑出现删除或其它按钮
- 天灾还是人祸:ORA-01565: error in identifying file '/u01/app/oracle/oradata/eftp/testNS.dbf'
- SPI、I2C、UART三种串行总线协议的区别
- Xmanager-将远程linux的图形界面在本机打开(装数据库必备)
- 指针的笔试面试经典题目
- 使用前端后台管理模板库admin-lte
- HDU 2048 数塔 简单DP
- 奥威Power-BI物流行业BI解决方案——全段兑现分析
- MFC CEdit重绘
- Largest Submatrix of All 1’s POJ
- 微信小程序-----改变数组中某项指定的值