社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
国产芯片交流
›
全志R128芯片 基础组件开发指南——RTOS 多媒体解码
返回列表
发新帖
回复
阅
651
|
回
0
aleksib
当前离线
纯净的硅(中级)
最后登录
2025-1-6
在线时间
40 小时
威望
998分
芯积分
511分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
aleksib
287
帖子
0
TA的资源
纯净的硅(中级)
+ 好友
私信
楼主
发表于2023-10-10 14:10
只看该作者
全志R128芯片 基础组件开发指南——RTOS 多媒体解码
[复制链接]
# 驱动 WS2812 流水灯 | 本文案例代码 | 下载地址 | | ---------------------- | -------------------------------------- | | 驱动 WS2812 流水灯案例代码 | https://www.aw-ol.com/downloads?cat=24 | R128-DevKit 拥有4颗 WS2812 LED,本文将详细叙述如何点亮他们。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fa53c4e1e4694fb882ae7990d9b0357f.png#pic_center) ## LEDC 模块简介 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1ec7cbceb438498aa7014c70d93b3c28.png#pic_center) LEDC 硬件方框图如上图所示,CPU 通过 APB 总线操作 LEDC 寄存器来控制 LEDC;当 CPU配置好 LEDC 的相关寄存器之后,通过 CPU 或 DMA 将 R、G、B 数据从 DRAM 搬到 LEDC FIFO 中,启动 LEDC 之后就可以通过 PIN 脚向外部的 LED 发送数据了。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f6c0b27883534ec5a8d3b4fc57a1e471.png#pic_center) LED 典型电路如图所示,其中 DI 表示控制数据输入脚,DO 表示控制数据输出脚。DI 端接收从控制器传过来的数据,每个 LED 内部的数据锁存器会存储 24bit 数据,剩余的数据经过内部整形处理电路整形放大后通过 DO 端口开始转发输出给下一个级联的 LED。因此,每经过一个LED,数据减少 24bit。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/77c565c00b1449a8adcff158a17d5d9e.png#pic_center) 注意,如果在单次直接设置第 n 个 LED 的亮度和色彩的时候,前面 n-1 个 LED 的亮度数据会在第 n 个 LED 的数据前发送,不过这些数据将会是原来 n-1 个 LED 的亮度数据。 由于拥有独立的 LEDC 模块,在 R128 平台上驱动 WS2812 类似的 RGB LED 不需要使用 SPI 模拟,也不需要使用 PWM 配置时序。直接使用这个模块即可。 ## 设置 LEDC 驱动 运行 `mrtos_menuconfig` 进入配置页面。前往下列地址找到 `LEDC Devices` ``` Drivers Options---> soc related device drivers---> LEDC devices ---> [*] enable ledc driver ``` 找到 LEDC Devices ![在这里插入图片描述](https://img-blog.csdnimg.cn/462fe3e922ed40dd92ef3fa178088a2b.png#pic_center) 勾选如下选项 ![在这里插入图片描述](https://img-blog.csdnimg.cn/159e04f7b78c40a7b7c913acba339927.png#pic_center) ## 配置 LEDC 参数 参考电路图可知,LEDC 模块连接的是 R128 的 `PA13` 引脚。参考手册可知 MUX 为 7 ![在这里插入图片描述](https://img-blog.csdnimg.cn/137f66c1bc4d421e9d831d53fe027a8e.png#pic_center) 前往 `lichee/rtos/drivers/rtos-hal/hal/source/ledc/platform/ledc_sun20iw2.h` 并编辑 LEDC 的引脚和MUX ```c #define LEDC_PIN GPIOA(13) #define LEDC_PINMUXSEL 7 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/dc09ba7260b44df09e9f6c378a40d1b8.png#pic_center) 然后编辑 `lichee/rtos/drivers/rtos-hal/hal/source/ledc/hal_ledc.c` 配置 WS2812 的时序参数: ```c struct ledc_config ledc_config = { .led_count = 4, .reset_ns = 84, .t1h_ns = 1000, .t1l_ns = 1000, .t0h_ns = 580, .t0l_ns = 1000, .wait_time0_ns = 84, .wait_time1_ns = 84, .wait_data_time_ns = 600000, .output_mode = "GRB", }; ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/f9bb0914c6f34824b1f69740fc4c370d.png#pic_center) ## 编译测试 编译后烧录开发板 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9a181e79d5964660b8c91e70fafa026b.png#pic_center) 可以用命令 `hal_ledc` 来测试 ``` hal_ledc
<亮度> ``` ### 点亮红色 LED 运行命令 ``` hal_ledc 1 R 100 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/391b9e8329984c0a8a1e5f0b267ea391.png#pic_center) 即可点亮第一颗 LED ![在这里插入图片描述](https://img-blog.csdnimg.cn/971ef9cfafbf487d8899c6ca9bfbbce3.png#pic_center) ### 点亮绿色 LED 运行命令 ``` hal_ledc 2 G 100 ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/e3a454707c574dafb33ebdfbdc39677e.png#pic_center) 第二颗 LED 即可点亮绿色 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8c034d123fa446158e204ede4d6bdf91.png#pic_center) ## 实现七彩流水灯 前往项目文件夹编辑 `main.c`,这里我选择在 M33 核心上编写程序,所以选用的是`lichee/rtos/projects/r128s2/module_m33/src/main.c` ,如果是编写 C906 核心的程序,请修改 `lichee/rtos/projects/r128s2/module_c906/src/main.c` ```c #include
#include
#include
// 使用RGB 分量合成颜色值 #define MERAGECOLOR(G, R, B) (((uint32_t)G << 16) | ((uint16_t)R << 8) | B) #define PIXEL_NUM 4 // 生成颜色 uint32_t WS281x_Wheel(uint8_t wheelPos) { wheelPos = 255 - wheelPos; if (wheelPos < 85) { return MERAGECOLOR(255 - wheelPos * 3, 0, wheelPos * 3); } if (wheelPos < 170) { wheelPos -= 85; return MERAGECOLOR(0, wheelPos * 3, 255 - wheelPos * 3); } wheelPos -= 170; return MERAGECOLOR(wheelPos * 3, 255 - wheelPos * 3, 0); } // 亮度设置 uint32_t WS281xLSet(uint32_t rgb, float k) { uint8_t r, g, b; float h, s, v; uint8_t cmax, cmin, cdes; r = (uint8_t) (rgb >> 16); g = (uint8_t) (rgb >> 8); b = (uint8_t) (rgb); cmax = r > g ? r : g; if (b > cmax) cmax = b; cmin = r < g ? r : g; if (b < cmin) cmin = b; cdes = cmax - cmin; v = cmax / 255.0f; s = cmax == 0 ? 0 : cdes / (float) cmax; h = 0; if (cmax == r && g >= b) h = ((g - b) * 60.0f / cdes) + 0; else if (cmax == r && g < b) h = ((g - b) * 60.0f / cdes) + 360; else if (cmax == g) h = ((b - r) * 60.0f / cdes) + 120; else h = ((r - g) * 60.0f / cdes) + 240; v *= k; float f, p, q, t; float rf, gf, bf; int i = ((int) (h / 60) % 6); f = (h / 60) - i; p = v * (1 - s); q = v * (1 - f * s); t = v * (1 - (1 - f) * s); switch (i) { case 0: rf = v; gf = t; bf = p; break; case 1: rf = q; gf = v; bf = p; break; case 2: rf = p; gf = v; bf = t; break; case 3: rf = p; gf = q; bf = v; break; case 4: rf = t; gf = p; bf = v; break; case 5: rf = v; gf = p; bf = q; break; default: break; } r = (uint8_t) (rf * 255.0); g = (uint8_t) (gf * 255.0); b = (uint8_t) (bf * 255.0); return ((uint32_t) r << 16) | ((uint32_t) g << 8) | b; } // 延时函数 static inline int msleep(int ms) { vTaskDelay(ms / portTICK_RATE_MS); } // 测试 LEDC int ledc_test_loop() { int i = 0, j = 0, err; int mode = 0; uint8_t R = 0, G = 0, B = 0; err = hal_ledc_init(); if (err) { printf("ledc init error\n"); return -1; } while (1) { for (j = 0; j < 256; j++) { for (i = 0; i < PIXEL_NUM; i++) { sunxi_set_led_brightness( i + 1, WS281xLSet(WS281x_Wheel(((i * 256 / PIXEL_NUM) + j) & 255), 0.2)); msleep(1); } msleep(10); } } return 1; } ``` 并且将测试函数加入到 `cpu0_app_entry` 中。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f211441132a64b56865876bcd9b62774.png#pic_center) 重新烧录即可实现七彩流水灯 ![在这里插入图片描述](https://img-blog.csdnimg.cn/dbee5cbfa1bb4115bc1d641551615564.png#pic_center) > 原贴链接:[https://bbs.aw-ol.com/topic/4368/](https://bbs.aw-ol.com/topic/4368/) > 资源获取、问题讨论可以到全志在线开发者社区进行:[https://www.aw-ol.com](https://www.aw-ol.com) >全志及开发者最新动态可以关注**全志在线微信公众号**
此帖出自
国产芯片交流论坛
点赞
关注
(0)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
安世半导体智能工业应用探索站,闯关赢好礼!
PI 电源小课堂:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
Microchip喊你探索dsPIC33A 芯片,70份好礼等你赢!
【瓜分2500元红包】票选2024 DigiKey “感知万物,乐享生活”创意大赛人气作品TOP3!
DigiKey应用探索站重磅上线!潮流应用,硬核技术探秘,N多干货,一站get!
验证并选择心仪MOSFET,探寻选型奥秘!注册、体验双重好礼等你拿~
免费申请测评 | 泰坦触觉 TITAN Core开发套件
开源项目
更多>>
【征集令】PS2接口键鼠转蓝牙
苹果妙控2代键盘改机械键盘(Cover Nosix)
使用 MaxLinear, Inc 的 SPX385S-1.2 的参考设计
使用 Diodes Incorporated 的 AP6508 的参考设计
ch552g核心板
OP413FSZ耳机输出放大器多媒体声音编解码器典型应用
pi型衰减网络
使用 Diodes Incorporated 的 PT8A 3519CPE 的参考设计
使用 ON Semiconductor 的 RC4190 的参考设计
【模拟电路】简易星形呼吸灯
随便看看
买一个逻辑分析仪,对写代码很有帮助
最近复习Linuxspi驱动,因为我自己的SPI外设和教程配套开发板的外设不同,死活调不通。没人指导,然后我就专门买了一个逻辑分析模块,再画了一个小板子引出信号测试。一看逻辑波形发现SPI读写过程没错,只是对读回来的数据理解错了,然后改代码将读到的数据按 ...
RV1106开箱
【MCXN947开发板测评】点阵板显示驱动
OLED显示问题:每行只能显示一个汉字
关于阻抗匹配的理解(转发)
关于430单片机的电源
MSP430F5529、G2553A/D转换模块
问一个关于充电的问题
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
开关特性测试仪
MCS-51单片机
移相触发板
空心杯电机
台安变频器
电液换向阀
扭矩电机
瞬态电压
手机排线
导纳
相关文章
更多>>
苹果M4 Mac mini曝出USB-C接口问题!随机间歇性断开连接
1月17日消息,苹果M4 Mac mini自2024年底发布以来,收获了不少好评,然而近期一些用户在使用过程中发现,该设备的USB-C接口似乎存在连接性问题,给使用带来了不便。 有用户反映M4 Ma
消息称 SK 海力士有望 2 月启动业界最先进 1c nm 制程 DRAM 内存量产
1 月 17 日消息,韩媒 MT(IT之家注:全称 MoneyToday)当地时间今日报道称,SK 海力士近日已成功完成内存业界最先进 1c 纳米制程 DRAM 的批量产品认证,连续多个以 25 块
未经同意出售用户数据,通用汽车遭美国 FTC 处罚
1 月 17 日消息,当地时间周四,美国联邦贸易委员会(FTC)宣布通用汽车及其子公司 OnStar 因未经用户同意出售用户位置和驾驶行为数据,因此将对其进行处罚,包括在五年内禁止向消费者报告机构披
日本三井住友银行推出半导体设备抵押贷款,铠侠已率先获益
联想宣布收购Infinidat,扩充高端企业存储业务
台积电董事长:我们不是美积电 最先进制程不会搬到美国
曝台积电拒绝代工三星Exynos处理器:理由是怕泄密
SK 海力士被曝上半年削减 10% NAND 闪存产量
苹果加入UALink联盟 成员含AMD、英特尔、谷歌等公司
英特尔宣布将逐渐停产第 12 代 Alder Lake 移动处理器,覆盖酷睿、奔腾及赛扬
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
回帖赢好礼 | 关于无线技术的那些事儿
【活动时间】即日起—2025年1月31日
【活动好礼】50元京东卡
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
Microchip喊你探索 dsPIC33A 芯片,70份好礼等你赢!
活动时间:即日起-1月26日
活动奖励:随身Wi-Fi、家用多功能电烤箱、20000mAh充电宝、50元京东卡
查看 »
DigiKey应用探索站重磅上线!潮流应用,硬核技术探秘,N多干货,一站get!
当月好物、热门技术资源、潮流应用技术、特色活动、DigiKey在线实用工具,干货多多~
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
下载资料赢好礼!看Vicor模块化电源解决方案如何推动创新
活动时间:即日起-2024年12月31日
如何参与:点击活动页内您想了解的模块,找到资料下载即可参与抽奖,活动结束后统一发奖!
查看 »
验证并选择心仪MOSFET,探寻选型奥秘!注册、体验双重好礼等你拿~
MOSFET 选型有点难
选N沟道MOSFET?还是选P沟道MOSFET?
封装如何选:不同封装尺寸有不同的热阻和耗散功率。
瞬态散热更严苛,热设计需要如何处理?
用东芝在线电路仿真器,一键解锁MOSFET选型的秘密!
查看 »
关闭
站长推荐
1
/9
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
嵌入式系统
单片机
国产芯片交流
电机驱动控制
FPGA/CPLD
模拟电子
电源技术
PCB技术
RF/无线
传感器
综合技术交流
下载中心专版
大学堂专版
测评中心专版
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
行业应用
汽车电子
移动便携
医疗电子
工控电子
安防电子
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛