自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux 驱动基础】驱动程序基石

◼ 如果一个 tasklet 已被调度, tasklet_kill 会等待它执行完华,再把它的 TASKLET_STATE_SCHED 状态清 0。每一个设备,内核都会将其看成是一个文件,都会在内核中创建一个struct file结构体来描述这个设备,该结构体就位于内核的文件系统中。4. 内核文件系统中的sys_poll,会在死循环for中,先调用驱动程序的drv_poll来获取状态event。6. 线程休眠过程中,按下了按键,产生了按键中断,在中断服务函数中记录按键值,并且从wq等待队列中将线程唤醒。

2024-04-25 19:52:19 747

原创 【Linux 驱动基础】设备树中断

【代码】【Linux 驱动基础】设备树中断。

2024-04-15 22:59:41 453

原创 【Linux 驱动基础】pinctrl与gpio子系统

(1)管理系统中所有的可以控制的pin,在系统初始化的时候,枚举所有可以控制的pin,并标识这些pin。(2)管理这些pin的复用(Multiplexing)。对于SOC而言,其引脚除了配置成普通的GPIO之外,若干个引脚还可以组成一个pin group,行程特定的功能。pin control subsystem要管理所有的pin group。(3)配置这些pin的特性。例如使能或关闭引脚上的pull-up、pull-down电阻,配置引脚的driver strength。

2024-04-12 19:06:36 1290

原创 【Linux 驱动基础】设备树驱动

在图中,树的主干就是系统总线, IIC 控制器、 SPI 控制器等都是接到系统主线上的分支。其中 IIC1 上接了 AT24C02这个 IIC 设备, DTS 文件的主要功能就是按照图所示的结构来描述板子上的设备信息。

2024-04-01 23:29:44 626

原创 【Linux 驱动基础】Linux platform平台设备驱动

总线是处理器与一个或者多个设备之间的通道,在设备模型中,所有的设备都是通过总线相连,当然也包括虚拟的 platform 平台总线。

2024-03-28 21:45:43 768

原创 【Linux 驱动基础】IMX6ULL LED基础驱动

本机使用的是正点原子的IMX6ULL开发板。

2024-03-24 22:31:41 537

原创 【Linux 驱动基础】第一个驱动

APP 打开文件时,可以得到一个整数,这个整数被称为文件句柄。对于 APP的每一个文件句柄,在内核里面都有一个“ struct file”与之对应。通过以上过程,就绑定了文件句柄fd与file结构体,后续操作文件句柄fd,实际上就是操作文件结构体file,文件结构体file如下,在结构体中,有,里面包含了读写等对文件的操作;有,这就是使用open函数时的打开模式;有。

2024-03-23 00:52:40 717

原创 【Linux】输入系统应用

(1)输入子系统分为三层,分别是事件处理层、核心层、设备驱动层;(2)鼠标移动、键盘按键按下等输入事件都需要通过设备驱动层→核心层→事件处理层→用户空间,层层上报,直到应用程序;

2024-03-03 20:40:20 939

原创 【Linux】Framebuffer 应用

_u32 type;__u32 xres;__u32 yres;/*!__u32 sync;

2024-02-17 23:03:10 995

原创 【Linux】文件IO

Linux文件I/O分为系统IO和标准IO,常用于系统编程系统I/O通过文件描述符fd来操作文件标准I/O通过FILE*来操作文件Linux下可以使用man命令来查看使用手册。

2024-01-28 10:41:36 802

原创 【Linux】Makefile

如果Makefile中出现一些相同命令序列,那么我们可以为这些相同的命令序列定义一个变量。endef在这个命令包的使用中,命令包“run-yacc”中的“$^”就是“foo.y”,“$@”就是“foo.c”

2024-01-26 20:42:37 781

原创 【Linux】03 GCC编译器的使用

在使用gcc编译程序时,编译过程可以简要划分为4个阶段:预处理、编译、汇编、链接。

2024-01-18 00:12:30 842

原创 【Linux】02 Ubantu交叉编工具的安装

对交叉编译工具进行解压,解压命令如下:使用 pwd 命令记录交叉编译链的bin文件路径使用 vim 打开/etc/profile 文件,命令如下:输入如下内容:使用如下指令进行重启:

2024-01-16 23:55:48 374

原创 【Linux】01 Ubantu安装NFS服务器及其使用

在Ubantu终端执行以下命令即可安装:使用如下命令打开 nfs 配置文件/etc/exports:打开/etc/exports 以后在后面添加如下所示内容:重启 NFS 服务,使用命令如下:输入以下指令查看服务器的共享目录:

2024-01-16 23:45:40 537

原创 【直流无刷电机 BLDC】二 霍尔传感器控制原理

声明:学习笔记来自B站教程,仅供学习交流!!

2024-01-13 18:07:19 556

原创 【直流无刷电机 BLDC】一 电机概述

顾名思义,无刷直流电机不使用电刷。无刷直流电机不利用换向器来调节线圈内部的电流,而是使用电子换向器来传递电流,该电流产生交流电信号,从而导致电机驱动。

2024-01-13 16:25:28 1003

原创 【步进电机 stepping motor】三 S形加减速

声明:学习笔记来自B站教程,仅供学习交流!!

2023-12-21 23:30:43 800

原创 【步进电机 stepping motor】二 梯形加减速

梯形加减速一共分为三个阶段,OA 加速部分、AB 匀速部分 和 BC 减速部分。在 OA 加速过程中,由低于步进电机的启动频率开始启动(模型中由 0 启动),以固定的加速度增加速度到目标值;在 AB 匀速过程中,以最大速度匀速运动;在 BC 减速部分中,以加速度不变的速度递减到 0;这种算法是一种在加速过程和减速过程中加速度不变的匀变速控制算法,由于速度变化的曲线有折点,所以在启动、停止、匀速段中很容易产生冲击和振动。

2023-12-17 21:43:58 1016

原创 【步进电机 stepping motor】一 电机概述

步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号, 转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比, 转速与脉冲频率成正比。因此, 步进电动机又称脉冲电动机。在非超载且不超频的情况下,电机的旋转位置只取决于脉冲个数,转速只取决脉冲信号的频率。

2023-12-12 21:08:03 866

原创 【直流无刷电机 DBC】三 电机电压电流温度检测

声明:学习笔记来自B站教程,仅供学习交流!!

2023-12-03 15:36:36 1341

原创 【直流无刷电机 DBC】二 编码器测速

由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速。编码器倍频是什么意思呢,比如某光栅编码器一圈有N个栅格,理论上电机带动编码器转一圈,只能输出N个信号,通过倍频技术,可以实现转一圈,却能输出N*n个信号,这里的n为倍频数。$F_0$/$M_1$ 即1s内的高频脉冲数除以两编码器脉冲间的高频脉冲数,也即1s内有多少个编码器脉冲,再除以一圈的脉冲数C,即1s内转了多少圈。

2023-11-27 22:17:07 1005 1

原创 【直流无刷电机 DBC】一 电机驱动

声明:学习笔记来自正点原子B站教程,仅供学习交流!!

2023-11-27 22:15:23 307

原创 RTL8309N

RTL8309N-VB是一款8端口10/100M以太网交换机控制器,将内存、8个MAC和8个物理层收发器集成在一块芯片上,支持10Base-T和100Base-TX操作。为了简化外围电源电路,RTL8309N-VB集成了一个LDO稳压器,从3.3V的输入电源产生1.2V,只需要一个外部二极管。

2023-09-22 22:11:25 1056

原创 LWIP基础

lwIP(A Lightweight TCP/IP stack)是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行。这样就可以让lwIP适用于资源有限的小型平台例如嵌入式系统。

2023-09-17 21:29:27 579

原创 LAN8720A

LAN8720A/LAN8720Ai是一款具有可变I/O电压的低功耗10BASE-T/100BASE-TX物理层(PHY)收发器,符合IEEE802.3-2005标准。LAN8720A/LAN8720Ai支持通过标准RMII接口与以太网MAC进行通信。它包含一个全双工10-BASE-T/100BASE-TX收发器,支持10 Mbps (10BASE-T)和100 Mbps (100BASE-TX)工作模式。LAN8720A/LAN8720Ai可实现自动协商以自动确定可能的最佳速度以及双工工作模式。

2023-09-16 11:16:11 1402 2

原创 Fatfs系统移植

FATFS是面向小型嵌入式系统的一种通用的FAT文件系统。它完全是由C语言编写并且完全独立于底层I/O介质。支持的内核有:8051、PIC、AVR、SH、Z80、H8、ARM等。FATFS支持FAT12、FAT16、FAT32等格式。

2023-09-11 22:43:28 267

原创 SD卡协议2.0

SD卡是基于flash的存储卡。SD卡和MMC卡的区别在于初始化过程不同。SD卡的通信协议包括SD和SPI两类。

2023-09-10 22:35:30 484

原创 W25Q128

如果最后一个地址字节不为零,并且时钟的数量超过了剩余的页长度,则寻址将换行到页的开头。在某些情况下,可以编程少于256字节(部分页),而不会对同一页中的其他字节产生任何影响。执行部分页程序的一个条件是时钟的数量不能超过剩余的页长度。

2023-09-06 22:49:10 1916

原创 I2S通信协议

全称,或简写,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内部器件之间传输,例如编解码器CODEC、DSP、数字输入/输出接口、ADC、DAC和数字滤波器等。除了都是由飞利浦定义外,I2S和没有任何关系。I2S是比较简单的数字接口协议,没有地址或设备选择机制。在I2S总线上,。主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接收设备的其它控制设备。在I2S系统中,提供时钟(SCK和WS)的设备为主设备。SCK:时钟信号。

2023-09-04 21:59:49 1049 1

原创 SPI通信协议

串行外设接口 (SPI) 总线是一种运行于全双工模式下的同步串行数据链路。用于在单个主节点和一个或多个从节点之间交换数据。SPI 总线实施简单,仅使用四条数据信号线和控制信号线SCK:串行接口时钟由主机发起以开始数据传输/SS:由主站产生的低活动从站选择信号,用于访问特定的从站MOSI:用于从主机到从机传输的数据线MISO:用于从机到主机传输的数据线。

2023-09-04 21:09:26 43

原创 AT24C02

AT24C01A/02/04/08A/16A提供1024/2048/4096/8192/16384位串行电可擦除和可编程只读存储器(EEPROM),组织为128/256/512/1024/2048字,每个8位。该器件针对许多汽车应用进行了优化,在这些应用中,低功耗和低电压操作是必不可少的。AT24C01A/02/04/08A/16A具有节省空间的8引脚JEDEC SOIC和8引脚TSSOP封装,可通过双线串行接口访问。此外,整个系列还提供2.7V (2.7V至5.5V)版本。

2023-08-27 20:11:56 72

原创 SMBus通讯协议

系统管理总线(SMBus)是一个双线接口,通过它,各种系统组件芯片和设备可以相互通信,也可以与系统的其余部分进行通信。它基于I2C总线的工作原理。SMBus为系统和电源管理相关任务提供控制总线。系统可以使用SMBus将消息传递到设备和设备之间,而不使用单独的控制线。可减少引脚数。本文档描述了SMBus设备使用的电气特性、网络控制约定和通信协议。这些可以被认为存在于七层OSI网络模型的前三层,即物理层、数据链路层和网络层。通常在OSI模型的更高层实现的功能超出了本文档的范围。

2023-08-22 17:23:51 1722

原创 IIC通讯协议

IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。

2023-08-22 15:45:09 41

原创 CAN通讯协议

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需要, 1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。

2023-08-20 13:38:28 284

LinuxMakefile

LinuxMakefile

2024-01-24

STM32F407 STOP模式

STM32F407 STOP模式

2023-07-08

STM32F407 PVD中断

STM32F407 PVD中断

2023-07-08

空空如也

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

TA关注的人

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