请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 波形和目标芯片标准化以使其运行。 但没有意义。