请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2355 我将 MSP430设置为主发送器。 我没有收到任何消息。 我连接到 LCD/RGB 模块。 当我尝试以100kHz 的频率运行时、我注意到只有一些字节会输出、然后时钟会停止(见下面)。 它似乎抑制了第三个字节的确认(一致)。 如果我关闭为 LCD 供电的5V 电源并将代码更改为400kHz、所有操作都可以再次正常进行。 有人能不能告诉我、在 MSP 中可能会发生什么以及我必须做什么才能使其以100kHz 的频率工作??? 从根本上说、我可能无法在 MSP 代码中正确执行创建麻烦的操作。 该代码设置为字节计数 、我启用 UCTXIE0和 UCBCNTIE (请参阅下面的 ISR)... TI 在 Resource Explorer 中没有关于如何处理忙位 wrt 至 ISR 或字节计数或时钟低电平处理此问题的好示例
100kHz
在400kHz 时也是如此...(工作正常)
ISR:
#pragma vector = USCI_B0_VECTOR __interrupt void I2C_ISR(void) { switch(__even_in_range(UCB0IV, USCI_I2C_UCBIT9IFG)) { case USCI_NONE: break; case USCI_I2C_UCALIFG: break; case USCI_I2C_UCNACKIFG: break; case USCI_I2C_UCSTTIFG: break; case USCI_I2C_UCSTPIFG: break; case USCI_I2C_UCRXIFG3: break; case USCI_I2C_UCTXIFG3: break; case USCI_I2C_UCRXIFG2: break; case USCI_I2C_UCTXIFG2: break; case USCI_I2C_UCRXIFG1: break; case USCI_I2C_UCTXIFG1: break; case USCI_I2C_UCRXIFG0: break; case USCI_I2C_UCTXIFG0: applicationI2C.pSysCommsB->UCBxTXBUF = *pI2CStream; pI2CStream++; break; case USCI_I2C_UCBCNTIFG: applicationI2C.pSysCommsB->UCBxIFG &= ~UCTXIFG; ISR.I2CComplete = T; LPM3_EXIT; break; case USCI_I2C_UCCLTOIFG: //pI2Cdata.pSysCommsB->UCBxCTLW[0] |= UCSWRST; break; case USCI_I2C_UCBIT9IFG: break; default: break; } }