大家好、
客户有问题需要您的帮助:
F28034、驱动器 IO 控制 WS2812B 芯片。 晶体振荡器使用内部 INTOSC1乘以50m、添加一个 ASM ("NOP");声明说、大约300ns 增加了时间、理论上、50ns 不是对应于20M 时钟?
图中第一个高电平时间执行两个 asm ("NOP");第二个高电平时间执行三个 asm ("NOP");。 将 GPAQSEL1寄存器配置为异步。 我想知道 asm ("NOP");为什么延迟不是时钟周期、或者是否有其他更精确的延迟方法。
奇怪的是,我不能附加我的图片在这个帖子。
void WS2812B_tx(void)
{
Uint16 ws2812hl[24],rgb,i;
rgb = WS2812.GRB;
for(i=0;i<24;i++)
{
if((rgb & 0x00800000) == 0x800000)
ws2812hl[i] = 1;
else
ws2812hl[i] = 0;
rgb = rgb << 1;
}
if(ws2812hl[0])
{
ws2812b_H;
asm(" NOP");asm(" NOP");asm(" NOP");
ws2812b_L;
//asm(" NOP");
}
else
{
ws2812b_H;
asm(" NOP");asm(" NOP");
ws2812b_L;
//asm(" NOP");
}
if(ws2812hl[1])
{
ws2812b_H;
asm(" NOP");asm(" NOP");asm(" NOP");
ws2812b_L;
//asm(" NOP");
}
else
{
ws2812b_H;
asm(" NOP");asm(" NOP");
ws2812b_L;
//asm(" NOP");
}
您能帮助检查这个问题吗?
谢谢。此致、
本