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.
工具/软件:Code Composer Studio
我正在使用 MSP430G2 Launchpad。
目前我测试一个 i2c 示例代码。 但我没有得到输出、因此我检查了 I2C 引脚 P1.6和 P1.7的开漏。 我在 while 环路中编写一个用于 切换 P1.6引脚的代码。 我将10K 上拉电阻器连接到 P1.6 (SCL)和 P1.7 (SDA)。 但上升时间 和下降时间 几乎相同。
请举例说明 如何在 i2c 模式下配置开漏。
代码
#include
unsigned char Txbyte;
unsigned char Txbytechtr;
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
BCSCTL1 = CALBC1_1MHz; //将 DCO 设置为1MHz
DCOCTL = CALDCO_1MHz;
P1REN = BIT6+BIT7;
P1OUT |= BIT6+BIT7; //启用上拉电阻器
P1SEL |= BIT6+BIT7;
P1SEL2 |= BIT6+BIT7; //选择 P1.6和 P1.7作为 I2C 引脚
UCB0CTL1 |= UCSWRST;
UCB0CTL0 = UCMST + UCMODE_3+ UCSYNC; //通过同步启用主模式
UCB0CTL1 = UCSSEL_2 + UCSWRST; //smclk 选择
UCB0BR0 = 10; //波特率设置
UCB0BR1 = 0;
UCB0I2CSA = 0x41; // i2c 从器件地址
UCB0CTL1 &=~ UCSWRST;
//IE2 |= UCB0TXIE;//+ UCB0RXIE;
Txbyte = 0x55;
while (1)
{
/* Txbytechtr =1;
while (UCB0CTL1 & UCTXSTP); *
UCB0CTL1 |= UCTR + UCTXSTT;
UCB0TXBUF = Txbyte;
P1OUT ^= BIT6; //切换 P1.6
_DELAY_CYCLES (1000000);
}
/*
#pragma vector = USCIAB0TX_vector
_interrupt void USCIAB0TX_ISR (void)
{
if (Txbytechtr)
{
UCB0TXBUF = Txbyte;
Txbytectectectectectr ----;
}
其他
{
UCB0CTL1 |= UCTXSTP;
IFG2 &=~ UCB0TXBUF;
_bis_SR_register_ON_EXIT (CPUOFF);
}
}
*
您好、Chinnan、
以下 是 指向 TI Resource Explorer 的链接、其中提供了一个很好的示例: