| # Copyright (c) 2019, Nordic Semiconductor ASA |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| description: | |
| Worldsemi WS2812 LED strip, GPIO binding |
| |
| Driver bindings for bit-banging a WS2812 or compatible LED strip. |
| |
| The CPU driver uses inline assembly, and isn't available for all |
| boards. The timing is automatically derived from the CPU clock frequency, |
| or can be provided by setting the delay-txx properties in the device |
| tree, or can be manually provided by the Kconfig settings DELAY_Txx. |
| |
| The four delays provided (calculated based on the clock frequency, |
| provided by a dts, or Kconfig file) determine the delays as depicted |
| below. The exact timings of the LED strip data line might vary on the |
| type of LEDs used, consult the data-sheet for the precise timings. |
| |
| 0 code |
| +-------+ +--- |
| | | | |
| | T0H | T0L | |
| | | | |
| ---+ +-----------------+ |
| |
| 1 code |
| +---------------+ +--- |
| | | | |
| | T1H | T1L | |
| | | | |
| ---+ +---------+ |
| |
| |
| Example dts file: |
| / { |
| cpus { |
| cpu@0 { |
| clock-frequency = <64000000>; |
| }; |
| }; |
| |
| rgb_led: ws2812 { |
| compatible = "worldsemi,ws2812-gpio"; |
| chain-length = <1>; |
| color-mapping = <LED_COLOR_ID_GREEN |
| LED_COLOR_ID_RED |
| LED_COLOR_ID_BLUE>; |
| gpios = <&gpio0 16 0>; |
| }; |
| }; |
| |
| Example dts file: |
| / { |
| chosen { |
| zephyr,led-strip = &rgb_led; |
| }; |
| |
| rgb_led: ws2812 { |
| compatible = "worldsemi,ws2812-gpio"; |
| chain-length = <1>; |
| color-mapping = <LED_COLOR_ID_GREEN |
| LED_COLOR_ID_RED |
| LED_COLOR_ID_BLUE>; |
| reset-delay = <50>; |
| gpios = <&gpio0 16 0>; |
| delay-t1h = <48>; |
| delay-t1l = <32>; |
| delay-t0h = <16>; |
| delay-t0l = <32>; |
| }; |
| }; |
| |
| compatible: "worldsemi,ws2812-gpio" |
| |
| include: [base.yaml, ws2812-gpio.yaml] |
| |
| properties: |
| delay-t1h: |
| type: int |
| description: | |
| Number of NOP assembly operations to create a delay for a 1 bit, high |
| voltage period (default 700 nsec) |
| |
| delay-t1l: |
| type: int |
| description: | |
| Number of NOP assembly operations to create a delay for a 1 bit, low |
| voltage period (default 600 nsec) |
| |
| delay-t0h: |
| type: int |
| description: | |
| Number of NOP assembly operations to create a delay for a 0 bit, high |
| voltage period (default 350 nsec) |
| |
| delay-t0l: |
| type: int |
| description: | |
| Number of NOP assembly operations to create a delay for a 0 bit, low |
| voltage period (default 800 nsec) |