I2C 读取6D lsm6dsv加速度,角速度和温度

1.

TX表示传送数据为输出
RX表示接收数据为输入

通信上的RX和TX代表的意思:
TXD 发送数据 Transmit(tx) Data 的简写形式
RXD 接收数据 Receive(rx) Data 的简写形式

2.platform_write 和I2C_WriteData 关系。platform_read和 I2C_ReadData关系:

static int32_t platform_write(void *handle, uint8_t reg, const uint8_t *bufp,
                              uint16_t len)
{
    I2C_WriteData(0x6a,reg,(uint8_t*)bufp,len);
  return 0;
}

static int32_t platform_read(void *handle, uint8_t reg, uint8_t *bufp,
                             uint16_t len)
{
    I2C_ReadData(0x6a,reg,(uint8_t*)bufp,len);
  return 0;
}

  • 功能: 该函数从I2C从设备(地址为0x6a)的寄存器reg读取len字节的数据,并将数据存放到bufp指向的缓冲区中。
  • 参数:
    • handle: 指向某种处理句柄的指针,但在此函数中未使用。
    • reg: 要读取的寄存器地址。
    • bufp: 数据将被读取到此缓冲区。
    • len: 读取的数据长度。
  • 调用I2C_ReadData: 实际的I2C数据读取操作是通过调用I2C_ReadData函数完成的。
  • 3.I2C_ReadData函数详细解释如下:

/**
 @brief TWI(I2C)读数据函数
 @param slaveAddr -[in] 从设备地址
 @param regAddr -[in] 寄存器地址
 @param pData -[in] 读出数据
 @param dataLen -[in] 读出数据长度
 @return 错误码
*/

uint16_t I2C_ReadData(uint8_t slaveAddr, uint8_t regAddr, uint8_t *pData, uint16_t dataLen)
{
    uint32_t errCode;       //变量声明errCode:用于存储操作的返回码。

    uint32_t timeout = TWI_TIMEOUT; // timeout:用于定义操作超时的计时器,TWI_TIMEOUT 是预定义的超时时间。

    errCode = nrf_drv_twi_tx(&s_twiHandle, slaveAddr, &regAddr, 1, false);
    if(errCode != NRF_SUCCESS)
    {
        return errCode;
    }

  • 发送寄存器地址
    • nrf_drv_twi_tx:这是 Nordic 的驱动函数,用于发送数据到 I2C 从设备。
    • &s_twiHandle:指向 TWI(I2C)的句柄,用于识别 I2C 实例。
    • slaveAddr:从设备的地址。
    • &regAddr:寄存器地址的指针。
    • 1:要发送的数据字节数(这里是寄存器地址的字节数)。
    • false:表示这是一个写操作,不需要重复开始。
    • 错误检查:如果 nrf_drv_twi_tx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值