
本帖最后由 哈佛祖安智 于 2016-11-28 15:30 编辑 ! d. C0 A7 e% } 使用STM32L011D4P6驱动了WS2812B RGB5050 全彩LED,使用ST最新的HAL库。 WS2812B简介: 新一代的RGB5050将控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。; P/ }& x2 q6 M5 K% W4 O& o- u5 ]6 n Z -内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。 -内置上电复位和掉电复位电路。 -每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。0 p8 h. s+ f0 y. M( c7 P -串行级联接口,能通过一根信号线完成数据的接收与解码。8 z) s6 l" |# f) E% W: }( y6 L# V -任意两点传传输距离在不超过5米时无需增加任何电路。 -当刷新速率30帧/秒时,低速模式级联数不小于512点,高速模式不小于1024点。, b+ |' U0 @1 b -数据发送速度可达800Kbps。 -光的颜色高度一致,性价比高。 基于STM32驱动WS2812B设计案例概述: 使用了STM32L011D4P6设计了最小系统板,电源部分前级采用TI高效率开关电源芯片TPS563200将12V转换为5V,再由低压差LDO AMS1117-3.3转换为3.3V给单片机供电,STM32使用了PWM来模拟24bit数字信号,驱动了WS2812B,达到LED颜色,亮度可控的目的。详细介绍及程序文件详见附件内容。1 h4 l/ B; Y- p$ T4 @% C3 v7 F 工程采用CubeMX生成,使用的是ST最新的HAL库,需要使用keil5及以上版本打开,CubeMX版本需要16.0及以上,下载地址:http://www.st.com/content/st_com/zh/...cmp=pf259242_prom_stm32cube-long-promo_feb2014;/ m0 s7 M4 f0 m. X" D- i8 S 优酷视频:, A& ^& t" w, ]* M7 O" L ( P/ E$ Q9 ^, d1 z5 w 三点说明: WS2812B为5V供电,5V逻辑器件,因此需要电平转换IC; RGB5050 最大60mA电流,单色时为20mA.因此应根据灯珠的多少设计合适的电源;6 }6 n- c2 c! B8 v6 J" t 本设计采用TI开关电源芯片TPS563200,最大3A电流输出能力。5 {7 B( ~7 {6 r2 s* C' `" Y STM32驱动WS2812B电路板截图:# _4 O8 v+ x0 b ' x# f# ^/ j# B, I - H# Q- f2 M9 s7 N9 V ^ ![]() % `# e# }+ j) @+ P4 C. M% l7 C _7 k$ q ![]() # T3 h' l6 w# x1 s3 }% c9 G : V0 j8 j; b* ?; Q# r& c 文件下载: ![]() |
2016.11.28最新程序移步http://club.gizwits.com/forum.ph ... amp;extra=#pid12633
其中D1为MCU端发送的数据,D2、D3、D4为级联电路自动整形转发的数据。这个数据发送的模式我没太懂,如果1颗灯就是24bit GRB,如果2颗灯就是 发两个 24bit GRB 24bit GRB,如果是3颗灯就是 24bit 24bit 24bit 是么?
这个只是实现了基本的RGB控制,周末再把库函数发上来
" U& L3 E/ l. n L; _
我在调试的过程中驱动也有些问题,Send_8bits(255);这个函数执行只发5位数据,示波器读取只读到5个1码的波形。0码的话就是8位。是不是我的DMA数据传输有问题呢?
我这个没用DMA,你先把基本的调通看看
嗯,上一颗灯取走自己的24bit数据后,把剩余的数据转发给下一颗LED