硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1036|回复: 12
收起左侧

[Lua] 用h7 tool点类似ws2812的灯,出了点问题

[复制链接]

2

主题

8

回帖

14

积分

新手上路

积分
14
发表于 2024-11-11 22:11:45 | 显示全部楼层 |阅读模式


手上有个类似ws2812的灯,(刚好手上还没有ws2812能点一下做对比)频率要更高点,设置精度也高点。打算用h7 tool点一下。详细规格书如附件。 T15153FC-LH1836E-RGB69-6-H-S REV 1.2.pdf (1.02 MB, 下载次数: 11)





查了下论坛,发现似乎没有用h7 tool点ws2812的例子,自己摸索着写了一个demo,但是发现灯亮是亮了,但是和期望不太一样。

1. 帮忙看看这代码他有没有毛病
2. delayus的电平保持时间是1us,能更快嘛(我怀疑是不是速度不够导致的)

DATA是excel生成的数据


[Lua] 纯文本查看 复制代码

beep()
gpio_cfg(0, 1) --配置模式D0 = 1-GPIO_OUT
gpio_write(0, 0) --设置输出D0 = 0
delayms(10)
local time_unit = 1
local data = {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

for i =1, #data do
    
    if data[i] then
        gpio_write(0, 1) --设置输出D0 = 1
        delayus(2)
        gpio_write(0, 0) --设置输出D0 = 0
        delayus(1)
    else
        gpio_write(0, 1) --设置输出D0 = 1
        delayus(1)
        gpio_write(0, 0) --设置输出D0 = 0
        delayus(2)
    end
end
gpio_write(0, 0) 
delayms(10)

print("刷新结束")


评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-11-12 00:14:50 | 显示全部楼层
我之前也打算用TOOL驱动下这个,楼主这个有购买链接不,我买个和楼主一样的,也想试试。
回复

使用道具 举报

0

主题

39

回帖

39

积分

新手上路

积分
39
发表于 2024-11-12 11:10:33 | 显示全部楼层
这个简单啊,直接用TOOL上面的SPI去驱动即可,,不用IO模拟
回复

使用道具 举报

2

主题

65

回帖

71

积分

初级会员

积分
71
发表于 2024-11-13 09:49:17 | 显示全部楼层
spi正解,特定的spi时钟发对应的数据就行
lua的delayus延时函数会受限于执行效率导致时序不对
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-11-13 21:24:29 | 显示全部楼层
eric2013 发表于 2024-11-12 00:14
我之前也打算用TOOL驱动下这个,楼主这个有购买链接不,我买个和楼主一样的,也想试试。

用公司余料试的,没有可以分享的链接和渠道
回复

使用道具 举报

2

主题

8

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-11-13 21:26:45 | 显示全部楼层
a13421364618 发表于 2024-11-12 11:10
这个简单啊,直接用TOOL上面的SPI去驱动即可,,不用IO模拟

用spi试了还是不太正常,但是至少比delayus正常点了。
spi模拟应该是正确的方向,我周末再试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-11-14 09:33:50 | 显示全部楼层
tumuyan 发表于 2024-11-13 21:24
用公司余料试的,没有可以分享的链接和渠道

好的,我从网上淘了一个,回来了试试
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-11-14 10:56:45 | 显示全部楼层
买条ws2812灯带或者灯环,很便宜。不过要注意,很多类ws2812灯珠时序有细微差别
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-11-15 09:42:24 | 显示全部楼层
cqrg 发表于 2024-11-14 10:56
买条ws2812灯带或者灯环,很便宜。不过要注意,很多类ws2812灯珠时序有细微差别

我随意搞了个,回来我试试。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-1-16 19:50:11 | 显示全部楼层
用SPI实现的话,MOSI的空闲电平如何设置为低电平呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-1-17 06:56:53 | 显示全部楼层
lpylpy 发表于 2025-1-16 19:50
用SPI实现的话,MOSI的空闲电平如何设置为低电平呢?

硬件SPI的话,没有这个配置项,只能通过特别操作实现,比如最后一次输出都是0

软件SPI方便,可以随时修改
回复

使用道具 举报

5

主题

221

回帖

241

积分

高级会员

积分
241
发表于 2025-1-17 09:48:37 | 显示全部楼层
正确的方法是定时器PWM+DMA实现
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 昨天 13:57 | 显示全部楼层
eric2013 发表于 2024-11-15 09:42
我随意搞了个,回来我试试。

有点亮吗?大佬。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 01:59 , Processed in 0.367414 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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