This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432P401R的I2C模块不产生START信号问题

如题:

程序中应用到了EUSCI_B0的I2C模式,应用示例代码[examples\nortos\MSP_EXP432P401R\driverlib\i2c_master_rw_repeated_start-master_code]中的读写中断方式。

程序卡死在了读I2C_masterSendMultibyteStart函数中的

while (BITBAND_PERI(EUSCI_B_CMSIS(moduleInstance)->CTLW0,
EUSCI_B_CTLW0_TXSTT_OFS)
|| !BITBAND_PERI(EUSCI_B_CMSIS(moduleInstance)->IFG,
EUSCI_B_IFG_TXIFG0_OFS));

调试时,查看CTLW0和IFG寄存器,STT位长时置1, TXIFG0位长时为0. 

其它条件:MSP432作主机,从机地址为0x1F。  不知问题出在何处?

  • 请您试一下下面链接中DavidL给出的驱动程序

    e2e.ti.com/.../1701554
  • 多谢您的及时回复。应用了推荐的I2C驱动后,可以正常通信了。等有空了,再详细研究下问题所在 并分享成果。 再次谢谢。
  • 很高兴能帮到您!期待您的分享!
  • 您好:
    我参考了这个连接e2e.ti.com/.../1701554 i2c驱动,操作芯片时程序一直停在
    //Poll for transmit interrupt flag.
    while (!BITBAND_PERI(EUSCI_B_CMSIS(moduleInstance)->IFG, EUSCI_B_IFG_TXIFG0_OFS))
    ;
    我使用两个板子测试i2c官网例子时,发现刚开始i2c 从设备收到的数据都是0 (正确数据为0x11 0x22...)程序跑个1分钟之后 接受到的数据完全正确, 你有出现过这种情况吗?
    我使用的是P6.4(i2c_sda)和P6.5(i2c_scl)。
    可不可以借鉴一下你i2c_driver.c 和i2c_driver.h文件呢?

    非常谢谢。
  • 我用的就是链接中的文件 ,可以通信,我的从机是加速度计。
  • 您好,非常感谢你的回复。
    我使用的1832.u2c_druver.c和6622.i2c_driver.h文件, 我这出现运行程序之后, 会进入Cortex-M4 Processor Exceptions中断,而不是进入设备中断。你遇到过这种现象吗?

    我调用i2c_driver.c文件中的API过程:

    void main(void)

    {

    int i = 0;
    uint8_t rxBuf[10] = { 0 };
    Clock_Init48MHz();
    MAP_WDT_A_holdTimer();

    initI2C(EUSCI_B1_BASE);
    while (1) {

    readI2C(EUSCI_B1_BASE, 0x68, 0x00, rxBuf, 1);

    for (i = 0; i < 2000; i++);

    }

    }

  • 已解决, 感谢你的答案。
  • 首先,恭喜你的问题得到了解决。  在问题得到解决后,应该分享一下问题出现的原因或解决流程或方法。   只有每个人都乐于分享,我们才能在遇到问题时有所求,有所果,有所成。  谢谢。

  • 你好!请问你是怎么解决的呢?我也是自己用系统的例程,就停在while (!BITBAND_PERI(EUSCI_B_CMSIS(moduleInstance)->rIFG.r, UCTXIFG_OFS)) 用1832.u2c_druver.c和6622.i2c_driver.h进入Cortex-M4 Processor Exceptions中断!能分享一下是怎么解决的吗?谢谢!
  • 1832.u2c_druver.c和6622.i2c_driver.h使用的中断处理函数名字和startup_msp432p401r_ccs.c文件中中断处理返回名字不一样,所以需要你改一下 。