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返回NRF_SUCCESS,说明发送成功,否则返回错误码。
while((!s_twiTxDone) && --timeout);
if(!timeout)
{
return NRF_ERROR_TIMEOUT;
}
s_twiTxDone = false;
- 等待传输完成:
s_twiTxDone:一个全局标


最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



