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

MSP430F2274 SPI 功能

hello

 我现在用MSP430F2274在做一块板子,现在要用到2274的USCI_B0口做SPI功能,我的初始化设置如下

void InitSpi(void)

{

UCB0CTL1 = 0x01; //set ucswrst = 1 UCB0CTL1 |= UCSSEL_2; ///select smclk
UCB0CTL0 |= UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI mstr, MSB 1st sync mode
UCB0BR0 = 0x02; //baud UCB0BR1 = 0;
P3SEL |= (BIT3|BIT2|BIT1);//// // P3.3,2,1,0 USCI_B0 option select // p3.0 is output
P3DIR |= 0x01; // P3.0 output direction
UCB0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCB0RXIE;

}

发送函数为

 void SpiB0_TXISR( unsigned char* Spi_TX_data, char send_len)
{
SpiSendData = Spi_TX_data;
SpiSendLen = send_len;

UCB0TXBUF = SpiSendData  ;//发送数据
while (!(IFG2 & UCB0TXIFG)); //(IFG2 & UCB0TXIFG ) 为 0 时,表示数据为满,不能接收新数据发送,要等待
if(SpiTxindex < SpiSendLen) //表示发送多少个数据,发送计数器
{
UCB0TXBUF = *(SpiSendData+SpiTxindex); // 数据发送
SpiTxindex++;
//delay(100);
}
else
{
SpiTxindex=0;
}
}

系统时钟选择的是1MHZ,为什么我的SPI没有输出数据了,

在用断点跟踪时,CLOCK只可以出一组时钟(8 个脉冲),没有数据,用示波器测量波形没有波形出来,

但程序跑起来时,时钟也是只出一次,没有数据,

请问我的配置哪里错了呢,为什么没有数据了,时钟也不是一直有波形出来,

HG:

建议你先把例程demo跑对

xuefeng chang:

回复 HG:

demo 例程也是跑不起来的,用示波器量不到数据的,

HG:

回复 xuefeng chang:

你在芯片上先输出smclk,看对不对。

SPI的时钟输出对么? CS对么?SPI的从机接的什么?

xuefeng chang:

回复 HG:

我的芯片初始化在SPI前面,

SPI初始化顺序为 1 选择时钟为SMCLK ,2  SPI 功能配置,3 波特率配置,4 管脚功能选择,5 清除UCSWRST 位

这样的顺序没有数据输出,

我测量的是430F2274芯片管脚出来的信号,我把后面的负载断开了,相当于直接测量的是芯片管脚

Seven Han:

回复 xuefeng chang:

最好是先把例程跑下,看下时钟信号以及发出的数据后,再进一步调试

C:\ti\MSP430Ware_3_50_00_04\examples\devices\MSP430F2xx\MSP430F22x2_MSP430F22x4_Code_Examples

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F2274 SPI 功能
分享到: 更多 (0)