在应用到linux的设备(特别是手机)中,大部分硬件设备与主芯片都是通过iic通讯的,譬如TP、加速度传感器、温湿度传感器等等。记录一次自己调试linux开发板iic器件(ap3216c光敏设备)。
这篇文章介绍在Linux下如何编写FT5X06系列芯片驱动,完成触摸屏的驱动开发, FT5X06是一个系列,当前使用的具体型号是FT5206,它是一个电容屏的触摸芯片,内置了8位的单片机(8051内核),完成了坐标换算等很多处理,在通过IIC,SPI方式传递给外部单片机。
上篇文章介绍了LCD屏幕的使用,这个屏幕还有触摸功能,本篇就来介绍LCD的触摸功能的使用。
设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(DeviceTree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的设备信息,比如CPU 数量、 内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。
单片机的IIC编程中,如果我们直接一点,只需要控制IIC硬件GPIO脚,然后根据IIC协议模拟各种电平时序实现与IIC设备的通信。但是这种编程方法,移植性较差(假如新加了一种IIC设备,同样的代码,又要重新复制一份)。这种做法完全不适应Linux的通用性的设计理念,对于Linux来讲:同样的事情我只做一遍,向外提供接口,不管你是什么IIC设备挂载那条IIC总线上,都可以用。因此,这就需要Linux在代码架构上有非常严谨的模块化设计。
下面使用IIC子系统框架编写EEPROM的驱动,驱动端代码使用杂项字符设备框架,并且实现了文件指针偏移;在应用层可以将EEPROM当做一个255字节大小的文件进行编程读写。
AT24C02是IIC接口的EEPROM存储芯片,这颗芯片非常经典,百度搜索可以找到非常多的资料,大多都是51、STM32单片机的示例代码,大多采用模拟时序、裸机系统运行。当前文章介绍在Linux系统里如何编写AT24C02的驱动,并且在应用层完成驱动读写测试,将AT24C02的存储空间映射成文件,在应用层,用户可以直接将AT24C02当做一个普通文件的形式进行读写,偏移文件指针;在Linux内核里有一套标准的IIC子系统框架专门读写IIC接口设备,采用平台设备模型框架,编写驱动非常方便。
里面保存I2C总线驱动相关的文件,比如i2c-omap.c、 i2c-versatile.c、 i2c-s3c2410.c等。
这篇文章介绍了一种基于I2C接口的EEPROM存储器读写方法,包括地址位、数据位以及控制命令的发送。作者通过一个例子详细展示了读写EEPROM的步骤和注意事项。此外,文章还介绍了如何使用I2C接口实现EEPROM存储器的硬件电路设计和驱动程序。
设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设备设备树的文件叫做DTS(Device Tree Source),这个DTS文件采用了树形结构来描述板机设备,也就是开发板信息,比如CPU数量、内存基地址、IIC接口上接了那些设备、SPI接口上接了那些设备等。如最开始的图片所示! 在图片中,树的主干就是系统总线,IIC控制器、SPI控制器等都是接到系统主线的分支上的。通过DTS这个文件描述设备信息是有相关的语法规则的,并且在Linux内核中只有3.x版本以后的才支持设备树。
设备树是一种数据结构,它通过特有的语法格式描述片上片外的设备信息。由BootLoader传递给kernel,kernel进行解析后形成和驱动程序关联的dev结构供驱动代码使用。
MMA7660FC 是 ± 1.5 克的三轴数字输出、超低功率、紧凑型电容式微电机的三轴加速度计,是非常低功耗,小型容性 MEMS 的传感器。具有低通滤波器,用于偏移和增益误差补偿, 以及用户可配置的转换成 6 位分辨率,用户可配置输出速率等功能。MMA7660芯片可以通过中断引脚(INT)向外通知传感器数据变化、方向、姿态识别等信息。模拟工作电压范围是 2.4V 至 3.6V,数字工作电压范围是 1.71V 到 3.6V 。常用在手机、掌上电脑、车载导航,便携式电脑的防盗,自动自行车刹车灯、运动检测手环、数码机、自动叫醒闹钟里等等。
PCF8591是一个IIC总线接口的ADC/DAC转换芯片,功能比较强大,这篇文章就介绍在Linux系统里如何编写一个PCF8591的驱动,完成ADC数据采集,DAC数据输出。
调试IIC过程中,需要准备示波器或逻辑分析仪,需要通过示波器查看波形确定硬件连接是否正确,不然出现问题,软件再怎么调试,都是枉然.
RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread 拥有良好的软件生态,支持市面上所有主流的编译工具如 GCC、Keil、IAR 等,工具链完善、友好,支持各类标准接口,如 POSIX、CMSIS、C++应用环境、Javascript 执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如 ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的 MCU 和 Wi-Fi 芯片。
工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC 和 DAC。而且随着手机、物联网、工业物联网和可穿戴设备的爆发,传感器的需求只持续增强。比如手机或者手环里面的加速度计、光传感器、陀螺仪、气压计、磁力计等,这些传感器本质上都是ADC,大家注意查看这些传感器的手册,会发现他们内部都会有个 ADC,传感器对外提供 IIC或者 SPI 接口,SOC 可以通过 IIC 或者 SPI 接口来获取到传感器内部的 ADC 数值,从而得到想要测量的结果。Linux 内核为了管理这些日益增多的 ADC 类传感器,特地推出了 IIO 子系统,我们学习如何使用 IIO 子系统来编写 ADC 类传感器驱动。
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说BH1750光照传感器超详细攻略(从原理到代码讲解,看完你就懂了),希望能够帮助大家进步!!!
主设备和从设备进行数据传输时遵循以下协议格式。 数据通过一条SDA数据线在主设备和从设备之间传输0和1的串行数据。串行数据序列的结构可以分为,开始条件,地址位,读写位,应答位,数据位,停止条件,具体如下所示;
IIC(Inter-Integrated Circuit)其实是IIC Bus简称,所以中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。
来自: http://www.diybl.com/course/6_system/linux/Linuxjs/200871/129585.html
LINUX外接TM1650键盘,由于TM1650的接口不是标准的I2C接口,只能通过操作GPIO方式模拟I2C通信,实现对TM1650的驱动;
I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。
,而不是自己根据芯片手册老老实实的编写,虽然节省了很多时间,但是随着时间的加长,再加上平常也没怎么去注意内部的一些时序跳动,导致了该协议的一些原理都已经忘却,对于本人来说,这是个捡芝麻丢西瓜的领悟,所以打算在接下来的一段时间对基础的的一些串行协议重新进行详细的分析,不足之处,请指出。
4.因为项目中用到FreeRTOS,讲讲FreeRTOS的调度原理; 答:FreeRTOS从OS 操作系统支持三种调度方式:抢占式调度,时间片调度和合作式调度。 实际应用主要是抢占式调度和时间片调度
今年3月份离开了工作两年的公司,跳出了安逸的舒适圈,去接受新的事物变化,可想而来的是各种各样的面试题轰炸,发现自己如此不堪一击,只能默默记录下,再战五百回合。 笔试题 求一个在10000 - 99999 之间的随机数; 用宏表示两个数据的交换; 有符号和无符号数 unsigned int a = 6; int b = -20; printf("(a+b) = %d\n",(a+b)); struct 结构体大小 解释const相关含义 char *const p char const *p const
先前分析了 Linux 入口地址和 Linux 系统启动流程,本文详细分析一下 Linux 启动流程中的 console_init 终端初始化函数。
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S USB 转 UART 应用
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。
介绍了系统SysTick实现精确延时,GPIO的输入输出使用,并实现了位带方式操作GPIO,大大简化了GPIO的输入输出控制。有了精确延时函数+GPIO控制,那么就可以使用通用GPIO模拟的方式,来驱动各种接口的显示器件传感器等。本文以通用GPIO模拟IIC协议,来驱动0.96寸OLED模块为例,来实现OLED显示字符、LOGO图片等等。
上篇文章(【i.MX6ULL】驱动开发4--点亮LED(寄存器版))介绍了在驱动程序中,直接操作寄存器了点亮LED。本篇,介绍另外一种点亮LED的方式——设备树,该方式的本质也是操作寄存器,只是寄存器的相关信息放在了设备树中,配置寄存器时需要使用OF函数从设备树中读取处寄存器数据后再进行配置。
本系列将按照类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。
可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S结构尺寸及电压设置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125121.html原文链接:https://javaforall.cn
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。
前面Linux专题中关于Linux下系统编程总结了17篇博文,主要是为了提高Linux下的C编程应用能力,熟悉Linux编程应用环境,从此篇博文起开始Linux驱动的总结,后面计划加一些综合实践项目练习。
一、 值得参考的资料:FX2 TechRefManual、USB应用开发宝典、 LabVIEW-USB通信简单教程(用于参考生成labview驱动程序)、USB设备请求和描述符整理(仅用于理解描述符的作用) 二、KEIL软件的配置: 打开project-manage-component,environment,books 选择folders/extentions页将bin,inc,lib和regfile都配置成正确的路径(keil和cypress程序的安装目录下找,有些项含有两种路径中间用;隔开)。 使用K
之所以写这篇文章,原因有两个。 一是:有个师弟跟我说我发布的文章都偏向于工作者,能不能写一些大学生能用到的东西,我想了一下,确实是,我写的文章大多是我在工作中总结出来的心得,对于初学者来说确实有点难以理解。 二是:我觉得这个光照传感器很多大学生都能用到,但是网上的教程虽多却也不一定能够帮助大家深入了解这款传感器。大家更多的是看完攻略之后能够驱动,但是其实并不了解它的工作原理,想要在光照传感器的基础上增加别的功能也无从下手。 所以,我觉得我还是有必要写一篇更加详细更加深入的攻略来帮助大家理解。我觉得能驱动一个芯片和会驱动一个芯片是不一样的,如果你学会了如何去驱动一个芯片,那么换了别的类似的芯片你也能够得举一反三。不然的话你每次换一个芯片都只能去找人家写好的代码。 好了,废话不多说了,BH1750的讲解马上开始。(注:请一定要从头到尾看下去,粗略看一下也行,因为内容是环环相扣的,一直看,一直爽!!!) 我再多说一句,就一句,真的,接下来我讲的所有代码以及相关的所有文件都可以免费发给你们,链接在文章底部,自己去下载吧。
I2C总线对应着/bus下的一条总线,这个i2c总线结构体管理着i2c设备与I2C驱动的匹配,删除等操作,I2C总线会调用i2c_device_match函数看I2C设备和I2C驱动是否匹配,如果匹配就调用i2c_device_probe函数,进而调用I2C驱动的probe函数。
本次使用RT-Smart的IIC驱动OLED屏幕,进行基本的字符串显示,在使用的过程中遇到一些问题,在这里做记录分享,本次以熟悉RT-Smart使用为主。
实际项目的调试中,往往需要快速修改驱动芯片(只针对IIC通讯)中对应寄存器的值,传统的方式一般是编译驱动 -> 烧录固件 -> 测试,而这样的方式往往很繁琐。这里介绍使用i2c-tools快速修改驱动芯片的寄存器方式1
蓝桥杯单片机AT24C02芯片上电自启动读取数据,写入数据的实现也是挺重要的一个模块,往年的考试就有考到过,下面就来解说一下具体的分析过程吧。
本篇主要介绍STemwin在STM32H743上的移植,基于freeRTOS操作系统。假设freeRTOS已经移植成功,不会移植的童鞋请参考以前的推送或者找官方例程学习。
网上看了很多的嵌入式学习路线,有的比较片面,有的为了博人眼球东拼西凑,几乎把整个行业用得着用不着的技术都写上去了,没有侧重点,简直是劝退指南,还有的纯粹是打广告卖板子招生。
IIC协议(Inter-Integrated Circuit Protocol),也叫I2C协议,是一种串行通信协议,用于在数字集成电路(IC)之间进行通信。它是由Philips公司(现在的NXP公司)在20世纪80年代开发的,并且现在被广泛应用于数字集成电路之间的通信。
IIC全称为Inter Integrated Circuit:两根通信线:一根时钟线SCL一根数据线SDA,只有一根数据线,所以是半双工通信。数据的传输速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
之前的文章【实例演示】ESP8266+U8g2库,玩转OLED显示,介绍过ESP8266在Arduino IDE环境中使用U8g2库,实现OLED上的各种图形显示。
众所周知,Linux内核主要包括三种驱动模型,字符设备驱动,块设备驱动以及网络设备驱动。
先说结论:任何一个领域,就像世间的五行,阴阳结合,虚实结合,利弊结合。对于哪个更好,不能一概而论,最重要的是要搞清楚,你更适合哪个?
电源包括两部分,一部分12V转5V,使用的电源芯片是LM2576,用于给电机驱动供电,一部分是5V转3.3V,用于3.3V芯片及模块供电
领取专属 10元无门槛券
手把手带您无忧上云