请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401M 您好!
我正在尝试初始化 MSP432、以便通过 I2C 与另一个芯片进行通信、但我似乎遇到了一些问题。 该器件连接在 P1.6和 P1.7上、我粘贴了用于初始化 I2C 连接的代码、然后查询器件的 ID。 初始化中的第3点可能缺少某些内容、或者传输过程可能错误。 有人对此有任何经验?
#define MAIN_I2C EUSCI_B0 #include "MSP.h" /* 用于初始化 i2c 的函数*/ void init_B_i2c () { /* * 建议的 eUSCI_B 初始化和重新配置过程为: 1.置位 UCSWRST。 UCSWRST=1时初始化所有 eUSCI_B 寄存器(包括 UCxCTL1)。 3.配置端口。 4.在软件中清除 UCSWRST。 5.启用中断(可选) * * /*1. 设置 UCSWRST */ MAIN_I2C->CTLW0 = UCSWRST; /*2. UCSWRST = 1时初始化所有 eUSCI_B 寄存器(包括 UCxCTL1)。 * MAIN_I2C->CTLW0 = UCMODE_3 + UCMST + UCSYNC + UCSSEL_2 + UCSWRST;//I2C 模式、主器件、SYNC 和 SMCLK /*3. 配置端口*/ P1SEL0 |=(1 << 6)|(1 << 7);//引脚 P1.6、P1.7 P1SEL1 &=~((1 << 6)|(1 << 7)); /*4. 清除 USCWRST */ MAIN_I2C->CTLW0 &=~UCSWRST; /*5. 在 RX*/上启用中断 MAIN_I2C->IE |= UCRXIE; } void q_ID_i2c () { MAIN_I2C->I2CSA = 0b0001011;//地址 MAIN_I2C->CTLW0 = UCTR;//发送器模式 MAIN_I2C->CTLW0 = UCTXSTT;//Start 信号 MAIN_I2C->TXBUF = 0x11;//查询 ID MAIN_I2C->CTLW0 = UCTXSTP;//Stop 信号 }