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

msp430f249 SPI ptoteus

使用IAR 开发,在proteus中运行,

SPI   手册里说有SPI_A0,SPI_A1,SPI_B0,SPI_B1  4个,但是我实验,只有SPI_B0成功了,其余3个都不能正常输出CLK,MOSI。

这个是SPI_A0<是从官网里范例包获得的。

#if 0
//SPI 选择 UCA0 发不出数据,不知道为什么
P3DIR |= 0x11;
P3SEL |= 0x11; // P3.0,4 USCI_A0 option select
UCA0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI master
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 |= 0x0A;
UCA0BR1 = 0;
//UCA0MCTL = 0;
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

Data = 0x0F0; // Load inital data
while(1)
{
UCA0TXBUF = Data; // Byte to SPI TXBUF
Data++; // Increment Data value – Set BREAKPOINT here
while (!(IFG2 & UCA0TXIFG)); // USCI_A0 TX buffer ready?
SET_LE;
CLR_LE;
for(i = 0xFF; i > 0; i–); // Delay
}
#endif

这个是SPI_B0,在网上获得的,可以正常运行

#if 1
P3SEL |= 0x0E; // P3.3,2,1 USCI_B0 option select,注意管脚配置
P3DIR |= 0x01; // P3.0 output direction
UCB0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC; // 3-pin, 8-bit SPI mstr, MSB 1st
UCB0CTL1 |= UCSSEL_2; // SMCLK
UCB0BR0 = 0x01;
UCB0BR1 = 0;
UCB0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

Data = 0x00; // Load inital data
while(1)
{
UCB0TXBUF = Data; // Byte to SPI TXBUF
Data++; // Increment Data value – Set BREAKPOINT here
while (!(IFG2 & UCB0TXIFG)); // USCI_A0 TX buffer ready?
SET_LE;
CLR_LE;
for(i = 0xFF; i > 0; i–); // Delay
}
#endif

灰小子:

#if 0那一段io配置就错了,其他代码没看。
spi的io都是成对挨着出现的

user3814095:

回复 灰小子:

这个是MSP430F249 的管脚图,没有问题,UCA0就是不连续的。看示波器,有时钟信号出现,但MOSI一直为高,

灰小子:

回复 user3814095:

msp430ware里有相关的spi例程,又没有尝试过?

4个spi都有例程的

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