主题中讨论的其他器件:OPT3001、 BOOSTXL-SENSORS、 Strike
工具/软件:Code Composer Studio
您好!
我有一个传感器 BoosterPack、我想使用 TMP007测量温度。 我运行了一个示例、但它不起作用:
我也运行了此版本、但它仍然不起作用:
问题是电路板未找到 TMP007:
我会得到一些帮助、我将粘贴下面的代码、这样您就可以看到我在程序中所做的更改、我正在使用 Tirtos:
#include #include #include /*驱动程序头文件*/ #include #include #include /*示例/板头文件*/ #include "Board.h" #define TASKSTACKSIZE 640 /* ===== tmp 寄存器====== */ #define TMP007_DIE_TEMP 0x0001 /*芯片温度结果寄存器*/ #define TMP007_obj_TEMP 0x0003 //对象温度结果寄存器*/ #define TMP007_ADDR 0x40; #ifndef Board_TMP_ADDR #define Board_TMP_ADDR TMP007_ADDR #endif static Display_Handle 显示; /* === mainThread ==== // void * mainThread (void * arg0) { uint16_t 样本; uint16_t 温度; uint8_t txBuffer[1]; uint8_t rxBuffer[2]; I2C_Handle I2C; I2C_Params i2cParams; I2C_Transaction i2cTransaction; /*调用驱动程序初始化函数*/ display_init(); GPIO_init(); I2C_init(); /*配置 LED 以及 TMP116_EN 引脚(如果适用)*/ GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW); /*打开主机显示屏以输出*/ Display = Display_open (Display_Type_UART、NULL); if (display =NULL){ while (1); } /*打开用户 LED */ GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON); display_printf (display、0、0、"启动 i2ctmp 示例。"); /*创建 I2C 以供使用*/ I2C_Params_init (&i2cParams); i2cParams.bitrate = I2C_400kHz; I2C = I2C_open (Board_I2C_TMP、&i2cParams); if (i2c == NULL){ Display_printf (display、0、0、"Error Initializing I2C\n"); while (1); } 否则{ display_printf (display、0、0、"I2C initialized!\n"\}); } /*通用 I2C 事务设置*/ i2cTransaction.writeBuf = txBuffer; i2cTransaction.writeCount = 1; i2cTransaction.readBuf = rxBuffer; i2cTransaction.ReadCount = 2; TxBuffer[0]= 0x0003; i2cTransaction.slaveAddress = TMP007_ADDR; if (!I2C_transfer (i2c、&i2cTransaction)){ Display_printf (display、0、0、"错误。 未找到 TMP 传感器!"); while (1); } /*采集20个样本并将其打印到控制台*/ 对于(sample = 0;sample < 20;sample++){ if (I2C_transfer (i2c、&i2cTransaction)){ 温度=(rxBuffer[0]<< 8)|(rxBuffer[1]); 温度*= 0.0078125; if (rxBuffer[0]& 0x80){ 温度|= 0xF000; } Display_printf (display、0、0、"Sample %u:%d (C)"、 采样,温度); } 否则{ display_printf (display、0、0、"I2C 总线故障"); } 睡眠(1); } I2C_Close (i2c); display_printf (display、0、0、"I2C closed!"); 返回(空);
