Thread 中讨论的其他器件:CC2650
您好!
我正在尝试将 LIS3DH 加速计连接到 TI CC2640R2 Launchpad。 起初、我使用在 CC2640R2 Launchpad 上运行的 Sensortag 程序与 I2C LIS3DH 加速计进行通信、但我无法读取 I2C 寄存器值。 因此、我在空 TI-RTOS CCS 项目中尝试相同的操作、但也会发生相同的操作。 我将 SCL 线路连接到 TIO4、将 SDA 线路连接到 TI CC2640R2 Launchpad 的 DIO5。 下面是我的代码。 什么可能导致它在 I2C_TRANSF()挂起?
/*
=== empty.c ======
//
//* for usleep()*/
#include
#include
#include
#include
/*驱动程序头文件*/
#include
#include
//#include
//#include
//#include
/*板头文件*/
#include "Board.h"
//寄存器定义
#define LIS3DH_WHO _AM_I_register 0x0F //器件标识寄存
器#define LIS3DH_ADDRESS 0x32 //LIS3DH 地址
#define LIS3DH_WHO _AM_I_VALUE 0x33
/*
=== mainThread ====
//
void * mainThread (void * arg0)
{
/* 1秒延迟*/
uint8_t txBuffer[4];
uint8_t rxBuffer[4];
I2C_Handle I2C;
I2C_Params i2cParams;
I2C_Transaction i2cTransaction;
/*调用驱动程序初始化函数*/
I2C_init();
// spi_init();
// uart_init();
// Watchdog_init();
/*创建 I2C 以供使用*/
I2C_Params_init (&i2cParams);
i2cParams.bitrate = I2C_400kHz;
I2C = I2C_open (Board_I2C0、&i2cParams);
if (i2c == NULL){
System_abort ("初始化 I2C\n 时出错");
}
否则{
system_printf ("I2C 已初始化!\n");
}
//读取 LIS3DH,谁是 I 寄存器值。 读取的值应为0x33
txBuffer[0]= LIS3DH_WHO _AM_I_register;//0x0F
i2cTransaction.slaveAddress = LIS3DH_ADDRESS;//0x32
i2cTransaction.writeBuf = txBuffer;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = rxBuffer;
i2cTransaction.ReadCount = 2;
if (I2C_transfer (i2c、&i2cTransaction)){
System_printf ("谁是我的值%x%x\n"、rxBuffer[0]、rxBuffer[1]);
} 否则{
System_printf ("谁是我的值读取失败!\n");
}
/*已取消初始化 I2C */
I2C_Close (i2c);
System_printf ("I2C 已关闭!\n"\});
system_flush();
}
-kel