Fix up WS2812 SPI driver on F072. (#13022)
This commit is contained in:
		
							parent
							
								
									35dbe8ba03
								
							
						
					
					
						commit
						597d2e0e7b
					
				
					 19 changed files with 61 additions and 11 deletions
				
			
		| 
						 | 
				
			
			@ -16,19 +16,23 @@
 | 
			
		|||
#    define WS2812_SPI_MOSI_PAL_MODE 5
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef WS2812_SPI_SCK_PAL_MODE
 | 
			
		||||
#    define WS2812_SPI_SCK_PAL_MODE 5
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Push Pull or Open Drain Configuration
 | 
			
		||||
// Default Push Pull
 | 
			
		||||
#ifndef WS2812_EXTERNAL_PULLUP
 | 
			
		||||
#    if defined(USE_GPIOV1)
 | 
			
		||||
#        define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
 | 
			
		||||
#        define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
 | 
			
		||||
#    else
 | 
			
		||||
#        define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
 | 
			
		||||
#        define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
 | 
			
		||||
#    endif
 | 
			
		||||
#else
 | 
			
		||||
#    if defined(USE_GPIOV1)
 | 
			
		||||
#        define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
 | 
			
		||||
#        define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN
 | 
			
		||||
#    else
 | 
			
		||||
#        define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN
 | 
			
		||||
#        define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN
 | 
			
		||||
#    endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -63,6 +67,12 @@
 | 
			
		|||
#    define WS2812_SPI_BUFFER_MODE 0  // normal buffer
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(USE_GPIOV1)
 | 
			
		||||
#    define WS2812_SCK_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL
 | 
			
		||||
#else
 | 
			
		||||
#    define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BYTES_FOR_LED_BYTE 4
 | 
			
		||||
#define NB_COLORS 3
 | 
			
		||||
#define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS)
 | 
			
		||||
| 
						 | 
				
			
			@ -109,7 +119,11 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
void ws2812_init(void) {
 | 
			
		||||
    palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE);
 | 
			
		||||
    palSetLineMode(RGB_DI_PIN, WS2812_MOSI_OUTPUT_MODE);
 | 
			
		||||
 | 
			
		||||
#ifdef WS2812_SPI_SCK_PIN
 | 
			
		||||
    palSetLineMode(WS2812_SPI_SCK_PIN, WS2812_SCK_OUTPUT_MODE);
 | 
			
		||||
#endif  // WS2812_SPI_SCK_PIN
 | 
			
		||||
 | 
			
		||||
    // TODO: more dynamic baudrate
 | 
			
		||||
    static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue