[资料分享] SPI通信,从机没有反应

xhrabbit   2008-10-13 23:23 楼主
调试SPI通信的过程中,出现了这样的现象,想请大家帮忙指教一下,非常感谢!
SPI采用的是三线方式,主从机是相同的单片机。
SCK——主机提供时钟信号
MOSI——master output slave input
MISO——master input slave output
用示波器测量三个脚发现,SCK和MOSI都是正常的,发送的数据也是对的。
但每次主机发送完一字节数据后,从机发送过来的数据却都是FF,而我的程序里不是要求从机发送这样的数据的,如图。这是不是说明,从机没有反应?问题可能出在哪里呢?想不明白所以请教大家了,非常感谢!
  • SPI三线方式.GIF
  • SCK和从机发送波形.GIF

回复评论 (12)

回复:SPI通信,从机没有反应

我记得你就P0.7引脚一事发过求助帖子,怎么这次又有问题了,看来你是刚入门吧,对很多知识都不太熟悉啊。做事要认真,有资料要仔细阅读,搞电子的千万不能急躁,急功近利,急于求成。

    你原来从机的接法错了,这样从机当然不会影响了,都以主机的形式对外通信的,将从机的MOSI和MISO交换一下试试吧!
    这又是一个输入与输出的问题,又是两个输入引脚接在一起了,两个输出引脚也接在一起了,你说这样能工作吗?其实这是一个很简单的问题,要仔细阅读资料就会清楚的。

[ 本帖最后由 忙忙草 于 2008-10-14 07:34 编辑 ]
我公司专业生产嵌入式以太网产品!
点赞  2008-10-14 07:26

回复 沙发 忙忙草 的帖子

忙忙草你好,谢谢你的批评与指正,我确实刚开始入门,很多东西都不懂的。
恩,我会更认真去对待问题的
关于这个问题,我又仔细想了一下,看了看书,好像是没有接错的。
主器件的MOSI脚作为输出脚,那么从器件的MOSI脚就应该作为输入脚;
从器件的MISO脚作为输出脚,那么主器件的MISO脚就应该作为输入脚。
这个问题我也思考过,但觉得还是应该这么接。
不知道对不对?还请指教。谢谢你呀!
点赞  2008-10-14 08:16
茫茫草说的俩输出相撞的可能性很大,不过因跟信号名的标法有关系,又不好100%断定。
方便的话建议兔兔把主从俩器件的具体型号写出来,一查数据手册就知道了。
另外,要判断俩器件输出是否冲突,可测一下主鸡发送时的数据线,如果不是像SCK那样干净利落的0~3.3V振幅,就说明真可能顶着牛呢。:D
点赞  2008-10-14 09:07

哈,谢谢仙猫,忙忙草

主从器件都是C8051410,图是按照数据手册上连接的,见Page192。不知道自己是不是真的接错了?

现在从波形上看,主机发送的波形是像SCK一样的方波,数了一下,数据也是对的;
从机也有反应了,但奇怪的是从机的波形好像左边被削去了小半边身子,是倾斜着的,波形的大致形状见图。振幅可以达到3.3V。这可能是什么原因呢?

再从RAM中看,从机主机那里接收到的数据,和主机从机那里接收到的数据都是对的。
谢谢你们哈,不好意思借别人的手机照相了,所以只能凑合了
  • 从机波形略图.GIF
点赞  2008-10-14 09:48
“另外,要判断俩器件输出是否冲突,可测一下主鸡发送时的数据线,如果不是像SCK那样干净利落的0~3.3V振幅,就说明真可能顶着牛呢。”
还想多问一嘴,这样判断的依据是什么呢?
如果真的顶牛了,输出脚接输出脚,那么两边的信号都发不出去吧?那现象就是“不像SCK那样干净利落的0~3.3V振幅”这样子哈?我可以试一下,但不知道怎么分析出来会是这样子。
恩,谢谢!
点赞  2008-10-14 09:58
看手册,好像SDA的方向是对的呢,要不就是软件的设置问题了。
如果可以方便地断开主从鸡的话,用一个数kΩ电阻分别对MISO和MOSI上拉、下拉一下看看电平有没变化,就可知道该脚是输入还是输出了。
上升沿倾斜说明驱动能力太弱,不知硬件是咋接的,倾斜有μs级?
BTW,这个示波器应该能把波形图像存到U盘里去吧?
点赞  2008-10-14 10:15

假如输出顶牛...

一方玩命往上拉,另一方玩命往下拽,超过了输出脚的负载能力,结果是被限流。
介于Vcc和GND之间不上不下的电平,就反映了这种情况。
点赞  2008-10-14 10:18

看了一哈

把主机的MISO和从机MOSI两个输出脚接起来,看了一哈波形,SCK信号不变,输出脚的波形是一直保持高电平(3.3V)。
报告完毕,还请指正!
点赞  2008-10-14 10:19
还有,输出顶牛一般不会立刻烧芯片,但毕竟对芯片的身体健康不太好。
要试,也别拿正式板子试,拿块废弃的板子玩玩就行了哈。:D
点赞  2008-10-14 10:21
引用: 原帖由 xhrabbit 于 2008-10-14 10:19 发表
把主机的MISO和从机MOSI两个输出脚接起来,看了一哈波形,SCK信号不变,输出脚的波形是一直保持高电平(3.3V)。
报告完毕,还请指正!

看来,米索和摩丝还真顶牛了,快快撤退……
点赞  2008-10-14 10:26

谢谢仙猫

引用: 原帖由 仙猫 于 2008-10-14 10:15 发表
如果可以方便地断开主从鸡的话,用一个数kΩ电阻分别对MISO和MOSI上拉、下拉一下看看电平有没变化,就可知道该脚是输入还是输出了。
恩,这个方法记下了,说实话不知道为什么,不过我想自己想明白。
上升沿倾斜说明驱动能力太弱,不知硬件是咋接的,倾斜有μs级?
频率约等于50KHz,所以周期约等于20us,倾斜<10us。驱动能力太弱?不是很明白。偶再看看书。
BTW,这个示波器应该能把波形图像存到U盘里去吧?
嘿嘿,是的,偶笨,还没学会,今天一定学会。

还好已经撤退了,没有重大伤亡。
点赞  2008-10-14 10:41
学习学习学习。。。。。。。。。。
粗体文字 Abc
点赞  2009-8-6 18:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复