共 21 篇文章 |
|
I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一... 阅254 转4 评0 公众公开 14-04-18 11:17 |
i2c-core是I2C总线驱动程序体系结构的核心,在这个模块中,除了为总线设备驱动提供了一些统一的调用接口来访问具体的总线驱动程序功能,以进行读写或设置操作外,还提供了将各种支持的总线设备驱动和总线驱动添加到这个体系中的方法,以及当不再使用这些驱动时将其从体系中删除的方法。4.1 I2C总线控制器驱动的设计 MPC8250的I2C总线驱动程... 阅287 转5 评0 公众公开 14-04-18 11:17 |
struct i2c_adapter { struct module *owner;// lm75 设备地址 msgs[0].flags = 0;//write msgs[0].buf = buf1; msgs[0].buf[0] = LM75_REG_TEMP[0]; msgs[1].len = 2;//读出的数据 msgs[1].addr = client->addr;// lm75 设备地址 msgs... 阅315 转6 评0 公众公开 14-04-18 11:16 |
struct i2c_rdwr_ioctl_data { struct i2c_msg *msgs;//e2prom 目标数据的地址 (e2prom_data.msgs[0]).addr=0x50;// e2prom 设备地址 (e2prom_data.msgs[0]).flags=0;//write (e2prom_data.msgs[0]).buf=(unsigned char*)malloc(1); (e2prom_data.msgs[0]).buf[0]=0x0;//e2prom数据地址。e2pr... 阅411 转9 评0 公众公开 14-04-18 11:15 |
数据传输的过程如图所示: 在前面我们还提到过,I2C总线上的每一个设备都对应一个唯一的地址,主从设备之间的数据传输是建立在地址的基础上,也就是说,主设备在传输有效数据之前要先指定从设备的地址,地址指定的过程和上面数据传输的过程一样,只不过大多数从设备的地址是7位的,然后协议规定再给地址添加一个最低位用来表示接下来数据传... 阅666 转12 评0 公众公开 14-04-18 11:13 |
IIC时序详解AT24C02是由ATMEL公司提供的,IIC总线串行EEPROM(electronic eraser programmer read only memory),其容量为2kbit(256B),工作电压在2.7v"5.5v之间,生产工艺是CMOS。 一般数字芯片都在左下角和右上角为GND,VCC。当前地址读: 随机读: 有序读: IIC总线模拟时序图: IIC总线应答时序图: 设备地址... 阅1050 转6 评0 公众公开 14-04-18 10:07 |
简言之,在多重主控器的I2C总线上,时钟线信号的低电平周期由时钟信号低电平周期最长的主控器决定,而时钟线信号的高电平周期则由时钟信号高电平周期最短的主控器决定。产生数据的主控器一旦发现内部数据电平与数据总线的实际电平之间有差异,则它的输出将被立即关闭,随即在总线上输出一个高电平(释放总线),这就不会影响获得主控权的主控器所... 阅224 转4 评0 公众公开 14-04-17 22:45 |
I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一... 阅213 转7 评0 公众公开 14-04-17 22:41 |
LINUX的IIC从这开始(一)这样当需要第1个iic模块控制第1片EEPROM时,就先选择第1个模块的驱动,然后选择第1片EEPROM就行了,当需要第2个iic模块控制第2片EEPROM时,adapter1_driver——EEPROM2_driver,同理:adapter1_driver——EEPROM3_driver,adapter2_driver——EEPROM1_driver等等,这样只需要写6个驱动就够了,当数量多时,优势就更加... 阅2851 转11 评0 公众公开 14-04-16 19:50 |
LINUX的IIC驱动从这开始(二)@flags:就是一个标示, I2C_CLIENT_TEN表示IIC从设备使用的芯片地址是10bit的,I2C_CLIENT_PEC表示设备使用SMBus错误检查;i2c_adapter对应与物理上的一个适配器,而i2c_algorithm对应一套通信方法,一个i2c适配器需要i2c_algorithm中提供的通信函数来控制适配器上产生特定的访问周期。主要的数据结构介绍完,那... 阅1307 转8 评0 公众公开 14-04-16 19:34 |