您的位置:首页 > 产品设计 > 产品经理

6/25/2011 8:25:05 PM

2011-06-25 21:31 267 查看
6/25/2011 8:25:05 PM

为什么socket 连接失败会对采集有影响?

出现网络不可达的时候,问题是必现的

磁珠用来解决高频噪声和尖峰干扰

标准I2C总线传输速率可以到100Kbit/s,通过使用了7位地址码,就能支持128个设备。
加强型I2C总线用了10位地址码(能够支持1024个设备),快速模式(400Kbit/s)和高速模式(最高有3.4Mbit/s)。

快速模式 高速模式

I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。

总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。

只要很小的电路附件,I2C总线就能够支持设备在不同电平下工作(例如:3.3伏和5伏),

多主控 多工作电压

I2C总线的规范中规定了如何在两个设备之间传递数据,采取的方法是总线仲裁、时钟同步和总线的电气特征。

在一次数据传输中,一个设备扮演临时主控器,开始在它和一个有单一地址设备(从控器)之间的传输。主控器为数据传输产生时钟信号。

规范中要求数据线(SDA,串行数据线)只有在时钟(SCL,串行时钟线)处于低平时才能变化。

SDA 和SCL SCL为低的时候SDA才能发生变化。

总线的一次典型工作流程如下:

1.开始:信号表明传输开始。

2.地址:主设备发送地址信息,包含7位的从设备地址和1位的指示位(表明读或者写,即数据流的方向)。

3.数据:根据指示位,数据在主设备和从设备之间传输。数据一般以8位传输,最重要的位放在前面;具体能传输多少量的数据并没有限制。接收器上用一位的ACK(回答信号)表明每一个字节都收到了。传输可以被终止和从新开始。

4.停止:信号结束传输。

开始 地址 数据 结束

那些只有一个主设备(典型的是主微控制器)的基本系统中不会有仲裁的。然而,更多的复杂系统能够有多个主控设备,因此,就有必要用某种形式的仲裁来避免总线冲突和数据丢失。

通过用线与(开路基极)连接I2C总线的两路信号(数据和时钟)可以实现仲裁。所有的主设备必须监视I2C的数据和时钟线,如果主设备发现已经有传输正在进行,它就不会开始传输了。

有很小的几率会产生一下情况:有两个或更多的设备同时发出“开始”信号。在这种情况下,相互竞争的设备自动使它们的时钟保持同步,然后像平常一样继续发射信号。

第一个检测到自己发送的数据和总线上的数据不匹配的设备要失去仲裁能力。这种情况会在这时发生:当前述设备发送一个高电平时,而同时另一个主控设备也正在发送一个低电平。也许直到相互竞争的设备已经传输了许多字节后,仲裁才会完成。

因为没有数据丢失,仲裁处理是不需要一种特殊的仲裁相位的。获得主控权的设备从本质上来说,是不知道它为了总线而和其它设备竞争的。

在一个以硬件为基础的I2C中,有关发送、同步和仲裁的细节是自动处理的,不用你操心。如果你计划实现一个软件驱动的多主控I2C接口,那你需要研究I2C详细规范(study the I2C specification in detail),并懂得其细微差别,

查找内核的引导参数

~ # cat /proc/cmdline
root=/dev/mss/blk0p1 rootfstype=ext3 rw console=ttyS2,115200 mem=128M

static char *video_options[FB_MAX] __read_mostly;
static int ofonly __read_mostly;

一个char *的数组,一个int

fb_get_options 查找引导参数中是否有fb的参数

static struct platform_driver pxafb_driver = {
.probe = pxafb_probe,
#ifdef CONFIG_PM
.suspend = pxafb_suspend,
.resume = pxafb_resume,
#endif
.driver = {
.name = "pxa2xx-fb",
},
};

平台驱动

struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_device *);
int (*suspend)(struct platform_device *, pm_message_t state);
int (*suspend_late)(struct platform_device *, pm_message_t state);
int (*resume_early)(struct platform_device *);
int (*resume)(struct platform_device *);
struct device_driver driver;
};

加了一些方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: