您的位置:控制工程论坛网论坛 » 嵌入式系统 » spi总线

mcumao

mcumao   |   当前状态:离线

总积分:1503  2024年可用积分:0

注册时间: 2006-01-20

最后登录时间: 2007-06-11

空间 发短消息加为好友

spi总线

mcumao  发表于 2007/6/20 16:42:09    精华  37703 查看 24 回复  [上一主题]  [下一主题]

手机阅读

SPI是一个环形总线结构由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
      假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
      那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。
      例子:
      假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据

脉冲主机sbuff 从机sbuff sdi sdo
0101010100101010100
1上0101010x1010101x01
1下010101001010101101
2上1010100x 0101011x10
2下101010010101011010
3上0101001x1010110x01
3下010100101010110101
4上1010010x0101101x10
4下101001010101101010
5上0100101x1011010x01
5下010010101011010101
6上1001010x0110101x10
6下100101010110101010
7上0010101x1101010x01
7下001010101101010101
8上0101010x1010101x10
8下010101011010101010

这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来!!

看大家明白没有!!!!!

1楼 0 0 回复
  • zhongfc

    zhongfc   |   当前状态:离线

    总积分:64  2024年可用积分:0

    注册时间: 2006-04-03

    最后登录时间: 2018-05-11

    空间 发短消息加为好友

    zhongfc   发表于 2006/4/3 13:30:41

    还是没怎么明白,我刚接触这个

    按你的图SDI 与SDO指的是主机的寄存器变化吗?

    而且这也不是交换啊, 只是双向通讯.

    2楼 回复本楼

    引用 zhongfc 2006/4/3 13:30:41 发表于2楼的内容

  • mcumao

    mcumao   |   当前状态:离线

    总积分:1503  2024年可用积分:0

    注册时间: 2006-01-20

    最后登录时间: 2007-06-11

    空间 发短消息加为好友

    mcumao   发表于 2006/4/3 13:44:51

    是主机的变化,
    说法不一样,交换和其实就是通过双向通讯而进行的。
    3楼 回复本楼

    引用 mcumao 2006/4/3 13:44:51 发表于3楼的内容

  • zhongfc

    zhongfc   |   当前状态:离线

    总积分:64  2024年可用积分:0

    注册时间: 2006-04-03

    最后登录时间: 2018-05-11

    空间 发短消息加为好友

    zhongfc   发表于 2006/4/4 9:14:22

    我现在有点明白了,还有些问题想问下

    还有一个问题想请教:我以前没有做过开发,对于SCK的精确度很重要吗?像这个输入

    SPIINSETB P1.1 ;使P1.1(时钟)输出为1

    CLR P1.2 ;选择从机

    MOV R1#08H ;置循环次数

    SPIIN1:CLR P1.1 ;使P1.1(时钟)输出为0

    NOP ;延时

    NOP

    MOV CP1.3 ;从机输出SPISO送进位C

    RLC A ;左移至累加器ACC

    SETB P1.1 ;使P1.1(时钟)输出为1

    DJNZ R1,SPIIN1 ;判断是否循环8次(8位数据)

    MOV R0A 8位数据送R0

    RET

    P1.1作为SCK我看好像要控制准确的时钟不是很准是吗?

     

    4楼 回复本楼

    引用 zhongfc 2006/4/4 9:14:22 发表于4楼的内容

  • mcumao

    mcumao   |   当前状态:离线

    总积分:1503  2024年可用积分:0

    注册时间: 2006-01-20

    最后登录时间: 2007-06-11

    空间 发短消息加为好友

    mcumao   发表于 2006/4/4 12:41:12

    单片机控制应该没什么问题,除非选用的晶振很低,要不都可以满足要求。
    时序很重要,精度一般都可以满足到。
    特别用汇编操作比较容易。
    5楼 回复本楼

    引用 mcumao 2006/4/4 12:41:12 发表于5楼的内容

  • zsm_76

    zsm_76   |   当前状态:离线

    总积分:59  2024年可用积分:0

    注册时间: 2006-05-11

    最后登录时间: 2007-10-27

    空间 发短消息加为好友

    zsm_76   发表于 2006/5/16 21:17:49

    上面的程序功能是什么呢?
    是完成版主所示例子的功能吗?
    6楼 回复本楼

    引用 zsm_76 2006/5/16 21:17:49 发表于6楼的内容

  • zhongfc

    zhongfc   |   当前状态:离线

    总积分:64  2024年可用积分:0

    注册时间: 2006-04-03

    最后登录时间: 2018-05-11

    空间 发短消息加为好友

    zhongfc   发表于 2006/5/23 9:54:26

    好烦啊
    怎么查不到具体的通讯协议?
    被一文章误导,用了4 I/O做SPI通讯
    7楼 回复本楼

    引用 zhongfc 2006/5/23 9:54:26 发表于7楼的内容

  • zsm_76

    zsm_76   |   当前状态:离线

    总积分:59  2024年可用积分:0

    注册时间: 2006-05-11

    最后登录时间: 2007-10-27

    空间 发短消息加为好友

    zsm_76   发表于 2006/5/23 16:33:28

    我也是同样!
    8楼 回复本楼

    引用 zsm_76 2006/5/23 16:33:28 发表于8楼的内容

  • mcumao

    mcumao   |   当前状态:离线

    总积分:1503  2024年可用积分:0

    注册时间: 2006-01-20

    最后登录时间: 2007-06-11

    空间 发短消息加为好友

    mcumao   发表于 2006/5/26 12:40:42

    9楼 回复本楼

    引用 mcumao 2006/5/26 12:40:42 发表于9楼的内容

  • zhongfc

    zhongfc   |   当前状态:离线

    总积分:64  2024年可用积分:0

    注册时间: 2006-04-03

    最后登录时间: 2018-05-11

    空间 发短消息加为好友

    zhongfc   发表于 2006/5/27 8:30:43

    通讯不能用IO做时钟啊
    时序很难匹配
    会有很多问题
    上面理论上是可以的
    10楼 回复本楼

    引用 zhongfc 2006/5/27 8:30:43 发表于10楼的内容

  • zhongfc

    zhongfc   |   当前状态:离线

    总积分:64  2024年可用积分:0

    注册时间: 2006-04-03

    最后登录时间: 2018-05-11

    空间 发短消息加为好友

    zhongfc   发表于 2006/5/27 8:32:05

    仅是输入的
    11楼 回复本楼

    引用 zhongfc 2006/5/27 8:32:05 发表于11楼的内容

总共 , 当前 /, 123【下一页】