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.

[参考译文] MSP430G2333:确认了USCI I2C上拉错误

Guru**** 2586715 points
Other Parts Discussed in Thread: MSP430G2333

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/616877/msp430g2333-usci-i2c-pull-up-bug-confirmed

部件号:MSP430G2333

我一直在努力使I2C总线在USCI接口上工作。

我正在使用端口1 (P1REN)上的内部上拉电阻器,并计划以低数据速率运行I2C总线。

使用我自己的代码和TI的示例代码,我已经确认,如果为WFP 2.7 和WFP设置了P1REN位2.6 ,USCI将不起作用。 I2C线路只是保持高电压。

连接10K外部上拉电阻器并清除P1REN位,使代码能够完美工作。

在连接10K外部上拉电阻器的情况下设置P1REN位,再次导致I2C线路锁定过高。

我不是在寻找解决方案,只是报告I2C USCI中有一个与P1REN有某种关系的错误。

内部主(无效)

WDTCTL = WDTPW + WDTHOLD;//停止WDT
P1SEL || BIT6 + BIT7;//将I2C引脚分配给USI_B0
P1SEL2|= BIT6 + BIT7;//将I2C引脚分配给USI_B0
P1DIR || BIT0 | BIT6 | BIT7;// WFP 1.0 输出
//P1REN |= BIT6 + BIT7;//打开电阻器(软件锁定且SDA/SCL线路保持高(零瞬变),如果此线路未注释)
P2OUT |= BIT6 + BIT7;//将上拉转至VCC

UCB0CTL1 || UCSWRST;//启用软件重置
UCB0CTL0 = UCMST + UCMODE_3 + UCSNC;// I2C主控,同步模式
UCB0CTL1 = UCSSEL_2 + UCSWRST;//使用SMCLK,保持SW重置
UCB0BR0 = 12;// fSCL = SMCLK/12 =~100kHz
UCB0BR1 = 0;
UCB0I2CSA = 0x4e;//设置从属地址
UCB0CTL1 &=~UCSWRST;//清除软件重置,恢复操作

....这只是TI示例代码...

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

    感谢您提请我们注意此事。 您能否提供您所指的TI代码示例的名称?

    此致,
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是CCS文件名的“Explore”部分,文件名是:“msp430g2xxS 3_uscib0_i2c_01.c”
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Steve,

    感谢您的指导。 USCI模块不能与内部上拉电阻器一起使用。上拉电阻器的主要用途是在将I/O引脚配置为输入时使用。

    此外,默认情况下,您引用的示例不使用内部上拉菜单。 示例开头有一个图表,显示外部10K上拉的使用:

    感谢您的关注! 我认为在我们的用户指南中添加一些内容,说明内部上拉不应与I2C通信一起使用,这可能仍然很有价值。

    此致,  
    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我理解这一点。 这是我加入代码段的原因,它显示了我如何打开内部上拉。

    在论坛中有相当多的指导,即内部拉拔可用于I2C,但它们对于高速来说太弱。 同样,这也是我强调我会使用较低速度的原因。

    我想我发现的真正令人惊讶的是,在MSP430G2333上,它实际上似乎导致引脚锁定过高。 如果是一个微弱的上拉问题,你会想到会有一些丑陋的锯齿(同样,正如论坛上所报告的那样)。

    虽然我没有其他芯片来测试这个问题,但根据其他论坛的评论,这似乎是2333唯一的问题。 当然,对于芯片上包含的较旧/较简单的USI模块,如430G2131,这种模块在内部上运行良好(我正在将设计从2131升级到2333,现有的2131设计没有外部上拉)。

    我使用MSP430系列已超过15年。