SPI详解(AVR).doc

上传人:豆**** 文档编号:29930909 上传时间:2022-08-02 格式:DOC 页数:8 大小:182KB
返回 下载 相关 举报
SPI详解(AVR).doc_第1页
第1页 / 共8页
SPI详解(AVR).doc_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《SPI详解(AVR).doc》由会员分享,可在线阅读,更多相关《SPI详解(AVR).doc(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、SPI总线详细解析 更新于2010-08-24 20:20:36 文章出处: 与非网 关键字: SPI 串行通讯 主从时钟 一.SPI总线简介串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口。SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。当SPI工作时,在移位寄存器中的数据逐位从输出引脚(MOSI)输出(高位在前),

2、同时从输入引脚(MISO)接收的数据逐位移到移位寄存器(高位在前)。发送一个字节后,从另一个外围器件接收的字节数据进入移位寄存器中。即完成一个字节数据传输的实质是两个器件寄存器内容的交换。主SPI的时钟信号(SCK)使传输同步。其典型系统框图如下图所示。二.SPI总线主要特点 全双工; 可以当作主机或从机工作; 提供频率可编程时钟; 发送结束中断标志; 写冲突保护;.总线竞争保护等。三.SPI总线工作方式SPI总线有四种工作方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):四种工作方式时序分别为:时序详解:CPOL:时钟极性选择,为0时SPI总线空闲为低电平,为1时SPI总线空闲

3、为高电平CPHA:时钟相位选择,为0时在SCK第一个跳变沿采样,为1时在SCK第二个跳变沿采样工作方式1:当CPHA=0、CPOL=0时SPI总线工作在方式1。MISO引脚上的数据在第一个SPSCK沿跳变之前已经上线了,而为了保证正确传输,MOSI引脚的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,首先将数据上线,然后在同步时钟信号的上升沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(下降沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。工作方式2:当CPHA=0、CPOL=1时SPI总线工作在方式2。与前者唯一不同之处只是在同步时钟信号的下

4、降沿时捕捉位信号,上升沿时下一位数据上线。工作方式3:当CPHA=1、CPOL=0时SPI总线工作在方式3。MISO引脚和MOSI引脚上的数据的MSB位必须与SPSCK的第一个边沿同步,在SPI传输过程中,在同步时钟信号周期开始时(上升沿)数据上线,然后在同步时钟信号的下降沿时,SPI的接收方捕捉位信号,在时钟信号的一个周期结束时(上升沿),下一位数据信号上线,再重复上述过程,直到一个字节的8位信号传输结束。工作方式4:当CPHA=1、CPOL=1时SPI总线工作在方式4。与前者唯一不同之处只是在同步时钟信号的上升沿时捕捉位信号,下降沿时下一位数据上线。四.SPI总线常见错误1 SPR设定错误

5、在从器件时钟频率小于主器件时钟频率时,如果SCK的速率设得太快,将导致接收到的数据不正确(SPI接口本身难以判断收到的数据是否正确,要在软件中处理)。整个系统的速度受三个因素影响:主器件时钟CLK主、从器件时钟CLK从和同步串行时钟SCK,其中SCK是对CLK主的分频,CLK从和CLK主是异步的。要使SCK无差错无遗漏地被从器件所检测到,从器件的时钟CLK从必须要足够快。下面以SCK设置为CLK主的4分频的波形为例,分析同步串行时钟、主时钟和从时钟之间的关系。图1主从时钟和SCK的关系如图1所示,当T从Tsck/2,即T从2T主时,无论主时钟和从时钟之间的相位关系如何,在从器件CLK从的上升沿

6、必然能够检测到SCK的低电平,即SCK0的范围内至少包含一个CLK从的上升沿。图2中,当T从TSCK/22T主时,在clk_s的两个上升沿都检测不到SCK的低电平,这样从器件就会漏掉一个SCK。在某些相位条件下,即使CLK从侥幸能检测到SCK的低电平,也不能保证可以继续检测到下一个SCK。只要遗漏了一个SCK,就相当于串行数据漏掉了一个位,后面继续接收/发送的数据就都是错误的了。图2主从时钟和SCK的关系根据以上的分析,SPR和主从时钟比的关系如表1所列。表1 SPR的设置和主从时钟周期比值之间的关系在发送数据之前按照表1对SPR进行设置,SPR设定错误可以完全避免。2 模式错误(MODF)模

7、式错误表示的是主从模式选择的设置和引脚SS的连接不一致。器件工作在主模式的时候(MSTR=1),它的片选信号SS引脚必须接高电平。在发送数据的过程中,如果它的SS从高电平跳至低电平,在SS的下降沿,SPI模块将检测到模式错误,对MODF位置1,强制器件从主模式转入从模式(即令MSTR0),清空内部计数器counter,并结束正在进行的数据传输,如图3(a)所示。对从模式(MSTR=0),在没有数据传送的时候,SS高电平表示从器件未被选中,从器件不工作,MISO输出高阻;在数据传输过程中,片选信号SS必须接低电平,且SS不允许跳变。如果SS从低电平跳到高电平,在SS的上跳沿,SPI模块也将检测到

8、模式错误,清空内部计数器counter,并结束正在进行的数据传输。直到SS恢复为低电平,重新使SPEN1时,才重新开始工作,如图3(b)所示。图3模式错误的检测3 溢出错误(OVR)溢出错误表示连续传输多个数据时,后一个数据覆盖了前一个数据而产生的错误。状态标志SPIF表示的是数据传输正在进行中,它对数据的传输有较大的影响。主器件的SPIF有效由数据寄存器的空标志SPTE0产生,而从器件的SPIF有效则只能由收到的第一个SCK的跳变产生,且又由于从器件的SPIF和主器件发出的SCK是异步的,因此从器件的传输标志SPIF从相对于主器件的传输标志SPIF主有一定的滞后。如图4所示,在主器件连续发送

9、两个数据的时候将有可能导致从器件的传输标志和主器件下一个数据的传输标志相重叠(图4中虚线和阴影部分),第一个收到的数据必然被覆盖,第二个数据的收/发也必然出错,产生溢出错误。图4溢出错误通过对从器件的波形分析发现,counter8后的第一个时钟周期,数据最后一位的传输已经完成。在数据已经收/发完毕的情况下,counter8状态的长短对数据的正确性没有影响,因此可以缩短counter8的状态,以避免前一个SPIF和后一个SPIF相重叠。这样,从硬件上避免了这一阶段的溢出错误。但是,如果从器件工作速度不够快或者软件正在处理其他事情,在SPI接口接收到的数据尚未被读取的情况下,又接收到一个新的数据,

10、溢出错误还是会发生的。此时,SPI接口保护前一个数据不被覆盖,舍弃新收到的数据,置溢出标志OVR1;另外发出中断信号(如果该中断允许),通知从器件及时读取数据。4 偏移错误(OFST)SPI接口一般要求从器件先工作,然后主器件才开始发送数据。有时在主器件往外发送数据的过程中,从器件才开始工作,或者SCK受到外界干扰,从器件未能准确地接收到8个SCK。如图5所示,从器件接收到的8个SCK其实是属于主器件发送相邻的两个数据的SCK主。这时,主器件的SPIF和从器件的SPIF会发生重叠,数据发生了错位,从器件如果不对此进行纠正的话,数据的接收/发送便一直地错下去。图5偏移错误在一个数据的传输过程中,

11、SPR是不允许改变的,即SCK是均匀的,而从图5可以看出,从器件接收到的8个SCK并不均匀,它们是分别属于两个数据的,因此可以计算SCK的占空时间来判断是否发生了偏移错误。经分析,正常时候SCK1时的时钟周期数n的取值满足如下关系:但由于主从时钟之间是异步的,并且经过了取整,所以正常时候SCK1时的时钟周期计数值COUNT应满足:比如在图5中,COUNT的最大值COUNT(max)2或者1,都可认为是正常的。但当出现COUNT(max)8时,可以判定出现了偏移错误。在实际设计中,先记录下第一个COUNT(max)的值,如果后面又出现与记录值相差1以上的COUNT(max)出现,可知有偏移错误O

12、FST发生。SPI接口在“不均匀”的地方令SPIF1,然后准备等待下一个数据的第一个SCK。其中COUNT的位数固定为8位,为了避免溢出时重新从00H开始计数,当计数达到ffH时停止计数。5 其他错误设定不当,或者受到外界干扰,数据传输难免会发生错误,或者有时软件对错误的种类判断不清,必须要有一种方法强制SPI接口从错误状态中恢复过来。在SPI不工作,即SPEN0的时候,清除SPI模块内部几乎所有的状态(专用寄存器除外)。如果软件在接收数据的时候,能够发现数据有错误,无论是什么错误,都可以强制停止SPI的工作,重新进行数据传输。例如,在偏移错误(OFST)中,如果SPR2、SPR1和SPR0的

13、设置适当,也可以使SCK显得比较“均匀”。SPI接口硬件本身不可能检测到有错误,若用户软件能够发现错误,这时就可以强制停止SPI的传输工作,这样就可以避免错误一直持续下去。在应用中,如果对数据的正确性要求较高,除了要在软件上满足SPI接口的时序要求外,还需要在软件上作适当的处理。8解 理 的作软于需外要口0 满0上了高要 正数果中:。续误免就这网:出 / :输的止 制就这错 发件 ,错检可件口 匀:“/显 可 ,置的 和 果 错偏 如传行 进作 停 以都/错论误 错发, 候收件如外 存用&态有部 模 , 的 作工 在过复误错 强方 要必 不类误软时误 生难 据,界者, 不他 。计停 钟 钟主

14、? . 行 讯= ? / 到达当简开0从时了位定数 其 一数一等后 令”不口 误偏,出设( 的口 值 录出面值 ( 个下 先计实。 偏出以可 当的 是 认,或 ( )值最 ,中是:满 计周时 候时,推取且的异种之同主:行下满数。钟时 时分。于移了是 判空 外可,器个属进分,不并工 收器出串以行从的是。 的许允四 程传就数在移去下一发 。所下统系步输使(钟 。容存器质输据字一。寄位进字收外个后个发前高器移到据收 引时)在出 脚出位的存移作 当 机效低、 据入从机) (出从输主 行是四这的外各 成接据的线纠对果特特从错生数重 的和 件主主 数两邻件于实 接器所图 接地件从界受 或始才,过据发器时据

15、发才器,工从求一 (偏数读器知)工工断如信断外 出置数新,盖数一口 时的会还溢数个一,情读被数接接 情理正件够速工从如。错段一了件样叠相 后 个免以态 短因影性的对的 下毕收经在完传位据,周一的 析分器对溢误出产错必作收数二盖从然据个作作一部阴中图叠输据个件志传的致有候数送续主示图。定主 标传主于 输器因的 件器 于且,跳 一到只有 件而生 标器数有 件。的较传对,在正是示 标态的而数一据个时可个传程续表钟溢 错溢 检结错模示)标(志,始重, 重电复 直据行正并 部清错到检也 沿上,高到从果变许不平低必信,中输;出输 工器选件示电 时送数在= 式从所 如传数在并 计清0 (从式主制置位 ,到检

16、 ,沿 ,至跳 果中数发电接必号信,= (的主件致不 引设突择模护主表模 式免避以错 置行 照之在的值周从置争的 列等 系比钟和 的据系 钟主了了都数送收面,了漏串相 了要 一到继可不,的 检侥 即件位在 一会器从电 检升两_ 时 / 从,图升的 一少围0 ,的 检能升从 从,系的钟和钟, 从, ,图关 和主系的钟和时时串析为的频主 设以面足要 时器到检从漏错 使要是 从 分 中, 步同 件从 主影因度统整。处软在否是收以本 不的到将太得的 时钟器小钟件误设 错常 线线位沿,位捕升号步是处同者。在线 时 、= 式束结信的个一,述再号信下沿(结个号钟号信收接 沿的时同然据数(开周时在,输 ,边个 与 的的引 脚 式作 0 、 式线据一时,号捕下信时在之不者 方作 时 、= 方束输信 字到过上再号信位沿(结期号时号捉捕的,升的钟在然上将中过 ,步一 的 输确为了经之沿 在数脚 在线总时 式采变二第在,沿跳 时,相:电为空 时平电闲 0为极:解详:别式: 示实方总 工 是方最使中式种线

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com