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.

[参考译文] CCS/CC2650:I2C 主设备始终处于繁忙状态

Guru**** 2577385 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/591406/ccs-cc2650-i2c-master-is-always-busy

器件型号:CC2650

工具/软件:Code Composer Studio

我想通过 I2C 发送一个作为主器件的单字节数据、但它始终 停留在以下行:   i2c.h 中的 if (HWREG (I2C0_BASE + I2C_O_mstat)& I2C_mstat_busy)  

这是我的代码:  

void I2CdataTransfer()
{

PRCMPowerDomainOn (PRCM_DOMAIN_PERIPh);

POWER_setDependency (PowerCC26XX_Periph_I2C0);
//设置电源可靠性和限制
Power_setDependency (PowerCC26XX_Periph_GPIO);

/*设置待机、断电和空闲模式的限制*/
power_setConstraint (PowerCC26XX_SB_disallow);
power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);

PRCMLoadSet();
PRCMPeripheralRunEnable (PRCM_Periph_I2C0);//启用 I2C 模块
PRCMPeripheralRunEnable (PRCM_Periph_GPIO);
PRCMLoadSet();

PINCC26XX_setMux (i2cPinHandle、Board_I2C0_SDA0、IOC_PORT_MCU_I2C_MSSDA);
PINCC26XX_setMux (i2cPinHandle、Board_I2C0_SCL0、IOC_PORT_MCU_I2C_MSSCL);


I2CMasterInitExpClk (I2C0_BASE、SysCtrlClockGet ()、false);
I2CMasterEnable (I2C0_BASE);
I2CMasterSlaveAddrSet (I2C0_BASE、0x38、false);
I2CMasterDataPut (I2C0_BASE、0xAA);
I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND);
while (I2CMasterBusy (I2C0_BASE));
} 

谢谢!