X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm32l0%2Fao_arch_funcs.h;h=297bd66c76684b9762fba85f6e67f68fd7b206a3;hb=2a6c0e80f64e793b68e29a18fafad730b55a06b6;hp=8786061005e4187c6191e48218409ee878d62b28;hpb=e58d08a93818b3d60746f0f17b34e96fbf8ba0e3;p=fw%2Faltos diff --git a/src/stm32l0/ao_arch_funcs.h b/src/stm32l0/ao_arch_funcs.h index 87860610..297bd66c 100644 --- a/src/stm32l0/ao_arch_funcs.h +++ b/src/stm32l0/ao_arch_funcs.h @@ -24,20 +24,28 @@ /* PCLK is set to 16MHz (HCLK 32MHz, APB prescaler 2) */ -#define AO_SPI_SPEED_8MHz STM_SPI_CR1_BR_PCLK_2 -#define AO_SPI_SPEED_4MHz STM_SPI_CR1_BR_PCLK_4 -#define AO_SPI_SPEED_2MHz STM_SPI_CR1_BR_PCLK_8 -#define AO_SPI_SPEED_1MHz STM_SPI_CR1_BR_PCLK_16 -#define AO_SPI_SPEED_500kHz STM_SPI_CR1_BR_PCLK_32 -#define AO_SPI_SPEED_250kHz STM_SPI_CR1_BR_PCLK_64 -#define AO_SPI_SPEED_125kHz STM_SPI_CR1_BR_PCLK_128 -#define AO_SPI_SPEED_62500Hz STM_SPI_CR1_BR_PCLK_256 - -#define AO_SPI_SPEED_FAST AO_SPI_SPEED_8MHz +#define _AO_SPI_SPEED_8MHz STM_SPI_CR1_BR_PCLK_2 +#define _AO_SPI_SPEED_4MHz STM_SPI_CR1_BR_PCLK_4 +#define _AO_SPI_SPEED_2MHz STM_SPI_CR1_BR_PCLK_8 +#define _AO_SPI_SPEED_1MHz STM_SPI_CR1_BR_PCLK_16 +#define _AO_SPI_SPEED_500kHz STM_SPI_CR1_BR_PCLK_32 +#define _AO_SPI_SPEED_250kHz STM_SPI_CR1_BR_PCLK_64 +#define _AO_SPI_SPEED_125kHz STM_SPI_CR1_BR_PCLK_128 +#define _AO_SPI_SPEED_62500Hz STM_SPI_CR1_BR_PCLK_256 /* Companion bus wants something no faster than 200kHz */ -#define AO_SPI_SPEED_200kHz AO_SPI_SPEED_125kHz +static inline uint32_t +ao_spi_speed(uint32_t hz) +{ + if (hz >= 4000000) return _AO_SPI_SPEED_4MHz; + if (hz >= 2000000) return _AO_SPI_SPEED_2MHz; + if (hz >= 1000000) return _AO_SPI_SPEED_1MHz; + if (hz >= 500000) return _AO_SPI_SPEED_500kHz; + if (hz >= 250000) return _AO_SPI_SPEED_250kHz; + if (hz >= 125000) return _AO_SPI_SPEED_125kHz; + return _AO_SPI_SPEED_62500Hz; +} #define AO_SPI_CPOL_BIT 4 #define AO_SPI_CPHA_BIT 5 @@ -134,8 +142,6 @@ ao_spi_recv(void *block, uint16_t len, uint8_t spi_index); void ao_spi_duplex(const void *out, void *in, uint16_t len, uint8_t spi_index); -extern uint16_t ao_spi_speed[STM_NUM_SPI]; - void ao_spi_init(void); @@ -380,6 +386,8 @@ struct ao_stm_usart { #endif }; +#include + void ao_debug_out(char c); @@ -585,4 +593,7 @@ ao_arch_wait_interrupt(void) { void start(void); +bool +ao_storage_device_is_erased(uint32_t pos); + #endif /* _AO_ARCH_FUNCS_H_ */