请教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 16:00 编辑
MSB前端那一小段数据是不确定的意思。
由於芯片在SCLK上升沿於SDO脚输出有效数据,但脚位电平改变是需要时间的。你便不可以在SCLK上升沿读取数据,而要在SCLK下降沿才读取,不然你会不确定在SCLK上升沿过后多久数据才是真正有效及正确。
同理SDI的数据在SCLK下降沿出现后你便可以更改,且必须在下一个下降沿来到之前完成改动操作(最好是在上升沿出现时已完成改动)。 alias:这SPI 应该设置工作在什么模式? 本帖最后由 alias 于 2014-6-22 17:22 编辑
在上升沿首次出现后用家(或AD2S1210)才放置数据,在下降沿(第2次出现沿电平改变)才读取首位数据,这SPI(Mode0,1,2,3) 应该设置工作在 MODE 1 模式。
即 CPOL=0, CPHA=1。
谢谢回复。这个时序我现在也没看懂,我认为CPOL=1,SPI模式只能是1X,即模式2或模式3。
小心注意SPI模式有些人用SP0~SP3,也有人用模式1-模式4代表,我是前者。最可靠是说明 CPOL 及 CPHA。 本帖最后由 zpwkxg 于 2014-6-22 18:01 编辑
我在1楼的意思也应该写成(模式0-模式3),改回来了。现在SCLK在空闲时为1,我还是觉得模式应为1x,您四楼的话前半句没看懂,请继续指教;
还有个问题:看参考资料上说的上升沿或下降沿的采样(sampling)和设置(setup),这里的setup是否可以理解数据的写(数据改变)? 采样和设置分别是主机、从机在上升沿/下降沿、下降沿/上升沿的的动作对吗? >>现在SCLK在空闲时为1
为何SCLK在空闲时为1? SCLK 在 AD2S1210 SPI 时是输入脚,你 MCU 控制 SCLK 的空闲电平可高可低,完全由你决定。但如果是高(1),那第一个沿转变必然是高至低,而高至低你已认同是用来读取有效数据,但这时数据并没有存在(因为上升沿后才有有效数据)。所以SCLK在空闲时不能是高(1)。
setup可以理解为数据的写(数据改变),sampling 就是读取数据。通常采样(sampling)和设置(setup)是在相对的沿发生。 我再看看理解一下吧,谢谢alias 本帖最后由 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控制器的动作?谢谢
SDO数据线的数据放置是AD2S1210的动作,而SDO数据线的数据采样是MCU的动作。
SDI数据线的数据放置是MCU的动作,而SDI数据线的数据采样是AD2S1210的动作。
关于SPI工作模式的问题,只要记住下面的口诀就行了(原创,呵呵):
解释如下:
03升,12降 —— 0、3模式为上升沿采样,1、2模式为下降沿采样。
低取小,高取大 —— SCK初始电平为低则模式取小值,SCK初始电平为高则模式取大值。要点:SCK初始电平高低由SS(即从机选择)信号有效边沿确定。
对于楼主的图,应用以上口诀:
楼主芯片数据手册中数据输入为下降沿采样,因此SPI为模式1或模式2。再看/FSYNC(即从机选择信号),有效下降沿对应的SCLK为低电平,所以模式取小值,即该SPI配置为模式1。
提醒:不必考虑在/FSYNC有效下降沿之前时钟处于什么状态。
感谢alias帮忙 AD2S1210 SPI时序是否可总结为:时钟下降沿采样(读),上升沿放置数据(写)? zpwkxg 发表于 2014-6-22 21:42
AD2S1210 SPI时序是否可总结为:时钟下降沿采样(读),上升沿放置数据(写)? ...
是的。
采样指的是对数据输入。 zpwkxg 发表于 2014-6-22 21:42
AD2S1210 SPI时序是否可总结为:时钟下降沿采样(读),上升沿放置数据(写)? ...
有时也把读叫做“接收”,写叫做“发送”。 这里真是高手林立,看了那么多资料稀里糊涂,不如楼上两位老师指导一二,感谢ing! 支持原创,支持laoshuhunya,^_^ 本帖最后由 zpwkxg 于 2014-6-22 22:24 编辑
下图是AD2S1200的时序图,以及其描述:
按照laoshu的口诀,SPI在下降沿采样,上升沿放置数据,SPI应该工作在模式3对吗?还有个问题请教,在文字描述中的clocked out和shifted out怎么理解? zpwkxg 发表于 2014-6-22 22:07
这里真是高手林立,看了那么多资料稀里糊涂,不如楼上两位老师指导一二,感谢ing!...
兄弟客气了,互相交流学习才能更好的提升自己^_^ zpwkxg 发表于 2014-6-22 22:22
下图是AD2S1200的时序图,以及其描述:
按照laoshu的口诀,SPI在下降沿采样,上升沿放置数据,SPI应该工作 ...
只要是下降沿采样,就工作在模式1或2。这个图工作在模式2。 zpwkxg 发表于 2014-6-22 22:22
下图是AD2S1200的时序图,以及其描述:
按照laoshu的口诀,SPI在下降沿采样,上升沿放置数据,SPI应该工作 ...
根据SPI接口硬件设计规范,当器件工作于从机模式下的MODE0和MODE2时,第一位要发送的数据由SS(即从机选择信号,也叫片选信号)有效沿驱动,不由SCLK时钟沿驱动。
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.
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: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驱动的?
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接口内部实现是这么回事的。 laoshuhunya,alias两位前辈,你们给了我做好AD2S1210驱动的信心! zpwkxg 发表于 2014-6-23 08:52
laoshuhunya,alias两位前辈,你们给了我做好AD2S1210驱动的信心!
这些协议是给应用工程师看的,一般不会涉及太多的内部实现细节,只要给出完整的外部特性就可以了。
比如I2C接口协议,文档中只描述在SCK高电平期间SDA必须保持稳定,这是为何?主要有两个原因:(1)SCK为高时SDA的变化被定义成START或STOP信号;(2)对I2C接口而言,SDA的数据输入总是在SCK的上升沿进行采样。
我想,大部人都知道第一点,但第二点很少有人注意到。 两位的讲解真是精辟! 本帖最后由 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.......。”时序上是上升沿放置数据,而文字描述中是下降沿,这两个说法相互矛盾吗?谢谢
>> 按照AD2S1210的时序:下讲沿采样,上升沿放置传输数据
AD2S1210 在 SCLK(由MCU产生的时钟) 的下讲沿采样SDI脚电平,所以相对MCU只能在SCLK上升沿发生时改变SDI的电平。
AD2S1210 亦同步在 SCLK(由MCU产生的时钟) 的上升沿把内部寄存器的电平放置在SDO脚上,好待MCU能在SCLK下降沿发生时读取 SDO 的电平。 SPI 我们应把它看成数据交换,所以不能存在单一接收或发送。发出数据的同时会得到另一方交换的数据。
如果你只要发出数据而并不需要交换得来的数据,你只要读取后不作任何处理便可。
如果你不想发出数据而只需要从机的数据,你也得用些任意的数据,发给从机以作「交换」。 zpwkxg 发表于 2014-6-26 07:15
按照以上两位老师的指导,我在开发板上操作SPI总线的25VF040已经成功了;等待AD2S1210板子回来后,做这个芯 ...
没有矛盾,上升沿设置(输出、移位),下降沿采样(输入、锁存)。主从两方都一样。 这里的“......,The data is shifted into the part on the falling edge of SCLK.......。”的the part指的是谁?MCU? 谢谢两位还在一直帮忙! 这段描述出现在 SDI 的条款下当然是指芯片,即 AD2S1210 。 SPI是双向环形移动读写。
确认一下:这里的“......,The data is shifted into the part on the falling edge of SCLK.......。”指的就是Slave端的AD2S1210的数据采样(读)对吧?谢谢两位老师 zpwkxg 发表于 2014-6-27 08:00
SPI是双向环形移动读写。
确认一下:这里的“......,The data is shifted into the part on the falling e ...
是的。
主从双方在同一个SCK边沿同时移出(设置、输出、写)、移入(采样、锁存、读)数据,不是一边在发送另一边在接收。
本帖最后由 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一样。
修改原因:错别字。 理解了,谢谢两位师长。 正在操作SPI, 学习了.谢谢前辈. 谢谢在弄24l01
页:
[1]