planck/rev6: Enable WS2812 LED matrix with pwm drivers (#9735)
* planck/rev6: Enable WS2812 LED matrix with pwm drivers * Comments and cleanup. * GPL2+ Licensing Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
		
						commit
						08b405e1e9
					
				
							
								
								
									
										21
									
								
								keyboards/planck/rev6/chconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								keyboards/planck/rev6/chconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | /* Copyright 2020 QMK Contributors
 | ||||||
|  |  * | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | // Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303
 | ||||||
|  | // so we need to change resolution and frequency to match.
 | ||||||
|  | #define CH_CFG_ST_RESOLUTION 16 | ||||||
|  | #define CH_CFG_ST_FREQUENCY 10000 | ||||||
|  | #include_next "chconf.h" | ||||||
| @ -126,17 +126,18 @@ | |||||||
| /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ | ||||||
| //#define MIDI_TONE_KEYCODE_OCTAVES 1
 | //#define MIDI_TONE_KEYCODE_OCTAVES 1
 | ||||||
| 
 | 
 | ||||||
| // #define WS2812_LED_N 2
 | 
 | ||||||
| // #define RGBLED_NUM WS2812_LED_N
 | /*
 | ||||||
| // #define WS2812_TIM_N 2
 |  * WS2812 Underglow Matrix options | ||||||
| // #define WS2812_TIM_CH 2
 |  */ | ||||||
| // #define PORT_WS2812     GPIOA
 |  | ||||||
| // #define PIN_WS2812      1
 |  | ||||||
| // #define WS2812_DMA_STREAM STM32_DMA1_STREAM2  // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection)
 |  | ||||||
| //#define WS2812_DMA_CHANNEL 7                  // DMA channel for TIMx_UP
 |  | ||||||
| //#define WS2812_EXTERNAL_PULLUP
 |  | ||||||
| #define RGB_DI_PIN A1 | #define RGB_DI_PIN A1 | ||||||
| #define RGBLED_NUM 9 | #define RGBLED_NUM 9 | ||||||
| #define RGBLIGHT_ANIMATIONS | #define DRIVER_LED_TOTAL RGBLED_NUM | ||||||
|  | 
 | ||||||
|  | #define WS2812_PWM_DRIVER PWMD2 | ||||||
|  | #define WS2812_PWM_CHANNEL 2 | ||||||
|  | #define WS2812_PWM_PAL_MODE 1 | ||||||
|  | #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 | ||||||
|  | #define WS2812_DMA_CHANNEL 2 | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								keyboards/planck/rev6/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								keyboards/planck/rev6/mcuconf.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | /* Copyright 2020 QMK Contributors
 | ||||||
|  |  * | ||||||
|  |  * This program is free software: you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation, either version 3 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License | ||||||
|  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include_next "mcuconf.h" | ||||||
|  | 
 | ||||||
|  | // The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used
 | ||||||
|  | // on the Planck requires the use of TIM2 to run PWM -- rework which timers are
 | ||||||
|  | // allocated for PWM usage.
 | ||||||
|  | #undef STM32_PWM_USE_TIM2 | ||||||
|  | #undef STM32_PWM_USE_TIM3 | ||||||
|  | #define STM32_PWM_USE_TIM2 TRUE | ||||||
|  | #define STM32_PWM_USE_TIM3 FALSE | ||||||
|  | 
 | ||||||
|  | // As mentioned above, we need to reallocate the SysTick timer used from
 | ||||||
|  | // TIM2 to TIM3.
 | ||||||
|  | #undef STM32_ST_USE_TIMER | ||||||
|  | #define STM32_ST_USE_TIMER 3 | ||||||
| @ -15,6 +15,25 @@ | |||||||
|  */ |  */ | ||||||
| #include "rev6.h" | #include "rev6.h" | ||||||
| 
 | 
 | ||||||
|  | led_config_t g_led_config = { { | ||||||
|  |   // Key Matrix to LED Index
 | ||||||
|  |   { NO_LED, 6,      NO_LED, NO_LED, 5,      NO_LED }, | ||||||
|  |   { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, | ||||||
|  |   { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0      }, | ||||||
|  |   { NO_LED, 7,      NO_LED, NO_LED, 2,      NO_LED }, | ||||||
|  |   { NO_LED, 4,      NO_LED, NO_LED, 3,      NO_LED }, | ||||||
|  |   { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, | ||||||
|  |   { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }, | ||||||
|  |   { NO_LED, 1,      NO_LED, NO_LED, 8,      NO_LED }, | ||||||
|  | }, { | ||||||
|  |   // LED Index to Physical Position
 | ||||||
|  |   {112, 39}, {148, 60}, {206, 53}, {206, 3}, {150, 3}, {74, 3}, {18, 3}, {18, 54}, {77, 60} | ||||||
|  | }, { | ||||||
|  |   // LED Index to Flag
 | ||||||
|  |   LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, | ||||||
|  |   LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL, LED_FLAG_ALL | ||||||
|  | } }; | ||||||
|  | 
 | ||||||
| void matrix_init_kb(void) { | void matrix_init_kb(void) { | ||||||
| 	matrix_init_user(); | 	matrix_init_user(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -18,13 +18,14 @@ AUDIO_ENABLE = yes           # Audio output | |||||||
| UNICODE_ENABLE = no         # Unicode | UNICODE_ENABLE = no         # Unicode | ||||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||||
| RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight. | RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight. | ||||||
| WS2812_DRIVER = bitbang | WS2812_DRIVER = pwm | ||||||
| API_SYSEX_ENABLE = no | API_SYSEX_ENABLE = no | ||||||
| 
 | 
 | ||||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||||
| SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend | SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend | ||||||
| #SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
 | #SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
 | ||||||
| 
 | 
 | ||||||
|  | RGB_MATRIX_ENABLE = WS2812 | ||||||
| # SERIAL_LINK_ENABLE = yes
 | # SERIAL_LINK_ENABLE = yes
 | ||||||
| ENCODER_ENABLE = yes | ENCODER_ENABLE = yes | ||||||
| DIP_SWITCH_ENABLE = yes | DIP_SWITCH_ENABLE = yes | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user