- 博客(83)
- 收藏
- 关注

原创 【Openpilot】开源驾驶辅助系统(L2)
openpilot为越来越多的受支持的汽车品牌(支持250+类汽车)、车型和车型年份;目前除了领克(沃尔沃),斯巴鲁,奔驰特斯拉,理蔚鹏,比他好,其他的都差。官方版本支持执行自适应巡航控制(ACC)、自动车道保持(ALC)、前向碰撞警告(FCW)和车道偏离警告(LDW)功能,基于camera驾驶员监控(DM)疲劳检测提醒,自动辅助变道;
2024-07-04 21:19:39
12360
原创 【C语言 结构体联合体】字节对齐与字节大小计算
✨注意✨无论是结构体还是联合体,先进行字节对齐,然后进行所占字节大小的计算。结构体字节对齐**通常与最长的成员大小相关,但并非总是直接等于它**,还取决于成员的顺序和编译器的设置。联合体:大小= 最大成员的大小(加上必要的填充以满足对齐)。对齐单位= 最大成员的对齐要求。
2025-01-13 15:39:19
958
原创 【C语言 内存对齐】 结构体字节对齐之`#pragma pack(push) `、`#pragma pack(pop) `和`#pragma pack()`的使用
#pragma pack(push, n)、#pragma pack(pop) 和 #pragma pack(n) 的功能与用法这三个指令均用于控制结构体或数据的内存对齐方式,主要目的是优化内存占用或者满足硬件/协议要求。它们之间存在一定的联系,但功能略有区别。
2025-01-10 14:30:47
927
原创 【ADAS】高级驾驶辅助系统
ADAS(Advanced Driving Assistance System)高级辅助驾驶系统,是利用安装于车上的各式各样的传感器,在第一时间收集车内外的环境数据,进行静、动态物体的辨识、侦测与追踪等技术上的处理,从而提供信息辅助、预警、辅助控制及便利驾驶的主动安全技术。 官方的定义其实就很好理解,ADAS这个名词就相当于是个集合,汇集多种辅助驾驶功能。 大类可将ADAS分成两类: 第一种: 关于信息辅助的相关功能 第二种: 关于控制辅助的相关功能。
2024-12-31 23:17:03
1626
原创 【minicom】Linux串口调试工具 - minicom的安装及使用
minicom,tkterm都是linux下应用比较广泛的串口软件,这里简单介绍minicom使用。 电脑基本不配备串行接口,所以,usb转串口成为硬件调试时的必然选择。目前知道的,PL2303的驱动是有的,在dev下的名称是ttyUSB#。
2024-12-27 19:00:00
3520
3
原创 【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!
thefuck 是一个开源的命令行工具,用于自动纠正终端中的错误命令。它通过分析最近执行的命令和错误信息,提供一个或多个可能的正确命令,用户可以选择自动执行或手动确认。
2024-12-23 15:41:05
1664
原创 【WireShark】网络抓包使用教程 | ‘TCP 三次握手’ 案例分析
Wireshark是一款非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包。wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容。
2024-12-19 21:00:09
1419
原创 【图像信号处理】ISP从算法到硬件设计——从CCM到sensor结构
sensor是摄像头的核心,负责将通过Lens的光信号转换为电信号,再经过内部AD转换为数字信号。sensor是怎么把光转换成电的呢?因为用到了光电二极管。如下图所示:光照到光电二极管上面,光强就转换成了二极管的电流。通过并行的电容存储起来,就转换成了对应的电压。光照越强,照射时间越久,那么电容的电压就越大。某个时候我们把电容两端的电压通过AD转换成数字信号,就可以得到一个电信号的数字化的值了。这只是粗略的介绍了一下电到光的转换。可能不是十分准确。但是基本转换就是这样。
2024-12-03 08:15:00
1561
原创 【CAN报文数据解析】矩阵信号Intel与Motorola格式(C语言)代码
安装包及教程移步:【安装手册】CANdb++ EditorDBC文件如何看懂,怎么使用?做一个就知道了:【使用手册】CANdb++Editor:自制一个DBC文件雅特力AT32 CAN使用入门:【雅特力AT32 CAN】 MCU CAN入门使用指南(超详细)can数据收发实战:【CAN 数据收发实战】上位机ZCANPRO发送+USART打印DBC文件发送的报文信息——以雅特力AT32为例CAN报文解析:【DBC报文矩阵分析】读懂.DBC文件报文矩阵,信号矩阵数据解析思路(源码见链接)【数
2024-11-30 08:30:00
1202
原创 【QT Designer】DAY1_QT信号分类汇总
信号可以通过 Qt 的信号槽机制与槽函数相连,处理不同的用户操作、状态变化或定时事件等。在 Qt Designer 中设计 UI 界面时,可以将控件与自定义槽函数关联,从而轻松实现界面与后台逻辑的分离。在 Qt 中,信号和槽是实现对象之间通信的重要机制。不同的控件和对象具有不同的信号,涵盖从用户界面交互到数据模型更新等各个方面。
2024-11-29 09:15:00
366
原创 【QT Designer】QT实操中遇到的一些(C++)疑惑点汇总
使用new:对象是指针类型,成员访问使用->。直接实例化:对象是值类型(直接实例),成员访问使用。->和的选择取决于对象是指针还是实例化的具体对象。直接访问:如果基类成员是public或protected,可直接访问。作用域解析符:通过Base::成员名形式访问同名基类成员。this指针:使用this->Base::成员名可以更显式地标明访问基类成员。枚举(enum)在 C++ 中是一种用户自定义的数据类型,用于定义一组具名的整型常量。它可以使代码更易读、易维护,并能提供更强的类型安全性。
2024-11-21 23:34:05
809
原创 【CAN总线协议】CAN和CANFD的区别、CAN FD帧结构解析
CANFD:可以理解成CAN协议的升级版,只升级了协议,物理层未改变。传输速率不同、数据长度不同、帧格式不同、ID长度不同。CAN Controller area network,即控制器区域(局域)网络;CAN总线是国际上应用较广泛的现场总线之一;目前已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线。CAN-FD 英文为CAN with Flexible Data-Rate,翻译为 “可变速率的CAN”;
2024-11-07 08:45:00
2742
原创 【位域的定义与实际应用】位域操作打包CAN报文,实现精确控制每个字段(CAN信号)
位域(bit fields)是结构体中的一种特性,用于精确控制每个字段占用的位数,而不仅仅是字节,它将数据字段分割成多个不同长度的位,而不再局限于字节(8位)单位。位域主要用于节省存储空间,特别适合需要操作二进制数据的小型嵌入式系统或通信协议,比如CAN报文。
2024-11-04 19:05:16
1039
原创 【单总线协议】数字温湿度传感器DHT11-三种源码例程
/* 控制GPIO读取DHT11的数据 * 1. 主机发出至少18MS的低脉冲: start信号 * 2. start信号变为高, 20-40us之后, dht11会拉低总线维持80us 然后拉高80us: 回应信号 * 3. 之后就是数据, 逐位发送 * bit0 : 50us低脉冲, 26-28us高脉冲 * bit1 : 50us低脉冲, 70us高脉冲 * 4. 数据有40bit: 8bit湿度整数数据+8bit湿度小数数据
2024-10-31 08:15:00
479
原创 【两周学完C++】DAY5_面向对象:以代码为主讲解类与对象、析构函数、继承多态、接口与封装等
C++面向对象:以代码为主讲解类与对象、析构函数、继承多态、接口与封装等.C++ 通过创建类来支持封装和数据隐藏(public、protected、private数据封装一种把数据和操作数据的函数捆绑在一起的机制;数据抽象一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制(public、protected、private)。
2024-10-28 08:45:00
820
原创 【两周学完C++】DAY2_内存分配方式与堆内存管理(new、delete关键字)
C++ 程序在运行时,计算机内存被分为程序代码区、全局数据区、堆区、栈区四个部分。本文一是介绍 C++ 三种内存分配方式:静态存储分配、栈内存分配、堆内存分配,二是使用 new 关键字和 delete 关键字管理堆内存。
2024-10-25 08:45:00
680
原创 【两周学完C++】DAY1_基本数据类型:命名空间、输入输出、数据类型(struct)
重点阐述跟C语言区别之处:命名空间、输入输出、数据类型(struct)。C++ 语言的特点主要表现在两个方面: 全面兼容 C 语言 和 支持面向对象的方法。
2024-10-23 08:15:00
697
原创 【以雅特力AT32为例】CAN过滤器及其原理与邮箱配置
首先,发送者以广播的形式把报文发送给所有的接收者。 其后,节点在接收报文时,根据 ID 的值决定软件是否需要该报文; 如果需要,就存到接收 FIFO 里,用户可通过软件读取接收邮箱寄存器获取该报文; 如不需要,报文就被丢弃且无需软件的干预。
2024-10-20 09:15:00
1686
原创 【CAN 应用编程】SocketCan实战
由于 Linux 系统将 CAN 设备作为网络设备进行管理,因此在 CAN 总线应用开发方面,Linux 提供了SocketCAN 应用编程接口,使得 CAN 总线通信近似于和以太网的通信,应用程序开发接口更加通用,也更加灵活。 SocketCAN 中大部分的数据结构和函数在头文件 linux/can.h 中进行了定义,所以,在我们的应用程序中一定要包含头文件。
2024-10-17 22:41:13
1495
2
原创 【CAN 数据收发实战】上位机ZCANPRO发送+USART打印DBC文件发送的报文信息——以雅特力AT32为例
本文讲述CAN(收发实战附源码)实现的功能如下:1. ZCANPRO+USART 打印DBC文件发送的报文信息2. 通过Exint+Button按键中断控制CAN的发送
2024-10-14 08:15:00
1463
原创 【网络基础知识】网络通信概述与TCPIP、UDP协议
介绍网络基础知识,譬如网络通信概述、OSI 七层模型、IP 地址、TCP/IP 协议族、TCP 和 UDP 协议等等,旨在以引导入门、了解为主,其中并不会深入、详细地介绍这些内容;
2024-10-12 09:21:12
984
原创 【DBC报文矩阵分析】读懂.DBC文件报文矩阵,信号矩阵数据解析思路(源码见链接)
现在要把上图呈现的信号从.dbc文件中解析出来,供实现自动化仿真总线信号使用,比如使用python+支持can收发的硬件即可替代canoe实现信号仿真(性能上不够用,可满足功能测试所需)。下面的表格中对应的二进制值就是上面报文值对应的值(实际上转换一下就是信号矩阵)。 虽然能够看到id和对应的data 值, 但是我不知道里面的意思是什么?,但实际上它们代表的数据结构是一样的,只是表达方式不一样而已。
2024-10-07 16:34:33
1705
原创 【雅特力AT32-KEY-TMR】定时器实现延时消抖与长短按键判断(话不多说上源码)
【雅特力AT32-KEY-TMR】定时器实现延时消抖与长短按键判断,话不多说,上源码。
2024-09-30 18:57:15
266
2
原创 【串口收发不定长数据】串口发送+中断接收不定长数据—以AT32为例,完成数字,字符(串),数组发送函数封装
串口发送+中断接收不定长数据—以AT32为例,完成数字,字符(串),数组发送函数封装。使用中断方式这种在数据接收不频繁状态下使用,简单易实现。既然是使用中断,所以自然需要硬件的支持,比如AT32,stm32就可以这么做,关于USART具体的原理、配置及使用详见:[【雅特力AT32】串口入门实战:轮询、中断、SWAP(收发管脚交换)功能]
2024-09-28 10:15:00
1063
原创 【雅特力AT32】IIC使用指南_附读写EEPROM案例
AT32 的 I2C 总线接口用于**处理微控制器和串行 I2C 总线之间的通信**,支持主机和从机模式,支持唤醒深睡眠模式,最大通信速度为 **1Mbit/s**(**增强快速模式 fast mode plus**)。 本文主要就 I 2C 总线接口的基本功能进行讲解和案列解析。
2024-09-26 18:04:52
1715
原创 【雅特力AT32】I2C 配置工具Artery_I2C_Timing_Configuration的使用
【雅特力AT32】I2C 配置工具Artery_I2C_Timing_Configuration的使用功能:可以实现对**主机和从机的时钟**、**数字滤波**、**模拟滤波配置**。
2024-09-23 20:11:41
538
原创 【雅特力AT32】串口 Usart 入门实战:轮询、中断、收发管脚交换(SWAP)功能
本文将会把数据手册结合三个案例(串口轮询、中断、引脚交换)讲解,需要看源码可以直接看后面。但是代码一定要结合**中断、收发配置**部分来理解,这两部分不建议跳过!!!串口协议层不再接收,需要请移步:[【串口通信详解】USART/UART、RS232、RS485标准接口与协议特点解析](https://blog.youkuaiyun.com/Thmos_vader/article/details/141197908)
2024-09-19 08:45:00
1558
原创 【雅特力AT32】时钟源配置、延时阻塞函数、软件定时器 (时钟源代码分析)
无论是时钟配置还是定时器,都离不开一个核心的东西--**时钟源**,他们都有自己**默认的时钟源**,也可以**用户自定义**选择,个人建议结合代码编写需**结合时钟树和技术手册**,这样更容易快速上手。
2024-09-17 08:45:00
770
原创 【雅特力AT32】外部中断事件控制器EXINT(附源码解析)
EXINT 共计有25 条中断线 EXINT_LINE[28:0] (其中位 19、20、24、27 为保留位),每条中断线均支持通过边沿检测触发和s来产生中断或事件。EXINT 可以根据软件配置,独立的使能或禁止中断或事件,并采取不同的边沿检测方式(检测上升沿或检测下降沿或同时检测上升沿和下降沿)以及触发方式(边沿检测触发或软件触发或边沿检测和软件同时触发)响应触发源独立的产生中断或事件。 中断线0~15所映射的IO可以独立的配置 每个中断线都有独立的触发方式选择 每个中断都有独立的使能位。
2024-09-14 18:09:15
1735
转载 【STM32F103】:CAN总线通信——初始化/波特率
1. CAN总线通信初始化配置流程CAN总线GPIO和时钟配置CAN总线接收中断优先级配置CAN总线初始化配置2. CAN总线GPIO和时钟配置; CAN引脚配置
2024-09-13 18:20:53
1427
原创 【雅特力AT32 CAN】 MCU CAN入门使用指南(超详细)
主要介绍雅特力AT32 CAN 的主要设计结构和使用,介绍了 AT32 CAN 的正常通信流程,包括发送流程、接收流程、报文过滤、波特率及采样点设置等。其他 AT32 CAN 相关设计,例如错误管理、中断管理等见雅特力官网。文末附can收发初始化配置及收发源码。
2024-09-11 08:15:00
2315
原创 【雅特力AT32】 时钟配置及New_Clock_Configuration
介绍雅特力AT32时钟配置主要两种方法: 1、 以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配置。 2、 采用时钟工具来配置并生成相应的源码文件。
2024-09-09 12:40:48
1910
原创 【端口复用与重映射】以意法STM32和雅特力AT32为例
STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。其实说白了,简单易懂的说,就是某些普通的外设引脚也可以用来其它功能。比如说AT32串口1 的发送接收引脚是PA0,当我们把PA0不用作普通的GPIO口,而用做复用功能串口1的发送引脚的时候,叫端口复用。
2024-09-06 08:15:00
1247
原创 【雅特力AT32】搭建标准库模板工程(Keil 环境、使用 AT-Link、Debug 选择 CMSIS-DAP调试器)
【雅特力AT32】初步环境准备:建立模板工程、在 Keil 环境下使用 AT-Link、Debug 里选择 CMSIS-DAP调试器
2024-09-04 22:15:00
1356
1
原创 【Linux应用编程实战】Day6_V4L2 设备(免驱摄像头)实战
笔者使用的 **ALPHA/Mini I.MX6U 开发板**, **USB 免驱摄像头**,插入板子的USB接口即可(笔者用的--方便便宜)!配套支持多种不同的摄像头:包括正点原子的 ov5640(500W 像素)、ov2640(200W 像素)以及 ov7725(不带 FIFO、30W 像素)这三款摄像头,在开发板出厂系统上,可以使用这些摄像头(要自己写驱动玩啥的有能力可以买一个,支持开源祖师正点原子!!!但个人觉得驱动框架能看懂就行,出厂的基本上都是已经写好的,具备在原厂协助下更改的能力!
2024-08-27 08:30:00
1217
原创 【数据存储】大/小端存储与字节顺序转换函数详解
大端存储:将数据的低位字节放到高地址空间,高位字节放到低地址空间。地址由小向大增加,而数据从高位往低位放;小端存储:将数据的低位字节放到低地址处,高位字节放到高地址处。高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致;Linux网络通信(Scoket编程)四个函数介绍: 1. htonl())函数 2. htons()函数 3. ntohs()函数 4. ntohl()函数
2024-08-25 09:15:00
570
2
原创 【同步串行通信接口】通信总线协议IIC(Inter-Integrated Circuit)详解
IIC总线是Philips公司推出的一种串行,半双工通信总线,主要用于近距离,低速的芯片之间的通信。硬件结构简单,成本低,仅需2根双向的信号线数据线SDA和时钟线SCL1. `数据线SDA` :用于数据传输;2. `时钟线SCL` :用于通信双方的时钟同步;IIC是一种多主机总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被呼叫。当总线上有多个主机同时启用总线时,IIC具有冲突检测和仲裁机制来防止错误产生。每个连接到IIC总线上的器件都有一个。
2024-08-23 09:45:00
1075
zlgcanCAN卡二次开发,可引入QT做CAN上位机
2024-12-01
【雅特力AT32】I2C 配置工具Artery-I2C-Timing-Configuration的使用
2024-09-23
【雅特力AT32】 时钟配置及New-Clock-Configuration
2024-09-14
【雅特力AT32】 CAN入门指南手册 及 波特率配置工具
2024-09-09
【雅特力AT32】模板工程创建及注意要点
2024-09-04
【C语言指针】深入浅出:指针与取值、数组、函数; 详细剖析:指针函数、函数指针、指针数组、数组指针、双重指针、指针与动态内存分配
2024-08-12
开源辅助驾驶系统OpenPilot介绍
2024-08-09
【Linux入门学习笔记】Linux常用基本命令、Linux系统软件安装、4-Linux实用操作、3-用户和权限
2024-08-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人