跳转到主要内容

技术

单片机按键消抖程序

通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖动,如图 8-10 所示。

资深工程师:选择汽车MCU的十大考虑因素

微控制器(MCU)在从电机控制,到信息娱乐系统和车身控制等越来越宽泛的汽车应用中提供至关重要的性能。随着价格的下降和整固的增加,微控制器正变得越来越普及,这意味着MCU被越来越多地视为商品。尽管存在这种商品化趋势,汽车系统设计工程师仍然认为不同的控制器会有很大的差异,包括各种级别的集成度和功率要求。选择MCU通常可以缩减材料成本(BOM),从而有效地降低电子控制单元(ECU)本身的价格。

选择汽车MCU时,设计工程师可以考虑以下10个重要因素,实现成本压力与应用所需的特定性能特色之间的平衡。

<strong>1.低压检测</strong>

MCU工作时的故障风险之一是在临界点时电源电压或MCU内部电压可能降至所需电平以下。显然,如果工作电压无法保证,而超出了推荐电源电压之外的话,这就会引发故障。

MCU引脚输出模式中推挽输出与开漏输出电路原理区别

来源:至秦单片机

开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)。

推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。

我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极C跟发射极E之间相当于断开),所以5V电源通过1K电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。

MSP MCU I2C入门指南

这是一份介绍性指南,指导你如何用超低功耗MSP微控制器 (MCU) 开始一个与I2C通信有关的项目:

<strong>简介</strong>

I2C(或称为I2C,集成电路总线)是一种两线制通信形式,主要用来在短距离、电路板间的应用中,实现微控制器与外设IC之间的低速通信。由于其采用范围很广,所以学习使用I2C与MSP MCU之间的通信已经在帮助工程师开发应用方面变得十分必要。通过使用一个超低功耗MSP MCU来访问和控制IC器件,这份指南提供了理解I2C协议并执行这一协议所需的工具与资源。

<strong>器件术语</strong>

单片机解密的“攻”与“防”

<strong>一、引言</strong>

单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。

常见单片机芯片难度分析

<strong>常见单片机芯片分析简介</strong>

八个经典问答讲透了PCB布线

<strong>一、问:在小信号电路中一段很短的铜线所具有的电阻一定不重要吧?</strong>
答:印制PCB线路板的导电带做得比较宽,增益误差会降低。在模拟电路中通常使用比较宽的导电带为好,但是许多印制线路板的设计者(和印制线路板设计程序)更喜欢采用最小宽度的导电带以便于信号线的布置。总之,在所有可能出现问题的地方,计算导电带的电阻并分析其作用,这是非常重要的。

单片机引脚介绍

来源:玩转单片机

<center><img src="http://mcu.eetrend.com/files/2017-02/wen_zhang_/100004954-15945-1.jpg&q…; alt="" width="600" ></center>

单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

浅谈四轴飞行器原理

本文来源:<a href="https://www.rs-online.com/designspark/unknown-slug-21">designspark</a&gt;

如今,飞行器越来越受到人们的青睐。 四轴飞行器最开始是由军方研发的一种新式飞行器。随着 MEMS 传感器、单片机、电机和电池技术的发展和普及,四轴飞行器已经应用到各个领域,如军事打击、公安追捕、灾害搜救、农林业调查、输电线巡查、广告宣传航拍、航模玩具等,已经成为重要的遥感平台。

单片机的烧写原理

我要问的不是如何制作烧写接口。 而是,电脑在通过接口向单片机烧写时(此时单片机 内没有程序),电脑是如何通过接口访问内部rom的??对应p口怎么就会指向单片机内部rom(就像单片机是一个rom?

有三种方式:
1、把单片机当做一个ROM芯片,早期的单片机都是如此。将单片机放在通用编程上编程时,就像给28C256这样的ROM中写程序的过程一样。只是不同的单片机使用的端口,编程用的时序不一样。

C语言访问MCU寄存器的两种方式

单片机的特殊功能寄存器SFR,是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有两种方法。

<strong>1、采用标准C的强制类型转换和指针来实现</strong>

采用标准C的强制转换和指针的概念来实现访问MCU的寄存器,例如:
#define DDRB (*(volatile unsigned char *)0x25)

分析如下:
A:(unsigned char *)0x25中的0x25只是个值,前面加(unsigned char *)表示0x25是个地址,而且这个地址所存储的数据的数据类型是unsigned char,意思就是说读/写这个地址时,要写进unsigned char的值,读出也是unsigned char的值。

CPU空操作的原理是什么?

来源: http://www.tuicool.com/articles/YJfqUjV

最近在利用空余时间写一个兼容MIPS32指令集架构的CPU,尽管它和Intel的不同,但MIPS对nop指令的处理方式可以给你一点启发。

首先上过计算机体系结构课的你一定知道,现代CPU都采用流水线结构。在一个简单的五级流水的MIPS32处理器中,五级流水分别实现的逻辑操作是: 取指、译码、执行、访存、回写 。

IDT P9221-R 15W无线电源接收解决方案

P9221-R是一款高效率,符合Qi标准的无线电源接收器,适用于高达15W的应用。使用磁感应充电技术,接收器将来自谐振回路的AC的电源信号,转换到具有9V和12V的可调节DC输出电压设置。集成型低RDS(ON)同步整流器以及超低压差的高效率,使得该产品非常适用于电池供电应用。

P9221-R包括业界领先的32位ARM Cortex-M0处理器,提供高水平的可编程性。此外,该器件具有用有的对准引导信息,用于实现接收器和发射器之间的最佳耦合,可编程的电流限制和专利的过电压保护方案,无需通常由接收器使用的附加电容器和更多的组件数量并降低了成本。与P9242-R发射器(TX)一起,P9221-R是用于高达15W功率应用的、完整的无线电源系统解决方案。

P9221-R采用52-WLCSP封装,额定工作温度范围为0至85℃。

MCU上的无锁原子读操作

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

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

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

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

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

ARMv8-M平台开发安全软件的建议

ARM® TrustZone® 是针对片上系统(SoC)设计的系统级安全技术,它基于硬件,内置于CPU和系统内核,为半导体芯片设计师设计设备安全性能(如可信根)量身打造。TrustZone可用于任何基于ARM Cortex®-A的系统,随着全新Cortex-M23和Cortex-M33处理器的发布与升级,Cortex-M也已经支持该技术。

从尺寸最小的微控制器(搭载针对Cortex-M处理器优化的TrustZone技术),到高性能处理器(搭载针对Cortex-A处理器优化的TrustZone技术),设计师们终于可以从设计初始就着手打造出色的安全性能了。

一文看透芯片之处理器CPU

来源:玩转单片机

回到最初的问题,CPU是怎样访问内存的?简单的答案是,CPU执行一条访存指令,把读写请求发往内存管理单元。内存管理单元进行虚实转换,把命令发往总线。总线把命令传递给内存控制器,内存控制器再次翻译地址,对相应内存颗粒进行存取。之后,读取的数据或者写入确认按照原路返回。再复杂些,当中插入多级缓存,在每一层缓存都未命中的情况下,访问才会最终达到内存颗粒。

知道了完整的路径,那我们开始研究每一步中的硬件到底是怎么样的,读写指令到底是怎样在其中传输的。要了解硬件,首先要说下处理器。处理器的基本结构并不复杂,一般分为取指令,译码,发射,执行,写回五个步骤。而我们说的访存,指的是访问数据,不是指令抓取。访问数据的指令在前三步没有什么特殊,在第四步,它会被发送到存取单元,等待完成。当指令在存取单元里的时候,产生了一些有趣的问题。

MCU在main()之前都干了什么

来源:光豆儿(头条号)

main()是用户程序的入口,那么MCU在main()之前都做了什么呢,下面以stm32f10x芯片为例,描述下main()之前的事情。

简单说MCU在进入main()之前,一直再做进入main()的准备工作。那么这些准备工作都包括什么?

为什么说MCU中导入DSP/FPU是未来的发展主流?

微控制器(MCU)深入人们应用生活,几乎大小设备都看得到MCU踪影,在MCU导入DSP数字信号处理器、FPU浮点运算单元功能后,MCU更大幅扩展元件可适用范围,这几年来,在众多MCU大厂纷纷针对旗下商品推出多样整合方案,不管是产品策略还是市场区隔,也让MCU市场更加丰富多元...

MCU(Microcontroller Unit)深入生活应用是不容易质疑的趋势,尤其是MCU在功能优化或市场区隔目的下,进行DSP(Digital Signal Processor)数字信号处理器或FPU(Floating Point Unit)浮点运算单元功能整合,使得MCU的可应用场域大幅扩展。

MCU整合FPU可以在进阶数值运算的精密度大幅提升、处理效能也能获得改善。

如何用PCLint检查PIC32单片机的C代码

<strong>1. 引言</strong>

C语言在嵌入式领域应用非常广泛,其主要优点是灵活和高效,但若在使用过程中不加以规范,容易引入各种潜在的代码问题。

先来看一段C代码,这段代码中有多少C语言的使用错误?

uint8_t vFunc(void)
{
uint8_t index = 0;