您好:
我使用 的是带LP_CC2652RB的simplelink_cc13x2_26x2_SDK_4_30_00_54。
我想实现一个I2C从属项目,但是SDK中没有例子。 所以我试着用dreverlib来做。
下面是我的代码部分,我在empty's mainThread()中调用init_i2c()。
#include <i2c.h>
#include <ti/drivers/Power.h>
#include <ti/drivers/power/PowerCC26XX.h>
#include <ti/drivers/PIN.h>
#include <ti/drivers/pin/PINCC26XX.h>
#define I2C0_SCL0 IOID_4
#define I2C0_SDA0 IOID_5
void init_i2c(void)
{
//PRCMPowerDomainOn(PRCM_DOMAIN_PERIPH);
Power_setDependency(PowerCC26XX_PERIPH_I2C0);
//PRCMLoadSet();
//PRCMPeripheralRunEnable(PRCM_PERIPH_I2C0); // Enable I2C module
//PRCMPeripheralRunEnable(PRCM_PERIPH_GPIO);
//PRCMLoadSet();
I2CSlaveInit(I2C0_BASE, 0x53);
I2CIntRegister(I2C0_BASE, i2c_callback);
I2CSlaveIntEnable(I2C0_BASE, I2C_SLAVE_INT_START | I2C_SLAVE_INT_STOP | I2C_SLAVE_INT_DATA);
}
void i2c_callback(void)
{
uint32_t val;
uint32_t status = I2CSlaveIntStatus(I2C0_BASE, true);
I2CSlaveIntClear(I2C0_BASE, status);
if(status & I2C_SLAVE_INT_DATA)
{
status = I2CSlaveStatus(I2C0_BASE);
if(status & I2C_SLAVE_ACT_RREQ)
{
val = I2CSlaveDataGet(I2C0_BASE);
GPIO_toggle(CONFIG_GPIO_LED_0);
}
}
}
但是,当我运行i2copt3001示例测试I2C从属项目时,red_led剂量不闪烁(隐式I2C获取一些数据),但green_led工作正常(隐式mainThread()工作正常)。
因此,我在此寻求您的帮助:
1.如何通过CC2652RB实现I2C从属设备,是否可以参考一些文档?
2.在我上面的代码中,有一些注释行,如PRCMxxx(),我找不到它们的定义,它们在哪里?
3.实际上从我的代码来看,我不是将GPIO连接到I2C,因为我不知道如何操作。 能否向我展示如何映射SCL和SDA函数的特定GPIO?
非常感谢您的帮助!
