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, ®Addr, 1, false);
if(errCode != NRF_SUCCESS)
{
return errCode;
}
- 发送寄存器地址:
nrf_drv_twi_tx
:这是 Nordic 的驱动函数,用于发送数据到 I2C 从设备。&s_twiHandle
:指向 TWI(I2C)的句柄,用于识别 I2C 实例。slaveAddr
:从设备的地址。®Addr
:寄存器地址的指针。1
:要发送的数据字节数(这里是寄存器地址的字节数)。false
:表示这是一个写操作,不需要重复开始。- 错误检查:如果
nrf_drv_twi_tx