文档库 最新最全的文档下载
当前位置:文档库 › PIC24系列单片机原理与开发 第9章 串行外设接口SPI及编程

PIC24系列单片机原理与开发 第9章 串行外设接口SPI及编程

PIC24系列单片机原理与开发 第9章 串行外设接口SPI及编程
PIC24系列单片机原理与开发 第9章 串行外设接口SPI及编程

第9章串行外设接口SPI及编程

9.1.概述

串行外设接口(Serial Peripheral Interface),一般简称为SPI接口,是一个同步串行全双工通信接口。它以主从方式工作,通常有一个主器件和一个或多个从器件。CPU通过SPI 接口与外围器件交换信息。简单地说,SPI接口就是一个可编程的移位寄存器,在移位脉冲作用下,数据按位传输,格式为高位在前,低位在后。数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。SPI接口有占用I/O口线少,接口简单,传输速度快等优点。和I2C总线接口一样,SPI接口的芯片引脚数少,可有效地减少芯片封装尺寸,使得PCB板的布局更为紧凑,并且布线也比较方便。鉴于此,SPI接口也是现在一种常见接口模式。很多IC 制造商都生产接口为SPI的芯片,例如25Cxx EEPROM、FLASH存储器、移位寄存器、显示驱动器和A/D、D/A转换等芯片,为单片机的扩展带来极大的方便。

PIC24系列的SPI模块与Motorola的SPI和SIOP接口兼容。根据型号的不同,PIC24系列的大多数芯片集成有两个SPI模块,有几款型号集成了三个SPI模块,只有少数几种引脚较少的芯片为一个SPI模块,它们具有完全相同的功能。例如PIC24FJxxGA006芯片的SPI模块为2个:SPI1和SPI2。

为表述方便,用SPIx表示某SPI模块,x=1,2,3。模块的特殊功能寄存器也采用类似的表示法。例如,SPIxCON指SPI1或SPI2或SPI3模块的控制寄存器。

PIC24系列芯片的SPIx模块主要技术特性可归纳如下:

(1)三线同步传送,支持8位或16位全双工数据传输;

(2)可工作在主控或从动模式

(3)有相互独立的发送和接收缓冲器,实现双缓冲工作;

(4)作主控时,移位时钟的频率和相位均可灵活设置;

(5)移位时钟可达10MHz;

(6)具有发送结束、接收完成和接收溢出标志;

(7)支持发送、接收事件中断以及出错中断;

(8)支持从动模式的片选或帧脉冲同步功能;

(9)可方便地与各种串行扩展器件接口。

图9-1所示为SPIx模块的基本接构框图。每个SPIx接口有4个引脚:

●SDIx:串行数据输入

●SDOx:串行数据输出

●SCKx:移位时钟输入或输出

●SS____x/FSYNCx:从动选择(低电平有效)或帧同步脉冲

SPIx接口与I/O端口复用引脚,如PIC24FJxxGA006芯片的两个SPI接口引脚如下面的表9-1所示:

SPIx 模块可以配置为2、3或4个引脚工作。通过对SPIx 模块的控制寄存器设置,可以禁止模块使用SS ____

x/FSYNCx 和SDOx 引脚。

从编程角度看,管理SPIx 模块有4个特殊功能寄存器。寄存器SPIxBUF 是作为发送和接收的缓冲器,它是一个编程可见的寄存器。实际上,SPIxBUF 对应模块内2个编程不可见的单向寄存器:发送缓冲器SPIxTXB 和接收缓冲器SPIxRXB 。或者说发送和接收这2个独立的缓冲器共用一个存储器映射地址:SPIxBUF 。当发送数据写SPIxBUF 时,该数据实际上是送发送缓冲器PIxTXB ;读SPIxBUF 时,实际读的是接收缓冲器SPIxRXB 。控制寄存器SPIxCON1和SPIxCON2用于将模块配置成各种工作模式。状态寄存器SPIxSTAT 用于指示SPIx 模块的当前工作状态。

此外,图中还有一个16位的移位寄存器SPIxSR ,用于装载SPIxTXB 的数据,并逐位移出到引脚SDOx ,同时从SDIx 引脚移入数据。该移位寄存器对用户编程是不可见的。移位寄存器SPIxSR 与SPIxTXB 或SPIxBUF 构成双缓冲,可使数据传输在后台进行,并且可同时进行发送和接收。

图中Fcy 是指令时钟,它经过主、辅两级分频器后形成移位时钟信号,用户可在控制寄存器1中设置所需的分频系数。

9.2.SPI 模块的寄存器

1.控制寄存器1SPIxCON1

表9-2为SPIx 模块控制寄存器1的各控制位的分布和定义。

表9-2

控制寄存器1SPIxCON1各位功能定义

时钟使能

图9-1 SPI 模块的结构框图

SDOI x SCKx SSx

其中:R=, W=,U=未用

读为0),-n =上电复位值

U-0 U-0 U-0 R/W-0R/W-0R/W-0 R/W-0 R/W-0

未用ISSCK bit 15

bit 8

R/W-0 R/W-0R/W -0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0SSEN <2:0><1:0>bit 7 bit 0bit 12ISSCK

引脚使能位用于SPIx ):1 =禁止SCKx引脚该引脚用作通用I/O 0 =使能SCKx引脚作为移位时钟

bit 11SDOx引脚使能:1 =禁止SDOx引脚,该引脚用作通用I/O

0 =使能SDOx引脚,该引脚由SPIx模块控制

bit 10/字节通信选择:1 =采用字(16位)方式通信

0 =采用字节(8位)方式通信bit 9

MP :

: 1 =,0 =在数据位的中间位置采样:此位必须清零

bit 8

1=移位时钟的上沿输出数据(当CKP “1时)

移位时钟的下沿输出数据(当CKP “0时)0=移位时钟的下沿输出数据(当CKP “1时)移位时钟的上沿输出数据(当CKP “0时):在帧模式(FRMEN =1)下不使用CKE位,该位“0“。bit 7EN

引脚使能位:

1 =从动模式时使用SSx引脚0 =SPIx模块不使用SSx ,该引脚用作通用I/O bit 6CKx时钟极性选择位:1 =,即SCKx空闲时为高电平0 =,即SCKx空闲时为低电平

bit 5模式使能位:1 =SPIx模块为主控模式

0 =SPIx模块为从动模式

bit 4~2<2:0>辅分频器的分频数设置位(主控模式用)

000 =8分频,001 =7分频,010 =6分频,011 =5分频,100 =4分频,101 =3分频,110 =2分频,111 =1分频

bit 1~0

<1:0>

主分频器的分频数设置位(主控模式用):

00 =64分频,01 =16分频,10 =4分频,11 =1分频

PIC24系列芯片的SPIx 模块的工作方式可由SPIxCON1灵活配置,以适应各种SPI 接口的外围器件。传送方式可以是字节(每帧8位)也可以是字(每帧16位),由设置位MODE16定义。SPI 为主从方式工作,设置MSTEN 位可定义模块是作主控器还是从动方式工作。移位时钟SCKx 由主控器产生,用户可设置位域SPRE<2:0>和PPRE<1:0>获得所需的时钟速率。例如,Fcy=16MHz,希望时钟速率为1MHz,可取PPRE<1:0>=0b01(16分频),SPRE<2:0>=0b111(1分频)。利用C30的芯片头文件定义,设置分频系数的C 语句为(SPI1模块):

SPI1bits.PPRE=0x01;SPI1bits SPRE=0x07;

注: SCKx 的最小时钟周期为100ns,主、辅分频系数的的设置不能违反此条件。

2.控制寄存器2 SPIxCON2

SPIxCON2中只4个位有定义,它们主要用于帧同步模式的控制。表9-3列出了这4个控制位的分布和定义。有关帧同步模式的详细说明见后。

表9-3

控制寄存器2 SPIxCON2各位功能定义

其中:R=, W=

,U=

(读为0),-n =上电复位值R/W-0R/W-0R/W-0 U-0U-0U-0U-0 U-0

FRMEN PIFSD FPOL

bit 15

bit 8

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R-0未用

bit 7 bit 0bit 15SPIx使能位:1=使能帧SPIx

0=禁止帧SPIx

bit 14PIFSD 同步脉冲方向控制位:1=SSx引脚为帧同步脉冲输入(帧从模式)

0=SSx引脚为帧同步脉冲输出(帧主模式)

bit 13FPOL 选择位(仅用于帧模式):1=帧同步脉冲高电平有效

0=帧同步脉冲低电平有效

bit 1:1=帧同步脉冲与第一个位时钟同时发生

0=帧同步脉冲先于第一个位时钟

bit 0

3.状态寄存器 SPIxSTAT

表9-4所列为状态寄存器SPIxSTAT 的各位定义。

表9-4:状态寄存器

SPIxSTAT各位功能定义

SPIx 状态寄存器SPIxSTAT 中SPIEN 和SPISIDL 位为控制位。若用户将模块使能位SPIEN

置“1”,原则上SPIx 接口的4个引脚受模块管理,与引脚相应的端口寄存器和方向寄存器无关。但是,SCKx 引脚、SS ____

x/FSYNCx 引脚和SDOx 引脚均可由控制寄存器1中的相应位来定义模块是否使用该引脚。禁止模块使用的引脚作为通用I/O 使用,与SPIx 模块无关。

SPIxSTAT 中的状态位只有3个,其状态“0”或“1”由模块硬件自动建立。若溢出标志位SPIROV 为“1”,表明SPIxBUF(实际是SPIxRXB)寄存器中数据未取走之前,移位寄存器SPIxSR 又接收到一个新的字节/字,并已丢弃。

用户发送数据(写SPIxBUF 寄存器)时应检查发送缓冲器满标志位SPITBF 是否为“0”,否则会覆盖发送缓冲器SPIxTXB 中的数据。

9.3.工作模式

SPIx 模块有主控、从动和帧同步传送3种工作模式。这3种工作模式的传送格式均可是字节或字。字节/字选择位MODE16(SPIxCON1<10>)置“1”为16位格式,即发送和接收均为16位数据,或者说按“字”传送;MODE16位清“0”为8位格式传送。不管是16位还是8位传送格式,数据的位传送都是高位先行。

需要注意的是,当字节/字选择位MODE16的值改变时,模块会复位。因而,在初始化控制寄存器后,除非接口对象器件的时序所需,一般不要再去更改该位的值。

在发送或接收数据时,对于8位格式,移入/移出一个数据需要8个时钟脉冲,对于16位格式需要16个时钟脉冲。

下图是一个点对点的双机通信原理框图。由图可见,SPI 通信就相当于主控和从动的2个移位寄存器串起来,在时钟脉冲作用下进行移位(左移)操作。只不过SPIx 模块提供了收、发缓冲器和CPU 的访问机制以及收、发完成等工作状态标志。对于简单场合,作为帧同步的SS ____

x 引脚可以不用。

若SPIx 只需要接收数据功能,可以将禁止SDOx 引脚使能位DISSDO (SPIxCON1<11>)置“1”。这时SPIx 模块为“仅接收”工作方式,无数据发送功能,SDOx 引脚由对应的端口寄存器管理,与SPIx 模块无关。这种“仅接收”工作方式适用于所有的SPIx 工作模式。

主控MSTEN(SPIxCON1<5>)=1

从动MSTEN(SPIxCON1<5>)=0

SSEN(SPIxCON1<7>)=1

图9-2 SPIx 主从通信连接图

9.3.1主控模式工作

SPI接口或称SPI总线为主从工作方式,数据传送的发起者为主控,被动的响应者为从动。一般情况下移位时钟信号由主控产生。在嵌入式应用系统中,因为一般与SPI接口大多为一些功能扩展芯片,所以主控模式是最为常见的工作模式。

将主控模式使能位MSTEN(SPIxCON1<5>)置“1”,SPIx模块为主控模式。在主控模式下,用户应根据所需的时钟频率,初始化主辅分频系数PPRE<1:0>(SPIxCON1<1:0>)SPRE<2:0>(SPIxCON1<4:2>)。移位时钟通过SCKx引脚输出,且只有在发送数据时才产生时钟脉冲。用户根据从动对象的时序特性,设置时钟极性选择位CKP和时钟沿选择位CKE 决定数据在时钟的哪一个边沿发送。

初始化SPIx模块后,只要将待发送的数据写入SPIxBUF寄存器,则启动发送和接收。发送完毕接收也完成,收到的数据从SPIxBUF寄存器读取。以下是SPIx模块在主模式下的工作过程:

(1)将模块使能位SPIEN(SPIxSTAT<15>)置“1”和MSTEN(SPIxCON1<5>)置“1”,

模块为主模式工作。

(2)发送数据写入SPIxBUF寄存器(实际上是发送数据送给了发送缓冲器SPIxTXB),

此时SPITBF(SPIxSTAT<1>)位为“1”。

(3)一旦SPIxTXB的内容装载到移位寄存器SPIxSR,则SPITBF位自动清“0”,进

入发送。

(4)时钟脉冲将数据从SPIxSR左移出到SDOx引脚,并同时将SDIx引脚的数据右移

入SPIxSR。

(5)经8个时钟脉冲(字节)或16时钟脉冲(字)后发送和接收操作结束,SPIxSR的

内容送SPIxRXB寄存器(若SPIRBF=0),并产生以下事件:

●中断标志位SPIxIF置“1”,若允许SPIx中断(IECn寄存器中SPIxIE位为“1”)

则会产生(事件)中断。

●SPIRBF(SPIxSTAT<0>)位置“1”,指示接收缓冲器满。用户程序读SPIxBUF

寄存器后SPIRBF位清“0”。

●如果在SPIx模块欲将数据从SPIxSR送SPIxRXB时,但SPIRBF位为“1”(接

收缓冲器满),则不更新SPIxRXB,并将SPIROV(SPIxSTAT<6>)位置“1”,

表明发生溢出。一旦出现SPIROV位为“1”,数据接收被禁止。SPIROV位由

“0”变“1”时,将使SPI出错中断标志位SPFxIF置“1”,若允许SPIx出错

中断(IECn寄存器中SPFxIE位为“1”)则会产生出错中断。模块不会自动清

零SPIROV位,该位必须由用户软件清零。

(6)只要SPITBF(SPIxSTAT<1>)位为“0”,就可以将发送数据写入SPIxBUF。这

也就是说在SPIxSR移出数据的同时可以装载SPIxBUF寄存器,这样可实现数据的

连续发送。

图9-3为上述工作过程的时序。图中的移位时钟是正脉冲有效,脉冲的上沿输出数据,对应控制寄存器SPIxCON1中的控制位设置为CPK=0和CKE=0。输入数据的采集在时钟周期的中点处(位SMP(SPIxCON1<9>)设置为“0”),也就是时钟脉冲的下沿。若将SMP位置“1”,则输入数据的采集在时钟周期的末尾处,即下一个时钟脉冲的上沿处。

说明1:如果使用中断,则应设置SPIx模块的中断优先级,在中断服务程序中务必清零对应的IFSn寄存器中的SPIxIF位和SPFxIF位。PIC24FJxxGA系列芯片SPIx有关中断的位(域)见表9-5,模块x的中断入口为中断向量10(x=1)/33(x=2)或_SPI1Interrupt和_SPI2Interrupt;出错处理中断入口为中断向量9(x=1)/32(x=2)或_SPI1ErrInterrupt和_SPI2ErrInterrupt。

表9-5 PIC24FJxxGA系列芯片SPIx模块与中断相关的标志位

中断源标志位

模块1事件1IF(IFS0<10>)1IE(IEC0<10>)P( IPC2<10:8>)

模块1错误(IFS0<9>)(IEC0<9>)( IPC2<6:4>)

模块2事件SPI2IF(IFS2<1>)IE(IEC2<1>)PI2P(IPC8<6:4>)

模块2错误SPF2IF(IFS2<0>)( IEC2<0>)(IPC8<2:0>)

说明2:在主模式下,模块也可以配置为使用外部移位时钟工作。若将SCKx引脚禁止位DISSCK(SPIxCON1<12>)置“1”,则SPIx模块内移位时钟被禁止。这时数据的发送/接收需在外部时钟脉冲(SCKx引脚上)作用下工作。

图9-3主控模式的工作时序

9.3.2从动模式工作

将主控模式使能位MSTEN(SPIxCON1<5>)清“0”,SPIx模块为从动模式。在从动模式下,SPIx模块不产生时钟脉冲。模块的操作(包括中断)与主控模式相同,发送数据写SPIxBUF 寄存器,从SPIxBUF寄存器读取接收数据。把数据写入SPIxBUF时不会自行启动发送,只有当SCKx引脚上有外部时钟脉冲时才启动发送和接收数据。时钟极性位CKP(SPIxCON<6>)和时钟边沿位CKE(SPIxCON<8>)的取值决定数据在时钟的哪一个边沿发送、接收。输入采样控制位SMP必须为“0”。

另外,从动模式还提供了以下几种功能。

1.从动选择同步

SS____x引脚可以用来工作于同步从动模式。如果SS____x引脚使能位SSEN(SPIxCON1<7>)置“1”,则只有在SS____x引脚为低电平时才使能从动模式的发送和接收。通俗地说,SS____x引脚的作用就是我们常见的片选功能。若SS____x引脚变为高电平,则SDOx引脚为高阻态,即使模块正处于数据发送过程中也是如此,发送中止。在下一次SS____x引脚为低电平时,存于SPIxTXB 寄存器数据会重新进行上次被中止的发送操作。当然,若SSEN位为“0”,则SS____x引脚的状态不起作用。使用SS____x引脚的同步从动模式的工作时序请见图9-4。

注:为了满足模块时序要求,在从动模式下,当位CKE = 1时,必须使能SSx引脚。

2.SPITBF状态标志位

工作在从动模式下,模块对发送缓冲器满状态标志位SPITBF(SPIxSTAT<1>)的操作与主控模式有所不同。

如果SSEN (SPIxCON1<7>)位为“1”,则在用户代码写SPIxBUF 时,SPITBF 位置“1”。只有在SPIx 模块完成数据发送时该位才清零。

如果SSEN (SPIxCON1<7>)为“0”,则在用户代码写SPIxBUF 时,SPITBF 置“1”。模块将SPIxTXB 中数据传送到SPIxSR 时,该位清零。这与主控模式相同。

9.3.3

帧SPI 模式(Framed SPI Mode )

帧SPI 模式也就是帧同步传输模式。工作在这种模式时,每一信号帧(8位或16位)传输的起始时刻,在SS ____

x 引脚上有一个脉冲信号,作为帧同步信号。只有帧同步信号的作用

下才启动数据的发送、接收,所以移位时钟可以是连续不断的,即SCKx 引脚的时钟可为自由时钟。

模块在主控模式和从动模式均支持帧SPIx 协议。模块的控制寄存器2的4个控制位用于配置帧SPIx 操作:

●FRMEN(SPIxCON2<15>)位用于使能帧SPIx 模式,这时SS ____

x 引脚用作帧同步脉冲输入或输出引脚,并且与SSEN(SPIxCON1<7>)的状态无关。

SPIFSD(SPIxCON2<14>)位决定SS ____

x 引脚的输入/输出方向。若SPIFSD 位为“1”,则SS ____

x 引脚为帧同步脉冲输入(帧从模式);反之,SS ____

x 引脚为帧同步脉冲输出(帧主模式)。●

SPIFPOL(SPIxCON2<13>)位决定帧同步脉冲的极性。SPIFPOL=“1”,帧同步脉冲为高电平有效(即正脉冲);SPIFPOL=“0”,帧同步脉冲为为低电平有效(即负脉冲)。

SPIFE (SPIxCON2<1>)用于选择帧同步脉冲产生是先于数据发送1个时钟周期还是与数据发送同时开始。

在帧主模式下,SPIx 模块在SS ____

x 引脚上产生帧同步脉冲。在帧从模式时,SPIx 模块接收SS ____

x 引脚上的帧同步脉冲。

主控模式和从动都支持帧SPI 模式。因此,用户可以有4种帧SPIx 配置:SPIx 主控模式和帧主模式,SPIx 主控模式和帧从模式, SPIx 从动模式和帧主模式, SPIx 从动模式和帧从模式。

1.SPIx主控模式和帧主模式

将位MSTEN和FRMEN置“1”,SPIFSD位清为“0”,模块为主控模式的帧主模式,SPIx模块产生时钟和帧同步信号,如图9-5所示。

在该模式下,无论模块是否在发送数据,SCKx引脚均连续地输出时钟脉冲,为自由时

钟。当SPIxBUF中写入数据时,在CPK位所定义的 SCKx时钟边沿使SS____x/FSYNCx引脚产生帧同步脉冲(脉冲极性由SPIFPOL位决定,图9-5中是正脉冲),脉冲的宽度为1个时钟周期。如果控制位SPIFE(SPIxCON2<1>)清零,则帧同步脉冲先于数据发送一个时钟脉冲,如图9-5中的①所示。如果将位SPIFE置“1”,则帧同步脉冲与数据发送同时开始,如图9-5中的②所示。

图9-5主控模式下帧主模式的时序

当数据发送、接收完毕时,中断标志位SPIxIF置“1”,若允许SPIx中断(IFSn寄存器中SPIxIE位为“1”)则会产生中断。同时SPIRBF(SPIxSTAT<0>)位置“1”,指示接收缓冲器满。

2.SPIx主控模式和帧从模式

将MSTEN、FRMEN和SPIFSD位均设置为“1”,模块为主控模式的帧从模式。在此

模式下,SPIx模块产生时钟信号(为自由时钟),SPIx模块的SS____x引脚为输入,也就是说帧同步信号是由工作在从动模式的对象产生。并且需在传输对象的帧同步信号下进行数据发送。

图9-6是SPIx工作在主控模式的帧从模式工作时序。在该模式下工作时,SPIx模块

在所定义的时钟边沿对SS____x引脚进行采样。当检测到帧同步信号有效时,随后在所定义的时钟边沿发送数据。数据发送完时,中断标志位SPIxIF置“1”。由此可见,用户必须在帧同步信号有效之前将数据装入SPIxBUF,这样才可正确地发送数据。

图9-6主控模式下帧从模式的时序

3.SPIx从动模式和帧主模式

将MSTEN位清“0”、FRMEN位置“1”和SPIFSD位清“0”,模块为从动模式的帧主模式。

在这种模式下,因为SPIx为从动模式,所以模块不产生移位时钟,其SCKx引脚为时钟输入脚,由传输对象提供时钟。对于帧同步信号而言,模块是帧主模式,由其产生帧同步信号来启动数据的发送,如图9-7所示。其工作时序与与主控模式下帧主模式相同。

设输入SPIx的时钟是连续的。当数据写入SPIxBUF时,模块将在所定义的时钟沿产生宽度为一个时钟周期的帧同步信号。随后在相应的时钟沿开始发送、接收数据。

图9-7从动模式下帧主模式的SPIx接口的连线

4.SPIx从动模式和帧从模式

将MSTEN位清“0”、FRMEN位置“1”和SPIFSD位置“1”,模块为从动模式的帧从模式。在这种模式下,移位时钟和帧同步信号均由传输对象(为主控模式)产生。

除时钟是接口对象提供外,该模式的工作过程与主控模式下帧从模式相同。工作时序可参考图9-6。用户编程需注意的是,必须在帧同步信号有效之前将数据装入SPIxBUF,这样才可正确地发送数据。

9.4.SPIx的工作要点归纳和编程

1.工作模式

SPIx模块的工作模式可以设置为:主控、从动、带同步的从动模式,主控与帧主模式、主控与帧从模式、从动与帧主模式、从动与帧从模式,如表9-6所示。在应用中需根据通信对象的要求来确定采用哪种工作模式。在嵌入式应用中,一般用SPI扩展EEPROM、FLASH 存储器、显示驱动器和A/D、D/A转换等芯片,所以SPIx大多为主控模式工作。

当SPIx设置为主控模式时,一般使用SCKx、SDOx和SDIx引脚。若SPIx仅使用接收功能,则可禁止SPIx使用SDOx引脚(将DISSDO(SPIxCON1<11>)位置“1”)。

表9-6SPIx工作模式的设置

SPIxCON1<5>SPIxCON1<7>SPIxCON2<15>

PIFSD SPIxCON2<14>

主控模式SCKx

从动模式

带同步的从动模式

主控与帧主模式SCKx,SSx

主控与帧从模式

从动与帧主模式SSx

从动与帧从模式

2.移位时钟

将SPIx编程为主控模式时,模块产生时钟信号(SCKx引脚为输出)。如果未使能帧同步模式(位FRMEN =0),则只在发送/接收数据时才输出移位时钟脉冲。若使能帧同步模式(位FRMEN =1),则时钟信号是连续不断的,或称之为“自由时钟”。

时钟脉冲的极性和数据输出/输入的脉冲沿应根据具体对象的时序要求而编程设定CKP (SPIxCON1<6>)位、CKE(SPIxCON1<8>)位和SMP(SPIxCON1<9>)位。

如果使用帧同步模式,用户应将0CKE位和SMP位清“0”。当CKP = 0时(时钟为正脉冲),在SCKx引脚上的时钟脉冲上升沿产生帧同步脉冲输出和SDOx引脚上的数据输出;在时钟的下降沿采样SDIx引脚的输入数据。若CKP置为“1”时(时钟为负脉冲),在SCKx 引脚上的时钟脉冲下降沿产生帧同步脉冲输出和SDOx引脚上的数据输出;在时钟的上升沿采样SDIx引脚的输入数据。

3.SPIx的数据发送和接收

SPIx的数据发送和接收是同时进行的。无论SPIx工作在哪种模式,只要SPITBF (SPIxSTAT<1>)位为“0”,便可将发送数据写SPIxBUF寄存器;若SPIRBF(SPIxSTAT<0>)位为“1”,则可读SPIxBUF寄存器中所接收的数据。读SPIxBUF后,SPIRBF位自动清“0”。

若SPIx编程为主控模式,则只要写SPIxBUF寄存器,就启动发送和接收。即使是只接收数据,也要写SPIxBUF寄存器,可将一个“虚拟”数据如0x00或0xff送SPIxBUF。原则是发送的该“虚拟”数据对通信对象不会造成实际的“写操作”即可。如果SPIx编程为从动模式,只有当SCKx引脚上有时钟脉冲时才会启动发送和接收数据。因此,发送数据应在时钟脉冲出现之前写入SPIxBUF寄存器。

所谓“帧模式”是SS ____

x 引脚上的一个脉冲信号作为帧同步信号,在帧同步信号的作用下才启动数据的发送和接收。

SPIx 工作在主控或从动的帧主模式时,只要将数据写入SPIxBUF 寄存器,SPIx 自动产生帧同步脉冲,并启动数据发送和接收。

SPIx 工作在主控或从动的帧从模式时,SPIx 一旦检测到SS ____

x 引脚帧同步脉冲,就启动数据发送和接收。因此,发送数据应在帧同步脉冲之前写入SPIxBUF 寄存器。

4.

SPIx 的中断和错误处理

如果SPIx 收到新的数据,但原存在SPIxBUF 寄存器的数据尚未读走(位SPIRBF 为“1”),则SPIROV (SPIxSTAT<6>)

位置“1”。只要SPIROV 位为“1”, SPIx 不再接收数据。SPIROV 位必须由用户软件清零。只要“溢出”标志位SPIROV 由“0”变为“1”,SPIx 的出错中断标志位SPFxIF 就置“1”。如果要CPU 响应此中断,应设置SPIx 模块的出错中断优先级和将其中断允许位SPFxIE(在IECn 控制寄存器中)置“1”。

只要状态位SPIRBF 由“0”变为“1”,SPIx 中断标志位SPIxIF(在相应的IFSn 寄存器中)就置“1”。如果要CPU 响应此事件中断,应设置SPIx 模块的中断优先级和将其中断允许位SPIxIE(在IECn 控制寄存器中)置“1”。

例9-1设PIC24FJxxGA006的SPI2接口与EEPROM芯片 25LC512的SPI接口相连,如图9-9所示。图9-10和图9-11分别是25LC512的字节读和写的工作时序。从时序可知,25LC512的时钟为正脉冲,其SPI为带片选的从动模式。有关25LC512芯片的详细说明请见25LC512的图9-1025LC512的读操作时序

K

SI SO

21 22 23 24 25 26 27 28 29 30 31

0 1 2 3 4 5 6 7 8 9 10 11 21 22 23 24 25 26 27 28 29 30 31

SI 图9-925LC512与PIC24FJ64GA006的接口电路

本例程用查询法对25LC512进行字节读、写操作。程序实现的功能是:首先将一个16位的常数cTXdata写入25LC512的cMEMaddr和cMEMaddr+1单元。然后从这两个单元中读回来,以验证程序的正确性。设指令时钟为16MHz。在进行写操作操作之前,应先执行25LC512的“写允许”指令(0x06)。

#define pin_SS PORTGbits.RG9 //作25LC512的片选

#define pin_SS_TRIS TRISGbits.TRISG9

void SPI2Init();

Uchar WriteSPI2Buf(Uchar i);

void WriteByte(Uchar Data, Uint Address);

Uchar ReadByte(Uint Address);

union _EEPROMStatus_ ReadStatus();

//25LC512 EEPROM的操作指令

#define CMD_WRITE 0b00000010 //写数据到指定地址

#define CMD_WREN 0b00000110 //允许写

#define CMD_READ 0b00000011 //读指定地址的数据

#define CMD_WRDI 0b00000100 //禁止写

#define CMD_RDSR 0b00000101 //读状态寄存器

#define Hi(X) (Uchar)((X>>8)&0x00ff)

#define Lo(X) (Uchar)(X&0x00ff)

#define cMEMaddr 0x0100//待写入芯片25LC256单元的首地址

const Uint cTXdata = 0x1234; //待写数据

struct STATREG{//定义与芯片25LC256的状态寄存器一致的位结构unsigned WIP:1;

unsigned WEL:1;

unsigned BP0:1;

unsigned BP1:1;

unsigned RESERVED:3;

unsigned WPEN:1;};

union _EEPROMStatus_{

struct STATREG Bits;

unsigned char Char; };

//====================程序===================

int main ( void )

{ union {Uchar n[2];Uint w;}X;

SPI2Init(); //初始化SPI2

X.w = cTXdata;

WriteByte(X.n[0], cMEMaddr); //写X.w的低字节到cMEMaddr单元.

WriteByte(X.n[1], cMEMaddr+1); //写X.w的高字节到cMEMaddr+1单元.

//--------下面将写入的数据读回来---------------

X.n[0]=ReadByte(cMEMaddr); //读回cMEMaddr单元中的数据低字节.

X.n[1]=ReadByte(cMEMaddr+1);

while (1) { ; } //循环

}

void SPI2Init() //初始化SPI2: 8位主控模式,时钟为正脉冲,1MHz { IEC2bits.SPI2IE =0; //禁止SPI2中断

SPI2CON1 =0x0120;//SPI2:8位主控模式,CKE=1,CKP=0;

SPI2CON1bits.SPRE=0b111;//时钟辅分频器: 1分频

SPI2CON1bits.PPRE=0b01;//时钟主分频器: 16分频

SPI2STAT =0x8000;//使能SPI2

pin_SS_TRIS =0; pin_SS=1; //SS引脚为输出,输出“1”

}

Uchar WriteSPI2Buf(Uchar n)

{ SPI2BUF = n;//写SPI2缓冲器,启动发送和接收

while(!SPI2STATbits.SPIRBF);//等待发送和接收完成

return SPI2BUF;//返回接收的数据

}

void WriteByte(Uchar Data, Uint Address)

{ Uchar n;

pin_SS=0;//片选=0

n=WriteSPI2Buf(CMD_WREN); //发送允许写指令

pin_SS=1;

pin_SS=0;

n=WriteSPI2Buf(CMD_WRITE);//发送写指令,返回的数据不要

n=WriteSPI2Buf(Hi(Address));/发送地址高字节

n=WriteSPI2Buf(Lo(Address));//发送地址低字节

n=WriteSPI2Buf(Data); //写数据

pin_SS=1;;

while(ReadStatus().Bits.WIP); //等待25LC256的写操作完成

pin_SS=0;

n=WriteSPI2Buf(CMD_WRDI); //发送禁止写指令

pin_SS=1;

}

Uchar ReadByte(Uint Address)

{ Uchar n;

pin_SS=0;

n=WriteSPI2Buf(CMD_READ); //发送读指令,返回的数据不要

n=WriteSPI2Buf(Hi(Addres s)); //发送地址高字节

n=WriteSPI2Buf(Lo(Address)); //发送地址低字节

n=WriteSPI2Buf(0); //发送虚拟数据(0x00),获取所读单元的内容 pin_SS=1;

return n;

}

union _EEPROMStatus_ ReadStatus()

{ Uchar n;

pin_SS=0;

n=WriteSPI2Buf(CMD_RDSR);//发送读状态寄存器指令

n=WriteSPI2Buf(0);//发送虚拟数据,获取状态寄存器的内容

pin_SS=1;

return (union _EEPROMStatus_)n;

}

9.5.在 CPU休眠和空闲模式下的SPIx模块工作情况

1.休眠模式

当CPU执行 PWRSAV#0(C30中为 Sleep();)时,芯片进入休眠(SLEEP)状态。这时,系统时钟冻结。若SPIx模块是主控模式工作,则模块立即停止工作,其波特率发生器停止并复位。进入休眠模式时,若SPIx正在处理数据的收发,则未完成的数据被丢弃。当CPU被唤醒退出休眠时,模块将处于空闲状态。

若SPIx模块是从动模式工作,因SCKx时钟信号由外部提供,则在芯片进入休眠模式时模块继续工作。当其完成当前事务收发时,将SPIRBF标志置“1”、中断标志位SPIxIF 置“1”。如果允许SPIx中断(SPIxIE = 1),则产生唤醒事件,使CPU退出休眠模式。

2.空闲模式

当CPU执行PWRSA V#1(C30中为Idle();)指令时,芯片进入空闲待机低功耗模式。在待机模式下,系统时钟源保持工作。

控制位SPISIDL(SPIxSTAT<13>)用于选择SPIx模块在空闲模式下是否停止工作。若SPISIDL = 1,则 SPIx模块将在空闲模式时停止工作。此情况与休眠模式相同。如果将控制位SPISID清“0”,则SPIx模块将在空闲模式时可以继续工作。

高速伺服总线及接口

高速伺服总线及接口在数控行业的发展概况 ——机自14班2110101092 牛善涛在计算机系统中,总线接口对整个系统的性能和功能都有直接影响,有关专家预测,在下一世纪里,串行总线将逐渐取代并行总线。 在数控系统中,个人计算机技术与数控技术越来越紧密地结合,由此而产生的具有开放性的PCNC数控系统,正在取代传统形式的数控系统,并成为市场的主流产品。计算机总线结构的变革,必将影响数控系统的体系结构,串行总线的应用将极大地改变现有的传统数控系统的结构形式。 串行总线的优点: 同并行总线相比,串行总线具有许多优点。串行总线连接引脚数量少,连接简单,成本较低,系统可靠性高。串行总线对系统体系结构具有重大的影响,它的应用有助于数据流计算机体系结构的实现。 对于高速计算机系统,串行总线比并行总线更容易使用。在并行总线中,传输数据的各个位必须处于一个时钟周期内的相同位置,频率越高,对器件的传输性能和电路结构要求越严格,系统设计难度加大,致使系统成本提高,可靠性降低。相比之下,使用串行总线时,数据的各个位是串行传输的。在串行总线设计时,既可以嵌入时钟信号作为同步信号,也可以采用锁相环的时钟恢复方式;同并行总线相比,串行总线的传输线效应比较容易处理,从而降低设计难度和系统成本。 另外,以串行信息包为基础的系统,不需要编写驱动程序。当断开任何一根互连线,对全部信息包进行解码时,串行总线将这些信息包移入存储器并中断处理器,这是一种局部的中断或事件。随后微处理器将查看这些信息包,而不需要用驱动程序进行上述工作。系统将成为一种信息传递系统,而不是事件驱动系统。 外围串行总线方式,如IEEE-1394/火线和USB(通用串行总线),已能成功应用。某些供应商准备采用某种串行总线方式替代PCI(外围器件互连)系统总线。

串行通信接口典型应用举例

串行通信接口典型应用举例 SCI_FLAG .usect ".data0",1 ;SCI标志寄存器 TXD_PTR .usect ".data0",8 ;发送的数据存放区 RXD_PTR .usect ".data0",8 ;接收到的数据存放区 .include "F2407REGS.H" ;引用头部文件 .def _c_int0 ;(1)建立中断向量表 .sect ".vectors" ;定义主向量段 RSVECT B _c_int0 ;PM 0 复位向量 1 INT1 B GISR1 ;PM 2 中断优先级1 4 INT2 B PHANTOM ;PM 4 中断优先级2 5 INT3 B PHANTOM ;PM 6 中断优先级3 6 INT4 B PHANTOM ;PM 8 中断优先级4 7 INT5 B PHANTOM ;PM A中断优先级5 8 INT6 B PHANTOM ;PM C 中断优先级6 9 RESERVED B PHANTOM ;PM E (保留位) 10 SW_INT8 B PHANTOM ;PM 10 用户定义软件中断— … SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断— ;中断子向量入口定义pvecs .sect ".pvecs" ;定义子向量段 PVECTORS B PHANTOM ;保留向量地址偏移量0000h B PHANTOM ;保留向量地址偏移量0001h … B PHANTOM ;保留向量地址偏移量0005h B SCI_RX_ISR ;保留向量地址偏移量0006h SCI接收中断 B PHANTOM ;保留向量地址偏移量0007h … B PHANTOM ;保留向量地址偏移量0041h ;(2)主程序: .text _c_int0 SETC INTM CLRC SXM CLRC OV M CLRC CNF 214

通信协议简介及区别(串行、并行、双工、RS232等)

基本的通讯方式有并行通讯和串行通讯两种。 并行通讯:一条信息的各位数据被同时传送的通讯方式称为并行通讯。 并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距数米)的通讯。 串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。 串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,成本低但送速度慢。串行通讯的距离可以从几米到几千米。 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工。 而按照串行数据的时钟控制方式,串行通信又可分为同步通信和异步通信两种方式。 异步通信:接收器和发送器有各自的时钟; 同步通信:发送器和接收器由同一个时钟源控制。 1、异步串行方式的特点 所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的。异步串行通信的特点可以概括为: ①以字符为单位传送信息。 ②相邻两字符间的间隔是任意长。 ③因为一个字符中的比特位长度有限,所以需要的接收时钟和发送时钟只要相近就可以,不需同步。 ④异步方式特点简单的说就是:字符间异步,字符内部各位同步。 2、异步串行方式的数据格式 异步串行通信的数据格式如图1所示,每个字符(每帧信息)由4个部分组成: ①1位起始位,规定为低电0; ②5~8位数据位,即要传送的有效信息; ③1位奇偶校验位; ④1~2位停止位,规定为高电平1。 3、同步串行方式的特点 所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步。同步串行通信的特点可以概括为: ①以数据块为单位传送信息。 ②在一个数据块(信息帧)内,字符与字符间无间隔。 ③因为一次传输的数据块中包含的数据较多,所以接收时钟与发送进钟严格同步,通常要有同步时钟。 4、同步串行方式的数据格式 同步串行通信的数据格式如图2所示,每个数据块(信息帧)由3个部分组成: ①2个同步字符作为一个数据块(信息帧)的起始标志; ②n个连续传送的数据 ③2个字节循环冗余校验码(CRC) 图1 异步串行数据格式图2 同步串行数据格式

SPI同步串行总线原理

三、SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时间处理其他事务。 SPI概述 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行. SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,比如AT91RM9200. SPI总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI 和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。 SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。 (1)SDO –主设备数据输出,从设备数据输入 (2)SDI –主设备数据输入,从设备数据输出 (3)SCLK –时钟信号,由主设备产生 (4)CS –从设备使能信号,由主设备控制 其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。 接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO 线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。 要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。 在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。 最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。 AT91RM9200的SPI接口主要由4个引脚构成:SPICLK、MOSI、MISO及/SS,其中SPICLK是整个SPI总线的公用时钟,MOSI、MISO作为主机,从机的输入输出的标志,MOSI是主机的输出,从机的输入,MISO 是主机的输入,从机的输出。/SS是从机的标志管脚,在互相通信的两个SPI总线的器件,/SS管脚的电平低的是从机,相反/SS管脚的电平高的是主机。在一个SPI通信系统中,必须有主机。SPI总线可以配置成单主单从,单主多从,互为主从。 SPI的片选可以扩充选择16个外设,这时PCS输出=NPCS,说NPCS0~3接4-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为NPCS0~3,输出用于16个外设的选择。 [编辑本段] SPI协议举例

习题11-串行接口

习题十一串行接口 11.1 为什么串行接口部件中的4个寄存器可以只用1位地址来进行区分? 【答】复位后第一次用奇地址端口写入的值送模式寄存器;然后写入同步字符;然后写控制字。 读奇地址则读状态寄存器。所以奇地址对应模式、控制、状态寄存器,通过读写信号和时序来区分。偶地址对应数据输入、输出缓冲器,通过读写信号来区分。 11.2在数据通信系统中,什么情况下可以采用全双工方式,什么情况下可用半双工方式?【答】如果一个数据通信系统中,有两个信道可以采用全双工方式,只有一个信道只能采用半双工方式。 11.3 什么叫同步通信方式?什么叫异步通信方式?它们各有什么优缺点? 【答】串行通信以同步信息封装的帧为单位传输。 同步通信,一帧可包含多个字符,要求收发双方传输速率严格一致,帧之间填充同步信息以保证发收双方随时同步,通信效率高。 异步通信,一帧只包含一个字符,帧之间为空闲位,每一帧都同步一次,由于帧小,发收双方传输速率允许有一定误差,但通信效率低。 11.4 什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为 多少? 【答】波特率指码元(波形)传输速率——单位时间内传输的码元个数,单位是Baud。 波特率因子是发送/接收时钟频率与波特率的比值。 时钟频率=64×1200=76800Hz 11.5 标准波特率系列指什么? 【答】标准波特率系列为110,300,600,1200,1800,2400,9600,19200 11.6 设异步传输时,每个字符对应1个超始位、7个信息位、1个奇/偶校验位和1个停止位, 如果波特率为9600,刚每秒能传输的最大字符数为多少个? 【答】即9600/10=960个 11.7 在RS-232-C标准中,信号电平与TTL电平不兼容,问RS-232-C标准的1和0分别对应什 么电平?RS-232-C的电平和TTL电平之间通常用什么器件进行转换? 【答】 RS-232-C将-5V—-15V规定为“1”,将+5V—+15V规定为“0”。将TTL电平转换成RS-232-C电平时,中间要用到MC1488器件,反过来,用MC1489器件,将RS232-C电平转换成TTL电平。 11.8 从8251A的编程结构中,可以看到8251A有几个寄存器和外部电路有关?一共要几个端口 地址?为什么 【答】数据发送寄存器、数据接收寄存器,状态寄存器和命令寄存器。一共2个端口地址。数据发送寄存器(只写)和接收寄存器(只读)共用一个端口地址。命令寄存器(只写)和状态寄存器(只读)共用一个端口地址。 11.9 8251A内部有哪些功能模块?其中读/写控制逻辑电路的主要功能是什么? 【答】8251A有一个数据输入缓冲寄存器和一个数据输出缓冲寄存器,一个发送移位寄存器和一个接收移位寄存器,一个控制寄存器和一个状态寄存器,一个模式寄存器和两个同步字符寄存器等功能模块。读/写控制逻辑电路用来配合数据总线缓冲器工作。其主要功能有:1)接收写信号WR,并将来自数据总线的数据和控制字写入8251A;2)接收读信号RD,并将数据或状态字从8251A送往数据总线;3)接收控制/数据信号C/D,将此信号和读/写信号合起来通知8251A,当前读/写的是数据还是控制字、状态字;4)接收时钟信号CLK,完成8251A的内部定时;5)接收复位信号RESET,使8251A处于空闲状态。 11.10 什么叫异步工作方式?画出异步工作方式时8251A的TxD和RxD线上的数据格式。【答】串行工作方式分为两种类型,一种叫同步方式,另一种叫异步方式。异步工作方式时,两个字符之间的传输间隔是任意的,所以,每个字符的前后都要用一些数位来作同步。在

一种新型基于高速串行通信的多通道同步采样技术

DOI:10.3969/j .issn.1000-1026.2012.09.015一种新型基于高速串行通信的多通道同步采样技术 姜 雷,周华良,郑玉平,夏 雨,姚吉文,吴通华 (国网电力科学研究院/南京南瑞集团公司,江苏省南京市210003 )摘要:微机型高压继电保护装置需要实时采样和处理多通道交流电气量数据,多通道采样数据的 同步性和数据处理的实时性是影响保护性能的2个重要因素。文中针对以往同步采样及数据接口方式进行了改进,提出了一种基于高速串行通信的多通道同步采样技术,硬件上进一步保证数据采 样同步性, 同时提高采样数据传输、存储的快速性和并发性。该技术具有很好的扩展性和高可靠性,可以满足不同微机型高压继电保护装置,尤其是模拟采样回路通道数需求较多的场合,目前已经在某系列微机型高压继电保护装置上得到验证并取得实际工程应用。关键词:继电保护;同步采样;高速串行;多通道 收稿日期:2011-05-24;修回日期:2011-12- 21。0 引言 现代高压继电保护装置的交流信号分析理论和 保护算法大多建立在交流同步采样基础上[ 1- 4]。因此,同步采样的质量及采样数据处理的实时性对于 实现保护逻辑至关重要,是影响高压继电保护装置保护性能的2个重要因素。不考虑微处理器运算速度,对采样系统来讲采样频率越高、转换速度越快、采样精度越高,越有利于提高保护响应的准确性和快速性。在不增加硬件成本的前提下,采用交流同 步采样技术可提高交流采样的同步性[5- 6]。然而,如 何改进硬件电路也是必须考虑的问题。继电保护装 置的多通道同步采样往往采用多路选择器和模拟/ 数字(A/D)转换器组合的方式实现[7] ,并且多使用并行数字接口方式向数字信号处理器(DSP) 传输数据。这种方法固然能够实现同步采样, 但是在模拟采样回路通道数比较多的场合,多路选择器对采样同步性的影响会更加明显,同时A/D转换器与DSP的数据接口通常使用并行总线方式实现,此种接口 在A/D转换器数量较多时数据传输效率也会降低。因此,研究如何进一步提高采样的同步性以及高效、可靠地获取并传输采样数据对于提高保护性能具有重要意义。针对这一现实技术需求,本文提出了一种新型的基于高速串行通信的多通道同步采样技术,并详细论述了该技术在微机型高压继电保护装置中的设计与实现。实践证明,该技术方法能够保证采样数据的同步性和数据传输的可靠性,提高保护在交流采样方面的处理性能。 1 基于高速串行通信的多通道同步采样系统总体技术方案 继电保护装置对交流采样设计的基本要求是具有同步性、实时性、多通道和高精度。为了实现这一设计目标,采用现场可编程门阵列(FPGA) 和若干片16位高精度同步A/D转换器构成高速串行多通道同步采样系统, 原理框图如图1所示。图1 基于高速串行通信的多通道同步采样系统 Fig.1 Multi-channel synchronous sampling  systembased on high-sp eed serial communication此方案中采用的A/D转换器为ADI公司的 16位、8通道同步采样器件AD7606。此器件内置模拟输入钳位保护、二阶抗混叠滤波器、跟踪保持放 大器、16位电荷再分配逐次逼近型A/D转换器,以及灵活的数字滤波器和2.5V基准电压源、 基准电压缓冲等。AD7606采用5V单电源供电,可以处理±10V和±5V真双极性输入信号,同时所有通道均能以高达每秒20万个采样点的吞吐速率采样。其中,输入钳位保护电路可以耐受最高达±16.5V 的电压。此A/D转换器的抗混叠滤波器的3dB截 — 28—第36卷 第9期2012年5月10日Vol.36 No.9 May  10,2012

串行通信技术SERDES正成为高速接口的主流

串行通信技术SERDES正成为高速接口的主流 串行通信技术SERDES正成为高速接口的主流 2009-08-21 13:44随着对信息流量需求的不断增长,传统并行接口技术成为进一步提高数据传输速率的瓶颈。过去主要用于光纤通信的串行通信技术——SERDES正在取代传统并行总线而成为高速接口技术的主流。本文阐述了介绍SERDES 收发机的组成和设计,并展望了这种高速串行通信技术的广阔应用前景。 ? SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。它是一种时分多路复用(TDM)、点对点的通信技术,即在发送端多路低速并行信号被转换成高速串行信号,经过传输媒体(光缆或铜线),最后在接收端高速串行信号重新转换成低速并行信号。这种点对点的串行通信技术充分利用传输媒体的信道容量,减少所需的传输信道和器件引脚数目,从而大大降低通信成本。 ? SERDES技术最早应用于广域网(WAN)通信。国际上存在两种广域网标准:一种是SONET,主要通行于北美;另一种是SDH,主要通行于欧洲。这两种广域网标准制订了不同层次的传输速率。目前万兆(OC-192)广域网已在欧美开始实行,

中国大陆已升级到2.5千兆(OC-48)水平。SERDES技术支持的广域网构成了国际互联网络的骨干网。 ? SERDES技术同样应用于局域网(LAN)通信。因为SERDES 技术主要用来实现ISO模型的物理层,SERDES通常被称之为物理层(PHY)器件。以太网是世界上最流行的局域网,其数据传输速率不断演变。IEEE在2002年通过的万兆以太网标准,把局域网传输速率提高到了广域网的水平,并特意制订了提供局域网和广域网无缝联接的串行WAN PHY。与此同时,SERDES技术也广泛应用于不断升级的存储区域网(SAN),例如光纤信道。 ? 随着半导体技术的迅速发展,计算机的性能和应用取得了长足进步。可是,传统并行总线技术——PCI却跟不上处理器和存储器的进步而成为提高数据传输速率的瓶颈。新一代PCI标准PCI Express正是为解决计算机IO瓶颈而提出的(见表1)。PCI Express是一种基于SERDES的串行双向通信技术,数据传输速率为2.5G/通道,可多达32通道,支持芯片与芯片和背板与背板之间的通信。国际互联网络和信息技术的兴起促成了计算机和通信技术的交汇,而SERDES串行通信技术逐步取代传统并行总线正是这一交汇的具体体现。

基于JESD204B的高速串行数据收发接口设计

第40卷第5期2018年10月 指挥控制与仿真 Command Control &Simulation Vol.40 No.5Oct.2018 文章编号:1673-3819(2018)05-0129-04 基于JESD204B 的高速串行数据收发接口设计 徐凤萍1,龚至诚2,王 巍1 (1.江苏自动化研究所,江苏连云港 222061;2.江苏科技大学电子信息学院,江苏镇江 212003) 摘 要:目前的ADC /DAC 多采用并行传输接口,在进行数据采用分析时,存在着串扰高二传输同步困难的一系列难题,为了解决这些问题,推出了以JESD204B 为基础的高速串行数据传输接口三接口基于Xilinx 公司的Virtex-7系列FPGA 为核心控制单元设计电路,对于单通道来讲,其对应的传输速率是6Gb /s ,进行有关信息收发检测,证明了传输信息的同步性以及整个方案的可行性三结果证明,基于JESD204B 的串行传输办法不仅有效化解了并行传输存在的缺陷,同时有效降低了PCB 布线难度,并且节约了成本三 关键词:高速串行协议;JESD204B ;数据传输接口设计;FPGA ;模数/数模转换器 中图分类号:TP368.1 文献标志码:A DOI :10.3969/j.issn.1673-3819.2018.05.026 Design of High Speed Serial Data Transceiver Interface Based on JESD204B XU Feng-ping 1,GONG Zhi-cheng 2,WANG Wei 1 (1.Jiangsu Automation Research Institute,Lianyungang 222061,China;2.Jiangsu University of Science and Technology,Zhenjiang 212003,China) Abstract :In order to solve the problems of large crosstalk and difficult synchronization between the parallel sampling data in traditional ADC /DAC applications,a data transceiver interface based on high-speed serial protocol JESD204B is designed.With Xilinx company V7series FPGA as the core control unit circuit design,the single channel transmission rate of 6Gb /s under the condition of complete data transceiver test,verify the feasibility of synchronization,accuracy and overall scheme of data transmission in the process of.The design results show that this serial transmission mode not only solves many problems caused by parallel transmission,but also reduces the complexity of PCB routing,reduces the number of boards and saves the cost. Key words :High-speed serial protocol;JESD204B;Interface of data transmission;FPGA;ADC /DAC 收稿日期:2018-05-28 修回日期:2018-07-03 作者简介:徐凤萍(1984-),女,山西宁武人,工程师,研究方 向为嵌入式计算机及网络三 龚至诚(1993-),男,硕士研究生三 JESD204B 是一种新型的基于高速SERDES 的AD /DA 数据收发传输接口,而高速AD /DA 数据收发传输接口是集成电路当中最关键的设计实现环节,其涵盖了模数转换(ADC,Analog-to-Digital Converter)和数模转换(Digital-to-Analog Converter,DAC)[1]三在此之前,绝大多数高速AD /DA 转换数据收发接口采用LVDS 接口,目前随着数字信号处理方法不断发展以及科技的持续进步,对集成电路传输及转换的速度和带宽要求也越来越高,以往的普通转换模块已经不能满足需求,这样就促进了高速ADC /DAC 等集成电路在高速传输技术方面的急速发展[2]三 以往采样数据的传输方式在传统用法上多采用如 LVDS 传输等并行方式,但是并行方式容易出现时钟同步困难二串行干扰大等问题,使信号容易受到干扰三同时并行传输方式会产生PCB 板设计繁琐二层数增多二花费高等众多难题三本文在JESD204B 的基础上,对高速 串行数据收发接口的设计方法和实现途径进行了研究,通过在Xilinx 公司的Virtex-7系列FPGA 内集成,完成基于JESD204B 协议的高速SERDES 的AD /DA 数据收发传输接口设计与集成实现,并完成信息的传输验证及相关试验三 1 JESD204B 协议的优势 数据转换器与FPGA 与的接口电平标准最常见的有两种,一种是互补金属氧化物半导体(简称CMOS),另一种是低电压差分信号(简称LVDS)三上述两种类型的区别主要在于CMOS 的瞬态电流随信息转换率的升高而逐渐变大,而LVDS 的电流则比较稳定,可是因为LVDS 对应的最高支持接口速率相对目前的应用需求也是相对较低的,最高只有2Gb /s 左右[3]三随着相关技术的进步,对相关转换器传输率二低功耗二高带宽等层面的要求逐渐提高,对应的传统的CMOS /LVDS 两种接口电平方式逐渐无法满足应用需求,特别是在转换速度二数据带宽二分辨率二功耗等方面无法满足高速 AD /DA 的发展与应用的需求三 针对高带宽二高速率二低功耗需求的,JESD204B 传 输协议提出了一种高效地基于高速串行数据接口的解决方案,JESD204B 协议的主要技术优势在于:简化系 万方数据

串行接口同步通信协议.doc

串行接口同步通信协议 [摘要]:接口在微型计算机系统的设计和应用中占有极为重要的地位。在微型计算机系统中,CPU要与存储器和输入/输出设备之间交换信息,这些信息的交换要借助接口来实现。接口是沟通微处理机和外部设备之间的桥梁,它减轻了CPU的负担,使CPU能够充分的发挥任务管理和逻辑判断作用,使CPU和外部设备能更加协调的完成输入/输出工作,从而提高整机的工作效率和系统功能。串行接口是使用串行方式进行数据传输的输入/输出接口,根据在串行通信中数据的定时的不同,串行通信可分为同步通信和异步通信。同步通信中为保证通信的正确,发送装置和接收装置事先必须有一个双方共同遵守的协议,这就是串行接口同步通信协议。 [关键词]:输入/输出接口,串行接口,同步通信,协议,SDLC/HDLC规程 一、串行接口 在计算机领域内,有两种数据传送方式:串行传送和并行传送。并行数据传送中,数据在多条并行1比特宽的传输线上同时由源传送到目的,这种传送方式也称为比特并行或字节串行。串行数据传送中,数据在单条1比特宽的传输线上,1比特1比特

的按顺序分时传送。 串行通信一般使用在计算机与计算机之间、计算机和远程终端之间、终端与终端之间的通信中,传输距离通常从几米到数千公里。与典型设备相关的串行接口,数据传输的速率每秒在0~2百万比特的范围内。串行传输的速率和距离成反比,数据传输速率和距离的关系如图所示。 串行通信接口的信号电平常采用RS-232-C信号电平或20mA电流环路操作方法。 串行数据的发送由发送时钟控制。数据发送过程:把并行的数据序列送入移位寄存器,然后通过移位寄存器由发送时钟触发进行移位输出,数据位的时间间隔可由发送时钟周期来划分。发送时钟、待发送的二进制数据和出现在传输线上的信号波形三者的关系如图所示。

串口基本配置命令

串口基本配置命令 【命令】async mode { protocol | flow | tty | printer | posapp | pos id } 【视图】异步串口视图、AUX 接口视图 【参数】protocol:协议模式。指物理连接建立之后,接口直接采用已有的链路层协 议配置参数建立链路。flow:流模式,也称交互模式。指物理连接建立之后,链路的两端进行交互,主叫端向接收端发送配置命令(与用户从远端手工键入配置命令效果相同),设置接收端的链路层协议工作参数,然后建立链路。一般用于拨号等人机交互的情况下。tty:终端接入方式。当路由器的异步串口用于终端接入服务时,通过此关键字以及相应参数来设置待接入的物理终端和虚终端(VTY)号。 【描述】async mode 命令用来设置异步串口的工作方式。缺省情况下,异步串口工作在协议方式(protocol 方式),AUX 接口缺省工作在流方式(flow)。 【举例】# 设置异步串口工作在流方式。 [Quidway-Serial0]async mode flow 【命令】baudrate baudrate 【视图】串口视图 【参数】baudrate:串口的波特率,单位为bps。对于异步串口取值范围为300~115200,对于同步串口取值范围为1200~2048000。 【描述】baudrate 命令用来设置串口的波特率。缺省情况下,异步串口的缺省波特率为9600 bps,同步串口的缺省波特率为64000 bps。 异步串口支持的波特率有:300 bps、600 bps、1200 bps、2400 bps、4800 bps、9600 bps、19200 bps、38400 bps、57600 bps、115200 bps。 同步串口支持的波特率有:1200 bps、2400 bps、4800 bps、9600 bps、19200 bps、38400 bps、57600bps、64000 bps、72000 bps、115200 bps、128000 bps、384000 bps、2048000bps。 另外同步串口对于不同的物理电气规程,所支持的波特率范围有所不同。 &<048698;&O1472;V.24 DTE/DCE:1200 bps~64000 bps &<048698;&O1472;V.35 DCE/DCE、X.21 DTE/DCE、EIA/TIA-449 DTE/DCE 以及EIA-530 DTE/DCE:1200 bps~2048000 bps 当同/异步串口进行同异步切换时,接口的波特率将恢复为新工作方式下的缺省波特率。 在设置串口波特率时,要注意串口的同异步方式以及外接电缆的电气规程等因素。另外要注意异步串口的波特率只在路由器与Modem 之间起作用,两台Modem 之间的波特率则由它们互相协商确定,因此在异步方式下两端路由器的波特率设置可以不一致;在同步方式下,由DCE 侧路由器决定线路传输的波特率,只需在DCE 侧设定即可。 【举例】# 设置异步串口的波特率为115200 bps。 [Quidway-Serial0]baudrate 115200 【命令】clock { dceclk | dteclk1 | dteclk2 | dteclk3 | dteclk4 } 【视图】串口视图 【参数】无 【描述】clock 命令用来设置同步串口的时钟选择方式。缺省情况下,作为DCE 设备的情况,为DCEclk (即向DTE 设备提供时钟);作为DTE 设备的情况,为DTEclk3。同步串口有两种工作方式:DTE 和DCE。不同的工作方式有不同的时钟选择。如果同步串口作为DCE 设备,需要向对端DTE 设备提供时钟,这时需要选择DCEclk;如果同步串口作为DTE 设备接受对端DCE 设备提供的时钟,由于同步设备的接收和发送时钟是独立的,则DTE 设备的接收时钟可以选择DCE 设备的发送或接收时钟,而且DTE 设备的发送时钟也可以选择DCE 设备的发送或接收时钟,产生四种组合,即在DTE 侧可以有四种时钟选择。 【举例】# 设置同步串口作为DTE 设备的时钟选择方式为DTEclk2。 [Quidway-Serial0]clock dteclk2

ARM同步串行控制器SSC

AT91RM9200理器同步串口SSC的特性分析与应用 2008-09-24 嵌入式在线收藏| 打印 1 引言 电信网和因特网是两大网络系统,必然存在两个网络数据或信息的互通问题,例如:VoIP、混合视频会议等新业务。 E1接口和以太网接口分别是电信网和因特网使用最为普遍的接入端口,设计一个嵌入式网关设备,通过这两种端口将两大网络连接起来就显得尤为迫切、重要。本文介绍的AT91RM9200处理器处理能力强、接口丰富,内部集成了同步串口和以太网接口,是嵌入式小型网关控制器的理想选择。 2 AT91RM9200和DS21554 AT91R M9200内部集成了一个ARM920T—ARM Thum b处理器,在180 MH z时钟时运行速度高达200 MI/s;内部有16 KB的数据Cache、16 KB指令Cache、写缓冲区、全功能的MMU(存储器管理单元);片内带有调试通道的仿真器、16 KB的SRAM和128 KB的ROM,支持SDRAM、SRAM、Burst Flash,无缝连接CompactFlashTM,SmartMediaTM和NAND Flash;增强型的时钟产生器和电源管理控制器,包括周期性中断、看门狗和带有报警中断的实时时钟;带有8个优先级、可单个屏蔽中断源、7个外部中断源和一个快速中断源;122个可编程I/O引脚(多功能复用);20通道D MA(直接存储器存取)控制器;10/100 Base-T型以太网控制器及介质无关接口MII,全速USB 2.0接口(12 Mb/s,2主1从),3个同步串行控制器(SSC),4个通用同步/异步串口(USAR T),主机/从机串行外设接口(SPI),两线接口(TWI),两个3通道16位定时/计数器(TC)。超强的处理能力和丰富的接口使得该处理器广泛应用于各种嵌入式通信和控制系统中,尤其是同步串口和以太网接口,使其可以作为网关设备核心处理器。 电信网中数据以TD M(时分复用)形式传输,采用E1帧结构,相应网络接口包括电气接口和帧结构,符合ITU-T的G.703/G.704 规范或者国标GB7611。DS21554是一个符合该规范的E1成帧器集成电路,内部集成了线路接口和成帧器,其主要性能有:符合规范的完整PCM30/32 E1收发器:内含一个64 KB缓冲器的HDLC控制器;8 bit并行控制器接口;提供随路信令(CAS)、共路信令(CC S)和CRC4帧格式;回环测试功能;HDB3编码的线路接口等。线路接口支持75 Ω同轴电缆或者120 Ω双绞线连接;背板接口可以根据需要在主、从模式下工作,提供同步接收、发送数据信号(RSER/TSER),收发帧定位信号(RSYNC/TSSYNC),收发时钟信号(RS YSCLK/TSYSCLK);四个DS21554可以实现背板信号菊花链连接,提供8192 KB/s字节复用同步数据流。 3 SSC特性分析 AT91R M9200提供三个独立的同步串行控制器(SSC)与外部器件进行同步通信。它支持音频和电信应用中常用的串行同步通信协议,如I2S、短帧同步、长帧同步方式等。 每个SSC包含独立的接收器、发送器以及一个时钟分频器。发送器/接收器分别有三个信号引脚:数据TD/RD信号、时钟TK/RK信号及帧同步。TF/RF信号,由于这些引脚与通用I/O引脚复用,初始化程序必须配置使其在SSC模式下工作;每帧最多由16个32位字组成,可编程设定为自动启动或在帧同步信号检测到不同事件时启动。SSC与内部两个32位专用外设数据直接存取控制器P

路由器的异步和同步串行接口

本文以Cisco路由器为例,介绍了路由器上常用接口的类型、特点和应用场合。 1 EIA/TIA 232 EIA/TIA 232有时又被称作RS-232 C.RS(Recommended Standard)代表推荐标准(EIA制定的标准一般都被冠以"RS" ),232是标识号,C代表RS-232的最新一次修改。它是由是美国电子工业协会/电信工业协会(Electronic Industries Association / Telecommunications Industries Association,EIA/TIA)在1969年公布的通信协议标准。它最初主要用于近距离的DTE和DCE 设备之间的通信。后来被广泛用于计算机的串行接口(COM1、COM2等)与终端或外设之间的近地连接标准。该标准在数据传输速率20K bps时,最长的通信距离为15米。该标准对应的国际标准是CCITT推荐的标准V.24. 这个标准对串行接口通信的有关问题,如电缆、接口的机械、电气特性、信号功能及传送过程特性进行了描述。 1.1 机械特性 RS-323 C可以有多种类型的连接器(接口),如25针连接器(DB-25)、15针连接器(DB-15)和9针连接器(DB-9)。其中以DB-25、DB-9最为常见,如图1所示。不论哪种类型的接口,都定义了孔端连接器用来连接DTE设备、针端连接器用来连接DCE设备。 1.2 电气指标 RS-232 C规定,数据线上的逻辑1的电压范围是:-3V~-15V、逻辑0的电压范围是:+3~+15V;通信控制线上的信号有效或称接通的电压范围是:+3~+15V、信号无效或称断开的电压范围是:-3V~-15V.其他值视为违例。 1.3 功能特性 功能特性规定了连接器的各针的定义、与哪些电路连接、有何功能。表1

一种两线双向高速串行音频数据传输总线控制器的实现方法

http ://https://www.wendangku.net/doc/4a8135210.html, 一种两线双向高速串行音频数据传输总线控制器的实现方法 瞿军武, 薛骏,施彦(无锡中感微电子股份有限公司,江苏无锡,214135) 摘要:本文提出了一种两线双向高速串行音频数据传输总线控制器在蓝牙耳机硬件系统中的应用, 可以实现芯片间高速传输数据,实现同步发送和接收音频数据以及命令字。同时, 通过自定义数据格式,优化了数据格式,并降低了数据发送和接收的复杂度。考虑到PAD 的承受能力,目前传输速率最大可 以达到18Mb/s 。仅使用两线完成了数据的传输, 从而大大减少了芯片IO 的使用。关键字:蓝牙耳机;两线双向;高速;串行总线控制器;IO ;FPGA A Realization Method of Two-wire Bidirectional High Speed Serial Audio Data Transmission Bus Controller QU Jun-wu,XUE Jun ,SHI Yan (Zgmicro co,.ltd,Wuxi 214135,China ) Abstract:This paper proposes a two-wire bidirectional high-speed serial audio data transmission bus controller applied in Bluetooth headset hardware system,which can realize high-speed data transmission between chips,synchronous transmission and reception of audio data and command words.By the self-defined data format,the data format is optimized and the complexity of data sending and receiving is reduced.Considering the bearing capacity of PAD,the maximum transmission rate can reach 18Mb/s at present.Only two lines are used to complete data transmission,which greatly reduces the use of IO on chip. Key words:Bluetooth headset;two-wire bidirectional;high-speed;serial bus controller;IO;FPGA 55

高速10GE接口研究

高速10GBE接口研究 一、10GBE以太网规范 就目前来说,10GBE以太网标准和规范都比较繁多,在标准方面,有2002年的IEEE 802.3ae,2004年的IEEE 802.3ak,2006年的IEEE 802.3an、IEEE 802.3aq和2007年的IEEE 802.3ap;在规范方面,总共有10多个(是一比较庞大的家族,比千兆以太网的9个又多了许多)。在这10多个规范中,可以分为三类:一是基于光纤的局域网10GBE以太网规范,二是基于双绞线(或铜线)的局域网10GBE以太网规范,三是基于光纤的广域网10GBE 二、10GBE以太网的物理结构 10GbE标准框架包含两个物理层规范:LAN PHY和WAN PHY。另外还有三种PCS子层:10GBASE-X、10GBASE-R和10GBASE-W。前两个属于LAN PHY系列,最后一个属于WAN PHY。 LAN PHY和WAN PHY的区别在于帧类型和接口速度。 10GBASE-X使用一种特紧凑包装,含有1个较简单的WDM器件、4个接收器和4个在1300nm波长附近以大约25nm为间隔工作的激光器,每一对发送器/接收器在3.125Gbit/s 速度(数据流速度为2.5Gbit/s)下工作。10GBASE-R是一种使用64B/66B编码(不是在千兆以太网中所用的8B /10B)的串行接口,数据流为10.000Gbit/s,因而产生的时钟速率为10.3Gbit/s。10GBASE-W是广域网接口,与SONET OC-192兼容,其时钟为9.953Gbit/s数据流为9.585Gbit/s。 由于本公司设备关于10GE应用重点在LAN PHY,下面就重点介绍其应用。 10GBE以太网采用了IEEE 802.3以太网介质访问控制(MAC)协议、IEEE 802.3以太网帧格式,以及IEEE 802.3帧的最大和最小尺寸。正如千兆以太网标准1000Base-X和

相关文档
相关文档 最新文档