嵌入式开发应用案例
文章平均质量分 82
主要介绍常见的Flash ROM、SDRAM、Nandflash存储器、通用I/O、UART、定时器、LCD、I2C接口、A/D转换器、触摸屏及USB等)、μC/OSⅡ嵌入式操作系统、图形用户界面系统、文件系统和TCP/IP协议栈等嵌入式系统体系结构中的组成部件。
非子玉
InfoQ签约作者,阿里云专家博主,51CTO专家博主,华为云云享专家,嵌入式开发工程师,AE工程师。
座右铭:向着太阳,追逐梦想!
展开
-
一款基于AB32VG1的桌面智能坞
我基于这个开发板制作了一款桌面小工具,它是一个小巧、功能丰富、具有实用价值的桌面物联网“控制中枢”。可以实现: 精灵播放音乐时内部有一颗呼吸灯的效果;精灵可以通过OLED显示当前音乐名字、播放状态;精灵可以自动连接到MQTT服务器,实现网络交互;精灵可以通过红外遥控,实现音乐切换和暂停播放;精灵可以通过手机连接热点配网,配置联网信息,连接 WIFI;精灵连接有功放模块实现播放TF卡中的音乐;精灵连接有一个RGB彩灯,在一个精致小夜灯中实现彩虹灯的效果;原创 2024-11-08 21:48:14 · 246 阅读 · 0 评论 -
基于ZYNQ 平台测试SD NAND
本来打算拿这些样片去试试信息安全领域是否有所应用,但发现其似乎内置了复位或初始化,导致无法提取上电时的不确定值,故无法提取该SD NAND的物理不可克隆特性,所以这方面的测试无法进行;对于芯片正常读写的测试结果,还是很让人满意的,芯片的价格也很合理。并且LGA-8封装更适合无卡槽的嵌入式开发板设计,在一定的应用领域有着简化硬件设计、减小硬件面积的功能。最后贴上测试工程的链接,还迎复现实验:t=O83A。原创 2024-11-06 21:12:35 · 940 阅读 · 0 评论 -
C++中的AI编程助手添加
这两年 AI 发展迅猛,作为开发人员,我们总是追求更快、更高效的工作方式,AI 的出现可以说改变了很多人的编程方式。AI 对我们来说就是一个可靠的编程助手,给我们提供了实时的建议和解决方案,无论是快速修复错误、提升代码质量,或者查找关键文档和资源,AI 作为编程助手都能让你事半功倍。原创 2024-10-28 21:36:52 · 903 阅读 · 0 评论 -
ROS 编程入门的介绍
在 ROS 中,自定义消息类型和服务类型是很常见的需求。我们可以定义自己的消息和服务文件来满足特定的应用需求。首先,在my_robot功能包的msg目录下创建一个新的消息文件,例如然后,在FILES在类似地,我们可以在srv目录下创建一个新的服务文件,例如---然后,在FILES在本文介绍了如何创建 ROS 功能包,并使用主题、服务和 actionlib 实现机器人功能。通过这些基础知识,您可以构建复杂的机器人应用程序。原创 2024-10-25 23:03:24 · 720 阅读 · 0 评论 -
PID算法原理
今天为大家介绍一下经典控制算法之一的PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调试更加的方便。原创 2024-10-24 22:20:16 · 749 阅读 · 0 评论 -
关于LDO,读懂这一篇就够了
在电子设计中,我们经常需要用到不同的直流电压给不同器件供电,其中广泛常见的就是通过LDO稳压芯片来实现得到不同的直流电压输出,因为成本低、性能好,且使用起来也很简单,让低压差线性稳压器(下文简称LDO)用的也越来越多,几乎每款电子产品里都有其身影。说它好用,是因为在普通设计里,只需要加入合适的输入电压,和几个滤波电容即可得到想要的输出电压,非常简单,然而也正因为这看似简单的用法也要工程师熟悉LDO的主要参数结合自己的具体设计。LDO是靠自身的反馈环路控制主功率管,与负载分压,保持输出端电压的稳定。原创 2024-10-22 22:28:23 · 1395 阅读 · 0 评论 -
基于RT-Thread摄像头车牌图像采集系统
使用基于RT-thread操作系统的AB32VG1开发板作为主控,对ov7670摄像头进行图像采集,并使用串口发送图片RGB565格式到PC供opencv进行图像识别。原项目设想在开发板上进行采集的同时并通过简单的二值算法和插值算法实现车牌号识别,但实践中发现开发板的ram并不够保存采集回来的图像信息,与数据手册中介绍的192k有一定差距,实现用户能使用的ram是70k;同时原设想是带lcd屏幕的,但最后发觉io口数量不够,只能通过串口调试显示,但lcd屏幕的 spi代码仍保留在原码中,可供参考。原创 2024-10-21 22:03:27 · 246 阅读 · 0 评论 -
C++ 之 perf+火焰图分析与调试
perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找。利用perf剖析程序性能时,需要指定当前测试的性能时间。性能事件是指在处理器或操作系统中发生的,可能影响到程序性能的硬件事件或软件事件perf list主要是用于列出有哪些可用的event,可以供来分析。,其中可以列出 hard ware 的event, sw 是software的event, 其它类似。原创 2024-10-20 22:30:37 · 967 阅读 · 0 评论 -
RA8D1-Vision Board上OSPI-Flash实践
高阶安全性:卓越的加密算法、TrustZone、不可变存储、带DPA/SPA攻击保护的防篡改功能、安全调试、安全工厂编程和生命周期管理支持。(1)FSP配置:最开始自己按照官方例程配置,在尝试无法获取UID后,发现是工程模板默认配置的CS引脚是CS0,实际硬件连接为CS1。(4)编写程序:由于使用的flash芯片型号不同,主要修改了官方例程的配置和初始化内容。(5)下载调试:首先需要调试初始化在识别芯片UID后,此时可确定配置正常,修改芯片状态后再调试和测试FAL执行情况。原创 2024-10-19 21:18:42 · 298 阅读 · 0 评论 -
PID算法原理分析及优化
今天为大家介绍一下经典控制算法之一的PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。在大学期间,参加的智能汽车竞赛中就使用到了PID经典控制算法,对于智能小车的调试更加的方便。原创 2024-10-18 22:45:58 · 924 阅读 · 0 评论 -
Transformer图解以及相关的概念
RNN还有一个特定就是能考虑词的顺序(位置)关系,一个句子即使词完全是相同的但是语义可能完全不同,比如”北京到上海的机票”与”上海到北京的机票”,它们的语义就有很大的差别。我们上面的介绍的Self-Attention是不考虑词的顺序的,如果模型参数固定了,上面两个句子的北京都会被编码成相同的向量。为了解决这个问题,我们需要引入位置编码,也就是t时刻的输入,除了Embedding之外(这是与位置无关的),我们还引入一个向量,这个向量是与t有关的,我们把Embedding和位置编码向量加起来作为模型的输入。原创 2024-10-17 21:47:20 · 657 阅读 · 0 评论 -
语音识别与语音控制
当人依次在麦克风旁边说出“地平线你好”、“向左转”、“向右转”、“向前走”、“向后退”命令词,语音算法sdk经过智能处理后输出识别结果,log显示如下。机器硬件:OriginBot(导航版/视觉版)PC主机:Windows(>=10)/Ubuntu(>=20.04)扩展硬件:X3语音版。 识别到语音命令词“向前走”、“向左转”、“向右转”、“向后退”,并且输出DOA的角度信息,如。 此时出现如下报错是因为没有语音唤醒,说出“地平线你好”后,即可唤醒。字段表示DOA角度为110度。原创 2024-10-16 22:03:04 · 338 阅读 · 0 评论 -
动物目标检测——基于YOLOv5和树莓派4B平台
通过以上步骤,我们成功地在性能更强的计算机上训练了YOLOv5模型,并将训练好的模型部署到树莓派4B上,利用树莓派的摄像头实现了实时动物目标检测。这一过程展示了从环境配置、数据准备、模型训练到模型部署和实时推理的完整流程。通过本文的介绍,相信读者能够掌握在树莓派上部署YOLOv5进行动物目标检测的完整流程。这一技术在智能家居、安防监控、农业监测等领域具有广泛的应用前景。希望本文能够为你的项目开发提供帮助和参考。原创 2024-10-13 21:55:45 · 587 阅读 · 0 评论 -
“Flash闪存”基础 及 “SD NAND Flash”产品的测试介绍
FLASH闪存是属于内存器件的一种,“Flash”。闪存则是一种非易失性( Non-Volatile )内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。各类 DDR 、 SDRAM 或者 RDRAM 都属于挥发性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存。原创 2024-10-10 22:03:11 · 1053 阅读 · 0 评论 -
多线程;顺序容器;智能指针
shared_ptr的拷贝和赋值1、当新的 shared_ptr 对象与指针关联时,则在其构造函数中,将与此指针关联的引用计数增加1。deque是一个的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector 容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。要加锁的代码段,我们用{}括起来形成一个作用域,括号的开端创建lock_guard对象,把mutex对象作为参数传入lock_guard的构造函数即可。LIO-SAM中的std::lock_guard。原创 2024-10-09 21:18:47 · 948 阅读 · 0 评论 -
python实现匈牙利匹配
现在针对某个项目,利用python实现DBSCAN和Kmeans算法。项目简介:利用某传感器可以采集场景中的点云,每一帧都可以采集数量不等的点(x,y,z)。想要利用DBSCAN和Kmeans对点云进行无监督式的聚类,并利用匈牙利匹配对不同帧的点云簇进行匹配,从而实现跟踪效果。项目备注:这是别人拜托我来写的,我花了一点点时间。从我的角度,这种方法解决该项目,简直是胡扯。。。不过,项目和人不靠谱,并不影响代码的有效性,权当一种消遣。原创 2024-09-29 23:17:23 · 299 阅读 · 0 评论 -
多线程;顺序容器;智能指针
shared_ptr的拷贝和赋值1、当新的 shared_ptr 对象与指针关联时,则在其构造函数中,将与此指针关联的引用计数增加1。deque是一个的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector 容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。要加锁的代码段,我们用{}括起来形成一个作用域,括号的开端创建lock_guard对象,把mutex对象作为参数传入lock_guard的构造函数即可。LIO-SAM中的std::lock_guard。原创 2024-09-28 19:48:49 · 1081 阅读 · 0 评论 -
如何帮助我们改造升级原有架构——基于TDengine 平台
此次升级改造总体进行得比较顺利,但过程中也有一些波折,尤其是在数据建模的时候遇到了一些困难。办法总比困难多,通过一些方法和技巧,我们把TDengine改造成了schema-free的数据库,满足了物联网平台的要求,最终完成了升级改造。目前,已经支撑起了所有物联网设备上报的数据,同时支撑起了应用层的各种应用场景。我们使用到的功能还比较简单,主要是插入、连续查询以及降采样查询,对于物联网平台来说基本够用。原创 2024-09-25 23:23:28 · 1251 阅读 · 0 评论 -
基础的点云转换
对于点云处理而言,最简单也逃不过的就是点云转换了,我们就从点云转换开始,来一步步完成点云加速的学习。点云基础转换是3D点云处理中的一个重要步骤。它的主要目的是将点云从一个坐标系转换到另一个坐标系中,通常是为了方便后续处理或者显示。在实际应用中,点云基础转换通常包括平移、旋转、缩放等操作。这里对应了这种方法。原创 2024-09-24 21:50:44 · 725 阅读 · 0 评论 -
通过文字图像——代码图形注释自动生成
总结而言,代码图形注释自动生成技术是编程领域的一大突破。它通过将复杂的代码结构转化为易于理解的视觉图形,极大地简化了代码的理解和分析过程。这种技术对于提高开发效率、促进团队合作以及加强编程教育都有显著贡献。特别是在处理大型和复杂的代码项目时,图形注释能够帮助开发者迅速识别代码的关键部分,从而有效地提升问题定位和解决的速度。另外,对于初学者和非专业人士,这种直观的视觉表示形式也是理解编程概念的有效途径。原创 2024-09-22 20:33:06 · 974 阅读 · 0 评论 -
基于波特图的控制系统设计算法
波特图(Bode Plot)是一种用于描述线性控制系统频率响应的图形表示方法,通常用于分析和设计控制系统。它以控制系统的传递函数(或频域传递函数)为基础,将系统的幅频特性(振幅-频率响应)和相频特性(相位-频率响应)以图形的方式展示出来。可以根据波特图理解和评估系统的稳定性、性能和鲁棒性。波特图可以指导控制器的设计。通过调整控制器的参数,可以改变系统的频率响应,以满足特定的性能要求。波特图提供了反馈信息,帮助选择合适的控制器类型和参数,以达到期望的控制效果。原创 2024-09-21 23:57:41 · 455 阅读 · 0 评论 -
关于深度学习量化的操作
深度学习中做量化提升运行速度是最常用的方法,尤其是大模型这类非常吃GPU显存的方法。一般是高精度浮点数表示的网络权值以及激活值用低精度(例如8比特定点)来近似表示达到模型轻量化,加速深度学习模型推理,目前8比特推理已经比较成熟。比如int8量化,就是让原来32bit存储的数字映射到8bit存储。int8范围是[-128,127], uint8范围是[0,255]。原创 2024-09-18 21:27:05 · 668 阅读 · 0 评论 -
ROS 编程入门的介绍
在 ROS 中,自定义消息类型和服务类型是很常见的需求。我们可以定义自己的消息和服务文件来满足特定的应用需求。首先,在my_robot功能包的msg目录下创建一个新的消息文件,例如然后,在FILES在类似地,我们可以在srv目录下创建一个新的服务文件,例如---然后,在FILES在本文介绍了如何创建 ROS 功能包,并使用主题、服务和 actionlib 实现机器人功能。通过这些基础知识,您可以构建复杂的机器人应用程序。原创 2024-09-17 23:56:46 · 1053 阅读 · 0 评论 -
关于NAND NOR FLASH闪存产品概述
芯片类产品有SD NAND,eMMC, SPI NAND. 他们共同特点是内部都带了针对NAND Flash的管理机制。二来会增加CPU的负荷。随着国内对集成电路,特别是存储芯片的重视,前来咨询我们关于NOR Flash,NAND Flash,SD NAND, eMMC, Raw NAND的客户越来越多了。2,NAND Flash出厂时会有坏块(不用惊讶,原厂出厂的时候都会标识出来,而且比例是很低),在使用当中也可能产生坏块。NAND Flash产品本身存在一定的特性,要正常使用,必须配备对应的管理机制。原创 2024-09-12 22:12:46 · 1380 阅读 · 0 评论 -
开关电源DC-DC电源应用
DC-DC电源是直流电压转换的核心设备,包括LDO等类型。其中,利用开关方式实现的器件常被称为DC-DC转换器。这类电源具有功耗小、效率高、体积小、重量轻、可靠性高等优点,并能抗干扰、宽范围输出,因此在电子领域被广泛应用。原创 2024-09-04 22:00:59 · 1933 阅读 · 0 评论 -
RA8D1-Vision Board上OSPI-Flash实践
高阶安全性:卓越的加密算法、TrustZone、不可变存储、带DPA/SPA攻击保护的防篡改功能、安全调试、安全工厂编程和生命周期管理支持。(1)FSP配置:最开始自己按照官方例程配置,在尝试无法获取UID后,发现是工程模板默认配置的CS引脚是CS0,实际硬件连接为CS1。(4)编写程序:由于使用的flash芯片型号不同,主要修改了官方例程的配置和初始化内容。(5)下载调试:首先需要调试初始化在识别芯片UID后,此时可确定配置正常,修改芯片状态后再调试和测试FAL执行情况。原创 2024-08-01 22:38:50 · 396 阅读 · 0 评论 -
C语言文件编程-Linux环境下运行
如果在Linux系统下学习C语言,就会了解到两套文件编程接口函数:C语言标准的文件编程函数:fopenfreadfwritefcloseLinux下提供的文件编程函数:openreadwriteclose基于文件指针: fopen fclose fread fwrite 比较适合操作普通文件。基于文件描述符: open close read write 比较适合操作设备文件。原创 2024-07-28 12:41:15 · 341 阅读 · 0 评论 -
俄罗斯方块游戏编程
本文设计了一款基于AT89C51单片机的俄罗斯方块游戏机,整个系统分为硬件和软件两部分。硬件部分由电源模块、单片机最小系统、LCD12864显示模块和独立按键模块组成。软件部分则基于C语言进行开发,来完成游戏的逻辑设计与算法设计,系统框图如下所示。本设计实现的基本功能是,单片机在显示屏上端随机输出7种不同类型的方块图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字形),并使方块匀速下落填充到给定区域。设计获取,蒋宇智QQ(2327603104)。原创 2024-07-25 22:44:36 · 431 阅读 · 0 评论 -
使用getline()从文件中读取一行字符串
其中,第一种语法格式用于从文件输入流缓冲区中读取 bufSize-1 个字符到 buf,或遇到 \n 为止(哪个条件先满足就按哪个执行),该方法会自动在 buf 中读入数据的结尾添加 '\0'。我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstream 的类对象可以调用 getline() 成员方法。这意味着,一旦遇到字符 'c',getline() 方法就会停止读取。原创 2024-07-04 21:50:03 · 575 阅读 · 0 评论 -
C语言编程语法—结构
因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。fruit 和 =,或者 = 和 apples 之间的空格字符不是必需的,但是为了增强可读性,您可以根据需要适当增加一些空格。C 程序由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值,或者是一个符号。在 C 程序中,分号是语句结束符。只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。原创 2024-07-03 22:17:12 · 250 阅读 · 0 评论 -
C++的list-map链表与映射表
C++ list-map链表与映射表的简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。原创 2024-07-02 22:51:31 · 165 阅读 · 0 评论 -
LDO产品的基础知识解析
因此,较低的输出电流会降低压降电压,有助于提高 PSRR。低压降稳压器 (LDO) 的特性是通过将多余的功率转化为热量来实现稳压,因此,该集成电路非常适合低功耗或VIN 与 VOUT 之差较小的应用。将输出电容器的电容值从 1μF 提高到 10μF 时,尽管 VIN - VOUT的值仍然为 250mV,1MHz 时的 PSRR 将增大到 42dB。然而,如今的现代应用都包括各种各样的模拟和数字系统,而有些系统和工作条件将决定哪种LDO最适合相关电路,因此,现在我们需要关注这些决定性因素。原创 2024-07-01 23:23:39 · 693 阅读 · 0 评论 -
LDO产品的基础知识解析
因此,较低的输出电流会降低压降电压,有助于提高 PSRR。低压降稳压器 (LDO) 的特性是通过将多余的功率转化为热量来实现稳压,因此,该集成电路非常适合低功耗或VIN 与 VOUT 之差较小的应用。将输出电容器的电容值从 1μF 提高到 10μF 时,尽管 VIN - VOUT的值仍然为 250mV,1MHz 时的 PSRR 将增大到 42dB。然而,如今的现代应用都包括各种各样的模拟和数字系统,而有些系统和工作条件将决定哪种LDO最适合相关电路,因此,现在我们需要关注这些决定性因素。原创 2024-06-30 16:17:59 · 587 阅读 · 0 评论 -
DC-DC产品设计PCB注意事项
DC-DC的电路比LDO会复杂很多,噪声也更大,布局和layout要求更高,layout的好坏直接影响DC-DC的性能,所以了解DC-DC的layout至关重要。原创 2024-06-29 12:24:17 · 564 阅读 · 0 评论 -
LDO电源模块如何快速设计布局
LDO在电源设计中扮演着至关重要的角色,能够在输入输出间维持较小的压差,使得线性电压调整更为高效。当输出电压在正常工作状态下下降至额定输出电压的98%时,对应的输入与输出电压差即为Drop电压。值得注意的是,Drop电压会受到负载变化的影响。原创 2024-06-24 22:55:44 · 896 阅读 · 0 评论 -
在Ubuntu系统上定制文件系统
Forlinx Desktop(Ubuntu)系统基于Ubuntu官方为嵌入式设备制作的操作系统-Lubuntu,该操作系统具备apt-get、ldd等常用的命令,若需要安装软件则直接apt-get在线安装即可,不需进行交叉编译移植等繁琐操作。但是每次重新烧写镜像之后,之前安装的软件就得重新安装,比较繁琐,如果需要批量操作则每块开发板都需要去apt-get安装,这样会大幅增加工作量,很不便于批量化生产。至此,便可以安装所需软件了,在这里用apt-get安装自己所需软件,根据所需安装。原创 2024-06-22 23:09:42 · 73 阅读 · 0 评论 -
噪声-降噪引脚如何提高系统性能
从各条曲线可以看出,以微伏/平方根赫兹 (μV/√Hz) 表示的输出噪声集中在频谱的低端。在特定频率范围内进行积分有助于掩盖令人不快的噪声特性,因此除了积分值之外,检查噪声曲线也很重要。在此引脚 (CNR/SS) 上添加一个电容器可形成一个具有内部电阻的电阻电容 (RC) 滤波器,有助于分流由基准电压产生的不良噪声。由于基准电压是噪声的主要来源,因此增大电容有助于将低通滤波器的截止频率推至较低频率。除了选择具有低噪声品质的LDO之外,您还可以采用几种技术来确保您的LDO具有超低噪声特性。原创 2024-06-21 22:33:04 · 862 阅读 · 0 评论 -
LDO的原理及测试方法
这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。常见的基本结构利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS))。原创 2024-06-20 22:34:17 · 404 阅读 · 0 评论 -
线性稳压器LDO的基础知识
线性稳压器的工作原理是:采用一个压控电流源以强制在稳压器输出端上产生一个固定电压。控制电路连续监视(检测)输出电压,并调节电流源(根据负载的需求)以把输出电压保持在期望的数值。电流源的设计极限限定了稳压器在仍然保持电压调节作用的情况下所能供应的最大负载电流。输出电压采用一个反馈环路进行控制,其需要某种类型的补偿以确保环路稳定性。大多数线性稳压器都具有内置补偿功能电路,无需外部组件就能保持完全稳定。某些稳压器(比如低压降型)则确实需要在输出引脚和地之间连接一些外部电容以确保稳压器的稳定性。原创 2024-06-18 22:49:25 · 985 阅读 · 0 评论 -
基于AB32VG1的冬笋探测器设计
本设计采用微波反射法,设计一种冬笋探测器。本设计的探测装置由发射电路,接收电路,天线,信号检测和LCD显示5个部分组成。使用AB32VG1通过串行接口配置高频发生模块产生两路高频信号。一路作为参考,另一路送给发射天线之后经过土壤发射之后送给接受天线。参考信号和经过土壤层发射回来的信号送给相位检测模块。相位检测模块根据相位的差值输出不同的电压值。使用AB32VG1 模块采集相位模块送过来的模拟信号并计算分析采集结果并在LCD屏幕上显示结果。原创 2024-06-17 23:02:20 · 46 阅读 · 0 评论