首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IIC接口24C02 驱动分析

本节来学习IIC接口24C02 驱动分析,本节学完后,再来学习Linux如何使用IIC操作24C02 1.I2C通信介绍 它是由数据线SDA和时钟SCL构成串行总线,可发送和接收数据,是一个多主机半双工通信方式...每个挂接在总线上器件都有个唯一地址 位速在标准模式可达 100kbit/s,在快速模式可达400kbit/s,在高速模式可待3.4Mbit/s。...SCL为高期间,SDA由高到低跳变;便是总线启动信号,只能由主机发起,且在空闲状态才能启动该信号,如下图所示: ?...,然后发送读设备地址,不需要停止信号便能实现不同地址转换 ?...地址会自动加1,直到发送停止信号结束 接下来,节开始学习: Linux如何利用linuxI2C驱动体系结构来操作24C02

1.2K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    20.Linux-IIC驱动(详解)

    1.I2C体系结构分析 1.1首先进入linux内核driver/i2c目录下,如下图所示:   其中重要文件介绍如下:   1)algos文件夹(algorithms)   里面保存I2C通信方面的算法.... 2.接下来便来分析I2C总线驱动   参考 drivers/i2c/busses/i2c-s3c2410.c   先进入init入口函数,如下图所示: ?   ...=1,开始发送起始信号+IIC从设备地址值,并回应ACK }   通过上面的代码和注释,发现主要是写入IIC从设备地址,然后发送起始信号+IIC从设备地址值,并回应ACK   显然IIC总线驱动i2c-s3c2410....c,主要设置适配器adapter,里面帮我们做好了IIC通信架构,就是不知道发什么内容   我们进入driver/i2c/chips中,看看eeprom设备驱动是如何写   参考: driver/....detach_client = eeprom_detach_client, //与总线驱动适配器解绑,分离这个IIC从设备 };   如下图所示, eeprom_driver结构体ID成员在

    1.9K20

    linux_驱动_IIC_BLSP

    每一块BLSP对应六位,每一位对应一个GPIO,每一位GPIO都可以作为UART、SPI、IIC链接线 2....需要通过平台数据手册 来确定用哪块BLSP哪个QUP链接是哪个GPIO,这些个GPIO支持是什么类型总线(三大总线之一),每一位又是作为三大总线哪一条 3....,所有的这3个core共享同一个总线接口,也就是对外共用相同I/O接口,比如: 但是对于只使用两个UART引脚UART_DM,比如只用到GPIO_4(TX)和GPIO_5(RX),也是使用两个引脚...其实从上图可知道是第1个BLSP第2个QUDP,但我们从设备树上找到相关 (2) 通过i2c_2_active找到msm8937.dtsi下有引用 这里可知是采用BLSP1QUP2,I2C...定义 从这里可以看出QUP是从QUP_ID_0开始,那么我们使用GPIO6和GPIO7I2C对应QUP_ID_1,使用示例如下: 4.

    79390

    Linux驱动开发IIC设备驱动投机取巧

    前言 LinuxIIC驱动想必大家都耳熟能详,网上也有很多相关教程。 网上教程总结,比如: 方法问题描述Linux 3.X.X版本之后,设备树+驱动此方法是比较符合linux驱动写法。...而且是放在内核态中,这样处理一GPIO或者中断什么都很方便。 投机取巧I2C驱动 I2C设备驱动说明 投机取巧I2C驱动是参考I2C总线驱动代码实现。...分析I2C总线驱动说明 I2C总线驱动代码在linux源码中--i2c-dev.c中。 在代码中可以看到他提供一套文件操作接口,open,read,write,close接口。...i2cdev_ioctl_rdwr()接口是i2c总线驱动对从设备操作进一步封装,我们进一步看一这个函数。...return res; } 投机取巧I2C驱动写法 通过i2c总线驱动源码分析,实际我们设备驱动可以通过这种模仿这个总线驱动来写。

    1.8K20

    迷乱通信协议之IIC时序分析

    经过昨天分析,不知你对时序分析是否有了一定进步,今天将继续把IIC中关于读操作分析,今天我自己进行分析时候,发现寻址方式挺奇特,慢慢品~ 5、当前地址读取(Current AddressRead...这个读取方式是指在一次读或写操作后发起读操作,由于器件在完成一次读写操作后,其内部地址指针会自动加一,因此当前地址读取可以得到加一后地址中数据。...比如当上次读或写操作地址为02时,当前地址读取内容就是地址03处对应数据。当数据不存在时候就会出现图中情况,等待无响应,然后主机发出停止信号结束通信。...,从而开始下一个地址数据读取,依次累加,当地址达到了最大那个限制地址时,地址将进行翻转,然后可以继续开始读取,这里连续读操作在上述随机读操作基础上进行,若不需要读取数据时,主机停止对从机发送收到数据响应反馈...IIC时序也分析完了,相信对你以后进行相关驱动模块程序编写有所帮助,如果之后时间足够的话,会对相关时序进行程序编写,具体以哪种语言实现,敬请期待未来相遇!

    1K50

    Linux平台驱动分析

    /*platform总线,驱动,设备模型。 这是一种机制。这样会使得驱动编写方便,便于维护*/ /*platform总线是一种虚拟总线。...而busmatch函数是通过匹配设备和驱动name。如果相互匹配,然后就调用drvprobe函数。...然后与platform_driver中链表一一比较。 如果匹配成功 则会调用platform_bus中probe函数。 其实和piatform驱动注册时流程是一样。...其实,platform总线, 设备, 驱动只是一种机制。 这种机制可以方便编程。 如果要编写基于platform总线设备驱动模型驱动。...对于程序员来说只需要编写platform设备文件和platform驱动文件。 platform_dev文件中需要定义设备资源等。 platform_drv文件中最主要是编写probe函数。

    1.4K20

    Linux驱动开发: LinuxRTC实时时钟驱动

    Linux内核版本: 3.5 1.1 LinuxRTC时间读写分析 1.1.1 系统时间与RTC实时时钟时间 Linux系统包含两个时间:系统时间和RTC时间。...系统时间:是由主芯片定时器进行维护时间,一般情况都会选择芯片上最高精度定时器作为系统时间定时基准,以避免在系统运行较长时间后出现大时间偏移。特点是掉电后不保存。.../include/linux/rtc.h 定义了与RTC有关数据结构 Linux内核源码自带RTC驱动代码存放位置: \linux-3.5\drivers\rtc\目录下全是RTC驱动示例代码...RTC框架注销函数 void rtc_device_unregister(struct rtc_device *rtc) 经过RTC注册函数形参分析,RTC子系统注册需要通过平台设备框架完成,在平台设备驱动...33.2798 秒,143 kB/秒 默认没有RTC驱动情况,获取系统时间是从1970年开始: 1.3.2 RTC驱动代码编写—框架示例 以下代码只是演示了RTC驱动注册框架。

    38.7K10

    Linux 驱动挂载顺序分析

    手把手教你分析 Linux 启动流程 从上文可以得出,start_kernel 函数最后调用是 rest_init 函数,其实 rest_init 函数不光产生了最重要 kernel_init (...linux4.14/init/main.c 驱动优先级:Linux 把系统中需要挂载各种东西,都分为14个等级,分别为 1--1s--2--2s--3--3s--4--4s--5--5s--6-...-6s--7--7s,数字越小优先级越高,定义在: linux4.14/include/linux/init.h 一般我们自己写驱动模块,文件最后会声明一个 module_init 和 module_exit...(静态编译) 3、动态加载驱动模块:等 Linux 系统起来以后,手动执行 insmod 和 rmmod 即可挂载和卸载驱动,顺序自己决定。测试成功后,再搞到内核中静态编译。...有两种方式: 1、找到编译后 Linux 内核源码,根目录下面有个 System.map 文件,这里记载了 Linux 内核所做所有的事情,是按顺序记载(也有可能在其他输出目录)。

    2.4K30

    32.Linux-2440DMA驱动(详解)

    学了这么多驱动,不难推出DMA编写套路: 1)注册DMA中断,分配缓冲区 2)注册字符设备,并提供文件操作集合fops   -> 2.1)file_operations里设置DMA硬件相关操作,...来启动DMA 由于我们是用字符设备测试方法测试,而本例子只是用两个地址之间拷贝来演示DMA作用,所以采用字符设备方式编写 1.驱动编写之前,先来讲如何分配释放缓冲区、DMA相关寄存器介绍、使用...//*handle:申请到物理起始地址   //gfp:分配出来内存参数,标志定义在,常用标志如下:     //GFP_ATOMIC 用来从中断处理和进程上下文之外其他代码中分配内存...ioctlcmd来判断是使用DMA启动两个地址之间拷贝,还是直接两个地址之间拷贝 -> 2.2)若是DMA启动,则设置DMA相关硬件,并启动DMA传输 2.1 所以,驱动代码如下所示: #include... #include #include #include #include <linux

    3.8K90

    Linux驱动开发_块设备驱动开发(内存模拟存储)

    一、前言 块设备驱动块是Linux3大设备驱动框架之一,块设备主要是针对存储类型设备设计驱动,配合文件系统完成数据存储。...所以大致总结下:块设备驱动目的是给Linux文件系统提供底层接口。 二、编写块设备驱动思路 既然学到了驱动开发,了解到块设备开发。...在Linux下完成块设备驱动编写,主要是要完成来至文件系统存储请求,文件系统让你把数据存到那个扇区,你驱动就去存,文件系统让你从那个扇区读取输出来,驱动就去读取。...没有依赖于硬件,所以:可以在任何Linux编译安装测试,完成块设备驱动了解学习。...看懂块设备框架,使用模拟内存。 2.​ 加入SD卡驱动,配合块设备框架,完成完整块设备驱动编写。

    4.6K30

    19.Linux-USB总线驱动分析

    是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应驱动程序 新接入USB设备默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信...USB高速设备先是被识别为全速设备,然后通过HOST和DEVICE两者之间的确认,再切换到高速模式。在高速模式,是电流传输模式,这时将D+上上拉电阻断开。..., 比如:鼠标的数据是从鼠标传到PC机, 对应端点称为"中断输入端点" 其中端点0是设备默认控制端点, 既能输出也能输入,用于USB设备识别过程 同样linux内核也自带了USB总线驱动程序,框架如下...其中usb_bus_type是一个全局变量, 它和我们之前学platform平台总线相似,属于USB总线, 是Linux中bus一种....USB总线驱动程序大概流程就此结束,未完待续——分析完后下节开始写USB驱动

    8.6K91

    LinuxI2C驱动框架分析

    Linux总线设备框架工作原理 如果想要弄清楚I2C驱动框架,必须深刻理解Linux总线设备框架。之所以会形成这样框架,很重要原因是为了代码复用性。...因为驱动和设备关系是一对多,对于相同类型不同设备,可共用同一套驱动程序接口。为了提高驱动可移植性,Linux抽象出一套管理资源函数。...3.LinuxI2C驱动程序体系结构 ---- 对于LinuxI2C驱动,其体系结构组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动注册,注销方法,I2C通信方法...4.GC0328摄像头I2C实例分析 ---- 对于摄像头驱动程序,首先要知道如何让摄像头能够正常工作。...下面来基本分析其调用过程: 当应用程序通过ioctl传递VIDIO_S_FMT,是可以设置摄像头输出格式 ? 然后看一写寄存器过程 ?

    4.7K11

    Linux笔记(21)| platform总线驱动分析

    //本文主要参考《野火Linux实战开发指南》 上次跟大家分享了设备模型一些东西,包括总线、设备、驱动一些概念,还有他们之间联系。...因为在Linux当中,对于I2C、SPI、USB这些常见类型物理总线来说,Linux内核会自动创建与之相应驱动总线,因此I2C设备、SPI设备、 USB设备自然是注册挂载在相应总线上。...为了使这部分设备驱动开发也能够遵循设备驱动模型,Linux内核引入了一种虚拟总线——平台总线(platform bus)。...这也意味着我们不需要去实现总线里各种函数,包括match函数这种,可以直接不用管这部分。 今天重点就是和大家分享一我是如何分析在平台总线下led设备文件和驱动文件是怎么写。...接下来看一驱动文件是如何写: #include #include #include <linux/platform_device.h

    2.4K40
    领券