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.

[参考译文] RTOS/MSP432P401R:在一个项目中在单独的 USCI 端口上打开不同的 I2C 总线

Guru**** 2553260 points
Other Parts Discussed in Thread: LDC1614

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/592353/rtos-msp432p401r-opening-different-i2c-buses-on-separate-usci-ports-in-one-project

器件型号:MSP432P401R
主题中讨论的其他器件:LDC1614

工具/软件:TI-RTOS

您好!

我目前正在 PZ100分接插座上使用 MSP432P401R CCS V6.2、但很快就要转到定制板。  我尝试连接4个单独的 LDC1614电感式传感器、每个 I2C 总线2个(每个芯片上只有高/低地址选择)。  我可以在不同的 I2C 线路上成功地与芯片交谈,但无法确定如何为 I2C_open()命令映射不同的引脚。

我从 i2ctmp006 I2C w/ RTOS 示例开始。  我可以启动 I2C 并更改引脚。  

我已更改 MSP_EXP432P401R_initI2C (void)中 MSP_EXP432P401R.c 中的引脚映射以映射到 USCI_B2上的引脚

/*分别将引脚3.6和3.7配置为 SDA 和 SCL。 */
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN6 | GPIO_PIN7、GPIO_PRIMARY_MODULE_Function); 

我在这里看到了如何更改/添加 I2C 名称

typedef enum MSP_EXP432P401R_I2CName{
//MSP_EXP432P401R_I2CB0 = 0、

MSP_EXP432P401R_I2CB0、

MSP_EXP432P401R_I2CCOUNT
}MSP_EXP432P401R_I2CCOUNT; 

这个名称在 board.h 中定义、我可以更改它。  我无法确定 i2c_open()索引如何映射到正确的 USCI 总线,以便可以打开单独的 I2C 总线。  或者、我是否需要设置一组新的 I2C 参数、而不是默认参数。  

感谢您的帮助、如果您需要更多信息/背景信息、请告诉我!

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

    杰克逊

    我能问您为什么使用 CCS v6.2吗? 使用 SimpleLink MSP432 SDK 和 I2C TI 驱动程序的 CCS7.1应该会更加轻松。 请参阅下面的示例、其中有两个线程运行 USCIB0和 B1的 I2C 主/从。
    e2e.ti.com/.../2165083

    从架构上讲、由于上述示例使用的是 TI RTOS、因此这应该很好地映射到您应该如何使用器件设置多总线 I2C。
    在这种情况下、您有两个具有线程函数的独立.c 文件、每个线程函数都调用 I2C_Open (I2CBUSNAME、&i2cParams);

    我在 MSP_EXP432P401R.h 中拥有的 typdef 枚举如下所示:

    typedef 枚举 MSP_EXP432P401R_I2CName{
    MSP_EXP432P401R_I2CB0 = 0、
    MSP_EXP432P401R_I2CB1、
    
    MSP_EXP432P401R_I2CCOUNT
    }MSP_EXP432P401R_I2CName; 

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

    谢谢 Evan、

    迁移到7.1确实解决了这个问题、因为这些引脚被显式连接至 MSP_EXP432P401R.c 中的 I2C_Name  

    CONST I2CMSP432_HWAttrsV1 i2cMSP432HWAttrs[MSP_EXP432P401R_I2CCOUNT ={
    {
    baseAddr = EUSCI_B0_BASE、
    .intNum = INT_EUSCIB0、
    .intPriority =(~0)、
    时钟源= EUSCI_B_I2C_CLOCKSOURCE_SMCLK、
    .dataPin = I2CMSP432_P1_6_UCB0SDA、
    clkPin = I2CMSP432_P1_7_UCB.S
    }、
    {
    baseAddr = EUSCI_B1_base、
    .intNum = INT_EUSCIB1、
    .intPriority =(~0)、
    时钟源= EUSCI_B_I2C_CLOCKSOURCE_SMCLK、
    .dataPin = I2CMSP432_P6_4_UCB1SDA、
    clkPin = I2CMSP432_P6_5_UCB.S
    }、
    {
    .baseAddr = EUSCI_B2_base、
    .intNum = INT_EUSCIB2、
    .intPriority =(~0)、
    .clockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK、
    .dataPin = I2CMSP432_P3_6_UCB2SDA、
    clkPin = I2CMSP432_P3_7_UCB.S
    }、
    {
    .baseAddr = EUSCI_B3_base、
    .intNum = INT_EUSCIB3、
    .intPriority =(~0)、
    .clockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK、
    .dataPin = I2CMSP432_P6_UCB3SDA、
    clkPin = I2CMSP432_P6_7_UCB.S
    }
    }; 

    我继续设置所有 I2C 总线、只是为了测试它们。  我还需要为中的每一项添加声明  

    CONST I2C_Config I2C_CONFIG[MSP_EXP432P401R_I2CCOUNT 

    以及在上面的 I2C_Name 函数中添加标识符。

    这似乎是目前正在进行的工作、感谢您的帮助!