主题中讨论的其他器件:MSP430FR5994、、 UNIFLASH
大家好、
我使用 USB2ANY 接口适配器通过 I2C 接口读取 MSP430FR5994 MCU 的寄存器。 但是、我无法读取寄存器。 附件是供您参考的快照。 您能帮我解决这个问题吗?

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.
大家好、
我使用 USB2ANY 接口适配器通过 I2C 接口读取 MSP430FR5994 MCU 的寄存器。 但是、我无法读取寄存器。 附件是供您参考的快照。 您能帮我解决这个问题吗?

我看到 USB2ANY 适配器正在与 USB2ANY Explorer 程序通信、因此我认为 链的这一部分可能正在工作。 您可能需要使用示波器探测 I2C 线路、并确认 USB2ANY 在预期线路上发送正确的信号-需要连接 I2C 线路和 GND 线路、才能实现通信。
如果您可以探测总线并展示您确信应该处理的事务、那么我认为问题与 MSP430FR5994配置有关-这不是我的专业领域、但我可以让 MSP430支持团队的一些人来看看。
谢谢 Payne 的回复。 您能否添加 MSP430FR5994专业知识并帮助我们解决该问题?
我们使用的是 MSP‑EXP430FR5994 EVK。 我已经 使用 CCS 工具将 msp430fr59xx_eusci_i2c_standard_slave.c 转换为.out、并使用 Uniflash 软件对 EVK 进行编程。 现在、我尝试使用 USB2ANY 适配器读取 MSP430FR5994的寄存器、但它无法正常工作。
那么、您能帮助我调试这个问题吗?
尊敬的 Swaroop:
您使用的代码包括一些应用级协议、您可以首先尝试使用以下代码进行测试:
https://dev.ti.com/tirex/explore/node?node=A__AIxMqO6Wsyyga7bdYuWczg__msp430ware__IOGqZri__LATEST
谢谢!
此致
约翰逊
尊敬的 Johnson:
我已验证 USB2ANY 适配器是否提供具有所需频率的时钟。 我附上了这张快照供您参考。
但是、在使用跳线(SCL、SDA 和 GND)时钟将 USB2ANY EVK 连接到 MSP430FR5994 EVK 后、将不再发生。 时钟被 MSP430 EVK 保持在低电平...
如果我在不连接到 USB2ANY 适配器的情况下探测 MSP430的时钟和数据信号、则会如预期的那样显示始终为高电平(3V3)。
那么、能否帮助我如何继续进行下一步?
此致、
斯瓦罗普有限公司

尊敬的 Swaroop:
我查看了这个示例并在我这边进行了一些测试、缺省示例只有读取功能、如果你从 USB2ANY 发送一些数据、你将遇到一些问题(也许是超时)。
我添加了一些代码(启用 RX 中断并读取 RXBUF 数据)、现在您可以尝试以下代码、这应该能够读取和写入 I2C 数据:
#include <msp430.h>
volatile unsigned char TXData;
volatile unsigned char RXData;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD;
// Configure GPIO
P7SEL0 |= BIT0 | BIT1;
P7SEL1 &= ~(BIT0 | BIT1);
// Disable the GPIO power-on default high-impedance mode to activate
// previously configured port settings
PM5CTL0 &= ~LOCKLPM5;
// Configure USCI_B2 for I2C mode
UCB2CTLW0 = UCSWRST; // Software reset enabled
UCB2CTLW0 |= UCMODE_3 | UCSYNC; // I2C mode, sync mode
UCB2I2COA0 = 0x48 | UCOAEN; // own address is 0x48 + enable
UCB2CTLW0 &= ~UCSWRST; // clear reset register
UCB2IE |= UCRXIE0 | UCTXIE0 | UCSTPIE; // transmit,stop interrupt enable
__bis_SR_register(LPM0_bits | GIE); // Enter LPM0 w/ interrupts
__no_operation();
}
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector = EUSCI_B2_VECTOR
__interrupt void USCI_B2_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(EUSCI_B2_VECTOR))) USCI_B2_ISR (void)
#else
#error Compiler not supported!
#endif
{
switch(__even_in_range(UCB2IV, USCI_I2C_UCBIT9IFG))
{
case USCI_NONE: break; // Vector 0: No interrupts
case USCI_I2C_UCALIFG: break; // Vector 2: ALIFG
case USCI_I2C_UCNACKIFG: break; // Vector 4: NACKIFG
case USCI_I2C_UCSTTIFG: break; // Vector 6: STTIFG
case USCI_I2C_UCSTPIFG: // Vector 8: STPIFG
TXData = 0;
UCB2IFG &= ~UCSTPIFG; // Clear stop condition int flag
break;
case USCI_I2C_UCRXIFG3: break; // Vector 10: RXIFG3
case USCI_I2C_UCTXIFG3: break; // Vector 12: TXIFG3
case USCI_I2C_UCRXIFG2: break; // Vector 14: RXIFG2
case USCI_I2C_UCTXIFG2: break; // Vector 16: TXIFG2
case USCI_I2C_UCRXIFG1: break; // Vector 18: RXIFG1
case USCI_I2C_UCTXIFG1: break; // Vector 20: TXIFG1
case USCI_I2C_UCRXIFG0:
RXData = UCB2RXBUF;
break; // Vector 22: RXIFG0
case USCI_I2C_UCTXIFG0: // Vector 24: TXIFG0
UCB2TXBUF = TXData++;
break;
case USCI_I2C_UCBCNTIFG: break; // Vector 26: BCNTIFG
case USCI_I2C_UCCLTOIFG: break; // Vector 28: clock low timeout
case USCI_I2C_UCBIT9IFG: break; // Vector 30: 9th bit
default: break;
}
}
更改了以下代码项:

我还在我身边做了一些测试、看起来交流成功:

硬件连接与您相同:

谢谢!
此致
约翰逊