工具/软件:
您好、
我将 MSP430FR2355 控制器用于工程、希望对此使用 SPI 通信。 我尝试了很多,但我无法获得成功。 我的控制器需要充当仅主器件数据传输(无需接收数据)。
我想使用端口引脚 12、13、14 进行 SPI 通信 (UCB1)
这是我的代码,
void spi_init () 
{ 
P4SEL0 |= BIT5| BIT6 | BIT7;  
//时钟极性:非活动状态为高电平 
//MSB 在前、8 位、主器件、3 引脚模式、同步 
UCB1CTLW0 = UCSWRST;//**将状态机置于复位状态** 
UCB1CTLW0 |= UCCKPL | UCMSB | UCSYNC 
| UCMST | UCSSEL_SMCLK;// 3 引脚 8 位 SPI 从模式 
UCB1BRW = 0x20; 
//UCB1MCTLW = 0; 
UCB1CTLW0 &&~UCSWRST;//**初始化 USCI 状态机** 
UCB1IE |= UCRXIE;//启用 USCI0 RX 中断 
} 
#if Defined (__TI_COMPILER_VERSION__)|| Defined (__IAR_SYSTEM_ICC__) 
pragma vector=USCI_B1_vector 
__interrupt void USCI_B1_ISR (void) 
#elif defined (__GNUC__) 
void _attribute__((interrupt (USCI_B1_vector)) USCI_B1_ISR (void) 
#else 
错误:不支持编译器! 
#endif 
{ 
  开关 (__even_in_RANGE (UCB1IV、USCI_SPI_UCTXIFG)) 
  { 
    case USCI_NONE:break;//矢量 0 — 无中断 
    case USCI_SPI_UCRXIFG: 
    UCB1IFG &=~UCRXIFG; 
    休息; 
   用例 USCI_SPI_UCTXIFG: 
     if (spi_byte_ptr < spi_no_of_bytes) 
      { 
          UCB1TXBUF = SPI_BUFFER[SPI_BYTE_ptr+];//传输字符 
         UCB1IE |= UCTXIE; 
      } 
      暴露 
     { 
       UCB1IE &=~UCTXIE; 
       UCB1IFG &=~UCTXIFG; 
      } 
     休息; 
    默认值:中断; 
  } 
} 
首次执行代码时、中断将在该代码之后工作、中断将不起作用。
在观察示波器时、没有发生数据传输、但 CLK 引脚持续处于高电平状态。
这方面的帮助。
BR、
Yuvaraj 五
 
				 
		 
					