自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 Linux i2c子系统

IIC通信有两个线:一根数据线(SDA) 一根时钟(SCL)总线物理拓扑:电容按键--语音模块--AT24C02 符合IIC通信都可以I2C子系统 IIC--同步半双工主机:芯片从机:外部设备上拉电阻作用:1、保护器件 2、当SCL SDA空闲是高电平 3、阻抗(阻抗匹配)注意:1、只能由主机发起起始条件(启动数据传输)和停止条件(结束数据的传输)。时钟总线只能有主机控制。2、传输的基本单位是字节(1个字节),(MSB)高位在前,低位在后(LSB)。

2023-11-07 14:13:09 175

原创 Linux 平台总线驱动模型

2.1核心数据结构头文件://自定义的设备名,用于和驱动匹配的匹配词(关键词)。设备端的匹配词int id;//当设备和驱动一对一匹配时,设为-1//注册成功后内核会自动创建目录 /sys/bus/platform/devices/name///所有设备的公共抽象模型(类似基类),很重要//设备所用资源数组的首地址//设备所用资源的个数,即资源数组的元素个数//设备id表入口,由内核实现。

2023-11-03 19:47:19 239

原创 Linux input子系统

Relbit[BITS_TO_LONGS(REL_CNT)]包含的相对类型如下,如果设备支持宏值为n的事件类型,则relbit的n号bit为1,否则为0.n从0开始进行编号。核心结构为input_handler,负责完成字符设备的注册和注销(input子系统),文件操作方法,设备文件节点(设备fd)创建,按照核心层定义的规范处理输入设备的事件。Absbit[BITS_TO_LONGSABSL_CNT)]如果设备支持宏值为n的事件类型,则relbit的n号bit为1,否则为0.n从0开始进行编号。

2023-11-02 19:23:52 389 1

原创 Linux系统中中断控制与实现

/定义变量int i = 0;//增加定时到了之后对应的处理函数i++;//一旦接受到字符信息,就可以增加判断和对应的逻辑功能//初始化time_list//定时时间//注册定时器return 0;//注销定时器。

2023-11-01 19:06:49 631 1

原创 Linux系统中GPIO-LED驱动(RK3399)

RK3399有5组GPIO:GPIO0~GPIO4,然后每组GPIO0最多有32个引脚,又分为4个小组,A0~A7,B0~B7,C0~C7,D0~D7--(四个小组)。注意事项:有些GPIO组因为裁剪,未必32个引脚。例子:GPIO4只有C0~C7,D0~D2。功能:所有的GPIO引脚上在上电后的初始状态(默认状态)都是输入模式,可以通过编写设置上下拉,也是可以设置外部中断模式,驱动强度(推挽)是可以设置。寄存器:对GPIO的操作步骤:1、开启相应的GPIO时钟。

2023-10-31 20:03:05 863 1

原创 STM32中的GPIO

I :Input(输入) O:Output(输出)GPIO:通用型输入输出接口作用:IO口是单片机与外界进行信息交换的唯一窗口。

2023-10-28 16:31:08 29

原创 SPI通信

SPI(Serial Peripheral interface):是由Motorola(摩托罗拉)公司开发的串行外围设备接口,是一种高速的,全双工,同步的通信总线。主要应用在 EEPROM,FLASH(存储),模块通信(显示控制芯片OLED、LCD),实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等器件。SPI通信速率:Mhz 25Mhz 需要看从机最大支持多快的速率。

2023-10-27 20:52:55 261 1

原创 UART通信

通信协议:两个器件之间需要建立通信,满足一个规则,规则就是通信协议。UART(串口通信485、232)、SPI、IIC、CAN、zigbee、Lora、WIFI 、8080并行(通常用于驱动屏幕)等。

2023-10-26 10:00:13 659 1

原创 Linux字符设备驱动模型

Linux字符设备驱动框架:主要服务于外设,或者硬件设备。例如:温度传感器、湿度传感器。Linux系统有3种最基本的字符设备驱动模型(框架):第一个:杂项设备驱动模型。第二个:早期经典字符设备驱动模型(框架)。第三个:Linux2.6标准字符设备驱动模型。它是在linux2.6版本之后发布的共同点:都是需要一个struct file_operations类型文件操作方法的结构,里面包含了对设备的各种I/O操作。并且都需要在设备使用前进行注册(函数),不是使用的时候进行注销(函数)。

2023-10-25 20:03:07 358 1

原创 信号量基本操作

信号量(变量可以有值)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问(类似与互斥锁),常用于协助一组相互竞争的任务来访问临界资源。信号量用来描述一组资源可使用次数(可以使用的次数),值>0--有资源可用,可以访问临界资源(公共资源),值==0--当前没有资源可用,所以会阻塞等待信号量值(变量的值)的改变是通过函数来实现的加减,(当信号量的值为0的时候,再来申请就会阻塞)阻塞原因是函数。

2023-10-23 20:45:33 171

原创 Linux API函数使用

第一个:open--->默认在文件的开头位置。--打开对应的文件第二个:open(fd,O_APPEND)-->默认在文件的结尾-->lseek()write()和read()-->可以向文件的结尾进行偏移,偏移的长度更实际的数据长度相关lseek()函数---偏移位置和参数相关,偏移基点来决定哪个位置为起始地址。标准IO和文件IO的区别第一个:使用的平台不同文件IO适用于UNIX平台标准IO适用标注C平台。第二个:操作对象不同 文件IO能够操作任何文件设备文件。

2023-10-23 20:44:46 152

原创 Linux系统模块编程

作用:模块是为了方便驱动程序的加载或卸载。原理:由于Linux可运行于各种各样的体系架构(内核源码--arch文件--ARM--RISC-V(开源))中,并且支持无数的I/O设备,把所有要支持的设备都直接编译进内核并不合适,所以Linux发行版通常包含一个最小的内核镜像(包含通用的基础的功能),而以模块的形式提供其他的功能(场景:设备--在进行成品保证的时候,要判断,这个成品是否完整),在系统运行时,可以动态地按需加载模块。静态--是指内核里面已经包含的驱动模块。

2023-10-23 20:42:30 330

原创 I2C总线规范

I2C总线的特征:只要求两条总线线路 一条串行数据线SDA 一条串行时钟线 SCL。每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机 从机关系软件设定地址,主机可以作为主机发送器或主机接收器。它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏。串行的8位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达400kbit/s高速模式下可达 3.4Mbit/s。

2023-10-20 19:36:32 130

原创 Linux网络编程

OSI七层参考模型:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层随着时间的发展:后面又出现了四层参考模型:应用层 传输层 网络层 网络接口层应用层协议:http SMTPTCP/IP协议族的每一层的作用--重点:网络接口层:负责将二进制数据流转化成对应的数据帧,并进行数据帧的发送和接收。(网络中传输的方式)网络层:负责将数据帧封装成IP数据报,并运行对应的路由算法(数学--拉格朗日特勒傅里叶)。

2023-10-17 16:09:00 25

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除