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.

[参考译文] MSP430FR2433:使用 MSP-EXP430FR2433 Launchpad I2C 配置时出现问题

Guru**** 2465890 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/699609/msp430fr2433-issue-using-msp-exp430fr2433-launchpad-i2c-configuration

器件型号:MSP430FR2433
主题中讨论的其他器件:MSPWARE

我已设置为将 P1.3和 P1.2用于 I2C 接口。 我在这两个引脚上连接了3.3K 上拉电阻器。  在完成设置并取消软件复位的置位后、I2C 事务甚至不会进入第一个起始字节输出。  I2C 状态寄存器显示在没有任何其他器件连接到总线的情况下总线忙被置为有效、这解释了为什么不启动启动。  SCL 和 SDA 引脚测量高电平(3V3)。 我确实验证了我是否已将选择引脚设置为选择外设而不是 GPIO。

然后、我选择通过重新配置为 GPIO 并使所有 P1引脚输出来排除引脚行为故障。  P1OUT 设置为08h、仅将 P1.3驱动为高电平。  然后、我在代码中设置一个断点以检查寄存器内容。 它显示 P1OUT 包含预期的08h。  但 P1IN 显示的输入值为2Fh。  我的理解是、如果没有其他连接、除非存在故障器件、否则它应与 P1OUT 匹配。  P1.2和 P1.3的测量验证它们是否均为高电平、而不是预期值 P1.2低电平、P1.3高电平。

对于这种意外行为、是否有其他合理的解释?

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

    我使用 MSPware 例程为400kHz 时钟设置 I2C。  系统时钟设置为8MHz。  I2C 主器件、无主器件。 18字节传输后自动停止生成。

    这是用于设置它的代码的摘录。

     P1SEL0 =(I2C_SCL | I2C_SDA);  //设置为 I2C
       //设置 I2C 主外设
       //实例化参数结构
       EUSCI_B_I2C_initMasterParam paramStruct;
       paramStruct.selectClockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK;
       paramStruct.i2cClk = 80000; //时钟源频率
       paramStruct.datarate = EUSCI_B_I2C_SET_DATA_RATE 400KBPS;
       paramStruct.byteCounterThreshold = 0x12;
       paramStruct.autoSTOPGeneration = EUSCI_B_I2C_SEND_STOP_Automatically _ON_BYTECOUNT_T_THRESHOLD;
       EUSCI_B_I2C_initMaster (__MSP430_BASEADDRESS_EUSCI_B0__,paramStruct);
       //对于 IO 测试、将 I2C 保持在复位状态。
       //保持未为 I2C 选择相关的 GPIO
       //将 SDA 引脚驱动为高电平、将 SCL 引脚驱动为低电平并在断点处停止。
       
       // P1DIR |=(I2C_SCL | I2C_SDA);
       // P1OUT |= I2C_SDA;
       //执行实验。  
       //不驱动输出。 P1OUT 显示的值为04h、对应于仅驱动 P1.2
       // P1IN 显示的值为2Fh 而不是04h、电压表确认 P1.2和 P1.3均为高电平
       //尝试将 P1.3驱动为高电平、P1.2驱动为低电平。  相似结果 P1OUT = 08h、P1IN = 2Fh。
       UCB0CTLW0 &=~UCSWRST; //取消置位软件复位
       

    如果相关、我可以提供整个源代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    更新了。 我今天获得了一个新的 LaunchPad 板、并在上面尝试了代码。 它的运行方式与总线忙在第一个 I2C 传输被启动前不置为有效有所不同。 此时、我将原始问题归咎于有缺陷的 launchpad 板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    后续行动。 对 launchpad 电路板进行进一步测试可验证端口引脚 P1.0。 P1.3已损坏。 无法驱动输出高电平或低电平。 P1IN 在配置为输出且 P1OUT 位设置为低电平时报告逻辑1。