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.

[参考译文] MSPM0C1104:LaunchPad LP-MSPM0C1104 上的 I2C 通信问题

Guru**** 2779905 points

Other Parts Discussed in Thread: LP-MSPM0C1104

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1619431/mspm0c1104-i2c-communication-issues-on-launchpad-lp-mspm0c1104

器件型号: MSPM0C1104

您好:

我正在努力 在 LP-MSPM0C1104 修订版 B 上实现 I2C
我已经测试引脚是否连接到了跳线连接的引脚。 跳线 J8 和 J6 接通、选择 PA0 和 PA11 的上拉电阻为 3.3V。
其他连接的跳线:所有 J10x、J7、J9。

我的代码基于一个示例应用。

在跳线上测量时得到第一幅图像、在输出引脚上测量时得到第二幅图像。  

任何解决方案或想法为何会发生这种情况?

PNG_2026224112435.pngPNG_2026224112535.png

#define I2C_TX_MAX_PACKET_SIZE (8)  /* Maximum size of TX packet */
#define I2C_TX_PACKET_SIZE (8)      /* Number of bytes to send to target device */
#define I2C_RX_MAX_PACKET_SIZE (8)  /* Maximum size of RX packet */
#define I2C_RX_PACKET_SIZE (8)      /* Number of bytes to received from target */
#define I2C_TARGET_ADDRESS (0x4C)    /* I2C Target address */

uint8_t gTxPacket[I2C_TX_MAX_PACKET_SIZE] = {0x00, 0x01, 0x02, 0x03, 0x04,
    0x05, 0x06, 0x07/* , 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F */};
uint32_t gTxLen, gTxCount;
uint8_t gRxPacket[I2C_RX_MAX_PACKET_SIZE];
uint32_t gRxLen, gRxCount;

int main (void)
{
    SYSCFG_DL_init();

    NVIC_EnableIRQ(I2C_0_INST_INT_IRQN);
    DL_SYSCTL_disableSleepOnExit();
    
    gI2cControllerStatus = I2C_STATUS_IDLE;

    gTxLen = I2C_TX_PACKET_SIZE;
    /*
     * Fill the FIFO
     *  The FIFO is 8-bytes deep, and this function will return number
     *  of bytes written to FIFO */
    gTxCount = DL_I2C_fillControllerTXFIFO(I2C_0_INST, &gTxPacket[0], gTxLen);
    /* Enable TXFIFO trigger interrupt if there are more bytes to send */
    if (gTxCount < gTxLen) {
        DL_I2C_enableInterrupt(
            I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
    } else {
        DL_I2C_disableInterrupt(
            I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
    }

    /*
     * Send the packet to the controller.
     * This function will send Start + Stop automatically.
     */
    gI2cControllerStatus = I2C_STATUS_TX_STARTED;
    while (!(
        DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE))
        ;
    DL_I2C_startControllerTransfer(
        I2C_0_INST, I2C_TARGET_ADDRESS, DL_I2C_CONTROLLER_DIRECTION_TX, gTxLen);

    /* Wait until the Controller sends all bytes */
    while ((gI2cControllerStatus != I2C_STATUS_TX_COMPLETE) &&
           (gI2cControllerStatus != I2C_STATUS_ERROR)) {
        __WFE();
    }

    while (DL_I2C_getControllerStatus(I2C_0_INST) &
           DL_I2C_CONTROLLER_STATUS_BUSY_BUS)
        ;

    /* Trap if there was an error */
    if (DL_I2C_getControllerStatus(I2C_0_INST) &
        DL_I2C_CONTROLLER_STATUS_ERROR) {
        /* LED will remain high if there is an error */
        __BKPT(0);
    }

    while (!(
        DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE))
        ;

    /* Add delay between transfers */
    delay_cycles(1000);

    /* Send a read request to Target */
    gRxLen               = I2C_RX_PACKET_SIZE;
    gRxCount             = 0;
    gI2cControllerStatus = I2C_STATUS_RX_STARTED;
    DL_I2C_startControllerTransfer(
        I2C_0_INST, I2C_TARGET_ADDRESS, DL_I2C_CONTROLLER_DIRECTION_RX, gRxLen);

    /* Wait for all bytes to be received in interrupt */
    while (gI2cControllerStatus != I2C_STATUS_RX_COMPLETE) {
        __WFE();
    }

    while (DL_I2C_getControllerStatus(I2C_0_INST) &
           DL_I2C_CONTROLLER_STATUS_BUSY_BUS)
        ;

    /* If write and read were successful, toggle LED */
    while (1) {
        delay_cycles(16000000);
    }
}

此致、

右侧

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    高 RH、

    似乎是硬件问题。 您可以拍摄 LaunchPad Connections 的照片吗? 还请展示您将 探头放在何处。

    此致、

    Zoey

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Zoey:

    连接探头时、J8 和 J9 混合运行。  

    此致、

    右侧