梁工
发表于 2023-9-28 00:54:39
chen 发表于 2023-9-27 20:27
梁工你误解我的意思了,这个不是spi传输快慢的问题,dma+spi速度确实很快,但是要驱动WS2812不是光有速度 ...
我不知道你是否实际驱动过2812.
2812传输信号时,会检测高电平的时间,T1H = 1.00uS±150nS,T0H = 0.25uS±150nS。
低电平时间小于50us就不会复位,正常传输。
我不知道你担心的是什么。
chen
发表于 2023-9-28 09:39:15
本帖最后由 chen 于 2023-9-28 10:00 编辑
梁工 发表于 2023-9-28 00:54
我不知道你是否实际驱动过2812.
2812传输信号时,会检测高电平的时间,T1H = 1.00us±150ns,T0H = 0.25u ...
看下楼主的波形,正常情况下两个字节之间是高电平。。。要是低电平楼主也就不用反相了。还有个奇怪的地方,我用的是P23作为MOSI口。实测当把MISO设置为低电平时,间隔MOSI就为最后一个位平了,不知道是个啥原理
梁工
发表于 2023-9-28 13:12:43
chen 发表于 2023-9-28 09:39
看下楼主的波形,正常情况下两个字节之间是高电平。。。要是低电平楼主也就不用反相了。还有个奇怪的地方 ...
两个字节之间高电平是不行的,必须是低电平。
DebugLab
发表于 2023-11-20 18:31:17
2812不同厂家不同批次还有各种兼容型号,有GRB还有RGB,乱七八糟的,最好的办法是根据某一厂家某一型号某一批次的单独调试,先用差不多的时序点一个灯,正常点亮了再发多个灯的数据,测这个灯的输出,因为它肯定不会自相矛盾,可以级连的,这是最准确的方法,根据这个灯的输出调时序,兼容性最好最稳定的方法是用nop看示波器调,串口SPI都不靠谱,2812单总线时序很特殊,我试验了多款2812,发现时序各不相同,兼容性最好的时序是:
逻辑0:300~400ns高电平+1300~1400ns低电平
逻辑1:900~1000ns高电平+1300~1400ns低电平
社区闲人
发表于 2023-12-3 12:39:34
用IO口模拟就好了。
大补洞
发表于 2024-1-1 02:00:04
请教大神,stc32的dma不是已经从stc8h的传输256字节升级为65536字节了吗?还是只能控制10个ws2812?
LAOXU
发表于 2024-1-1 06:08:09
本帖最后由 LAOXU 于 2024-1-1 15:02 编辑
大补洞 发表于 2024-1-1 02:00
请教大神,stc32的dma不是已经从stc8h的传输256字节升级为65536字节了吗?还是只能控制10个ws2812? ...
目前的问题是, 如直接输出, 只能在每次 DMA 传输 (STC8 最大 256B, STC32 最大 64K), 控制刷新在此数据范围内的 WS2812, 之后必须复位 WS2812(否则下次传输出错), 再次启动DMA 传输 .
如果 是 STC8 (256B), 最多 一次 控制 10个(或20个, 半字节控制) WS2812,
如果 是 STC32 (64K), 最多 一次 控制 2560个(或5120个, 半字节控制) WS2812,
注:实际上 STC32 片内只有 几K 内存, 如不外扩 RAM 的话, 最多 一次 控制 也就 几百个 WS2812,
当然, 如果输出加反相器, 则依靠 多次 DMA 传输(级联), 可控制 N 倍的 上述数量WS2812,
嵌入式之路
发表于 2024-1-1 06:26:45
chen 发表于 2023-9-27 20:27
梁工你误解我的意思了,这个不是spi传输快慢的问题,dma+spi速度确实很快,但是要驱动WS2812不是光有速度 ...
是的 控制好时序 单单 io翻转就可以点亮
神农鼎
发表于 2024-1-1 17:24:53
梁工 发表于 2023-9-28 00:54
我不知道你是否实际驱动过2812.
2812传输信号时,会检测高电平的时间,T1H = 1.00uS±150nS,T0H = 0.25uS ...
梁工你是说:
【DMA-SPI, WS2812B】 程序控制的好,实际没必要加反向器 ?
如这样,节后帮给个演示程序,方便大家测试,你手头没 WS2812B,
给个演示程序就行了,大家自己测试后,在这讨论
大补洞
发表于 2024-1-1 22:03:23
LAOXU 发表于 2024-1-1 06:08
目前的问题是, 如直接输出, 只能在每次 DMA 传输 (STC8 最大 256B, STC32 最大 64K), 控制刷新在此数据范 ...
加反相器的同时,是不是也要关掉其它中断呀?不然其它中断进来就超过2812协议的完成时间了。