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.

[参考译文] MSP430FR2512:设计中心的 I2C 有问题、无"HID 已连接"可见

Guru**** 1637200 points
Other Parts Discussed in Thread: MSP430FR2512, CAPTIVATE-PGMR, EVM430-CAPMINI, MSP430FR2522, MSP430FR2633, MSP430FR2533, MSP430FR2532, MSP430FR2632
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1049852/msp430fr2512-problem-with-i2c-in-design-center-no-hid-connected-seen

器件型号:MSP430FR2512
主题中讨论的其他器件: CAPTIVATE-PGMREVM430-CAPMINIMSP430FR2522MSP430FR2633MSP430FR2533MSP430FR2532MSP430FR2632

您好!

我使用 MSP430FR2512的定制板、在该板上、我设置了用于 CAPTIVATE-PGMR 的 SBW 和 I2C、2个自按钮、我可以生成源代码并设置中断点、该中断点在发生触摸和/或接近时中断。

我知道软件可以正常工作。

但是、我一生都无法将其连接到设计中心来调整测量值。

我按照快速入门的要求、找到了以下内容:

开始 HID 与目标通信

通过选择菜单“Communications->Connect”启用 HID 通信。 通过查看主窗口左下角的消息、验证 HID 设备是否已连接。

图 141  HID 连接状态

是的、没有这样的东西、我在那里有一个版本号、从未连接就绪或 hid、即使在 自定义电路板(但它使用 UART)之前使用 EVM430-CAPMINI 也是如此、该定制板可读取 UART 的值。  

我现在使用的是 I2C、它不应导致任何问题、但它看起来确实如此。

我正在重复使用一个预先存在的 I2C 总线(当前没有连接其他 IC、只使用测试焊盘和上拉电阻4k7)、而且我没有引脚可以为此设置 UART。

当我单击通信菜单中的连接时、它不会显示任何内容、也不能读取任何值。

因此 、在您将我转至快速入门指南之前、  请先告诉我"HID 连接"笔记的位置。

 

此致、

Sebastian

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

    我通过 CAPT_BSP.C 寻找线索(我 现在使用 MSP430FR2512IPW16R、在 EVM430-CAPMINI 中 、它当然是20引脚 QFN、但引脚排列似乎错误、BSP 是否支持 TSSOP 模型?

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

    您好、Sebastian、

    您尝试使用 FR2512上的哪些引脚与 GUI 进行通信? 如果使用 I2C、则默认引脚为 P1.2和 P1.3。  您还需要选择一个 IRQ 引脚来使用。  您可以在 CAPT_commConfig.h 文件中选择引脚。  确保根据这些引脚的功能(PSEL 寄存器)在 bsp.c 文件中配置这些引脚。

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

    SDA = P1.2、SCL = P1.3、IRQ = 2.1 (由于布局原因、但正如您所说、已在 CAPT_commConfig.h 中重新配置)、我还需要更改 BSP 中的内容吗?  

    根据另一篇文章 https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/969610/msp430fr2512-bulk_i2c-available:

    对 TSSOP 版本的支持似乎不足。

    此致、

    Sebastian

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

    您好、Sebastian、

    是的、您需要相应地设置 P1SEL.2 = 1和 P1SEL3位= 0。

    根据数据表、P1.2和 P1.3可用作 I2C 引脚。  您无需更改 USCIBRMP、因此您应该会觉得不错。

    确保您连接到 CAPT-PGMR 上的 I2C 引脚、并且您正在 CAPT_Userconfig.h 中使用__CAPT_BULKI2C_interface__

    使用 GUI 时、请确保同时选择 BULKI2C 连接选项。

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

    因此,只需确保:

    SYSCFG2 |= USCIBRMP;

    // P1.0:输出低电平
    // P1.1:输出低电平
    // P1.2:输出低电平
    // P1.3:输出低电平
    // P1.4:UCA0 UART TXD IF (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)、否则输出低电平
    // P1.5:UCA0 UART RXD IF (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)、否则输出低电平
    // P1.6:输出低电平
    // P1.7:输出低电平
    #if (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)
    P1OUT =(0);
    P1DIR =(GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN6 | GPIO_PIN7);
    P1SEL0 =(GPIO_PIN4 | GPIO_PIN5);
    P1SEL1 =(0);
    其他
    P1OUT =(0);
    P1DIR =(GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);
    P1SEL0 =(GPIO_PIN2 | GPIO_PIN3);
    P1SEL1 =(0);

    是这样吗?

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

    感谢您的回答。

    因此、我在 MSP430FR2512IPW16R 设计中心制作了一个全新的项目、2个简单的自按钮、i2c bulk。

    它们连接到 cap0.2和 cap0.3、我在 P2.1上有 IRQ、在 prox、LPM3上唤醒、在 prox 上强制 LPM4唤醒。

    CAPT_CommConfig.h

    #ifdef __MSP430FR2522__// MSP430FR2522
    #define I2CSLAVE__REQ_POUT (P2OUT)
    #define I2CSLAVE__REQ_Pdir (P2DIR)
    #define I2CSLAVE__REQ_MASK (BIT4)
    else // MSP430FR2633、MSP430FR2533、MSP430FR2632、MSP430FR2532
    #define I2CSLAVE__REQ_POUT (P2OUT)
    #define I2CSLAVE__REQ_Pdir (P2DIR)
    #define I2CSLAVE__REQ_MASK (BIT1)
    #endif

    CAPT_BSP.c

    #if (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)
    P1OUT =(0);
    P1DIR =(GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN6 | GPIO_PIN7);
    P1SEL0 =(GPIO_PIN4 | GPIO_PIN5);
    P1SEL1 =(0);
    其他
    P1OUT =(0);
    P1DIR =(GPIO_PIN0 | GPIO_PIN1);//用于设置按钮状态的两个输出,类似于 captive-mini 上的 LED
    P1SEL0 =(0);
    P1SEL1 =(GPIO_PIN2 | GPIO_PIN3);
    #endif

    #if (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)
    P2OUT =(GPIO_PIN4);
    P2DIR =(GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN4);
    P2SEL0 =(0);
    P2SEL1 =(GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN5 | GPIO_PIN6);
    其他
    P2OUT =(GPIO_PIN1);
    P2DIR =(GPIO_PIN1);
    P2SEL0 =(0);
    P2SEL1 =(0);
    #endif

    我在 I2CSlave_setRequestFlag 上设置了一个断点、它会在从 prox 唤醒期间触发。

    仅从超时状态释放、从不读取。

    我已对接线进行了三次检查、检查了导通性并检查了是否正确拉取。

    我还连接了 UART 并使用 captate-mini 软件对其进行了测试、它可以正常工作、但我希望 i2c 能够正常工作。

    如果您认为我做了一些错误的事情,请生成一个项目,调整 BSP 和 commconfig 并发送回给我。

    此致、

    Sebastian

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

    感谢您的回答。

    因此、我在 MSP430FR2512IPW16R 设计中心制作了一个全新的项目、2个简单的自按钮、i2c bulk。

    它们连接到 cap0.2和 cap0.3、我在 P2.1上有 IRQ、在 prox、LPM3上唤醒、在 prox 上强制 LPM4唤醒。

    CAPT_CommConfig.h

    #ifdef __MSP430FR2522__// MSP430FR2522
    #define I2CSLAVE__REQ_POUT (P2OUT)
    #define I2CSLAVE__REQ_Pdir (P2DIR)
    #define I2CSLAVE__REQ_MASK (BIT4)
    else // MSP430FR2633、MSP430FR2533、MSP430FR2632、MSP430FR2532
    #define I2CSLAVE__REQ_POUT (P2OUT)
    #define I2CSLAVE__REQ_Pdir (P2DIR)
    #define I2CSLAVE__REQ_MASK (BIT1)
    #endif

    CAPT_BSP.c

    #if (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)
    P1OUT =(0);
    P1DIR =(GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN6 | GPIO_PIN7);
    P1SEL0 =(GPIO_PIN4 | GPIO_PIN5);
    P1SEL1 =(0);
    其他
    P1OUT =(0);
    P1DIR =(GPIO_PIN0 | GPIO_PIN1);//用于设置按钮状态的两个输出,类似于 captive-mini 上的 LED
    P1SEL0 =(0);
    P1SEL1 =(GPIO_PIN2 | GPIO_PIN3);
    #endif

    #if (DEFAULT_OSC_SELECTION = CS_XT1CLK_SELECT)
    P2OUT =(GPIO_PIN4);
    P2DIR =(GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN4);
    P2SEL0 =(0);
    P2SEL1 =(GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN5 | GPIO_PIN6);
    其他
    P2OUT =(GPIO_PIN1);
    P2DIR =(GPIO_PIN1);
    P2SEL0 =(0);
    P2SEL1 =(0);
    #endif

    我在 I2CSlave_setRequestFlag 上设置了一个断点、它会在从 prox 唤醒期间触发。

    仅从超时状态释放、从不读取。

    我已对接线进行了三次检查、检查了导通性并检查了是否正确拉取。

    我还连接了 UART 并使用 captate-mini 软件对其进行了测试、它可以正常工作、但我希望 i2c 能够正常工作。

    如果您认为我做了一些错误的事情,请生成一个项目,调整 BSP 和 commconfig 并发送回给我。

    此致、

    Sebastian

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

    您好、Sebastian、

    不完全正确-请参阅上表中的 eUSCIB0?  要使用 P1.2、P1.2、您需要 SYSCF2 &=~USCIBRMP。  默认情况下、该位在 POR 时清零。  SYSCFG2 |=选择 eUSCIB0、但在引脚 P2.5、P2.6上。

    关于 I2CSlave_setRequestFlag、一旦由软件设置、主机(CAPT-PGMR)必须响应中断并启动 I2C 总线事务以读取数据、否则 I2CSlave 驱动程序的超时将重置总线。  如果您没有看到此活动、请确保在 GUI 中选择 BULKI2C 并单击"Connect"按钮。  这将向 CAPT-PGMR 发送一条命令以切换到 I2C 模式。  您是否有用于检查 SDA 和 SCL 线路的示波器或逻辑探针?  验证它们是否上拉至3.3V。

    查看您的原理图、我将在您的 bsp.C 中使用以下分配

       // P1.0:输入
       // P1.1:输入
       // P1.2:UCB0 I2C SDA
       // P1.3:UCB0 I2C SCL
       // P1.4:输出低电平
       // P1.5:输出低电平
       // P1.6:输入(CAP0.2)
       // P1.7:输入(CAP0.3)
       P1OUT =(0);
       P1DIR =(GPIO_PIN4 | GPIO_PIN5);
       P1SEL0 =(GPIO_PIN2 | GPIO_PIN3);
       P1SEL1 =(0);

       // P2.0:输出低电平
       // P2.1:IRQ (开漏)
       // P2.2:输出低电平
       P2OUT = (0);
       P2DIR = (GPIO_PIN0 | GPIO_PIN2);
       P2SEL0 = (0);
       P2SEL1 = (0);

    我还注意到、在原理图中、您有一个4.7uF 连接到 VREG?  这只能是1.0uF。

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

    //将 EUSCI B0引脚重新映射到次要位置
    //这会释放 CapTIvate IO
    //
    SYSCFG2 &=~USCIBRMP;
    // SYSCFG2 |= USCIBRMP;

    // P1.0:输出低电平
    // P1.1:输出低电平
    // P1.2:输出低电平

    我现在做了这个、什么也没做。