在线情况
楼主
  • 头像
  • 级别
  • 门派
  • 职务总版主
  • 声望+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]
Powered by LeadBBS 9.2 .
Page created in 0.1094 seconds with 6 queries.