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

msp430f47187的SPI通信SIMO口时序和MSP430F149对比

/********************初始化SPI********************/
void Init_SPI0(void)
{
P3SEL = 0x0E; //setup P3 for SPI mode
P3DIR |= BIT0; 
UCB0CTL0 = 0x49; //Polarity,Master,8-bit, 3-Pin SPI 01001001
UCB0CTL1 = UCSSEL1 + UCSWRST; //SMCLK
UCB0BR0 = 0x82; //setup baud rate,9600
UCB0BR1 = 0x06;
UCA0CTL1 &= ~UCSWRST; //SPI EnablE

}

//******************************************************************************
// SPI_Send_OneByte,发送单个字节数据 
//******************************************************************************
void SPI_Send_OneByte(uchar Send_Data)
{
P3OUT &= ~BIT0; //STE = 0
UCB0TXBUF = Send_Data; //发送一个字节
while((IFG2 & UCB0TXIFG)==0); //等待发送完成,检测UCB0TXIFG位
P3OUT |= BIT0; //STE = 1
}

//******************************************************************************
// SPI_Receive_OneByte,SPI接收单个字节
//****************************************************************************** 
uchar SPI_Receive_OneByte(void) 
{
uchar ReceiveByte;
P3OUT &= ~BIT0;
UCB0TXBUF = 0xFF; //发送一个字节
while((IFG2 & UCB0RXIFG) == 0);
ReceiveByte = UCB0RXBUF;
P3OUT |= BIT0;
return ReceiveByte;
}

msp430f47187芯片的SIMO口的时序图如下图所示,完成一个字节的传输后不会将SIMO口上拉,并直接传送下一个字节

但是MSP430F149芯片在相同的配置下SIMO口的数据传送:每发送一个字节数据就自动将SIMO口置1并延时,如下图所示

我用149芯片发送数据后SOMI口能接收到正确的数据,但是用47187就是不行。

这两个芯片内部的架构是不是不一样?接收到的数据不正确和这两个发送波形不完全吻合有关系吗?

灰小子:

msp430f47187芯片内的是USCI模块,MSP430F149的是USART

硬件结构是不同的,配置起来也不一样。USCI模块功能更强大

Chunyan Zhu:

回复 灰小子:

嗯嗯,了解了。那我两个芯片发送到USB118AD模块的数据都是0xaa,0xbb……….区别就是47187是直接发送第二个数据,F149是会间隔一段时间发送第二个数据。两者的波特率设置也都是一样的,为什么一个F149能成功通信,47187就不能正确接收数据?

赞(0)
未经允许不得转载:TI中文支持网 » msp430f47187的SPI通信SIMO口时序和MSP430F149对比
分享到: 更多 (0)