主题中讨论的其他器件:HDC2010
我正在使用驱动程序库的 I2C 主 Tx 单个示例在我们的 I2C 总线上进行传输。 我已修改示例以删除时钟初始化(因为已经在 CAPT_BSP 中确认它们正确)、并将 GPIO_setPeripheralModuleFunctionInputPin ()切换到2633的正确端口。 在 将调用发送到 EUSCI_B_I2C_isBusBusy 之前,我还添加了对 EUSCI_B_I2C_SendmasterSingleByte ()的调用。
看一下总线、我会看到传输开始时的时钟。 但是、SDA 保持低电平、因此我们不会获得启动条件、也不会看到任何数据。
我已经确认我们的上拉电阻(3.3k)被放置、并将他连接到其中一个从器件。
代码:
WDT_A_HOLD (WDT_A_base); //////设置比率和所需的 MCLK 频率并初始化 DCO // CS_initFLSettle ( // CS_SMCLK_REVed_frequency in_kHz、 // CS_SMCLK_FLLREF_Ratio // ); // //////设置 SMCLK = DCO,分频器为1 // CS_initClockSignal ( //CS_SMCLK、 //CS_DCOCLKDIV_SELECT、 //CS_Clock_divider _1 //); // //////设置 MCLK = DCO,分频器为1 // CS_initClockSignal ( //CS_MCLK、 //CS_DCOCLKDIV_SELECT、 //CS_Clock_divider _1 //); // //为 I2C 配置引脚 /* *选择端口5 *将引脚2、3设置为具有功能的输入、(UCB0SIMO/UCB0SDA、UCB0SOMI/UCB.S)。 * GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_P1、 GPIO_PIN2 + GPIO_PIN3、 GPIO_PRIMARY_MODULE_FUNCTION ); /* *禁用 GPIO 上电默认高阻抗模式以激活 *先前配置的端口设置 * PMM_unlockLPM5 (); //初始化传输数据包 transmitData = 0x01; //初始化主设备 EUSCI_B_I2C_initMasterParam param ={0}; param.selectClockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK; param.i2cClk = CS_getSMCLK (); param.datarate = EUSCI_B_I2C_SET_DATA_RATE_400KBPS; param.byteCounterThreshold = 1; param.autoSTOPGeneration = EUSCI_B_I2C_NO_AUTO_STOP; EUSCI_B_I2C_initMaster (EUSCI_B0_BASE、param); //指定从器件地址 EUSCI_B_I2C_setSlaveAddress (EUSCI_B0_BASE、 HW_ENV_SLAVE_ADDR ); //设置为发送模式 EUSCI_B_I2C_setMode (EUSCI_B0_BASE、 EUSCI_B_I2C_Transmit 模式 ); //启用 I2C 模块以启动操作 EUSCI_B_I2C_ENABLE (EUSCI_B0_BASE); while (1) { while (EUSCI_B_I2C_isBusBusy (EUSCI_B0_BASE)); //发送单字节数据。 EUSCI_B_I2C_masterSendSingleByte (EUSCI_B0_BASE、 传输数据 ); //延迟直到传输完成 while (EUSCI_B_I2C_isBusBusy (EUSCI_B0_BASE)); //每次传输之间的延迟 _DELAY_CYCLES (50); //递增发送数据计数器 transmitData++; }