文章开始前,先来考考大家~下面的五副电路图,你能看懂几个?TDA2030电路图34063电路图555电路TDA2030电路图三极管分立元件电路以上这些电路图,如果能够看懂,那就已经入门电子设计了。如果还没看懂,接下来,开始学习这些基础模块电路。01.电源电路直流稳压电源是电子设备的能源电路,关系到整个电路设计的稳定性和可靠性,是电路设计中非常关键的一个环节。本节重点介绍三端固定式(正、负压)集成稳压器、三端可调式(正、负压)集成稳压器以及 DC-DC 电路等组成的典型电路设计,相关视频推荐:。电源处理框图整流电路的作用是将交流电压 U1变换...
直流电机(direct current machine)是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。直流电机的基本构成 直流电机由定子和转子两部分组成,其间有一定的气隙。 直流电机的定子由机座、主磁极、换向磁极、前后端盖和刷架等部件组成。其中主磁极是产生直流电机气隙磁场的主要部件,由永磁体或带有直流励磁绕组的叠片铁心构成...
不知道大家有没有疑惑,为什么软件能控制硬件?关于这个问题,给出直观解释的文章:本文分析STM32单片机到底是如何软硬件结合的,分析单片机程序如何编译,运行。软硬件结合初学者,通常有一个困惑,就是为什么软件能控制硬件?就像当年的51,为什么只要写P1=0X55,就可以在IO口输出高低电平?要理清这个问题,先要认识一个概念:地址空间。寻址空间什么是地址空间呢?所谓的地址空间,就是PC指针的寻址范围,因此也叫寻址空间。大家应该都知道,我们的电脑有32位系统和64位系统之分,为什么呢?因为32位系统,PC指针就是一个32位的二进制数,也就是...
如何确定时基假如要测量的波特率为9600, 则每一比特位的时间为:1/9600 ≈ 104 μs,一般示波器横向上每个大格子里5个小格子,要想看清一比特位一般需要一个小格子就够了,则时基为:104 μs * 5 = 520 μs, 也就是说时基要500 μs。注意:测量时选择的耦合方式为直流,边沿类型为下降沿,所测串口的电平为TTL 电平,该电平的串口在不传输数据时电平为高,靠拉低判断起始位。下图是测9600波特率,所发数据为0x55:所用示波器为 汉泰的 IDSO1070。从光标测量可以看出AB之间的时间为107.422 μs,和计算的104 μs 差不多。下图为波特率9600,所发数据为...
使用C语言对寄存器赋值时,常常需要用到C语言的位操作方法。把寄存器某位清零 假设a代表寄存器,且其中本来已有值。如果要把其中某一位清零且其它位不变,代码如下。//定义一个变量 a = 1001 1111 b (二进制数)unsigned char a = 0x9f;//对 bit2 清零a &= ~(1<<2);//括号中的 1 左移两位,(1<<2) 得二进制数:0000 0100 b//按位取反,~(1<<2) 得 1111 1011 b//假如 a 中原来的值为二进制数:a = 1001 1111 b//所得的数与 a 作”位与&”运算,a = (1001 1111 b)&(1111 1011 b),//经过运算后,a 的值 a=1001 1011 b// a 的 bit2 位被被...
???? 为了深入理解这个问题,大神耗时整整半年,“逐点”焊接,自制了一个CPU,杰作如下图所示。 据大神介绍,他主要采用了如下3个原材料:二极管、三极管和电阻。 ???? 下文介绍下大神自制CPU的过程。寄存器 通常来讲,CPU的结构可以大致分为运算逻辑部件、寄存器部件和控制部件等。而他最先“下手”的,就是CPU的寄存器部分。 大神设计了一个6位的移位寄存器,样子如下图,是不是跟想象中的不一样? 它的作用不仅能是用来存储,还能在时钟信号的控制下,将数据进行进行逐次右移或左移...
推挽电路的应用非常广泛,比如单片机的推挽模式输出,PWM控制器输出,桥式驱动电路等。推挽的英文单词:Push-Pull,顾名思义就是推-拉的意思。所以推挽电路又叫推拉式电路。图1:锯木头❤推挽电路有很多种,根据用法的不同有所差异,但其本质都是功率放大,增大输入信号的驱动能力,且具有两个特点:①很强的灌电流,即向负载注入大电流;②很强的拉电流,即从负载抽取大电流。相关文章:。图2❤如图3由NPN+PNP三极管组成的推挽电路,这就是我们常用的互补推挽电路。特点是输出阻抗很小,驱动能力很强。相关文章:。图3:互补推挽电路❤如图4,输入信...
高速信号的PCB走线 现在但凡打开SoC原厂的PCB Layout Guide,都会提及到高速信号的走线的拐角角度问题,都会说高速信号不要以直角走线,要以45度角走线,并且会说走圆弧会比45度拐角更好。 事实是不是这样?PCB走线角度该怎样设置,是走45度好还是走圆弧好?90度直角走线到底行不行? 大家开始纠结于PCB走线的拐角角度,也就是近十几二十年的事情。上世纪九十年代初,PC界的霸主Intel主导定制了PCI总线技术。 似乎从PCI接口开始,我们开始进入了一个“高速”系统设计的时代。 电子设计和芯片制造技术按照摩尔定律往...
新手在入门STM32的时候,一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。 对于刚入门的朋友可能没法直观了解这些不同开发发方式彼此之间的区别,本文试图以一种非常直白的方式,用自己的理解去将这些东西表述出来。配置寄存器 不少先学了51的朋友可能会知道,会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的,这种方法到了STM32就变得不太容易行得通了。 因为STM32的寄存器数量是51单片机的十数倍,如此多的寄存器根本无法全部记忆,开发时需要经常的翻查芯片的数据手册...
1 日益发展的技术对芯片电压测试的挑战 随着5G、车联网等技术的飞速发展,信号的传输速度越来越快,集成电路芯片的供电电压随之越来越小。早期芯片的供电通常是5V和3.3V,而现在高速IC的供电电压已经到了2.5V、1.8V或1.5V,有的芯片的核电压甚至到了1V。芯片的供电电压越小,电压波动的容忍度也变得越苛刻。对于这类供电电压较小的高速芯片的电压测试用电源噪声表示,测求要求从±5%到 ±-1.5%,乃至更低。 如上图1,日益发展的技术对芯片电压测试的挑战。 如果芯片的电源噪声没有达到规范要求,就会影响产品的性能,乃至整机可...
前言 准备参加24年的蓝桥杯嵌入式比赛的同学,寒假期间可以进行CT117E-M4的开发板的学习了。本公众号也会在寒假期间推送关于STM32G431的学习笔记,内容会很详细,为初学者或者从STM32F103过渡到STM32G431的同学提供一些参考,仅仅作为学习交流。本节给大家分享的内容是新建一个基于HAL库的最小软件系统模板工程:该模板工程实现了系统时钟配置、串口打印函数、基于SysTick定时器的微妙延时和毫秒延时函数。1.准备工作 首先搭建开发环境,主要是MDK的安装、STM32G431器件支持包和STM32Cube安装。并下载STM32Cube官方固件包。MDK软...
1设计简介本项目初步设计思路是打算以瑞萨单片机作为控制和数据处理的单元,使用温湿度,光照传感器去监测周围的环境参数,在屏幕上完成传感器数据和相关信息的显示。同时,使用WIFI无线模组与单片机之间进行数据交互,接入物联网云平台。尝试利用上位机实现对于温度、湿度、光照强度等相关环境参数监测。但是由于时间原因以及个人能力有限制,只完成了部分设计。本项目是基于启明6M5开发板完成了环境监测系统设计,传感器DHT11获取温度湿度的数据;传感器GY39获取光照强度数据;0.96寸OLED屏幕提供显示功能,能够显示传感器数据以及相关信息。编写...
MAX7219 是一种集成化的串行输入/输出 共阴极显示驱动器,它连接微处理器与 8 位 数字的 7 段数字 LED 显示,也可以连接条线 图显示器或者 64 个独立的 LED。其上包括 一 个片上的 B 型 BCD 编码器、多路扫描回路, 段字驱动器,而且还有一个 8*8 的静态 RAM 用来存储存每一个数据。只有一个外部寄存 器用来设置各个 LED 的段电流。一个方便的四线串行接口可以联接所 有通用的微处理器。每个数据可以寻址,在更新时 不需要改写所有的显示。MAX7219 同样 允许用户对每一个数据选择编码或者不编码。整个设备包含一个小于 150μA 的低功 耗关...
华芯微特MCU论坛:https://bbs.21ic.com/iclist-1130-1.html*阅读说明:以下应用案例仅简要介绍,排名不分先后。详细评测内容及相关源码、资料等,请复制原链接到浏览器打开查看。测评一初始体验https://bbs.21ic.com/icview-3292532-1-1.html解决液晶显示异常问题https://bbs.21ic.com/icview-3294288-1-1.html上篇帖子在测试显示时遇到两个问题,一个是使用厂家配的屏幕和我自己手上屏幕显示不一样的问题;另一个问题是我自己的屏幕通过FPC接到我自己的转接板上后显示不正常。新版JLINK工具添加华芯微特芯片https://bbs.21ic.com/icview-3294294-1...
1.输入捕获的原理 输入捕获就是检测输入通道输入方波信号的跳变沿,并将发生跳变时的计数器的值锁存到CCR。该模式可以用来测量脉冲宽度或者测量频率,即可以计算方波信号的频率和方波信号的占空比。 输入捕获功能检测方波信号周期的工作原理示意图如上图所示,设置捕获极性是上跳沿,定时器在ARR的控制下周期性地计数。 假设输入方波的脉冲宽度小于定时器的周期,输入捕获测定脉冲周期的工作原理如下: (1)当捕获到一个上跳沿时,捕获/比较标志位CCyIF会被置1,并产生相应的中断;同时计数器的值自动锁存到CC...
本文主要介绍通过CubeMX对STM32G070CBT6进行配置生成PWM波,内容包括PWM的基本概念、PWM的应用、PWM产生的方法、STM32 PWM波配置详解。1、PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,也就是一种周期一定而高低电平可调的方波信号,在一个信号周期中,高电平持续时间的为T1,低电平持续时间的为T2 。占空比:在一个信号周期中,高电平持续时间与信号周期的比值,即T1/Time。比如,Time=40,T1=20,则占空比=20/40=50%,即方波信号的占空比就是50%. 当输出脉冲的频率(周期的倒数)一定时,输出脉冲的占空比越大,其高...
LVGL是一个开源图形库,提供完善的GUI开发组件,具有易于使用的图形元素,绚丽的界面和占用内存低等特点。运行LVGL队MCU要求如下:16, 32 或 64 位微控制器或处理器; Clock: >=16MHz主频;Flash/ROM:至少> 64 kB (> 180 kB 可运行大部分显示库组件);编译器支持C99 ,keil5中在c/c++选项框中勾选C99。Mountain River编译器无需额外设置。 移植前准确,CH32V307核心板,1.8"的TFT显示屏。一个可以运行正常显示的CH32V307的工程(下载地址见文末)和LVGL库(下载地址见文末)。第一步:将LVGL整个文件夹拷贝到可以正常运行的LCD...
对于单片机的学习,不能只看课本,更重要的是单片机编程实践操作,所以学习单片机就必须要有一个单片机开发板,因为道理很简单:例如你要学习开车,你只刷题库看开车视频,而不去真的找个车练习开车,那估计刷一万年题视频也学不会开车。 而对于初学者,需要什么的开发板?那要看学习什么样单片机,我觉得作为初学者学习单片机,就选择51单片机。因为51单片机功能简单,资料也比较多,学习的话上手也更容易些。 作为大多数的单片机学习者,都是电子类相关专业。那为何我们不自己做一款开发板呢?这样既可以锻炼我们的P...
SD NAND 也称之为贴片式TF卡,贴片式SD卡,采用标准的SDIO接口,兼容SPI接口。下图所示为CS 新一代CS SD NAND NP1GCR01-AOW 大小为128M,对比128M的SD卡,可以看到贴片SD卡尺寸更小,不要SD卡座,占用更小的PCB面积;也可以节省PCB板层数,2层板即可使用。而且兼容可替代普通TF卡/SD卡,硬件电路软件程序通用。本案例基于RT-Thread物联网操作系统,更是不需要编写任何复杂的驱动代码就可以SD NAND读写操作。(文末提供,STM32驱动代码下载连接,需要可以自行下载)将SD NAND插入SD卡卡座。首先,新建一个RT-Thread项目工...
Image2Lcd是一个图片转换成C语言数组的小工具。在LCD屏幕GUI 设计过程中,为了GUI界面美观,有时候需要显示图标ICON,而程序代码是直接识别的到十六进制的数据,无法识别bmp,jpg,png等图片。这就需要一个图片转换小工具转换成一个数组,以便让代码可以直接使用。例如:下面的居民家庭用水量图片,其分辨率为32*32,显示到1.8“ 128x160LCD屏幕上,会转成一个[2048] 大小的数组,即const unsigned char gImage_TW[2048] = {图片数据};然后通过Paint_DrawImage(gImage_TW,2,75,32,32);函数就可以在屏幕上显示图标。这里再使用 Image2Lcd的...
CH32V307环境参数在线监测系统是以CH32V307VCT6为核心,由ESP8266模块、DHT11温湿度传感器模块、TFT LCD显示屏组成。系统实物图如下所示: 系统功能主要有RTC实时时钟、WIFI网络授时、DHT11温度测量、温湿度数据实时上传到onenet平台、屏幕定时刷新等功能。本例程主要用到CH32V307的GPIO、串口、AD转换、定时器、RTC功能。今天先来看一下GPIO端口操作。 CH32V307官方例程提供了GPIO应用的基本案例。官方案例代码主函数如下: 主程序首先是通过NVIC_PriorityGroupConfig配置优先级分组-抢占优先级和次优先级,然后根据时钟寄存...
一、限幅滤波法1、方法:根据经验判断两次采样允许的最大偏差值(设为A)每次检测到新值时判断:a. 如果本次值与上次值之差<=A,则本次值有效b. 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值2、优点:能有效克服因偶然因素引起的脉冲干扰3、缺点无法抑制那种周期性的干扰平滑度差/* A值根据实际调,Value有效值,new_Value当前采样值,程序返回有效的实际值 */#define A 10char Value;char filter(){ char new_Value; new_Value = get_ad(); // 获取采样值 if( abs(new_Value - Value) > A) return ...
本文主要介绍利用SWM181C8T6的脉宽捕获功能实现超声波测距。一、HC-SR04硬件概述 HC-SR04超声波距离传感器的核心是两个超声波传感器。一个用作发射器,将电信号转换为40 KHz超声波脉冲。接收器监听发射的脉冲。如果接收到它们,它将产生一个输出脉冲,其宽度可用于确定脉冲传播的距离。该传感器体积小,易于在任何机器人项目中使用,并提供2厘米至400厘米(约1英寸至13英尺)之间出色的非接触范围检测,精度为3mm。其参数如下所示: HC-SR04一共有四个引脚,VCC 是HC-SR04超声波距离传感器的电源,接正5V的电源。Tr...
本小车参考立创开源课堂项目基于51单片机的智能小车设计(附开源项目网址【单片机】基于51单片机的智能小车设计 - 嘉立创EDA开源硬件平台 (oshwhub.com))。主控制采用合宙的SWM181CBT6最小系统板子,9.9元包邮,板载的SWM181CBT6芯片5块钱就可以买到一颗,比STC89C52RC还便宜。SWM181CBT6硬件支持PWM、支持三路比较器输入,可以简化电路,还节省两篇LM393;关键是SWM181CBT6可以跑RT-THREAD NANO,可以先实现多任务操作(参考)。 小车第一版实现的功能有:1.左右两个车灯,模拟行车过车中的车灯状态;2.无源蜂鸣器,模拟汽车鸣笛...
F280049的两种下载调试方式:(1)RAM调试:编译器将程序下载到DSP的片内RAM中运行,RAM属于随机存储器,其读写速度快。因此,将程序下载到RAM中的执行速度比较快,方便程序的调试。但是,RAM属于易失性存储器,其存储的数据掉电消失。因此,RAM下载只适合程序的调试,不适合应用。(2)FLASH调试:编译器将程序下载到DSP的片内ROM中,ROM属于非易失性存储器,掉电后能保存程序。但是ROM的读写速度比较慢,不适合程序的调试。 通常一个项目的初期,比较适合将程序下载到RAM中进行调试,但是当最终程序全部调试完毕,需要做成产品销售时,就...
1.导入timer定时器中断例程点击菜单栏Project->Import CCS Projects,选择C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f28004x\examples文件下的timer例程。激活工程,打开timer_ex1_cputimers.c源程序。2.代码分析:2.1定时器操作步骤InitCpuTimers();和ConfigCpuTimer(&CpuTimer0, 100, 1000000);是TI公司提供的定时器的初始化代码(直接调用就可以了,不用修改代码)和定时器的配置函数,根据配置函数可以很方便地进行定时器定时时间的设置。配置函数的声明和源码可以在f28004x_cputimers.c文件找到。对于定时器的使用我们并不需要深入了解源...
******最新代码下载连接已经更新****,下载方法见底部利用51单片机实现超声波测距功能,利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,单片机检测到这个负跳变信号后,停止内部计时器计时,读取时间,计算距离,测量结果输出给LCD显示。 1.系统电路图超声波测距仪由单片机AT89C51、超声波电路和显示电路还有警报电路,按键控制等组成,...
SCIA初始化代码如下:void scia_fifo_init(int ibaud){ SciaRegs.SCICCR.all =0x0007; SciaRegs.SCICTL1.all =0x0003; SciaRegs.SCICTL2.bit.RXBKINTENA =1; if(ibaud==9600) { SciaRegs.SCIHBAUD.all = 0x0001; SciaRegs.SCILBAUD.all = 0x0044; } SciaRegs.SCICCR.bit.LOOPBKENA =0; // Enable loop back SciaRegs.SCIFFTX.all=0xC028; SciaRegs.SCIFFRX.all=0x0021; SciaRegs.SCIFFCT.all=0x00...