数据锁存(SDQ)与时钟信号的作用线有什么关系?

21ic官方微信
您当前的位置:&>&&>&
单片机SPI通信中数据流的同步问题研究
摘要 详细介绍串行同步通信的特点,说明如何通过硬件设计和软件纠错来确保数据流的同步;给出一种纠正数据偏移的方法,并以数字信号处理器TMS320LF2407A与单片机MsP430F135之间的SPI通信为例进行说明。关键词 SPI 串行同步通信 MSP430F135 TMS320LF2407A
&&& SPI是串行外设接口(Serial Peripheral Intcrface)的缩写,通常称为“同步外设接口”,是由Motorola公司开发的全双工同步串行总线。该总线大量用在微处理器及其外设器件的通信中。与SPI有关的软件设计比较简单,使CPU有更多的时间处理其他事务。现在,越来越多的单片机带有SPI,采用SPI的外围芯片也与日俱增。采用SPI通信可以简化电路设计.提高电路可靠性,降低系统成本。
1 SPI通信的基本方式&&& SPI通信总线定义了以下4个接口信号。&&& ◇SIMO:从入/主出。&&& ◇SOMI:从出/主入。&&& ◇SCK:串行时钟。&&& ◇SS:从届选择(在有些芯片中定义为STE信号)。&&& SPI通信有三线SPI和四线SPI两种模式。在三线SPI模式下,从属选择信号SS/STE不起作用;采用四线SPI模式时,SS/STE信号为高电平时禁止从机接收和发送数据,SS/STE信号为低电平时允许从机接收和发送数据。SPI通信足一种基于主一从配置的通信,提供串行时钟信号的―方是主机,其他的为从机。图l为2种通信模式下2台单片机之间的连接图。如果一个系统中有多台从机,那么主机就要为每一台从机提供一个从属选择信号,以确保任一时刻只有一台从机起作用。
&&& 在SPI通信中,数据是同步发送和接收的。在串行时钟信号的作用下,主机在通过SIMO信号线发送数据的同时,也在通过SOMI信号线接收从机发送的数据;从机在通过SIMO信号线接收数据的同时,也在通过SOMI信号线向主机发送数据。Motorola公司没有定义任何通用SPT的时钟规范,但是所有具有SPI功能的单片机中,都可以通过设置相应的寄存器来设置时钟极性和时钟相位。对时钟极性的设置决定了静止时SPI串行时钟的有效状态,而对时钟相位的设置则规定了处理器在何时发送和接收数据。之所以如此,是为了适应不同外设和线路的需要,因为有些外设在时钟信号的上升滑锁存数据,而有些外设则在时钟信号的下降沿锁存数据。&&& SPI传输串行数据时,首先传输数据的最高位。波特率可以达到几Mbps,实际速度不仅取决于SPI硬件,而且还受到软件设计的约束。
2 数据流的同步&&& 同步串行通信的基本特点是:同步串行通信是以字符块为信息单位传送的,而每帧信息包含成百上千个字符,因此,数据传送一旦开始,就要求每帧信息内部的每一位都要同步。也就是说,不仅字符内部的位传送是同步的,而且字符与字符之间的传送也必须是同步的,这样才能保证收/发双方对每一位都同步。显然,这种通信方式对时钟同步要求非常严格。为此,收/发两端必须使用同一时钟来控制数据块传输中字符与字符、字符内部位与位之间的同步。&&& 不论以何种方式进行通信,都必须制定一个通信协议。SPI通信也不例外。通信协议通常可以被分为3个部分:语法、语义和定时关系。这3部分分别规定了通信双方“如何讲”、“讲什么”以及“何时讲”的问题。&&& 同步通信的通信协议比较简单。通常在数据块的前面冠以同步字符,在数据块的结尾加上差错控制字符就构成了同步通信的一帧数据。通过选择工作模式,设置波特率、时钟极性和相位以及软件的设计,就可以实现数据流的同步。&&& 在双机或一台单片机与一片外围芯片的SPl通信中常选择三线模式}而在多方SPI通信中则通常使用四线SPI模式,这时SS/STE信号线用来对从机进行选择。在一主多从的SPI通信中,主机必须为每一台从机或外围芯片提供一个SS/STE信号。使得任一时刻只有一台从机或外围芯片起作用。如果所有的从机都只从主机接收数据,而不向主机发送数据,那么也可以使用三线SPI模式。SS/STE信号也可以用来对主机进行选择,不过通信将变得很复杂。选择正确的工作模式是进行可靠的SPI通信的前提。&&& SPI通信是在主机提供的时钟信号驱动下进行的,设置波特率就是设置主机提供的时钟信号的频率。因此,波特率的设置就显得相当重要。需要多方考虑。单片机与其外围器件进行通信时,一次可能只发送1个或2个字节的数据,可以把波特率设得高一些,只要不超过硬件允许的范围即可。如果是两台单片机之间进行通信,那么每次传送的往往是一组数据,否则就失去了同步通信的意义。这种情况下,就必须考虑接收数据一方的运行速度。因为无论是采用查询还是中断方式接收数据,每收到1个字节或1个字的数据后,接收方的单片机就必须从接收缓冲寄存器中取一次数据。这个过程必须在下一个字节或字传送完毕前结束。也就是说,处理时间不能超过8个或16个串行时钟周期;否则,将会发生溢出错误。例如,完成这个过程需要4μs,当接收缓冲寄存器为8位时,串行时钟的波特率就不能超过2 Mbps;当接收缓冲寄存器为16位时,串行时钟的波特率就不能超过4 Mbps。有的单片机片内RAM有限,没有足够的RAM空间用来保存中间数据,每收到1个字节或字的数据就必须处理一次。这样一来,串行时钟的波特率就需要设置得更低。&&& 当单片机与其外围芯片进行SPI通信时,应当根据外围芯片的时序来设置串行时钟的极性和相位。例如,某芯片在时钟信号的上升沿接收SPI线上的数据,那么主机就必须采用无延时的下降沿或有延时的上升沿时钟方式来发送SPI数据。当两台单片机之间进行SPI通信时,双方对时钟信号极性和相位的设置必须相同。&&& 在硬件连接方面,需要引起注意的问题是上电复位后引脚SS/STE上信号的极性。如果上电复位后,引脚SS/STE上为低电平,则有可能收到1位伪数据。在四线SPI模式下,如果在从机的SS/STE引脚上接一个上拉电阻,就可以避免这种情况的发生。&&& 如果在通信过程中,出现串行时钟信号丢失或干扰,将造成数据流的不同步,通信的各方就收不到正确的数据。所渭“数据流不同步”是指数据的比特位发生了偏移。例如,发送的数据是0xA9和0x36,但是收到的却是Ox52和0x6C,数据向右移了一位。一旦发生这种错误,仅靠硬件是无法纠正的,若不在软件中采取措施,则将一直错下去,永远收不到正确的数据。&&& 采用软件纠错的关键在于找出偏移的位数,然后据此采取措施,得到正确的结果。一般说来,在通信数据中包含了一些特殊字符,用于标志数据流的开始和终止。处理数据时,首先寻找这些特殊字符。如果不能发现这些特殊字符,就说明数据发生了偏移,需要进行纠错处理。具体的处理办法如下:假设数据以字节为单位,用前一个数据的后N位和后一个数据的前(8-N)位重新组成一个新的数据。其中,1≤N≤7。改变N的值,直到从重组的数据中发现特殊字符为止。此时的N值就是数据流发生偏移的位数,然后根据这个值对所收到的其他数据进行重组,就可以得到正确的结果。与此同时,如果还要发送数据,就要对发送出去的数据进行类似的处理。因为如果通信的一方收到的数据发生偏移,那么另一方收到的数据肯定也发生了相同的偏移。&&& 通常要求系统上电复位后,从机先于主机开始工作。如果从机在主机之后开始工作,就有可能丢掉部分时钟信号,使得从机并不是从数据的第一位开始接收,造成数据流的不同步。可通过硬件延时或软件延时的方法,来确保从机先于主机工作。
3 实例&&& 现在以数字信号处理器TMS320LF2407A和单片机MSP430F135为例,说明如何确保SPI通信中数据流的同步。这里采用三线SPI模式,TMS320LF2407A设置为主机,MSP430F135设置为从机;双方的时钟极性和相位都设置为无延时的上升沿。TMS320LF2407A的主频为40 MHz,采用定时发送/接收数据的方式工作,每间隔800μs发送一个字节,波特率为200 kHz。这样设置的原因是,MSP430F135的主频为8 MHz,片内的RAM只有512字节,没有足够的RAM用于保存中间数据,每接收一个字节就得进行一次处理,所以必须留有足够的时间给MSP430F135进行数据的处理。每一轮发送132字节,由4个引导字符0xFF加上128字节的数据组成。MSP430F135采用中断的方式接收/发送数据。&&& 以下是用汇编语言编写的TMS320LF2407A的SPI通信初始化子程序:
&&& &&& 下面是用C语言编写的MSP430F135的SPI通信初始化子程序:
&&& &&& 在MSP430F135的接收数据处理程序中还包含了防止数据流发生偏移的措施,实现方法与前文所述相同。图2是接收数据处理程序的流程图。
&&& 上述程序是电镀用开关电源控制程序的一部分。DSP控制器TMS320LF2407A负责主电路的控制;单片机MSP430F135作为辅助控制器,负责键盘和液晶显示器的控制。两个微控制器之间通过SPI通信交换信息。实际应用表明,采用这种方法进行SPI通信是可靠的。
4 结论&&& SPI通信具有硬件连接简单、使用方便等优点。采取硬件和软件相结合的措施,可以确保SPI通信中数据流的同步,实现可靠通信。通过电镀用开关电源中数字信号处理器TMS320LF2407A和MSP430F135单片机之间SPI通信的实例,验证了文中提出的三线模式SPI通信中,防止和纠正比特位发生偏移的方法的有效性。
无相关信息
2015年全球半导体市场规模预计将增长至3450亿美元,增幅达3.4%。新年伊始,21ic记者…
热门关键词
() () () () () () () () ()主板信号简介_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
主板信号简介
主​板​信​号​简​介
大小:102.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢主板信号简介_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
主板信号简介
大小:102.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢一汽大众汽车有哪几种总线?及各个总线的特点?可以举一例子来说明。谢谢!_百度知道
一汽大众汽车有哪几种总线?及各个总线的特点?可以举一例子来说明。谢谢!
提问者采纳
1总线的定义及分类 1.1定义 总线,英文叫作“BUS”,即我们中文的“公共车”,这是非常形象的比如,公共车走的路线是一定的,我们任何人都可以坐公共车去该条公共车路线的任意一个站点。如果把我们人比作是电子信号,这就是为什么英文叫它为“BUS”而不是“CAR”的真正用意。当然,从专业上来说,总线是一种描述电子信号传输线路的结构形式,是一类信号线的集合,是子系统间传输信息的公共通道[1]。通过总线能使整个系统内各部件之间的信息进行传输、交换、共享和逻辑控制等功能。如在计算机系统中,它是CPU、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过主机相连接,外部设备通过相应的接口电路再于总线相连接。 1.2分类 总线分类的方式有很多,如被分为外部和内部总线、系统总线和非系统总线等等,下面是几种最常用的分类方法[2]。 1.2.1按功能分   最常见的是从功能上来对数据总线进行划分,可以分为地址总线(address bus)、数据总线(data bus)和控制总线(control bus)。在有的系统中,数据总线和地址总线可以在地址锁存器控制下被共享,也即复用。   地址总线是专门用来传送地址的。在设计过程中,见得最多的应该是从CPU地址总线来选用外部存储器的存储地址。地址总线的位数往往决定了存储器存储空间的大小,比如地址总线为16位,则其最大可存储空间为216(64KB)。   数据总线是用于传送数据信息,它又有单向传输和双向传输数据总线之分,双向传输数据总线通常采用双向三态形式的总线。数据总线的位数通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。在实际工作中,数据总线上传送的并不一定是完全意义上的数据。   控制总线是用于传送控制信号和时序信号。如有时微处理器对外部存储器进行操作时要先通过控制总线发出读/写信号、片选信号和读入中断响应信号等。控制总线一般是双向的,其传送方向由具体控制信号而定,其位数也要根据系统的实际控制需要而定。 1.2.2按传输方式分   按照数据传输的方式划分,总线可以被分为串行总线和并行总线。从原理来看,并行传输方式其实优于串行传输方式,但其成本上会有所增加。通俗地讲,并行传输的通路犹如一条多车道公路,而串行传输则是只允许一辆汽车通过单线公路。目前常见的串行总线有SPI、I2C、USB、IEEE1394、RS232、CAN等;而并行总线相对来说种类要少,常见的如IEEE1284、ISA、PCI等。 1.2.3按时钟信号方式分   按照时钟信号是否独立,可以分为同步总线和异步总线。同步总线的时钟信号独立于数据,也就是说要用一根单独的线来作为时钟信号线;而异步总线的时钟信号是从数据中提取出来的,通常利用数据信号的边沿来作为时钟同步信号。2总线传输基本原理 依据前面对总线的定义可知总线的基本作用就是用来传输信号,为了各子系统的信息能有效及时的被传送,为了不至于彼此间的信号相互干扰和避免物理空间上过于拥挤,其最好的办法就是采用多路复用技术[3],也就是说总线传输的基本原理就是多路复用技术。所谓多路复用就是指多个用户共享公用信道的一种机制,目前最常见的主要有时分多路复用、频分多路复用和码分多路复用等。 2.1时分多路复用(TDMA)   时分复用是将信道按时间加以分割成多个时间段,不同来源的信号会要求在不同的时间段内得到响应,彼此信号的传输时间在时间坐标轴上是不会重叠。 2.2频分多路复用(FDMA)   频分复用就是把信道的可用频带划分成若干互不交叠的频段,每路信号经过频率调制后的频谱占用其中的一个频段,以此来实现多路不同频率的信号在同一信道中传输。而当接收端接收到信号后将采用适当的带通滤波器和频率解调器等来恢复原来的信号。 2.3码分多路复用(CDMA)   码分多路复用是所被传输的信号都会有各自特定的标识码或地址码,接收端将会根据不同的标识码或地址码来区分公共信道上的传输信息,只有标识码或地址码完全一致的情况下传输信息才会被接收。 3总线的通信协议   对于总线的学习,了解其通讯协议是整个过程中最关键的一步,所有介绍总线技术的资料都会花很大的篇幅来描述其协议,特别是ISO/OSI的那七层定义。其实要了解一种总线的协议,最主要的就是去了解总线的帧数据每一位所代表的特性和意义,总线各节点间有效数据的收发都是通过各节点对帧数据位或段的判断和确信来得以实现。  如图1所示是常见的I2C总线上传输的一字节数据的数据帧,其总线形式是由数据线SDA和时钟SCL构成的双线制串行总线,并接在总线上的电路模块即可作为发送器(主机)又可作为接收器(从机)。帧数据中除了控制码(包括从机标识码和访问地址码)与数据码外还包括起始信号、结束信号和应答信号[4]。   起始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。   控制码:用来选泽操作目标与对象,即接通需要控制的电路,确定控制的种类对象。在读期间,也即SCL时钟线处于时钟脉冲高电平时,SDA上的数据位不会跳变。   数据码:是主机向从机发送的具体的有用的数据(如对比度、亮度等)和信息。在读期间,SDA上的数据位不会跳变。   应答信号:接收方收到8bit数据后,向发送方发出特定的低电平。读/写的方向与其它数据位正好相反,也即是由从机写出该低电平,主机来读取该低电平。   结束信号:SCL为高电平时,SDA由低电平向高电平跳变表示数据帧传输结束。 当然不同的总线其数据位或段的定义肯定不同,但依据同样的原理可以更快的去了解它的协议的特性和特点。虽然其信息帧的大小不一,但具体的某一数据位或数据段都类似于本文所提及的I2C总线,会依据它的协议的要求来定义它所达标的意义和功能。 4主要技术指标 评价总线的主要技术指标是总线的带宽(即传输速率)、数据位的宽度(位宽)、工作频率和传输数据的可靠性、稳定性等。 4.1带宽(传输速率)、位宽和工作频率   总线的带宽指的是单位时间内总线上传送的数据量,即每钞传送MB的最大数据传输率。总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念;总线的位宽越宽,数据传输速率越大,总线的带宽就越宽。总线的工作时钟频率以MHz为单位,它与传输的介质、信号的幅度大小和传输距离有关。在同样硬件条件下,我们采用差分信号传输时的频率常常会比单边信号高得多,这是因为差分信号的的幅度只有单边信号的一半而已。   总线的带宽、位宽和工作频率,这三者密切相关,它们之间的关系:
  4.2传输数据的可靠性   可靠性是评定总线最关键的参数,没有可靠性,传输的数据都是错误的信息,便就失去了总线的实际意义。为了提高总线的可靠性,通常采用的措施有:   采用数据帧发送前发送器对总线进行侦听,只有侦听到总线处于空闲状态下时才可向总线传送数据帧,这样避免了不同节点的数据冲突。   采用双绞线差分信号来传送数据,以降低单线的电压升降幅度,减小信号的边沿产生的高次谐波。   适当的让数据的边沿具有一定的斜坡。   增加匹配电阻和电容等来减少总线上信号的发射和平衡总线上的分布电容等。   采用合适的网络拓扑结构和屏蔽技术等来减少受其他信号的干扰。   还有就是在软件上通过数字滤波、数据校验纠错等措施来提高数据传输的可靠性。 5结束语   学习是一个循序渐进的过程,对总线技术的学习和理解也是随着其技术的不断发展而不断更新的过程。子曰“工欲善其事,必先利其器。”只有从最基本的原理出发,打好基础,才能在今后的学习中融会贯通,前仆后继,更进一步深入该知识点和拓宽知识面。
提问者评价
其他类似问题
为您推荐:
其他1条回答
K线,主要用于诊断LIN线,低速传输,主要应用是汽车中的联合装配单元,如:门、方向盘、座椅、空调、照明灯、 湿度传感器,交流发电机等CAN总线,较高速传输,应用于大众汽车中的大部分网络,包括舒适系统和动力系统等,这个百度一下就有一大把资料了MOST光纤网络,高速传输,主要应用在车载多媒体,例如音视频传输等Flexray,高速注重容错的传输,主要应用在电子控制方面大众车上的总线有很多种的,主要是这一些,其他一些有的淘汰了,有还需时间慢慢发展
您可能关注的推广
一汽大众的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Fly By走线精讲_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Fly By走线精讲
D​D​R ​F​l​a​y​ ​B​y​走​线​规​则
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢

我要回帖

更多关于 锁存信号 的文章

 

随机推荐