RT-Thread studio i2c 驱动TCA62724(RGBLED驱动)芯片问题记录

RT-Thread studio i2c 驱动TCA62724(RGBLED驱动)芯片问题记录

配置完i2c后根据芯片手册可成功亮灯,但是每次的写入读出时间要很长(3-5s),后来发现是i2c的延时问题,官方给定的是1us的延时,这里需要根据自己的芯片改动
改动
stm32f427vi delay_us =100,亲测可用
这款芯片网上资料较少,根据手册可以写,下面是驱动代码

struct rt_i2c_msg msg;
rt_uint8_t readbuf[2];
rt_uint8_t yellow_buff[5] = {TCA62724_PWM0_AUTOINC_ON_ADDR,0x0F,0x0F,0x0F,0x03};
rt_uint8_t red_buff[5] = {TCA62724_PWM0_AUTOINC_ON_ADDR,0x00,0x00,0x0F,0x03};
rt_uint8_t green_buff[5] = {TCA62724_PWM0_AUTOINC_ON_ADDR,0x00,0x0F,0x00,0x03};
rt_uint8_t blue_buff[5] = {TCA62724_PWM0_AUTOINC_ON_ADDR,0x0F,0x00,0x00,0x03};
rt_uint8_t shutdown_buff[5] = {TCA62724_PWM0_AUTOINC_ON_ADDR,0x00,0x00,0x00,0x03};
void rgb_send(struct rt_i2c_bus_device *dev,rt_uint8_t *sendbuff,rt_uint16_t len)
{
    msg.addr = TCA62724_SLAVE_WRITE_ADDR>>1;
    msg.flags = RT_I2C_WR;
    msg.buf = sendbuff;
    msg.len=len;
    rt_i2c_transfer(dev, &msg, len);
    rt_thread_mdelay(10);
}
void LED_RGB()
{
    i2c_bus = (struct rt_i2c_bus_device *)rt_device_find(TCA62724_I2C_BUS_NAME);
    if(i2c_bus==RT_NULL)
    {
        rt_kprintf("open i2c device failed! please check it out !\r\n");
    }else {
        rt_kprintf("i2c success!!\r\n");
    }


    while(1)
    {
        rgb_send(i2c_bus,blue_buff,5);
        rt_thread_mdelay(300);

        rgb_send(i2c_bus,shutdown_buff,5);
        rt_thread_mdelay(300);

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45786595

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值