forked from zephyrproject-rtos/zephyr
-
Notifications
You must be signed in to change notification settings - Fork 76
Expand file tree
/
Copy pathKconfig.ws2812
More file actions
114 lines (98 loc) · 4.19 KB
/
Copy pathKconfig.ws2812
File metadata and controls
114 lines (98 loc) · 4.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Copyright (c) 2017 Linaro Limited
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
# The following blog post is an excellent resource about pulse timing:
#
# https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/
config WS2812_STRIP_SPI
bool "WS2812 LED strip SPI driver"
default y
depends on DT_HAS_WORLDSEMI_WS2812_SPI_ENABLED
select SPI if $(dt_compat_on_bus,$(DT_COMPAT_WORLDSEMI_WS2812_SPI),spi)
help
Enable driver for WS2812 (and compatibles) LED strip using SPI.
The SPI driver is portable, but requires significantly more
memory (1 byte of overhead per bit of pixel data).
config WS2812_STRIP_I2S
bool "WS2812 LED strip I2S driver"
default y
depends on DT_HAS_WORLDSEMI_WS2812_I2S_ENABLED
select I2S if $(dt_compat_on_bus,$(DT_COMPAT_WORLDSEMI_WS2812_I2S),i2s)
help
Enable driver for WS2812 (and compatibles) LED strip using I2S.
Uses the I2S peripheral, memory usage is 4 bytes per color,
times the number of pixels. A few more for the start and end
delay. The reset delay has a coarse resolution of ~20us.
config WS2812_STRIP_GPIO
bool "WS2812 LED strip GPIO driver"
# Only an Cortex-M inline assembly implementation for the nRF91, nRF51,
# nRF52 and nRF53 is supported currently.
default y
depends on DT_HAS_WORLDSEMI_WS2812_GPIO_ENABLED
depends on (SOC_SERIES_NRF91X || SOC_SERIES_NRF51X || SOC_SERIES_NRF52X || SOC_SERIES_NRF53X)
select LED_STRIP_RGB_SCRATCH
help
Enable driver for WS2812 (and compatibles) LED strip directly
controlling with GPIO. The GPIO driver does bit-banging with inline
assembly, and is not available on all SoCs.
Note that this driver is not compatible with the Everlight B1414
controller.
if WS2812_STRIP_GPIO
DT_CHOSEN_LED_STRIP := zephyr,led-strip
DT_CHOSEN_LED_STRIP_PATH := $(dt_chosen_path,$(DT_CHOSEN_LED_STRIP))
config DELAY_T1H
int "Delay 1 bit high pulse"
default $(dt_node_int_prop_int,$(DT_CHOSEN_LED_STRIP_PATH),delay-t1h) \
if $(dt_node_has_prop,$(DT_CHOSEN_LED_STRIP_PATH),delay-t1h)
default $(div,$(mul,700,$(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)),1000000000) \
if $(dt_node_has_prop,/cpus/cpu@0,clock-frequency)
default 7
help
Number of NOP assembly operations to create a delay for a 1 bit, high voltage period (default 700 nsec)
config DELAY_T1L
int "Delay 1 bit low pulse"
default $(dt_node_int_prop_int,$(DT_CHOSEN_LED_STRIP_PATH),delay-t1l) \
if $(dt_node_has_prop,$(DT_CHOSEN_LED_STRIP_PATH),delay-t1l)
default $(div,$(mul,600,$(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)),1000000000) \
if $(dt_node_has_prop,/cpus/cpu@0,clock-frequency)
default 6
help
Number of NOP assembly operations to create a delay for a 1 bit, low voltage period (default 600 nsec)
config DELAY_T0H
int "Delay 0 bit high pulse"
default $(dt_node_int_prop_int,$(DT_CHOSEN_LED_STRIP_PATH),delay-t0h) \
if $(dt_node_has_prop,$(DT_CHOSEN_LED_STRIP_PATH),delay-t0h)
default $(div,$(mul,350,$(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)),1000000000) \
if $(dt_node_has_prop,/cpus/cpu@0,clock-frequency)
default 3
help
Number of NOP assembly operations to create a delay for a 0 bit, high voltage period (default 350 nsec)
config DELAY_T0L
int "Delay 0 bit low pulse"
default $(dt_node_int_prop_int,$(DT_CHOSEN_LED_STRIP_PATH),delay-t0l) \
if $(dt_node_has_prop,$(DT_CHOSEN_LED_STRIP_PATH),delay-t0l)
default $(div,$(mul,800,$(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)),1000000000) \
if $(dt_node_has_prop,/cpus/cpu@0,clock-frequency)
default 8
help
Number of NOP assembly operations to create a delay for a 0 bit, low voltage period (default 800 nsec)
endif
config WS2812_STRIP_RPI_PICO_PIO
bool "WS2812 LED strip Raspberry Pi Pico PIO driver"
default y
depends on DT_HAS_WORLDSEMI_WS2812_RPI_PICO_PIO_ENABLED
select PICOSDK_USE_PIO
help
Enable driver for WS2812 (and compatibles) LED strip using
the RaspberryPi Pico's PIO.
config WS2812_STRIP_STM32_TIMER
bool "WS2812 LED strip STM32 TIMER driver"
default y
depends on DT_HAS_WORLDSEMI_WS2812_STM32_TIMER_ENABLED
select PWM
select PWM_WITH_DMA
select DMA
help
Enable driver for WS2812 (and compatibles) LED strip using
the STM32 TIMER with DMA