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.

[参考译文] CC2640R2F:协处理器 SPI 通信

Guru**** 2609955 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1215062/cc2640r2f-coprocessor-spi-communication

器件型号:CC2640R2F

嗨、团队:

我正在使用 Sensor Controller Studio 协处理器进行低功耗设计。

我想使用 SPI 通信将相应的配置写入传感器指定的寄存器地址、

例如将0x03配置信息写入地址0x01的寄存器、将0x05配置信息写入地址0x02的寄存器。

我想知道这是如何实现的(可以通过 spiTx8bit (# cfg、txValue)实现吗?

此外、我在您的文档中注意到、SPI 数据传输功能仅指定要传输的传输方法和数据。

如果我 多次使用该 API、它默认为从地址0x01的寄存器写入配置信息吗?

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

    尊敬的 Alex:

    您应该使用 Sensor Controller Studio CC13x0 CC26x0帮助文档的"SPI 数据传输"部分中提供的示例。  

    // MACRO: Writes an 8-bit value to an accelerometer register with 8-bit address
    macro spiWriteAccelReg(addr, value) {
        spiBegin(SPI_POL0_PHA0, AUXIO_SPI_CSN_ACCEL);
        spiTx8bit(SPI_POL0_PHA0, ACCEL_SPI_WRITE);
        spiTx8bit(SPI_POL0_PHA0, addr);
        spiTx8bit(SPI_POL0_PHA0, value);
        spiEnd(SPI_POL0_PHA0, AUXIO_SPI_CSN_ACCEL);
    }
    
    // Perform soft reset of the accelerometer, and wait for 50 ms
    spiWriteAccelReg(ACCEL_REG_SOFT_RESET, ACCEL_SR_KEY);
    fwDelayUs(50000, FW_DELAY_RANGE_50_MS);
    
    // Perform one-time configuration of the accelerometer
    spiWriteAccelReg(ACCEL_REG_INTMAP1, ACCEL_IM_DATA_READY);
    spiWriteAccelReg(ACCEL_REG_POWER_CTL, ACCEL_PC_LOW_NOISE_0 | ACCEL_PC_MEASURE_ON);

    因此、您可以将 spiBegin 与 被查询器件的正确芯片选择引脚(示例中为 AUXIO_SPI_CSN_ACCEL)一同使用、后跟三个连续的 spiTx8bit 写入命令(示例中为 ACCEL_SPI_WRITE、或0x00)、寄存器地址(用于您的用例的 addr、0x01或0x02)、 和值(寄存器应写入的内容)。  任何后续 spiTx8bit 命令都会将值写入下一个寄存器地址、以此类推。  然后、您应该在针对第二个器件重复此过程或者选择一个新命令前调用 spiEnd。   可以使用类似的设置来读取寄存器地址。

    此致、
    Ryan