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.

[参考译文] MSP430F5326:I2C 主模式:发送地址时 R/W 至 R

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/901282/msp430f5326-i2c-master-mode-r-w-to-r-when-transmitting-address

器件型号:MSP430F5326

您好!

MSP430F5326作为主器件、在发送地址时需要将 R/W 位置位以进行读取、如下所示:

但我只成功地将 r/w 位设置为0。

代码如下:

UCB0CTL1 |= UCSWRST; /*软件复位已启用*/
UCB0CTL0 |= UCMST | UCMODE_3 | UCSYNC; /*从设备和主设备地址:7位,单主设备配置,主设备模式,启用 I2C,同步模式*/
UCB0CTL1 = UCSSEL_2 | UCSWRST; /*源锁定:SMCLK,USCI 逻辑在复位状态期间保持*/
UCB0BR0 = 80;// SPICLK = SMCLK/80:100kHz (最大400kHz)
UCB0BR1=0x000;
UCB0CTL1 &=~UCSWRST; /*清除软件复位*/

UCB0I2CSA = SLAVE_ADR; //加载从地址
UCB0CTLW0 |=(UCTR | UCTXSTT); // I2C Tx +启动条件
UCB0IFG &=~(UCNACKIFG);
while ((UCB0IFG & UCTXIFG)!= UCTXIFG)// attente buffer libre
{
if ((UCB0IFG & UCNACKIFG)== UCNACKIFG)
{
NACK =真;
debug_str ("nack\r\n");
中断;
}
}

我弄错了吗?

是否有任何特定配置?

此致

好的

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

    > UCB0CTLW0 |= (UCTR | UCTXSTT);                     // I2C Tx  + start condition

    设置 UCTR=1请求主发送器模式、对于该模式、R/W 位被设置为0。

    如果您设置 UCTR=0 ("UCB0CTLW0 &=~UCTR;")、请求主接收器模式、此时 R/W 位被设置为1。  在主接收器模式下、您将看不到 TXIFG。