This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/CC2640R2F:将 AS7262光谱仪与 CC2640 Launchpad 相连

Guru**** 2541900 points
Other Parts Discussed in Thread: CC2640R2F, CC2640, TMP116

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/809449/ccs-cc2640r2f-interfacing-as7262-spectrometer-with-cc2640-launchpad

器件型号:CC2640R2F
主题中讨论的其他器件: CC2640TMP116

工具/软件: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 已关闭!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Abhishek、

    我建议您阅读 I2C 驱动程序库 I2C.h。 首先是概述部分、其中介绍了如何正确配置驱动程序以使用 i2c API。

    BR、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Abhishek、  

    请查看此文档 :http://www.ti.com/lit/an/slva704/slva704.pdf

    以下关键概念之一:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Abhishekl、

    您对此有任何更新吗? 您是否能够使其正常工作?

    BR、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Seong、

    我已经尝试阅读 I2C 总线的文档并进行相应的更改、但还无法获得任何积极的更新。

    我想问题是写入与 as7262关联的寄存器。

    请帮我解决。


    此致、

    Abhishek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Abhishek、

    到目前为止、您进行了哪些更改?

    BR、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Abhishek、

    我一段时间没有听到您的声音、所以我将关闭这个话题。

    如果您可以提供自初始帖子以来代码中所更改内容的更多信息、请随时重新打开此帖子。 或为任何其他查询启动新线程。

    谢谢、