sink例程和rgb_led冲突问题?灯珠异常闪烁

52芯片,在使用music_sink例程时想加入rgb灯条显示灯效。使用了rgb_led例程点亮10个灯的灯条,目前可以实现了一个简单的流水灯的效果,单独的rgb_led例程是没有问题的,显示正常。在把rgb_led例程添加到music_sink例程里面后,出现一种情况,灯条还是正常在流水灯,但是灯条的第一个灯珠会异常的闪烁绿色,蓝牙连接的时候和播放歌曲的时候最为严重,猜测是DMA的出现冲突的问题吗,请教一下该如何解决 :thinking:

rgb使用的PWM3,找到了dma的通道配置,尝试去修改其他通道后也没有解决

#define PWM3_UPDATE_DMA_IRQHandler        DMAC1_CH3_IRQHandler
#define PWM3_UPDATE_DMA_IRQ_PRIO          1
#define PWM3_UPDATE_DMA_INSTANCE          DMA1_Channel3
#define PWM3_UPDATE_DMA_IRQ               DMAC1_CH3_IRQn
#define PWM3_UPDATE_DMA_PDATAALIGN        DMA_PDATAALIGN_HALFWORD
#define PWM3_UPDATE_DMA_MDATAALIGN        DMA_MDATAALIGN_HALFWORD

使用的是哪个分支的代码?之前RGB驱动是有一些问题,最新的分支上应该都修复了

Hi半糖,我使用的是main分支,但是是上个月clone下来的。刚刚我又clone了最新的main分支的SDK,测试了一下,仍然还是相同的现象。sink音频传输的时候rgb第一个灯珠闪烁 :melting_face:

更新一下,抓取波形时发现一个异常,如下图,在每个正常数据前面会有一个异常波形。


RGB灯效正常显示时,异常波形不多,如下图,就一两个高电平。

连接蓝牙播放蓝牙音乐,第一个RGB灯会闪烁,异常波形会增多,如下图,猜测就是这个原因,导致的闪烁绿色。

针对这个问题已经进行了修复,你可以拉取最新节点复测一下

clone最新的sdk测试没有问题啦,显示和蓝牙音频播放都正常啦,谢谢 :smiley:

但是发现一个现象:因为老版本的SDK修改过,不想换整个SDK,我就单独修改了drv_rgbled.c文件,应用了Fix DMA transfer error 这次 Commit。发现蓝牙音频无法正常播放了,但是使用最新clone的sdk是没有问题的。最后发现是这个失能pwm通道导致的,注释掉这个4行代码,使用老版本SDK也没有问题了,音频正常也不闪烁,一个奇怪的现象 :joy: