您的位置:首页 > 其它

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

2011-02-11 23:41 525 查看
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: