目录

嵌入式开发基础篇

嵌入式开发——基础篇

文章目录

1.嵌入式是啥

https://i-blog.csdnimg.cn/blog_migrate/5e503aab4789f35f5e9c76080c87af1e.png

重点描述如下:

软硬件可裁剪

对功能、可靠性、成本、体积、功耗等严格要求

嵌入式系统是软件和硬件的综合体

有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。

归纳 :需要关注硬件,注意可靠性,功耗,成本。这就是为什么你家洗衣机里面用嵌入式而不放一台Intel电脑。

嵌入式开发设备有哪些:

单片机/DSP/FPGA/ARM/arduino/树莓派 …

单片机:

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机

https://i-blog.csdnimg.cn/blog_migrate/e900bd41ce09804d31454b5ff67f3b35.png

DSP

数字信号处理器(digital signal processor) 由大规模或超大规模集成电路芯片组成的用来完成某种信号处理任务的处理器。它是为适应高速实时信号处理任务的需要而逐渐发展起来的。硬件乘法累加操作/哈佛结构/特殊寻址模式…

FPGA

Field Programmable Gate Array,中文名是现场可编程门阵列

“FPGA写的不是代码,是电路”。

https://i-blog.csdnimg.cn/blog_migrate/af3e3c681e43a5dbfeb5c0e070e47c71.png

下面资料/图片来源:

CPU、GPU 都属于冯·诺依曼结构,指令译码执行、共享内存。FPGA 之所以比 CPU 甚至 GPU 能效高,本质上是无指令、无需共享内存的体系结构带来的福利。

FPGA 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。

FPGA 每个逻辑单元与周围逻辑单元的连接在重编程(烧写)时就已经确定,并不需要通过共享内存来通信。

https://i-blog.csdnimg.cn/blog_migrate/d78c1c22386d2fcead40012bebffdda5.png

ARM

Advanced RISC Machine,RISC:精简指令集计算机。使用了经过精简设计的指令系统,使得整个处理器的设计可以更加简洁,功耗、体积大大缩小。

对比DSP,ARM具有比较强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面,它的速度和数据处理能力一般,但是外围接口比较丰富,标准化和通用性做的很好,而且在功耗等方面做得也比较好,所以适合用在一些消费电子品方面。

Arduino与树莓派

Arduino是一款基于微控制器(单片机)的电子开发板,它可以运行一些相对比较简单的应用程序。与树莓派不同,Arduino无法运行操作系统。由于没有操作系统,Arduino的程序运行更加直接,更适合用于与传感器和外围电路进行通信,其程序体积较小,程序运行效率相对较高。Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。

树莓派与Arduino不同,树莓派是一款超小体积的计算机,它需要利用TF卡装载操作系统才能够运行。树莓派利用ARM作为处理器,还具有HDMI接口、USB接口、网络接口等。

这些芯片各有优势,经常是互相借鉴,你中有我我中有你。设计产品的时候也可以充分发挥各自的优势所在。

https://i-blog.csdnimg.cn/blog_migrate/52ae47f9d3af0f7bb051e35eb88022b7.png


2.嵌入式应用

单片机控制鱼缸生态系统

设备:51单片机

功能:时间显示,定时控制电机旋转投喂饲料,定时开启灯光/过滤系统/增氧系统。

延申产品:空调/洗衣机/电子表

https://i-blog.csdnimg.cn/blog_migrate/fd03f9838f5ed2b34828a254fb2bb132.jpeg


DSP数字信号处理

设备:DSP+51单片机

功能:dsp做信号采集,频谱变化,滤波,分析电流/电压/频率等参数。数据传输到单片机控制液晶显示。

延申产品:数字功放,主动降噪耳机

https://i-blog.csdnimg.cn/blog_migrate/c1a58ed87e433e81aadcfef8b023a42e.png


FPGA信号发生器

延申产品:数字电源,视频编解码(低延时,大数据并行计算)

https://i-blog.csdnimg.cn/blog_migrate/075b011b6311d04b25fea8e2cf26d7d2.png

嵌入式的应用可以说充满了我们生活各个方面,小到手表/路由器,大到飞机卫星都有应用。


3.PIN 引脚

PIN:引脚,一个集成度这么高的芯片,封装这么好为什么要伸出些引脚来?这是用来与外设打交道,如同我们写代码,封装接口,也是要留出传入参数传出参数。不同引脚会有不同的功能。

树莓派封装好的HDMI口/USB口这些其实最终也是连接到芯片的某些特定功能的PIN脚。侧边用排针引出来的引脚,只是主芯片没使用的一些引脚可以给开发者自定义使用的。所以说主芯片还是通过PIN脚与外界打交道的。

PIN用途
CLK时钟信号
VCC电源
GND
I2CSCL/SDA,控制线,数据线
TX/RX串口发送接收
I/OInput/Output,输入输出口。GPIO(General-Purpose Input/Output),可以自定义成高阻,输入,或者输出

https://i-blog.csdnimg.cn/blog_migrate/998b6cad3e2b0eb6a508235b000407ae.png https://i-blog.csdnimg.cn/blog_migrate/755fe6d4f3c515ce392e73573c758667.jpeg

https://i-blog.csdnimg.cn/blog_migrate/a1ef838ec7e70dfe075a60c23434e43a.png


https://i-blog.csdnimg.cn/blog_migrate/6e002bb10a7e37e701a011cbb4983bac.png

总结:写寄存器,控制其模式。读入和输出也是读写对应寄存器。

简单的单片机会直接操控寄存器,很多嵌入式平台都有封装好对应的库,直接调用方法。

单片机:

#include<reg52.h>
sbit led1=P1^0;//P1寄存器的bit0位,reg52.h里面封装好了^定义
void main(){
	led1=0;//输出低
	delay();
	led1=1;
	delay();
}

树莓派:

#include <wiringPi.h>
int main(void)
{
	wiringPiSetup() ;//初始化
	pinMode(0, OUTPUT) ;//模式
	digitalWrite(0, HIGH) ; //输出高
	delay (500) ;
	digitalWrite(0, LOW) ; 
	delay (500) ;
}

特殊的pin脚还需要设置一些特殊的配置才能正常工作,如串口引脚,需要设置波特率,工作模式,中断等。

4.外设

嵌入式控制各种外设,需要会看外设的原理图/数据手册,知道它的参数,才能知道如何控制它。

LED灯:

https://i-blog.csdnimg.cn/blog_migrate/6d6c72da59146ba83cc9df666ab6d20d.png

共阴共阳?决定了你的控制方式。

https://i-blog.csdnimg.cn/blog_migrate/a2eec0f236c2d2a2da8b0d80a961add1.png

双色led灯,共阳,A端接高电平,B/C哪端是低电平哪端灯就亮

https://i-blog.csdnimg.cn/blog_migrate/dc42f869ba8d38b3b7e3f63d2298ff39.png

树莓派连接共阴极双色led

https://i-blog.csdnimg.cn/blog_migrate/62e29886db0d94903760cb249f5ae0a5.png

继电器

家用设备220V,我们的嵌入式设备是3.3V,如果嵌入式设备直接接上去,估计要冒烟。如何用嵌入式设备去控制这些几百伏的设备呢?

https://i-blog.csdnimg.cn/blog_migrate/50a202b7865cff08bf017122cd026343.png

作用:小电流去控制大电流

电磁继电器

https://i-blog.csdnimg.cn/blog_migrate/0084e8b967b9718a592213fd01e87158.png

原理

通过小电流控制电磁铁吸附,从而控制大电流电路。

https://i-blog.csdnimg.cn/blog_migrate/ebca19e2a607f03ac98e97ac8f394af3.png

由于电磁线圈是感性器件,IO口控制D/E接通和断开是瞬间的事情,这样线圈就会产生很高的反电动势,容易导致嵌入式IO口损坏。所以一般在嵌入式与线圈间加入光耦隔离或者二极管保护。

https://i-blog.csdnimg.cn/blog_migrate/52e5ac798ff1d4efc1393a1a0a9ba6f0.png

超声波测距模块

https://i-blog.csdnimg.cn/blog_migrate/7961fb51b04af6911c7a4d47a5c6f21d.png https://i-blog.csdnimg.cn/blog_migrate/99baa520adc79742760fa3570d809feb.png