I2C
文章平均质量分 80
lamdoc
这个作者很懒,什么都没留下…
展开
-
用示波器量I2C 信号
I2C client 挂到 adapter之后,就可以通过I2C 读写命令开始 读写设备寄存器了。 读写的时候,都可以用示波器量出来I2C CLK 和I2C data信号的,甚至可以读出 data信号上的,传输的设备地址和数据。 有趣的是,开始的时候,把示波器信号周期调的比较大,比如500ms,这时候,测量音频Codec I2C总线上信号,居然量不到信号,而点触摸屏的时候就可以测到原创 2012-06-26 10:09:53 · 1811 阅读 · 0 评论 -
i2c_add_adapter
drivers/i2c/algos/i2c-algo-bit.c 中有两个函数都是用来添加adapter的, 一个是动态添加i2c_add_adapter(),一个是静态添加i2c_add_numbered_adapter(), numbered就是已经定好了adapter id号了的意思。int i2c_bit_add_bus(struct i2c_adapter *ad原创 2013-06-24 17:50:45 · 953 阅读 · 0 评论 -
应用层, i2c-dev.c,和i2c-core.c的交互
i2c 应用层与驱动层沟通的结构体就是下面这个, 定义在i2c-dev.c中:static const struct file_operations i2cdev_fops = { .owner = THIS_MODULE, .llseek = no_llseek, .read = i2c原创 2013-06-24 14:12:51 · 1001 阅读 · 1 评论 -
i2c协议
The I2C protocol.A device that sends data onto the bus is defined as a transmitter and a device receiving data is a receiver.The device that controls the message is called a master. The devices原创 2013-05-24 14:43:39 · 456 阅读 · 0 评论 -
通过 bitbang GPIO来实现i2c总线协议
i2c总线可以通过bitbang两个gpio口来实现, bitbang就是位拉高拉低的意思,英文手册中经常出现的一个词。drivers/i2c/algos/i2c-algo-bit.c, 就是这个i2c的algos程序,通过bitbang SCL 和SDA两个引脚,来实现I2C总线协议。1. 实现bitbang, 有两个最基本的操作,一个是设置GPIO的输出(高或者低),另一个就是读取G原创 2013-06-20 12:04:49 · 1217 阅读 · 0 评论 -
linux中I2C体系结构及4个核心数据结构
一、linux的I2C驱动体系结构分为4部分1. i2c-core:I2C核心,即i2c_core.c 。提供了I2C总线驱动和设备驱动的注册和注销方法,I2C通信algorithm上层的、与具体适配器无关的代码,以及探测设备、检测设备地址的上层代码等。2. i2c-algorythm:里面有I2C的通信方法(即algotithm),位于linux内核源代码driver原创 2012-06-25 11:24:33 · 695 阅读 · 0 评论 -
eeprom_AT24C256_I2C驱动
AT24C256 是256Kbit大小的eeprom,掉电仍可保留数据。本驱动实现了通过I2C总线对AT24C256的读写操作。#include #include #include #include MODULE_LICENSE("Dual BSD/GPL");#include "sti7105.h"#include "stsys.h"#include "stddefs.h"原创 2012-06-26 10:25:45 · 669 阅读 · 1 评论 -
i2c-core.c
/drivers/i2c/i2c-core.cI2C核心提供了一组不依赖于硬件平台的接口函数,这个文件一般不需要工程师修改。I2C总线驱动和设备驱动之间,依赖I2C核心作为纽带。I2C核心主要函数如下:1. 增加删除i2c_adapter: /** * i2c_add_adapter - declare i2c adapter, use dynamic bus原创 2012-06-25 11:27:25 · 818 阅读 · 0 评论 -
RTC 芯片 ISL12020M 驱动编程
这段时间编了个RTC芯片ISL12020M的驱动程序,程序大部分是从ISL1208上移植过来的。寄存器地址进行了重新设置。现在已经编译通过了,还是有点成就感。嘿嘿。代码如下: /* * Intersil ISL12020M rtc class driver * * * * This program is free software; yo原创 2012-06-26 10:29:48 · 841 阅读 · 0 评论 -
I2C驱动程序设计
linux中,I2C软件体系结构分为3个部分: 1.I2C核心。 即i2c_core.c 。里面有I2C的通信方法(即algotithm),位于linux内核源代码/drivers/i2c/目录中。 2.I2C总线驱动。 各主芯片,具有I2C通信功能的CPU,都会有相应的一套I2C总线驱动程序。如i2c_s3c2410.c,i2c_ambarella.c等原创 2012-06-26 10:28:31 · 481 阅读 · 0 评论 -
AIC3104_音频驱动
这两周一直在调AIC3104的驱动,这是个音频codec芯片,可以实现语音对讲功能。AIC3104是通过I2C方式与CPU通信,来设置寄存器,另外是IIS接口进行语音的Mic_in和Line_out功能。 下面是aic3104的驱动源代码:/* extdrv/peripheral/vda/adv7179.c * * * Copyright (c) 2006 Hisilic原创 2012-06-26 10:27:37 · 1694 阅读 · 0 评论 -
Medfield 平台 I2C 驱动配置
medfield 平台中,i2c总线,通过pci总线来配置。代码位于: /drivers/i2c/busses/i2c-designware-pcidrv.c 中1. 首先是pci 设备表: static struct dw_pci_controller dw_pci_controllers[] = { [moorestown_0] = {原创 2012-06-26 10:23:22 · 691 阅读 · 0 评论 -
medfield 平台 lvds bridge 驱动
lvds bridge, 应该是一个I2C接口控制的,采用lvds数据接口,液晶屏驱动器桥。这也是个I2C 驱动,挂接在 I2C_2 总线上。1. 初始化如下: /* ************************************************************************* *\ * FUNCTION: dsi_lvd原创 2012-06-26 10:19:52 · 730 阅读 · 0 评论 -
15_2_I2C 4个数据结构间关系
一、i2c_driver, i2c_client, i2c_adapter, i2c_algorithm 这4个数据结构的作用及关系1.i2c_adapter 与 i2c_algorithmi2c_adapter 对应物理上一个适配器,而i2c_algorithm对应一套通信算法。I2C适配器需要i2c_algorithm中提供的通信函数,来控制适配器上产生特定的访问周期,缺少i2c_原创 2012-06-25 11:25:33 · 137 阅读 · 0 评论 -
pmic芯片lp3925驱动_i2c接口
1. init/exit static int __init lp3925_init(void) { int ret = 0; ret = i2c_add_driver(&lp3925_driver); //添加lp3925 i2c驱动. if (ret) { printk(KERN_WARNING "l原创 2012-06-26 10:13:16 · 732 阅读 · 0 评论 -
tsc2007驱动
tsc2007是个多功能电阻触摸屏, 具有12bit精度的电阻屏A/D装换器, 压力传感器, 温度传感器等功能.根据不同的触摸屏尺寸,可以支持8bit和12bit精度的转换. 支持I2C接口, 一个中断输出引脚, 中断输出低电平.内部结构框图如下:1. tsc2007 结构体定义:struct tsc2007 { struct input_de原创 2013-07-15 14:01:42 · 2091 阅读 · 1 评论