- 博客(36)
- 收藏
- 关注
原创 V4L2框架学习
是Linux内核中用于处理视频设备的标准框架,通常用于管理摄像头、视频采集设备等设备。应用程序通过V4L2提供的接口来控制摄像头的硬件寄存器1.用户态、内核态隔离应用不碰硬件,内核全权管理硬件,应用只发命令2.设备统一抽象所有设备都变成/dev/videoX 应用程序代码能够兼容所有摄像头,无需关注硬件3.内核缓冲区队列(零拷贝)vb2_queue让摄像头和应用程序直接操作同一块内存,实现最高效的零拷贝传输。
2026-04-21 18:42:25
81
原创 CMake的一些常用语法
CMake是开发中常用的自动编译构建工具,用于自动生成Makefile,常常结合自己写的shell脚本进行编译指定当前 CMake 运行所需的最低版本号project()定义工程名称定义变量打印信息,用于调试生成可执行文件(输出文件名 ,源文件)生成库文件 SHARED(动态库.so) STATIC(静态库.a)链接库,将生成app与lib1、lib2链接${LIBRGA}dl添加头文件路径,告诉编译器去哪里找#include头文件#添加头文件路径。
2026-04-20 20:55:18
354
原创 V4L2摄像头应用编程学习记录(基于imx6ul)
本文介绍了基于Linux V4L2框架的视频采集与显示实现方案。通过初始化FrameBuffer设备建立LCD显示接口,并采用V4L2接口进行摄像头设备初始化、格式设置(强制RGB565)和帧缓冲管理(MMAP方式)。系统实现了视频数据的循环采集与LCD显示,包括双缓冲优化以消除画面撕裂:通过设置虚拟屏幕高度为物理高度的两倍,利用FBIOPAN_DISPLAY指令在垂直同步期间切换显示区域。代码详细展示了设备初始化、格式枚举、缓冲管理及数据流转的核心流程,为嵌入式视频采集系统开发提供了完整参考。
2026-03-05 12:09:31
284
原创 Linux qt学习记录
本文介绍了基于Qt框架开发的串口助手程序在imx6ul开发板上的实现过程。程序使用QSerialPort模块实现串口通信功能,包含串口参数设置(波特率、数据位、校验位、停止位)、数据收发等核心功能。通过手动创建UI控件并采用网格布局,实现了自适应屏幕尺寸的界面设计。程序先在Ubuntu上测试编译通过后,再使用交叉编译器编译移植到开发板运行。测试结果表明该串口助手能够正常运行,实现基本的串口通信功能。开发过程参考了正点原子教程,为嵌入式Linux平台上的Qt应用开发提供了实用示例。
2026-03-01 17:37:10
247
原创 软件按键消抖的几种方式(HAL库教程)
1.中断处理时间越短越好,不然严重浪费CPU资源2.stm32 hal库 HAL_Delay用的 滴答定时器 延时的,并默认是 优先级最低的,如果外部中断 优先级高于或等于 滴答定时器优先级,会造成中断里面的HAL_Delay无限延时,造成锁死退不出去!3.保险起见,还是别用HAL_Delay了。
2025-11-14 22:26:19
550
原创 基础知识复习(自用)
在STM32中,软件IIC是一种通过程序控制GPIO口模拟实现IIC通信的方法。在信息传输通道中,携带数据信息的信号单元叫码元(因为串口是1bit进行传输的,所以其码元就是代表一个二进制数),每秒钟通过信号传输的码元数称为码元的传输速率,简称波特率,常用符号“Baud”表示,其单位为“波特每秒(Bps)”。(CPHA,Clock Phase)来定义,其中CPOL参数规定了空闲状态(CS_N为高电平,设备未被选中)时SCK时钟信号的电平状态,CPHA规定了数据采样是在SCK时钟的奇数边沿还是偶数边沿。
2025-10-18 16:50:33
459
原创 Ti mspm0学习记录+代码备份
手机接收的格式为:包头0xA5 + 数据 + 校验 + 包尾0x5A。串口发送数据给蓝牙模块,蓝牙模块再发送数据给手机接收。此处是 一个整型和六个浮点数的数据包。与蓝牙模块HC05通信。
2025-05-30 11:04:00
450
原创 vivado fpga程序固化
一般下载到fpga上的程序在掉电之后就会丢失,如果想要掉电之后程序不丢失,就需要将比特流文件固化到板载的flash上。以下以我的7a100t开发板为例,介绍程序固化的流程。点击OK就可以下载了。
2025-05-20 19:33:36
2806
原创 波形数据有符号数和无符号数转换
在fpga做数字信号处理时,经常会遇到这个转换的问题,比如我的ADC采集的数据和DAC输出的数据采用的都是无符号数,但在使用一些ip核比如dds、fir、fft等的时候,需要使用的是有符号数,因此就需要这样的转换,并且保证波形和原来一致。1.无符号转有符号(举例)
2025-05-16 21:29:07
362
原创 LMS自适应滤波算法(MATLAB仿真+fpga实现)
将输入的信号改一下,改成s=sin(0.1*pi*t)+sin(0.3*pi*t);,参考信号改成s0=sin(0.1*pi*t);从图中可以看出:期望信号选择噪声信号或者正弦波信号均可得到较好结果。
2025-04-19 23:07:42
627
原创 fpga修改后的dds模块(可控增益)
dds一般都是从rom里读数据然后给DAC模块输出,有些时候题目会要求你的幅值有所倍数关系,因此我修改了原先的dds模块,注意不能直接÷,因为波形数据是无符号数,14位的数据,范围是0~16383,中心点8191对应的是实际DAC输出的0V,所以要稍微做一点点小处理。
2025-04-14 10:38:56
371
原创 fpga模块 占空比为50%的任意奇偶分频
还是比较好用的,现场写的话可能会浪费一点时间,比如奇数分频不是50%占空比、2分频不小心变成了4分频等等问题。在校赛的时候,需要用fpga分频时钟给CD4046并以此来获得倍频时钟,才发现需要准备这个模块。
2025-04-14 10:32:55
357
原创 用嘉立创制作单层腐蚀板步骤
找一个容器,将转印好的铜板放入,加入腐蚀剂和热水,并不断摇晃加快腐蚀。用砂纸将覆铜板擦拭干净,将热转印纸上的电路与覆铜板贴合,用。腐蚀完成后,再钻孔,然后就可以开始焊接了!1.使用tina仿真,画原理图。加热,将电路图转印到覆铜板上。切一块大小合适的铜板。
2024-11-06 16:22:15
994
原创 vivado ROM ip核的使用
与随机存储器(RAM)不同, ROM 存储的数据一旦写入后断电后不会丢失, RAM断电后数据直接丢失, 因此 ROM 也被称为非易失性存储器(Non-Volatile Memory)。FPGA中是有一定的存储资源,常见就是BRAM,本实验通过调用FPGA的IP核, IP 核相当于是已经写好的模块, 来实现 ROM 的功能,不过这个 ROM 本质是 RAM,断电后数据会丢失,只是具有 ROM 的功能。coe文件初始化ROM(coe文件可以由matlab生成,也可由软件生成)此处coe文件存的是正弦波形数据。
2024-11-06 15:39:21
1886
原创 vivado FIFO ip核的使用
FIFO(Frist Input Frist Output),即先入先出,也是一种存储器, 本质上还是RAM, 是一种先进先出的数据缓存器, 与普通存储器的相比, 没有外部读写地址线,这样使用起来非常简单。但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加 1 完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
2024-11-04 15:40:02
1545
原创 fpga模块(5)SPI从机通信
SPI通讯协议一共有四种通讯模式,模式0、模式1、模式2以及模式3,这4种模式分别由时钟极性(CPOL,Clock Polarity)和时钟相位(CPHA,Clock Phase)来定义,其中CPOL参数规定了空闲状态(CS_N为高电平,设备未被选中)时SCK时钟信号的电平状态,CPHA规定了数据采样是在SCK时钟的奇数边沿还是偶数边沿。数据更新在SCK时钟的偶数边沿,本模式中,偶数边沿为下降沿。模式1:CPOL= 0,CPHA=1。数据更新在SCK时钟的偶数边沿,本模式中,偶数边沿为上升沿。
2024-11-03 10:18:45
1723
原创 fpga模块(3)verilog实现14位dds信号发生器+DAC模块波形输出
基于fpga的14位dds信号发生器,并可以通过dac模块实现波形输出
2024-10-24 19:15:14
2080
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅