i2c-dev.c 是Linux 内核中的一个源文件,它实现了 I2C 总线的设备驱动程序。I2C(Inter-Integrated Circuit)是一种串行通信协议,用于微控制器(MCU)和其他设备之间的短距离通信。以下是关于 i2c-dev.c 的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方法。 基础概念 I2C 总线: I2C 是一种双向二线制串...
return 0; case I2C_PEC: /* * Setting the PEC flag here won't affect kernel drivers, * which will be using the i2c_client node registered with * the driver model core. Likewise, when that client has * the PEC flag already set, the i2c-dev driver won't see * (or use) this setti...
另外一种驱动 应用层除了使用上述的使用i2c_driver接口来访问i2c设备,Linux内核还提供了一种简单粗暴的方式——直接通过虚拟i2c设备驱动的方式,即上一篇中的i2c-dev提供的方式,这种方式使用的i2c_client是随着open的操作临时创建的虚拟的client,即不是挂接在i2c_bus_type中的链表中的,对于用户程序来说,这种方式的驱动...
开始在内核编译i2c-dev通用驱动 1)在linux-2.6.32.2/内核目录下make menuconfig,选择如下Device Drivers 2)进入Device Drivers目录,选择I2C Support,表示编译I2C驱动模块,会将i2c-core.c编译成模块文件i2c-core.ko 3)进入I2C support 4)选择模块化编译I2C device interface "M",则会将i2c-dev.c编译成i2c-dev.ko...
hi2c->XferSize=hi2c->XferCount;/* Send Slave Address */if(I2C_MasterRequestWrite(hi2c,DevAddress,Timeout,tickstart)!=HAL_OK){if(hi2c->ErrorCode==HAL_I2C_ERROR_AF){/* Process Unlocked */__HAL_UNLOCK(hi2c);returnHAL_ERROR;}else{/* Process Unlocked */__HAL_UNLOCK(hi2c);returnHAL...
I2c-dev.c 实现了 i2c 适配器字符设备接口。每次系统注册一个i2c_adapter的时候,会通过 bus notifier的方式通知i2c-dev.c 模块,i2c-dev.c模块收到注册通知后,会为该 i2c_adapter 创建一个名字为"i2c-xx" 字符设备,主设备号为89,次设备号为i2c_adapter的总线编号xx。i2c-dev.c并不是针对特定的设备而设计的...
I2C设备驱动程序中主要包括了数据结构i2c_driver(用于管理i2c_client)、i2c_client(挂在I2C总线上的设备驱动程序)和需要根据具体设备实现的成员函数。标准的I2C驱动程序也是一个字符设备驱动程序,通过i2c-dev.c来进行管理,包括open、release、read、write、ioctl和lseek等。
APP 访问硬件肯定是需要驱动程序的,对于I2C设备,内核提供了驱动程序drivers/i2c/i2c-dev.c,通过它可以直接使用下面的 I2C 控制器驱动程序来访问 I2C 设备。 i2c-tools 是一套好用的工具,也是一套示例代码。 1.体验 I2C-Tools 使用一句话概括 I2C 传输:APP 通过 I2C Controller 与 I2C Device 传 输数据。 所以...
hi2c->ErrorCode = HAL_I2C_ERROR_NONE; /* Prepare transfer parameters */ hi2c->pBuffPtr = pData; hi2c->XferCount = Size; hi2c->XferOptions = I2C_NO_OPTION_FRAME; hi2c->XferSize = hi2c->XferCount; /* Send Slave Address */ if(I2C_MasterRequestWrite(hi2c, DevAddress, Timeout,...
Linux驱动程序: drivers/i2c/i2c-dev.c I2CTools:https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/ 1.4.1. I2C硬件框架 1.4.2. I2C传输协议 1.4.3. Linux软件框架 1.4.4. 重要结构体 使用一句话概括I2C传输:APP通过I2C Controller与I2C Device传输数据。