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

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.

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

    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

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

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

    1.1K50

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

    前言 LinuxIIC驱动想必大家都耳熟能详,网上也有很多相关教程。 网上教程总结,比如: 方法问题描述Linux 3.X.X版本之后,设备树+驱动此方法是比较符合linux驱动写法。...他将会操作多个文件 上面的做法都有些困难及弊端存在,经过摸索了一遍LinuxI2C驱动框架,我发现可以很精简写一个I2C设备设备驱动。...而且是放在内核态中,这样处理一GPIO或者中断什么都很方便。 投机取巧I2C驱动 I2C设备驱动说明 投机取巧I2C驱动是参考I2C总线驱动代码实现。...分析I2C总线驱动说明 I2C总线驱动代码在linux源码中--i2c-dev.c中。 在代码中可以看到他提供一套文件操作接口,open,read,write,close接口。...i2cdev_ioctl_rdwr()接口是i2c总线驱动对从设备操作进一步封装,我们进一步看一这个函数。

    1.8K20

    Linux系统GIC驱动程序分析

    视频观看 百问网驱动大全 第五章GIC驱动程序分析 资料下载 视频观看 1....GIC中断处理流程源码分析 参考资料: linux kernel中断子系统之(七):GIC代码分析 Linux 4.9.88内核源码 Linux-4.9.88\drivers\irqchip...~3这四个hwirq,一般都会一子分配四个irq_desc 假设这4个irq_desc序号为100~103,在GPIO domain中记录(0,100) (1,101)(2,102) (3,103)...按KEY时: 程序从GIC中读取寄存器知道发生了33号中断,通过GIC irq_domain可以知道virq为16 调用irq_desc[16]中handleB函数 handleB...: 驱动程序注册platform_driver 它of_match_table里有多个of_device_id,表示能支持多个设备 有多种版本GIC,在内核为每一类GIC定义一个结构体of_device_id

    4.2K21

    2.1 IIC协议FPGA实现(二)IIC协议FPGA实现

    2.1 IIC协议FPGA实现 2.1.2 IIC协议FPGA实现               图2 13 IIC模块建模图   图2 13是 IIC 储存模块建模图,左边是顶层信号,右边则是沟通用问答信号...IIC 总线起始位也就类似串口或者 PS/2 等传输协议起始位,然而不同是, IIC 总线起始位是 SCL 拉高 TR + TSU_STA + THD_STA + TF 之久,换之 SDA 则是拉高...第 6~7 行表示一个步骤所逗留时间。             图2 15 结束位   图2 15是结束位时序图, IIC 设备操作好坏一般都取决结束位。...图2 16 释放总线   此外,结束位还有 Bus Free Time 这个时序参数,IIC 总线在闲置状态 SCL 与 SDA等信号都持续高电平。...如果笔者是一位紧密控时狂人,可能无法接受这样结果,因为满足 TBUF 少了 3 个时钟,为此代码2 3需要更动一:          代码 2 4 IIC结束位代码修改 1. if( C1

    1.4K40

    IIC总线硬件解析

    当SCL电平是低时候,SDA数据无效,允许变化。 IIC总线有主从之分,从设备可以是多个,这个是由硬件电路与协议决定,一般来说总线上扩展器件数量主要由电容负载来决定。...这里重新普及CMOS高低电平大小: 1、输出高电平和输出低电平 Uoh≈Vcc,Uol≈GND, 2、输入高电平和输入低电平 Uih≥0.7Vcc...总结: 如果RC充电时间常数过大,将使信号上升沿变化缓慢,达不到数据传输要求。 如果Rp太小,则会增大端口sink电流。 故在可能情况,Rp取值应稍大一点,以减少耗电。...另外,通常情况,SCL,SDA两条线上上拉电阻取值是一致,并上拉到同一电源上。...数据有效性: SDA 线上数据必须在时钟高电平周期保持稳定数据线高或低电平状态只有在SCL 线时钟信号是低电平时才能改变。 硬件调试方法: 下面简单说下IIC总线设备调试方法。

    2K20

    Linux设备驱动程序(四)——调试技术

    ioctl 命令:TIOCLINUX,这个命今可以完成一些特定 Linux 功能。...在许多情况,最好办法是设置一个标志,表示“我已经就此声明过了”,并在该标志被设置时不再打印任何信息。但在某些情况,仍然有理由偶尔发出一条“该设备仍停止工作”这样消息。...现代 Linux 发行版中很多工具都是通过 /proc 来获取它们需要信息,例如 ps、top 和 uptime。...①、在/proc中实现文件 所有使用 /proc 模块必须包含 ,并通过这个头文件来定义正确函数。...根据与这两个键一起按第三个键不同,内核会执行许多有用动作中其中一个,如下所示: r:关闭键盘 raw 模式。

    83941

    2.1 IIC协议FPGA实现(一)IIC 总线规范简介

    2.1 IIC协议FPGA实现 2.1.1 IIC 总线规范简介 1) IIC 总线特性介绍   在现代电子产品开发过程中,为了简化系统,提高系统可靠性,缩短产品开发周期,增加硬件构成灵活性,推出了一种高效...IIC总线上数据传输速率在标准模式可达100kb/s,在快速模式可达400kb/s,在高速模式可达3.4Mb/s。连接到总线接口数量由总线电容是400pF限制决定。...图2 9 复合格式   默认,设备地址为八位宽,因此设备地址也称为设备字节。设备地址高四位,即[7…4]记录硬件 ID,接续三位即 [3…1] 则记录硬件地址,最后一位则是设备访问方向。...稍微注意一设备地址最低位。由于此刻是写操作,所以设备地址访问方向是“写”,所以访问方向位设置为 0。 ?                     ...IIC总线上数据传输速率在标准模式可达100kb/s,在快速模式可达400kb/s,在高速模式可达3.4Mb/s。实验十六会以 400Khz 速率作为标准。

    1.5K10

    Linux设备驱动程序(三)——字符驱动

    例如我们要操作某个设备,首先,我们要知道设备在/dev设备文件名。这个设备文件提供主设备号以及次设备号。然后内核通过设备文件提供主设备找到设备驱动程序(操作设备由驱动程序实现)。...最后通过主设备号和次设备构成设备号找到正确设备。有了操作对象(设备)和操作方法(驱动程序)那就可以完成了我们要求。 一个驱动程序可以操作多个设备,所以不同设备可以具有相同主设备号。...成功调用申请设备编号函数后,在系统 /proc/devices 就会包含设备以及设备主设备号信息。函数在中声明。字符设备不再使用时应该释放它们占用编号。...成功调用申请设备编号函数后,在系统 /proc/devices就会包含设备以及设备主设备号信息。...如果想尝试比较简单字符驱动实现,可以查看我另一篇驱动开发之 hello 驱动程序实现文章: 荔枝派Zero(全志V3S)驱动开发之hello驱动程序

    69141

    Linux驱动实践:如何编写【 GPIO 】设备驱动程序

    目录 示例程序目标 编写驱动程序 编写应用程序 卸载驱动模块 在前几篇文章中,我们一块讨论了:在 Linux 系统中,编写字符设备驱动程序基本框架,主要是从代码流程和 API 函数这两方面触发。...编写驱动程序 以下所有操作工作目录,都是与上一篇文章相同,即:~/tmp/linux-4.15/drivers/。...文件内容如下(不需要手敲,文末有代码下载链接): #include #include #include <linux/ctype.h...从代码中可以看出:驱动程序使用 alloc_chrdev_region 函数,来动态注册设备号,并且利用了 Linux 应用层中 udev 服务,自动在 /dev 目录下创建了设备节点。...再来看一 dmesg打印信息: 可以看到:驱动程序 gpio_driver_exit( ) 被调用执行了。

    5.2K30

    Linux系统驱动之Framebuffer驱动程序框架

    资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 Framebuffer驱动程序框架 1....怎么编写字符设备驱动程序 驱动主设备号 构造file_operations结构体,填充open/read/write等成员函数 注册驱动:register_chrdev(major, name, &fops...Framebuffer驱动程序框架 分为上下两层: fbmem.c:承上启下 实现、注册file_operations结构体 把APP调用向下转发到具体硬件驱动程序 xxx_fb.c:硬件相关驱动程序...怎么编写Framebuffer驱动程序 核心: 分配fb_info framebuffer_alloc 设置fb_info var fbops 硬件相关操作 注册fb_info register_framebuffer

    3.3K30

    Linux设备驱动程序(一)——设备驱动简介

    前言 这一部分主要是用来介绍 Linux 设备驱动程序一些基本概念,包括:Linux 设备驱动程序作用、内核功能划分、设备和模块分类以及版本编号。...一、Linux 设备驱动程序作用 设备驱动程序就像一个个“黑盒子”,使某个特定硬件响应一个定义良好内部编程接口,这些操作完全隐藏了设备工作细节。...用户操作通过一组标准化调用执行,而这些调用独立于特定驱动程序。将这些调用映射到作用于实际硬件设备特有操作上,则是设备驱动程序任务。...另外,Linux 支持多个文件系统类型,就是说,物理介质上不同数据组织方式。例如,磁盘可被格式化成标准 Linux ext3 文件系统,普遍使用 FAT 文件系统,或者其他几个文件系统。...一个网络接口负责发送和接收数据报文,在内核网络子系统驱动,不必知道单个事务是如何映射到实际被发送报文上

    1.2K41

    韦东山:Linux驱动程序基石之mmap

    这涉及在用户态buffer和内核态buffer之间传数据,如下图所示: 应用程序不能直接读写驱动程序buffer,需要在用户态buffer和内核态buffer之间进行一次数据拷贝。...改进方法就是让程序可以直接读写驱动程序buffer,这可以通过mmap实现(memory map),把内核buffer映射到用户态,让APP在用户态直接读写。...二级页表地址旺射最小单位有4K、1K,Linux使用4K。...3.3, 驱动程序要做驱动程序要做事情有3点: ① 确定物理地址 ② 确定属性:是否使用cache、buffer ③ 建立映射关系 参考Linux源文件,示例代码如下: 还有一个更简单函数:...9.4 驱动编程 我们在驱动程序中申请一个8Kbuffer,让APP通过mmap能直接访问。

    4K31

    韦东山:Linux驱动程序基石之mmap

    改进方法就是让程序可以直接读写驱动程序buffer,这可以通过mmap实现(memory map),把内核buffer映射到用户态,让APP在用户态直接读写。...二级页表地址旺射最小单位有4K、1K,Linux使用4K。 一级页表项里内容,决定了它是指向一块物理内存,还是指问二级页表,如下图: ?...是否使用cache、是否使用buffer,就有4种组合(Linux内核文件arch\arm\include\asm\pgtable-2level.h): ?...3.3, 驱动程序要做驱动程序要做事情有3点: ① 确定物理地址 ② 确定属性:是否使用cache、buffer ③ 建立映射关系 参考Linux源文件,示例代码如下: ?...还有一个更简单函数: ? 4,驱动编程 我们在驱动程序中申请一个8Kbuffer,让APP通过mmap能直接访问。 ① 使用哪一个函数分配内存?

    7K40

    协议——SCCB与IIC区别

    OV7725使用是两线式接口总线,该接口总线包括SIO_C串行时钟输入线和SIO_D串行双向数据线,分别相当于IIC协议SCL信号线和SDA信号线。...由此可见,SCCB就是改编版IIC,完全可以按照IIC来理解,下面仔细讲解SCCB时序以及和IIC不同之处。 一、SCCB起始和结束(与IIC完全一致) ?...二、SCCB写(与IIC完全一致) ?   ID Address(W)里面就已经包括进了IIC“读写控制位”,所以没有额外写出。   ...“X”即IICACK应答位。 三、SCCB读 ?   数据手册中SCCB读只写了上图Phase3和Phase4,实际上它是和Phase1和Phase2联系在一起。..._4 + stop_2 除去上面三点,SCCB和IIC再无区别,因此如果只需要配置寄存器(只用到写),可以直接拿IIC时序来当做SCCB用,如果需要读,读操作中间必须有一个stop。

    1.4K30

    linux设备驱动程序注冊过程具体解释

    Linux驱动程序注冊过程,大致分为两个步骤: 模块初始化 驱动程序注冊 以下以内核提供演示样例代码pci-skeleton.c,具体说明一个pci设备驱动程序注冊过程。...事实上模块初始化过程就是这么简单,这也是linux驱动程序ISO标准流程:module_init–>xx_init_module–>xx_register_driver。...在介绍注冊函数之前,必需要具体说明linux总线设备驱动模型,否则以下内容非常难描写叙述清楚。...事实上在linux内核中,全部设备驱动定义,都是以struct device_driver为基类,进行继承与扩展。你没有看错,内核其中使用了非常多OO思想。...驱动程序probe函数開始运行了,驱动程序注冊工作也就大功告成了。 3. 总结 我们来总结一设备驱动程序初始化几个步骤: 1.

    2.3K20

    Linux设备驱动程序(二)——建立和运行模块

    2、内核并发 常见引起并发原因: linux 系统中通常正在运行多个并发进程,并且可能有多个进程同时使用我们驱动程序。...大多数设备能够中断处理器,而中断处理程序异步运行,而且可能在驱动程序正试图处理其他任务时被调用。 linux 可以运行在多处理器上,因此可能同时有多个处理器在使用该进程。...这个程序加载模块代码段和数据段到内核,接着,执行一个类似 ld 函数,它连接模块中任何未解决符号连接到内核符号表上。 modprobe 工具值得快速提及一。...五、内核符号表 通常情况,一个模块完成它自己功能不需要输出如何符号。但是,你需要输出符号,在任何别的模块能得益于使用它们时候。...一个精心设计驱动程序仍然可以,如同内核空间驱动,允许对设备并行存取。 如果你必须编写一个封闭源码驱动,用户空间选项使你容易避免不明朗许可情况和改变内核接口带来问题。

    84941
    领券