跳转到主要内容

博客

教你一个抑制可调光LED EMI的简单方法

LED的亮度变化,我们是通过对LED的电流进行脉宽调制(PWM)控制;所产生的脉冲电流波形便是产生EMI的罪魁祸首。LED调光需要采用PWM控制,但它产生的EMI也必须予以抑制。

嗯,你的新设计很牛,它差不多能满足EMI要求,但又不完全如此。令你吃惊的是,电路产生的传导EMI刚好超出你必须满足的限制,而这个EMI当中至少有部分来自于可调光LED。

LED的亮度变化,我们是通过对LED的电流进行脉宽调制(PWM)控制;所产生的脉冲电流波形便是产生EMI的罪魁祸首。LED调光需要采用PWM控制,但它产生的EMI也必须予以抑制。

下面的原理图显示了一种抑制EMI的简单方法。

[理解]51单片机的中断优先级及中断嵌套

中断的优先级有两个:查询优先级和执行优先级。

外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断

或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART

或 PX0>PT0>PX1>PT1>PS>......

简单分析PCB孔无铜以及改善方法

前言

孔无铜属于pcb功能性问题,随着科技的发展PCB精度(纵横比)要求亦越来越来高,它不但给PCB制造者带来的麻烦(成本与品质的矛盾),而且给下游客户埋下了严重的品质隐患!下面就此做简单分析,希望能对相关同仁有所启示和帮助!

单片机小白学步(15) 单片机程序下载失败总结

前面介绍了点亮第一个LED的全过程,很多人可能很幸运的点亮了LED,然而也很可能不少人非常不幸没有把程序下载进去。初学者常会遇到程序无法下载的情况,很多人在尝试多次未果后比较受打击,因此放弃了学习,实在太可惜了。鉴于此,这里列举了单片机程序下载失败的各种出错原因、判断方法和解决方法,是前人所遇到的种种原因的总结。

STC单片机下载程序主要分为三部分:单片机最小系统、下载电路、计算机端。下载失败一般主要就从这三个方面来解决问题。

<strong>快速排错方法</strong>

如果你有或者能向别人借到一套可以正常下载程序的电脑、单片机下载线、开发板全套装备,依次换用别人的下载线,电脑,和单片机系统板进行下载。如果换别人电脑下载就成功了,说明问题在于你的电脑。通过这种控制变量的方法,就能快速判断出问题出在哪个环节。

PCB高浓度有机废液处理的四个难点

随着我国经济的高速发展,工业对环境的污染问题不减,资源化残水和无回收价值污水的达标排放的政府监督日趋严厉PCB生产污水资源化势在必行。

PCB制作产生的高浓度有机废液(非清洗水),国内迄今没有权威的污染物调查统计资料。本文给大家讲述高浓度有机废水处理的难点。主要有以下四个:

1、废水的来源广泛

线路板生产过程中经显影、黑/棕氧化、除胶渣、PTH镀通孔、镀铜、退膜等工序来完成。其中在显影及退膜、剥废板绿漆、酸性除油等工序中,将产生高浓度有机废水。

2、废水的水质成分处理难度较大

单片机 指令集 和 操作系统的关系

<strong>1、首先讨论各种单片机与操作系统的关系</strong>

arm系列contex的a,r,m的区别

从cortex开始,分为三个系列,a系列,r系列,m系列。

m系列与arm7相似,不能跑操作系统(只能跑ucos2),偏向于控制方面,说白了就是一个高级的单片机。

a系列主要应用在人机互动要求较高的场合,比如pda,手机,平板电脑等。a系列类似于cpu,与arm9和arm11相对应,都是可以跑草错系统的。linux等。

r系列,是实时控制。主要应用在对实时性要求高的场合。

arm7和m3,m4是同一类型。这三个里面,arm7是最早的arm产品。m3是cortex m系列的过渡品,其低端市场被cortex m0的高端替代, 其高端市场又被cortex m4的低端取代。现在m系列,是m4内核的。典型的芯片是st公司和飞思卡尔公司的。

三极管工作原理

三极管在我们数字电路和模拟电路中都有大量的应用,在我们开发板上也用了多个三极管。在我们板子上的 LED 小灯部分,就有这个三极管的应用了,下图的 LED 电路中的 Q16就是一个 PNP 型的三极管。
<center><img src="http://mcu.eetrend.com/files/2018-01/博客/100009971-34096-1.png&quot; alt="三极管工作原理"></center>

<strong>三极管的初步认识</strong>

总线的两种数据传递形式:PIO、DMA

总线上的数据的传递有两种形式。一种为程控输入/输出(PIO)另一种为直接存储器访问(DMA)。

<font size="3"><strong>1、PIO</strong></font>

使用PIO时,CPU是主模块,总线上数据的读取由CPU上运行的软件程序直接发起,传递的数据一定进过CPU(如下面的一、二所述)。

一、软件指令或者将已经存放在CPU数据寄存器中的数据发送到目标被控模块;

二、或者将目标被控模块里的一个数据读入,放到CPU的数据寄存器中。

例如:需要将数据从模块A---转移到----模块B,软件将这个任务分解为两个PIO操作:

第一步:从模块A读取数据,并存放到CPU的数据寄存器中;

单片机小白学步(14) 点亮第一个LED的程序分析

本篇我们将分析<a href="http://mcu.eetrend.com/blog/2018/100009803.html">上一篇</a>所写的程序代码。未来学习单片机的大部分精力,我们也将放在程序代码的编写上。但是不用担心,我会非常详细的介绍每个程序的编写思路和各种注意事项等。

之前我们写的程序如下:

#include
sbit LED = P1^0;

void main()
{
LED = 0;
while(1);
}

数据总线, 地址总线, 控制总线详解

<strong>地址总线</strong>

地址总线(Address Bus)是一种计算机总线,是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址。它是单向的,只能从CPU传向外部存储器或I/O端口,地址总线上使得地址的64线路处于开合状态下,在该状态下,对应地址里面的数据可以获取或者存入

<strong>控制总线</strong>

控制总线,英文名称:ControlBus,简称:CB。控制总线主要用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和输入输出设备接口电路的,如读/写信号,片选信号、中断响应信号等;也有是其它部件反馈给CPU的

<strong>数据总线</strong>

为什么单片机管脚设计成低电平才有效?

它是由常用的电路结构所决定的,低电平时电路往往有较高电平时更低的环路阻抗,而低阻抗则意味着抗干扰能力更强。

结合实际讲一个有用的例子来加深印象:

有的同学可能已经学习了这样的一条PCB布线规则-----在条件许可的情况下,高电平有效线要尽量缩短,低电平有效的线则尽量延长----这一条规则的存在基础就是基于低电平时环路阻抗比较低,抗干扰能力比较强才起来的。

如OC或OD电路要控制一个电平就是通过它这个开关的通断来实现的。

有在上拉电阻的情况下,开关接通,得低电平;开关切断,得高电平。这样,为了防止电路失控的情况下仍然是有效电平,那么当然是低电平有效才更“保险”了。结构上,象OC电路那样,由于集电极更难击穿,所以,也更不容易损坏。

STM8S的几种低功耗模式

STM8S105的低功耗模式总的来说有四种:分别是等待模式,停机模式,快速活跃停机模式和慢速活跃停机模式

<font color="#33b1c8">1、等待模式:</font>

可执行指令wif()进入等待模式,该模式下主CPU停止工作,但其外设不停,严格来说只能算是降低功耗而不能算低功耗,该模式可由AMU或外部中断唤醒

<font color="#33b1c8"> 2、停机模式:</font>

可执行指令half()进入停机模式,该模式下主cpu和外设全部停止,达到最低功耗,只能由外部中断进行唤醒。

关于IO模拟时序(SPI)的注意事项

<font color="#33b1c8">原则:</font>有硬件I2C、SPI时尽量用硬件操作,省去IO模拟繁琐的时序调试。但在内部资源不够时就要用IO模拟总线了。

<font color="#33b1c8">关于短延时:</font>

模拟时序时是否需要延时要看MCU与device的相对速度。比如I2C如果400K的速率和MCU动辄几十M的速率不再一个量级,肯定要通过延时调整时序;但对于SPI因为其速度很高,甚至有的比单片机的速度还高,这时就没必要延时了。

<font color="#33b1c8">关于IO模拟的收发函数是否要合并成一个:</font>

STM32中AHB总线、APB2总线、APB1总线这些是什么?

一直不明白有STM32中AHB总线、APB2总线、APB1总线这些是是什么??

所谓地址映射,就是将芯片上的存储器 甚至I/O等资源与地址建立一一对应的关系。如果某地址

对应着某寄存器,我们就可以运用C语言的指针来寻址并修改这个地址上的内容,从而实现修改该寄存器的内容。

正是因为头文件中有了对于各种寄存器和I/O端口的地址映射,我们才可以在51单片机

程序中方便地使用P2^0 =0xFF; TMOD =0xFF等赋值句子对寄存器进行配置,从而控制单片机。

其实地址总线就是就是用来存放地址的,Cortex-M3的地址映射也是类似的,Cortex-M3有32根地址线,所以它的寻址空间大小为2^32

bit=4GB。(这里什么32跟地址线不需要去纠结了,只要知道配置成了4G的地址就行)

几种flash存储芯片的用途和分类

1、IIC EEPROM------容量小,采用的是IIC通信协议;用于在掉电时,存系统配置参数,比如屏幕亮度等。常用芯片型号有 AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等;

2、SPI NorFlash------容量略大,采用的是SPI 通信协议;用于存放程序和数据。程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机读取,允许系统直接从Flash中读取代码执行;可以单字节或单字编程,但

不能单字节擦除,必须以Sector为单位或对整片执行擦除操作。常见到的S25FL128、MX25L1605、W25Q64等型号都是SPI NorFlash。

单片机小白学步(13) 点亮第一个LED

前面介绍了很多概念知识,做了很多准备工作,从这一节开始,我们正式开始单片机的学习。我们将使用单片机完成一项非常简单的工作:点亮一个发光二极管(即LED:Light-Emitting Diode)。

<strong>LED简介</strong>

关于单片机位数的思考(8位、16位、32位)

8位、16位、32位是指单片机的“字长”,也就是一次运算中参与运算的数据长度,这个位是指二进制位。以8位为例,8位二进制的表达范围是0000,0000~1111,1111即十进制的0~255,即每次参与运算的数据最大不能超过255。而16位机的字长是16位,其数据表达范围是0~65535,即每次参与运算的数据最大不能超过65535;32位单片机的字长是32位,其数据表达范围是0~4294967295,即每次参与运算的数据最大不能超过4294967295。

8位、16位、32位与单片机的性能密切相关,通常32位机的性能要高于16位机,而16位机的性能又要高于8位机。

为什么会这样呢?这要从2个方面来分析。

51单片机中关于点亮灯管的简单程序

(1)点亮第一盏灯:

&lt;span style="font-family:Microsoft YaHei;font-size:18px;"&gt;#include&lt;reg52.h&gt;
sbit D1=P1^0;
void main()
{
D1=0;
}
&lt;/span&gt;
若要点亮第二盏。改为sbit D2=P1^0;

(2)在reg52.h文件里加入:sbit D1=P1^0;

用于点亮第一盏灯,若要点亮第二盏灯。sbit D2=P1^1;以此类推

stm32之GPIO寄存器学习

<strong>GPIO即通用输入/输出 (General Purpose Input Output)</strong>

包括:

两个32位的配置寄存器 GPIOx->CRL,GPIOx->CRH

两个32位的数据寄存器 GPIOx->IDR,GPIOx->ODR

一个32位的 set/reset 寄存器 GPIOx->BSRR

一位16位的 reset 寄存器 GPIOx->BRR

一位32位的锁定寄存器 GPIOx->LCKR

端口的模式包括:

浮空输入(Input floating)—— 即没有上拉电阻和下拉电阻,电压呈不确定性,一般用来做ADC输入用,这样可以减少上下拉电阻对结果的影响