跳转到主要内容

技术

如何利用 Cortex®-M0+ 单片机实现更快的数学计算

工业和家用电器市场中的各种应用要求使用数学运算来实现不同的算法和计算。基于 Cortex®-M0+的单片机包含加法、减法和乘法指令。Cortex-M0+架构没有用于除法运算的汇编指令,除法逻辑可以根据不同的编译器而变化。基于 Arm® Cortex-M0+的单片机(MCU)具有一个可配置选项,可通过该选项使用快速乘法器进行乘法运算。基于该可配置选项,乘法运算可以为单个周期指令到最多 32 个周期指令不等。

SAMC21(一款 Cortex-M0+ MCU)非常适合需要数学计算的应用。SAMC21 MCU 具有可进行乘法运算的快速单周期乘法器选项,还具有一个新的外设,称为除法和平方根加速器(Division and Square Root Accelerator,DIVAS),可用于执行快速除法和平方根运算。

重温电源PCB结构的主要进化路线

<strong>重温电源PCB结构</strong>

在聊PCB演化历程之前,首先我们来温习一下电源的PCB结构。

▍ EMI滤波

EMI滤波系统在电源中的作用是过滤掉市电中的杂质,使输入电流更加纯净不会干扰硬件工作。一般来说,一个价格正常的电源都会有一、二级EMI滤波。有些电源会把一级EMI滤波做在输入电源线脚上,而上图的电源则将其做在PCB板上。

▍ 整流桥

电流经过滤波后进入PFC,首先通过整流桥,整流桥将交流电转换成直流电。一般来说,整流桥在工作时都会有不少发热量,设计优秀的电源会将整流桥锁在散热片上,像爱国者电竞500把两块整流桥直接设计在PCB板上是不合理的。

▍ PFC

PCB直角走线的影响

布线(Layout)是PCB设计工程师最基本的工作技能之一。走线的好坏将直接影响到整个系统的性能,大多数高速的设计理论也要最终经过 Layout 得以实现并验证,由此可见,布线在高速 PCB 设计中是至关重要的。下面将针对实际布线中可能遇到的一些情况,分析其合理性,并给出一些比较优化的走线策略。

主要从直角走线,差分走线,蛇形线等三个方面来阐述。

<font size="3"><strong>1. 直角走线 </strong></font>

stm32中断初识与实践(下)

这一部分我们将使用按键作为触发源,在产生中断时,实现控制LED灯的亮灭状态切换。

在具体应用前,我们还需先认识认识EXTI。

<strong>EXTI</strong>

忽视这10个Tips,你的电路可能遇到麻烦

在使用铝电解电容器时,有许多需要注意的点。
因为铝电解电容器在承载以下负荷时,将造成其特性急剧恶化。
&nbsp; ○&nbsp;反向电压
&nbsp; ○&nbsp;电压超过额定值
&nbsp; ○&nbsp;纹波电流超过额定值
&nbsp; ○&nbsp;急速充放电

此时,电容器可能产生大量热,内部气压上升,导致压力阀开启,内部气体喷出,漏液等。在某些情况下,伴随电容器损坏会有可燃物的进发,有可能导致爆炸和起火。

<strong>一、使用环境、安装环境以及额定性能的确认</strong>

请确认使用环境以及安装环境符合电容器的商品目录与缴纳规格书。

单片机执行指令的过程

单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。

取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

下面我们将举个实例来说明指令的执行过程:

stm32中断初识与实践(上)

stm32中断的讲解我分为两部分,即两篇文章,上半部分做一个总结性的概览,有一个初步认识,下半部分会通过一个实例来讲解中断的应用。本文即为上半部分的总结性概览。
所谓“中断”,通俗地讲,就是CPU在遇到一个需要即时处理的情况时,暂时中止当前程序的执行,转而处理新情况。

在stm32参考手册中的中断和异常向量表里可查阅到,其内核的异常响应系统里有10个系统异常(含Reset和HardFault),60个外部中断。具体的定义可在库文件stm32f10x.h头文件的IRQn_Type枚举里查到。如图5-1。

基于51单片机的无线测温系统

本51项目基于STC89C52MCU,温度传感器为DS18B20,显示模块用的是LCD1602,无线模块用的是Nodemcu。

项目用到的编程语言:C,C++,Lua。

实现思路是这样,DS18B20测温,然后数据串行传送给51单片机,然后51通过串口将数据传送给Nodemcu,Nodemcu通过其WIFI模块将数据发送给上位机,上位机上的程序是用Qt编写的GUI。(这里无线传输采用的是无连接的UDP协议)

<strong>1. DS18B20温度测量模块</strong>

DS18B20是单总线器件,所以时序要求非常严格,程序编写时注意时序,否则读不出温度。DS18B20有寄生供电和单独供电,这里采用单独供电方式。它的驱动程序如下:

单片机程序优化经验

由于单片机的性能同电脑的性能是天渊之别的,无论从空间资源上、内存资源、工作频率,都是无法与之比较的。PC 机编程基本上不用考虑空间的占用、内存的占用的问题,最终目的就是实现功能就可以了。对于单片机来说就截然不同了,一般的单片机的Flash 和Ram 的资源是以KB 来衡量的,可想而知,单片机的资源是少得可怜,为此我们必须想法设法榨尽其所有资源,将它的性能发挥到最佳,程序设计时必须遵循以下几点进行优化:

1. 使用尽量小的数据类型

CAN总线工程师需要关注的几个问题

导读:CAN总线的设计经常遇到错误定位等问题,但是CAN总线测试工程师主要关注的问题不过是这几个!解决这几个问题,CAN通讯问题80%得以解决。

<font color="#33b1c8"><strong>一、定位干扰原因</strong></font>

单片机C程序优化

对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一。一般是优化了代码的尺寸,就会带来执行时间的增加;如果优化了程序的执行速度,通常会带来代码增加的副作用。很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。

<strong>一、程序结构的优化</strong>

1、程序的书写结构

虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程序,有利于以后的维护。在书写程序时,特别是对于While、for、do…while、if…else、switch…case 等语句或这些语句嵌套组合时,应采用“缩格”的书写形式。

2、标识符

嵌入式开发比单片机开发难?

单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本人对这两个概念的理解和感悟。

首先明确概念,什么是单片机,单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

电源模块外围电容如何选型?

随着科技时代的发展,模块电源越来越受市场青睐,在使用模块电源的时候,应该如何提高模块电源的稳定性和可靠性呢?下面通过几个方向,介绍如何选取外接输入、输出电容,来提高模块电源的使用寿命和整个供电系统的稳定性、可靠性。

在模块电源的实际应用中,外接输入、输出电容的选取往往会从几个方面入手:
&nbsp; • &nbsp;电容额定耐压值。
&nbsp; • &nbsp;电容的容值。
&nbsp; • &nbsp;电容的使用寿命。

下面重点介绍1~2点是如何去选取输入、输出电容的。

<strong>一、从电容的额定耐压值去选取 </strong>

51单片机总线时序介绍

<strong>一、总线概述</strong>

计算机系统是以微处理器为核心的,各器件要与微处理器相连,且必须协调工作,所以在微处理机中引入了总线的概念,各器件共同享用总线,任何时候只能有一个器件发送数据(可以有多个器件同时接收数据) 。

计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。

<strong>二、单片机的三总线结构</strong>

51系列单片机具有完善的总线接口时序,可以扩展控制对象,其直接寻址能力达到64k( 2的16次方) 。在总线模式下,不同的对象共享总线,独立编址、分时复用总线,CPU 通过地址选择访问的对象,完成与各对象之间的信息传递。

如何降低面积和功耗?如何优化电路时序?

<strong>1、如何降低功耗?</strong>

(1) 优化方向:

组合逻辑+时序逻辑+存储

(2) 组合逻辑:

&nbsp;&nbsp;(a)通过算法优化的方式减少门电路
&nbsp;&nbsp;(b)模块复用、资源共享

(3) 时序逻辑:

&nbsp;&nbsp;(a)尽量减少无用的register:算法优化、模块复用
&nbsp;&nbsp;(b)非功能性的register不使用带复位reg:数据打拍

(4) 存储:RAM

如何理解电容器容抗等效

电容让交流电通过的同时对交流电流存在着阻碍作用,就同电阻阻碍电流一样,所以在大多数的电路分析中,可以将电容在电路中的作用当作一个“特殊”电阻来等效理解,称为容抗。

在交流电的频率不同和电容器容量大小不同的情况下,电容器对交流电的阻碍作用——容抗也不同。

<strong>1、容抗计算公式</strong>

51单片机的idata,xdata,pdata,data的详解

data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

bit:是指0x20-0x2f的可位寻址区

idata:固定指前面0x00-0xff的256个RAM,其中前128和dATa的128完全相同,只是因为访问的方式不同。

idata是用类似C中的指针方式访问的。

汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idATa做指针式的访问效果很好)

xdATa:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

怎样理解阻抗匹配?

阻抗匹配(impedance matching)是指信号传输过程中负载阻抗和信源内阻抗之间的特定配合关系。一件器材的输出阻抗和所连接的负载阻抗之间所应满足的某种关系,以免接上负载后对器材本身的工作状态产生明显的影响。对于低频电路和高频电路,阻抗匹配有很大的不同。

在理解阻抗匹配前,先要搞明白输入阻抗和输出阻抗。

<strong>一、 输入阻抗</strong>

输入阻抗是指一个电路输入端的等效阻抗。在输入端上加上一个电压源U,测量输入端的电流I,则输入阻抗Rin就是U/I。你可以把输入端想象成一个电阻的两端,这个电阻的阻值,就是输入阻抗。

51单片机的定时计数器

<font size="3"><strong>一、作用</strong></font>

定时器/计数器以定时器的作用最为突出。一般来说涉及到定时器,都可以算作定时器算法。简单的如秒表等。复杂的如果系统内核的定时算法等。在学习单片机的路上,必学会定时器。

<font size="3"><strong>二、工作原理</strong></font>

定时器/计数器的原理其实没那么难。

定时器也就是一个计数器。而每计一个数的时间是一定的,于是就等价了定时器。51的定时器是从你设置的初值开始计数,直到他所能达到的最高数值为止。即:

定时时间 =(最大值 – 初值)X 每计一个数的时间

如何做好高速PCB信号流向处理?

信号完整性是指信号在传输路径上的质量,即信号在电路中能以正确的时序和电压电平作出响应的能力。如果电路设计能够达到把信号以规定的时序、持续时间和电压幅值在互连系统中传输,就表明该电路具有良好的信号完整性。

信号完整性问题体现在很多方面,当信号上升时间减小到一定的程度,电路板上的寄生电容和寄生电感开始导致一些可能影响电路性能的噪声信号和瞬态信号时,就需要考虑信号的完整性问题,它可能会造成以下问题的发生。