自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

原创 解决Keil5下载没有对应芯片Flash的问题

例如芯片是STM32F103ZET6,但是选项中并没有对应型号的芯片导致下载失败。

2023-09-23 18:11:14 1852 1

原创 MODBUSTCP和MODBUSRTU数据帧对比

ModBus是一种通信协议,用于在工业自动化领域中,通过串行通信或以太网连接来传输数据。ModBus数据帧是用于在ModBus协议中传输数据的格式。ModBus协议支持两种不同的数据帧格式:ModBus TCP和ModBus RTU。ModBus TCP是基于以太网的ModBus协议版本。在ModBus TCP中,数据帧格式如下:1)事务标识符(2字节):用于标识请求和响应之间的关联。2)协议标识符(2字节):用于指定ModBus协议版本。

2023-07-06 18:00:29 1160

原创 STM32网络通信Web Server中SSI和CGI的应用

文件说明makefsdata文件夹中包含有原始网页文件和将原始的网页文件转化成网页数据的工具makefsdata.exefs.c这两个文件用来管理生成的网页数组fs.hfsdata.c生成的网页数组fsdata.hhttpd.cHttp Server的源代码,本实验的核心文件,这两个文件完成了将开发板配置成Web Serve的工作httpd.hCGI和SSI源文件,我们通过网页和开发板交互主要是这个文件中的函数完成的。

2023-07-06 15:36:00 2629 3

原创 alsa_lib移植到IMX6ULL

ALSA是Advanced Linux Sound Architecture的缩写,目前已经成为了linux下的主流音频体系架构,提供了音频和MIDI的支持。

2023-04-22 18:12:38 560

原创 Linux_Shell命令解析

在linux终端中执行ls命令,ls命令是如何被解析并且执行的。当执行ls命令是显示当前目录下所有文件的名称执行ls -l命令是显示当前目录下所有文件的属性信息执行ls -l /mnt 命令是显示mnt目录下的所有文件信息。

2023-04-20 22:55:42 446 1

原创 ZYNQ—使用lwip的Socket API—TCP服务器代码示例

由于项目需要与上位机通过以太网进行稳定可靠的通信,需要使用Lwip协议栈的TCP部分。zynq的lwip协议栈的版本是1.2,将API模式配置为Socket API。

2023-04-17 15:33:37 1167

原创 STM32驱动人体测温GY_906模块

MLX90614是一款红外非接触温度计。由于集成了低噪声放大器、17位默数转化器和强大的数字信号处理单元,使得高精度和高分辨度的温度计得以实现。控制器可以通过SMBus总线协议与之通信,该通信协议与IIC通信协议近似。1)读取数据2)写入数据。

2023-04-09 14:05:17 425

原创 使用Buildroot制作根文件系统-alsa

学习了uboot、内核、busybox根文件系统,想着做一个音频播放器。最后发现好像busybox好像没有带aplay架构,这就很麻烦需要自己移植。为了简便我就找大佬沟通了一下,大佬推荐了Buildroot工具来制作根文件系统。

2023-03-28 21:48:10 1397 1

原创 新字符设备驱动示例

新的字符设备驱动已经不再使用register_chrdev和unregister_chrdev这两个函数来注册或者注销字符设备,而是使用Linux内核推荐的新字符驱动API函数。

2022-12-01 08:49:46 198

原创 设备树和设备树语法

设备树,将这个词分开就是“设备”和“树”,描述设备树的文件叫做 DTS(Device Tree Source),这个 DTS 文件采用树形结构描述板级设备,也就是开发板上的硬件设备信息,比如CPU 数量、内存基地址、IIC 接口上接了哪些设备、SPI 接口上接了哪些设备等等。设备树文件的扩展名为 .dts,一个 .dts(device tree source)就文件对应一个开发板。该文件放置在内核的"arch/arm/boot/dts/"目录下,。

2022-11-24 15:25:32 1310

原创 字符设备驱动

1)字符驱动设备其实就是对file_operations结构体成员变量的具体功能的实现,编写完驱动后还需要编写对应的测试APP。2)编写字符驱动要对芯片对应外设的寄存器很熟悉,了解如何驱动该外设的方法。

2022-11-18 14:12:28 665

原创 STM32内部Flash的使用

STM32内部自带不同大小的Flash,其主要功能是保存已经编译完成的代码。在实际的产品中为了节约成本如果有需要存储少量的数据会选择存放在内部Flash中。注:STM32对于Flash 大小的描述 单位都是字节(Byte)而非位(bit)。

2022-11-10 09:22:14 2081

原创 以太网基础理论—MAC+PHY

MAC (Medium Access Control),简称媒体访问控制。MAC层在OSI模型中是属于数据链路层,其主要任务是解决数据包发给谁。数据链路层包含MAC(介质访问控制)子层和LLC(逻辑链路控制)子层。PHY(physical),简称物理层,是一个对OSI模型物理层的简称。PHY包括两个接口三个子层:

2022-10-29 16:51:50 2080

原创 常见网络协议

在学习这类软件协议的过程中要转变思路,软件协议并不类似与我们常见的通信协议(IIC、SPI等)。虽然都是协议,但是却有所不同。软件协议大多是数据的整理和校验,然后在不同的层加入对应层的数据包,之后再由最下层的硬件发送。这其中必须经历AD\DA的转化,但是嵌入式中用的这类通信协议是由引脚通过电平的反转来实现协议。所以总的来说还是由区别,需要仔细对比。

2022-10-27 13:34:30 1385

原创 音频采集原理

从上面的介绍我们可以知道,声音的本质是震动,人类的耳蜗可以将这种震动转化为生物信号。所采的样本是用二进制来表示的,表示所用二进制的位数就可以决定采样的精度。例如只用一位二进制来表示那么所采的数据只能是0或1,用两位二进制数来表示那么所采的数据就是00、01、10、11,那么也就是说采样的数据所用二进制的位数越多其表示的数据就越精确。1s采样多少次就是音频的采样率,人耳能听到的频率是在20Hz-20000Hz之间,根据采样定理只需要用400000Hz的采样频率就可以从采样样本中重建原来的连续信号。

2022-09-29 17:07:26 3131

原创 I2S总线介绍以及通信注意事项

I2S(InterIC Sound Bus)总线,又称集成电路内置音频总线,是飞利浦公司针对数字音频设备之间的音频数据传输而制定的一种总线标准,采用沿独立的导线传输时钟与数据信号的设计,通过分离数据和时钟信号,避免了时差诱发的失真。I2S总线简单有效,可以有效提升输出数据的质量,在各种嵌入式音频系统中有广泛应用。但是在嵌入式音频系统设计中,并不是所有的MCU都支持I2S总线格式,再加上。

2022-09-28 16:00:10 4419

原创 ZYNQ自带I2S_IP核分析

简单的分析一下关于ZYNQ自带的一个I2S_IP核

2022-08-02 17:23:35 1944 1

原创 L1-005 考试座位号(C++ 15分)

L1-005 考试座位号 C++语言

2022-06-23 00:00:00 826

原创 L1-003 个位数统计(C++ 11分)

L1-003 个位数统计,使用C++

2022-06-22 10:36:18 334 1

原创 L1-002 打印沙漏(C++ 20分)

L1-002 打印沙漏使用语言C++,

2022-06-16 09:00:02 1025

原创 毕设-基于STM32刷卡、指纹的门禁系统的设计与实现(进阶版)

简介上面一篇文章已经将指纹模块的驱动原理讲解明白,本文就详细介绍以下整个系统是如何实现的。实现功能系统要求如下:1)使用RC522与指纹模块控制门的打开2)添加IC卡和指纹数据3)语音播报状态4)显示屏显示状态5)上位控制可以控制门的打开或关闭,可以添加IC卡。设计思路首先需要明确采集部分,本系统的采集主要是RC522读取IC卡号以及指纹模块读取指纹。整个系统的运行模式一共分为3种模式:1)匹配模式;RC522读取ID卡并判断卡号是否符合,指纹模块在其自带的Flash种搜索采集的指纹是

2022-04-13 16:08:38 3335

原创 ZYNQ_使用PL-PS的中断

简介本文主要讲解一些关于PL-PS的中断信号需要注意的事项,在vivado中许多的IP核都带有中断输出信号比如:1)AXI_UartLIte 这是一个小数据量的串口IP核,图中interrupt接口就是输出中断信号的接口。2)AXI_IIC这是一个IICIP核,图中iic2intc_irpt就是中断输出信号的接口。注意事项1)有如此多的中断信号但是在ZYNQ的板子上确只有一个中断接受的接口(图中红框),如何连接?这就需要使用另外一个IP核(concat),该IP核可以将并行信号转换为串行信

2022-03-04 14:01:49 3432 2

原创 毕设-基于STM32刷卡、指纹的门禁系统(进阶版-指纹模块的驱动)

简介基础版本做完了,感觉很平淡所以这次来了一个很好玩的模块——AS608指纹模块模块介绍该模块的通信方式是串口,驱动方式使用串口指令,模块会根据指令完成任务。基本原理是内置的图像识别技术,根据存储的指纹特征点和需要对比的指纹进行对比。引脚介绍从左到右依次是:Vi——3.3VTx——开发板RXRx——开发板TXGND——GNDWAK——3.3V/5VVi——3.3V驱动方式...

2021-12-23 14:03:03 12465 7

原创 在单片机中如何实现手动/自动控制外设

简介在一般的应用中都会有控制要求,比如当采集的土壤湿度过低时开启水泵灌溉,这样一个简单的外设控制就实现了。水泵就是外设,而控制它的就是土壤湿度。这种模式是我们经常使用的代码编写起来也很简单,然而如何实现手动开启或者关闭水泵?思路编写这种逻辑的基本思路就是需要一个标志位来表示手动和自动的模式,1表示手动模式,0表示自动模式。外设的控制也需要一个标志位1表示开启0表示关闭。详细代码方法一此方法就是一一发送一个数据控制一个外设//此版本是在STM32下编写的u8 HAND_IT; //手动与自动模

2021-12-14 09:39:47 2870 1

原创 ZYNQ-多中断控制

前言我发现很多的讲解都是单个中断的控制是如何实现的,但是基本没有多个中断的讲解。ZYNQ中断中断分类中断一共被分为三类1)PPI 私有中断2)SGI 软件中断3)SPI 共享中断PPI 私有中断每个CPU都有私有中断,PPI包括全局计时器、私人监督计时器、私人计时器和来自PL的FIQ/IRQ。SGI 软件中断软件生成的中断被路由到一个或者两个CPU中SPI 共享中断共享的外设中断(SPI)是由PS和PL中的各种I/O和内存控制器生成的,它们被路由到其中一个或两个cpu。来自P

2021-12-05 12:09:06 10145 14

原创 ZYNQ使用IIC读写EEPROM实验

简介EEPROM是指带电可擦可编程只读取存储器是一种掉电后数据不丢失的存储芯片。EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。本次实验使用ZYNQ的自带IIC库函数读写EEPROM,笔者也是最近由于某些原因才开始学习ZYNQ,并完成了基础部分的学习开始通信协议的库函数部分。ZYNQ硬件设计部分第一步创建Block Design,在其中添加ZYNQ7 Processing System第二步双击配置查看开发板原理图后,添加配置将IIC0,映射到EMIO上。设置引出的EMIO引脚

2021-11-13 21:02:32 2785 22

原创 ZYNQ PS部分简介

简介最近开始接触一些比较高端的芯片,例如:MCIMX6Y2CVM08AB、

2021-11-11 17:06:39 2025

原创 STM32中常用的数据传输格式讲解(C语言)

简介在嵌入式的学习中不同的设备之间通信会使用不同的通信协议,例如串口、IIC、SPI等。最常用的应该就是串口了,但是每次发送数据的时候就会发现会有错误或者无法解析发送的数据。这就需要我们自己创建或者使用现成的数据格式。按位(自定义数据格式)按位发送和按位解码是最原始的数据格式,例如需要STM32的板子发送二氧化碳数值、土壤湿度数值、烟雾值、空气温湿度的值,这时候该如何发送数据?如何确定本次发送数据的长度?如何解析发送的数据?发送数据时需要有一个数据头,可以是一串字母,也可以是一个符号,数据结尾也需要

2021-10-24 01:15:00 2487

原创 UCOSIII操作系统学习笔记——任务

RTOS系统RTOS全程为:Real Time OS,就是实时操作系统。实时操作系统分为硬实时和软实时。硬实时要求在规定时间内必须完成操作,硬件实时系统有不允许超时。RTOS操作系统:UCOS,FreeRTOS,RTX,RT-Thread,DJYOS等UCOS的内核是可剥夺型的,可剥夺内核顾名思义就是可以剥夺其他任务的CPU使用权,它总是运行就绪任务中的优先级最高的那个任务。UCOSIII中的任务主要有三部分组成:1)任务堆栈;2)任务控制块;3)任务函数。任务堆栈任务堆栈实际上就是一个数组,是

2021-10-22 14:49:03 1230

原创 毕设-基于STM32/C51刷卡的门禁系统(基础版)

简介厂房弄完了,开始学习关于刷卡的门禁系统。这东西说简单也简单,说难搞也有点难搞啊!器件选型一般的常用RFID模块就是RC522(淘宝店铺MFRC-522 RC522 RFID射频 IC卡感应模块 送S50复旦卡PN532 PN5180代码就在下面的百度云盘里面),可以识别IC卡和S50复旦卡。线路连接及代码(STM32版本)其实这东西的驱动,店家都给与了,就是看你能否读懂代码的含义。电路连接RC522模块连接:RST连接PA12MISO连接PA10MOSI连接PA8SCK连接PB1

2021-10-13 16:33:20 9206 9

原创 毕设-基于ZigBee的制药车间监管系统

任务书(1)遇火自动报警,当火焰传感器检测到周围环境有明火出现时,蜂鸣器会自动报警并且红色LED灯闪烁,提醒工作人员撤离,避免造成重大人员伤亡。(2)自动调节环境,制药厂内有害气体和烟雾非常多,如乙醇,有机胺,苯系气体等,当传感器检测到有害气体或者烟雾超过设定阈值时,窗户和换气扇会自动打开,进行通风,以防工作人员吸入有害气体,并且防止爆炸发生。(3)LCD和APP上显示当前环境状态,火焰传感器,气体传感器和烟雾传感器检测到的数据以及窗户和换气扇的开关状态,都会在客户端上显示,客户也可以根据环境状态或当

2021-10-12 21:37:05 1650

原创 毕设-基于ZigBee的制药车间监管系统(二)

简介接着第一个写!!!!!!!!QT与协调器的通信方法再没有云端的情况下,如何实现QT和协调器的通信。这就需要另外一个网络协议TCP/IP 协议,本次我们使用的主要是其中的一个C/S架构,就是主从模式,详细来说就是一个作为客户端发送数据另外一个作为服务器监听客户端发送的数据,理解不了的参考QT的基础学习笔记(三)。WiFi模块本次使用的还是一个关于AT指令的WiFi模块,具体指令可以借鉴手册或者百度。QT部分由于本人比较喜爱QT这个软件,所以现在基本的上位机和显示就都是QT。主函数代码St

2021-10-12 21:35:47 1831

原创 毕设-基于ZigBee的制药车间监管系统(一)

简介做完了大棚,快速而有快乐的开始做车间。还是分为两部分写,因为有些地方需要边调试边写。系统设计方案传感器采集数据,主控通过继电器控制外设,数据通过ZigBee模块上发给ZigBee协调器,WiFi模块发送数据到上位。三块Zigbee模块通信逻辑设计由于使用的ZigBee模块有三块,需要三块相互通信,所以通信的时候需要将时间错开防止数据出现错误。协调器程序设计及实现协调器负责接受终端数据、下发阈值到终端、整理终端数据发送给WiFi模块。主函数定时器三中断定时器3主要任务是发送数据到Z

2021-10-12 21:09:15 432

原创 毕设-基于LoRa的智能农业大棚

简介由于疏忽忘记介绍器件选型,补上器件和开发板的信息终端节点土壤湿度监测模块HW-080土壤湿度传感器与数据采集器配合,ADC采集或者高低电平。E-201-C PH复合电极模块电极是由PH玻璃电极和参比电极组合在一起的复合电极,它是PH计的测量传感器,用以测量水溶液中PH浓度(PH值),ADC采集或者高低电平。二氧化氮浓度值监测模块SGP30二氧化碳传感器,IIC通信协议。LoRa模块ATK-LoRa-01_V3.0(V3.0是版本号,型号是ATK-LoRa-01,下面均以ATK-

2021-10-11 20:13:37 3848

原创 毕设-基于LoRa的智能农业大棚(三)

简介接接上面写!!!!!!!!!!!!!!!阿里云配置部分阿里云的连接分为三部分1)网关的WiFi模块连接到阿里云;2)QT上位机连接到阿里云;3)阿里云的平台配置。其中第二和第三部分不讲解了不会的可以参考QT作为设备接入阿里云平台这也是我前面写的文章,那么这部分的重点放到WiFi如何连接到阿里云WiFi模块连接到阿里云关于WiFi的选型,我选择的是简单而又方便的HC-25。它内部集成AT指令的MQTT协议,小白专属。下位机连接阿里云通过HC-25WiFi模块自带的MQTT协议连接到阿里

2021-10-11 18:36:44 2230 2

原创 毕设-基于LoRa的智能农业大棚(二)

简介接着前面的写!!!!!!!!!终端节点程序设计和实现首先终端节点的任务就是采集传感器的数据并发送数据到LoRa模块、接受LoRa模块的数据并处理、控制外设。主函数中主要判断采集的数值是否符合要求,和是否为手动控制。串口中断和前面的逻辑一致定时器三的任务是定时采集传感器的数据定时器四的任务是定时判断关键字并发送数据给LoRa模块代码主函数//手动控制标志位水泵 if(Water_IT1==1){ WATER=0;//开 } else{//判断土壤湿度是否低

2021-10-11 18:02:46 1482

原创 毕设-基于LoRa的智能农业大棚(一)

任务目标实现功能:(1)能够实时检测显示土壤湿度,当需要浇水的时候自动打开灌溉系统,土壤湿度满足要求后,关闭灌溉系统;(2)检测显示二氧化碳浓度,过高时,通过继电器打开通风排气扇,同时将二氧化碳浓度数值传输到终端进行提示;(3)能够实时检测显示土壤酸碱度,超标时候能给出报警并提示;(4)远程异地和检测与控制:传感器所采集到的信息,通过LoRa模块发送给网关,网关以有线连接的方式通过WiFi模块发送给云端,APP可以随时查看大棚内的二氧化碳浓度、土壤湿度与酸碱度的情况;(5)系统平时可以处于自动模

2021-10-11 17:32:29 7201 1

原创 QT的基础学习笔记(三)

第一部分学习完了c++关于对象的基础知识,这次是使用QT开发平台来编写一下关于网络编程方面的代码。任务1)设备A通过TCP协议发送信息到QT,QT的界面显示接受的信息;2)QT能编辑信息并发送到设备A。思路1、需要了解关于C++的基础语法,以及QT创建一个工程的方法;2、了解如何使用QT的界面显示;3、在TCP协议中,两个设备通信的基础条件;4、了解QT的TCP函数库的使用方法。两个设备的通信条件通过搜索,我找到了最常用的一种结构C/S结构,这种模式常常被成为主从式架构,属于一种网络通讯

2021-10-05 14:08:17 166

原创 QT的基础学习笔记(二)

第一部分学习完了c++关于对象的基础知识,这次是使用QT开发平台来编写一下关于网络编程方面的代码。任务1)设备A通过TCP协议发送信息到QT,QT的界面显示接受的信息;2)QT能编辑信息并发送到设备A。思路1、需要了解关于C++的基础语法,以及QT创建一个工程的方法;2、了解如何使用QT的界面显示;3、在TCP协议中,两个设备通信的基础条件;4、了解QT的TCP函数库的使用方法。创建QT工程点击文件->新建文件或项目->choose->下一步到达Kits这个界面的时

2021-10-05 14:08:09 123

原创 QT的基础学习笔记(一)

类类用于指定对象的格式,它包含了数据表明的手法和用于处理数据的方法。类中的数据和方法称为类的成员。简单的理解就是‘类’是同一类对象的命名类中实例化对象的方法1)从栈中实例化对象例如:Dog dog;2)从堆中实例化对象(需要手动释放空间)例如:Dog *dog;内存这方面有点类似c语言中的管理方法,也有点不同,在c语言中要将数据存放在堆区中需要用malloc函数。...

2021-10-04 18:58:19 237

ATK-LORA-01(F1)开发板驱动.zip

按照接线方式,调用函数就可以2个LoRa模块之间传输数据。

2021-06-04

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

TA关注的人

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