控制Windows Mobile的LED之四:多色呼吸LED SN3199的驱动

    技术2025-05-03  35

          SN3199是一款多色呼吸的LED驱动控制芯片,用来支持我目前项目上的LED控制。因为项目需求在内核和BOOT LOADER中都需要闪烁,所以用这种One Shot控制的芯片是最有效最省资源的。

          芯片采用I2C控制方式,通讯时序如下:

    以上是典型的读写方式,该芯片还支持地址自加模式,即只要往某地址写入了一系列数据,后续的数据会自动写入接连自加的地址中。时序图如下:

    所以读写函数如下:

    XLLP_STATUS_T Xllp3199WriteRegs(XLLP_I2C_T *i2cRegs, XLLP_OST_T *ostRegs,   XLLP_UINT8_T reg,

               XLLP_UINT8_T *val_buf,      XLLP_UINT8_T val_count){             XLLP_STATUS_T status;             XLLP_UINT8_T buf[0x28]={0x00};     //初始化内部数组,需要组合数据用,确定0x27个字节传入

                 int lock,i;          buf[0] = reg;                        //首字节是地址         for( i=1; i<=val_count;i++)           {                       buf[i] = *(val_buf+i);        //保存写入数据           }          lock = ACQUIRE_LOCK();          INTS_OFF();

             status = XllpI2CWrite(i2cRegs, ostRegs, sn3199_saddr, buf, val_count+1, 1);  //sn3199_saddr是七位地址          INTS_ON();          RELEASE_LOCK(lock);         return status;}

    用法:Xllp3199WriteRegs(s_Device.m_pI2CCtrlReg,s_Device.m_pOSTimer,REG_00_SoftOn,sn3199_reg,0x27);

    最新回复(0)