请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640 主题中讨论的其他部件:TMP112、 HDC1080
工具/软件:Code Composer Studio
各位专家、您好!
我想使用 CC2640以低功耗方式获取 TMP112传感器读数。 通过使用 TIRTOS I2C 驱动程序、温度读取服务在应用程序中运行良好。 现在、我尝试在传感器控制器中使用温度传感器 TMP112。
我尝试通过更改配置和地址来修改 i2c 光传感器代码:
说明代码:
i2cStart (); i2cTx (I2C_OP_WRITE | ALS _I2C_ADDR);//ADDR= 0x0048 i2cTx (ALS _REG_CFG);//ALS _REG_CFG = 1 i2cTx (ALS _CFG_One_Shot >> 8);//ALS _CFG_1 ( 1毫秒后);i2trigger_0 (1)+ 1 i2t1 i20_timereTx0 (TimereTx_e0+ 1);Timere0_e0_e0_e0_eTx_e0_e0_eTx_e0_e0_eTx_eTx_e0_eTx_eTx_eTx_eTx_eTx_e
事件处理程序代码
//如果在上次执行期间成功开始测量... if (state.i2cStatus = 0x0000){ //选择结果寄存器 i2cStart(); i2cTx (I2C_OP_WRITE | ALS_I2C_ADDR); i2cTx (ALS_REG_RESULT); //如果成功... if (state.i2cStatus = 0x0000){ U16 resultRegH; U16 resultRegL; //读取结果 i2cRepeatedStart(); i2cTx (I2C_OP_Read | ALS I2C_ADDR); i2cRxAck (resultRegH); i2cRxNack (resultRegL); i2cStop(); //将结果(4位指数+ 12位尾数)转换为16位定点 U16 tmp =(resultRegH << 8)| resultRegL; U16值= tmp >> 4; output.value =值; } 否则{ i2cStop(); } }
但是、当我调试代码时、i2c_status 变为0x0001。
是否有人可以告诉我应该进行哪些修改才能使 i2c 正常工作?
谢谢、
建林