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.

[参考译文] MSP430FR5994:I2C 从配置工作不正常

Guru**** 2387080 points
Other Parts Discussed in Thread: MSP430FR5994, MSP-EXP430FR5994
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1067013/msp430fr5994-i2c-slave-configuration-is-not-working-properly

部件号:MSP430FR5994
《线程》中讨论的其他部件: MSP430WAREMSP-EXP430FR5994

大家好,

我想检查 MSP430FR5994板上的 I2C 从属配置。

我已经从 MSP430Ware 中获取了示例代码- v:3.80.14.01 -  msp430fr599x_euscib0_i2c_11.c

我将主中继器作为 Fusion 数字工具( I2C GUI )来发送和接收数据。

但当我从 I2C GUI(MASTER)向 MSP430FR5994 (从属)发送命令时,我收到了从属的响应。

下面是 I2C 从代码。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <MSP4C.h>

易失性无符号字符 TXData;

Int main (无效)

WDTCTL = WDTPW | WDTHOLD;

//配置 GPIO
P7SEL0 |= BIT0 | BIT1;
P7SEL1 &=~(BIT0 | BIT1);

//禁用 GPIO 通电默认高阻抗模式以激活
//以前配置的端口设置
PM5CTL0和=~LOCKLPM5;

//为 I2C 模式配置 USCI_B2
UCB2CTLW0 = UCSWRST;//软件重置已启用
UCB2CTLW0 |= UCMODE_3 | UCSYNC;// I2C 模式,同步模式
UCB2I2COA0 = 0x48 | UCOAEN;//自己的地址为0x48 +启用
UCB2CTLW0 &=~UCSWRST;//清除重置寄存器
UCB2IE |= UCTXIE0 | UCSTPIE;//传输,停止中断启用

__bis_SR_register (LPM0_bits | GIE);//输入 LPM0,带中断
__NO_OPEENT();
}

#IF 定义(__TI_Compiler_version__)||定义(__IAR_SYSTEMS _ICC__)
#pragma vector = EUSCI_B2_vector
__中断无效 USCI_B2_ISR(void)
#Elif Defined (__GNUC _)
void __attribute__((interrupt (EUSCI_B2_Vector)) USCI_B2_ISR (void)
#else
错误编译器不受支持!
#endif

交换机(__evo_in_range (UCB2IV,USCI_I2C_UCBIT9IFG))

Case USCI_NONE:Break;// Vector 0:无中断
案例 USCI_I2C_UCALIFG:中断;//矢量2:ALIFG
案例 USCI_I2C_UCNACKIFG:中断;//矢量4:NACKIFG
案例 USCI_I2C_UCSTTIFG:中断;//矢量6:STTIFG
案例 USCI_I2C_UCSTPIFG://矢量8:STPIFG
TXData = 0;
UCB2IFG 和=~UCSTPIF;//清除停止条件标志
休息;
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:Break;// Vector 22:RXIFG0
案例 USCI_I2C_UCTXIFG0://矢量24:TXIFG0
UCB2TXBUF = TXData++;
休息;
案例 USCI_I2C_UCBCNTIFG:中断;//矢量26:BCNTIFG
案例 USCI_I2C_UCCLTOIFG:中断;//矢量28:时钟低超时
Case USCI_I2C_UCBIT9IFG:中断;//矢量30:第9位
默认值:Break;
}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

这是 I2C 工具的快照,它被视为主工具,我正在对此进行攻击

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

    你好,Madhav,

    只是确认一下,您使用的是 MSP-EXP430FR5994 Launchpad,对吗?  SDA 和 SCL 上的拉电阻器是否达到3.3V,如果是,值是多少?  如果我们需要查看实际的 I2C 总线信号,您是否有一个工具(SAA 工具或逻辑分析仪或示波器)来捕获波形?

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

    您好 Dennis,这个问题已经解决。 上拉电阻器出现问题。