Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
国民技术_N32G45x
RT-Thread Nano
【N32G457 】基于RT-Thread和N32G457的DMX512控制器
发布于 2022-03-25 23:38:50 浏览:1429
订阅该版
[tocm] ### 应用场景 嵌入式开发的第一步-点亮小灯.这些年点过许多种灯,但是当灯的功率比较大且传输距离较远的时候单纯的时候GPIO方式驱动就显得不那么现实了.因此需要使用一些手段,在现场灯光控制领域常用的协议之一就是DMX512,常见的还有DALI啥的. #### DMX512概述 > 物理层使用单向EIA-485差分信号(E1.11有区别).单点总线拓扑,菊花链方式连接. > > DMX512在1986年由USITT(美国剧院技术研究所)委员会开发.并在1990年进行了修订.即最广泛的DMX512-1990版本 > > 1998年,ESTA(娱乐服务技术协会)修订并成为ANSI标准.即E1.11 DMAX512A(2004年ANSI才批准) > > 2008年再次修订即E.11-2008. > > [TSP (esta.org)](https://tsp.esta.org/tsp/documents/published_docs.php) > > [DMX512-A - wiki.openlighting.org](https://wiki.openlighting.org/index.php/DMX512-A) - 基于RS485总线,差分电平,抗干扰能力强 - 控制器周期性发送全部数据(无论是否变化) - 250000bps,4us/bit - 数据无需安全保护,没有校验机制 - 数据单向传输(主机向子机发送,子机从不会发送任何消息) - 数据长度不定长,最长257字节 | Name | time | Note | | -------------------------- | ---------------- | ----------------- | | Break | 88us(88us~1s)Low | | | MAB(Mark After Break) | 8usHigh(4~12us) | | | Start Bit | 4bitLow | | | SC(Start Code) | 44usLow | 即0x00 | | Stop | 8usHigh | | | MTBP(Mark time after slot) | 0~1sHigh | packet间隔,可忽略 | - 一个slot包含11bit(Start bit+8bit Data+Stop) 共计11us - 一个packet包含Break+MAB+SC+512slot+MTBP,MTBP=0时,共计22.6ms即44.1Hz(slot数量可以减少,此时频率会提升) - 本质上SC就是一个数据位为0x00的slot(不算在512内),通常称之为第0帧/第0通道. - 当使用9N1串口时,SC发送时第9bit为0,其余数据的第九bit均为1 - 每个slot称为一个通道,当一个芯片具备一个通道时,最多可接512个芯片/灯;当RGB灯具每个芯片具备3个通道,则可接170个灯. > 一些说明 > > - 电脑灯多具备十多个甚至几十个功能,因此将占用多个通道.此时需要按照对应灯具的说明书调节每个通道的功能.比如通道3为流水灯的速度0关闭255最快等等. > - 协议定义接口为XLR-5(5芯卡农接口),其中1GND,23A,45B.虽然本质上DMX512仅需要3芯即可.早期协议上将45定义了故障检测等功能但正式版本弃用.很多厂商将写码线和电源正连接在4/5上,使用前需要参考具体灯具定义.还有一个原因是,与灯光经常一起使用的音响等设备多使用三芯卡农接口,为了防止施工人员不小接错而导致设备损坏. > - 负载数量,根据协议定义最多只能控制32个负载,即使通道还有剩余.多余的设备应使用DMX分配器来对信号进行中继.普通的灯条芯片没有此限制(起码我测试的都没问题),电脑灯等设备没有测试条件.这点其实是RS485电路驱动能力限制的. > - 终端电阻,DMX中称为终端器.实际上就是120R1W的负载电阻.原因同上,与RS485原理有关. > - DMX512-A支持了双向传输,用于传输灯具错误等. > - DMX512A支持8针接口如8P8C/RJ45.标准公布之前很多制造商就开始使用RJ45,但是引脚排列有差异. > - DMX以太网协议ACN支持通过Wifi传输,但是不太稳定. > - DMX512A-2004增加SIP包(系统信息包)来提升可靠性(实际上很少使用),但是此版本协议成为RDM协议的基础. DMX512A不常见,洗墙灯等室外灯具还是DMX512协议较多.舞台灯具采用DMX512的升级版本RDM协议的较多.RDM是个很有趣的协议,其中RS485网络自组网的方式值得一看. 国内厂商常见的基本都是基于DMX512-1990版本进行各种花式魔改协议,还引申出不同厂商不同的写码控制协议等等.DMX512-1990部分,国内厂商版本多支持500Kbps.写码协议这部分不同厂商甚至不同芯片的协议都有一定差异,项目选型前一定要了解好.魔改内容就多了,电流设置,PWM配置,上电效果,伽马等等,甚至还有支持转发的.实际测试国产芯片现场并不受限于上述标准协议中规定的速率/传输距离/通道数量. PS:遇到过某个国内厂商不提供写码协议的,还得签保密协议各种限制啥的. #### DMX512-1990与DALI总线区别 - DMX512表现的是动态效果,DALI表示的是静态效果; - DMX512只要用于舞台灯光,DALI只要用于室内照明; - DMX512是单向通信,DALI是双向通信,可以查询解码器的状态; - DMX512协议简单,DALI协议复杂,共有200多条协议,不同的灯具还具有特殊功能的扩展协议, - DMX512采用RS485作为通信总线,DALI采用低压载波方式作为通信总线,总线最大可以提供250mA的电流给DALI设备使用. - DMX512帧结构简单,符合串行通信UART数据结构,普通有UART口的单片即可以实现, DALI帧结构采用曼切斯特码,分前向帧和返回帧,不同帧数据位数不相同,需要采用普通单片机模拟通信. - DMX512波特率250K bit/S,DALI波特率1200 bit/s. - DMX512采用一主多从的结构,最多可以512台从机地址,DALI也是一主多从,最多可以64台从机地址,(DALI也可以实现多主多从结构,具体可以搜索我发表过的
文章); - DMX512总线需要采用差分线材,手拉手总线形结构,最长距离达1.2公里,DALI采用普通的2x1.5mm线材,支持手拉手总线和星形结构,最长距离为300米,并要求最远两端的总线电压降不能超过2V. - DMX512最大刷新率44帧/秒(动态效果),分组,场景,渐变时间等参数都是储存在主机中,主机工作量大,DALI没有刷新率(静态效果),分组,场景,渐变时间等参数都是储存在从机解码器中,在调试完成了,主机可以撤离. - DMX512地址设置为手动方式,DALI地址设置可以手动或由主机自动分配. - DMX512分组数视主机而定,DALI为固定,最多16个组. - DMX512场景数视主机而定,DALI为固定值,最多为16个场景. 总结了下国产常见IC的功能表,篇幅有限,后面的没有截到.可以看到实际功能差异很大,具体应用时,一定要看规格书. ![image.png](https://oss-club.rt-thread.org/uploads/20220328/62447596b217bcbb6e191c3db7243c57.png.webp) ### 实现功能 #### 开发环境 - IDE: IAR-8.40.2 - Tools: Jlink V11.0 - RTT-nano #### 硬件框架 只需要一个TX引脚,使用USART2的TX(PA2)引脚给RS485即可.由于DMX512-1990是单工仅发送因此RS485只需发送即可. #### 软件框架 - 上电设定灯具地址,默认无需设定.不同厂商的写码协议不同.这里仅支持UCS512. - 循环发送DMX512数据帧,数据帧按照`芯片数x芯片通道数`按顺序排列.本例使用UCS512芯片灯具,每个芯片占用4个通道即RGBW(不同灯具这个顺序可能不同),灯具共有10个芯片(疫情封控,就背了两个点回来,有个效果就行了) - Shell 支持写码.由于就拿回来两个点,因此将地址线剪断来重复写码测试. ### 演示效果 #### 图片 逻辑分析仪抓取数据: ![DSView-220327-173222.png](https://oss-club.rt-thread.org/uploads/20220328/38ee7d89e43d636b641dd70f24890bd6.png) 灯条展示 ![微信图片_20220327173901.jpg](https://oss-club.rt-thread.org/uploads/20220328/22a4a40d371bc5b3c3c9041ab66fb3ac.jpg.webp) ![微信图片_20220327173907.jpg](https://oss-club.rt-thread.org/uploads/20220328/1fc2bc7a4e50a4ff5717bf4964679954.jpg.webp) ![微信图片_20220327173912.jpg](https://oss-club.rt-thread.org/uploads/20220328/ecfc080a38f45553d8a6d29a53bae303.jpg.webp) PS:最开始了解国民技术还是安全加密芯片,因此顺路测试了一下加密库,457这颗没有非对称还是很可惜的.家里没有示波器,没法较为准确的测量算法速率,因此这部分就不演示了.使用J-SCope打印了TRNG值,数据随机性还不错.MD5和SHA256本身消耗不大,没有明显测试到差异.DES安全性已经被证实不可靠就没有测试.AES硬件仅支持EBC,CBC和CTR,实际应用中EBC不安全,推荐使用CTR模式或者与GMAC组合成GCM来提升通信数据安全性.国密算法手里没有优化好的软件算法,因此没有测试.其实还偷摸在公司办公室测试了下高低温和抗干扰. #### 视频 Just turn on the light. 实在没必要,研究了好一会,实在想不到录个啥玩应.索性就不弄了,反正我想测试的功能都测试了. #### Gitee [Gitee](https://gitee.com/onlyloveonlyu/nation-rtt)
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
#ifndef
Null
文章
2
回答
2
被采纳
1
关注TA
发私信
相关文章
1
求高手指点,RTThread下nanosleep()函数功能如何实现?在线等啊
2
RTT1.2.2在新塘Nano130KE3BN的移植中始终出现栈溢出的问题
3
官方能否出一个nano在mdk下移植finsh到stm32的教程
4
从裸机开始,创建一个RT-Thread Nano系统工程
5
Nano版如何启用shell
6
项目从RTT 2.x NANO移植到 RTT 3.x ENV 环境
7
nano 版本有没有集成到 IAR 中啊?
8
关于MDK5的RT-THREAD NANO中添加MSH组件的例程
9
rtt_nano版本,源代码在哪里下载啊?
10
RTT Nano 在keil 使用C++11 的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部