智慧互联 下载中心 联系我们 关于我们 留言反馈
设为首页
收藏本站
网站导航
  首 页 培训课程 企业培训 项目合作 学员中心 技术分享 下载中心 联系方式 产品展示 淘宝店铺
  资讯检索
 
 
  课程中心

PLC类培训课程
S7-200/Smart系列培训
S7-1200/1500PLC培训
S7-300/400PLC培训
三菱Q和FX系列培训
欧姆龙CP/CJ系列培训
台达|永宏|信捷PLC培训
其他品牌PLC培训
通讯|伺服|控制器培训
分项分小专题培训
嵌入式与单片机开发
51/AVR八位单片机系列
STM32系列嵌入式培训
零基础入门课程
上位机编程
标准课程
高级课程
零基础入门课程
电类软件培训
AutoCAD应用班
AD/Protel培训
EPLAN 培训
三维与机械类软件
UG/NX建模与自动编程
SolidWorks建模与加工
自动化部品销售
工控自动化元件
PLC及周边成品

  资讯排行
1 S7-200SMAR
2 S7-1500系列P
3 PLC初学辅导-电机
4 MicroSD卡与西
5 C#利用接受事件通过
6 S7-200SMAR
7 如何用 S
8 西门子S7-1500
9 c#利用TCP/IP
10 三菱Q系列PLC以太
11 FB100和PID控
12 西门子S7-1500
13 造成PLC输出点烧坏
14 S7-200 Mod
15 自动化装备里面的工业
16 vb.net利用Se
17 TIA Portal
18 VB编写的MODBU
19 S7-200smar
20 用VB实现PLC与计
 
地区分布:滁州、安徽、宣城、池州、巢湖、六安、黄山、安庆、铜陵、芜湖、淮南、蚌埠、阜阳、宿州、合肥、马鞍山、淮北、澳门、北京、宁德、福建、泉州、漳州、龙岩、福州、南平、莆田、厦门、三明、兰州、甘肃、嘉峪关、金昌、宁夏、韶关、广东、潮州、梅州、河源、清远、珠海、汕尾、东莞、佛山、深圳、广州、汕头、湛江、江门、肇庆、云浮、阳江、茂名、中山、惠州、钦州、广西、北海、玉林、柳州、百色、贵港、梧州、柳州、桂林、南宁、贵州、遵义、六盘水、贵阳、海口、海南、三亚、琼山、文昌、琼海、万宁、通什、儋州、许昌、河南、三门峡、郑州、新乡、鹤壁、安阳、濮阳、焦作、商丘、洛阳、漯河、平顶山、南阳、信阳、济源、周口、驻马店、开封、沧州、河北、保定、石家庄、邯郸、邢台、衡水、秦皇岛、廊坊、承德、张家口、唐山、佳木斯、黑龙江、哈尔滨、齐齐哈尔、大兴安岭、大庆、鹤岗、牡丹江、伊春、宜昌、湖北、荆门、黄石、咸宁、荆州、鄂州、孝感、黄冈、十堰、随州、仙桃、天门、武汉、潜江、襄樊、益阳、湖南、常德、长沙、永州、怀化、岳阳、株洲、郴州、衡阳、湘潭、昭阳、张家界、长春、吉林、白城、吉林、四平、辽源、通化、白山、松原、扬州、江苏、苏州、无锡、常州、镇江、泰州、盐城、淮阴、宿迁、连云港、徐州、南京、南通、景德镇、江西、鹰潭、新余、萍乡、赣州、上饶、抚、宜春、九江、吉安、南昌、辽阳、辽宁、新、营口、盘锦、大连、锦州、铁岭、抚顺、丹东、鞍山、沈阳、本溪、朝阳、葫芦岛、赤峰、内蒙古、呼伦贝尔、呼和浩特、包头、银川、宁夏、石嘴山、西宁、青海、滨州、山东、青岛、日照、临沂、济宁、威海、莱芜、枣庄、菏泽、泰安、济南、烟台、潍坊、淄博、东营、德州、聊城、阳泉、山西、太原、朔州、晋城、临汾、大同、延安、陕西、宝鸡、渭南、铜川、西安、咸阳、上海、自贡、四川、南充、攀枝花、宜宾、泸州、绵阳、成都、德阳、天津、香港、乌鲁木齐、新疆、石河明、舟山、浙江、宁波、绍兴、金华、嘉兴、湖州、杭州、丽水、温州、重庆
 
 
I²C总线和SPI总线的对比
双击自动滚屏 恒邦嵌入式培训2016-12-21 11:27:13 阅读:5535次 关注微信公众号 PLC958,获取最快捷,最有用的技术资讯
恒邦培训机构为您提供如下课程:西门子S7-1500系列PLC培训,垂询电话:0553-5848750,18055386918
西门子S7-1500系列PLC培训
恒邦培训机构为您提供如下课程:嵌入式STM32从入门到应用开发,垂询电话:0553-5848750,18055386918
嵌入式STM32从入门到应用开发
恒邦培训机构为您提供如下课程:西门子S7-1200 PLC综合课程,垂询电话:0553-5848750,18055386918
西门子S7-1200 PLC综合课程
恒邦培训机构为您提供如下课程:UG/NX曲面建模课程,垂询电话:0553-5848750,18055386918
UG/NX曲面建模课程

  I2C--INTER-IC串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实 现了双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个I2C总线器件同时接到I2C总线 上,通过地址来识别通信对象。

  IIC 接口的协议里面包括设备地址信息,可以同一总线上连接多个从设备,通过应答来互通数据及命令。但是传输速率有限,标准模式下可达到100Kbps,快速模式下可达到400Kbps(我们开发板一般在130Kbps),高速模式下达到4Mbps,不能实现全双工,不适合传输很多的数据。

  IIC总线是一个真正的多主机总线,总线上多个主机初始化传输,可以通过传输检测和仲裁来防止数据被破坏 。

下来详细了解IIC总线时序:
1.1 总线数据有效性
  IIC总线是单工,因此同一时刻数据只有一个流向,因此采样有效时钟也是单一的,是在SCL时钟的高电平采样数据。

  IIC总线上SDA数据在SCL时钟低电平是可以发生变化,但是在时钟高电平时必须稳定,以便主从设备根据时钟采样数据,如下图:


1.2 总线空闲条件
  IIC总线上设备都释放总线(发出传输停止)后,IIC总线根据上拉电阻变成高电平,SDA SCL都是高电平。
 
1.3 总线数据传输起始和结束条件
  IIC总线SCL高电平时SDA出现由高到低的跳变,标志总线上数据传输的开始条件

  IIC总线SCL高电平时SDA出现由低到高的跳变,标志总线上数据传输的结束条件

1.4 总线数据传输顺序以及ACK应答
  IIC总线上数据传输室MSB在前,LSB在后,从示波器上看,从左向右依次读出数据即可

  IIC总线传输的数据不收限制,但是每次发到SDA上的必须是8位,并且主机发送8位后释放总线,从机收到数据后必须拉低SDA一个时钟,回应ACK表示数据接收成功,我们如果示波器上看到的波形就是每次9位数据,8bit+1bit ack。如下:


  从机收到一字节数据后,如果需要一些时间处理,则会拉低SCL,让传输进入等待状态,处理完成,释放SCL,继续传输,如下:


1.5 总线读写时序
  数据的传输在起始条件之后,发送一个7位的从机地址,紧接着第8位是数据方向(R/ W),0-表示发送数据(写),1-表示接收数据(读)。数据传输一般由主机产生的停止位(P)终止。但是如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr),和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。

  IIC总线主设备读写从设备,一般都是与从设备的寄存器打交道,这个可以通过阅读从设备的datasheet获取。总线写时序如下:
master start + master addr|w + slave ack + master reg|w + slave ack + master data + slave ack + master restart。。master data + slave nack + master stop

总线读时序如下:
master start + master addr|w + slave ack + master reg|w + slave ack + master restart + master addr|r + slave ack + slave data + master nack + master stop

  总线读时序与写的不同之处在于读需要2次传输才能完成一次读取,首先要写寄存器地址到从设备,其实是写到了从设备的控制寄存器或者命令寄存器,从设备内部会根据这个地址来寻址所要操作的寄存器。

  我在读我们的bios和内核时发现,2者在总线读时序上的实现不太一样,在于第一次寄存器地址写入后,一个发的是restart,一个发的是stop,然后再start开始读取数据,示波器抓波形发现读取数据都正确,说明这2种时序都是正确的。

  IIC总线的读写时序比较固定,设备通信严格遵循协议,因此iIC总线设备驱动程序的编写也就相对简单一些。

  主要应用的iIc总线设备有touchscreen rtc 外扩io等

==================================

  SPI--Serial Peripheral Interface,串行外围设备接口,是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。

  SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。 I2C通常有 SDA数据和SCL时钟两个信号。

  SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。这个接口较快,可以传输较连续的数据。

  SPI要想连接多个从设备,就需要给每个从设备配备一根片选信号。如果要可以实现全双工,也是需要多加一根数据线(MOSI MISO)。

  也就是说SPI总线是通过片选来选择从设备。

  spi总线速度要比iic要快,最快能达到30MHZ。
 
spi总线特点:
1. 采用主-从模式(Master-Slave) 的控制方式
  SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作.

2. 采用同步方式(Synchronous)传输数据
  Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的.

3. 数据交换(Data Exchanges)
  SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 也就是说是全双工的,在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了.
      
  一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上.
      
  在数据传输的过程中,  每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃,  导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据, 即使这些数据(Dummy Data)在我们的程序里是无用的.

==========================

  SPI和IIC是2种不同的通信协议,现在已经广泛的应用在IC之间的通信中。
  并且不少单片机已经整和了SPI和IIC的接口。但像51这种不支持SPI和IIC的单片机,也可以用模拟时钟的工作方式进行SPI和IIC的通信的。

下面主要总结一下2种总线的异同点:
1 iic总线不是全双工,2根线SCL SDA。spi总线实现全双工,4根线SCK CS MOSI MISO

2 iic总线是多主机总线,通过SDA上的地址信息来锁定从设备。spi总线只有一个主设备,主设备通过CS片选来确定从设备

3 iic总线传输速度在100kbps-4Mbps。spi总线传输速度更快,可以达到30MHZ以上。

4 iic总线空闲状态下SDA SCL都是高电平。spi总线空闲状态MOSI MISO也都是 SCK是有CPOL决定的

5 iic总线scl高电平时sda下降沿标志传输开始,上升沿标志传输结束。spi总线cs拉低标志传输开始,cs拉高标志传输结束

6 iic总线是SCL高电平采样。spi总线因为是全双工,因此是沿采样,具体要根据CPHA决定。一般情况下master device是SCK的上升沿发送,下降沿采集

7 iic总线和spi总线数据传输都是MSB在前,LSB在后(串口是LSB在前)

8 iic总线和spi总线时钟都是由主设备产生,并且只在数据传输时发出时钟

9 iic总线读写时序比较固定统一,设备驱动编写方便。spi总线不同从设备读写时序差别比较大,因此必须根据具体的设备datasheet来实现读写,相对复杂一些。

=====================
其他非正式,但容易理解的说法如下:

UART: 由RX TX 组成收发
SPI:由CLK CS MOSI MISO(M代表主 S 代表从 O 代表out I 代表in)
IIC:由SCL SDA 组成

  SPI/I2C是数字信号,对于接口信号,数字的肯定比模拟的要慢。因为传输通道的频响是有限制的。所以要远距离快速通信,一般把数字信号调制到模拟的信号。I2C 的长处是超级低廉,而且是协议简单的总线。spi是端口,不是总线。 USB协议复杂。

  I2C因为跨电平的标准,所以是OC 上拉的,上拉高电平驱动能力很弱,所以决定了他跑不快。但是不影响它在低速的场合应用。本来他面向的就是慢速,低廉成本的应用场合。要快速怎么也要用intel总线。

  I2C为了节省口线资源而做双向口=>为了防止接口电路烧掉而用上拉电阻=>上拉导致电平变化慢=>传输速率低。SPI中MISO和MOSI分开=>无需上拉,电平反转速度快一点=>传输速率比I2C高。

 
   好文推荐
1 自动化装备里面的工业总线和工业以太网12518
2 I²C总线和SPI总线的对比5535

18055386918、18055386926学PLC单片机上位机编程咨询PLC培训请学PLC单片机上位机编程 咨询嵌入式培训请 PLC编程与工控技术群
关键词:PLC培训 PLC编程培训 芜湖PLC培训 西门子PLC培训 三菱PLC培训 欧姆龙PLC培训 PLC网络培训 PLC教学视频 PLC教程 PLC编程实例 PLC编程入门
触摸屏培训 伺服系统培训 变频器培训 PLC编程软件下载 安徽PLC培训 学习PLC 设计师证书 PLC培训学校 马鞍山培训 合肥PLC培训 人机界面培训

© copyright all rights reserved
恒邦自动化培训中心 - 芜湖市恒邦科技有限公司 全部资讯 全部课程
地址:芜湖经济技术开发区科创中心C园 邮编:241006 TEL:0553-5848750
未经许可 以上内容不得转载 或用作商业用途 皖ICP备09005786号-1

PLC培训 PLC编程培训 芜湖PLC培训 西门子PLC培训 三菱PLC培训 欧姆龙PLC培训 PLC网络培训 PLC教学视频 PLC教程 PLC编程实例 PLC编程入门
触摸屏培训 伺服系统培训 变频器培训 PLC编程软件下载 安徽PLC培训 学习PLC 设计师证书 PLC培训学校 马鞍山培训 合肥PLC培训 人机界面培训