Atxmega128A3U控制灯带SK6812RGBW的注意事项 由于“0”和“1”码都是根据信号宽度判断的,如果在单片机向灯带发送“0”码或“1”码的高电平期间,遇到系统中断,则灯带DI口接收到的高电平宽度可能超出了规格书的要求,导致显示颜色异常。 (1)协议采用单极性归零码,每个码元必须有低电平,本协议的每个码元起始为高电平,高电平时间宽度决定是“0”码还是“1”码; (2)书写程序时,码元周期最低要求为1.2us; (3)“0”码和“1”码的高电平时间按照上表的规定范围,“0”码和“1”码的低电平时间要求小于20us。 因此,单片机程序在发送“0”码或“1”码高电平前要执行 #asm(“cli”) 发送完成高电平后执行 #asm(“sei”) 测试结果,问题依旧。问题依旧的原因可能是低电平时间超过了20us,如果超过了80us,灯带会认为接收到复位信号,下次接收到的32位数据还是用于点亮第一个LED。 那么,只能在发送灯带数据前执行 #asm(“cli”) 在整个灯带数据发送完成后执行 #asm(“sei”) 再次测试,问题解决。 在程序中打开中断的情况下,不要向灯带发送数据。
|
找了半天的问题