首页 资讯 论坛 我的社区 搜索 用户

[HAL库]HAL库IIC(I2C)操作OLED例程(包括I2C读取)

无闻风
发表于 2019-06-27 14:01:40
0
1816

使用cube MX配置好对应的参数后:

unsigned char OLED_ADDRESS=0x78;//OLED地址
I2C_HandleTypeDef hi2c1;                   //cube MX生成的一个资源句柄

void WriteCmd(unsigned char I2C_Command)//写命令
{
// uint8_t pData[1];
// pData[0] = I2C_Command;
uint8_t *pData;
pData = &I2C_Command;
HAL_I2C_Mem_Write(&hi2c1,OLED_ADDRESS,0x00,I2C_MEMADD_SIZE_8BIT,pData,1,100);

//使用这条子函数写入数据需要把数据放入数组,然后把数组的名字作为参数传递。详细看开发手册

}

void WriteDat(unsigned char I2C_Data)//写数据
{
// uint8_t pData[1];
// pData[0] = I2C_Data;
uint8_t *pData;
pData = &I2C_Data;
HAL_I2C_Mem_Write(&hi2c1,OLED_ADDRESS,0x40,I2C_MEMADD_SIZE_8BIT,pData,1,100);

//同上写入数组
}

i2c读取数据(这个oled并不需要读取数据,不过还是写一下):

uint8_t AD_ReadData(uint16_t Addr, uint8_t Reg)//器件地址  /数据地址
{
HAL_StatusTypeDef status = HAL_OK;
uint8_t value = 0;

status = HAL_I2C_Mem_Read(&hi2c2, Addr, Reg, I2C_MEMADD_SIZE_8BIT, &value, 1, 3000);

/* 检测I2C通信状态 */
if(status != HAL_OK)
{
/* 调用I2C通信错误处理函数 */

}
return value;
}

最后修改 2019-06-27 14:01:40
0
1816
用户评论
一起折腾