/**
 * @file    is31fl3729.h
 * @brief   IS31FL3729 15x9 LED矩阵驱动头文件
 * @note    适配15x9矩阵模式，支持PWM调光、开短路检测
 */

#ifndef IS31FL3729_H
#define IS31FL3729_H

#include "fsl_lpi2c.h"
#include "fsl_gpio.h"

// 默认I2C从机地址（AD引脚接GND时的7位地址）
#define IS31FL3729_I2C_ADDR        0x34    // 0b0110100 (7位地址) 这里SDK会自动补写和读的位

// 矩阵尺寸定义
#define IS31FL3729_ROWS            9       // SW1~SW9
#define IS31FL3729_COLS            15      // CS1~CS15

// 寄存器定义（见规格书表5）
#define IS31FL3729_REG_PWM_BASE            0x01    // PWM寄存器起始地址（共135字节）
#define IS31FL3729_REG_SCALING             0x90    // 缩放寄存器起始地址（共15字节）
#define IS31FL3729_REG_CONFIG              0xA0    // 配置寄存器
#define IS31FL3729_REG_GLOBAL_CUR          0xA1    // 全局电流控制寄存器
#define IS31FL3729_REG_R_SEL               0xB0    // 上下拉电阻选择寄存器
#define IS31FL3729_REG_RESET               0xCF    // 复位寄存器
#define IS31FL3729_REG_FRE                 0xB2    // 频率设置
   
#define IS31FL3729_OK           0
#define IS31FL3729_ERR_I2C     -1
#define IS31FL3729_ERR_NAK     -2


/**
 * @brief IS31FL3729初始化配置结构体
 */
typedef struct {
    LPI2C_Type *i2cBase;       // I2C外设基地址（如LPI2C1）
    uint32_t i2cClockFreq;     // I2C时钟频率（单位：Hz）
    uint8_t i2cAddr;           // I2C从机地址（默认0x34）
} is31fl3729_config_t;

// 函数声明
//int IS31FL3729_Init(const is31fl3729_config_t *config);
//void IS31FL3729_SetLED(uint8_t row, uint8_t col, uint8_t brightness);
// 修改函数返回值说明
int IS31FL3729_Init(const is31fl3729_config_t *config);
int IS31FL3729_SetLED(uint8_t row, uint8_t col, uint8_t brightness);
void IS31FL3729_EnableOutput(void);
void IS31FL3729_DisableOutput(void);

#endif // IS31FL3729_H