主题中讨论的其他器件: OPT4001EVM
我一直在尝试将 MSP430FR4133 Launchpad 与 OPT4001EVM 板相连。 我正在尝试让它们通过 I2C 进行相互通信。 但是、我在理解如何通过 I2C 写入数据时遇到了一些问题。 我当前有以下用于设置 I2C 的代码、我在 Resource Explorer 中找到这些代码。
WDTCTL = WDTPW | WDTHOLD;
//配置 GPIO
P1OUT &=~BIT0;//清除 P1.0输出锁存器
P1DIR |= BIT0;//表示 LED
P5SEL0 |= BIT2 | BIT3;// I2C 引脚
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
//将 USCI_B0配置为 I2C 模式
UCB0CTLW0 |= UCSWRST;//启用软件复位
UCB0CTLW0 |= UCMODE_3 | UCMST | UCSYNC;// I2C 模式、主控模式、同步
UCB0CTLW1 |= UCASTP_2;//生成自动停止
//到达 UCB0TBCNT 后
UCB0BRW = 0x0008;//波特率= SMCLK / 8
UCB0TBCNT = 3;//要接收的字节数
UCB0I2CSA = 0b1000101;//从器件地址
UCB0CTL1 &=~UCSWRST;
UCB0IE |= UCRXIE | UCNACKIE | UCBCNTIE;
根据我收集的内容、设置后、您可以使用下面的代码执行写入操作、以访问存储在上面的从器件地址处的器件。
UCB0CTL1 |= UCTR;//Put 进入 TX 模式
UCB0CTL1 |= UCTXSTT;//start
while (UCB0CTL1 & UCTXSTP);//确保发送了 STOP 条件
UCB0CTL1 |= UCTXSTT;// I2C 启动条件
连接逻辑分析仪时、我可以看到我通过 I2C 发送该地址、该地址由器件确认。
我不确定下一部分、我要在上面存储的从器件地址处写入器件。 我已经看到您需要加载 Tx 缓冲器(UCB0TXBUF)、然后使用上面的指令发送一个写入。 我已经尝试在主循环内部以及中断矢量 USCI_I2C_UCTXIFG0中加载 Tx 缓冲器、但无论我加载到缓冲器中的内容如何、我都只能通过数据线路发送0xFF。
我是否加载了错误的缓冲区、或者我不知道通过 I2C 写入数据的方式有没有不同?