9643|7

97

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

SPI三线制通讯——位计数器问题 [复制链接]

我用的是C8051F系列的单片机,datasheet上面说:
在3线制模式下,从机始终处于激活状态,在该模式下,从机位计数器的复位只能通过禁止SPI,再重新使能SPI实现。
当位计数器为8时,中断标志位将置1,那么按照上面的话,这时是不是应该禁止SPI,再使能SPI,才能保证下一个数据的接收呢?
可是为啥我没有进行这样的操作,也能正确收到数据呢?
如果是四线制方式,位计数器就可以自动复位吗?为啥呢?
不好意思呀,谢谢大家了。
此帖出自单片机论坛

最新回复

对啦。 噪声干扰源不一定是振荡器,附近马达、空调、电吹风电源的ON/OFF====,那些大电流的东东都是强干扰,可能在电路里引起电平瞬变,一旦变化量超过逻辑电路的输入阈值,没准就会造成计数器误动作一次……  详情 回复 发表于 2008-10-17 16:50
点赞 关注
 

回复
举报

3138

帖子

0

TA的资源

裸片初长成(初级)

沙发
 

连猜带蒙....

查了一哈该芯片的手册,上面说3线式是MOSI、MISO和SCK。
在从鸡一方看来,数据同步除了SCK就没别的手段了。但SCK只是位同步,数满8位才是字同步,对8?。
再设想一哈硬件会是怎样实现的呢?很简单,每来8个SCK就发一个中断请求出去。
那么问题是,假如在通信过程中,突遇噪声等意外的影响,使得SCK计数器计错了一点——那就糟了,从此通信数据永远是移错位的,除非负负得正,等下次意外错误恰巧再把计数器纠正过来。
因此,丛鸡最好在通信开始之前,有事没事给计数器清清零,以保证从零开始计数。当然,不清零也未必通信会错,但那是个提高可靠性的建议,强烈建议。
至于4线式为何可省去这个麻烦,是因为主鸡多给出了一个信号,在一般IC里叫(片选)CS。丛鸡看CS处于“有效”状态时才开始工作,否则就偷懒休息,休息时计数器总处于清零状态,等待新的开始。
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

回复 仙猫 的帖子

谢谢仙猫!
试着叙述一下,看看自己是不是真的明白了:
在三线方式下,
当没有对计数器清零(禁止SPI,使能SPI)时,那么随着数据的发送data0,data1,data2……datan,计数器会自动地自增,从1~8,9~16……;
如果每发送一字节数据,就将计数器清零(禁止SPI,使能SPI),那么每次计数器都是从1~8反复循环。
是这样理解吗?
但是我不明白,在噪声的干扰下,记错数据是怎么发生的?是不是由于噪声的干扰数据线上的数据已经发生错误了?那么经常对计数器进行复位也不能阻止数据的错误,而只是防止了错误的蔓延呢?

很抱歉才回复,正好LD来视察了嘿嘿
非常感谢!
此帖出自单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

4
 

不对,感觉还是没理解

采错了一位数据究竟是怎样发生的呢?
此帖出自单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

5
 

这里对“错位”需要理解的是....

数据线错,还不是最致命的,因为一个数据错并不会连累其他,而且硬件上还有多点采样、多数表决等招数去提高可靠性。最要命的是计数器把SCK时钟的个数数错,这叫上帝看也头疼。
8位数据传送的位计数器长度应该是3位:0~7循环。通信开始时是0逐渐count-up,收到字的最后一位又回到0,硬件构筑成当7→0变化时产生中断:
           int            int
           ↑            ↑
0→1→2→3→4→5→6→7→0→1→2→3→4→5→6→7→0→1→2→3→

假如,通信中在4→5之间计数器被噪声逗了一哈,多计了一次数(x),结果就变成:
           int            int
           ↑            ↑
0→1→2→3→4→x→5→6→7→0→1→2→3→4→5→6→7→0→1→2→3→

这样如果不矫正的话,丛鸡收/发的数据第1个错了不必说,以后一直都要错下去,每个字都是前后俩数据的残部拼成的!

[ 本帖最后由 仙猫 于 2008-10-17 16:02 编辑 ]
此帖出自单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

6
 

谢谢仙猫的形象描述!偶在努力理解哈

“计数器被噪声逗了一哈”,
意思是不是,噪声干扰的是振荡器,而导致计数器把本来不是时钟的脉冲进行了一次计数?
这样就相当于采错了一位数据吧?因为本来这个时候不应该采数据的,所以造成了数据的错误和错位。
这样理解对吗?
谢谢!
此帖出自单片机论坛
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

7
 
对啦。
噪声干扰源不一定是振荡器,附近马达、空调、电吹风电源的ON/OFF====,那些大电流的东东都是强干扰,可能在电路里引起电平瞬变,一旦变化量超过逻辑电路的输入阈值,没准就会造成计数器误动作一次……
此帖出自单片机论坛
 
 
 

回复

97

帖子

0

TA的资源

五彩晶圆(初级)

8
 

仙猫说得很清楚啦,谢谢

只是一些电路的东东偶还不是很理解,恩,加油加油。
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表