微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640R2F I2C问题

CC2640R2F I2C问题

时间:10-02 整理:3721RD 点击:

使用I2C Callback模式,连续写两包数据,第二包发不出去。

下面是读,写,初始化函数。

static uint8_t I2C_read(void)
{
static I2C_Transaction transactionR;

memset(i2cSet.readBuf, 0, sizeof(i2cSet.readBuf));

transactionR.writeCount = 0;
transactionR.writeBuf = NULL;
transactionR.readCount = sizeof(i2cSet.readBuf);
transactionR.readBuf = i2cSet.readBuf;
transactionR.slaveAddress = HAL_I2C_SLAVE_ADDR_DEF;

I2C_transfer(i2cHandle, &transactionR);

return SUCCESS;
}

static uint8_t I2C_write(uint8_t *pData, uint8_t len)
{
static I2C_Transaction transactionW;

i2cSet.readWriteFlag = WRITE_OPERATE;

transactionW.writeCount = len;
transactionW.writeBuf = i2cSet.writeBuf;
transactionW.readCount = 0;
transactionW.readBuf = NULL;
transactionW.slaveAddress = HAL_I2C_SLAVE_ADDR_DEF;

uint8_t result = I2C_transfer(i2cHandle, &transactionW);

return SUCCESS;
}

uint8_t I2C_initialize(void)
{
I2C_Params params;

I2C_init();

I2C_Params_init(&params);
params.transferMode = I2C_MODE_CALLBACK;
params.transferCallbackFxn = I2C_callbackFxn;
params.bitRate = I2C_100kHz;
i2cHandle = I2C_open(CC2640R2_LOCK_I2C0, &params);
if (!i2cHandle) {
return FAILURE;
}

i2cSet.readWriteFlag = READ_OPERATE;
keySet.count = 0;
keyFuncSet.step = 0;

return SUCCESS;
}

CC2640R2F的I2C driver跟CC26XX其他芯片是一致的,可以参考这两个芯片的I2C实现例程。

另外,在Resource Explorer里也有CC2640R2F的相关例程,具体如下:

For the i2ctmp007 project: SDK->Examples->Development Tools->CC2640R2 LaunchPad -> TI Drivers->i2ctmp007

For SLA: SDK -> SimpleLink Academy -> Bluetooth LE -> Bluetooth Low Energy + Sensors BoosterPack

非常感谢,我现在想把CC2640R2F作为从设备,请问可以吗?

我在I2CSlave.c找不到I2CSlave_Config的定义呢。

确实是还没有I2C slave的driver。但是I2C 模块CC2640跟CC2640R2F是一样的,你可以参考CC2640的slave 例程

你好,我也是用例程发两包数据,但是第二包发不出去,你的问题是怎么解决的?谢谢!

哪一个例程? 两包数据是怎么发的?

你好,我用的是i2ctmp007例程,这个例程txbuffer只发了一个数据,我要在txbuffer发4个数据,数据长度也改了,但是在实际情况是还是只有一个数据发送出去了

可以用示波器看一下,如果第一次写,从设备没有ACK回应,那不会再继续写了。所以建议检查你所接的从设备是否有ACK回应

你好,我看例程是7bit从设备地址的设置,如果是8bit,应该在哪里设置?

I2C 的短地址  只支持 7位。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top