这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » SPI 关于SPI口的困惑

共2条 1/1 1 跳转至

SPI 关于SPI口的困惑

院士
2006-09-17 18:14:16     打赏
SPI 关于SPI口的困惑



关键词: 关于     困惑    

院士
2006-12-22 22:43:00     打赏
2楼


我在使用430的硬件SPI进行操作。按照正确的操作,如果我写入地址0X5E,应该能够读到0X233E。因为我使用了430四种SPI模式对它进行读,结果有点出乎我的意料。希望各位能够帮我分析一下,使用4种SPI模式读出的数据各位多少,为什么?还有4种模式的具体工作时序怎样?我被书上的各种时序搞的头都昏了. SPI速度没有问题,而且有两种读出了正确数据。 1: 我的理解:4种SPI模式实际就是一个相位差和上升/下降沿首先输入的差别.一般SPI的数据输入由SCK的上升沿输入数据,下降沿输出数据,至于内部信号采样(BIT)和UART一样,是三次采样,多数表决,CKPL是选择上升沿/下降延,CKPH是选择是否滞后1/2BIT,所以你说CKPL=0和1都是正确有点奇怪,至于"SPL=0,SPH=1 结果为:0X119E 数据右移了一位 "这个结果完全可以理解,因为在此传送过程中,你的时序不要求SDA滞后SCK1/2BIT,但你滞后了,这就造成第一个SDA无效,就相当于少了一个有效的SCK,所以最后一位SDA没有被移出.
从你提供的现象来看,我分析合理的答案应该是:CKPH=0,CKPL=0.你可以自己试验一下.
作出这样判断的原因是:CKPL=0,CKPH=1能独数据,但丢失了一位,说明数据地址正确被输入到从机地址,说明CKPL=0是正确的,就是上升沿输入数据,而你说CKPL=1,CKPH=1错误,说明输入的地址就不正确.基于以上分析,得出CKPL=0,CKPH=0. 2: 谢谢你的热心回答!我现在在我的逻辑分析仪上看数据,用TI的数据手册提供的读写时序,SPL=0,SPH=1和SPL=1,SPH=0,应该都是在数据中间采样,而SPL=0,SPH=0,是在数据的边缘采样。SPL=1,SPH=1由于移了一位地址,没有读对是正常的。而且我用软件模拟了时序,只要在在上边沿前输出地址,在上边沿前后读数据,结果都是正确。还是在困惑中,我现在一直用SPL=1,SPH=0。 如果SPL=0,SPH=0因为在上沿时外面器件要读总线数据,此时CPU刚刚输出数据,而在下沿,通知外部器件输出数据,而此时CPU却要采样数据。两个期间的采样都在数据变化的时候。我看了以下TI网上的例子SLAA168,里面的器件TLC2552是A/D,程序是用SPL=0,SPH=0,采样的,而TLC2552器件手册上的时序与我的可很不一样。边沿都不一样。我不知道是不是单片机SPI口有BUG。我的133是在02年买的。 3: 我觉得采样应该针对SCK信号来说,与SDA没关系.也就是从机采样点是由主机的SCK决定的.是立即采样还是延时1/2BIT则由CKPH决定. 4: 应该不会有BUG的,我用几种模式都没有问题.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]