步骤2:调用i2c_register_board_info注册i2c设备相关信息 对于Mini2440的I2C设备at24c08 EEPROM,由arch/arm/mach-s3c24xx/mach-mini2440.c文件中的mini2440_init函数调用i2c_register_board_info注册i2c设备相关信息,mini2440_init函数内容如下: 622staticvoid __init mini2440_init(void) 623{ 624struct mini2440_features...
I2C客户驱动是对I2C从设备的软件实现,一个具体的I2C客户驱动包括两个部分:一部分是i2c_driver,用于将设备挂接于i2c总线;另一部分是设备本身的驱动。 I2C客户驱动程序由i2c_driver和i2c_client来描述 2.3 所有的I2C驱动代码位于drivers/i2c目录下 I2c-core.c 实现I2C核心的功能 I2c-dev.c 通用的从设备驱动 Chips ...
static int __init i2c_init(void) { int retval; retval = bus_register(&i2c_bus_type); if (retval) return retval; #ifdef CONFIG_I2C_COMPAT i2c_adapter_compat_class = class_compat_register("i2c-adapter"); if (!i2c_adapter_compat_class) { retval = -ENOMEM; goto bus_err; } #endif r...
编写一个I2C设备驱动程序的工作可分为两部分,一是定义和注册I2C设备,即i2c_client;二是定义和注册I2C设备驱动,即i2c_driver。下面我们就以mini2440的I2C设备at24c08 EEPROM为例,介绍如何完成这两个工作。 一、定义和注册I2C设备 步骤1:用i2c_board_info保存I2C设备相关信息 在Linux中,struct i2c_client代表一个I2C设...
IIC子系统的初始化在drivers/i2c/i2c-core.c文件中的i2c_init函数中: 00001221 static int __init i2c_init(void)00001222 {00001223 int retval;00001224 00001225 retval = bus_register(&i2c_bus_type);00001226 if (retval)00001227 return retval;00001228 #ifdef CONFIG_I2C_COMPAT00001229 i2c_adapter_compat...
1、linux gpio 模拟 i2c 的使用用 GPIO 模拟 I2C 总线这个结构专门用于数据传输相关的 addr 为 I2C 设备地 址, flags 为一些标志位, len 为数据的长度, buf 为数据。 这里宏定义的一些标志还是需要了解一下。I2C_M_TEN 表示 10 位设备地址I2C_M_RD 读标志I2C_M_NOSTART 无起始信号标志I2C_M_IGNORE_NAK...
1、Linux I2C, SMBus,2013Rev 0.1如风笔记 站在众人的肩上Share what I know with you.2013Linux I2C, SMBus, SPI Drivers 如风(changbin.du)1 Table of Contents1I2C & SMBUS21.1Overview21.2I2C 协议规范31.2.1I2C总线的特征41.2.2寻址方式七位寻址十位寻址51.2.3传输数据61.3代码结构71.4I2C Bus Driver...
i2c_example.c Linux i2c example Apr 20, 2017 Simple Linux i2c example This is a simple program to read a byte from an i2c client under Linux. It is provided as example code; if you want a real program usei2cgetfrom thei2c-toolspackage. ...
根据Linux 的设备、驱动、总线的思想,i2c 设备应该通过 Linux 的 i2c 总线(bus)挂接上去,并和其固定的 driver 进行匹配,所以在 i2c 核心初始化的时候,必须先要注册 i2c bus,在 i2c-core.c 中: static int __init i2c_init(void) { int retval; retval = bus_register(&i2c_bus_type); if (retval) ...
内核空间部分可以分为:i2c设备驱动、i2c核心以及i2c总线驱动。 i2c核心:框架的实现;提供i2c总线驱动和设备驱动的注册、注销方法;i2c通信方法(algorithm)上层的,与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。这一部分的工作由内核开发者完成。