本文目录一览

1,I2C总线到底是什么东西

IIC是一种双向二进制同步串行通信标准,你说用一根线,也可以实现通信的,是单总线。IIC需要两根线,串行数据线SDA,及用来同步的串行时钟线SCL。具体可以了解IIC的通信协议。

I2C总线到底是什么东西

2,I2C总线 是什么啊 麻烦各位师傅 了谢谢

数据线和时钟线 一种传输方式 上面可以挂接很多集成块
I2C总线 是利用两根线实现器件与器件之间传送或接收数据,一根是时钟线,一根是数据线。两根线工作很复杂,就是用示波器也很难看明白,需很强的专业知识。
请参考以下网址: http://wenku.baidu.com/view/518031c66137ee06eff9188a.html 上面有清楚的说明

I2C总线 是什么啊 麻烦各位师傅 了谢谢

3,I2c总线一般拿来实现什么功能

在介绍I2C总线结构之前。要搞清楚两个概念:I2C总线控制器和I2C设备。I2C总线控制器为微控制器或微处理器提供控制I2C总线的接口,它控制所有I2C总线的特殊序列、协议、仲裁、时序,这里指MPC8250提供的I2C总线控制接口。I2C设备是指通过I2C总线与微控制器或微处理器相连的设备,如EEPROM、LCD驱动器等,这里指EEPROM。 在一个串行数据通道中.I2C总线控制器可以配置成主模式或从模式。开发过程中,MPC8250的I2C总线控制器工作在主模式,作为主设备;与总线相连的I2C设备为AT24C01A型EEPROM,作为从设备。主设备和从设备都可以工作于接收和发送状态。总线必须由主设备控制,主设备产生串行时钟控制总线的传输方向,并产生起始和停止条件。

I2c总线一般拿来实现什么功能

4,I2c总线一般拿来实现什么功能

I2C总线控制器为微控制器或微处理器提供控制I2C总线的接口,它控制所有I2C总线的特殊序列、协议、仲裁、时序,这里指MPC8250提供的I2C总线控制接口。总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。总线按功能和规范可分为五大类,数据总线、地址总线、控制总线、扩展总线及局部总线。
在介绍i2c总线结构之前。要搞清楚两个概念:i2c总线控制器和i2c设备。i2c总线控制器为微控制器或微处理器提供控制i2c总线的接口,它控制所有i2c总线的特殊序列、协议、仲裁、时序,这里指mpc8250提供的i2c总线控制接口。i2c设备是指通过i2c总线与微控制器或微处理器相连的设备,如eeprom、lcd驱动器等,这里指eeprom。 在一个串行数据通道中.i2c总线控制器可以配置成主模式或从模式。开发过程中,mpc8250的i2c总线控制器工作在主模式,作为主设备;与总线相连的i2c设备为at24c01a型eeprom,作为从设备。主设备和从设备都可以工作于接收和发送状态。总线必须由主设备控制,主设备产生串行时钟控制总线的传输方向,并产生起始和停止条件。

5,什么是IIC总线谢谢

原发布者:s474133362I2C串行总线的组成及工作原理8.1I2C串行总线的组成及工作原理采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。常用的串行扩展总线有:I2C(InterICBUS)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。本章仅讨论I2C串行总线。8.1.1I2C串行总线概述I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。在80C51单片机应用系统的串行总线扩展中,我们经常遇到的是以80C51单片机为主机,其它接口器件为从机的单主机情况。8.1.2I2C总线的数据传送一、数据位的有效性规定I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须
IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上,一般SDA、SCL都会接上拉电阻实现电平的转换以及提高驱动能力。IIC总线协议包括:起始信号、停止信号、数据位、应答位;一般一次通信为9个clk:8个数据位+一个应答位。
你一个板子能接那么多个iic器件么。。。如果实在冲突了,cpu应该有2个iic总线接口。你就分为2组总线来编程嘛。而且芯片一般通过硬件电路某几位置高置低地址也会相应改变,根据需要来选择。

6,I2C总线的术语

发送器:发送数据到总线的器件;接收器:从总线接收数据的器件;主机:启动数据传送并产生时钟信号的设备;从机:被主机寻址的器件;多主机:同时有多于一个主机尝试控制总线但不破坏传输;主模式:用I2CNDAT支持自动字节计数的模式;位I2CRM,I2CSTT,I2CSTP控制数据的接收和发送;从模式:发送和接收操作都是由I2C模块自动控制的;仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程;同步:两个或多个器件同步时钟信号的过程 。
没有4位机制,有8位51单片机的汇编程序。还有一个c语言的,可以给你参考,这都是我项目中用到的程序。给你作个参考,在产品的实际工作中也很稳定。下面是汇编的:;;-----启动-----;;start1: lcall del5us setb sda1 lcall del5us setb scl1 lcall del5us clr sda1 lcall del5us clr scl1 lcall del5us ret;;-----结束-----;;stop1: lcall del5us setb scl1 lcall del5us setb sda1 lcall del5us ret;;-----应答检查-----;;cack1: setb sda1 lcall del5us setb scl1 lcall del5us mov c,sda1 jc cack1 clr scl1 clr sda1 lcall del1ms ret;;-----应答-----;;mack1: clr sda1 lcall del5us setb scl1 lcall del5us clr scl1 lcall del5us setb sda1 ret;;-----向从器件指定单元写n个字节数据-----;;;;入口:传递的地址在pointer,数据在wr_buf中,发送字节数在n中;;资源占用:acc、r0、r1、r3、cwr_nb1: clr ea setb sda1 setb scl1 lcall start1 mov a,#0a2h lcall wr8bit1 lcall cack1 mov a,pointer lcall wr8bit1 lcall cack1 mov r3,n mov r1,#wr_bufwrnb11: mov a,@r1 lcall wr8bit1 lcall cack1 inc r1 djnz r3,wrnb11 lcall stop1 lcall del10ms setb ea ret;;-----从从器件指定单元读n个字节数据-----;;;;入口:传递的地址在pointer,接收数据缓冲区rd_buf,接收字节数在n中;;资源占用:acc、r0、r1、r3、crd_nb1: mov r3,nrdnb11: lcall start1 mov a,#0a2h lcall wr8bit1 lcall cack1 mov a,pointer lcall wr8bit1 lcall cack1 lcall start1 mov a,#0a3h;#0a1h lcall wr8bit1 lcall cack1 mov r1,#rd_bufrdb1: lcall rd8bit1 mov @r1,a djnz r3,sack1 lcall stop1 retsack1:inc r1 lcall mack1 sjmp rdb1;;-----字节发送-----;;;;入口:要发送的数据在acc中;;每发送完一个字节,要调用一次cack,以判断是否有应答wr8bit1: push acc mov r0,#08hwr_bit1: rlc a mov sda1,c lcall del5us setb scl1 lcall del5us clr scl1 djnz r0,wr_bit1 pop acc ret;;-----字节接收-----;;;;出口:接收到的数据在acc中;;每接收完一个字节,要调用一mcack/mnackrd8bit1: mov r0,#08hrd_bit1: setb sda1 lcall del5us setb scl1 lcall del5us mov c,sda1 rlc a lcall del5us clr scl1 djnz r0,rd_bit1 clr sda1 ret以下的程序是c语言的程序,用于读24c01存贮器,稍加修改可以用于所有的i2c总线驱动。/******************************************************************** 名 称:readiic_24c01** 功 能:读24c01指定的地址的数据** 输 入: address 24c01的地址** 输 出: ddata 读出的数据** 全局变量: 无** 调用模块: write_8bit();delay();** 备注:******************************************************************/uint8 readiic_24c01(uint8 data address)uint8 data ddata=0;uint8 data i=8; _nop_(); _nop_(); _nop_(); ea=0; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //tsu:sta sda=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //thd:sta scl=0; //start write_8bit( (address<<1) | 0x01); //写页地址和操作方式 ack_r(); while (i--) sda=1; ddata<<=1; scl=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); scl=1; if (sda) ddata|=0x01; } scl=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); sda=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); sda=1; //stop _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); ea=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); delay(50); _nop_(); _nop_(); _nop_(); return ddata;}/******************************************************************** 名 称:writeiic_24c01** 功 能:将数据写入24c01指定地址** 输 入: address 24c01的地址** ddata 待写入的数据 ** 输 出: 无** 全局变量: 无** 调用模块: write_8bit();delay();** 备注:******************************************************************/void writeiic_24c01(uint8 data address,uint8 data ddata) _nop_(); _nop_(); _nop_(); ea=0; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //tsu:sta sda=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); //thd:sta scl=0; //start _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();write_8bit( (address<<1) & 0xfe); //写页地址和操作方式,对于24c32-24c256,page不起作用 ack_r(); write_8bit(ddata); //发送数据 ack_r(); sda=0; _nop_(); _nop_(); _nop_(); scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); sda=1; //stop _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); ea=1; _nop_(); _nop_(); _nop_(); delay(50); _nop_(); _nop_(); _nop_();}/******************************************************************** 名 称:write_8bit** 功 能:将一个字节数据写入24c01** 输 入: 无** 输 出: 无** 全局变量: 无** 调用模块: 无** 备注:******************************************************************/void write_8bit(uint8 data ch)uint8 data i=8; _nop_(); _nop_(); _nop_(); scl=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while (i--) sda=(bit)(ch&0x80); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); ch<<=1; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); scl=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}/******************************************************************** 名 称:ack_r** 功 能:等待24c01ack信号** 输 入: 无** 输 出: 无** 全局变量: 无** 调用模块: 无** 备注:******************************************************************/void ack_r(void) _nop_(); _nop_(); _nop_(); sda=1; scl=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); scl=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); while(sda) _nop_(); } //ack scl=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();}

文章TAG:I2C总线  I2C总线到底是什么东西  
下一篇