static int spi_stm32_configure(struct spi_config *config) { const struct spi_stm32_config *cfg = CONFIG_CFG(config); struct spi_stm32_data *data = CONFIG_DATA(config); const u32_t scaler[] = { LL_SPI_BAUDRATEPRESCALER_DIV2, LL_SPI_BAUDRATEPRESCALER_DIV4, LL_SPI_BAUDRATEPRESCALER_DIV8, LL_SPI_BAUDRATEPRESCALER_DIV16, LL_SPI_BAUDRATEPRESCALER_DIV32, LL_SPI_BAUDRATEPRESCALER_DIV64, LL_SPI_BAUDRATEPRESCALER_DIV128, LL_SPI_BAUDRATEPRESCALER_DIV256 }; SPI_TypeDef *spi = cfg->spi; u32_t clock; int br; if (spi_context_configured(&data->ctx, config)) { /* Nothing to do */ return 0; } if (SPI_WORD_SIZE_GET(config->operation) != 8) { return -ENOTSUP; } clock_control_get_rate(device_get_binding(STM32_CLOCK_CONTROL_NAME), (clock_control_subsys_t) &cfg->pclken, &clock); for (br = 1 ; br <= ARRAY_SIZE(scaler) ; ++br) { u32_t clk = clock >> br; if (clk < config->frequency) { break; } } if (br > ARRAY_SIZE(scaler)) { SYS_LOG_ERR("Unsupported frequency %uHz, max %uHz, min %uHz", config->frequency, clock >> 1, clock >> ARRAY_SIZE(scaler)); return -EINVAL; }
void initTempSensor(void) { unsigned char configData; /* ** configures temperature sensor to 12bit resolution ** active low polarity of alert pin ,generate the 1 consecutive fault, ** compare mode of operation. */ configData = CONFIG_DATA(3, 0, 1, 0, 0,0); /* ** Configure pointer register to select configuration ** register */ ptrReg = 1; ConfigureTempSensor(configData, ptrReg); }