SPI 使用体会

近日,通过周立功的EasyARM2131板学习了SPI接口的使用,在此做一个总结,以备日后参考。

一些文档上的关键描述:

SPI is a Master-Slave protocol. The Master device controls the clock (SCK)
No data is transferred unless a clock signal is present
All slaves are controlled by the master clock
The slave devices may not manipulate the clock

SPI is a Data Exchange protocol  As data is being clocked out, new data is clocked in.

Data is exchanged - no device can just be a transmitter only or receiver
Only the master controls the exchange by manipulating the clock line (SCK)

Data is only output during the rising or falling edge of SCK
Data is latched during the opposite edge of SCK
The opposite edge is used to ensure data is valid at the time of reading

通过CPOL时钟极性控制位和CPHA采样边沿控制位的组合可以得到四种不用的工作方式,其规律是:

CPOL 控制时钟极性, CPOL=0 时钟在空闲时是低电平,也就是说,第一个时钟边沿是上升沿;CPOL=1 时钟在空闲时是高电平,也就是说,第一个时钟边沿是下降沿。

CPHA 控制采样边沿,CPHA=0 在第一个时钟边沿就采样,为了保证采样的正确,主机会在第一个有效时钟边沿来临前的半个周期输出第一位数据,从机会在SS从机选择信号有效时输出第一位数据;CPHA=1 在第一个时钟边沿输出数据到总线,第二个时钟边沿采样数据锁存。

关于周立功书上的实验,用SPI连接74HC595驱动数码管
我初步推断:74HC595对上升沿的响应速度非常快,当上升沿时,输入马上锁存,输出变为下一位数据因为,

SPI CPOL=1,CPHA=0 时得出正确结果,而SPI的这种模式下,第一位数据在时钟第一个下降沿到来前的半个周

期已经输出到总线上(通讯由主机发起,这个还是能保证的),第一个下降沿来到即采样读入数据,第一个上升沿

来到时,输出第二位数据,但此时在总线上的第一位数据在改变前就进入了74HC595的寄存器。

在从模式下,一旦SS有效,则从机马上输出第一位数据,和主机提前半个周期输出对应,都是为了保证CPHA=0时,在第一个时钟边沿对第一位数据的采样。

又可以从 CPOL=1, CPHA=1是验证,SPI在此模式下,第一个下降沿输出第一位数据,第一个上升沿采样数

据。这个模式较前一种模式对74HC595的输入稳定性是有保证的,因为在整个上升沿的一段时间窗口内,输出

始终稳定。但是所有的SPI从74HC595读入的数据都被左移一位,也就是说,第一位数据给丢掉了。造成这个的

原因可能是SPI第一个下降沿输出数据,上升沿采样时,74HC595响应迅速,数据在采样期已经变为下一位数

据,取样的结果就是下一位数据了,导致第一位丢失。

到底是怎么回事只能等回校以后再测了.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值