找回密码
 立即注册
楼主: 吽***

DMA_SPI 驱动 WS2812B 全彩LED 的简单应用 | 梁工是说不用加反向器 ?

[复制链接]

该用户从未签到

45

主题

2920

回帖

6564

积分

超级版主

积分
6564
发表于 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就不会复位,正常传输。
我不知道你担心的是什么。

点评

梁工你是说: 【DMA-SPI, WS2812B】 程序控制的好,实际没必要加反向器 ?  详情 回复 发表于 2024-1-1 17:24
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-6 15:33
  • 签到天数: 2 天

    [LV.1]初来乍到

    20

    主题

    98

    回帖

    968

    积分

    荣誉版主

    积分
    968
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    45

    主题

    2920

    回帖

    6564

    积分

    超级版主

    积分
    6564
    发表于 2023-9-28 13:12:43 | 显示全部楼层
    chen 发表于 2023-9-28 09:39
    看下楼主的波形,正常情况下两个字节之间是高电平。。。要是低电平楼主也就不用反相了。还有个奇怪的地方 ...

    两个字节之间高电平是不行的,必须是低电平。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:03
  • 签到天数: 106 天

    [LV.6]常住居民II

    25

    主题

    304

    回帖

    1013

    积分

    荣誉版主

    Cyber Hamster

    积分
    1013
    发表于 2023-11-20 18:31:17 | 显示全部楼层
    2812不同厂家不同批次还有各种兼容型号,有GRB还有RGB,乱七八糟的,最好的办法是根据某一厂家某一型号某一批次的单独调试,先用差不多的时序点一个灯,正常点亮了再发多个灯的数据,测这个灯的输出,因为它肯定不会自相矛盾,可以级连的,这是最准确的方法,根据这个灯的输出调时序,兼容性最好最稳定的方法是用nop看示波器调,串口SPI都不靠谱,2812单总线时序很特殊,我试验了多款2812,发现时序各不相同,兼容性最好的时序是:
    逻辑0:300~400ns高电平+1300~1400ns低电平
    逻辑1:900~1000ns高电平+1300~1400ns低电平


    mmexport1652030520668.jpg
    7ae01c9613f809a6.png



    (=・ω・=)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 05:23
  • 签到天数: 153 天

    [LV.7]常住居民III

    17

    主题

    370

    回帖

    1285

    积分

    荣誉版主

    积分
    1285
    发表于 2023-12-3 12:39:34 | 显示全部楼层
    用IO口模拟就好了。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    7

    回帖

    58

    积分

    注册会员

    积分
    58
    发表于 2024-1-1 02:00:04 来自手机 | 显示全部楼层
    请教大神,stc32的dma不是已经从stc8h的传输256字节升级为65536字节了吗?还是只能控制10个ws2812?

    点评

    目前的问题是, 如直接输出, 只能在每次 DMA 传输 (STC8 最大 256B, STC32 最大 64K), 控制刷新在此数据范围内的 WS2812, 之后必须复位 WS2812(否则下次传输出错), 再次启动 DMA 传输 . 如果 是 STC8 (256B), 最多  详情 回复 发表于 2024-1-1 06:08
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 02:35
  • 签到天数: 132 天

    [LV.7]常住居民III

    37

    主题

    868

    回帖

    3940

    积分

    荣誉版主

    积分
    3940
    发表于 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,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 00:28
  • 签到天数: 137 天

    [LV.7]常住居民III

    9

    主题

    264

    回帖

    913

    积分

    高级会员

    积分
    913
    发表于 2024-1-1 06:26:45 | 显示全部楼层
    chen 发表于 2023-9-27 20:27
    梁工你误解我的意思了,这个不是spi传输快慢的问题,dma+spi速度确实很快,但是要驱动WS2812不是光有速度 ...

    是的 控制好时序 单单 io翻转就可以点亮
    自信就会温和,温和就会坚定!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    550

    主题

    9234

    回帖

    1万

    积分

    管理员

    积分
    13942
    发表于 2024-1-1 17:24:53 | 显示全部楼层
    梁工 发表于 2023-9-28 00:54
    我不知道你是否实际驱动过2812.
    2812传输信号时,会检测高电平的时间,T1H = 1.00uS±150nS,T0H = 0.25uS ...

    梁工你是说:
    DMA-SPI, WS2812B】 程序控制的好,实际没必要加反向器 ?

    如这样,节后帮给个演示程序,方便大家测试,你手头没 WS2812B,
    给个演示程序就行了,大家自己测试后,在这讨论
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    7

    回帖

    58

    积分

    注册会员

    积分
    58
    发表于 2024-1-1 22:03:23 | 显示全部楼层
    LAOXU 发表于 2024-1-1 06:08
    目前的问题是, 如直接输出, 只能在每次 DMA 传输 (STC8 最大 256B, STC32 最大 64K), 控制刷新在此数据范 ...

    加反相器的同时,是不是也要关掉其它中断呀?不然其它中断进来就超过2812协议的完成时间了。

    点评

    只要保证任何中断执行时间都不要查过50us,就没有问题。  详情 回复 发表于 2024-1-2 15:55
    不加反相器, 由于每次 DMA 传输完, 下次启动 DMA 传输 之间(切换时), SPI 输出起码会有 数十 个(或更大)以上 的高电平停顿, 假如下次 DMA 传输 的第一个 BIT 是 0, SPI 发送时, 加上这点开始前的高电平停顿, WS2812  详情 回复 发表于 2024-1-2 00:26
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-29 02:11 , Processed in 0.070315 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表