嵌入式系统中串口通信帧的同步方法研究

嵌入式系统中串口通信帧的同步方法研究
嵌入式系统中串口通信帧的同步方法研究

引言

串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式。在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,同时还要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同。若嵌入式系统中.中断服务子程序在系统运行过程中占用了较多的时间,就有可能在中断眼务子程序正运行时,又产生一个同类型或其他类型的中断,从而造成主程序得不到执行或后续中断数据丢失。所以,嵌入式系统中的串口通信虽然看似简单,但其中仍有许多问题值得研究,例如串口通信过程中的帧同步问题。本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的3种帧同步方法。通过测试、分析和比较得出,基于有限状态机的方法是嵌入式系统串口通信中很有效的帧同步方法,同时也是一种很不错的串口通信程序设计结构。

1串口通信的数据帧结构

现代工业控制,往往需要由多个独立的控制模块来共同完成。它们之间通过串口通信完成复杂的控制过程,必须在通信过程中加入必要的通信协议,以提高系统的可靠性和稳定性;而要完成特定的通信协议,就得有一定的同步机制。下面介绍一下简化的串口通信数据帧结构,以便分析说明嵌入式系统串口通信过程中的帧同步方法。

假定串口发送的数据帧结构为:

其中:包头用于同步,一般是一个或多个ASCII字符,本文中假定数据帧同步头有2字节(0xAA、0x55);包长表示数据包中除去包头和包长的字节数,一般用约定好的几个字节表示;类型为通信协议里规定的命令类型;数据为应发送的主要信息;校验通常采用单字节“异或的方法。

2串口通信中的帧同步方法

2.1逐次比较的帧同步方法

首先等待串口数据,将接收到的第1个字节数据与约定好的包头信息的第1个字节进行比较。如果不正确,则等待新字节,直到接收的数据与包头信息的第1个字节相同。第1个字节比较正确以后,将收到的第2个字节与包头信息的第2个字节进行比较。如果仍然正确,则说明串口接收已经同步,可以开始接收数据帧中的数据部分;否则,重新开始同步过程。其程序流程如图1所示。

此种方法代码量小,编程简单,一般用于在主程序中以非中断方式接收串口数据、实时性很差、数据帧较短的场合。但是,在串口速度过快且包头字节数比较多的情况下,串口实现同步花费的时间很长或很难实现同步。例如,串口接收到序列

Ox0OOxAA0xAA0x55…,当遇到第一个“0xAA时,该方法认为第1个字节正确开始比较第2个同步头。第2个字节仍是“0xAA 而不是“0x55,所以必须等待新的字节重新开始比较第1个同步头。而紧随其后的是“0x55,因而,此时包头的第1个字节也没有同步上。事实上,“0x00OxAA是干扰字节,“0xAA0x55才是通信协议中的同步头。

2.2基于FIFO队列的帧同步方法

根据同步包头的长度,定义一个相同长度的全局字节数组,把该数组看成是一个如图2所示的先入先出(FIFO)的队列。程序流程如图3所示。

本例中定义两个字节HEADl和HEAD2,都初始化为0xFF。同步时,丢弃数组头字节HEADl,数组中的所有数据向前移动一个字节,串口接收到的新字节存入数组末字节HEAD2中,将整个数组与协议中的包头信息比较。如果正确,则置位已同步标志位,然后开始接收、存储有用数据;否则,继续等待同步。串口数据接收完后,不仅要清除已同步标志,还要把HEADl和HEAD2两个字节都赋值0xFF;否则,将会影响下一帧数据的同步和接收。用前面提到的序列“0x000xAA0xAA0x55…进行测试,随着串口接收中断收到新的字节。帧同步队列中的数据依次为:[0xFF,0xFF]→[0x00,0xFF]→[0xAA,0x00]→[0xAA,

0xAA]→[0x55,0xAA]。此时,该算法检测出[HEAD2,HEAD2]==[0x55,0xAA],从而实现了同步,置位已同步标志位以便下次进入串口接收中断服务子程序时开始接收数据包的数据部分。

此种方法与逐次比较的帧同步方法相比,能够比较快速、正确地检测出同步包头;但是如果包头的字节数很多,同步过程中每次进入串口中断服务子程序都要进行大量的字节搬移,将必然耗费很长的时间。为了使嵌入式系统更健壮,程序设计应把握的基本原则之一就是使中断处理程序最短。所以基于FIFO队列的帧同步方法也不是最优的。

2.3基于有限状态机的帧同步方法

为解决以上问题,可以采用基于有限状态机的设计方法。该方法将数据帧的接收过程分为若干个状态:接收信息头HEADl 状态、接收信息头HEAD2状态、接收包长状态、接收数据类型状态、接收数据状态及接收校验和状态。系统的初始状态为HEADl 状态,各接收状态间的状态转移图如图4所示,仍用前面提到的序列“0x000xAA0xAA0x55…进行测试。随着串口接收中断新字节的接收,系统的接收状态依次为HEAD1→HEAD1→HEAD2→HEAD2→LEN。可见此时就是同步状态。该方法也快速、有效地实现了同步;但是需要注意的是,在每一次接收完1帧完整的数据之后,必须把系统的接收状态重新设置为HEADl,否则将会影响下一帧的数据接收。

此后,程序按照协议开始依次接收数据帧长度、命令类型、数据和校验位。接收完后,重新设置系统接收状态为HEADl,同时对该数据帧进行校验。校验正确后,利用消息机制通知主程序根据命令类型对数据帧进行处理或执行相应的命令操作。

下面给出该方法在KeilC5l中的示例程序:

由于采用了状态机和消息机制的结构,上述设计思路快速有效地实现了串口通信的同步,而且程序结构清晰,便于维护,也易于向其他的串口通信协议移植。另外,串口中断服务子程序中需要处理的工作很少,每个串口接收中断平均耗时不超过20个机器周期(在单片机AT89C5l中),大大减轻了串口接收中断服务程序的压力,缓解了嵌入式系统有限资源与需求之问的矛盾,提高了嵌入式系统的稳定性。

3结论

从上面的分析和测试可以看出,基于有限状态机的串口通信帧同步方法是本文中提出的3种帧方法中最优的,结构清晰且系统资源利用率高。

对一个有着完整通信协议的串口中断来说,因为要比较命令头、完成校验、解析数据等需要耗费大量的机器周期,所以嵌入式系统中的串口中断服务程序设计显得更为重要。在实际的串口通信程序中,可采用状态机和消息机制相结合的方法,仅在中断服务程序中设置一个标志,而在主程序中根据相应标志来作处理,这样就回避了某些中断可能需要较长处理时间的问题。在程序结构上,由于采用状态机的结构,既提高了可读性。同时又提高了运行速度,因而该方法不仅是一种很好的帧同步方法,还是一种很不错的串口通信程序设计方法。

北京至福州货运专线北京到上海物流专线北京到南京物流专线https://www.360docs.net/doc/6811038134.html,/小口径膛线无缝钢管

gcr15轴承钢管轴承钢管生产厂https://www.360docs.net/doc/6811038134.html,/KCB齿轮泵厂家 RY导热油泵 LQB沥青保湿泵

https://www.360docs.net/doc/6811038134.html,/有载调压电力变压器高出力变压器非晶合金变压器https://www.360docs.net/doc/6811038134.html,/电动二通阀汽水分离器缓闭式止回阀https://www.360docs.net/doc/6811038134.html,/杭州电焊机价格杭州螺杆空气压缩机杭州等离子切割机报价https://www.360docs.net/doc/6811038134.html,/公交刷卡机手持刷卡机手持收费机 https://www.360docs.net/doc/6811038134.html,/微机监控电机保护

器电机缺相保护器电机微机保护器 https://www.360docs.net/doc/6811038134.html,/

串口通信测试方法

串口通信测试方法 LELE was finally revised on the morning of December 16, 2020

串口通信测试方法 1关于串口通信的一些知识: RS-232C是目前最常用的串行接口标准,用来实现计算机和计算机之间、计算机和外设之间的数据通信。 在PC机系统中都装有异步通信适配器,利用它可以实现异步串行通信。而且MCS-51单片机本身具有一个全双工的串行接口,因此只要配以电平转换的驱动电路、隔离电路就可以组成一个简单可行的通信接口。 由于MCS-51单片机的输入和输出电平为TTL电平,而PC机配置的是RS-232C 标准串行接口,二者电气规范不一致,因此要完成PC机与单片机的数据通信,必须进行电平转换。 注明:3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入电平转换芯片: 2实现串口通信的三个步骤: (1)硬件连接 51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 使用MAX232串口通信电路图(9孔串口接头) (2)串行通信程序设计 ①通信协议的使用 通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在设计过程中,有如下约定: 0x31:PC机发送0x31,单片机回送0x01,表示选择本单片机; 0x**:PC机发送0x**,单片机回送0x**,表示选择单片机后发送数据通信正常; 在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。 ②串行通信程序设计主要有微机发送接收程序和单片机发送接收程序,微机上的发送和接收程序主要采用计算机高级语言编写,如C语言,因为了能够在计算机端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里利用如下图标的一个免费计算机串口调试软件,故而这一块计算机通信的程序可不写!

UART串口通信设计实例

2.5 UART串口通信设计实例(1) 接下来用刚才采用的方法设计一个典型实例。在一般的嵌入式开发和FPGA设计中,串口UART是使用非常频繁的一种调试手段。下面我们将使用Verilog RTL编程设计一个串口收发模块。这个实例虽然简单,但是在后续的调试开发中,串口使用的次数比较多,这里阐明它的设计方案,不仅仅是为了讲解RTL编程,而且为了后续使用兼容ARM9内核实现嵌入式开发。 串口在一般的台式机上都会有。随着笔记本电脑的使用,一般会采用USB转串口的方案虚拟一个串口供笔记本使用。图2-7为UART串口的结构图。串口具有9个引脚,但是真正连接入FPGA开发板的一般只有两个引脚。这两个引脚是:发送引脚TxD和接收引脚RxD。由于是串行发送数据,因此如果开发板发送数据的话,则要通过TxD线1 bit接着1 bit 发送。在接收时,同样通过RxD引脚1 bit接着1 bit接收。 再看看串口发送/接收的数据格式(见图2-8)。在TxD或RxD这样的单线上,是从一个周期的低电平开始,以一个周期的高电平结束的。它中间包含8个周期的数据位和一个周期针对8位数据的奇偶校验位。每次传送一字节数据,它包含的8位是由低位开始传送,最后一位传送的是第7位。

这个设计有两个目的:一是从串口中接收数据,发送到输出端口。接收的时候是串行的,也就是一个接一个的;但是发送到输出端口时,我们希望是8位放在一起,成为并行状态(见图2-10)。我们知道,串口中出现信号,是没有先兆的。如果出现了串行数据,则如何通知到输出端口呢?我们引入“接收有效”端口。“接收有效”端口在一般情况下都是低电平,一旦有数据到来时,它就变成高电平。下一个模块在得知“接收有效”信号为高电平时,它就明白:新到了一个字节的数据,放在“接收字节”端口里面。

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.360docs.net/doc/6811038134.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

常用通讯测试工具使用

常用通讯测试工具 鉴于很多MCGS用户和技术人员对通讯测试工具并不很熟悉,本文档将针对实际的测试情况,对串口、以太网通讯调试过程中所涉及到的常用的测试软件进行相关的讲解。 1. 串口测试工具: 串口调试工具:用来模拟上下位机收发数据的串口工具,占用串口资源。如:串口调试助手,串口精灵,Comm等。 串口监听工具:用来监听上下位机串口相关操作,并截获收发数据的串口工具。不占用串口资源。如:PortMon,ComSky等。 串口模拟工具:用来模拟物理串口的操作,其模拟生成的串口为成对出现,并可被大多数串口调试和监听软件正常识别,是串口测试的绝好工具。如:Visual Serial Port等。 下面将分别介绍串口调试助手、Comm、PortMon和Visual Serial Port的使用。

1.1. 串口调试助手: 为最常用的串口收发测试工具,其各区域说明及操作过程如下: 串口状态 打开/关闭串口 十六进制/ASCII 切换 串口数据 接收区 串口参数 设置区 串口数据 发送区 串口收发计数区 发送数据功能区 保存数据功能区 操作流程如下: ? 设置串口参数(之前先关闭串口)。 ? 设置接收字符类型(十六进制/ASCII 码) ? 设置保存数据的目录路径。 ? 打开串口。 ? 输入发送数据(类型应与接收相同)。 ? 手动或自动发送数据。 ? 点击“保存显示数据”保存接收数据区数据到文件RecXX.txt。 ? 关闭串口。 注:如果没有相应串口或串口被占用时,软件会弹出“没有发现此串口”的提示。

1.2. PortMon 串口监听工具: 用来监听上下位机串口相关操作,并截获收发数据的串口工具。不占用串口资源, 但在进行监听前,要保证相应串口不被占用,否则无法正常监听数据。 连接状态 菜单栏 工具栏 截获数据显示区 PortMon 设置及使用: 1). 确保要监听的串口未被占用。 如果串口被占用,请关闭相应串口的应用程序。比如:要监视MCGS 软件与串口1设备通讯,应该先关闭MCGS 软件。 说明:PortMon 虽不占用串口资源,但在使用前必须确保要监听的串口未被占用,否则无法进行监视。 2). 运行PortMon,并进行相应设置。 ? 连接设置: 在菜单栏选择“计算机(M)”->“连接本地(L)”。如果连接成功,则连接状态显示为“PortMon 于\\计算机名(本地)”。如下图:

帧同步机工作原理及其新技术应用

帧同步机工作原理及其新技术应用 2005-4-18 【摘要】本文从应用角度论述了帧同步机的作用、工作原理以及帧同步机的应用方式,并对新型帧同步机的技术亮点进行详尽介绍。 【关键词】同步帧同步机数字模拟 帧同步机在电视台的应用现在越来越普遍。帧同步机也称帧同步器(Frame Synchronzier),简称FS。它是一种可将某一路与系统不同步的电视信号使之能与系统同步工作的数字设备,通俗讲,是一种同步变换设备。 一.为什么要用帧同步机 在电视直播和播出系统中,各路信号之间存在着“同步”与“不同步”情况,所谓“不同步”有下列两种情形: (1)两个信号的同步信号时基(频率与相位)或扫描速率不相同,如两路由互不相干的同步机同步的信号源,它们之间的行同步(H)、场同步(V)、彩色副载波(SC)、PAL 识别脉冲(P)以及色同步门脉冲(K)完全是随机的关系,换句话说,这几种有关同步的信息脉冲之间是不同步的。图1示例中,在本地的演播室视频信号、录像机视频信号、硬盘信号等由于由本地同步机同步信号锁定,而转播信号则由转播车上的同步机信号锁定,卫星信号则由卫星信号源端的同步信号锁定,故它们三者之间的H、V、SC、K、P之间是随机的关系,不存在同步关系,就属于这种情况。这是一种外来信号源与本地信号源之间不同步的情况。 图1 (2)两路信号源虽然都锁相于同一部同步机,但由于它们的传输路径或传输路径不同,引入到达切换点的时间不一致。事实上,在实际的系统中,可能由于某些演播室地理位置离播出系统较远,尽管演播室信号同样锁定于本地同步机,但视频信号经长距离传输后到达切换台时,与其它的信号源,如录像机等信号时间关系不一致,就属于这种本地信号源之间不同步的情况。

串行同步通信

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

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

串口通讯设计之Verilog实现

串口通讯设计之 V e r i l o g实现 Revised as of 23 November 2020

串口通讯设计之V e r i l o g实现 FPGA串口模块是将由RS-485发送过来的数据进行处理,提取出8位有效数据,并按异步串口通讯的格式要求输出到MAX3223的12脚。FPGA选用Xilinx公司的SpartanII系列xc2s50。此部分为该设计的主体。如上所述,输入数据的传输速率为700k波特率。为了使FPGA能够正确地对输入数据进行采样,提高分辨率能力和抗干扰能力,采样时钟必须选用比波特率更高的时钟,理论上至少是波特率时钟的2倍。 1 串口通信基本特点随着多微机系统的应用和微机网络的发展,通信功能越来越显得重要。串行通信是在一根传输线上一位一位地传送信息.这根线既作数据线又作联络线。串行通信作为一种主要的通信方式,由于所用的传输线少,并且可以借助现存的电话网进行信息传送,因此特别适合于远距离传送。在串行传输中,通信双方都按通信协议进行,所谓通信协议是指通信双方的一种约定。约定对数据格式、同步方式、传送速度、传送步骤、纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。异步起止式的祯信息格式为:每祯信息由四部分组成: 位起始位。 ~8位数据位。传送顺序是低位在前,高位在后.依次传送。c.一位校验位,也可以没有。d.最后是1位或是2位停止位。 FPGA(Field Pmgrammable Gate Array)现场可编程门阵列在数字电路的设计中已经被广泛使用。这种设计方式可以将以前需要多块集成芯片的电路设计到一块大模块可编程逻辑器件中,大大减少了电路板的尺寸,增强了系统的可靠性和设计的灵活性。本文详细介绍了已在实际项目中应用的基于FPGA的串口通讯设计。 本设计分为硬件电路设计和软件设计两部分,最后用仿真验证了程序设计的正确性。 2 系统的硬件设计 本方案的异步串行通信的硬件接口电路图如图1所示,主要由四部分组成:RS-485数据发送模块、FPGA 串口模块、MAX3223和DB9。各部分功能简述如下: RS-485数据发送模块是将前续电路的数据发送到FPGA,供本电路处理,亦即本电路的输入。RS485是符合RS-485和RS-4225串口标准的低功耗半双工收发器件,有和5V两种,在本设计中选用了的器件SP3485。 在本设计中。485的7脚和8脚与前端信号相连接,用于接收输入的数据。数据格式是这样的:一帧数据有25位,报头是16个高电平和1个低电平,接下来是 8位有效的数据。传输速率为700k波特率。2脚是使能端,与FPGA的I/O口相连,由FPGA提供逻辑控制信号。1脚和4脚也与FPGA相连,由 FPGA对输入数据进行处理。 FPGA串口模块是将由RS-485发送过来的数据进行处理,提取出8位有效数据,并按异步串口通讯的格式要求输出到MAX3223的12脚。FPGA选用Xilinx公司的Spartan II系列xc2s50。此部分为该设计的主体。如上所述,输入数据的传输速率为700k波特率。为了使FPGA能够正确地对输入数据进行采样,提高分辨率能力和抗干扰能力,采样时钟必须选用比波特率更高的时钟,理论上至少是波特率时钟的2倍。在本设计中选用4倍于波特率的时钟,利用这种4倍于波特率的接收时钟对串行数据流进行检测和定位采样,接收器能在一个位周期内采样4次。如果没有这种倍频关系,定位采样频率和传送波特率相同,则在一个位周期中,只能采样一次,分辨率会差。比如,为了检测起始位下降沿的出现,在起始位的前夕采样一次之后,下次采样要到起始位结束前夕才进行。而假若在

帧同步信号恢复实验报告

实验八 帧同步信号恢复实验 一、实验目的 1. 掌握巴克码识别原理。 2. 掌握同步保护原理。 3. 掌握假同步、漏同步、捕捉态、维持态概念。 二、实验内容 1. 观察帧同步码无错误时帧同步器的维持态。 2. 观察帧同步码有一位错误时帧同步器的维持态和捕捉态。 3. 观察同步器的假同步现象和同步保护作用。 三、基本原理 (A )原理说明 一、帧同步码插入方式及码型 1.集中插入(连贯插入) 在一帧开始的n 位集中插入n 比特帧同步码,PDH 中的A 律PCM 基群、二次群、三次、四次群,μ律PCM 二次群、三次群、四次群以及SDH 中各个等级的同步传输模块都采用集中插入式。 2.分散插入式(间隔插入式) n 比特帧同步码分散地插入到n 帧内,每帧插入1比持,μ律PCM 基群及△M 系统采用分散插入式。 分散插入式无国际标准,集中插入式有国际标准。 帧同步码出现的周期为帧周期的整数信,即在每N 帧(N≥1)的相同位置插入帧同步码。 3.帧同步码码型选择原则 (1)假同步概率小 (2)有尖锐的自相关特性,以减小漏同步概率 如A 律PCM 基群的帧同步码为001101,设“1”对应正电平1,“0”码对应负电平-1,则此帧同步码的自相关特性如下图所示 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1 -1 -1 -1 -1 -5 -5 -5 -5 3 3 3 3 j 7 R(j)

二、帧同步码识别 介绍常用的集中插入帧同步码的识别方法。设帧同码为0011011,当帧同步 码全部进入移位寄存器时它的7个 输出端全为高电平,相加器3个输出端全为高电平,表示u i =1+2+4=7。 门限L 由3个输入电平决定,它们 的权值分别为1,2,4。 比较器的功能为? ??<≥=L u L u u i i o ,0,1据此可得以下波形: 三、识别器性能 设误码率为P e ,n 帧码位,L=n-m ,(即允许帧同步码错m 位),求漏识别概率P 1和假识别概率P 2以及同步识别时间t s 。 1.漏识别概率 正确识别概率为∑=--m n e e n P P C 0 )1(γγγ γ,故 ∑=--- =m n e e p P n P 0 1)1((1γ γ γγ,m=0时e nP P ≈1 门限L 越低,P e 越小,则漏识别概率越小。 2.假识别概率 n 位信码产生一个假识别信号的概率为n m n n P m C P -=-===∑202 20 2时γ γ 门限越高,帧码位数越多,则假识别概率越小。 3.同步识别时间t s P 1=P 2=0时,t s =NT s ,N 为一个同步帧中码元位数,T s 为码元宽度 一个同步帧中产生一个假识别信号概率为22)(NP P n N ≈-,故当P 1≠0、P 2≠0时 s s NT NP P t )1(21++= 分散插入帧同步码的同步识别时间为 s s T N t 2= L u 0 移位寄存器 PCM 码流 u 0

串口通信基本接线方法要点

串口通信基本接线方法 龚建伟2001.6.20 目次:1.DB9和DB25的常用信号脚说明 2.RS232C串口通信接线方法 3.串口调试中要注意的几点 目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连,以回答前段网友的咨询。 1.DB9和DB25的常用信号脚说明 2.RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连 ?同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; ?两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)

上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战 百胜。 3.串口调试中要注意的几点: ?不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; ?线路焊接要牢固,不然程序没问题,却因为接线问题误事; ?串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; ?强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。

OLED同步串行通信

1. OLED只能写入,不能读出。4线串行模式:D0——串行时钟线CLK,D1——串行数据线DA TA,P/S——模式选择、高为并行、低为串行。 并行模式需要使用全部数据及控制脚,串行模式只需要CLK、DA TA、RES、DC、CS共5个控制脚(WR、RD不用了)。 2.最常用配置方式: 3.同步串行通讯:时钟线、数据线,通过时钟保持数据同步。异步串行通讯:只有一根数据线,通过波特率保证数据同步。无线通信一般均为异步串行通信(一根天线)。 4.串行总线分三类:单总线(1—Wire)、SPI总线、I2C总线。单总线:用一根线数据收发和时钟信号,可以提供电源。SPI总线3根或4根线组成,数据收发,器件选择,时钟信号。I2C总线,两根线,数据收发,时钟信号。单总线特点:一、单总线芯片通过一根信号线传递控制信号、地址信号、数据信号。二、每个单总线芯片都有全球唯一序列号,当多个单总线芯片挂在一根总线上,根据不同序列号选择访问。三、单总线芯片在总线上可以获得电源。SPI:同步串行外设接口。SPI总线一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效的从机选择线SS。系统主机与从设备串行方式,高位在前,低位在后。SPI从设备MISO与系统主机MOSI相连,SPI从设备MOSI与系统主机MISO相连。SPI从设备用独立的片选信号控制信号使能端。片选无效时输出高阻态以不影响其他SPI设备工作。 1.OLED串行通信SPI 4—wire:CS低电平,同步时钟上升沿有效,传送8位数据。SPI 3 —wire:CS低电平,同步时钟上升沿有效,传送D/C共9位数据。 2.OLED4线串行SPI方式。一、使用的信号线有:CS(OLED片选信号)、RET(硬件复 位OLED)、DC(命令/数据标志(0:读写命令,1:读写数据))、SCLK(串行时钟线,D0信号线作为串行时钟线)、SDIN(串行数据线,D1信号线作为串行数据线)。二、模块的D2需要悬空,其他引脚可以接到GND。三、在此模式下,只能往模块写数据而不能读数据。四、在此模式下,每个数据长度均为8位,在SCLK的上升沿,数据从SDIN 移入到SSD1306,并且高位在前。DC线还是用作命令或数据的标志线。写操作时序:

串口通信的接线方法

目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422、RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。 1、DB9和DB25的常用信号脚说明 2、RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口) 图2 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。 3、串口调试中要注意的几点: 不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; 线路焊接要牢固,不然程序没问题,却因为接线问题误事;

串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 RS232C标准串口接线方法 (第二版) 检验仪器与微机的通讯主要是以RS232C标准接口为主,而串口的接线方法也有一定的标准,在此谈谈几种常用的串口接法,仅作参考: 一、标准接法 1、9对9(包括9针对9孔,9孔对9孔,9针对9针): 说明:以下的孔、针指串口线两端的串口,不过2、3有可能不交换 2-------------3 3-------------2 4-------------6 5-------------5 6-------------4 7-------------8 8-------------7 2、9对25(包括9孔对25孔,9孔对25针) 2-------------3 (备注:2、3有可能不交换) 3-------------2 4-------------6 5-------------7 6-------------20 7-------------5 8-------------4

串口通信测试方法

串口通信测试方法 1 关于串口通信的一些知识: RS-232C是目前最常用的串行接口标准,用来实现计算机和计算机之间、计算机和外设之间的数据通信。 在PC机系统中都装有异步通信适配器,利用它可以实现异步串行通信。而且MCS-51单片机本身具有一个全双工的串行接口,因此只要配以电平转换的驱动电路、隔离电路就可以组成一个简单可行的通信接口。 由于MCS-51单片机的输入和输出电平为TTL电平,而PC机配置的是RS-232C 标准串行接口,二者电气规范不一致,因此要完成PC机与单片机的数据通信,必须进行电平转换。 注明:3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入电平转换芯片: 2 实现串口通信的三个步骤: (1)硬件连接 51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 使用MAX232串口通信电路图(9孔串口接头) (2)串行通信程序设计 ①通信协议的使用 通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种

约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC 机与单片机之间进行通信,在设计过程中,有如下约定:

基于单片机的串口通信模块设计

1 绪论 1.1 研究背景 通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换。在现代工业控制中,通常采用计算机作为上位机与下层的实时控制与监测设备进行通讯。现场数据必须通过一个数据收集器传给上位机,同样上位机向现场设备发命令也必须通过数据收集器。串行通信因其结构简单、执行速度快、抗干扰能力强等优点,已被广泛应用于数据采集和过程控制等领域。 计算机与外界的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。串行通信的特点是:数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度快,串行通信的距离可以从几米到几千米。 随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行监测和控制。PC机具有强大的监控和管理能力,而单片机则具有快速及灵和的控制特点,通过PC 机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。而随着USB接口技术的成熟和使用的普及,由于USB 接口有着 RS-232(DB-9)串口无法比拟的优点,RS-232(DB-9)串口正在逐步地为USB 接口所替代。而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232(DB-9)串口已不再设置,这就约束了基于RS-232(DB-9)串口与PC 机联络的单片机设备的使用围。当前USB接口逐步取代RS-232(DB-9)串口已是大势所趋,单片机同计算机的USB通信在实际工作中的应用围也将越来越广。本文所介

串口通信的连线方法

转载:目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。 1.DB9和DB25的常用信号脚说明 9针串口(DB9) 25针串口(DB25[被屏蔽广告]) 针号功能说明缩写针号功能说明缩写 1 数据载波检测 DCD 8 数据载波检测 DCD 2 接收数据 RXD 3 接收数据 RXD 3 发送数据 TXD 2 发送数据 TXD 4 数据终端准备 DTR 20 数据终端准备 DTR 5 信号地 GND 7 信号地 GND 6 数据设备准备好 DSR 6 数据准备好 DSR 7 请求发送 RTS 4 请求发送 RTS 8 清除发送 CTS 5 清除发送 CTS 9 振铃指示 DELL 22 振铃指示 DELL 2.RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连 · 同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; · 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口) 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼此交叉,信号地对应相接,就能百战百胜。 3.串口调试中要注意的几点: 串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果;强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 单工、半双工和全双工的定义 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。 如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。 如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。 电话线就是二线全双工信道。由于采用了回波抵消技术,双向的传输信号不致混淆不清。双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输。 奇偶校验 串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符‘E’,其各位为:0100,0101=45H D7 D0 由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。 最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。

测试电脑的串口是否是好的 最完整最可靠的方法 就是 连接一个真实 的串口通信线路

测试电脑的串口是否是好的最完整最可靠的方法就是连接一个真实的串口通信线路,2 端用相应软件,如串口调试助手之类的,相互发送发送数据,看另外一端是否能正常接收! 当然,也可以简单的单台机器测试,即短接串口的2、3 两针,用相应软件,如串口调试助手,发送数据,看能否回显发送的数据 串口测试工具使用说明之一——串口调试工具 回复 6 | 人气1387 | 收藏 | 打印 | 推荐给版主 分享文章到: ye_w 个人主页给TA发消息加TA为好友发表于:2010-09-30 19:52:48 楼主 使用串口实现网络通讯,不仅仅需要熟悉控制双方的指令和相关的协议,而且还需要善于使用串口测试工具。在串口测试工具中,最常用的就是串口调试工具。这个串口调试工具网络上一大把,大家百度一下就能下载到(包括我逐步发布的调试工具,都不会提供资源,请大家直接去网络上查找),常用的包括:串口调试助手,串口精灵,Comm等。我也一直使用串口调试助手,下面就是用图形并茂的方式来介绍,请大家指出不足,以便共同进步。 串口调试助手,网络上的版本也有不少,我截2个不同版本的图,但本质没有区别 版本一 怎样测试串口和串口线是否正常 一步:把串口线或者USB转串口线插到计算机上。 二步:打开串口调试助手

接着选择串口,串口线和USB转串口的端口号查看路径: 电脑上--右键--属性--硬件--设备管理器-端口(COM和LPT),点 开端口前面的+号查看即可。 注释:1、USB-SERIAL CH340(COM4)就是USB转串口的端口号 2、通讯端口(COM1)是计算机原来自带的端口号 第三步:设置串口调试助手(见下图) 1、串口:COM4是和串口线或者USB转串口线在上述路径中查看到的端口号。 2、发送的字符/数据:图片上输入的是59,你可以随便输入2位数字。 3、其余设置按照下图。

串行通信的同步传输与异步传输

------分隔线---------------------------- 这里所讲的同步传输和异步传输不同于VC 串口编程时的同步和异步,这里只讲串口硬件层传输的两种模式,有关VC 串口编程的同步模式和异步模式我将另外写一篇文章。 这里所讲的同步和异步是从硬件层级来讲的。首先要知道什么串行传输,串行传输是指数据的二进制代码在一条物理信道上以位为单位按时间顺序逐位传输的方式。串行传输时,发送端逐位发送,接收端逐位接受,同时,还要对所接受的字符进行确认,所以收发双方要采取同步措施(即判断什么时候有数据,数据是什么,什么时候结束传输)。 同步措施有两种,一种在传输的每个(帧)数据前(数据可能是5~8位)加一个起始位,后面加一位校验位及一位或两位的停止位组成一帧数据,这各方式称为异步传输;另一种是在一次传输(可能是多个字节)前加同步字节,可能不止一个字节,最后加校验字节或代表结束标志的字节,这种方式称为同步传输方式。 异步传输 异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它

们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII 代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。 异步传输存在一个潜在的问题,即接收方并不知道数据会在什么时候到达。在它检测到数据并做出响应之前,第一个比特已经过去了。这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;在传输结束时,一个停止位表示该次传输信息的终止。按照惯例,空闲(没有传送数据)的线路实际携带着一个代表二进制1的信号,异步传输的开始位使信号变成0,其他的比特位使信号随传输的数据信息而变化。最后,停止位使信号重新变回1,该信号一直保持到下一个开始位到达。例如在键盘上数字“1”,按照8比特位的扩展ASCII编码,将发送“00110001”,同时需要在8比特位的前面加一个起始位,后面一个停止位。 异步传输的实现比较容易,由于每个信息都加上了“同步”信息,因此计时的漂移不会产生大的积累,但却产生了较多的开销。在上面的例子,每8个比特要多传送两个比特,总的传输负载就增加25%。对于数据传输量很小的低速设备来说问题不大,但对于那些数据传输量很大的高速设备来说,25%的负载增值就相当严重了。因此,异步传输常用于低速设备。

通信原理软件实验7帧同步

武汉大学教学实验报告 电子信息学院通信工程专业时间2015/12/22 实验名称位同步信号的提取指导教师吴静 姓名莫帮杰年级2013级学号2013301200227 一、实验目的 1.掌握巴克码识别原理 2.掌握同步保护原理 3.掌握假同步、漏同步、捕捉态、维持态概念 二、实验内容 1.根据原理设计帧同步系统,使系统可以正常工作。 2.通过波形来加深理解帧同步原理 三、基本原理 在时分复用系统中,为了正确的传输信息,必须在信息码流屮插入一定数量的帧同步码,可以集屮插入也可以分散插入。本实验主要对集中插入同步法进行分析。 在集中插入法中,要求插入的同步码在接收端进行同步识别时出现的伪同步的概率尽可能的小,并且要求该码组有尖锐的自相关函数,以便于识别,同时要求接收机端的同步码识别器要尽量简单。目前用的比较广泛的是性能良好的巴克码,七位巴克码是1110010。 帧同步系统基本结构如图所示,该系统可以分为两个部分:巴克码识别器和同步保护。巴克码识别器包括移位寄存器、相加器和判决器,其余部分完成保护功能。

当基带信号里的帧同步码输入时,识别器就会发出判别信号P。P的上升沿与最后一位帧同步码的结束时刻对齐。 24电路是将位同步信号进行24分频得到的,其周期与输入信号的周期一样,但相位不一定相同。当识别器输出一个P信号时(即捕获到一组正确的帧同步码),在P信号和同步保护器作用下,24电路清零,使输出的24电路输出信号下降沿与P信号上升沿对齐,该信号驱动一个单稳态电路,单稳态电路设置为下降沿触发,其输出信号上升沿比+24电路输出信号下降沿稍有滞后。 同步器最终输出帧同步信号FS-OUT是由同步保护器中的与门3对单稳输出的信号及状态触发器的Q端输出信号进行“与”运算得到的。 电路中同步保护器的作用是减小假同步和漏同步。 当帧同步码没有到达时,识别器输出为0,与门1关闭,与门2

实验9指导书:串口通信实验

实验指导书:串口通信实验 实验目的: 通过程序,理解并验证串口通信的编程方法和机制。 本次实验分两个环节,第一环节为用程序发送字符串,用linux命令在另一窗口直接从串口读取; 第二环节为用发送程序发送字符串,用接收程序在另一窗口读取串口并显示。 要求必须完成第一环节,而第二环节为选作。 本实验在虚拟机环境下完成,利用虚拟机创建两个虚拟串口,基于这两个虚拟串口完成串口通信实验。 实验内容: 本次实验需要在linux环境下,用vi工具输入对应的程序,并编译通过,运行后观察结果是否正确。 一、设置虚拟机串口 1.1 VMware的串口: 一个虚拟机最多可以添加四个虚拟串口,有如下3个方法配置虚拟串口: (1) 连接一个虚拟串口到宿主机的物理串口。 (2) 连接一个虚拟串口到宿主机上的一个文件。 (3) 在两个虚拟机之间建立一个直接的连接,或者将虚拟机的串口与宿主机的应用程序连接。 1.2 为虚拟机添加串口 首先要保证虚拟机下的linux处于关机(power off)状态, (1) 选择菜单中的虚拟机 设置(英文版为:VM -> Settings),在硬件(Hardware)标签页中,如 果已有串行端口(serial port),则选中该串口,并点选移除。

(2) 点击Add按钮,在Add Hardware Wizard对话框中选择Serial Port,点击next,分两次添加两 个串口,具体的选项如下图: 串口2的设置:

注意两个串口都使用了命名管道方式,但一个是服务器端,一个是客户端。 (3) 启动linux操作系统,测试两个串口是否设置成功 在linux桌面空白处点击右键,打开两个终端窗口。在其中一个窗口(称为窗口A)中,建立工作目录,并进入该目录。即,执行下述命令: [1]cd /home [2]mkdir src [3]cd src [4]cat /dev/ttyS1 //注意是大写的S 在另一个窗口(称为窗口B)执行下述命令:

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协议举例

相关文档
最新文档