跳转到主要内容

技术

PLC晶体管输出和继电器输出的区别

1、负载电压、电流类型不同

负载类型:晶体管只能带直流负载,而继电器带交、直流负载均可。

电流:晶体管电流0.2A-0.3A,继电器2A。

电压:晶体管可接直流24V(一般最大在直流30V左右,继电器可以接直流24V或交流220V。

2、负载能力不同

晶体管带负载的能力小于继电器带负载的能力,用晶体管时,有时候要加其他东西来带动大负载(如继电器,固态继电器等)。

3、晶体管过载能力小于继电器过载的能力

一般来说,存在冲击电流较大的情况时(例如灯泡、感性负载等),晶体管过载能力较小,需要降额更多。

4、晶体管响应速度快于继电器

STM32 BOOT模式配置以及作用

<strong>一、三种BOOT模式介绍</strong>

如何使用定时器做脉冲计数?

<strong>一、应用简介</strong>

在实际应用的一些产品上可能需要使用到对脉冲的个数进行计数,本文小编将给大家介绍如何使用TIM来做一个脉冲计数的功能。在MM32 TIM中正好有一个外部时钟模式1可以来帮助我们实现这个功能。

<strong>二、外部时钟源模式1描述</strong>

STM32通用定时器功能和用法

<strong>1. STM32的Timer简介</strong>

ARM单片机三种中断返回情况的分析与解决

<br>ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,本文就将对ARM异常中断的集中情况进行总结,并给出了一些解决方法。</br>

单片机选型有诀窍:根据数值选择低功耗MCU

根据数据手册列出的电流消耗规格来比较和选择低功耗单片机(MCU)是一项比较困难的任务。在大多数情况下,选择MCU的开发人员会先初步看看数据手册第一页,作为快速获得器件信息的参考点,其中包括外设、运行速度、封装信息、GPIO引脚数量和供电特性等。这种方法对于获得器件的整体性能很有效,但是在评估低功耗特性时却不实用。

为了对低功耗操作有全面了解,开发人员还要考虑电流消耗、状态保持、唤醒时间、唤醒源,以及低功耗模式下可运行的外设等。开发人员在相同操作模式下对比同类低功耗MCU,以获得客观的逐项比较结果。另外,易用的评估工具也非常重要,因为能评估整体系统功耗的额外功能和外设,使工程师的工作更加容易。

锁存器、触发器、寄存器和缓冲器的区别

<font size="3"><strong>一、锁存器</strong></font>

锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态

锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化。

锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样;一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用。锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的。

PCB的EMC设计中电路的模块划分及布局

PCB上模块的划分和关键器件的布局在PCB的EMC设计中有至关重要的作用。PCB上的各功能模块如频率生成器、电源模块、滤波器和晶振等PCB上的位置和方向对电磁场的发射和接收有巨大的影响。PCB上的器件可以根据 不同的标准进行划分,如按照功能、工作频率、信号类型等。

1.按照功能划分。

各电路按照实现功能的不同如时钟电路、放大电路、驱动电路、A/D D/A转换电路、I/O电路、开关电源电路和滤波电路等进行模块划分。在进行PCB设计时可以根据信号流对整个电路进行模块划分,从而保证整个电路布局的合理,达到整体布线路径断,各个模块互不交错的效果,减少各模块之间互相干扰的可能。

2.按照频率划分。

按照信号的工作频率和速度对电路模块进行划分,在布局是安装高频、中频和低频依次展开,布局互不交错。

3.按照信号类型划分。

PCB板层介绍

PCB板层介绍

TopLayer(顶层)画出来的线条是红色,就是一般双面板的上面一层,单面板就用不到这层。

BottomLayer(底层)画出来的线条是蓝色,就是单面板上面的线路这层。

MidLayer1(中间层1)这个是第一层中间层,好像有30层,一般设计人员用不到,你先不用管他,多面板时候用的。默认在99SE中不显示,也用不到。

Mechanical Layers(机械层)(紫红色)用于标记尺寸,板子说明,在PCB抄板加工的时候是忽略的,也就是板子做出来是看不出来的,简单点式注释的意思。

基于ARM的数字调压控制系统设计详解

随着电子信息技术和半导体技术的深入发展,嵌入式系统的应用日趋广泛,在控制领域之中更多的使用了高性能微处理器,以满足各方面越来越多的控制应用需求。基于ARM嵌入式平台的数字调压控制系统,克服了传统上以旋钮或滑变式变阻器对交流电压进行模拟控制的弊端。本系统以嵌入式技术为基础,在嵌入式平台上利用ARM微处理器实时控制数模信号的转换,以控制正弦波调压模块对交流电压的大小调节。本文中通过对本系统的实际测试,验证了数字调压控制系统的功能特性,并且定量测试得出了本系统可以实现对交流电压进行线性调节的结论。数字调压控制系统可作为对电压的智能调节装置应用于家庭、医疗及工业自动化等领域,并且具有调节精度高、调节线性度好,易于操作等特性。

CAN总线基础知识(一)

<strong>1.CAN总线是什么?</strong>

CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。

CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。

“显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)。

总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。

下图显示了一个典型的CAN拓扑连接图。

单片机嵌入式编程的五个注意事项

在单片机编程的过程中,如果一名设计者能够同时掌握多门编程语言,那么这名设计者肯定是一位非常优秀的人才。但是想要同时精通汇编、C语言、C++这三门语言实在是太难了,很多初学者在其中一门的学习中就已经到处碰壁,苦不堪言。本文特意为大家整理了拥有嵌入式编程领域多年工作经验的工程师意见,汇总成了一篇能够对嵌入式编程经验有着指导意义的注意事项,感兴趣的朋友快来看一看吧。

在单片机嵌入式编程中,最难的两部分是interrupt和MM(memory manage),之所以有人觉得并不困难,那是因为太多数情况下芯片制造商都已经直接写好,但是如果设计者本身就在为芯片制造商工作,那就必须自己会写配置文件。

SDRAM的一些基础知识

<font size="3" color="blue"><strong>基础一:</strong></font>

SDRAM (Synchronous Dynamic RandomAccess Memory),同步动态随机存储器。同步是指其时钟频率与CPU的前端总线的系统时间频率相同,并且他的内部命令的发送与数据的传输都是以这个时钟为基准的,动态是指存储阵列需要不断的刷新才能保证数据的不丢失。随机是指数据不是线性存储的,是可以自由指定地址进行数据读写。

位宽:是指内存一次数据传输的数据量就是位宽,以位为单位。

SDRAM的内部结构:

SDRAM相当于一个excel,一个工作溥中有几个工作表,每个工作表里有行列。

耦合与退耦,上拉与下拉

耦合与退耦

什么是耦合电容?什么是去耦电路?

耦合指信号由第一级向第二级传递的过程,一般不加注明时往往是指交流耦合。

退耦是指对电源采取进一步的滤波措施,去除两级间信号通过电源互相干扰的影响。耦合常数是指耦合电容值与第二级输入阻抗值乘积对应的时间常数。

退耦有三个目的:

1.将电源中的高频纹波去除,将多级放大器的高频信号通过电源相互串扰的通路切断。
2.大信号工作时,电路对电源需求加大,引起电源波动,通过退耦降低大信号时电源波动对输入级/高电压增益级的影响;
3.形成悬浮地或是悬浮电源,在复杂的系 统中完成各部分地线或是电源的协调匹 有源器件在开关时产生的高频开关噪声将沿着电源线传播。去耦电容的主要功能就是提供一个局部的直流电源给有源器件,以减少开关噪声在板上的传播和将噪声引导到地。

32位低功耗MCU的设计

作者: 新唐科技

<font size="3"><strong>1、前言</strong></font>

关于STM32空闲中断

在使用串口接受字符串时,可以使用空闲中断(IDLEIE置1,即可使能空闲中断),这样在接收完一个字符串,进入空闲状态时(IDLE置1)便会激发一个空闲中断。在中断处理函数,我们可以解析这个字符串。

需要注意的是,IDLE标志位需要软件清零,否则由于会不断进入中断,而使正常程序无法运行。当再次收到数据时(即RXNE再次置1),等到空闲便会重新进入中断。

在STM32F4中,IDLE标志位清零的过程是:先读SR,再读DR寄存器。

而在STM32L0中, idle标志清除的过程是:对ICR寄存器的IDLECF位写1

x86和arm架构原子操作的区别

x86和arm在原子操作上有些差别,下面一代码的形式来说明区别:

首先比较单核:

由于x86是CISC指令集,允许在一条指令里进行两次内存操作,所以对i++,i__这些操作在单核条件下是原子,当然必须得是显示使用addl r,%1这种,就可在一条指令里完成读,写操作。

而arm属于RISC指令集,在一次指令执行期间只能有一次内存操作,所以像i++,i--这些需要先读取内存值然后赋值的操作,在arm架构下没法一条指令完成,所以就不满足原子操作,这时怎样实现原子操作呢:

我们通过代码来看;

对于atomic_add

MCU上的无锁原子读操作

原子读操作是在MCU并发编程中常用的操作,简单举个例子来阐述问题:

我们使用RTOS或裸机状态编程时,必然需要一个全局时钟基准,通常是在一个定时器中断中累加实现,简化代码如下:

static unsigned long volatile __jiffies = 0; /* 全局时钟基准节拍累加器 */

ISR_TIMER() /* 定时中断服务函数 */
{
++__jiffies;
/* 其它代码...: */
}

对于其中的__jiffies变量,就是全局时间基准,程序中其它地方都会对其进行原子读操作来判断时间,典型的接口实现如下:

IAR在STM32的配置方法

一、在IAR EWARM中建立工程的步骤:

<strong>1. 建立工程项目文件</strong>

新建一个文件夹来存放整个工程项目,在该项目文件夹下建立几个子文件夹存放不同类别的文件:
i. 将官方模板中的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和空白main.c文件复制到该项目文件夹下;

ii. Obj-存放工程文件,将官方模板中的cortexm3_macro.s、lnkarm_flash.xcl、lnkarm_ram.xcl和stm32f10x_vector.c文件复制到该文件夹下。

iii. library-存放STM32 FWLib文件,将官方提供的固件库library复制到该文件夹下。

Nandflash操作详解

1.nandflash就是嵌入式系统的硬盘

2.分类
(1)MLC:存储单元格存储两位,慢,偏移,寿命短,容量大
(2)SLC:存储一位。快,寿命长,容量小,昂贵

3.访问

(1)独立编址,有专用的控制器,控制器里有相应的寄存器,先送地址,然后命令,最后数据
(2)地址组成:行地址(页编号),列地址(在页中的偏移),一个nand可以有很多块,每一块可以很多页,每一页的两个部分可以不同规格
(3)信号引脚:

4.初始化nand控制器,(搜索关键字operation)