| 
				打卡等级:以坛为家I打卡总天数:216最近打卡:2025-10-31 11:24:48 超级版主 
 
	积分14622 
 | 
 
| 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, 下载次数: 1372) 
  STC32G-SPI驱动WS2812彩灯程序.rar
(817.69 KB, 下载次数: 1038) 
   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
 |