【整理】嵌入式系统的各种常见外设
2013-12-24 16:51
260 查看
原文地址:http://www.crifan.com/summary_embedded_system_various_peripherals/
最后更新:2013-11-14
TODO:
1.添加更多的常见的外设。等某个外设的内容够多了,再单独整理到独立的帖子中。
嵌入式系统中,硬件方面,有很多常见的外围设备。
在此,专门整理一下。
外设==外部设备==Peripheral
外部:主要指的是除了嵌入式系统中主要的CPU,即SoC,MCU等之外的
设备:某种硬件功能模块
此处,所指的外设,也常被称为各种接口,硬件接口。
因为是:存在对应的物理上的看得见的,以及那些属于硬件内部的肉眼不容易看见的,各种接口,通过对应接口连接外部设备。
下面总结一下,常见的,有哪些外设。
一个模块,包含了一堆的模拟电路,实现对应的模拟方面的功能。
比如功放amplifiers, filters过滤器等等。
常常和数据采集,音频等方面有关。
Analog Digital Converter/ Digital Analog Converter
模拟数字转换器 / 数字模拟转换器
在模拟和数字之间进行转换。
比如:
常常ADC,用于外挂某种传感器,然后通过ADC或DAC,转换成对应的数字信号,然后可以通过嵌入式SoC去读取对应的数据。
当然,CRC算法,是可以通过软件实现的。
但是为了提高计算的效率,有时候可以利用已有的CRC模块去实现CRC计算。
比如:
Using
the CRC Module on the Flexis AC Family
CRC本身,又有一些细节划分和叫法
比如:
CRC16-CCITT
CRC32
等等。
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 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
硬件实现视频解码
包括:
JPEG
VC1
WMV
视频解码方面,常常还会涉及到一个
pp:post processing,后处理
的功能。
比如图像的混合,图形的旋转,等等。
也是通过硬件模块去实现的,比软件处理,效率更高,更快。
一些资料供参考:
Chapter
9. Pre- and Post-Processing
SAM9M10
Hardware Video Decoder Post Processing Engine Features
硬件实现音频解码:
AAC
MP3
WMA
WMA8 + Microsoft PDDRM
WMA9 + DRM10
OGG
W***
音频解码,往往还涉及相关的内容
比如:
Equalization均衡
等等。
晶振,crystal,产生对应的时钟
然后用CCU,Clock Unit Control,去控制对应的时钟频率,变高或变低,达到对应的频率
然后输送给外设各个模块。
LCD的controller,LCD的控制器 ,LCD显示屏的控制器
可以支持外接很多种不同类型的显示屏。
比如:
http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X
中,就有个LCDC
比如AES加密等等。
详见:
【整理】嵌入式外设之DMA
详见:
【整理】嵌入式外围设备之GPIO
常见的接口之一。
I2C
比如:
http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X
中,就有个I2C
一些折腾过的内容:
如何在Linux中让I2C驱动支持Sub
Address的两种方法
主要用于音频。
往往和声卡,音频,有关。
之前转载的帖子供参考:
I2S标准
IDE硬盘。
更多的用于PC端。
但是,偶尔也会遇到,嵌入式系统中挂IDE硬盘的。
嵌入式中的键盘,
主要指的是,
有限的几个按键
所以往往是键盘矩阵Keyboard Matrix
之前折腾过,PC端的键盘,其本质的原理是类似的,也可以参考参考:
键盘Keyboard中的扫描码Scan
Code 通码Make code 断码Break Code
内存控制器MPMC
可以外挂各种存储介质
主要指的是SDRAM
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中可能会涉及到bch算法。
之前写过的教程:
【详解】如何编写Linux下Nand
Flash驱动
Power Management Unit
用于管理电源的。
可以控制各种硬件模块的电源,的电压,以达到:
可以使得硬件工作稳定和正常
可以实现功耗管理
正常电压时,性能好,但是功耗大
低电压时,功耗相应降低,但是性能相对弱
wiki的解释供参考:
http://en.wikipedia.org/wiki/Power_Management_Unit
RTC,常见的,嵌入式中的基本功能之一。
断电也可以正常运行。
比如:
http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=MCF5227X
中,就有个RTC
折腾过的有:
【整理】linux下测试RTC驱动相关的命令date和hwclock常见用法简介
详见:
【整理】嵌入式外设之SD/MMC
也是常见接口之一。
Synchronous Serial Port
http://en.wikipedia.org/wiki/Synchronous_Serial_Port
SSP与SPI接口的区别是什么?
http://zhidao.baidu.com/question/247087991.html
也是属于显示屏相关的,但是支持触摸。
显示内容输出格式之一。
显示到电视上。
包括对应的PAL或NTSC等格式。
详见:
【整理】嵌入式外设之RS232
简称WDT
之前的部分整理,供参考:
什么是watchdog
+ 为何在要系统初始化的时候关闭watchdog
抽空再整理出单独教程。
用于支持JTAG口去调试芯片
属于调试方面的东西
网卡,以太网卡
比如: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
最后更新: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的HostUSB 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
W***
音频解码,往往还涉及相关的内容
比如:
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中各种片内资源
【整理】嵌入式系统中各种软件功能模块
参考资料
Whatis 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
相关文章推荐
- python进阶学习笔记(四)--多线程thread
- C#语言各种集合介绍
- 用requireJS进行模块化的网站开发
- UITextField
- 给按钮添加 toSearch_Button.setOnClickListener(this);出错 解决办法
- iOS CALayer动画中使用的3个tree
- jetty 配置
- 在cacti中查询mysql,数据库硬盘占用量,php的script query
- 负载均衡算法
- 秒杀多线程第四篇 一个经典的多线程同步问题
- 释放 HTML5 <audio> 的力量
- Java开发牛人十大必备网站
- 释放 HTML5 <audio> 的力量
- Listview属性
- 我心中的计算机学科(四)
- mysql插入注册日期的方案
- (standard c libraries translation )atoi家族
- 使用sshfs来让sublime打开远程目录
- 利用谷歌API生成二维码
- Java中间缓存变量机制