projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drivers/ao_quadrature: Fix -Wconversion warnings
[fw/altos]
/
src
/
stm
/
ao_spi_stm.c
diff --git
a/src/stm/ao_spi_stm.c
b/src/stm/ao_spi_stm.c
index 5a3790c5f11a7a37c719a7cd1ac8dfd21c8475dc..0215f03ebd6a56bf173c16e16e8c0a53cd008955 100644
(file)
--- a/
src/stm/ao_spi_stm.c
+++ b/
src/stm/ao_spi_stm.c
@@
-25,7
+25,7
@@
struct ao_spi_stm_info {
};
static uint8_t ao_spi_mutex[STM_NUM_SPI];
};
static uint8_t ao_spi_mutex[STM_NUM_SPI];
-static uint8_t ao_spi_
index
[STM_NUM_SPI];
+static uint8_t ao_spi_
pin_config
[STM_NUM_SPI];
static const struct ao_spi_stm_info ao_spi_stm_info[STM_NUM_SPI] = {
{
static const struct ao_spi_stm_info ao_spi_stm_info[STM_NUM_SPI] = {
{
@@
-116,7
+116,7
@@
ao_spi_set_dma_miso(uint8_t id, void *data, uint16_t len, uint32_t minc)
data,
len,
(0 << STM_DMA_CCR_MEM2MEM) |
data,
len,
(0 << STM_DMA_CCR_MEM2MEM) |
- (STM_DMA_CCR_PL_
MEDIUM
<< STM_DMA_CCR_PL) |
+ (STM_DMA_CCR_PL_
VERY_HIGH
<< STM_DMA_CCR_PL) |
(STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |
(STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |
(minc << STM_DMA_CCR_MINC) |
(STM_DMA_CCR_MSIZE_8 << STM_DMA_CCR_MSIZE) |
(STM_DMA_CCR_PSIZE_8 << STM_DMA_CCR_PSIZE) |
(minc << STM_DMA_CCR_MINC) |
@@
-285,11
+285,11
@@
ao_spi_duplex(const void *out, void *in, uint16_t len, uint8_t spi_index)
}
static void
}
static void
-ao_spi_disable_
index(uint8_t spi_index
)
+ao_spi_disable_
pin_config(uint8_t spi_pin_config
)
{
/* Disable current config
*/
{
/* Disable current config
*/
- switch (spi_
index
) {
+ switch (spi_
pin_config
) {
case AO_SPI_1_PA5_PA6_PA7:
stm_gpio_set(&stm_gpioa, 5, 1);
stm_moder_set(&stm_gpioa, 5, STM_MODER_OUTPUT);
case AO_SPI_1_PA5_PA6_PA7:
stm_gpio_set(&stm_gpioa, 5, 1);
stm_moder_set(&stm_gpioa, 5, STM_MODER_OUTPUT);
@@
-324,11
+324,11
@@
ao_spi_disable_index(uint8_t spi_index)
}
static void
}
static void
-ao_spi_enable_
index(uint8_t spi_index
)
+ao_spi_enable_
pin_config(uint8_t spi_pin_config
)
{
/* Enable new config
*/
{
/* Enable new config
*/
- switch (spi_
index
) {
+ switch (spi_
pin_config
) {
case AO_SPI_1_PA5_PA6_PA7:
stm_afr_set(&stm_gpioa, 5, STM_AFR_AF5);
stm_afr_set(&stm_gpioa, 6, STM_AFR_AF5);
case AO_SPI_1_PA5_PA6_PA7:
stm_afr_set(&stm_gpioa, 5, STM_AFR_AF5);
stm_afr_set(&stm_gpioa, 6, STM_AFR_AF5);
@@
-360,23
+360,26
@@
ao_spi_enable_index(uint8_t spi_index)
static void
ao_spi_config(uint8_t spi_index, uint32_t speed)
{
static void
ao_spi_config(uint8_t spi_index, uint32_t speed)
{
+ uint8_t spi_pin_config = AO_SPI_PIN_CONFIG(spi_index);
uint8_t id = AO_SPI_INDEX(spi_index);
struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi;
uint8_t id = AO_SPI_INDEX(spi_index);
struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi;
- if (spi_
index != ao_spi_index
[id]) {
+ if (spi_
pin_config != ao_spi_pin_config
[id]) {
/* Disable old config
*/
/* Disable old config
*/
- ao_spi_disable_
index(ao_spi_index
[id]);
+ ao_spi_disable_
pin_config(ao_spi_pin_config
[id]);
/* Enable new config
*/
/* Enable new config
*/
- ao_spi_enable_
index(spi_index
);
+ ao_spi_enable_
pin_config(spi_pin_config
);
/* Remember current config
*/
/* Remember current config
*/
- ao_spi_
index[id] = spi_index
;
+ ao_spi_
pin_config[id] = spi_pin_config
;
}
}
+
+ /* Turn the SPI transceiver on and set the mode */
stm_spi->cr1 = ((0 << STM_SPI_CR1_BIDIMODE) | /* Three wire mode */
(0 << STM_SPI_CR1_BIDIOE) |
(0 << STM_SPI_CR1_CRCEN) | /* CRC disabled */
stm_spi->cr1 = ((0 << STM_SPI_CR1_BIDIMODE) | /* Three wire mode */
(0 << STM_SPI_CR1_BIDIOE) |
(0 << STM_SPI_CR1_CRCEN) | /* CRC disabled */
@@
-389,8
+392,8
@@
ao_spi_config(uint8_t spi_index, uint32_t speed)
(1 << STM_SPI_CR1_SPE) | /* Enable SPI unit */
(speed << STM_SPI_CR1_BR) | /* baud rate to pclk/4 */
(1 << STM_SPI_CR1_MSTR) |
(1 << STM_SPI_CR1_SPE) | /* Enable SPI unit */
(speed << STM_SPI_CR1_BR) | /* baud rate to pclk/4 */
(1 << STM_SPI_CR1_MSTR) |
- (
0 << STM_SPI_CR1_CPOL) | /* Format 0
*/
- (
0
<< STM_SPI_CR1_CPHA));
+ (
AO_SPI_CPOL(spi_index) << STM_SPI_CR1_CPOL) | /* Format
*/
+ (
AO_SPI_CPHA(spi_index)
<< STM_SPI_CR1_CPHA));
validate_spi(stm_spi, 13, 0);
}
validate_spi(stm_spi, 13, 0);
}
@@
-430,7
+433,7
@@
ao_spi_channel_init(uint8_t spi_index)
uint8_t id = AO_SPI_INDEX(spi_index);
struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi;
uint8_t id = AO_SPI_INDEX(spi_index);
struct stm_spi *stm_spi = ao_spi_stm_info[id].stm_spi;
- ao_spi_disable_
index(spi_index
);
+ ao_spi_disable_
pin_config(AO_SPI_PIN_CONFIG(spi_index)
);
stm_spi->cr1 = 0;
stm_spi->cr2 = ((0 << STM_SPI_CR2_TXEIE) |
stm_spi->cr1 = 0;
stm_spi->cr2 = ((0 << STM_SPI_CR2_TXEIE) |
@@
-512,7
+515,7
@@
ao_spi_init(void)
stm_ospeedr_set(&stm_gpioe, 15, SPI_1_OSPEEDR);
# endif
stm_rcc.apb2enr |= (1 << STM_RCC_APB2ENR_SPI1EN);
stm_ospeedr_set(&stm_gpioe, 15, SPI_1_OSPEEDR);
# endif
stm_rcc.apb2enr |= (1 << STM_RCC_APB2ENR_SPI1EN);
- ao_spi_
index
[0] = AO_SPI_CONFIG_NONE;
+ ao_spi_
pin_config
[0] = AO_SPI_CONFIG_NONE;
ao_spi_channel_init(0);
#endif
ao_spi_channel_init(0);
#endif
@@
-530,7
+533,7
@@
ao_spi_init(void)
stm_ospeedr_set(&stm_gpiod, 4, SPI_2_OSPEEDR);
# endif
stm_rcc.apb1enr |= (1 << STM_RCC_APB1ENR_SPI2EN);
stm_ospeedr_set(&stm_gpiod, 4, SPI_2_OSPEEDR);
# endif
stm_rcc.apb1enr |= (1 << STM_RCC_APB1ENR_SPI2EN);
- ao_spi_
index
[1] = AO_SPI_CONFIG_NONE;
+ ao_spi_
pin_config
[1] = AO_SPI_CONFIG_NONE;
ao_spi_channel_init(1);
#endif
#if DEBUG
ao_spi_channel_init(1);
#endif
#if DEBUG