在线情况
楼主
  • 头像
  • 级别
  • 门派
  • 职务总版主
  • 声望+9
  • 财富5
  • 积分3065
  • 经验390701
  • 文章6744
  • 注册2006-03-07
spi总线概述
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
      假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
      那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。
      例子:
      假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据

[TABLE][TR][TD][SIZE=4]脉冲[/SIZE][/TD][TD][SIZE=4]主机sbuff [/SIZE][/TD][TD][SIZE=4]从机sbuff [/SIZE][/TD][TD][SIZE=4]sdi [/SIZE][/TD][TD][SIZE=4]sdo [/SIZE][/TD][/TR][TR][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4][COLOR=#ff0000]1[/SIZE]0101010[/COLOR][/TD][TD][SIZE=4][COLOR=#ff00ff]0[/SIZE]1010101[/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]1上[/SIZE][/TD][TD][SIZE=4]0101010x[/SIZE][/TD][TD][SIZE=4]1010101x[/SIZE][/TD][TD][COLOR=#ff00ff]0[/COLOR][/TD][TD][SIZE=4][COLOR=#ff0000]1[/SIZE][/COLOR][/TD][/TR][TR][TD][SIZE=4]1下[/SIZE][/TD][TD][SIZE=4]0101010[COLOR=#ff00ff]0[/SIZE][/COLOR][/TD][TD][SIZE=4]1010101[COLOR=#ff0000]1[/SIZE][/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]2上[/SIZE][/TD][TD][SIZE=4]101010[COLOR=#09f797]0[/SIZE]x [/COLOR][/TD][TD][SIZE=4]010101[COLOR=#09f738]1[/SIZE]x[/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]2下[/SIZE][/TD][TD][SIZE=4]101010[COLOR=#09f797]01[/SIZE][/COLOR][/TD][TD][SIZE=4]010101[COLOR=#09f738]10[/SIZE][/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]3上[/SIZE][/TD][TD][SIZE=4]01010[COLOR=#09f797]01[/SIZE]x[/COLOR][/TD][TD][SIZE=4]10101[COLOR=#09f738]10[/SIZE]x[/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]3下[/SIZE][/TD][TD][SIZE=4]01010[COLOR=#09f797]010[/SIZE][/COLOR][/TD][TD][SIZE=4]10101[COLOR=#09f738]101[/SIZE][/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]4上[/SIZE][/TD][TD][SIZE=4]1010[COLOR=#09f797]010[/SIZE]x[/COLOR][/TD][TD][SIZE=4]0101[COLOR=#09f738]101[/SIZE]x[/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]4下[/SIZE][/TD][TD][SIZE=4]1010[COLOR=#09f797]0101[/SIZE][/COLOR][/TD][TD][SIZE=4]0101[COLOR=#09f738]1010[/SIZE][/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]5上[/SIZE][/TD][TD][SIZE=4]010[COLOR=#09f797]0101[/SIZE]x[/COLOR][/TD][TD][SIZE=4]101[COLOR=#09f738]1010[/SIZE]x[/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]5下[/SIZE][/TD][TD][SIZE=4]010[COLOR=#09f797]01010[/SIZE][/COLOR][/TD][TD][SIZE=4]101[COLOR=#09f738]10101[/SIZE][/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]6上[/SIZE][/TD][TD][SIZE=4]10[COLOR=#09f797]01010[/SIZE]x[/COLOR][/TD][TD][SIZE=4]01[COLOR=#09f738]10101[/SIZE]x[/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]6下[/SIZE][/TD][TD][SIZE=4]10[COLOR=#09f797]010101[/SIZE][/COLOR][/TD][TD][SIZE=4]01[COLOR=#09f738]101010[/SIZE][/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]7上[/SIZE][/TD][TD][SIZE=4]0[COLOR=#09f797]010101[/SIZE]x[/COLOR][/TD][TD][SIZE=4]1[COLOR=#09f738]101010[/SIZE]x[/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]7下[/SIZE][/TD][TD][SIZE=4]0[COLOR=#09f797]0101010[/SIZE][/COLOR][/TD][TD][SIZE=4]1[COLOR=#09f738]1010101[/SIZE][/COLOR][/TD][TD][SIZE=4]0[/SIZE][/TD][TD][SIZE=4]1[/SIZE][/TD][/TR][TR][TD][SIZE=4]8上[/SIZE][/TD][TD][SIZE=4][COLOR=#09f797]0101010[/SIZE]x[/COLOR][/TD][TD][SIZE=4][COLOR=#09f738]1010101[/SIZE]x[/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][TR][TD][SIZE=4]8下[/SIZE][/TD][TD][SIZE=4][COLOR=#09f797]01010101[/SIZE][/COLOR][/TD][TD][SIZE=4][COLOR=#09f738]10101010[/SIZE][/COLOR][/TD][TD][SIZE=4]1[/SIZE][/TD][TD][SIZE=4]0[/SIZE][/TD][/TR][/TABLE]

这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来!!
 
[COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
在线情况
2
  • 头像
  • 级别
    • 积分7
    • 经验552
    • 文章15
    • 注册2006-05-24
    学习学习!
    微控网感谢您的参与
    在线情况
    3
    • 头像
    • 级别
      • 积分14
      • 经验698
      • 文章25
      • 注册2006-06-24
      第一次看这个帖子的时候没看明白,今天再过来温习一下,恍然大悟了,谢谢斑竹!
      学习是硬道理!
      在线情况
      4
      • 头像
      • 级别
        • 积分1
        • 经验161
        • 文章1
        • 注册2006-10-23
        有点明白了,还要好好学习啊!
        微控网感谢您的参与
        在线情况
        5
        • 头像
        • 级别
          • 积分1
          • 经验40
          • 文章2
          • 注册2007-01-24
          好啊,好东西,我正需要!!!!
          微控网感谢您的参与
          Powered by LeadBBS 9.2 .
          Page created in 0.1953 seconds with 5 queries.