fix IO configuration for SPI
This commit is contained in:
parent
efaf85e3ab
commit
7b4abb24cb
@ -107,9 +107,11 @@ void led_ws2812b_setup(void)
|
||||
timer_enable_oc_output(LED_WS2812B_TIMER, LED_WS2812B_TIMER_OC); // enable output to generate the clock
|
||||
|
||||
/* setup SPI to transmit data (we are slave and the clock comes from the above PWM): 3 SPI bits for 1 WS2812b bit */
|
||||
rcc_periph_clock_enable(LED_WS2812B_SPI_RCC); // enable clock for SPI peripheral
|
||||
rcc_periph_clock_enable(LED_WS2812B_SPI_PORT_RCC); // enable clock for SPI IO peripheral
|
||||
gpio_set_mode(LED_WS2812B_SPI_PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, LED_WS2812B_SPI_CLK); // set clock as input
|
||||
gpio_set_mode(LED_WS2812B_SPI_PORT, GPIO_MODE_OUTPUT_10_MHZ, GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, LED_WS2812B_SPI_DOUT); // set MISO as output
|
||||
rcc_periph_clock_enable(RCC_AFIO); // enable clock for SPI alternate function
|
||||
rcc_periph_clock_enable(LED_WS2812B_SPI_RCC); // enable clock for SPI peripheral
|
||||
spi_reset(LED_WS2812B_SPI); // clear SPI values to default
|
||||
spi_set_slave_mode(LED_WS2812B_SPI); // set SPI as slave (since we use the clock as input)
|
||||
spi_set_bidirectional_transmit_only_mode(LED_WS2812B_SPI); // we won't receive data
|
||||
|
@ -30,6 +30,7 @@
|
||||
#define LED_WS2812B_SPI SPI1 /**< SPI peripheral */
|
||||
#define LED_WS2812B_SPI_DR SPI1_DR /**< SPI data register for the DMA */
|
||||
#define LED_WS2812B_SPI_RCC RCC_SPI1 /**< SPI peripheral clock */
|
||||
#define LED_WS2812B_SPI_PORT_RCC RCC_GPIOA /**< SPI I/O peripheral clock */
|
||||
#define LED_WS2812B_SPI_PORT GPIOA /**< SPI port */
|
||||
#define LED_WS2812B_SPI_CLK GPIO_SPI1_SCK /**< SPI clock pin (PA5), connect to PWM output */
|
||||
#define LED_WS2812B_SPI_DOUT GPIO_SPI1_MISO /**< SPI data pin (PA6), connect to WS2812b DIN */
|
||||
|
Loading…
Reference in New Issue
Block a user