OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7748|回复: 22

SPI时序的疑惑

[复制链接]

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
发表于 2015-3-18 18:44:56 | 显示全部楼层 |阅读模式
5金钱



大哥们,帮帮忙
这个SPI通信时序的一个图,我研究了很久,还是对时序不太明白 ,请问一下你们,比如我设置CPHA=1,CPOL=1,
在我上图标志的几个红色区域中,是不是当来了个上升沿的时候,主设备对MISO与从设备对MOSI同一时刻进行采样吗?

最佳答案

查看完整内容[请看2#楼]

以你画红圈的情况为例: 前提:约定上升沿有效!(这个约定必须遵守子机的规定,所以主机要有千变万化的能力,以适应各种器件。CPU就是这样。) 注意看SCK时钟,常态为高! 1、主机开始操作时,会把时钟拉低(即第一个下降沿),实际上在通知子机:该通话了!   基本在同时,稍前或稍后一点都可以,主机会把自己的第一位数据放在 MOSI 上。    子机收到这个下降沿,如果有数据要发送,就会立刻把第 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 18:44:57 | 显示全部楼层


以你画红圈的情况为例:

前提:约定上升沿有效!(这个约定必须遵守子机的规定,所以主机要有千变万化的能力,以适应各种器件。CPU就是这样。)
注意看SCK时钟,常态为高!


1、主机开始操作时,会把时钟拉低(即第一个下降沿),实际上在通知子机:该通话了!
  基本在同时,稍前或稍后一点都可以,主机会把自己的第一位数据放在 MOSI 上。
   子机收到这个下降沿,如果有数据要发送,就会立刻把第一位(bit)数据放到 MISO 线上。

2、主机经过一段时间,就可以读取 MISO 线。这个时延有多长,完全由子机的性能决定!
   想一想,子机器件对 SCK 的频率、高低电平的宽度都有规定,包括这个参数。必须根据这些参数来选择时钟的频率。

3、主机发出上升沿。
  实际上,2、3的顺序并不严格。主机可以先读取数据(前提是等了足够的时间),再发出上升沿;也可以先发上升沿,然后再读数据(前提是中间不能隔太久)。
  这个上升沿的作用,不是为主机自己用的,而是告诉子机:可以读数据了!
  子机会在上升沿后读走 MOSI 的数据。

4、以后,重复以上过程,直至约定的 8 位或 16 位全部完成。
   完成后,SCK 保持常态电平。


回复

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-2-2
在线时间
3 小时
发表于 2015-3-18 19:06:32 | 显示全部楼层
要分主机和从机,主机和从机要配置成一样。
主机:在下降沿的时候改变MOSI电平,在上升沿的时候读取MISO电平;
从机:在下降沿的时候改变MISO电平,在上升沿的时候读取MOSI电平。
回复

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-2-2
在线时间
3 小时
发表于 2015-3-18 19:22:13 | 显示全部楼层
要分主机和从机,主机和从机要配置成一样。
主机:在下降沿的时候改变MOSI电平,在上升沿的时候读取MISO电平;
从机:在下降沿的时候改变MISO电平,在上升沿的时候读取MOSI电平。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 19:39:03 | 显示全部楼层
回复【3楼】断斜阳:
---------------------------------
赞一个。
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 19:41:30 | 显示全部楼层
回复【3楼】断斜阳:
---------------------------------
那要是配置一样的话,主机和从机在第一个采样点同时采样吗?就像我上图中用红色标志最下面的一个那样?
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 19:45:19 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
是不是无论对主机或是从机,都是在下降沿的时候输出数据,在上升沿的时候读入数据?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 20:02:49 | 显示全部楼层

这样:
先站在子机的角度想,我怎么知道主机在说话?我又该什么时候回话?
再站在主机的角度想,我怎么让子机说话?

想明白这个道理,任何时序都不难理解。

至于上升沿还是下降沿,那就是一个约定,相当于“摔杯为号”、“眨眼为号”的区别。


回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 20:10:39 | 显示全部楼层
回复【7楼】xuande:
---------------------------------
不太理解你的话,那这样,我说说我的理解,你看看对不对,设置CPHA=1,CPOL=1,在下降沿的时候,主机通过MOSI输出数据,从机机通过MISO输出数据,
在接下来的上升沿中,主机读取从机通过MISO输出的数据,从机读取主机通过MOSI输出的数据
这样理解对不对 ?
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 20:57:57 | 显示全部楼层
回复【9楼】xuande:
---------------------------------
好  ,慢慢写,我等你的答案 哈哈
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 21:11:38 | 显示全部楼层
就这么200个字,大概用了四、五十分钟时间。
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 21:21:36 | 显示全部楼层
回复【9楼】xuande:
---------------------------------
牛人,太谢谢你了,理解了好久,都理解不了,你的几句话,我就理解了。

那么当CPOL=0,CPAH=1的时候,就是上面那个图第二个时序,
可以像你那样类似去理解吗?
1 第一个上升沿时候,主机告诉从机该通话了,基本在同时,稍前或稍后一点都可以,主机会把自己的第一位数据放在 MOSI 上。
 子机收到这个上降沿,如果有数据要发送,就会立刻把第一位(bit)数据放到 MISO 线上。

2 主机把时钟拉低(下降沿),告诉从机,可以读取数据了。子机会在下升沿后读走 MOSI 的数据。

两个时序的理解类似的?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 21:26:16 | 显示全部楼层
回复【12楼】前进的小兵:
---------------------------------

对。

前面说了,上升还是下降,就是“摔杯为号”和“眨眼为号”的区别。

最好找个子机器件的手册,去理解里面的各种时间参数,对以后理解“时序”非常有帮助。

为什么有的给最大值,有的却是最小值?


回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 21:34:25 | 显示全部楼层



不过我对CPHA=1的时序就不太理解,假如 CPHA=0,CPOL=0,如上面个图所示,
第一个上降沿是采样点,就是主机告诉子机可以读取数据了,但是这个上升沿前面没有一个下降沿(就是主机告诉子机该通话了)
这种情况有点不理解了。


回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 21:37:06 | 显示全部楼层
回复【13楼】xuande:
---------------------------------
我这几天都在看SPI与FLASH的通信,对FLASH有点了解。
你再帮我看看 CPHA=0,CPOL=0,时序的情况 ,呵呵
帮我解释下 好吗?呵呵
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 21:40:21 | 显示全部楼层
CS 出场了。。。。
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 21:42:17 | 显示全部楼层
回复【16楼】xuande:
---------------------------------
什么?呵呵 ,不太明白,可以解释下吗?呵呵
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 21:45:15 | 显示全部楼层
把CS下降沿当作时钟,再想想。

第二种时序,子机自己选择了这种时序,必定要在 cs 为低时,就无条件地把数据放出来;然后听 SCK 指挥。


回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 21:58:37 | 显示全部楼层
回复【18楼】xuande:
---------------------------------
大哥,太感谢你了,我有点明白了。

假如stm32用SPI的模式0跟flas通信,那么在CS由高变低后,就是主机告诉从机该通话了,从机检测到CS的下降沿后,从机开始输出数据在MISO上,
而主机也在第一个上升沿之前的一段时间输出数据在MOSI上,在第一个上升沿到来后,从机就开始读取数据,而主机也在这个上升沿之间读取数据。
可以这样理解吗?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 22:05:26 | 显示全部楼层
回复【19楼】前进的小兵:
---------------------------------
对。
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 22:13:42 | 显示全部楼层
回复【20楼】xuande:
---------------------------------
你对SPI通信的理解还是很透彻的,我顺便问问你一些FLASH的问题,我看了FLASH的一些内容,说W25Q64 flas可以支持SPI通信模式的
模式0和模式3,通信要采用SPI的模式0或则模式3都是主机(stm32)设置的,但是FLASH怎么知道主机采用的是模式0还是模式3,
就是说,FLASH在检测到CS的下降沿后是否要无条件的交出第一个数据?
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11558
金钱
11558
注册时间
2014-4-1
在线时间
1318 小时
发表于 2015-3-18 22:26:27 | 显示全部楼层
其他的,自己看吧。
回复

使用道具 举报

28

主题

125

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
283
金钱
283
注册时间
2015-2-17
在线时间
9 小时
 楼主| 发表于 2015-3-18 22:32:22 | 显示全部楼层
回复【22楼】xuande:
---------------------------------
嗯  好,谢谢你了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 19:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表