|
DMA-SPI-MOSI 输出直接驱动 WS2812 三基色彩灯@8H/32G系列, CPU休息
SPI方案, 不加外部反相器:
只用到MOSI驱动WS2812,但由于SPI的3个信号是捆绑在一起的
===MISO不能做它用
本例使用P1.3-MOSI输出驱动信号,用户可以切换到别的脚。
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 !
===SCLK如要做其他用途,可设置为高阻输入,作为输入使用
这 SPI 留了这么个绝活 支持 WS2812B !!!
本例驱动60个灯,接成环状。SPI发送720字节,DMA分3块发送,一块240字节,
SPI-DMA自动传送不占CPU时间,SPI-DMA 总耗时2.08mS,
===但由于使用DMA中断处理,所以发送占CPU时间只有几uS。
===实际几乎 不占 CPU 时间
每个灯3个字节,分别对应绿、红、蓝色,MSB先发.
800KHz码率, 数据0(1/4占空比): H=0.3125us L=0.9375us, 数据1(3/4占空比): H=0.9375us L=0.3125us, RESET>=50us.
高电平时间要精确控制在要求的范围内, 低电平时间不需要精确控制, 大于要求的最小值并小于RES的50us即可.
WS2812S的标准时序如下:
TH+TL = 1.25us±150ns, RES>50us
T0H = 0.25us±150ns = 0.10us - 0.40us
T0L = 1.00us±150ns = 0.85us - 1.15us
T1H = 1.00us±150ns = 0.85us - 1.15us
T1L = 0.25us±150ns = 0.10us - 0.40us
两个位数据之间的间隔要小于RES的50us.
SPI方案:
只用到MOSI驱动WS2812,但由于SPI的3个信号是捆绑在一起的,MISO 不能做它用。本例使用P1.3-MOSI输出驱动信号,用户可以切换到别的脚。
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 ,这 STC-R&D 留了这么个绝活支持 WS2812B !!!
用SPI传输, 速度3.0~3.5MHz,以3.2MHz为最佳, MSB先发, 每个字节高4位和低4位分别对应一个WS2812位数据, 1000为数据0, 1110为数据1, 有DMA就使用DMA传输, 没有DMA就直接SPI发送.
MOSI数据位 D7 D6 D5 D4 D3 D2 D1 D0
MOSI数据 1 0 0 0 1 1 1 0
WS2812数据0 WS2812数据1
SPI数据高半字节对应的WS2812数据0-->0x80, 数据1-->0xE0,
SPI数据低半字节对应的WS2812数据0-->0x08, 数据1-->0x0E,
主频25.6MHz, SPI分频8 = 3.2MHz。最佳。本例使用。
主频24.0MHz, SPI分频8 = 3.0MHz。本例可用。
主频12.8MHz, SPI分频4 = 3.2MHz。最佳。用户要改下主频定义和SPI为4分频。
主频12.0MHz, SPI分频4 = 3.0MHz。用户要改下主频定义,SPI为4分频。
下面为跑马灯效果视频:
电路预览,文件包中有PDF:
使用 SPI-MOSI 输出直接驱动 WS2812 三基色彩灯, DMA传输,8H/STC32G系列
SPI方案, 不加外部反相器:
只用到MOSI驱动WS2812,但由于SPI的3个信号是捆绑在一起的
===MISO管脚不能做它用; SCLK管脚可以工作在高阻输入,作为输入口
本例使用P1.3-MOSI输出驱动信号,用户可以切换到别的脚。
===将 MISO 不做其他用途;
===将 MISO管脚 先设置为对外输出0;
===MOSI 发送完成后,对外停止时输出的是 MISO 读到的状态, 0 !
这 SPI 留了这么个绝活 支持 WS2812B !!!
本例驱动60个灯,接成环状。SPI发送720字节,DMA 分 3块发送,一块240字节
SPI-DMA自动传送, 直接驱动 WS2812 不占CPU时间,
===SPI-DMA 的SPI 总耗时2.08mS,不加外部反相器
===但由于使用DMA中断处理,所以发送占CPU时间只有几uS。
===实际几乎 不占 CPU 时间
2024/1/10,开源演示程序文件, SPI-DMA直驱WS2812不加外部反相器:
梁工:SPI驱动WS2812彩灯程序已完善更新 !
8H系列有4个程序: SPI查询发送; SPI中断发送; SPI-DMA中断发送; DMA中断+比较器反相
32G系列的3个程序: SPI查询发送; SPI中断发送; SPI-DMA发送(不用中断,一次DMA发完720字节)
STC8H-SPI驱动WS2812彩灯程序.rar
(1.01 MB, 下载次数: 604)
STC32G-SPI驱动WS2812彩灯程序.rar
(817.69 KB, 下载次数: 396)
|
|