cc2640 I2C實(shí)現(xiàn)
以keyfob為例:
一、board.c中添加如下定義(根據(jù)自己板子實(shí)際情況選擇io):
/* I2C Board */
#define Board_I2C_SCL IOID_13 /* RF1.7 */
#define Board_I2C_SDA IOID_12 /* RF1.9 */
二、board.c中添加如下定義:
/*
* ============================= I2C Begin=====================================
*/
/* Place into subsections to allow the TI linker to remove items properly */
#if defined(__TI_COMPILER_VERSION__)
#pragma DATA_SECTION(I2C_config, ".const:I2C_config")
#pragma DATA_SECTION(i2cCC26xxHWAttrs, ".const:i2cCC26xxHWAttrs")
#endif
/* Include drivers */
#include
/* I2C objects */
I2CCC26XX_Object i2cCC26xxObjects[CC2650_I2CCOUNT];
/* I2C configuration structure, describing which pins are to be used */
const I2CCC26XX_HWAttrs i2cCC26xxHWAttrs[CC2650_I2CCOUNT] = {
{
.baseAddr = I2C0_BASE,
.intNum = INT_I2C,
.powerMngrId = PERIPH_I2C0,
.sdaPin = Board_I2C_SDA,
.sclPin = Board_I2C_SCL,
}
};
const I2C_Config I2C_config[] = {
{&I2CCC26XX_fxnTable, &i2cCC26xxObjects[0], &i2cCC26xxHWAttrs[0]},
{NULL, NULL, NULL}
};
/*
* ========================== I2C end =========================================
*/
三、keyfobdemo.c中添加如下內(nèi)容:
1、
//add by gyb
#include
static I2C_Handle SbpI2cHandle;
static I2C_Params SbpI2cParams;
2、初始化函數(shù)中添加
//add by gyb i2c driver
I2C_Params_init(&SbpI2cParams);
SbpI2cHandle = I2C_open(CC2650_I2C0, &SbpI2cParams);
3、定義自己的讀寫函數(shù)(僅供參考):
void writeRegister(uint8 addr, uint8 buf)
{
I2C_Transaction i2cTransaction;
uint8 txBuf[] = {addr, buf, 2, 3};
uint8 rxBuf[5];
i2cTransaction.writeBuf = txBuf;
i2cTransaction.writeCount = 2;
i2cTransaction.readBuf = rxBuf;
i2cTransaction.readCount = 0;
i2cTransaction.slaveAddress = LSM6DS3_SLAVE_ADDR; //arbitrary for demo
I2C_transfer(SbpI2cHandle, &i2cTransaction);
}
void readRegister(uint8 *buf, uint8 addr)
{
I2C_Transaction i2cTransaction;
//uint8 txBuf[] = {addr, 0x00};
uint8 txBuf[] = {addr};
uint8 rxBuf[5];
i2cTransaction.writeBuf = txBuf;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = buf;
i2cTransaction.readCount = 1;
i2cTransaction.slaveAddress = LSM6DS3_SLAVE_ADDR; //slave addr
I2C_transfer(SbpI2cHandle, &i2cTransaction);
}
四、添加 i2c.c i2c.h文件到工程:
文件路徑:C:\ti\tirtos_simplelink_2_13_00_06\packages\ti\drivers
ok,完成上述步驟,i2c應(yīng)該可以工作了
- 上一篇:UNITY3D MonoDevelop不能粘貼外部代碼文字怎 2018/3/4
- 下一篇:串口通信的MPU姿態(tài)傳感器數(shù)據(jù)包解析技術(shù) 2018/1/19