SPI读,没有时钟信号输出的吗?

2019-03-24 09:12发布

我用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的脉冲时钟输出啊?读不到数据.是我那里方法不对吗?



谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
bobde163
1楼-- · 2019-03-24 13:22
读的方式不对,SPI的读不单单像是发一个数据那样简单,整个总线需要的时钟信号是由主机端提供的,也就是说不论是给从机发数据或者从从机读数据,这个时钟都要由主机来产生,那么关键来了,主机要读数据的时候需要给从机时钟信号,这个信号只能是在主机发数据的时候产生,这样就需要主机发一个数据,这样就产生了时钟信号,从机就会把数据放到总线上来了,为了避免这个假发出去的数据让从机误动作,一般都是让发送总线为高电平
wu244933
2楼-- · 2019-03-24 14:35
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章