主题中讨论的其他器件: CC2640、 TMP116
工具/软件:Code Composer Studio
您好!
我一直在尝试将 AS7262光谱仪模块与 CC2640R2F Launchpad 连接。 它具有 I2C 接口。 我使用 i2ctmp116驱动程序示例连接光谱仪。
我成功地将其连接到 CC2640、但从传感器接收到的数据为0。 我想我在寄存器初始化方面做了一些错误。 下面是适用于 as7262和 ME 使用的代码的数据表。
https://cdn.sparkfun.com/assets/f/b/c/c/f/AS7262.pdf
display_init();
GPIO_init();
I2C_init();
/*打开主机显示屏以输出*/
Display = Display_open (Display_Type_UART、NULL);
if (display =NULL){
while (1);
}
/*打开用户 LED */
display_printf (display、0、0、"启动 i2ctmp116示例\n");
/*创建 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"\});
}
/*指向芯片温度寄存器并读取它的2个字节*/
TxBuffer[0]= TMP116_DIE_TEMP;
i2cTransaction.slaveAddress = 0x49;
i2cTransaction.writeBuf = txBuffer;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = rxBuffer;
i2cTransaction.ReadCount = 1;
if (I2C_transfer (i2c、&i2cTransaction))
{
while (1)
{
//读取从机 I²C 状态以查看写入缓冲区是否就绪。
如果((rxBuffer[0]& I2C_AS72XX_SLAVE_TX_VALID)=0)
//从机无入站 TX 挂起。 现在可以写入。
中断;
}
}
I2C_Close (i2c);
I2C_Params_init (&i2cParams1);
i2cParams1.bitrate = I2C_400kHz;
i2c1 = I2C_open (Board_I2C_TMP、&i2cParams1);
TxBuffer1[0]= 0x81;
TxBuffer1[1]= 0x01;
i2cTransaction1.slaveAddress = 0x49;
i2cTransaction1.writeBuf = txBuffer1;
i2cTransaction1.writeCount = 2;
i2cTransaction1.readBuf = rxBuffer1;
i2cTransaction1.ReadCount = 20;
i2C_transfer (i2c1、&i2cTransaction1);
I2C_Close (i2c1);
I2C_Params_init (&i2cParams2);
i2cParams2.bitrate = I2C_400kHz;
i2c2 = I2C_open (Board_I2C_TMP、&i2cParams2);
TxBuffer2[0]= 0x02;
TxBuffer2[1]= 0x28;
//txBuffer2[2]= 0x0;
i2cTransaction2.slaveAddress = 0x49;
i2cTransaction2.writeBuf = txBuffer2;
i2cTransaction2.writeCount = 2;
i2cTransaction2.readBuf = rxBuffer2;
i2cTransaction2.ReadCount = 20;
/*采集20个样本并将其打印到控制台*/
对于(sample = 0;sample < 20;sample++){
if (I2C_transfer (i2c2、&i2cTransaction2)){
Display_printf (display、0、0、"Sample %u:%d "、
sample、rxBuffer2[sample]);
}
否则{
Display_printf (display、0、0、"I2C 总线故障");
}
/*睡眠1秒*/
睡眠(1);
}
I2C_Close (i2c2);
display_printf (display、0、0、"I2C closed!");
结果:
I2C 已初始化!
采样0:0
采样1:0
采样2:0
示例3:0
样本4:0
样本5:0
样本6:0
样本7:0
采样8:0
样本9:0
采样10:0
样本11:0
采样12:0
采样13:0
样品14:114
样本15:64
采样16:0
样本17:0
样本18:0
样本19:0
I2C 已关闭!