ESP32 AIP650 驱动 LED
ESP32 AIP650 IIC 初始化代码
I2C初始化
i2c_config_t conf;
conf.mode = I2C_MODE_MASTER;
conf.sda_io_num = 0; //SDA IO映射
conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
conf.scl_io_num = 4; //SCL IO映射
conf.scl_pullup_en = GPIO_PULLUP_ENABLE;
conf.master.clk_speed = 100000; //I2C CLK 频率
i2c_param_config(I2C_NUM_0, &conf); //配置I2C
i2c_driver_install(I2C_NUM_0, conf.mode,0, 0, 0); //I2C功能安装使能函数
I2C写指令
static int aip650_write(uint16_t addr,uint8_t data)
{
int ret;
i2c_cmd_handle_t cmd = i2c_cmd_link_create(); //创建I2C连接函数
ret = i2c_master_start(cmd); //写启动信号到缓存函数
ret = i2c_master_write_byte(cmd,(addr<<1),0x01);
// ret = i2c_master_write_byte(cmd,0x00,0x01);
ret = i2c_master_write_byte(cmd,data, 0x01);
ret = i2c_master_stop(cmd); //写停止信号
ret = i2c_master_cmd_begin(I2C_NUM_0, cmd, 10 / portTICK_RATE_MS); //I2C发送函数
i2c_cmd_link_delete(cmd); //删除I2C链接
return ret;
}
控制指令下发
aip650_write(0x48,0x01);
LED 依次亮灭
aip650_write(0x68,0x01);
vTaskDelay(100 / portTICK_PERIOD_MS);
aip650_write(0x68,0x02);
vTaskDelay(100 / portTICK_PERIOD_MS);
aip650_write(0x68,0x04);
vTaskDelay(100 / portTICK_PERIOD_MS);