差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
嵌入式系统设计 [2016/05/25 18:01] gongyu |
嵌入式系统设计 [2016/06/29 15:42] gongyu [嵌入式系统基础概念 - 嵌入式系统、微控制器、ARM] |
||
---|---|---|---|
行 1: | 行 1: | ||
====嵌入式系统基础概念 - 嵌入式系统、微控制器、ARM==== | ====嵌入式系统基础概念 - 嵌入式系统、微控制器、ARM==== | ||
===什么是嵌入式系统?=== | ===什么是嵌入式系统?=== | ||
+ | [[嵌入式系统]]来源于英文Embedded system,是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,根据英国电气工程师协会( U.K. Institution of Electrical Engineer)的定义,嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备。与个人计算机这样的通用计算机系统不同,嵌入式系统通常执行的是带有特定要求的预先定义的任务。由于嵌入式系统只针对一项特殊的任务,设计人员能够对它进行优化,减小尺寸降低成本。嵌入式系统通常进行大量生产,所以单个的成本节约,能够随着产量进行成百上千的放大。 | ||
+ | |||
+ | 嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是由单个程序实现整个控制逻辑。 | ||
+ | |||
+ | 嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的;所以经常称为“固件”。 | ||
+ | |||
+ | 几个重要的基本概念: | ||
+ | * [[计算机]] - Computer | ||
+ | * [[微控制器]] - Microprocessor | ||
+ | * [[微处理器]] - Microcontroller | ||
+ | * [[Von Neumann结构]] | ||
+ | * [[Harvard结构]] | ||
+ | * [[CISC]] | ||
+ | * [[RISC]] | ||
+ | |||
===微处理器和微控制器=== | ===微处理器和微控制器=== | ||
+ | {{ :mcu_architecture.png |}} | ||
+ | {{ :embedded_dev.png |}} | ||
+ | |||
+ | 主流的微控制器: | ||
+ | * 8位单片机 | ||
+ | * [[8051]] | ||
+ | * [[AVR]] | ||
+ | * [[PIC]] | ||
+ | * 32位微控制器 | ||
+ | * NXP - | ||
+ | * Freescale - | ||
+ | * STMicroelectronics [[STM32]] | ||
+ | * TI的[[MSP430]]和[[CC3200]] | ||
+ | * Microchip | ||
+ | * Silicon Labs | ||
+ | * MIPS | ||
+ | * Cypress的PSoC4 | ||
+ | * | ||
===嵌入式系统的开发过程=== | ===嵌入式系统的开发过程=== | ||
+ | |||
===ARM的世界=== | ===ARM的世界=== | ||
行 14: | 行 48: | ||
===电压和逻辑值=== | ===电压和逻辑值=== | ||
===mbed上的数字输出=== | ===mbed上的数字输出=== | ||
- | 使用数字输入 | + | ===使用数字输入=== |
- | 简单的光器件接口 | + | ===简单的光器件接口=== |
- | 驱动大的直流负载 | + | ===驱动大的直流负载=== |
- | 小项目 - Letter计数器 | + | ===小项目 - Letter计数器=== |
- | 模拟输出 | + | |
- | 介绍数据转换 | + | ====模拟输出==== |
- | 模拟输出端口 | + | ===介绍数据转换=== |
- | 另一种方式的模拟输出:PWM | + | ===模拟输出端口=== |
- | mbed上的PWM | + | ===另一种方式的模拟输出:PWM=== |
+ | ===mbed上的PWM=== | ||
+ | |||
+ | ====模拟输入==== | ||
+ | ===ADC=== | ||
+ | ===模拟输入和输出组合=== | ||
+ | ===处理从模拟输入获得的数据=== | ||
+ | ===一些简单的模拟传感器=== | ||
+ | ===数据转换的时序=== | ||
+ | |||
+ | ====进一步编程的技巧==== | ||
+ | ===程序设计和结构=== | ||
+ | ===功能=== | ||
+ | ===编程设计=== | ||
+ | ===采用流程图定义代码结构=== | ||
+ | ===伪代码=== | ||
+ | ===函数=== | ||
+ | ===多文件=== | ||
+ | |||
+ | ====串行通信==== | ||
+ | ===介绍同步串行通信=== | ||
+ | ===SPI总线=== | ||
+ | ===介绍SPI=== | ||
+ | ===板子上的SPI=== | ||
+ | ===设置SPI主=== | ||
+ | ===创建SPI数据链路=== | ||
+ | ===智能仪表和SPI加速度计=== | ||
+ | ===评估SPI=== | ||
- | 模拟输入 | + | ====I2C总线==== |
- | ADC | + | ===什么是I2C总线=== |
- | 模拟输入和输出组合 | + | ===mbed上的I2C=== |
- | 处理从模拟输入获得的数据 | + | ===设置I2C数据链路=== |
- | 一些简单的模拟传感器 | + | ===同I2C的温度传感器通信=== |
- | 数据转换的时序 | + | ===使用SRF08超声测距=== |
- | 进一步编程的技巧 | + | ===评估I2C=== |
- | 程序设计和结构 | + | |
- | 功能 | + | |
- | 编程设计 | + | |
- | 采用流程图定义代码结构 | + | |
- | 伪代码 | + | |
- | 函数 | + | |
- | 多文件 | + | |
- | 串行通信 | + | ====异步串行通信==== |
- | 介绍同步串行通信 | + | ===什么是异步串行通信=== |
- | SPI总线 | + | ===mbed上的异步串行通信=== |
- | 介绍SPI | + | ===同主机之间的同步通信=== |
- | 板子上的SPI | + | |
- | 设置SPI主 | + | |
- | 创建SPI数据链路 | + | |
- | 智能仪表和SPI加速度计 | + | |
- | 评估SPI | + | |
- | I2C总线 | + | ====液晶显示==== |
- | 什么是I2C总线 | + | ===显示技术=== |
- | mbed上的I2C | + | ===介绍LCD技术=== |
- | 设置I2C数据链路 | + | ===LCD字符型显示=== |
- | 同I2C的温度传感器通信 | + | ===采用PC1602F LCD=== |
- | 使用SRF08超声测距 | + | ===介绍PC1602F显示=== |
- | 评估I2C | + | ===连接PC1602F=== |
- | 异步串行通信 | + | ===使用mbed的TextLCD库=== |
- | 什么是异步串行通信 | + | ===在LCD上显示模拟输入=== |
- | mbed上的异步串行通信 | + | ===更高级的LCDs=== |
- | 同主机之间的同步通信 | + | ===彩色的LCD=== |
+ | ===控制SPI LCD手机显示屏=== | ||
- | 液晶显示 | + | ====中断、定时、任务==== |
- | 显示技术 | + | ====存储器和数据管理==== |
- | 介绍LCD技术 | + | ===存储器功能类型=== |
- | LCD字符型显示 | + | ===数据文件的使用=== |
- | 采用PC1602F LCD | + | ===C/C++库函数=== |
- | 介绍PC1602F显示 | + | ===定义本地文件系统=== |
- | 连接PC1602F | + | ===打开和关闭文件=== |
+ | ===文件数据的读写=== | ||
+ | ===数据文件访问示例=== | ||
+ | ===文件访问=== | ||
+ | ===串文件访问=== | ||
+ | ===使用格式化数据=== | ||
+ | ===使用外部存储器=== | ||
+ | ===指针介绍=== | ||
- | 使用mbed的TextLCD库 | + | ====数字信号处理==== |
- | 在LCD上显示模拟输入 | + | ===什么是DSP?=== |
- | 更高级的LCDs | + | ===数字滤波举例=== |
- | 彩色的LCD | + | ===数字数据的输入和输出=== |
- | 控制SPI LCD手机显示屏 | + | ===信号重建=== |
+ | ===数字低通滤波器=== | ||
+ | ===按键激活=== | ||
+ | ===数字高通滤波器=== | ||
+ | ===延时/回声效果=== | ||
+ | ===波表音频文件的处理=== | ||
- | 中断、定时、任务 | + | ====高级串行通信==== |
+ | ===蓝牙串行通信=== | ||
+ | ===USB=== | ||
+ | ===以太网=== | ||
+ | ====控制系统==== | ||
+ | ===闭环和开环控制=== | ||
- | 存储器和数据管理 | ||