-
串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。
串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。典型地,串口用于ASCII码字符的传输。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
a,波特率:这是一个衡量符号传输速率的参数。指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数,如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位,1个停止位,8个数据位),这时的波特率为240Bd,比特率为10位*240个/秒=2400bps。一般调制速率大于波特率,比如曼彻斯特编码)。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 [1]
c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。 拍明芯城电话:400-693-8369
-
单片机与单片机IO口之间基本上市可以直接相连的,不过这样连接意义不是很大,两个单片机之间发生关系一般采取以下方法:1、通过串口通讯,这种情况下如果是在同一块板PCB上,两个单片机的RXD和TXD交叉直接相连就可以了,如果不在同一块板,需要用到RS232通讯方式来连接。2、通过并口通讯,一般采用P0口较多,用245或者373芯片来做数据缓存。也是IO口扩展的一种方式。拍明芯城电话:400-693-8369
-
51单片机(STC89C52)下载程序方面的问题,打算以后用stm32做上位机给51下载程序。虽然还不知道怎么弄出个上位机,不过目前实现了不掉电下载程序功能了,在这里跟同学们分享一下嘿嘿~~~STC单片机的IAP 实现不掉电下载程序
下面介绍不掉电载程序的实现过程。先要了解一点基础知识。单片机的复位,下载流等等。。。
首先说一下复位。STC89C52有的复位有两种,一种是上电复位,也就是冷启动,复位后检测串口那里有没有下载流,有的话跑去下载程序那里。还有一种是平时的按键复位,高电平有效那种的,不检测是否有下载流。
下载流是什么?就是串口发送给单片机要烧写程序的信息。STC89C52的下载流是0x7F,连续12个好像(官方公布是大于16 )。如果我们上位机点下载,它就通过一直发送0x7F给单片机。如果这是有上电复位,就烧写程序进去单片机。
我们的程序里面就是要用到这些,再介绍一下基本思路。我们需要单片机正常运行过程中检测是否有下载流(0x7F),如果有下载流就跳进上电复位。只要实现了这个功能,就是实现了不掉电下载程序了~~~检测下载流不难,我这里使用的是串口中断,中断里面检测是否有下载流信息,有的话就跳进上电复位那里。主要是跳到上电复位,怎么跳?上电复位在哪??
跳转方面,有学过微机的同学就能好理解。只要修改 PC 指针就行了,让它指向上电复位那段程序。还有一个问题是,上电复位那段程序在哪里?这个要找芯片数据手册了。官方公布的是0xEC00, 但是我们不是直接跳转过去的, 而是通过使能IAP, 也就是设置IAP控制寄存器。官方公布的IAP控制寄存器地址是0xE7, 设置成0x60就使能了IAP. 来到这里相信同学们都理解了,可以着手写一下程序了。
把必要的东西弄上。文件包含,宏定义,寄存器声明等等。
#include
#define IAP_ENABLE 0x60 //IAP允许
sfr IAP_CNTR = 0xE7; //IAP控制寄存器
void mian(void)
{
UART_Init(); //串口初始化
while(1) //死循环,等待串口中断
{
}
}
void UART_Init()
{
TMOD|=0x20; //定时器1提供串口波特率
TH1=0xf3; //波特率2400, 晶振为12M
TL1=0xf3; //波特率2400, 晶振为12M
EA=1; //打开总中断
TR1=1; //定时器1开始计数
ES=1; //允许串口中断
SCON=0x50; //方式0, 允许串口接收
}
void UART_IRQHandler(void)interrupt 4
{
unsigned char rev; //临时变量, 保存SBUF
if(RI) //检查是否接收到数据
{
RI = 0; //软件清除接受标志位
rev = SBUF; //读取接受缓冲区
if(0x7F == rev) //判断是否为下载流信息
{
IAP_CNTR = IAP_ENABLE; //允许IAP, 也就是直接进入下载程序
}
}
}
(编译通过,下载程序,测试能否在线下载。成功!!!!!!!!!!!!那是感动啊~~~~STC单片机的IAP实现不掉电下载程序)
有了上面程序的话,以后下载程序就直接打开上位机,也就是STC_ISP那个软件,选择好对应的.hex文件,点击下载,就开始下载程序了。以后再也不用先关电源,再上电了下载,那是方便啊(事实证明,我已经对频繁对电源开关,感觉非常繁琐了)。多年来的梦想啊(虽然接触51,貌似不到1年。。。),让我曾经一度非常妒忌AT的单片机,因为它支持在线下载程序。。。STC单片机的IAP实现不掉电下载程序
成功了有点小激动,特地发一下新浪博客,分享给有需要的同学们嘿嘿。
拍明芯城电话:400-693-8369
-
在数据采集系统中,A/D转换的速度和精度又决定了采集系统的速度和精度。MAX197是Maxim公司推出的具有12位测量精度的高速A/D转换芯片,只需单一电源供电,且转换时间很短(6us),具有8路输入通道,还提供了标准的并行接口——8位三态数据I/O口,可以和大部分单片机直接接口,使用十分方便
内部采样模式的数据转换时序
对于模拟到数字量的转换,时序要求非常严格,由于MAX197的数字信号输出引脚是复用的,要正确读出转换结果,时序要求尤其重要。在一次采样开始前,可以通过单片机的8位数据线把这些控制字写入MAX197来初始化相应的参数。然后按照一定的时序进行采样和转换。图1即为内部采样模式的数据转换时序图。
图中HBEN为12位数据高4位或低8位有效控制位,当此位为高时,高4位数据有效,为低时低8位数据有效。可以通过控制这个引脚来读取12位的转换结果。
MAX197与单片机硬件接口设计
MAX197是一种通用A/D芯片,可以和多种微机接口,在此选用AT89C52单片机作为主处理器。通过AT89C52的P0.0~P0.7与MAX197的D0~D7相连,既用于输入MAX197的初始化控制字,也用于读取转换结果数据。 用AT89C52单片机的P2.7作片选信号,则MAX197的高位地址为7FH。选择MAX197为软件设置低功耗工作方式,所以置SHDN脚为高电平。本文采用外部基准电压,所以REFDJ接高电平,而REF则接外部输入参考电压。AT89C52单片机的P1.1脚用做判读高、低位数据的选择线,直接与HBEN脚相连。MAX197的INT脚可与AT89C52的INT0相连,以便实现中断,读取转换结果。
在电路中,AGND和DGND应相互独立,各种电源与模拟地之间都用0.1mF电容来消除电源的纹波。MAX197的硬件电路设计如图2所示。
软件设计
MAX197与其它A/D芯片不同之处在于它的很多硬件功能都是利用内部控制字来实现的,如通道选择、模拟信号量程、极性等。MAX197的输出数据采用无符号二进制模式(单极性输入方式)或二进制补码形式(双极性输入方式)。当CS和RD都有效时,HBEN为低电平,低8位数据被读出,HBEN为高电平,复用的高4位被读出,另外4位保持低电平(在单极性方式下),或另外4位为符号位(在双极性方式下)。
由以上可知,正确进行采集转换并读取数据的前提是必须正确设置控制字以及MAX197的各种控制信号。本设计中,进行数据采集转换前都对MAX197进行初始化,以便确定其采集转换的通道、量程和极性等。
程序的编写可以采用查询和中断两种方式,其中查询方式是在查询相应的标志成立时,执行读取;而中断则通过把MAX197的INT引脚连接到单片机的外部中断引脚来实现。本设计的软件是利用MCS-51汇编指令进行编写的,利用中断进行数据的转换和读取等操作。综上,一个典型A/D转换的控制与读取程序流程如图3所示。拍明芯城电话:400-693-8369
结语
此设计表明,以MAX197为核心的数据采集A/D转换电路具有外围电路简单、与处理器并口兼容性好、时序控制简单易懂的特点,其变换时间短(6ms),可靠性和性价比高,并且编程简单,比较适合实时性要求较高的大数据量数据采集与高速A/D转换使用。
-
RC522读卡模块通过RS232接口与51连接。
-
EOC(Ethernet Over Cable)是基于有线电视同轴电缆网使用以太网协议的接入技术。其基本原理是采用特定的介质转换技术(主要包括阻抗变换、平衡/不平衡变换等),将符合802.3系列标准的数据信号通过入户同轴电缆传输。该技术可以充分利用有线电视网络已有的入户同轴电缆资源,解决最后100m的接入问题。根据介质转换技术的不同,EOC技术又分为有源EOC技术和无源EOC技术。
无源EOC传输技术是利用有线电视信号在111~860MHz频率范围内传输,基带数据信号在0~20MHz频率范围内传输的特性,采用二/四变换、高/低通滤波等技术,把电视信号与数据信号通过合路器映射到入户同轴电缆并传送到用户家中,在用户端再通过分离器将电视信号与数据信号分离,分别传送到不同终端。该系统可为每个用户提供10Mbit/s全双工带宽。无源EOC接入技术对现有的有线电视网络系统改造工作量较小,无需增加额外的有源设备,安装使用方便,运营维护成本低,是一种经济的用户接入技术。
有源EOC是在用户楼道附近采用有源设备通过QAM/FDQAM调制、多载波OFDM等方式将有线电视信号与数字信号复合到同轴电缆网中进行传送的用户接入技术。其主要技术有HiNOC(HighperformanceNetworkOverCoax)、BIOC(BroadcastingandInteractivityOverCable)、HomePNA(HomePhonelineNetworkAlliance)、MOCA(MediaoverCoaxAlliance)等。这些技术虽然采用的调制技术和系统原理不尽相同,但网络结构和建设要求基本类似,为方便描述,统一归类为有源EOC接入技术。这一类技术能满足视频、语音、数据等三网融合业务的承载需求,此处重点介绍HiNOC。HiNOC利用有线电视网络的同轴电缆,通过增加HiNOCBridge(HB)和HiNOCModem(HM)等相关设备,实现高速和高质量多业务接入。HiNOC使用860MHz以上的空余频段传送数据信号,以16MHz频带作为一个数据传输信道,采用QAM调制方法,可自适应使用BPSK到256QAM的调制技术。系统由HiNOC头端设备和处于同一信道的HM构成,HiNOC技术支持在多个信道同时构建多个相互独立的分配网络。头端设备可以是只支持一个信道的HB,也可以是支持多个信道集成的HiNOCSwitch(HS)。拍明芯城电话:400-693-8369
-
霍尔传感器是根据霍尔效应制作的一种磁场传感器。霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔元件,广泛地应用于工业自动化技术、检测技术及信息处理等方面。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。
由霍尔效应的原理知,霍尔电势的大小取决于:Rh为霍尔常数,它与半导体材质有关;I为霍尔元件的偏置电流;B为磁场强度;d为半导体材料的厚度。
对于一个给定的霍尔器件,当偏置电流 I 固定时,UH将完全取决于被测的磁场强度B。
一个霍尔元件一般有四个引出端子,其中两根是霍尔元件的偏置电流 I 的输入端,另两根是霍尔电压的输出端。如果两输出端构成外回路,就会产生霍尔电流。一般地说,偏置电流的设定通常由外部的基准电压源给出;若精度要求高,则基准电压源均用恒流源取代。为了达到高的灵敏度,有的霍尔元件的传感面上装有高导磁系数的镀膜合金;这类传感器的霍尔电势较大,但在0.05T左右出现饱和,仅适用在低量限、小量程下使用。
在半导体薄片两端通以控制电流I,并在薄片的垂直方向施加磁感应强度为B的匀强磁场,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压。
磁场中有一个霍尔半导体片,恒定电流I从A到B通过该片。在洛仑兹力的作用下,I的电子流在通过霍尔半导体时向一侧偏移,使该片在CD方向上产生电位差,这就是所谓的霍尔电压。
拍明芯城电话:400-693-8369
霍尔电压随磁场强度的变化而变化,磁场越强,电压越高,磁场越弱,电压越低,霍尔电压值很小,通常只有几个毫伏,但经集成电路中的放大器放大,就能使该电压放大到足以输出较强的信号。若使霍尔集成电路起传感作用,需要用机械的方法来改变磁感应强度。下图所示的方法是用一个转动的叶轮作为控制磁通量的开关,当叶轮叶片处于磁铁和霍尔集成电路之间的气隙中时,磁场偏离集成片,霍尔电压消失。这样,霍尔集成电路的输出电压的变化,就能表示出叶轮驱动轴的某一位置,利用这一工作原理,可将霍尔集成电路片用作用点火正时传感器。霍尔效应传感器属于被动型传感器,它要有外加电源才能工作,这一特点使它能检测转速低的运转情况。
-
电分为直流电和交流电,DC指直流电,AC指交流电。直流电通常是24V,交流电通常是220V,工作原理都是一样的,就是通入的电压类型不一样
-
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
8位CPU·4kbytes程序存储器(ROM) (52为8K)
·128bytes的数据存储器(RAM) (52有256bytes的RAM)
·32条I/O口线·111条指令,大部分为单字节指令
·21个专用寄存器
·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
·一个全双工串行通信口
·外部数据存储器寻址空间为64kB
·外部程序存储器寻址空间为64kB
·逻辑操作位寻址功能·双列直插40PinDIP封装
·单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
拍明芯城电话:400-693-8369
-
中断是指cpu在执行某一过程中由于外界原因必须暂停现在的事情,处理别的事情,处理完了再回去执行暂停的事情。
中断的优点?
1.分时操作。
2.实时响应
3.可靠性高
中断中用到的寄存器:
IE寄存器:
1.单路开关:EX0 ET0 EX1 ET1 ES
EX0:外部中断0允许位
ET0:定时/计数器T0中断允许位
EX1:外部中断1允许位
ET1:定时/计数器T1中断允许位
ES:串行口中断允许位
2.总开关
EA:CPU中断允许位
EA=1打开
IP寄存器:
作用是选择优先级的,解决中断优先级问题。
IT0寄存器:选择低电平有效还是下降沿有效,上电默认电平触发方式,IT0=1是下降沿有效
T0 T1为定时器中断,RX TX为串行口中断
中断优先级顺序由高到低:
外部中断0(IE0)->定时/计数器0(TF0)->外部中断1(IE1)->定时/计数器1(TF1)->串行口(R1或T1)
首先响应的是优先级高的中断请求,正在中断的不会被新的中断请求打断,正在进行低优先级中断服务,能被高优先级中断请求中断。
中断函数一般形式:void 函数名() interrupt n{}
n代表中断号,中断号是编译器识别不同中断的唯一编号
中断函数和普通函数的异同:
同:函数的形式非常类似,中断响应过程和普通函数调用过程也非常相似
异:中断函数不需要声明,普通函数需要声明
使用中断函数需要遵循以下规则:
(1)中断函数不能进行参数传递
(2)在任何情况下,都不能直接调用中断函数
-
实验八步进电机控制实验
一、实验目的
1.掌握Keil C51软件与Protues软件联合仿真调试的方法;
2.掌握步进电机的工作原理及控制方法;
3.掌握步进电机控制的不同编程方法。
二、实验内容
1.用Proteus设计一四相六线步进电视控制电路。要求利用P1口作步进电机的控制端口,通过达林顿阵列ULN2003A驱动步进电机。
2.编写程序,实现步进电机的正反转控制。正反转时间分别持续10S时间,如此循环。
3.设计一可调速步进电机控制电路。P3.0~P3.2分别接案件K1~K3,其中K1为正反转控制按键,K2为加速按键,K3为减速按键,要求速度7档(1~7)可调,加减速各设3档,复位时位于4档,要求每档速度变化明显。该步进电机控制电路在以上电路的基础上自行修改。
三、实验仪器与设备
1.微机1台 2.Keil C51集成开发环境 3.Proteus仿真软件
四、实验原理及步骤
1.用Proteus设计四相六线步进电机控制电路;
2.在Keil C51中编写步进电机正反转控制程序,编译通过后,与Proteus联合测试;
3.启动仿真,观察步进电机转动是否正常
4.用Proteus设计可调速步进电机控制电路,仿真调试、运行程序并查看效果。
五、电路设计及调试
(1)实验电路
(2)程序设计与调试
#include
#define uchar unsigned char
#define uint unsigned int
uchar code zheng[]={
0xf3,0xf6,0xfc,0xf9};
uchar code fan[]={
0xf9,0xfc,0xf6,0xf3};
//uchar t;
bit flag=0;
uint shijian;
uchar temp;
void delay(uint z)
{
uint i,j;
for(i=0;i
for(j=0;j
-
随着CPU速度的迅速提高,CPU与片外存储器的速度差异越来越大,匹配CPU与外部存储器的方法通常是采用Cache或者片上存储器。微处理器中的片上存储器结构通常包含指令Cache、数据Cache或者片上存储器。对于嵌入式设备上数据密集的应用,数据Cache与片上存储器相比存在以下缺陷:①片上存储器是固定的单周期访问,可在设计时(不是运行时)研究数据访问模式;而Cache还要考虑不命中的情况,因而有可变的数据访问时间,执行时间的预测更加困难。②使用Cache执行时间的不可预测性影响编译器的优化。③细颗粒的Cache对于图像编码等的规则数据访问并不合适,因而使用Cache对于嵌入式设备可能不是最优的。对于大多数应用,使用片上存储器比使用数据Cache能耗平均节省约40%,芯片面积与时间的乘积仅为Cache的46%,因而对于嵌入式多媒体处理器,片上RAM作为数据Cache的替代,功耗更低。片上存储器的有效使用对于提高嵌入式应用的速度、降低功耗具有重要的意义。
TMS320C55x(简称为“C55x”)具有极低的功耗(0.05 mW/MIPS),非常适合手持设备,现在已经集成至TT公司专门针对3G手机的高性能多媒体处理器上。C55x片上除了24 KB的指令Cache外,还有64 KB的双端口存储器(DARAM)和96 KB的单端口存储器(SARAM)。DARAM和SARAM总共160 KB,分成20个块,每个块8 KB。本文以C55x上的视频编码器为例,讨论片上存储器的有效使用。
1 数据的片外、片上动态分配
因为片上存储器比片外存储器具有更强的数据访问能力和更低的访问功耗,所以尽可能分配数据到片上存储器;未能分配到片上的数据可在CPU处理前转移到片上;已经转移到片上的数据,应尽可能在片上保存,直到其生命期结束,以便尽可能减少数据从片外存储器到片上存储器的数据转移。在视频编码等应用中,标量、常数相对矩阵而言,通常数量较少,可以分配到片上。若分配到片外,则在运算时直接存取片外数据,CPU流水线将会停滞。直接存储器存取(DMA)可以在存储器之间、存储器与外设之间转移数据,除了DMA通道参数初始化以外,DMA转移数据和CPU处理数据可以并行进行。设置DMA通道参数需要一定的时间,用DMA来转移单个变量或常数的开销可能比直接存取更大,因此DMA适合转移具有较多数据的矩阵,并不适合片外标量的转移。包含大量元素的矩阵可以分配到片外,处理前使用DMA转移到片上存储器。
局部变量由编译器分配到软件栈上,C55x具有两个软件栈——数据栈和系统栈。C55x的栈有3种工作模式,可设置成双16比特快返回模式,以减小栈所占的存储器空间,并提高其运行速度。数据栈和系统栈在函数调用及返回时同时访问,可将这两个栈分配到DARAM块或者不同的SARAM块内。
本文中数据存储器的分配,强调从实际多媒体应用处理的基本数据块出发,分析简单、直观。多媒体算法总是将原始输入数据分成一定大小的块来处理,并产生对应该输入的最后输出。如果片上没有足够的存储器,则大量的输入数据和最后结果仅能存储在片外。对于元素较多的矩阵,可以根据算法特征,将矩阵分成若干数据子块,如H.263编码器中的宏块和搜索窗等,或者单纯根据可得到的片上存储器数最分成适当大小的子块逐个运算,然后分析数据子块的生命期和使用频率。
这里定义数据子块的生命期为首次使用到最后一次使用之间的间隔,而通常变量的生命期为定义到最后使用之间的间隔。例如,定义整型数组int MB[384],用来存储待编码宏块的数据,图像的某个宏块的数据在该宏块编码结束后,该宏块数据的生命期也就结束}然后该数组用来存储下一宏块的数据,因而变量的生命期远比存储在该变量中的某一具体数据的生命期要长。若数据子块具有不相交的生命期,则可以共享相同的片上存储器。很多数据子块在运算中多次使用,可在首次运算前转移到片上,并尽可能保存到生命期结束,即直到这些数据不再使用为止,因而这些数据仅需要一次转移。将程序执行时间看成是由很多连续的时间间隔组成的,若在下个时间间隔内需要转移新的数据到片上供CPU处理,而片上又没有足够的存储器存储这些数据,则这时将随后需要莲续频繁使用的数据保留到片上。对于随后较少使用的数据,若片外存储器还保存有该数据的备份,则这些数据可直接覆盖,等到下次使用时再从片外存储器拷贝到片上;否则,在覆盖前将数据转移到片外。在片上分配一定的缓冲区,用来存储需要再次使用的数据,可有效地减少片外存储器的访问。对于中间结果,尽量在使用前分阶段计算,使用后释放,以缩减存储中间结果的存储器需求。通过数据的这种动态分配,既可以减小或避免访问片外慢速存储器所引起的指令延迟,又可以减少片外到片上的数据转移。
在H.263视频编码器中,编码是按宏块顺序进行的。INTRA宏块编码不仅需要当前的编码宏块数据,还需要以当前宏块为中心的重建图像搜索窗。因此,根据算法特征将整帧输入图像划分成宏块,某个宏块数据在编码前转移到片上,这一宏块编码结来后就不再使用,这部分片上存储器就可释放,用来存储下一宏块数据。若在编码的同时采用DMA转移下一个宏块,则需要在片上分配两个宏块的存储器空间,用来存储编码的原始图像。
在进行INTER帧的编码时,运动搜索需要使用前一帧的重建图像作为参考。设搜索范围为[-16,+16],编码该宏块需要搜索参考图像中以编码宏块位置为中心的9个宏块,即前一帧中宏块(x,y)的重建图像,直到编码(x+1,y+1)宏块后生命期才结束。以CIF分辨率为例,不可能把一帧图像的所有重建宏块保存到生命期结束,因而部分重建图像必须暂时存储在片外。若在编码(x-1,y-1)前将重建宏块(x,y)拷贝到片上并一直保存到编码(x+l,y+1)宏块结束,则只需要在片上分配将近3个GOB的空间用来存储参考图像,就可以保证每个宏块的重建图像数据只需要一次片外到片上的转移。
半像素内插结果,用于在整像素运动搜索后作为半像素搜索的参考,因而可在整像素搜索后、半像素搜索前,围绕整像素运动矢量,对整像素运动矢量对应的匹配宏块进行内插。这样就没有必要在编码INTER帧前将整帧图像进行内插,可显著减少存储内插结果的存储器数量,从而分配在片上。
2 片上数据的存储器分配
C55x除了读指令的地址、数据总线外,还有3条用于从存储器读操作数的地址、数据总线,2条写操作数到存储器的地址、数据总线。CPU在1个周期内可完成多个操作数的读写,由于每个DARAM块或SARAM块的访问能力有限,这些操作数位于适当的DARAM或SARAM块内,才能在单周期内完成多个数据的读入或者数据的同时读写,而不产生延迟。
2.1 指令代码的分配
应用程序的指令代码可以存储在片外存储器,通过指令Cache进行访问,可以减少CPU读指令代码与CPU读/写片上存储器内数据的冲突,同时将空余更多的片上存储器空间用于数据分配。若存储程序代码和数据所需的存储器容量总和小于片上存储器容量,那么将代码分配到片外存储器与代码数据全部分配到片上存储器相比,性能降低大约10%。因此当代码和数据总和小于片上存储器容量时,应该全部分配到片上存储器。通常程序代码仅供CPU读取,并不修改;而数据经常需要同时读写,因而应尽量将代码存储在SARAM内,以便将访问能力更强的DARAM用来存储数据。在单个CPU周期内,SARAM仅有一次访问能力,同时读取指令和数据必然产生延迟,为了保证读取数据时不产生延迟,数据不能与访问这些数据的代码存储在同一SARAM块内。也就是说,当程序代码大小不是刚好整数个块时,可通过调整代码或者数据的存储器分配,避免CPU读代码与读/写数据发生冲突。
2.2 数据分配
前面已经讨论过变量和常数的分配,这里主要讨论的耗时较多的矩阵运算,通常口丁以用C语言或者汇编语言编写应用程序,C语言编译后可产生汇编代码。在汇编语言的代码中,找到处理矩阵操作数的指令,依次列举这些指令不产生延迟的矩阵分配限制,并求解满足这些限制条件的片上存储器分配。
不产生延迟的约束条件可分成两类基本约束条件:
①两变量位于DARAM块内或者两变量位于不同的块内,记为条件A(这是由SARAM块或者DARAM块访问能力产生的限制);②两变量位于不同的块内,记为条件B(这是由CPU总线的特殊结构产生的限制)。其中条件A中的两变量可在同一DARAM块内;或者不同的SARAM块内;或者一个变量在DARAM内,另一个在SARAM内。条件B指的是两变量在不同的DARAM块内;或者在不同的SARAM块内;或者一个变量在DARAM块内,另一个在SARAM块内。条件A可看成是两种条件的逻辑“或”关系:
A=B Or C
其中,条件C定义为两变量都位于DARAM块内。循环中的操作数一般表现为矩阵的一个元素,在一个应用程序中,通常有多个矩阵,矩阵中的元素应同时满足多个上述基本条件。当矩阵较多,限制条件复杂时。可以使用计算机求解数据存储器分配,以满足矩阵访问不产生延迟的条件。在这里,只需要求出满足条件的一个解,并不需要求出所有可能的解,因而对求解问题做一定的简化。
设x、y分别是矩阵X、Y的某一个元素,X、Y位于不同的块内是x、y位于不同的块内的充分条件;同样X、Y都位于DARAM内或者不同的块内是x、y都位于DARAM内或者不同的块内的充分条件。例如,X位于DARAM块,Y矩阵部分位于与X相同的DARAM内,其余位于SARAM内,也能使x、y满足条件A。
例如:N个矩阵需要同时满足N1个A类条件和N2个B类条件。从每个A类条件中任选一个条件(B或者C),最多有2N1个组合。每种组合与N2个B类条件联立求解,其中某些组合可能没有解,任意一个解都能满足不产生延迟的条件。这时任何一种组合中可能包含M(O≤M≤N1)个C类条件,其余的为B类条件。
C类条件是两个矩阵必须在DARAM块,将需要满足C类条件的所有矩阵存储器的大小相加,相同的矩阵不重复累加,结果为需要分配到DARAM的矩阵总数量。当结果超过可得到的片上DARAM数量时,这种条件组合下就没有解。
每个B类条件要求某两个矩阵必须在不同的块内,由于存在多个B类条件,事实上可能要求多个矩阵相互不在同一个块内。例如,要求矩阵A1和A2不在同一块内,矩阵A3和A1不在同一块内,矩阵A3和A2不在同一块内,这实际上是要求A1、A2、A3相互不在同一块内。若有一组矩阵,其中任何两个矩阵都必须分配在不同的存储器块内,称为“B类约束矩阵组”。若不存在一个矩阵,要求与某个B类约束矩阵组中的所有矩阵都存在B类约束关系,则称这个组为“最大B类约束矩阵组”。最大B类约束条件矩阵组中的矩阵数目就是分配这些矩阵所需的最少的存储器块数。把矩阵数最多的最大组中的各个矩阵分配到不同的存储器块中,然后按照B类约束矩阵组中矩阵数从多到少的顺序分配这个组中尚未分配的矩阵,对于具有相同矩阵数的组,则先分配未分配矩阵较少的B类约束矩阵组中的矩阵,若B类约束的矩阵同时存在C类限制,则分配到DARAM上;否则优先分配到SARAM上。若SARAM上没有足够的空间,再分配到DARAM上。最后在DARAM 上分配C类约束条件中的尚未分配的矩阵。
3 总结
上述数据存储器的分配方法只考虑了C55x中数据分配的主要方面,还有一些因素尚未涉及。例如长整型数据的分配就必须考虑数据存储器地址的对齐问题,这时数据分配的求解变得更加复杂。可以将矩阵短整型的个数规定为偶数,以简化对齐问题,所以卜述求解方法仍具有普遍的实用意义。
引 言
随着CPU速度的迅速提高,CPU与片外存储器的速度差异越来越大,匹配CPU与外部存储器的方法通常是采用Cache或者片上存储器。微处理器中的片上存储器结构通常包含指令Cache、数据Cache或者片上存储器。对于嵌入式设备上数据密集的应用,数据Cache与片上存储器相比存在以下缺陷:①片上存储器是固定的单周期访问,可在设计时(不是运行时)研究数据访问模式;而Cache还要考虑不命中的情况,因而有可变的数据访问时间,执行时间的预测更加困难。②使用Cache执行时间的不可预测性影响编译器的优化。③细颗粒的Cache对于图像编码等的规则数据访问并不合适,因而使用Cache对于嵌入式设备可能不是最优的。对于大多数应用,使用片上存储器比使用数据Cache能耗平均节省约40%,芯片面积与时间的乘积仅为Cache的46%,因而对于嵌入式多媒体处理器,片上RAM作为数据Cache的替代,功耗更低。片上存储器的有效使用对于提高嵌入式应用的速度、降低功耗具有重要的意义。
TMS320C55x(简称为“C55x”)具有极低的功耗(0.05 mW/MIPS),非常适合手持设备,现在已经集成至TT公司专门针对3G手机的高性能多媒体处理器上。C55x片上除了24 KB的指令Cache外,还有64 KB的双端口存储器(DARAM)和96 KB的单端口存储器(SARAM)。DARAM和SARAM总共160 KB,分成20个块,每个块8 KB。本文以C55x上的视频编码器为例,讨论片上存储器的有效使用。
1 数据的片外、片上动态分配
因为片上存储器比片外存储器具有更强的数据访问能力和更低的访问功耗,所以尽可能分配数据到片上存储器;未能分配到片上的数据可在CPU处理前转移到片上;已经转移到片上的数据,应尽可能在片上保存,直到其生命期结束,以便尽可能减少数据从片外存储器到片上存储器的数据转移。在视频编码等应用中,标量、常数相对矩阵而言,通常数量较少,可以分配到片上。若分配到片外,则在运算时直接存取片外数据,CPU流水线将会停滞。直接存储器存取(DMA)可以在存储器之间、存储器与外设之间转移数据,除了DMA通道参数初始化以外,DMA转移数据和CPU处理数据可以并行进行。设置DMA通道参数需要一定的时间,用DMA来转移单个变量或常数的开销可能比直接存取更大,因此DMA适合转移具有较多数据的矩阵,并不适合片外标量的转移。包含大量元素的矩阵可以分配到片外,处理前使用DMA转移到片上存储器。
局部变量由编译器分配到软件栈上,C55x具有两个软件栈——数据栈和系统栈。C55x的栈有3种工作模式,可设置成双16比特快返回模式,以减小栈所占的存储器空间,并提高其运行速度。数据栈和系统栈在函数调用及返回时同时访问,可将这两个栈分配到DARAM块或者不同的SARAM块内。
本文中数据存储器的分配,强调从实际多媒体应用处理的基本数据块出发,分析简单、直观。多媒体算法总是将原始输入数据分成一定大小的块来处理,并产生对应该输入的最后输出。如果片上没有足够的存储器,则大量的输入数据和最后结果仅能存储在片外。对于元素较多的矩阵,可以根据算法特征,将矩阵分成若干数据子块,如H.263编码器中的宏块和搜索窗等,或者单纯根据可得到的片上存储器数最分成适当大小的子块逐个运算,然后分析数据子块的生命期和使用频率。
这里定义数据子块的生命期为首次使用到最后一次使用之间的间隔,而通常变量的生命期为定义到最后使用之间的间隔。例如,定义整型数组int MB[384],用来存储待编码宏块的数据,图像的某个宏块的数据在该宏块编码结束后,该宏块数据的生命期也就结束}然后该数组用来存储下一宏块的数据,因而变量的生命期远比存储在该变量中的某一具体数据的生命期要长。若数据子块具有不相交的生命期,则可以共享相同的片上存储器。很多数据子块在运算中多次使用,可在首次运算前转移到片上,并尽可能保存到生命期结束,即直到这些数据不再使用为止,因而这些数据仅需要一次转移。将程序执行时间看成是由很多连续的时间间隔组成的,若在下个时间间隔内需要转移新的数据到片上供CPU处理,而片上又没有足够的存储器存储这些数据,则这时将随后需要莲续频繁使用的数据保留到片上。对于随后较少使用的数据,若片外存储器还保存有该数据的备份,则这些数据可直接覆盖,等到下次使用时再从片外存储器拷贝到片上;否则,在覆盖前将数据转移到片外。在片上分配一定的缓冲区,用来存储需要再次使用的数据,可有效地减少片外存储器的访问。对于中间结果,尽量在使用前分阶段计算,使用后释放,以缩减存储中间结果的存储器需求。通过数据的这种动态分配,既可以减小或避免访问片外慢速存储器所引起的指令延迟,又可以减少片外到片上的数据转移。
在H.263视频编码器中,编码是按宏块顺序进行的。INTRA宏块编码不仅需要当前的编码宏块数据,还需要以当前宏块为中心的重建图像搜索窗。因此,根据算法特征将整帧输入图像划分成宏块,某个宏块数据在编码前转移到片上,这一宏块编码结来后就不再使用,这部分片上存储器就可释放,用来存储下一宏块数据。若在编码的同时采用DMA转移下一个宏块,则需要在片上分配两个宏块的存储器空间,用来存储编码的原始图像。
在进行INTER帧的编码时,运动搜索需要使用前一帧的重建图像作为参考。设搜索范围为[-16,+16],编码该宏块需要搜索参考图像中以编码宏块位置为中心的9个宏块,即前一帧中宏块(x,y)的重建图像,直到编码(x+1,y+1)宏块后生命期才结束。以CIF分辨率为例,不可能把一帧图像的所有重建宏块保存到生命期结束,因而部分重建图像必须暂时存储在片外。若在编码(x-1,y-1)前将重建宏块(x,y)拷贝到片上并一直保存到编码(x+l,y+1)宏块结束,则只需要在片上分配将近3个GOB的空间用来存储参考图像,就可以保证每个宏块的重建图像数据只需要一次片外到片上的转移。
半像素内插结果,用于在整像素运动搜索后作为半像素搜索的参考,因而可在整像素搜索后、半像素搜索前,围绕整像素运动矢量,对整像素运动矢量对应的匹配宏块进行内插。这样就没有必要在编码INTER帧前将整帧图像进行内插,可显著减少存储内插结果的存储器数量,从而分配在片上。
2 片上数据的存储器分配
C55x除了读指令的地址、数据总线外,还有3条用于从存储器读操作数的地址、数据总线,2条写操作数到存储器的地址、数据总线。CPU在1个周期内可完成多个操作数的读写,由于每个DARAM块或SARAM块的访问能力有限,这些操作数位于适当的DARAM或SARAM块内,才能在单周期内完成多个数据的读入或者数据的同时读写,而不产生延迟。
2.1 指令代码的分配
应用程序的指令代码可以存储在片外存储器,通过指令Cache进行访问,可以减少CPU读指令代码与CPU读/写片上存储器内数据的冲突,同时将空余更多的片上存储器空间用于数据分配。若存储程序代码和数据所需的存储器容量总和小于片上存储器容量,那么将代码分配到片外存储器与代码数据全部分配到片上存储器相比,性能降低大约10%。因此当代码和数据总和小于片上存储器容量时,应该全部分配到片上存储器。通常程序代码仅供CPU读取,并不修改;而数据经常需要同时读写,因而应尽量将代码存储在SARAM内,以便将访问能力更强的DARAM用来存储数据。在单个CPU周期内,SARAM仅有一次访问能力,同时读取指令和数据必然产生延迟,为了保证读取数据时不产生延迟,数据不能与访问这些数据的代码存储在同一SARAM块内。也就是说,当程序代码大小不是刚好整数个块时,可通过调整代码或者数据的存储器分配,避免CPU读代码与读/写数据发生冲突。
2.2 数据分配
前面已经讨论过变量和常数的分配,这里主要讨论的耗时较多的矩阵运算,通常口丁以用C语言或者汇编语言编写应用程序,C语言编译后可产生汇编代码。在汇编语言的代码中,找到处理矩阵操作数的指令,依次列举这些指令不产生延迟的矩阵分配限制,并求解满足这些限制条件的片上存储器分配。
不产生延迟的约束条件可分成两类基本约束条件:
①两变量位于DARAM块内或者两变量位于不同的块内,记为条件A(这是由SARAM块或者DARAM块访问能力产生的限制);②两变量位于不同的块内,记为条件B(这是由CPU总线的特殊结构产生的限制)。其中条件A中的两变量可在同一DARAM块内;或者不同的SARAM块内;或者一个变量在DARAM内,另一个在SARAM内。条件B指的是两变量在不同的DARAM块内;或者在不同的SARAM块内;或者一个变量在DARAM块内,另一个在SARAM块内。条件A可看成是两种条件的逻辑“或”关系:
A=B Or C
其中,条件C定义为两变量都位于DARAM块内。循环中的操作数一般表现为矩阵的一个元素,在一个应用程序中,通常有多个矩阵,矩阵中的元素应同时满足多个上述基本条件。当矩阵较多,限制条件复杂时。可以使用计算机求解数据存储器分配,以满足矩阵访问不产生延迟的条件。在这里,只需要求出满足条件的一个解,并不需要求出所有可能的解,因而对求解问题做一定的简化。
设x、y分别是矩阵X、Y的某一个元素,X、Y位于不同的块内是x、y位于不同的块内的充分条件;同样X、Y都位于DARAM内或者不同的块内是x、y都位于DARAM内或者不同的块内的充分条件。例如,X位于DARAM块,Y矩阵部分位于与X相同的DARAM内,其余位于SARAM内,也能使x、y满足条件A。
例如:N个矩阵需要同时满足N1个A类条件和N2个B类条件。从每个A类条件中任选一个条件(B或者C),最多有2N1个组合。每种组合与N2个B类条件联立求解,其中某些组合可能没有解,任意一个解都能满足不产生延迟的条件。这时任何一种组合中可能包含M(O≤M≤N1)个C类条件,其余的为B类条件。
C类条件是两个矩阵必须在DARAM块,将需要满足C类条件的所有矩阵存储器的大小相加,相同的矩阵不重复累加,结果为需要分配到DARAM的矩阵总数量。当结果超过可得到的片上DARAM数量时,这种条件组合下就没有解。
每个B类条件要求某两个矩阵必须在不同的块内,由于存在多个B类条件,事实上可能要求多个矩阵相互不在同一个块内。例如,要求矩阵A1和A2不在同一块内,矩阵A3和A1不在同一块内,矩阵A3和A2不在同一块内,这实际上是要求A1、A2、A3相互不在同一块内。若有一组矩阵,其中任何两个矩阵都必须分配在不同的存储器块内,称为“B类约束矩阵组”。若不存在一个矩阵,要求与某个B类约束矩阵组中的所有矩阵都存在B类约束关系,则称这个组为“最大B类约束矩阵组”。最大B类约束条件矩阵组中的矩阵数目就是分配这些矩阵所需的最少的存储器块数。把矩阵数最多的最大组中的各个矩阵分配到不同的存储器块中,然后按照B类约束矩阵组中矩阵数从多到少的顺序分配这个组中尚未分配的矩阵,对于具有相同矩阵数的组,则先分配未分配矩阵较少的B类约束矩阵组中的矩阵,若B类约束的矩阵同时存在C类限制,则分配到DARAM上;否则优先分配到SARAM上。若SARAM上没有足够的空间,再分配到DARAM上。最后在DARAM 上分配C类约束条件中的尚未分配的矩阵。
3 总结
上述数据存储器的分配方法只考虑了C55x中数据分配的主要方面,还有一些因素尚未涉及。例如长整型数据的分配就必须考虑数据存储器地址的对齐问题,这时数据分配的求解变得更加复杂。可以将矩阵短整型的个数规定为偶数,以简化对齐问题,所以卜述求解方法仍具有普遍的实用意义。
-
共阳数码管要用PNP来驱动的原因是:
共阳数码管的个二极管的高电位端通过三极管接在驱动电平上,即接在高电位上,所以要把电流从二极管的另一端流出。而7个二极管必须接在三极管的集电极上才能满足放大的需求,如果用NPN管,就只能接在发射级上,不满足要求。
led数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。
-
便携式设备的ESD静电保护十分重要,而是一种十分有效的保护器件,与其它器件相比有其独特的优势,但在应用时应当针对不同的保护对象来选用器件,因为不同的端口可能受到的静电冲击有所不同,不同器件要求的保护程度也有不同。要注意相应的参数鉴别以及各个生产商的不同设计,同时还要进行合理的PCB 布局。优恩半导体介绍在便携式设备的ESD静电保护中如何应用TVS管器件。
便携式设备如笔记本电脑、手机、PDA、MP3播放器等,由于频繁与人体接触极易受到静电放电(ESD)的冲击,如果没有选择合适的保护器件,可能会造成机器性能不稳定,或者损坏。更坏的情况是查不出确切的原因,使用户误认为是产品质量问题而损坏企业信誉。
一般情况下,对此类设备暴露在外面可能与人体接触的端口都要求进行防静电保护,如键盘、电源接口、数据口、I/O 口等等。现在比较通用的ESD 标准是IEC61000-4-2,应用人体静电模式,测试电压的范围为2kV~15kV(空气放电),峰值电流最高为20A/ns,整个脉冲持续时间不超过60ns。在这样的脉冲下所产生的能量总共不超过几百个微焦尔,但却足以损坏敏感元器件。
便携式设备所采用的IC 器件大多是高集成度、小体积产品,精密的加工工艺使硅晶氧化层非常薄,因而更易击穿,有的在20V 左右就会受到损伤。传统的保护方法已不再普遍适用,有的甚至还会造成对设备性能的干扰。
TVS管的特点:
可用于便携式设备的ESD保护器件有很多,例如设计人员可用分立器件搭建保护回路,但由于便携设备对于空间的限定以及避免回路自感,这种方法已逐渐被更加集成化的器件所替代。多层金属氧化物器件、陶瓷电容还有二极管都可以有效地进行防护,它们的特性及表现各有不同,TVS管在此类应用中的独特表现为其赢得了越来越大的市场。
TVS管最显著的特点一是反应迅速,使瞬时脉冲在没有对线路或器件造成损伤之前就被有效地遏制,二是截止电压比较低,更适用于电池供电的低电压回路环境。另外对TVS管设计的改进使其具有更低的漏电流和结电容,因而在处理高速率传导回路的静电冲击时有更理想的性能表现。
TVS管的优势:
TVS管与齐纳二极管:与传统的齐纳二极管相比,TVS管P/N 结面积更大,这一结构上的改进使TVS具有更强的高压承受能力,同时也降低了电压截止率,因而对于保护手持设备低工作电压回路的安全具有更好效果。
TVS管与陶瓷电容:很多设计人员愿意采用表面贴装的陶瓷电容作ESD 保护,不但便宜而且设计简便,但这类器件对高压的承受力却比较弱。5kV 的冲击会造成约10%陶瓷电容失效,到10kV 时,损坏率达到60%,而TVS管可以承受15kV 电压。在手持设备的使用过程中,由于与人体频繁接触,各个端口必须至少能够承受8kV 接触冲击(IEC61000-4-2 标准),可见使用TVS管可以有效保证最终产品的合格率。
TVS管与MLV:多层金属氧化物结构器件(MLV)也可以进行有效的瞬时高压冲击抑制,此类器件具有非线性电压-电流(阻抗表现)关系,截止电压可达最初中止电压的2~3 倍,这种特性适合用于对电压不太敏感的线路和器件的保护,如电源回路。而TVS管具有更好的电压截止因子,同时还具有较低的电容,这一点对于手持设备的高频端口非常重要,因为过高的电容会影响数据传输,造成失真或是降级。
TVS管的各种表面封装均适合流水线装配的要求,而且芯片结构便于集成其它的功能,如EMI 和RFI过滤保护等,可有效降低器件成本,优化整体设计。
另一个不能忽略的特点是二极管可以很方便地与其它器件集成在一个芯片上,现有很多将EMI 过滤和RFI 防护等功能与TVS 集成在一起的器件,不但减少设计所采用的器件数目降低成本,而且也避免PCB板上布线时易诱发的伴生自感。
ESD 应用:
1.底部连接器的应用
底部连接器设计广泛应用在移动消费类产品上,目前市场上应用产品主要为移动电话、PDA、DSC(数码相机)以及MP3 等便携产品。由于是直流回路,可选用高电容器件。此端口可能会受到高能量的冲击,可以选用集成了TVS 和过流保护功能的器件。
2. RJ-45(10/100M 以太网网络)
RJ-45 接口广泛应用在网络连接的接口设备上,典型的应用就是10/100M 以太网网络。
3. 视频线路的保护
目前视频常见的输出端口设计有 D-SUB、DVI(28 线)、SCART(19 线)和D-TERMINAL(主要日系产品在用)。视频数据线具有高数据传输率,数据传输率高达480Mbps,有的视频数据传输率达到1G以上,因而要选择低电容LCTVS,它通常是将一个低电容二极管与TVS管串联,以降低整个线路的电容(可低于3pF),达到高速率回路的要求。
4. SIM 卡数据线路保护
SIM 卡数据线路保护一直是各个公司的产品重点,而且专门为此类端口设计的集ESD(TVS)/EMI/RFI 防护于一个芯片的器件,充分体现了片式器件的无限集成方案。在针对不同用途选择器件时,要避免使器件工作在其设计参数极限附近,还应根据被保护回路的特征及可能承受ESD 冲击的特征选用反应速度足够快、敏感度足够高的器件,这对于有效发挥保护器件的作用十分关键,另外集成了其它功能的器件也应当首先考虑。
5. USB 保护
一般 USB 的ESD 保护分上行和下行两种情况。
6. 音频/扬声器数据线路保护
在音频数据线路保护方面,由于音频回路的信号速率比较低,对器件电容的要求不太高,100pF左右都是可以接受的。有的手机设计中将耳机和麦克风合在一起,有的则是分立线路。前一种情况可以选择单路TVS,而后一种情况如果两个回路是邻近的,则可以选用多路TVS 阵列,只用一个器件就能完成两个回路的保护。
7. 按键/开关
对于按键和开关回路,这些回路的数据率很低,对器件的电容没有特殊要求,用普通的TVS 阵列都可以胜任。
在选择 TVS管时,必须注意以下几个参数的选择:
1. 最小击穿电压VBR 和击穿电流IR。VBR 是TVS 最小的击穿电压,在25℃时,低于这个电压TVS是不会发生雪崩的。当TVS 流过规定的1mA 电流(IR)时,加于TVS 两极的电压为其最小击穿电压VBR。按TVS的VBR与标准值的离散程度,可把VBR分为5%和10%两种。对于5%的VBR来说,VWM=0.85VBR;对于10%的VBR 来说,VWM=0.81VBR。为了满足IEC61000-4-2 国际标准,TVS管必须达到可以处理最小8kV(接触)和15kV(空气)的ESD冲击。
2. 最大反向漏电流ID 和额定反向关断电压VWM。VWM 这是二极管在正常状态时可承受的电压,此电压应大于或等于被保护电路的正常工作电压,否则二极管会不断截止回路电压;但它又需要尽量与被保护回路的正常工作电压接近,这样才不会在TVS 工作以前使整个回路面对过压威胁。当这个额定反向关断电压VWM 加于TVS 的两极间时它处于反向关断状态,流过它的电流应小于或等于其最大反向漏电流ID。
3. 最大箝位电压VC 和最大峰值脉冲电流IPP。当持续时间为20mS 的脉冲峰值电流IPP 流过TVS 时,在其两端出现的最大峰值电压为VC。VC、IPP 反映了TVS 的浪涌抑制能力。VC 与VBR 之比称为箝位因子,一般在1.2~1.4 之间。VC 是二极管在截止状态提供的电压,也就是在ESD 冲击状态时通过TVS的电压,它不能大于被保护回路的可承受极限电压,否则器件面临被损伤的危险。
4. Pppm 额定脉冲功率,这是基于最大截止电压和此时的峰值脉冲电流。对于手持设备,一般来说500W的TVS 就足够了。最大峰值脉冲功耗PM 是TVS 能承受的最大峰值脉冲功耗值。在给定的最大箝位电压下,功耗PM 越大,其浪涌电流的承受能力越大。在给定的功耗PM 下,箝位电压VC 越低,其浪涌电流的承受能力越大。另外,峰值脉冲功耗还与脉冲波形、持续时间和环境温度有关。而且,TVS 所能承受的瞬态脉冲是不重复的,器件规定的脉冲重复频率(持续时间与间歇时间之比)为0.01%。如果电路内出现重复性脉冲,应考虑脉冲功率的累积,有可能损坏TVS。
5. 电容量C。电容量C 是由TVS 雪崩结截面决定的,是在特定的1MHz 频率下测得的。C 的大小与TVS 的电流承受能力成正比,C 太大将使信号衰减。因此,C 是数据接口电路选用TVS 的重要参数。电容对于数据/信号频率越高的回路,二极管的电容对电路的干扰越大,形成噪声或衰减信号强度,因此需要根据回路的特性来决定所选器件的电容范围。
PCB 设计时的考虑
PCB layout 对防静电影响重大,所以必须在layout 前就得考虑ESD 防护问题,而不是在板子出来后才加以修正。加TVS diode 绝对是简单而实用的防ESD 方式,但它还是需要在画线路图时就选好具体料号或封装,并在PCB 上留好位置,一旦在测试当中没办法通过时就可以把它加上再测,当然,如果不加TVS 也能通过那就更好了。如果没留位置且测试通不过,这是件麻烦事。TVS 应用时需要考虑layout,需要考虑泄放路径的最短化,再好的TVS 如果layout 不好,它同样没办法起到防ESD 的作用。不管选择怎样的TVS 器件,它们在电路板上的布局非常重要。TVS 布局前的导线长度应该减到最小,因为快速(0.7ns)ESD 放电电流在电感性布线上感应出很高的电压尖峰,影响ESD 保护的性能。另外,快速ESD 脉冲可能在电路板上相邻(平行)导线间产生感应电压。如果上述情况发生,由于将不会得到保护,因为感应电压路径将成为另一条让浪涌到达IC 的路径。因此,被保护的输入线不应该被放置在其它单独、未受保护的走线旁边。推荐的ESD 抑制器件PCB 布局方案应该是:应尽可能的滤除所有的I/O 口的干扰信号,靠近连接器/触点PCB 侧。图一是PCB 布局的建议.走线时,尽可能缩短高频元器件之间的连线,设法减少它们的分布参数和相互间的电磁干扰;输入输出端用的导线应尽量避免相邻平行。最好加线间地线,以免发生反馈藕合。图二是布线时的优化建议。对于便携式设备来说,各类集成电路的复杂性和精密度的提高使它们对ESD 也更加敏感,以往的通用回路设计也不再适合。合理的PCB 布局最重要的是要在使用TVS管保护ESD 损害的同时避免自感。ESD 设计很可能会在回路中引起寄生自感,会对回路有强大的电压冲击,导致超出IC的承受极限而造成损坏。负载产生的自感电压与电源变化强度成正比,ESD 冲击的瞬变特征易于诱发高强自感。减小寄生自感的基本原则是尽可能缩短分流回路,必须考虑到包括接地回路、TVS 和被保护线路之间
的回路,以及由接口到TVS 的通路等所有因素。所以,TVS 器件应与接口尽量接近(直接就近泻放ESD 干扰,避免串入后续电路),与被保护线路尽量接近(画版时原则上要靠近被保护的芯片),这样才会减少自感耦合到其它邻近线路上的机会。
在电路板设计中还应注意以下几点:
1.避免在保护线路附近走比较关键的信号线;
2.尽量将接口安排在同一个边上;
3.避免被保护回路和未实施保护的回路并联;
4.各类信号线及其馈线所形成的回路所环绕面积要尽量小,必要时可考虑改变信号线或接地线的位置;
5.将接口信号线路和接地线路直接接到保护器件上,然后再进入回路的其它部分;
6.将复位、中断、控制信号远离输入/输出口,远离PCB 的边缘;
7.在可能的地方都加入接地点;
8. 采用高集成度器件,二极管阵列不但可以大大节约线路板上的空间,而且减少了由于回路复杂可能诱发的寄生性线路自感的影响。
-
先说说,从图上可以看出周期为20ms,冠丽控实际是6通控,但预留两通没有使用。通道的高电平区间为0.765~1.6ms 低电平时间为0.395ms引导波形的高电平 时间为10.165ms。
我的单片机是 11.0592MHZ 这样算的话, 显示的值 应该是 706 到 1491 之间,中立位为 1100正好和理论值相符。这里在提点单片机相关的知识,是低电平触 发中断,我这里用的是while(int0==0)来等待高电平 的到来。不知道这样做是否合理,不过实践看来还是可以的。
明说一点,程序中 LCD* 都在1602.h文件中,自己加个1602的头文件即可。
下面是程序的主要部分
#include
#include "1602.h"
unsigned char channel=0,i=0;
unsigned int xdata PPM_channel1[10],PPM_channel2[10],PPM_channel3[10],PPM_channel4[10],PPM_channel5[10],PPM_channel6[10];
bit Timer0_OverFlowFlag=0;//定时器0的溢出标志,如果溢出,则有问题;
unsigned char qian,bai,shi,ge;
void DepartNum(unsigned int temp) ;
unsigned int filter(unsigned int *s); //这不函数的作用?
void delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i
{
for(j=0;j
-
它是由数据线 SDA 和时钟 SCL 构成的串行总线, 可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。用I2C通信的芯片最常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,还有一些其它功能的芯片。
(这是EEPROM芯片的接法)
(对应的单片机引脚)
I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号: 接收数据的 IC 在接收到 8bit 数据后, 向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
二.SPI
SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。这个接口较快,可以传输较连续的数据。SPI要想连接多个从设备,就需要给每个从设备配备一根片选信号。如果要可以实现全双工,也是需要多加一根数据线(MOSI MISO)。SPI通信芯片的引脚名称不一定都是这几个名称,可能还有会别的名称,但是意思是一样的,例如MOSI引脚的意思是“主机输出从机输入”,某个SPI接口的芯片就有可能会写成SDI,因为这个SPI器件是作为从机的,所以它的SDI的意思就是“从机数据输入引脚”。
SPI通信过程为:把CS引脚拉低,然后SCK输出时钟,然后就可以在MOSI引脚上输出数据,同时可以在MISO上获得数据了。
(这是一个SPI FLASH芯片,DO是MISO,DI是MOSI,CLK是SCK,功能一样,叫法不一样而已)
(单片机接法)
下面主要总结一下2种总线的异同点:
1 iic总线不是全双工,2根线SCL SDA。spi总线实现全双工,4根线SCK CS MOSI MISO
2 iic总线是多主机总线,通过SDA上的地址信息来锁定从设备。spi总线只有一个主设备,主设备通过CS片选来确定从设备
3 iic总线传输速度在100kbps-4Mbps。spi总线传输速度更快,可以达到30MHZ以上。
4 iic总线空闲状态下SDA SCL都是高电平。spi总线空闲状态MOSI MISO也都是 SCK是有CPOL决定的
5 iic总线scl高电平时sda下降沿标志传输开始,上升沿标志传输结束。spi总线cs拉低标志传输开始,cs拉高标志传输结束
6 iic总线是SCL高电平采样。spi总线因为是全双工,因此是沿采样,具体要根据CPHA决定。一般情况下master device是SCK的上升沿发送,下降沿采集
7 iic总线和spi总线数据传输都是MSB在前,LSB在后(串口是LSB在前)
8 iic总线和spi总线时钟都是由主设备产生,并且只在数据传输时发出时钟
9 iic总线读写时序比较固定统一,设备驱动编写方便。spi总线不同从设备读写时序差别比较大,因此必须根据具体的设备datasheet来实现读写,相对复杂一些。
如果您觉得对您有帮助请关注我的公众号“老赵a科技”我们一起学习
参考2:https://www.cnblogs.com/deng-tao/p/6004280.html
1、什么是SPI?
SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一
种同步串行接口技术,是一种高速的,全双工,同步的通信总线。
2、SPI优点
支持全双工通信
通信简单
数据传输速率块
3、缺点
没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较在数据
可靠性上有一定的缺陷。
4、特点
1):高速、同步、全双工、非差分、总线式
2):主从机通信模式
5、协议通信时序详解
1):SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多
个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共
有的,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS(片选)。
(1)SDO/MOSI – 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设
备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需
要将从设备对应的片选引脚电平拉低或者是拉高。
2):需要说明的是,我们SPI通信有4种不同的模式,不同的从设备可能在出厂是就是配
置为某种模式,这是不能改变的;但我们的通信双方必须是工作在同一模式下,所以我们
可以对我们的主设备的SPI模式进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来
控制我们主设备的通信模式,具体如下:
Mode0:CPOL=0,CPHA=0
Mode1:CPOL=0,CPHA=1
Mode2:CPOL=1,CPHA=0
Mode3:CPOL=1,CPHA=1
时钟极性CPOL是用来配置SCLK的电平出于哪种状态时是空闲态或者有效态,时钟相位CPHA
是用来配置数据采样是在第几个边沿:
CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿
例如:
CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,也就是 SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送是在下降沿。
CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,也就是SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送是在上升沿。
CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,也就是 SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,也就是 SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送是在下降沿。
需要注意的是:我们的主设备能够控制时钟,因为我们的SPI通信并不像UART或者IIC通信 那样有专门的通信周期,有专门的通信起始信号,有专门的通信结束信号;所以我们的
SPI协议能够通过控制时钟信号线,当没有数据交流的时候我们的时钟线要么是 保持高电平要么是保持低电平。
6、内部工作机制
SSPSR 是 SPI 设备内部的移位寄存器(Shift Register). 它的主要作用是根据 SPI
时钟信号状态, 往 SSPBUF 里移入或者移出数据, 每次移动的数据大小由 Bus-Width 以
及 Channel-Width 所决定.
-
void InitPort(void)
{
P0M1=0x00;
P0M0=0xff;
P24=1;
P2M1=0x10;
P2M0=0x88;
P41=1;
P4M1=0x02;
P4M0=0x04;
}
-
串口编程涉及很多问题,对于实时采集系统,串口编程必须服从系统定时器采集节拍,这样通过事件方式接收串口然后延时就会带来很多问题。
串口数据通常不是一次到来,对于一个较为长的数据,可能分两三次触发串口事件,如果每次事件触发时都要延时(采用system.threading.thread.sleep(500)延时500毫秒),造成线程阻塞,三次下来就延时了1500毫秒,对于需要定时节拍的采集,势必带来很大影响。所以考虑分次存储,然后通过终止位来判断读取是否结束。在接收函数逻辑中间可以采用如下参考方式。 拍明芯城电话:400-693-8369
private void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] bytin = new byte[this.comPort.BytesToRead];
comPort.Read(bytin, 0, bytin.Length);//读取串口数据
for (int i = 0; i < bytin.Length; i++)
bufferList.Add(bytin[i]);//按序存入缓存数组
//当缓存数据位数等于预计位数时认为接收完整
if (bufferList.Count==this.recieveByteNum)
{
IEnumerator ie=bufferList.GetEnumerator();
byte[] tmpbyte=new byte[this.recieveByteNum];
for(int i=0;ie.MoveNext();i++)
tmpbyte[i]=(byte)ie.Current;
doSomethingElse();
}
}
-
单片机现在可谓是铺天盖地,种类繁多,让开发者们应接不暇,发展也是相当的迅速,从上世纪80年代,由当时的4位8位发展到现在的各种高速单片机……
各个厂商们也在速度、内存、功能上此起彼伏,参差不齐~~同时涌现出一大批拥有代表性单片机的厂商:Atmel、TI、ST、MicroChip、ARM…国内的宏晶STC单片机也是可圈可点…
下面为大家带来51、MSP430、TMS、STM32、PIC、AVR、STC单片机之间的优缺点比较及功能体现……
51单片机
应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。
51单片机之所以成为经典,成为易上手的单片机主要有以下特点:
特性:
1. 从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
【本文转载自网络,版权归原作者所有,如有侵权请联系删除】
2. 同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便,
3. 乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,作乘法时还得编上一段子程序调用,十分不便。
缺点:(虽然是经典但是缺点还是很明显的)
1. AD、EEPROM等功能需要靠扩展,增加了硬件和软件负担
2. 虽然I/O脚使用简单,但高电平时无输出能力,这也是51系列单片机的最大软肋
3. 运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利
4. 51保护能力很差,很容易烧坏芯片
应用范围:
目前在教学场合和对性能要求不高的场合大量被采用
使用最多的器件:8051、80C51
MSP430单片机
MSP430系列单片机是德州仪器1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。其迅速发展和应用范围的不断扩大,主要取决于以下的特点…
特性:
1. 强大的处理能力,采用了精简指令集(RISC)结构,具有丰富的寻址方式( 7 种源操作数寻址、 4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns 。这些特点保证了可编制出高效率的源程序
2. 在运算速度方面,能在 8MHz 晶体的驱动下,实现 125ns 的指令周期。 16 位的数据宽度、 125ns 的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如 FFT 等)
3. 超低功耗方面,MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。电源电压采用的是 1.8~3.6V 电压。因而可使其在 1MHz 的时钟条件下运行时, 芯片的电流会在 200~400uA 左右,时钟关断模式的最低功耗只有 0.1uA
缺点:
1. 个人感觉不容易上手,不适合初学者入门,资料也比较少,只能跑官网去找
2. 占的指令空间较大,因为是16位单片机,程序以字为单位,有的指令竟然占6
个字节。虽然程序表面上简洁, 但与pic单片机比较空间占用很大
应用范围:
在低功耗及超低功耗的工业场合应用的比较多
使用最多的器件:MSP430F系列、MSP430G2系列、MSP430L09系列
TMS单片机
这里也提一下TMS系列单片机,虽不算主流。由TI推出的8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合。虽然没STM32那么优秀,也没MSP430那么张扬,但是TMS370C系列单片机提供了通过整合先进的外围功能模块及各种芯片的内存配置,具有高性价比的实时系统控制。同时采用高性能硅栅CMOS EPROM和EEPROM技术实现。低工作功耗CMOS技术,宽工作温度范围,噪声抑制,再加上高性能和丰富的片上外设功能,使TMS370C系列单片机在汽车电子,工业电机控制,电脑,通信和消费类具有一定的应用。
STM32单片机
由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名…其强大的功能主要表现在:
特性:
1.内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法
2.存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器
3.时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振
4、调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口
使用最多的器件:STM32F103系列、STM32 L1系列、STM32W系列。
PIC单片机
PIC单片机系列是美国微芯公司(Microship)的产品,共分三个级别,即基本级、中级、高级,是当前市场份额增长最快的单片机之一,CPU采用RISC结构,分别有33、35、58条指令,属精简指令集,同时采用Harvard双总线结构,运行速度快,它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期,这也是高效率运行的原因之一,此外PIC单片机之所以成为一时非常热的单片机不外乎以下特点:
特点:
1. 具有低工作电压、低功耗、驱动能力强等特点。PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。I/O脚增加了用于设置输入或输出状态的方向寄存器,从而解决了51系列I/O脚为高电平时同为输入和输出的状态。
2. 当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点
3. 它可以直接驱动数码管显示且外电路简单。它的A/D为10位,能满足精度要求。具有在线调试及编程(ISP)功能。
不足之处:
其专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现,但是在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。数据的传送和逻辑运算基本上都得通过工作寄存器W(相当于51系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送,因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中的朋友应该深有体会
使用最多的器件:PIC16F873、PIC16F877
AVR单片机
AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故最短指令执行时间为250~125ns。AVR单片机能成为最近仍是比较火热的单片机,主要的特点:
特点:
1. AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像51系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行,而在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列出色些
2. AVR的专用寄存器集中在00~3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。AVR的片内RAM的地址区间为0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器R0~R31就显得不够用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。
3. AVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。这点虽不如PIC,但比51系列还是要优秀的…
缺点:
1. 是没有位操作,都是以字节形式来控制和判断相关寄存器位的
2. C语言与51的C语言在写法上存在很大的差异,这让从开始学习51单片机的朋友很不习惯
3. 通用寄存器一共32个(R0~R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接与立即数打交道,显然要优于前者。
使用最多的器件:ATUC64L3U、ATxmega64A1U、AT90S8515
STC单片机
说到STC单片机有人会说到,STC也能算主流,估计要被喷了~~我们基于它是国内还算是比较不错的单片机来说。STC单片机是宏晶生产的单时钟/机器周期的单片机,说白了STC单片机是51与AVR的结合体,有人说AVR是51的替代单片机,但是AVR单片机在位控制和C语言写法上存在很大的差异。而STC单片机洽洽结合了51和AVR的优点,虽然功能不及AVR那么强大,但是在AVR能找到的功能,在STC上基本都有,同时STC单片机是51内核,这给以51单片机为基础的工程师们提供了极大的方便,省去了学习AVR的时间,同时也不失AVR的各种功能…
STC单片机是高速、低功耗、超强抗干扰的新一代8051单片机51单片机,指令代码完全兼容传统8051,但速度快8~12倍,内部集成MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机电机 的供应商控制,强干扰场合,成为继51单片机后一个全新系列单片机…
特性:
1. 下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最著名的要属于杜老师的那个视频了,好多对单片机有兴趣的朋友都是通过这个视频入门的,同时具有宽电压:5.5~3.8V,2.4~3.8V, 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)
2. STC单片机具有在应用编程,调试起来比较方便;带有10位AD、内部EEPROM、
可在1T/机器周期下工作,速度是传统51单片机的8~12倍,价格也较便宜
3. 4 通道捕获/比较单元,STC12C2052AD系列为2通道,也可用来再实现4个定时器或4个外部中断,2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器,具有硬件看门狗、高速SPI通信端口、全双工异步串行口,兼容普通8051的串口,同时还具有先进的指令集结构,兼容普通8051指令集
PS:STC单片机功能虽不及AVR、STM32强大,价格也不及51和ST32便宜,但是这些并并不重要,重要的是这属于国产单片机比较出色的单片机,但愿国产单片机能一路长虹…
使用最多的器件:STC12C2052AD
Freescale单片机
主要针对S08,S12这类单片机,当然Freescale单片机远非于此。Freescale系列单片机采用哈佛结构和流水线指令结构,在许多领域内都表现出低成本,高性能的的特点,它的体系结构为产品的开发节省了大量时间。此外Freescale提供了多种集成模块和总线接口,可以在不同的系统中更灵活的发挥作用!Freescale单片机的特有的特点如下:
1.全系列:从低端到高端,从8位到32位全系列应有尽有,其推出的8位/32位管脚兼容的QE128,可以从8位直接移植到32位,弥补单片机业界8/32 位兼容架构中缺失的一环
2.多种系统时钟模块:三种模块,七种工作模式。多种时钟源输入选项,不同的mcu具有不同的时钟产生机制,可以是RC振荡器,外部时钟或晶振,也可以是内部时钟,多数CPU同时具有上述三种模块!可以运行在FEI,FEE,FBI,FBILP,FBE,FBELP,STOP这七种工作模式
3.多种通讯模块接口:Freescale单片机几乎在内部集成各种通信接口模块:包括串行通信接口模块SCI,多主I2C总线模块,串行外围接口模块 SPI,MSCAN08控制器模块,通用串行总线模块(USB/PS2)
4.具有更多的可选模块:具有LCD驱动模块,带有温度传感器,具有超高频发送模块,含有同步处理器模块,含有同步处理器的MCU还具有屏幕显示模块OSD,还有少数的MCU具有响铃检测模块RING和双音多频/音调发生器DMG模块
5.可靠性高,抗干扰性强,多种引脚数和封装选择
6.低功耗、也许Freescale系列的单片机的功耗没有MSP430的低,但是他具有全静态的“等待”和“停止”两种模式,从总体上降低您的功耗!新近推出的几款超低功耗已经与MSP430的不相上下!
使用最多的器件:MC9S12G系列 拍明芯城电话:400-693-8369
如果真要在这些单片机中分个一二三等,那么如果你想跟随大众,无可厚非51单片机还是首选;如果你追求超高性价比,STM32将是你理想选择;如果你渴望超低功耗,MSP430肯定不会让你失望;如果你想支持国产,STC会让你兴奋
-
一。 IIC 简介
它是由数据线 SDA 和时钟 SCL 构成的串行总线, 可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。用I2C通信的芯片最常用的就是EEPROM芯片,如Atmel的AT24CXX系列,此外,还有一些其它功能的芯片。
I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号: 接收数据的 IC 在接收到 8bit 数据后, 向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
二.SPI
SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。这个接口较快,可以传输较连续的数据。SPI要想连接多个从设备,就需要给每个从设备配备一根片选信号。如果要可以实现全双工,也是需要多加一根数据线(MOSI MISO)。SPI通信芯片的引脚名称不一定都是这几个名称,可能还有会别的名称,但是意思是一样的,例如MOSI引脚的意思是“主机输出从机输入”,某个SPI接口的芯片就有可能会写成SDI,因为这个SPI器件是作为从机的,所以它的SDI的意思就是“从机数据输入引脚”。
SPI通信过程为:把CS引脚拉低,然后SCK输出时钟,然后就可以在MOSI引脚上输出数据,同时可以在MISO上获得数据了。
(这是一个SPI FLASH芯片,DO是MISO,DI是MOSI,CLK是SCK,功能一样,叫法不一样而已)
(单片机接法)
下面主要总结一下2种总线的异同点:
1 iic总线不是全双工,2根线SCL SDA。spi总线实现全双工,4根线SCK CS MOSI MISO
2 iic总线是多主机总线,通过SDA上的地址信息来锁定从设备。spi总线只有一个主设备,主设备通过CS片选来确定从设备
3 iic总线传输速度在100kbps-4Mbps。spi总线传输速度更快,可以达到30MHZ以上。
4 iic总线空闲状态下SDA SCL都是高电平。spi总线空闲状态MOSI MISO也都是 SCK是有CPOL决定的
5 iic总线scl高电平时sda下降沿标志传输开始,上升沿标志传输结束。spi总线cs拉低标志传输开始,cs拉高标志传输结束
6 iic总线是SCL高电平采样。spi总线因为是全双工,因此是沿采样,具体要根据CPHA决定。一般情况下master device是SCK的上升沿发送,下降沿采集
7 iic总线和spi总线数据传输都是MSB在前,LSB在后(串口是LSB在前)
8 iic总线和spi总线时钟都是由主设备产生,并且只在数据传输时发出时钟 拍明芯城电话:400-693-8369
9 iic总线读写时序比较固定统一,设备驱动编写方便。spi总线不同从设备读写时序差别比较大,因此必须根据具体的设备datasheet来实现读写,相对复杂一些。