共2条
1/1 1 跳转至页
问
我在使用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的,我用几种模式都没有问题.
我在使用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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |