TI中文支持网
TI专业的中文技术问题搜集分享网站

关于MSP430F5438A的四线SPI问题

void spi_init()

 {  

   P3SEL |= BIT0 + BIT1 + BIT2 + BIT3;                          // 功能复用,使用UCB0

   P3DIR |=BIT0 + BIT1 + BIT3;                               //P3.0,1,3为输出  

   UCB1CTL1 |= UCSWRST;                                  // 复位

   UCB1CTL0 |=  UCMST + UCSYNC + UCMODE1 + UCCKPH + UCMSB;       //上升沿发送数据,MSB,四线主机,同步

   UCB1CTL1 |= UCSSEL_2;                                 // SMCLK

   UCB1BR0 =2;               

   UCB1BR1 = 0;                           

   UCB1CTL1 &= ~UCSWRST;                                 // **Initialize USCI state machine**  

   UCB0IE |= UCRXIE;

}

   

void DAC_Reg_Write (unsigned char reg_address)//写一个寄存器
{

P3OUT&= ~BIT0; // 拉低STE

while (!(UCB0IFG&UCTXIFG));                           // USCI_B0 TX buffer ready?

UCB0TXBUF = reg_address;                                              // 发送需要写入的寄存器地址
while (!(UCB0IFG&UCTXIFG));                             // USCI_B0 TX buffer ready?

__delay_cycles(40);
P3OUT|=BIT0; // 写入完成,拉高STE
}

问题是,spi初试化后STE始终是低电平输出,SCLK始终没有始终输出,而且,P3.0片选信号根本就没办法拉高

Susan Yang:

MSP430F5438A的P3.0. P3.4 P3.5 被分配为SPI的 CLK, MOSI, 和MISO
P3SEL |= BIT0 + BIT1 + BIT2 + BIT3;
试一下这一句
P3SEL |=BIT0+BIT4+BIT5;

Junming Du:

回复 Susan Yang:

试过了,那个是UCBA的,四线的话也不行,三线的时候是有SCLK时钟输出的,四线的话就没有了,STE也没有输出

Junming Du:

回复 Susan Yang:

另外,我想问一下。如果用UCA0的话,在UCB1CTL1 &= ~UCSWRST;这条语句之后,P3.0, P3.3, P3.4, P3.5分别应该输出什么?我现在是SCLK输出是高电平,其他引脚均输出低电平。谢谢了!

Junming Du:

沉了吗?需要帮助呀

灰小子:

回复 Junming Du:

Junming Du另外,我想问一下。 如果用UCA0的话,在 UCB1CTL1 &= ~UCSWRST; 这条语句之后,P3.0, P3.3, P3.4, P3.5分别应该输出什么?我现在是SCLK输出是高电平,其他引脚均输出低电平。 谢谢了!

Junming Du:

回复 灰小子:

哦哦,那我用四线SPI的时候,STE引脚不能拉高是怎么回事啊,无论用UCA0还是UCB0都不行

赞(0)
未经允许不得转载:TI中文支持网 » 关于MSP430F5438A的四线SPI问题
分享到: 更多 (0)