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.

[参考译文] RTOS:CC2650 SPI 通信

Guru**** 2606725 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/578720/rtos-cc2650-spi-communication

Thread 中讨论的其他器件:CC2650

工具/软件:TI-RTOS

您好!

我有一个 CC2650板、我正在尝试与 SPI 中的 SparkFun ADXL362加速计传感器进行通信。 为了使用诸如 SPI_init、SPI_open 和 SPI_transfer 等相关函数、我需要包含这些函数 。 目前我的主要问题是,我基本上会在所有 SPI 函数上遇到编译错误,如下所示:"

#148声明与"void SPI_Params_init (SPI_Params *)"(在"C:/ti/tirtos_cc13xx_cc26xx_2_20_01_08/products/tidrivers_cc13xx_cc26xx_2_20_01_10/packages/ti/drivers/SPI.h "的第542行声明) pinInterrupt.c /pinInterrupt_CC2650_LAUNCHXL_TI_CC2650F128第32行 C/C++问题"不兼容

有人能帮我理解如何解决这个问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯。 您是否为您正在使用的 SPI API 提供自己的函数原型? 如果是、则无需使用、因为 API 都在 SPI.h 中声明 您能否共享 CCS 项目或仅共享 pinInterrupt.c 文件?

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

    您好、Alan、 感谢您的回复。

    不、我不会尝试提供新函数-只会尝试使用 SPI.h 中包含的函数

    我只是刚开始,所以我现在的东西有点原始,但只是想开始。 以下是我的代码:

    e2e.ti.com/.../2133.pinInterrupt.c

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

    此代码:

    SPI_Handle   句柄;

    SPI_Params   参数;

    SPI_Transaction spiTransaction;

    SPI_PARAMS_INIT (params);

    Handle = SPI_open (someSPI_configIndexValue、params);

    如果(!handle){

      System_printf ("SPI 未打开");

    SPI_Transaction spiTransaction;

    spiTransaction.count = IntegerValue;

    spiTransaction.txBuf = transmitBufferPointer;

    receivTransaction.rxBuf = spiBufferPointer;

    RET = SPI_transfer (handle、&spiTransaction);

    不在 C 函数内。 具体而言、粗体下划线的代码必须位于 C 函数内。

    Alan

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

    谢谢 Alan、我把这个代码打包到了从 Task_construction 调用的 C 函数中、但它不起作用。 调试时、似乎没有发生任何事情。

    此外、我不确定我是否完全理解 txbuffer 在这里的作用。 是否应包含我的请求信息? 如所示-第一个字节是命令、第二个字节是寄存器地址? 因为我显然想从传感器读取数据、而不是在其中写入任何内容。

    我应该也设置传感器的从器件配置还是将电路板设置为主器件就足够了?

    添加了我的更新代码:e2e.ti.com/.../4721.pinInterrupt.c

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我完全不熟悉与 ADXL362加速计通信的要求、但在许多情况下、会向 SPI 器件发送特定于器件的命令序列。 命令序列数组由 transaction.txBuf 指向,并且 transaction.count 设置为命令序列中的字节数。 transaction.rxBuf 设置为空,然后调用 SPI_transfer()。 之后、为了从 SPI 器件获取命令的响应、设置了另一个事务、将.txBuf 设置为空、将.count 设置为响应中预期的字节数、并将.rxBuf 设置为指向要写入的响应的缓冲区、 然后调用 SPI_TRANSF()。 响应是.rxBuf 指向的缓冲区中的结果。

    您必须研究 ADXL362器件的规格、以查看我描述的序列是否适合您。 我还建议您研究由 SparkFun 提供的 Arduino 库的源代码:

    github.com/.../ADXL362

    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有一个建议的答案、由于此主题在一周内未激活、建议的答案被标记为验证。 请随意选择"拒绝回答"按钮、并回复更多详细信息。