SPI读,没有时钟信号输出

2019-07-21 20:35发布


我用MPS430G2333 的SPI接口连接外部芯片,发现在SPI读的时候没有时钟信号CLK输出的?.
P1.4:STE     P1.5:CLK      P1.6:SOMI      P1.7:SIMO
的设置如下:
  P1SEL |= BIT5+BIT6+BIT7;     // Set SPI peripheral bits
  P1SEL2 |= BIT5+BIT6+BIT7;
  P1DIR |= BIT4+BIT5+BIT7;     // STE, SCLK, and DOUT as output
  P1DIR &= ~BIT6;                    // Din as input
  P1OUT |=BIT4;                      // Set STE high
  UCB0CTL1 |= UCSWRST;          // Enable SW reset
  UCB0CTL0 |= UCMSB+UCCKPH+UCMST+UCSYNC;    // [b0]   1 -  Synchronous mode
  // [b2-1] 00-  3-pin SPI
  // [b3]   1 -  Master mode
  // [b4]   0 - 8-bit data
  // [b5]   1 - MSB first
  // [b6]   0 - Clock polarity high.
  // [b7]   1 - Clock phase - Data is captured on the first UCLK edge and changed on the following edge.
  
  UCB0CTL1 |= UCSSEL_2;                // SMCLK
  UCB0BR0 = 0xFF;                             // 16 MHz
  UCB0BR1 = 0;                                //
  UCB0CTL1 &= ~UCSWRST;                // Clear SW reset, resume operation
  UC0IE |= UCB0RXIE;
  UC0IFG &= ~UCB0RXIFG;

我用SPI发数据是这样的:
  UCB0TXBUF = reg_address;                  
  while ( (UCB0STAT & UCBUSY) ); // USCI_B1 TX buffer ready?
这样CLK 和SMIO都有正确的脉冲输出哦!
但我读SPI,比如这样:
  S_buf = UCB0RXBUF;
就根本没有CLK的脉冲时钟输出啊?读不到数据.是我那里方法不对吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
Ryze
2019-07-22 05:33
主机要读数据的时候需要给从机时钟信号,这个信号只能是在主机发数据的时候产生,这样就需要主机发一个数据,这样就产生了时钟信号,从机就会把数据放到总线上来了,为了避免这个假发出去的数据让从机误动作,一般都是让发送总线为高电平

一周热门 更多>