安城安
用编程改变世界~人工智能,网络安全领域深耕者。用python制作工具增强编程学习互动性。电气工程软件工程双学历,电气工程硕士。
展开
-
拆解飞机的黑匣子,进一步研究其内部构造、PCB(印刷电路板)以及芯片等元件
此外,它还具备出色的耐力:可以承受5000磅的重压、持续高温1100℃一小时、持续高温260℃十小时以及3400G的加速度撞击,而不会丢失任何数据。从本质上讲,它类似于现在常见的FPGA,是一种高度定制的ASIC芯片。由于我家里只有一些普通的精密工具,没有适合这种尺寸的扳手,所以取下来时费了很大的劲,我的手都疼死了。果然,在电源板的另一面,我发现了更多的组件,基本上都与供电相关的电路有关。最后回到这张图,我们先不谈中间的两个TI芯片,它们很可能是用来处理模拟麦克风信号的,而且一颗芯片负责两个通道。原创 2024-04-18 20:50:52 · 19 阅读 · 0 评论 -
开关转换器中的噪声源对纹波测量的影响
我们可以通过移动探头来进行检查:如果在不同方向移动探头环时,附加方波的振幅发生变化,那么说明噪音是由于探头环的漂移场引起的。另一种检查方法是反转PCB上电感的方向:如果附加波形的极性发生反转,那么纹波波形中的电压跃变也来自于探头环的漂移场。然而,在某些情况下,即使回路的面积较小,仍然会发生杂散磁场的耦合,尤其是在高频转换器中,并且当测量点非常靠近电感时。针对这些情况,最好使用一小段扭曲的电线来连接,以使输出电容器端的回路面积变得非常小,并将探头连接到距离电感一定距离的地方,如图4所示。原创 2024-04-18 20:29:55 · 16 阅读 · 0 评论 -
如何看懂电路图,理解电流回路
当正确地连接充电电池后,电流从电池的正极流出,经过A、E、C、D点,最终流回电池的负极,形成一个完整的电流回路。这使得从次极充电绕组的感应电动势正极出来的电流经过E、D1、F、B、A、电池、D点、D4、I、J、K、L,最终回流到次极充电绕组的感应电动势负极。当电池接反时,从电池的正极流出的电流经过A、B、C、D、E流回电池的负极,这构成了一个电流回路。这样,从次极充电绕组的感应电动势正极出来的电流通过E、D1、F、G、Q1、R1、H、D3、D4的G极与K极,最终流回次极充电绕组的感应电动势负极。原创 2024-04-17 18:56:23 · 20 阅读 · 0 评论 -
DC-DC反馈电阻大小如何取值
当使用DC-DC(直流-直流)转换器的时候,大多数硬件工程师会遇到分压反馈电阻的取值问题。在实际应用中,通常会直接采用手册中推荐的分压电阻阻值。即使没有与输出电压完全匹配的分压电阻阻值,一般也会选择接近的电阻大小。然而,偶尔会有一些人思考:我想降低系统功耗,因此想让反馈(FB)的分压电阻增大若干倍,那么这样做是否存在风险呢?分压电阻主要影响4个方面:1、效率2、输出电压精度3、噪声敏感性4、稳定性。原创 2024-04-17 18:42:58 · 131 阅读 · 0 评论 -
PCB设计指南教程,设计一个在纸上和物理形式上都真实可靠的电路板
当我们开始进行新设计时,我们发现大部分时间都花在了电路设计和元件选择上。由于经验不足和考虑不够周全,在 PCB 布局布线阶段经常会遇到问题。如果没有为 PCB 布局布线阶段的设计留出足够的时间和精力,可能会导致在制造阶段出现问题或者在功能方面产生缺陷,因为设计从数字领域转化为物理现实。那么,要设计一个在纸上和物理形式上都真实可靠的电路板,关键是什么呢?让我们一起来探讨一下设计可制造、功能可靠的 PCB 的6个设计指南。原创 2024-04-16 19:00:35 · 157 阅读 · 2 评论 -
电路大神设计电路时需要考虑的难点因素
实际上,硬件工程师在设计过程中会面临许多问题和考虑因素,远远超出了这里列举的范围。正如古罗马不是一天建成的那样,硬件设计也需要长期积累和不断努力。原创 2024-04-14 12:36:38 · 18 阅读 · 0 评论 -
RS-232、RS-422及RS-485串行数据标准的选择及使用
许多RS-232至RS-485转换器采用了"端口供电转换器"的方式,这意味着它们通过RS-232 RTS线(或者有时是RTS和CTS(DTR)线的组合)为RS-485设备提供电源。然而,由于RS-232端口可提供的功率有限,当一个端口供电转换器与大约100个RS-485设备配合使用时,可能无法达到RS-485所需的启动电压。首先,RS-232是最常见和广泛使用的串行通信标准。需要注意的是,当使用端口供电转换器时,应评估RS-232端口的功率限制,并确保所需的RS-485设备数不超过其提供的供电能力。原创 2024-04-14 12:01:14 · 56 阅读 · 0 评论 -
SD卡,1-wire总线,DMA直接存储器访问,Ethernet以太网介绍
本文将介绍和探讨一些与嵌入式系统相关的关键技术,包括SD卡、1-wire总线、DMA直接存储器访问以及Ethernet以太网。这些技术在现代嵌入式系统中扮演着重要的角色,为设备之间的通信和数据存储提供了便利和效率。首先,我们将深入研究SD卡技术。SD卡是一种常见的可移动存储介质,广泛应用于各类电子设备中。我们将讨论SD卡的工作原理、读写操作以及如何在嵌入式系统中正确使用和管理SD卡。其次,我们将关注1-wire总线技术。原创 2024-04-13 15:37:34 · 15 阅读 · 0 评论 -
TTL,CAN,USB介绍
本内容将介绍一些常见的串行通信总线技术,包括TTL、CAN和USB通信串行总线。这些通信总线在不同领域具有广泛的应用,并且在现代电子设备中起着重要作用。第二章将详细介绍TTL(Transistor-Transistor Logic)。我们将了解TTL的基本原理、电平标准以及在嵌入式系统中的应用。TTL是一种低电平标准,适用于短距离通信,例如芯片之间的数据传输。第三章将探讨CAN(Controller Area Network)总线。我们将了解CAN总线的结构、工作原理以及在汽车通信系统中的应用。原创 2024-04-13 15:19:06 · 110 阅读 · 0 评论 -
RS232,RS422,RS485介绍
请你根据这个目录生成一段前言:一.前言 二.示意图 三.RS-232 四.RS-422 五.RS485在本文中,我们将介绍RS-232、RS-422和RS-485这三种串行通信协议。这些协议在计算机和外部设备之间的数据传输中起着重要的作用。我们将分别详细探讨它们的工作原理、特点和应用领域。在第二部分中,我们将提供示意图,以帮助读者更好地理解这些协议的连接方式和信号线定义。第三部分将深入介绍RS-232协议。原创 2024-04-12 20:15:50 · 125 阅读 · 0 评论 -
UART、I2C、SPI介绍
本文将介绍UART通用异步收发器、I2C总线以及SPI串行外设接口三个主题。这些主题涵盖了在嵌入式系统和通信领域中非常重要的概念和技术。通过深入了解这些内容,读者将能够更好地理解和应用UART通信、I2C总线传输以及SPI串行接口。无论是在单片机开发、嵌入式系统设计还是外设接口设计方面,这些知识都具有广泛的应用价值。本文将从基础概念入手,逐步引导读者了解每个主题的原理、工作方式和应用场景。对于希望深入了解和掌握这些通信和接口技术的读者来说,本文将提供一个全面且实用的指南。原创 2024-04-12 14:02:22 · 415 阅读 · 0 评论 -
Linux C语言开发(二)C语言数据类型
C语言是一种通用的、过程式的计算机程序设计语言。它具有结构化的控制语句和丰富的数据类型,被广泛用于系统/应用软件的开发。C语言诞生于美国的贝尔实验室,由Dennis M. Ritchie于1972年设计并实现。原创 2024-01-16 19:59:44 · 86 阅读 · 0 评论 -
Linux C语言开发(十)vim基本操作
Vim编辑器(Vi IMproved)是一款基于Vi的高度可定制的文本编辑器,被广泛认为是类Vi编辑器中最好的一个。Vim是自由软件,可以在多种操作系统上运行,包括Unix、Linux、Mac OS和Windows等。Vim的设计理念是命令的组合,用户可以通过学习各种各样的文本间移动、跳转命令和其他的普通模式编辑命令,并灵活组合使用,以实现比没有模式的编辑器更加高效的文本编辑。Vim针对程序员做了优化,提供了丰富的功能,如代码补全、编译及错误跳转等,方便编程。原创 2024-01-22 19:48:05 · 384 阅读 · 0 评论 -
Linux C语言开发(三)运算符和表达式
在C语言中,运算符是用于执行特定操作的符号。这些操作可以涉及一个或多个值(称为操作数),并产生一个新的值或效果。C语言提供了多种类型的运算符,用于执行算术、比较、逻辑和其他类型的操作。算术运算符:用于执行基本的数学运算。:加法:减法:乘法:除法:取模(余数)++:自增--:自减关系运算符:用于比较两个值,并返回一个布尔值(真或假)。==:等于!:不等于:大于:小于>=:大于或等于原创 2024-01-20 10:18:13 · 306 阅读 · 0 评论 -
Linux C语言开发(一) Linux的发展与起源.
在当今信息时代,计算机系统已成为我们生活和工作的核心组成部分。一个计算机系统由硬件和软件两部分组成,其中硬件是计算机的物理组件,如中央处理器、内存、硬盘等,而软件则是运行在计算机上的程序,它指挥硬件进行工作。然而,软件的发展历程并非一帆风顺。在早期,软件往往被视为专有的产品,受版权法的保护。这样的做法虽然在一定程度上推动了软件的进步,但也限制了软件的创新和传播。在这样的背景下,自由软件的理念逐渐兴起。这一理念主张软件应当是自由的,其源代码应当公开,使得用户可以自由地使用、修改和分发。原创 2024-01-15 18:50:24 · 439 阅读 · 0 评论 -
Linux C语言开发(四)函数
在C语言中,函数是一种重要的编程构造,它允许将代码块组织在一起,以执行特定任务。函数提供了一种机制,使得代码可以被重复使用、模块化,并增强程序的可读性和可维护性。函数可以接受输入(称为参数),并可能返回一个输出(称为返回值)。原创 2024-01-20 10:23:31 · 32 阅读 · 0 评论 -
Linux C语言开发(六)预处理命令
C语言的预处理命令是在程序编译之前由预处理器执行的指令。这些指令可以包含宏定义、文件包含和条件编译等操作,用于简化程序的开发、增强代码的可读性和可维护性,以及实现一些编译时的条件判断。使用#define可以定义一个宏(或称为符号),预处理器会在编译前将所有该宏的出现替换为指定的值或表达式。宏定义有两种形式:不带参数的宏和带参数的宏(宏函数)。不带参数的宏定义了一个代表特定值的符号,而带参数的宏则定义了一个可以像函数一样使用的宏,但在预处理阶段展开,没有函数调用的开销。原创 2024-01-20 10:37:36 · 44 阅读 · 0 评论 -
Linux C语言开发(八)内存管理的基本操作
C语言是一种低级语言,它允许程序员直接管理内存。在C语言中,内存管理主要涉及分配和释放内存。malloc()NULLcalloc()malloc()calloc()NULLrealloc()NULL:在C语言中,使用free()函数释放已分配的内存。将malloc()calloc()或realloc()返回的指针传递给free()函数,以释放该指针指向的内存。NULL。原创 2024-01-21 09:40:08 · 69 阅读 · 0 评论 -
Linux C语言开发(五)程序语句
在C语言中,程序语句是构成程序的基本单位,用于表达程序的行为和逻辑。C语言的语句以分号(;)结束,表示一个语句的结束。语句可以是简单的表达式求值,也可以是控制结构,用于决定程序的执行流程。原创 2024-01-20 10:31:03 · 166 阅读 · 0 评论 -
Linux C语言开发(七)内存分类
C语言以其高效性而闻名,一个代码若想高效,则必须对内存空间进行合理的利用和分配。根据内存分配方式不同可以分为动态内存和静态内存。原创 2024-01-20 17:18:14 · 50 阅读 · 0 评论 -
Linux C语言开发(九)链表
C语言的链表是一种常见且实用的数据结构,它用于存储和管理数据元素。数据域和指针域。数据域用于存储实际的数据元素,而指针域则用于指向链表中的下一个节点。链表的主要特点是其存储空间的不连续性和长度的动态增长。这与数组形成鲜明对比,数组是一种固定长度的数据结构,其元素存储在连续的内存空间中。链表的优势在于其插入和删除元素的效率较高,且不需要预先知道数据的大小。然而,链表的缺点是其查找某个位置元素的效率较低,且由于增加了指针域,空间开销相对较大。链表有多种类型,包括单向链表、双向链表和循环链表等。原创 2024-01-21 09:51:57 · 196 阅读 · 0 评论 -
嵌入式Linux C语言介绍
开发工具通常依赖于操作系统提供的各种功能和服务。许多开发工具都基于操作系统的API(应用程序接口)进行开发,这些API提供了文件处理、网络通信、图形界面等核心功能。没有操作系统的支持,这些开发工具就无法正常工作。而开发工具也反过来影响操作系统的设计和发展。为了满足开发工具的需求,操作系统需要提供更加高效、稳定和安全的运行环境。同时,随着开发工具的不断升级和发展,操作系统也需要不断更新和改进,以适应新的开发需求和技术趋势。此外,开发工具与操作系统之间的关系还体现在它们之间的协作和配合上。在软件开发过程中,原创 2024-01-01 16:12:27 · 1655 阅读 · 1 评论 -
嵌入式-C语言逻辑运算符
C语言逻辑运算符主要有三个:&&(与)、||(或)、!(非)。例如:1. &&(与):如果两个表达式都为真,结果才为真,否则结果为假。int a = 5;int b = 3;printf("a和b都大于0");输出:a和b都大于02. ||(或):如果两个表达式至少有一个为真,结果为真,否则结果为假。int c = 2;int d = 1;printf("c和d至少有一个大于0");输出:c和d至少有一个大于03.!原创 2023-09-18 20:21:17 · 151 阅读 · 0 评论 -
嵌入式-C语言关系运算符
C语言关系运算符是用来比较两个值之间的关系并返回一个布尔值(真或假)的运算符。以下是C语言中常用的关系运算符:1. 等于(==):检查两个值是否相等,如果相等则返回真(1),否则返回假(0)。例如10==5为false(0),2==2为true(1)2. 不等于(!=):检查两个值是否不相等,如果不相等则返回真(1),否则返回假(0)。例如5!=2为true(1),3!=3为false(0)3. 大于(>):检查左侧值是否大于右侧值,如果是则返回真(1),否则返回假(0)。原创 2023-09-18 20:06:36 · 228 阅读 · 0 评论 -
嵌入式-C语言算数运算符
C语言算术运算符用于执行基本的算术运算,包括加法、减法、乘法、除法和取余。1. 加法运算符(+):用于将两个值相加,例如:a + b。2. 减法运算符(-):用于将两个值相减,例如:a - b。3. 乘法运算符(*):用于将两个值相乘,例如:a * b。4. 除法运算符(/):用于将一个值除以另一个值,例如:a / b。在进行整数除法时,结果将舍弃小数部分。如果被除数或除数为浮点数,则结果将保留小数部分。5. 取余运算符(%):用于返回两个数相除的余数,例如:a % b。原创 2023-09-18 19:47:58 · 182 阅读 · 0 评论 -
嵌入式-C语言中的常量
在C语言中,常量是指不可改变的值,即固定不变的数据。常量可以是数值、字符或字符串等类型的值。常量可以直接在代码中使用,而无需在程序运行时进行修改。原创 2023-09-18 19:31:43 · 152 阅读 · 0 评论 -
嵌入式-原码、补码,反码的存储
原码是一种表示带符号整数的编码方式。在原码表示中,最高位表示符号位,0表示正数,1表示负数,其余位表示数值的绝对值。例如,8位原码表示范围为-127到127。这种编码方式简单直观,易于理解和实现,但在进行数值运算时可能出现溢出和无法实现减法等问题。补码是一种用于在计算机中表示有符号整数的方法。在补码表示中,最高位(最左边的位)用来表示符号位,0表示正数,1表示负数。对于正数,其补码就是其二进制表示本身。对于负数,其补码等于其绝对值的二进制表示取反后加1。原创 2023-09-16 22:30:38 · 417 阅读 · 0 评论 -
嵌入式-数据进制之间的转换
被传入到计算机的数据要转换成0,1的二进制数据才能被计算机识别。为了方便存储,我们将数据以进制的形式存储。进制也就是进位计数制,是人们规定的一种带进位的计数方法。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。例如十进制是逢十进一,二进制是逢二进一,十六进制是逢十六进一。十进制。十进制数是指0、1、2、3、4、5、6、7、8、9共十个数字,每逢十进一。二进制。二进制数是指0和1两个数码,每逢二进一。八进制。八进制数是指0、1、2、3、4、5、6、7共八个数字,每逢八进一。原创 2023-09-16 05:39:14 · 355 阅读 · 0 评论 -
嵌入式-vim编辑器 gcc编译器
Vim是一款常用的文本编辑器,旨在提供一个高度可定制的编辑环境,适用于各种编程和文本编辑任务。Vim编辑器具有如下特点:1.模式:Vim拥有多个模式,其中最基本的是命令模式和插入模式。命令模式用于执行编辑命令,如删除、复制、移动等。而插入模式则用于输入文本。2.键盘快捷键:Vim使用键盘快捷键来执行各种编辑操作。例如,"i"键用于进入插入模式,"dd"命令用于删除当前行,"yy"命令用于复制当前行等。这些快捷键使得编辑更高效。3.可定制性:Vim非常可定制,用户可以根据自己的需求定制各种功能和快捷键。原创 2023-09-10 18:51:25 · 314 阅读 · 0 评论 -
嵌入式-Linux基本操作 pwd cd ls touch clear mkdir rm cp mv
其中,目录是要进入的目录的路径。mv是"move"的缩写,它可以移动文件和目录至指定位置,也可以用来为文件或目录改名或将文件从一个目录移入另一个目录中。它定义了文件和目录的命名、访问权限、存储位置等属性,并提供了对文件的目录结构的访问和管理接口。[选项]是可选的,可以用于指定一些特殊的行为或设置,例如递归移动、不覆盖已存在的文件等。源文件指定要移动的文件或目录的路径,目标文件指定要将文件或目录移动到的目标位置。[选项]是可选的,可以用于指定一些特殊的行为或设置,例如递归复制、保留属性、覆盖已存在的文件等。原创 2023-09-10 15:08:56 · 147 阅读 · 0 评论 -
嵌入式-C语言中的break,continue语句,goto语句
C语言中的continue语句是一种控制流语句,用于跳过当前循环中剩下的代码,直接进入下一次循环的开始。当程序执行到continue语句时,它会立即跳过当前循环的剩余部分,然后继续执行下一次循环。这意味着continue语句之后的任何代码都将被忽略。continue语句通常与循环语句(如for循环和while循环)一起使用,可以用于实现一些特定的逻辑控制。在使用continue语句时需要注意以下几点:1. continue语句只能在循环体中使用,不能在switch语句或函数中使用。原创 2023-09-10 14:02:18 · 243 阅读 · 0 评论 -
嵌入式-C语言中的if语句
if判断语句是一种用于根据条件来进行条件分支的控制流语句。通过判断一个条件的真假来决定执行不同的代码块。原创 2023-09-10 13:45:07 · 323 阅读 · 0 评论 -
嵌入式开发-绪论
嵌入式是一种计算机系统或设备,它被嵌入到其他设备或系统中,用于执行特定的任务或功能。与通用计算机系统不同,嵌入式系统通常具有等特点。嵌入式系统可以作为独立的设备,也可以作为其他设备的一部分。嵌入式系统通常由硬件和软件组成,其中硬件包括处理器、存储器、输入输出接口等,软件则包括嵌入式操作系统、驱动程序和应用程序等。原创 2023-09-09 22:38:58 · 430 阅读 · 0 评论 -
如何用arduino uno主板播放自己想要的曲子。《我爱你中国》单片机版本。
利用arduino uno单片机实现对蜂鸣器振动频率的调节,基于PWM控制系统通过代码实现控制。原创 2023-07-30 12:15:46 · 1001 阅读 · 0 评论