鸿蒙硬件HI3861-I2C-PCF8591

鸿蒙硬件HI3861-I2C-PCF8591

如果有什么问题可以来B站问我

https://space.bilibili.com/309103931

1.初始化

需要用到的头文件

#include <stdio.h>

#include "cmsis_os2.h"

#include "wifiiot_i2c.h"

#include "wifiiot_gpio.h"

#include "wifiiot_gpio_ex.h"

#include <hi_stdlib.h>

GpioInit();
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_13, WIFI_IOT_IO_FUNC_GPIO_13_I2C0_SDA);
IoSetFunc(WIFI_IOT_IO_NAME_GPIO_14, WIFI_IOT_IO_FUNC_GPIO_14_I2C0_SCL);
I2cInit(WIFI_IOT_I2C_IDX_0, OLED_I2C_BAUDRATE);

2.8591函数

uint32_t PCF8591Write(uint8_t write_data[]){
    WifiIotI2cIdx id = PCF8591_I2C_IDX;
    WifiIotI2cData i2cData = {0};
    i2cData.sendBuf = write_data;
    i2cData.sendLen = 2;

    uint32_t result = I2cWrite(id, PCF8591_I2C_ADDRESS, &i2cData);

    return result;
}

uint32_t PCF8591Read(uint8_t read_data_address){
    uint8_t writeBuf[1] = {0};
    WifiIotI2cIdx id = PCF8591_I2C_IDX;
    WifiIotI2cData i2cWData = {0};
    writeBuf[0] = read_data_address;
    i2cWData.sendBuf = writeBuf;
    i2cWData.sendLen = 1;

    I2cWrite(id, PCF8591_I2C_ADDRESS, &i2cWData);

    uint8_t readBuf[5] = {0};
    WifiIotI2cData i2cRData = {0};
    i2cRData.receiveBuf = readBuf;
    i2cRData.receiveLen = 1;

    uint32_t Rresult = I2cRead(id, PCF8591_I2C_ADDRESS,&i2cRData);

    return Rresult;
}

3.测试

    uint8_t d[3] = {0x43,0x00};
    PCF8591Write(d);

    while(1){
        PCF8591Read(0x43);
        osDelay(100);
    }

猜你喜欢

转载自blog.csdn.net/qq_33259323/article/details/109719103