跳转到主要内容

嵌入式

硬件电路设计的几个注意事项!

demi 提交于

嵌入式设计是个庞大的工程,今天就说说硬件电路设计方面的几个注意事项,首先,咱们了解下嵌入式的硬件构架。

我们知道,CPU是这个系统的灵魂,所有的外围配置都与其相关联,这也突出了嵌入式设计的一个特点硬件可剪裁。在做嵌入式硬件设计中,以下几点需要关注。

<font size="3"><strong>第一、电源确定</strong></font>

电源对于嵌入式系统中的作用可以看做是空气对人体的作用,甚至更重要:人呼吸的空气中有氧气、二氧化碳和氮气等但是含量稳定,这就相当于电源系统中各种杂波,我们希望得到纯净和稳定符合要求的电源,但由于各种因素制约,只是我们的梦想。这个要关注两个方面:

a、电压

嵌入式系统需要各种量级的电源比如常见的5v、3.3v、1.8v等,为尽量减小电源的纹波,在嵌入式系统中使用LDO器件。如果采用DCDC不仅个头大,其纹波也是一个很头疼的问题。

b、电流

嵌入式系统的正常运行不但需要稳定足够的电源,还要有足够的电流,因此在选择电源器件的时候需要考虑其负载,我设计时一般留有30%的余量。

嵌入式系统中boot的理解

demi 提交于

1. 首先boot和boot loader是一个东西吗?是的,都是一个东西。

2. Boot中包含了CPU的初始化代码,Memory与外围接口的初始化代码,随后会回引系统(OS),最后将控制权交给OS,编译完成后将二进制文件烧入FLASH。如果板卡复位,CPU异常矢量或复位矢量指的地址就是FLASH地址,Flash中的Boot代码初始化CPU、Memory、简单的外设,随后把Flash中的OS移到内存里,随后OS就会引导起来。

3. boot其最大的作用就是系统初始化,分配内存,将应用代码(可以带OS,也可以不带)从FLASH中导入内存,最后将运行指针指向这段代码,把控制权交给应用程序。

4. Bootloader是在操作系统运行之前执行的一小段程序,通过这一小段程序,我们可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。意思就是说如果我们要想让一个操作系统在我们的板子上运转起来,我们就必须首先对我们的板子进行一些基本配置和初始化,然后才可以将操作系统引导进来运行。

5. 没有操作系统的简单嵌入式计算机,系统上电后,通常直接进入用户应用程序,有操作系统的计算机中,上电后首先运行的是一个标准化的软件—–引导程序(bootloader)

嵌入式物联网(IoT)的六大硬件设计挑战

demi 提交于

在开发嵌入式物联网设备时,硬件设计被视为物联网产品成功的关键组成部分。为了确保嵌入式物联网产品满足所需功能,功耗低、安全可靠,嵌入式物联网设备制造商在这些设备的硬件设计阶段面临许多挑战。随着物联网的出现,由于连接设备的快速发展,嵌入式系统市场出现了大幅增长。

<strong>嵌入式系统在物联网中的作用</strong>

物联网(IoT)被定义为一个过程,其中对象配备有涉及硬件板设计和开发的传感器,执行器和处理器,软件系统,Web API和协议,它们共同创建了嵌入式系统的连接环境。这种连接环境允许技术跨多个设备,平台和网络连接,创建一个通信网络,彻底改变我们与世界进行数字交互的方式。例如与我们的环境,社区和家庭的互动和行为,甚至与我们自己的身体。

我们周围的嵌入式系统采用商业系统的形式,如自动售货机,智能信息亭,AC控制器,联网汽车,酒店票据打印机等,它们能够执行独特的各种操作。因此,在设计这些嵌入式物联网系统时,需要针对特定​​功能进行设计,具有良好的产品设计质量,如低功耗,安全架构,可靠的处理器等。但是,设计嵌入式物联网硬件系统不简单。

<strong>在嵌入式系统上运行应用程序缺乏必要的灵活性</strong>

设计出更高效的嵌入式电路只需七个要素!

demi /

嵌入式开发项目中,首先需要做需求分析,然后根据需求分析进行综合考虑,这里给出几个嵌入式硬件设计时特别要注意的问题。

<strong>1、MCU的选择</strong>

选择 MCU 时要考虑 MCU 所能够完成的功能、MCU 的价格、功耗、供电电压、I/O 口电平、管脚数目以及 MCU 的封装等因素。MCU 的功耗可以从其电气性能参数中查到。供电电压有 5V、3.3V 以及 1.8V 超低电压供电模式。为了能合理分配 MCU 的I/O资源,在 MCU 选型时可绘制一张引脚分配表,供以后的设计使用。

<strong>2、电源</strong>

①考虑系统对电源的需求,例如系统需要几种电源,如24V、12V、5V或者3.3V等,估计各需要多少功率或最大电流(mA)。在计算电源总功率时要考虑一定的余量,可按公式“电源总功率=2×器件总功率”来计算。

②考虑芯片与器件对电源波动性的需求。一般允许电源波动幅度在 ±5% 以内。对于A/D转换芯片的参考电压一般要求 ±1% 以内。

③考虑工作电源是使用电源模块还是使用外接电源。

<strong>3、普通I/O口</strong>

适用于STM32的五大嵌入式操作系统,你选哪个?

demi /

基于STM平台且满足实时控制要求操作系统,有以下5种可供移植选择,分别为μClinux、μC/OS-II、eCos、FreeRTOS和都江堰操作系统(djyos)。

下面分别介绍这五种嵌入式操作系统的特点及不足。

<font color="blue"><strong>1、μClinux</strong></font>

μClinux是一种优秀的嵌入式Linux版本,其全称为micro-control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,μClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。

μClinux在结构上继承了标准Linux的多任务实现方式,分为实时进程和普通进程,分别采用先来先服务和时间片轮转调度,仅针对中低档嵌入式CPU特点进行改良,且不支持内核抢占,实时性一般。

嵌入式初学者注意事项

demi /

<strong>1 嵌入式系统的知识体系</strong>

嵌入式系统的应用范围可以粗略分为两大类:
(1)电子系统的智能化(工业控制,现代农业、家用电器、汽车电子、测控系统、数据采集等等);
(2)计算机应用的延伸(MP3、手机、通信、网络、计算机外围设备等)。从这些应用可以看出,要完成一个以MCU为核心的嵌入式系统应用产品设计,需要有硬件、软件及行业领域相关知识。硬件主要有MCU的硬件最小系统、输入/输出外围电路、人机接口设计。软件设计有固化软件的设计,也可能含PC机软件的设计。行业知识需要通过协作、交流与总结获得。

概括地说,学习以MCU为核心的嵌入式系统,需要以下软件硬件基础知识与实践训练:

1:硬件最小系统(包括电源、晶振、复位、写入调试接口);

2:通用I/O(开关量输入/输出,涉及各种二值量检测与控制);

3:模数转换A/D(各种传感器信号的采集与处理,如红外、温度、光敏、超声波、方向等等);

4:数模转换D/A(对模拟量设备利用数字进行控制);

5:通信(串行通信接口SCI、串行外设接口SPI、集成电路互联总线I2C,CAN、USB、嵌入式以太网、ZigBee技术等);

嵌入式单片机程序架构之顺序结构

demi /

时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中使用了这一方法。不过我们这里要说的这个时间片轮询法并不是挂在操作系统下,而是在前后台程序中使用此法。也是本文要详细说明和介绍的方法。

对于时间片轮询法,虽然有不少书籍都有介绍,但大多说得并不系统,只是提提概念而已。下面本人将详细介绍本人模式,并参考别人的代码建立的一个时间片轮询架构程序的方法,我想将给初学者有一定的借鉴性。

这里我们先介绍一下定时器的复用功能。

使用1个定时器,可以是任意的定时器,这里不做特殊说明,下面假设有3个任务,那么我们应该做如下工作:

1. 初始化定时器,这里假设定时器的定时中断为1ms(当然你可以改成10ms,这个和操作系统一样,中断过于频繁效率就低,中断太长,实时性差)。

2. 定义一个数值:

一招教你ARM嵌入式系统硬件怎么用?

demi /

<font size="3"><strong>ARM嵌入式系统硬件设计</strong></font>

图1是系统硬件结构图“系统采用外部3.6864MHz的晶振产生内核所需要的18.432MHz、36.864MHz、49.152MHz或73.728MHz的时钟。

<center><img src="http://mcu.eetrend.com/files/2018-08/wen_zhang_/100013593-46338-1.jpg&q…; alt="一招教你ARM嵌入式系统硬件怎么用?"></center>

以下主要针对此硬件开发平台,进行结构、储存器扩展、主要接口、显示及其外设方面设计的介绍。

<strong>1、电源部分设计</strong>

学习嵌入式不可不知的十六个硬件概念,你知道几个?

demi /

做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。这样才能深入的研究下去。

下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。

<font color="#33b1c8"><strong>一、电平(Level)</strong></font>
在数字电路中,1表示高电平,0表示低电平,一个数字电路的管脚,总是存在一个电平的,要么高要么低,或者说要么1要到0。

<font color="#33b1c8"><strong>二、总线(Bus)</strong></font>
将每个外设采用独立的信号线连到处理器不可行,且处理器在单一时间内只会对一个外设进行访问,那么久采用共享的信号线将所有的芯片连在一起呢?这就是总线概念的由来。

基于PIC的数据采集系统---上位机设计

judy /

<font size="3"><strong>基本功能</strong></font>

在本设计中,数据的处理可以使用PC机的MATLAB等功能强大的软件,但是这类现有的数据处理软件并不能对特有的数据采集系统的下位机采集模块进行直接控制,因此需要针对特定的数据采集系统编写对应的上位机软件,上位机软件是针对上述目的而设计与编写的,是整个采集系统的控制前端和数据存储及处理中心。控制功能主要包括控制下位机采集的开始与终止,采集的频率等,数据处理功能主要包括绘制波形图,将数据显示于列表,将数据存储于文件,其中将数据存储于文件将便于使用现有的数据处理软件对数据进行一些数值算法处理,以达到科学研究,结论验证等目的。

<font size="3"><strong>开发环境</strong></font>

C++程序设计语言可以很好地实现面向对象的编程思想,采用C++编写上位机程序,可以将每一个功能模块封装成一个类,修改某个类的实现,增加类的功能不会影响整个程序的框架,这样就很容易维护和扩展功能;加之我们要实现的软件功能中需要调用大量的windows API函数库,所以采用VC++6.0作为上位机的开发环境。