Part Number:CC2640R2F
尊敬的TI工程师,您好,
我在使用Sensor Controller Studio协处理器进行低功耗设计。
我想向使用SPI通信的传感器指定的寄存器地址,写入相应的配置,如:向0x01地址的寄存器写入0x03配置信息,向0x02地址的寄存器写入0x05配置信息,我想知道这是如何实现的(可以通过spiTx8bit(#cfg, txValue) 实现吗)?
另外,我看您文档中SPI的数据传输功能中,只指定了传输的方式和传输的数据,我如果使用次API的话是默认从0x01地址的寄存器开始写入配置信息吗?
期待您的回答!
Alex Zhang:
jiang chuanli 说:我如果使用次API的话是
您的意思是使用多次api 吗?
,
jiang chuanli:
你好,是的。我的目的是通过协处理器完成传感器的初始化,初始化完成后不断采集传感器发送过来的数据,
这样就需要通过SPI对传感器的不同寄存器进行配置完成初始化,我看协处理器通过SPI发送数据时只用piTx8bit(#cfg, txValue) 这一个函数,我要想想不同寄存器写时,要指定寄存器的地址,我想问一下这个怎么实现?
,
Alex Zhang:
好的 我会继续跟进您这边的问题,耐心等待一下 谢谢
,
Alex Zhang:
您好
您应该使用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。类似的设置将用于读取寄存器地址。