请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5994 主题中讨论的其他器件: MSP430FR2355、 MSP430FR2433、MSP430FR5992
您好!
我使用的是 MSP430FR5994和 MSP4305992
将使用的芯片从 MSP430FR2355、MSP430FR2433更改为 MSP430FR5992、MSP430FR5994后、无法与目标芯片进行 SPI 通信。
目标芯片必须精确调整为通信频率。 (文献编号:1MHz)
观察示波器、clk 波形很奇怪。
无法通信。 (msp599x)
工作正常 clk。 (msp2433)
void B1_do_spi_noCS(uint8_t nbytes){ // Reset SPI transaction pointers pSPITxBuf = spi_tx_buf; pSPIRxBuf = spi_rx_buf; spi_tx_end = pSPITxBuf + nbytes; spi_rx_end = pSPIRxBuf + nbytes; SpiDone = 0; // Trigger SPI transfer UCB1IE |= UCTXIE; // Block until end of transaction __bis_SR_register(LPM0_bits); } #pragma vector=USCI_B1_VECTOR __interrupt void USCI_B1_ISR(void) { switch (__even_in_range(UCB1IV, USCI_SPI_UCTXIFG)) { case USCI_NONE: break; // Vector 0 - no interrupt case USCI_SPI_UCRXIFG: *(pSPIRxBuf++) = UCB1RXBUF; //cnt1++; if (pSPIRxBuf >= spi_rx_end) { SpiDone = true; // Exit low power mode _BIC_SR_IRQ(LPM0_bits); } break; case USCI_SPI_UCTXIFG: UCB1TXBUF = *(pSPITxBuf++); //cnt2++; if (pSPITxBuf >= spi_tx_end) { UCB1IE &= ~UCTXIE; _BIC_SR_IRQ(LPM0_bits); _BIC_SR_IRQ(LPM0_bits); SpiDone = true; } break; default: break; } }
SPI 源代码。 在 MSP 2,355,2433上、该代码运行良好。
禁用 RX 中断会将 SPI CLK 波形和目标芯片标准化以使其运行。 但没有意义。