构建全球华人科学博客圈 返回首页 微博 RSS订阅 帮助 注册 | 登录
博文
[转载]SPI常见错误
已有 438 次阅读 2013-6-26 19:39 | 系统分类:科研笔记
四.SPI总线常见错误
1 SPR设定错误
在从器件时钟频率小于主器件时钟频率时,如果SCK的速率设得太快,将导致接收到的数据不正确(SPI接口本身难以
判断收到的数据是否正确,要在软件中处理)。
整个系统的速度受三个因素影响:主器件时钟CLK主、从器件时钟CLK从和同步串行时钟SCK,其中SCK是对CLK主的分
频,CLK从和CLK主是异步的。要使SCK无差错无遗漏地被从器件所检测到,从器件的时钟CLK从必须要足够快。下面以
SCK设置为CLK主的4分频的波形为例,分析同步串行时钟、主时钟和从时钟之间的关系。
图1主从时钟和SCK的关系
如图1所示,当T从<Tsck/2,即T从<2T主时,无论主时钟和从时钟之间的相位关系如何,在从器件CLK从的上升沿必
然能够检测到SCK的低电平,即SCK=0的范围内至少包含一个CLK从的上升沿。
图2中,当T从≥TSCK/2=2T主时,在clk_s的两个上升沿都检测不到SCK的低电平,这样从器件就会漏掉一个SCK。在某
些相位条件下,即使 CLK从侥幸能检测到SCK的低电平,也不能保证可以继续检测到下一个SCK。只要遗漏了一个SCK,
就相当于串行数据漏掉了一个位,后面继续接收/发送的数据就都是错误的了。
图2主从时钟和SCK的关系
根据以上的分析,SPR和主从时钟比的关系如表1所列。
表1 SPR的设置和主从时钟周期比值之间的关系
在发送数据之前按照表1对SPR进行设置,SPR设定错误可以完全避免。
2 模式错误(MODF)
模式错误表示的是主从模式选择的设置和引脚SS的连接不一致。
器件工作在主模式的时候(MSTR=1),它的片选信号SS引脚必须接高电平。在发送数据的过程中,如果它的SS从高
电平跳至低电平,在SS的下降沿,SPI模块将检测到模式错误,对MODF位置1,强制器件从主模式转入从模式(即令
MSTR=0),清空内部计数器counter,并结束正在进行的数据传输,如图 3(a)所示。
对从模式(MSTR=0),在没有数据传送的时候,SS高电平表示从器件未被选中,从器件不工作,MISO输出高阻;在
加为好友 给我留言
打个招呼 发送消息
江中泽
zhongzejiang的个人博客 分享
http://blog.sciencenet.cn/u/zhongzejiang