我一直在努力使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示例代码...