【整理】嵌入式系统的各种常见外设

最后更新:2013-11-14

TODO:

1.添加更多的常见的外设。等某个外设的内容够多了,再单独整理到独立的帖子中。


背景

嵌入式系统中,硬件方面,有很多常见的外围设备。

在此,专门整理一下。

 

什么是嵌入式系统中的外设

外设==外部设备==Peripheral

  • 外部:主要指的是除了嵌入式系统中主要的CPU,即SoC,MCU等之外的
  • 设备:某种硬件功能模块

 

外设==接口

此处,所指的外设,也常被称为各种接口,硬件接口。

因为是:存在对应的物理上的看得见的,以及那些属于硬件内部的肉眼不容易看见的,各种接口,通过对应接口连接外部设备。

 

下面总结一下,常见的,有哪些外设。

 

嵌入式系统的各种常见的外设

 

AFE(Analog Front End)

一个模块,包含了一堆的模拟电路,实现对应的模拟方面的功能。

比如功放amplifiers, filters过滤器等等。

常常和数据采集,音频等方面有关。

 

ADC/DAC

Analog Digital Converter/ Digital Analog Converter

模拟数字转换器 / 数字模拟转换器

在模拟和数字之间进行转换。

 

比如:

常常ADC,用于外挂某种传感器,然后通过ADC或DAC,转换成对应的数字信号,然后可以通过嵌入式SoC去读取对应的数据。

 

CRC硬件模块

当然,CRC算法,是可以通过软件实现的。

但是为了提高计算的效率,有时候可以利用已有的CRC模块去实现CRC计算。

 

比如:

Using the CRC Module on the Flexis AC Family

 

CRC本身,又有一些细节划分和叫法

比如:

CRC16-CCITT

CRC32

等等。

 

CAN

CAN总线接口。

比如:

http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X

中就有:“FlexCAN”

比如:http://www.microchip.com/pagehandler/en-us/family/32bit/architecture.html

就有:“2x CAN 2.0B Ports”

 

USB

USB Host:固定的作为USB的Host

USB Slave:固定的作为USB的Slave

USB OTG:即可以做Host,也可以做Slave,可以通过软件配置

 

现在很多手机,如果号称支持USB Host,那么往往都是对应的内部硬件上有个USB OTG模块的。

 

关于相关知识的整理,可参考:

【整理】关于安卓(Android)手机是否支持USB主机(USB Host)功能

 

比如:

(1)

http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X

中,就有:“USB OTG”

(2)http://www.microchip.com/pagehandler/en-us/family/32bit/architecture.html

就有:“Full-speed USB Host/Device/OTG”

 

一些已有的教程:

USB基础知识概论

如何实现Linux下的U盘(USB Mass Storage)驱动

USB HID Learning Record

 

Video Codec视频解码

硬件实现视频解码

包括:

JPEG

VC1

WMV

 

视频解码方面,常常还会涉及到一个

pp:post processing,后处理

的功能。

比如图像的混合,图形的旋转,等等。

也是通过硬件模块去实现的,比软件处理,效率更高,更快。

 

一些资料供参考:

Chapter 9. Pre- and Post-Processing

SAM9M10 Hardware Video Decoder Post Processing Engine Features

 

Audio Codec音频解码

硬件实现音频解码:

  • AAC
  • MP3
  • WMA
    • WMA8 + Microsoft PDDRM
    • WMA9 + DRM10
  • OGG
  • WAV

音频解码,往往还涉及相关的内容

比如:

Equalization均衡

等等。

 

时钟Clock相关模块:晶振Crystal,CCU

晶振,crystal,产生对应的时钟

然后用CCU,Clock Unit Control,去控制对应的时钟频率,变高或变低,达到对应的频率

然后输送给外设各个模块。

 

LCDC(LCD Controler)

LCD的controller,LCD的控制器 ,LCD显示屏的控制器

可以支持外接很多种不同类型的显示屏。

 

比如:

http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X

中,就有个LCDC

 

硬件加密模块crypto

比如AES加密等等。

 

DMA

详见:

【整理】嵌入式外设之DMA

 

GPIO

详见:

【整理】嵌入式外围设备之GPIO

 

I2C

常见的接口之一。

 

I2C

比如:

http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X

中,就有个I2C

 

一些折腾过的内容:

如何在Linux中让I2C驱动支持Sub Address的两种方法

 

I2S

主要用于音频。

往往和声卡,音频,有关。

 

之前转载的帖子供参考:

I2S标准

 

IDE

IDE硬盘。

更多的用于PC端。

但是,偶尔也会遇到,嵌入式系统中挂IDE硬盘的。

 

Keyboard [Matrix]

嵌入式中的键盘,

主要指的是,

有限的几个按键

所以往往是键盘矩阵Keyboard Matrix

 

之前折腾过,PC端的键盘,其本质的原理是类似的,也可以参考参考:

键盘Keyboard中的扫描码Scan Code 通码Make code 断码Break Code

 

Memory Controller:MPMC

内存控制器MPMC

可以外挂各种存储介质

主要指的是SDRAM

 

Nor Flash

Flash本身,虽然分Nand Flash和Nor Flash

但是,Flash这个词,本身常常代表Nor Flash本身。

 

又分:

Nor Flash

有时候也是指的是EEPROM(?)

比如:http://www.microchip.com/pagehandler/en-us/family/32bit/architecture.html

就有:“Up to 512 KB Flash”

 

Nand Flash

Nand Flash中可能会涉及到bch算法。

 

之前写过的教程:

【详解】如何编写Linux下Nand Flash驱动

 

电源管理PMU

Power Management Unit

用于管理电源的。

可以控制各种硬件模块的电源,的电压,以达到:

  • 可以使得硬件工作稳定和正常
  • 可以实现功耗管理
    • 正常电压时,性能好,但是功耗大
    • 低电压时,功耗相应降低,但是性能相对弱

 

wiki的解释供参考:

http://en.wikipedia.org/wiki/Power_Management_Unit

 

实时时钟RTC(Real Time Clock)

RTC,常见的,嵌入式中的基本功能之一。

断电也可以正常运行。

 

比如:

http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X

中,就有个RTC

 

折腾过的有:

【整理】linux下测试RTC驱动相关的命令date和hwclock常见用法简介

 

SD/MMC

详见:

【整理】嵌入式外设之SD/MMC

 

SSP

也是常见接口之一。

 

Synchronous Serial Port

http://en.wikipedia.org/wiki/Synchronous_Serial_Port

SSP与SPI接口的区别是什么?

http://zhidao.baidu.com/question/247087991.html

 

Touch Panel触摸屏

也是属于显示屏相关的,但是支持触摸。

 

TVOUT

显示内容输出格式之一。

显示到电视上。

包括对应的PAL或NTSC等格式。

 

UART/RS232/串口

详见:

【整理】嵌入式外设之RS232

 

WatchDog看门口

简称WDT

 

之前的部分整理,供参考:

什么是watchdog + 为何在要系统初始化的时候关闭watchdog

抽空再整理出单独教程。

 

JTAG

用于支持JTAG口去调试芯片

属于调试方面的东西

 

Ethernet

网卡,以太网卡

比如:http://www.microchip.com/pagehandler/en-us/family/32bit/architecture.html

就有:“10/100 Ethernet MAC with MII/RMII Interfaces”

 

总结

嵌入式系统,的开发过程中,

往往,更多的时候,可能就是去学习和了解这些外设的工作原理,

然后接着去实现对应的驱动。

这往往是常见的,典型的,嵌入式开发,所要做的事情之一。

 

其他相关的:

【整理】嵌入式各种外设的引脚的相通之处和不同点

【整理】嵌入式SoC中各种片内资源

【整理】嵌入式系统中各种软件功能模块

 

参考资料

What is the CRC Module?

Using the CRC Module on the Flexis AC Family

http://en.wikipedia.org/wiki/Analog_front-end

http://www.digikey.com/product-search/en/integrated-circuits-ics/data-acquisition-analog-front-end-afe/2556395



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量