使用示例
## 使用说明
```language
//该类型描述支持的 I2C 总线 id
typedefenum
{
HAL_I2C_BUS_ID_1,
HAL_I2C_BUS_ID_2,
HAL_I2C_BUS_ID_3,
HAL_I2C_BUS_ID_QTY,
HAL_I2C_BUS_ID_INVALID = 0xff,
} HAL_I2C_BUS_ID_T;
PRIVATE HAL_I2C_BUS_ID_T g_camdI2cBusId = HAL_I2C_BUS_ID_2;
UINT32 slaveAddr=0x26;
UINT32 memAddr=0x10;
UINT8 Data = 0x11;
UINT8 *pData = {0};
UINT8 *p_data = “This is a test!”;
//打开 I2C 模块并启用其 API。
If (!(HAL_ERR_NO == hal_I2cOpen(g_camdI2cBusId)))
{
AT_TC(10,"INFO: hal_I2cOpen failed");
return;
}
//使模块进入休眠状态
If(!hal_I2cSleep(g_camdI2cBusId))
{
AT_TC(10,"INFO: hal_I2cSleep failed");
return;
}
//唤醒休眠的模块
hal_I2cWakeup(g_camdI2cBusId);
AT_TC(10,"INFO: I2c has been wakened");
//单字节发送数据
If (!(HAL_ERR_NO ==hal_I2cSendByte(g_camdI2cBusId, slaveAddr, memAddr, Data)))
{
AT_TC(10,"INFO: hal_I2cSendByte failed");
return;
}
//单字节获取数据
If (!(HAL_ERR_NO ==hal_I2cGetByte(g_camdI2cBusId, slaveAddr, memAddr, pData)))
{
AT_TC(10,"INFO: hal_I2cGetByte failed");
return;
}
AT_TC(10,"INFO: hal_I2cGetByte Data=0x%x", *PData);
//多字节数据发送
If (!(HAL_ERR_NO ==hal_I2cSendData(g_camdI2cBusId, slaveAddr, memAddr, strlen(p_Data)))
{
AT_TC(10,"INFO: hal_I2cSendData failed");
return;
}
//获取多字节数据
If (!(HAL_ERR_NO ==hal_I2cGetData(g_camdI2cBusId, slaveAddr, memAddr, 15)))
{
AT_TC(10,"INFO: hal_I2cGetData failed");
return;
}
AT_TC(10,"INFO: hal_I2cGetData P_Data = %s", p_Data);
//关闭 I2c 模块
hal_I2cClose(g_camdI2cBusId);
输出 Trace 信息如下:
AT 10 : [AT]>>“INFO: I2c has been wakened”
AT 10 : [AT]>>“INFO: hal_I2cGetByte Data=0x11”
AT 10 : [AT]>>“INFO: hal_I2cGetData P_Data = This is a test!”
```