i2c
文章平均质量分 71
介绍linux系统i2c子系统
caodongwang
热爱学习,热爱生活~~~
展开
-
【linux iic子系统】GPIO模拟i2c控制器adapter(九)
gpio模拟i2c adapter原创 2022-01-26 15:10:45 · 2983 阅读 · 0 评论 -
【linux iic子系统】gpio模拟i2c(八)
刚学i2c子系统时写的程序,一个简单的参考~~~注意,gpio的硬件地址信息需要根据实际填写~~gpio_i2c.h文件#ifndef _HIK_GPIO_I2C_H#define _HIK_GPIO_I2C_Hint init_gpio(void);void exit_gpio(void);long gpio_tmp_read_data(struct i2c_client *client, unsigned char reg_addr);long gpio_tmp_write_d原创 2022-01-26 14:51:52 · 4291 阅读 · 0 评论 -
【linux iic子系统】i2c驱动示例——tmp75温度传感器驱动代码(七)
I2C驱动要完成哪些事?想要编写i2c驱动,就必须先弄清楚i2c驱动是干啥的。i2c驱动对上需要提供给用户操作对象,用户才能通过这个对象最终访问到i2c设备;对下需要能正确操作i2c设备,也就是实现i2c设备的读写操作;对中间能对接i2c核心提供的接口,实现驱动与设备关联,也方便系统统一管理。综上,i2c驱动需要干以下三件事:使用i2c核心提供的接口将驱动注册到系统,并实现驱动与设备匹配成功所需要执行的probe函数,以及设备或驱动卸载时执行的remove函数。 注册字符驱动,创建设备节点,让原创 2021-05-29 16:59:08 · 2688 阅读 · 4 评论 -
【linux iic子系统】i2c-designware框架分析(六)
i2c-designware框架怎么注册i2c适配器?两种方式,一种是通过platform_bus_type平台总线注册,另一种是通pci_bus_type总线注册。pci方式I2c-designware-pcidrv.c文件内核启动时会扫描所有pci外设为它们分配内存与io空间,并读取配置空间信息填充pci_dev结构体注册到pci总线(设备驱动模型当中的总线),然后就是pci设备与pci驱动的匹配过程,使用厂商号、设备号、次厂商号、次设备号完成匹配,如下匹配列表:static co原创 2021-05-29 16:45:20 · 4370 阅读 · 0 评论 -
【linux iic子系统】i2c整体框图【精髓部分】(五)
经过之前文章介绍,读者可能还未对i2c子系统有整体的认识,没关系,这篇文章可以帮助你。前言我们知道,注册一个字符设备驱动可以向上提供字符设备节点,比如/dev/xxx节点,我们对这个节点进行write/read操作,最终就会调用到字符驱动提供的write/read函数,以完成我们想要实现的功能。同样i2c设备与驱动匹配之后,也是注册设备节点供用户操作,注意的是,这里说的设备节点包含字符设备和块设备节点,本文以字符设备为例进行讲解。如果对字符设备驱动没有概念的读者,请先查阅相关文章学习。对于接触过原创 2021-05-29 16:03:09 · 1469 阅读 · 0 评论 -
【linux iic子系统】i2c设备的添加方法(四)
I2C设备的4种添加方法分为静态注册、动态注册、用户空间注册及i2c驱动扫描注册1.静态注册静态注册就是在架构板级文件或初始化文件中添加i2c设备信息,并注册到特定位置(__i2c_board_list链表)上就可以了,如arm架构下board-xxx-yyy.c文件,x86架构下xxx-yyy-init-zzz.c文件。当系统静态注册i2c控制器(adapter)时,将会去查找这个链表,并实例化i2c设备添加到i2c总线上。注意:一定要赶在i2c控制器注册前将i2c设备信息添加到链表上。...原创 2021-05-21 22:33:28 · 4680 阅读 · 8 评论 -
【linux iic子系统】i2c设备与驱动匹配过程(三)
本文讲解基于linux4.18内核。重要根据前面内容我们可以知道i2c子系统有几个重要的东西:I2C总线:i2c总线主要就是维护着两个链表——驱动、设备。i2c驱动注册时候,通过i2c_driver结构体内部driver成员挂载到总线上。i2c设备注册时候,通过i2c_client结构体内部device成员挂载到总线上。所以总线作用就是i2c设备和I2C驱动的匹配和删除等。值得注意的是,i2c适配器也是挂在总线上(它的作用会在《i2c设备添加方法》章节里说明)!I2C驱动:使用i.原创 2021-05-21 21:12:41 · 3506 阅读 · 4 评论 -
【linux iic子系统】linux下i2c框架(二)
linux为什么要整个IIC驱动框架? 学过单片机的都知道,写一个IIC设备的驱动还是比较容易的。对于软件IIC来说,写几个模拟产生信号的函数和读写函数就好了;对于硬件IIC来说,配置好IIC控制器的寄存器,然后写几个读写函数就好了。那么linux为什么要整个IIC驱动框架呢? 这里举个例子,假如一个cpu有2个IIC控制器1、2,那么我们将IIC设备挂在IIC控制器1上时候,要写一个IIC设备驱动程序,当我们将IIC设备挂在IIC控制器2上时候,有要写一个IIC设备驱...原创 2021-05-16 20:13:49 · 978 阅读 · 0 评论 -
【linux iic子系统】i2c基础(一)
什么是IIC?IIC的全称是Inter-Integrated Circuit,由duPhilips公司推出,是近年来在微电子通信控制制领域广泛采用的一种新型总线标准。它是同步通信的一种特殊形式,仅需两根线(SLC、SDA)即可完成信息传输,并且通信速率较高。在主从通信中,可以有多个IIC设备同时接到IIC总线上,通过地址来识别通信对象。IIC总线与IIC设备硬件连接方式IIC总线的两根线必须上拉,要么CPU内部上拉,要么外置上拉电阻上拉!一般而言,CPU通过两种方式连接II...原创 2021-05-16 20:09:58 · 1371 阅读 · 0 评论