易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux中I2C总线驱动体系结构

最近在看Linux 2.6.21内核的I2C驱动,也在网上查了一下资料,有错也有对,有些心得,记录下来吧。里面认识或许多有不当之处,还恳请指正。
 
1. I2C 协议
 
 1.1  I2C总线工作原理
      I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定)
1.2  I2C总线的几种信号状态
      1.  空闲状态:SDA和SCL都为高电平。
      2.  开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
      3.  结束条件(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。
      4.  数据有效:在SCL的高电平期间, SDA保持稳定,数据有效。SDA的改变只能发生在SCL的底电平期间。 
      5.  ACK信号: 数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。
1.3  I2C总线基本操作
      I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。
      数据传输中,首先主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位 )。接下来是读写操作的数据,以及 ACK响应信号。数据传输结束时,主器件产生停止条件
 
2. Linux I2C 结构分析
2.1 层次分析
1. I2C Core
 I2C Core用于维护Linux的I2C核心部分,其中维护了两个静态的List,分别记录系统中的I2C driver结构和I2C adapter结构。
static LIST_HEAD(adapters);
static LIST_HEAD(drivers);
I2C core提供接口函数,允许一个I2C adatper,I2C driver和I2C client初始化时在I2C core中进行注册,以及退出时进行注销。具体可以参见i2c_core.c代码。
同时还提供了I2C总线读写访问的一般接口(具体的实现在与I2C控制器相关的I2C adapter中实现),主要应用在I2C设备驱动中。
常用的主要是
i2c_master_send()
i2c_master_recv()
i2c_transfer()
 
2. I2C bu


相关文档:

c/c++ 静态变量 一个实例

#include <iostream>
#include <cstdlib>
using namespace std;
class Foo
{
public:
Foo(int ii):i(ii){}
int getInt(){return i;}
private:
int i;
};
class Bar
{
public:
static int FooVal(){c++; return f.getInt();}
int callsFooVal(){return c;}
private:
s ......

c 语言中的传值与传引用


#include<stdio.h>
int cubeByValue(int n);
int main(){
    int number = 5 ;
    printf("The original value of number is %d\n",number);
    number = cubeByValue(number);   
    printf("The new  ......

浅谈虚拟机下的linux与windows互联

想要在虚拟机下的linux与windows互联,最关键的只需要3步:
1.一定要设置虚拟机的网卡为桥接模式,找个一定不能忘。
2.设置linux下的ip地址, vi /etc/sysconfig/network-scripts/ifcfg-eth0
   DEVICE=eth0   #网络名称
   BOOTPROTO=static  #静态获取ip地址
   IPADD ......

Linux操作系统内核编译详解

内核简介  
  内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。  
  Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的 ......

linux I2C驱动分析

I2C是Phillips开发的2线的串行总线协议。通常应用在嵌入式系统中让不同的组件通信,PC主板可以通过I2C来与不同的传感器通信。这些传感器通常报告风扇速度,处理器温度和整个硬件系统的信息,这个协议也可以用在RAM chips上,向操作系统提供DIMM的信息。
在2.0时I2C的kernel源码不在内核里的,2.4内核包括了一点对I2C的支持 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号