请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR2311 工具/软件:Code Composer Studio
您好!
我尝试使用 DriverLib 来使用 I2C 模块。 我的代码与 masterTxSingle 示例非常相似、但在第一次转换后、应用程序停止。 我可以看到应用程序在第40行崩溃
特别是在"eusci_b_i2c"库中的"while (!(HWREG16 (baseAddress + OFS_UCBxIFG)& UCTXIFG)"循环中、MCU 发送以下0b10101100 (使用示波器读取)、之后 SCL 保持低电平。 我在发送前禁用了中断并清除了标志、但这会继续发生。 您能否查看我的代码、或者硬件中可能缺少什么内容? 我已经在 SCL 和 SDA 中连接了10千欧的上拉电阻器。
#include #define SLAVE_ADD 0xD6 #define CS_SMCLK_NEW_FREQUENCY IN_kHz 1000 #define CS_SMCLK_FLLREF_RA比30 uint32_t freq; uint8_t Add_review; int main (void){ //停止看门狗计时器 WDT_A_HOLD (WDT_A_base); //设置比率和所需的 MCLK 频率并初始化 DCO CS_initFLSettle (CS_SMCLK_frequised_in_kHz、CS_SMCLK_FLLREF_Ratio); CS_initClockSignal (CS_MCLK、CS_DCOCLKDIV_SELECT、CS_CLOCK_DIVIDER_1); CS_initClockSignal (CS_SMCLK、CS_DCOCLKDIV_SELECT、CS_CLOCK_DIVIDER_1); FREQ=CS_getSMCLK(); add_review = slave_Add|0x01; GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、GPIO_PIN2+GPIO_PIN3、GPIO_PRIMARY_MODULE_Function); GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0); PMM_unlockLPM5 (); EUSCI_B_I2C_initMasterParam i2cConfig ={0}; i2cConfig.selectClockSource = EUSCI_B_I2C_CLOCKSOURCE_SMCLK; i2cConfig.i2cClk = CS_getSMCLK (); i2cConfig.datarate = EUSCI_B_I2C_SET_DATA_RATE 100KBPS; i2cConfig.byteCounterThreshold = 1; i2cConfig.autoSTOPGeneration = EUSCI_B_I2C_NO_AUTO_STOP; EUSCI_B_I2C_initMaster (EUSCI_B0_BASE、&i2cConfig); EUSCI_B_I2C_setSlaveAddress (EUSCI_B0_BASE、SLAVE_ADD); EUSCI_B_I2C_setMode (EUSCI_B0_BASE、EUSCI_B_I2C_Transmit 模式); EUSCI_B_I2C_ENABLE (EUSCI_B0_BASE); 执行{ ///EUSCI_B_I2C_masterSendStart (EUSCI_B0_BASE); GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0); EUSCI_B_I2C_masterSendSingleByte (EUSCI_B0_BASE、0x2F); //Lectura del DeviceID ///EUSCI_B_I2C_masterSendStart (EUSCI_B0_BASE); while (EUSCI_B_I2C_isBusy (EUSCI_B0_BASE)); _DELAY_CYCLES (50); //EUSCI_B_I2C_DISABLE (EUSCI_B0_BASE); } while (1); }