zpwkxg 发表于 2014-6-22 12:36:24

请教SPI的时序图

本帖最后由 zpwkxg 于 2014-6-22 17:44 编辑


下图是AD2S1210的串口时序图。请问:
1.一下芯片SDO输出的MSB前端那一小段数据是什么意思?
2.在数据手册的第28页指出,SDO在SCLK的上升沿移出器件,SDI在SCLK的下降沿移入器件,SDO的数据在时钟上升沿输出时已经到数据有效末端了,不在一般情况下的中间吗?
3.这个芯片的SPI模式(模式0-模式3)是模式2吗?
4.SPI的模式我理解既对SDO,同时也是对SDI说的;在本SPI芯片的SDO,SDI的描述中,采样SDO是上升沿,采样SDI在下降沿?怎么理解呢 ,老鸟们请帮一下,谢谢

alias 发表于 2014-6-22 15:55:30

本帖最后由 alias 于 2014-6-22 16:00 编辑

MSB前端那一小段数据是不确定的意思。

由於芯片在SCLK上升沿於SDO脚输出有效数据,但脚位电平改变是需要时间的。你便不可以在SCLK上升沿读取数据,而要在SCLK下降沿才读取,不然你会不确定在SCLK上升沿过后多久数据才是真正有效及正确。

同理SDI的数据在SCLK下降沿出现后你便可以更改,且必须在下一个下降沿来到之前完成改动操作(最好是在上升沿出现时已完成改动)。

zpwkxg 发表于 2014-6-22 16:30:29

alias:这SPI 应该设置工作在什么模式?

alias 发表于 2014-6-22 17:12:21

本帖最后由 alias 于 2014-6-22 17:22 编辑

在上升沿首次出现后用家(或AD2S1210)才放置数据,在下降沿(第2次出现沿电平改变)才读取首位数据,这SPI(Mode0,1,2,3) 应该设置工作在 MODE 1 模式。

即 CPOL=0, CPHA=1。

zpwkxg 发表于 2014-6-22 17:26:12

谢谢回复。这个时序我现在也没看懂,我认为CPOL=1,SPI模式只能是1X,即模式2或模式3。

alias 发表于 2014-6-22 17:32:19

小心注意SPI模式有些人用SP0~SP3,也有人用模式1-模式4代表,我是前者。最可靠是说明 CPOL 及 CPHA。

zpwkxg 发表于 2014-6-22 17:57:20

本帖最后由 zpwkxg 于 2014-6-22 18:01 编辑


我在1楼的意思也应该写成(模式0-模式3),改回来了。现在SCLK在空闲时为1,我还是觉得模式应为1x,您四楼的话前半句没看懂,请继续指教;

还有个问题:看参考资料上说的上升沿或下降沿的采样(sampling)和设置(setup),这里的setup是否可以理解数据的写(数据改变)? 采样和设置分别是主机、从机在上升沿/下降沿、下降沿/上升沿的的动作对吗?

alias 发表于 2014-6-22 18:29:25

>>现在SCLK在空闲时为1

为何SCLK在空闲时为1? SCLK 在 AD2S1210 SPI 时是输入脚,你 MCU 控制 SCLK 的空闲电平可高可低,完全由你决定。但如果是高(1),那第一个沿转变必然是高至低,而高至低你已认同是用来读取有效数据,但这时数据并没有存在(因为上升沿后才有有效数据)。所以SCLK在空闲时不能是高(1)。

setup可以理解为数据的写(数据改变),sampling 就是读取数据。通常采样(sampling)和设置(setup)是在相对的沿发生。

zpwkxg 发表于 2014-6-22 18:45:52

我再看看理解一下吧,谢谢alias

zpwkxg 发表于 2014-6-22 19:22:23

本帖最后由 zpwkxg 于 2014-6-22 19:26 编辑

alias 发表于 2014-6-22 18:29
>>现在SCLK在空闲时为1

为何SCLK在空闲时为1? SCLK 在 AD2S1210 SPI 时是输入脚,你 MCU 控制 SCLK 的空 ...

alias:SDO数据线的数据采样和放置是从机SPI控制器的动作吗?或是:SDO数据采样读是主机SPI动作,SDO放置数据是从机SPI控制器的动作?谢谢




alias 发表于 2014-6-22 19:43:36

SDO数据线的数据放置是AD2S1210的动作,而SDO数据线的数据采样是MCU的动作。

SDI数据线的数据放置是MCU的动作,而SDI数据线的数据采样是AD2S1210的动作。

laoshuhunya 发表于 2014-6-22 21:24:43

关于SPI工作模式的问题,只要记住下面的口诀就行了(原创,呵呵):



解释如下:
03升,12降 —— 0、3模式为上升沿采样,1、2模式为下降沿采样。
低取小,高取大 —— SCK初始电平为低则模式取小值,SCK初始电平为高则模式取大值。要点:SCK初始电平高低由SS(即从机选择)信号有效边沿确定。

对于楼主的图,应用以上口诀:
楼主芯片数据手册中数据输入为下降沿采样,因此SPI为模式1或模式2。再看/FSYNC(即从机选择信号),有效下降沿对应的SCLK为低电平,所以模式取小值,即该SPI配置为模式1。
提醒:不必考虑在/FSYNC有效下降沿之前时钟处于什么状态。



zpwkxg 发表于 2014-6-22 21:37:06

感谢alias帮忙

zpwkxg 发表于 2014-6-22 21:42:02

AD2S1210 SPI时序是否可总结为:时钟下降沿采样(读),上升沿放置数据(写)?

laoshuhunya 发表于 2014-6-22 21:45:33

zpwkxg 发表于 2014-6-22 21:42
AD2S1210 SPI时序是否可总结为:时钟下降沿采样(读),上升沿放置数据(写)? ...

是的。
采样指的是对数据输入。

laoshuhunya 发表于 2014-6-22 21:47:05

zpwkxg 发表于 2014-6-22 21:42
AD2S1210 SPI时序是否可总结为:时钟下降沿采样(读),上升沿放置数据(写)? ...

有时也把读叫做“接收”,写叫做“发送”。

zpwkxg 发表于 2014-6-22 22:07:50

这里真是高手林立,看了那么多资料稀里糊涂,不如楼上两位老师指导一二,感谢ing!

zpwkxg 发表于 2014-6-22 22:09:25

支持原创,支持laoshuhunya,^_^

zpwkxg 发表于 2014-6-22 22:22:33

本帖最后由 zpwkxg 于 2014-6-22 22:24 编辑

下图是AD2S1200的时序图,以及其描述:

按照laoshu的口诀,SPI在下降沿采样,上升沿放置数据,SPI应该工作在模式3对吗?还有个问题请教,在文字描述中的clocked out和shifted out怎么理解?

laoshuhunya 发表于 2014-6-22 22:27:06

zpwkxg 发表于 2014-6-22 22:07
这里真是高手林立,看了那么多资料稀里糊涂,不如楼上两位老师指导一二,感谢ing!...

兄弟客气了,互相交流学习才能更好的提升自己^_^

laoshuhunya 发表于 2014-6-22 22:33:28

zpwkxg 发表于 2014-6-22 22:22
下图是AD2S1200的时序图,以及其描述:

按照laoshu的口诀,SPI在下降沿采样,上升沿放置数据,SPI应该工作 ...

只要是下降沿采样,就工作在模式1或2。这个图工作在模式2。

laoshuhunya 发表于 2014-6-22 22:46:50

zpwkxg 发表于 2014-6-22 22:22
下图是AD2S1200的时序图,以及其描述:

按照laoshu的口诀,SPI在下降沿采样,上升沿放置数据,SPI应该工作 ...

根据SPI接口硬件设计规范,当器件工作于从机模式下的MODE0和MODE2时,第一位要发送的数据由SS(即从机选择信号,也叫片选信号)有效沿驱动,不由SCLK时钟沿驱动。



alias 发表于 2014-6-22 22:57:03

clocked out(action by MCU): sampled by the MCU at the falling edge of the SCLK, the SCLK is controlled by MCU

shifted out(action by chip): logic level outputed to SDO pin(by AD2S1200 internal control circuit) so it becomes available and can be read by MCU on the next falling edge of SCLK.

zpwkxg 发表于 2014-6-23 07:54:49

alias 发表于 2014-6-22 22:57
clocked out(action by MCU): sampled by the MCU at the falling edge of the SCLK, the SCLK is controll ...

明白了这两个动作,{:handshake:} 谢谢alias

zpwkxg 发表于 2014-6-23 08:19:47

本帖最后由 zpwkxg 于 2014-6-23 08:26 编辑

laoshuhunya 发表于 2014-6-22 22:46
根据SPI接口硬件设计规范,当器件工作于从机模式下的MODE0和MODE2时,第一位要发送的数据由SS(即从机选 ...


laoshu:
1."根据SPI接口硬件设计规范,当器件工作于从机模式下的MODE0和MODE2时,第一位要发送的数据由SS的有效沿驱动,不由sclk驱动...."是否对应了AD2S1200时序描述中的“the MSB will be already available at the SO pin on the very first falling edge of the SCLK.....",这里的already说明在sclk下降沿之前,由于SS有效沿的驱动,已经有第一位数据出现在MISO线上?

2.我想找你说的“SPI接口硬件设计规范......."中的这个证据,我找到了Motorola的文档(27页SPI从模式CPHA=0),你看是否是文中的话:
他这里面说“对于有些器件.....”,是否说在MODE0和MODE2中,第一位要发送的数据不一定都由SS驱动,也有可能是由SCLK驱动的?


laoshuhunya 发表于 2014-6-23 08:48:46

zpwkxg 发表于 2014-6-23 08:19
laoshu:
1."根据SPI接口硬件设计规范,当器件工作于从机模式下的MODE0和MODE2时,第一位要发送的数据由S ...

1、是这个意思。
2、对于SPI接口的内部硬件实现,大体上有这么几个要点:
(1)对SPI主机模式,第一位要发送的数据在用户把数据写入SPIDR(SPI数据寄存器)时即会被驱动。
(2)对SPI从机模式:在MODE0/2,第一位要发送的数据由SS有效沿驱动;在MODE1/3,要发送数据的所有位均由SCK有效沿驱动。

呵呵,老纳早年从事MCU构架设计,如果没记错的话,印象中SPI接口内部实现是这么回事的。

zpwkxg 发表于 2014-6-23 08:52:54

laoshuhunya,alias两位前辈,你们给了我做好AD2S1210驱动的信心!

laoshuhunya 发表于 2014-6-23 09:30:09

zpwkxg 发表于 2014-6-23 08:52
laoshuhunya,alias两位前辈,你们给了我做好AD2S1210驱动的信心!

这些协议是给应用工程师看的,一般不会涉及太多的内部实现细节,只要给出完整的外部特性就可以了。
比如I2C接口协议,文档中只描述在SCK高电平期间SDA必须保持稳定,这是为何?主要有两个原因:(1)SCK为高时SDA的变化被定义成START或STOP信号;(2)对I2C接口而言,SDA的数据输入总是在SCK的上升沿进行采样。
我想,大部人都知道第一点,但第二点很少有人注意到。

wjjcyy 发表于 2014-6-23 10:04:58

两位的讲解真是精辟!

zpwkxg 发表于 2014-6-26 07:15:26

本帖最后由 zpwkxg 于 2014-6-26 22:58 编辑

按照以上两位老师的指导,我在开发板上操作SPI总线的25VF040已经成功了;等待AD2S1210板子回来后,做这个芯片的通信试验。这两天一直在看这个帖子,学习、领悟。

我这里还有一个疑问请教:按照AD2S1210的时序:下讲沿采样,上升沿放置传输数据,那么在1楼中的的附件图片说,SDI :“......,The data is shifted into the part on the falling edge of SCLK.......。”时序上是上升沿放置数据,而文字描述中是下降沿,这两个说法相互矛盾吗?谢谢

alias 发表于 2014-6-26 14:21:25

>> 按照AD2S1210的时序:下讲沿采样,上升沿放置传输数据

AD2S1210 在 SCLK(由MCU产生的时钟) 的下讲沿采样SDI脚电平,所以相对MCU只能在SCLK上升沿发生时改变SDI的电平。

AD2S1210 亦同步在 SCLK(由MCU产生的时钟) 的上升沿把内部寄存器的电平放置在SDO脚上,好待MCU能在SCLK下降沿发生时读取 SDO 的电平。

alias 发表于 2014-6-26 15:00:04

SPI 我们应把它看成数据交换,所以不能存在单一接收或发送。发出数据的同时会得到另一方交换的数据。

如果你只要发出数据而并不需要交换得来的数据,你只要读取后不作任何处理便可。

如果你不想发出数据而只需要从机的数据,你也得用些任意的数据,发给从机以作「交换」。

laoshuhunya 发表于 2014-6-26 15:03:44

zpwkxg 发表于 2014-6-26 07:15
按照以上两位老师的指导,我在开发板上操作SPI总线的25VF040已经成功了;等待AD2S1210板子回来后,做这个芯 ...

没有矛盾,上升沿设置(输出、移位),下降沿采样(输入、锁存)。主从两方都一样。

zpwkxg 发表于 2014-6-26 23:06:05

这里的“......,The data is shifted into the part on the falling edge of SCLK.......。”的the part指的是谁?MCU? 谢谢两位还在一直帮忙!

alias 发表于 2014-6-27 04:16:00

这段描述出现在 SDI 的条款下当然是指芯片,即 AD2S1210 。

zpwkxg 发表于 2014-6-27 08:00:59

SPI是双向环形移动读写。
确认一下:这里的“......,The data is shifted into the part on the falling edge of SCLK.......。”指的就是Slave端的AD2S1210的数据采样(读)对吧?谢谢两位老师

laoshuhunya 发表于 2014-6-27 08:28:56

zpwkxg 发表于 2014-6-27 08:00
SPI是双向环形移动读写。
确认一下:这里的“......,The data is shifted into the part on the falling e ...

是的。
主从双方在同一个SCK边沿同时移出(设置、输出、写)、移入(采样、锁存、读)数据,不是一边在发送另一边在接收。

laoshuhunya 发表于 2014-6-27 08:34:59

本帖最后由 laoshuhunya 于 2014-6-27 08:37 编辑

zpwkxg 发表于 2014-6-27 08:00
SPI是双向环形移动读写。
确认一下:这里的“......,The data is shifted into the part on the falling e ...

另外,不必纠结于外在的表象。正如有些人把串行时钟称作SCLK,而另一些人叫做SCK一样。

修改原因:错别字。

zpwkxg 发表于 2014-6-28 10:42:42

理解了,谢谢两位师长。

shouqiang_zhang 发表于 2015-1-19 07:41:23

正在操作SPI, 学习了.谢谢前辈.

franklin2014 发表于 2015-3-24 14:25:23

谢谢在弄24l01
页: [1]
查看完整版本: 请教SPI的时序图