#include "at32f403a_407.h" #include "ms5192t.h" #include "FreeRTOS.h" #include "task.h" #include "settings_api.h" #include "io_utils.h" #include "spi_common.h" #include #define ADC_SPI SPI4 #define ADC_CS_HIGH gpio_bits_set(GPIOE, GPIO_PINS_12) #define ADC_CS_LOW gpio_bits_reset(GPIOE, GPIO_PINS_12) // void adc_gpio_init(void) { #if 0 gpio_init_type gpio_initstructure; crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE); gpio_initstructure.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; gpio_initstructure.gpio_pull = GPIO_PULL_NONE; gpio_initstructure.gpio_mode = GPIO_MODE_OUTPUT; gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER; gpio_initstructure.gpio_pins = GPIO_PINS_11 | GPIO_PINS_12 | GPIO_PINS_13 | GPIO_PINS_14; gpio_init(GPIOE, &gpio_initstructure); #endif gpio_init_type gpio_initstructure; spi_init_type spi_init_struct; crm_periph_clock_enable(CRM_IOMUX_PERIPH_CLOCK, TRUE); crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE); gpio_pin_remap_config(SPI4_GMUX_0001, TRUE); // SCK gpio_initstructure.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; gpio_initstructure.gpio_pull = GPIO_PULL_DOWN; gpio_initstructure.gpio_mode = GPIO_MODE_MUX; gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER; gpio_initstructure.gpio_pins = GPIO_PINS_11; gpio_init(GPIOE, &gpio_initstructure); // MISO gpio_initstructure.gpio_pull = GPIO_PULL_UP; gpio_initstructure.gpio_mode = GPIO_MODE_INPUT; gpio_initstructure.gpio_pins = GPIO_PINS_13; gpio_init(GPIOE, &gpio_initstructure); // MOSI gpio_initstructure.gpio_pull = GPIO_PULL_UP; gpio_initstructure.gpio_mode = GPIO_MODE_MUX; gpio_initstructure.gpio_pins = GPIO_PINS_14; gpio_init(GPIOE, &gpio_initstructure); // CS gpio_initstructure.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; gpio_initstructure.gpio_pull = GPIO_PULL_UP; gpio_initstructure.gpio_mode = GPIO_MODE_OUTPUT; gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER; gpio_initstructure.gpio_pins = GPIO_PINS_12; gpio_init(GPIOE, &gpio_initstructure); ADC_CS_HIGH; crm_periph_clock_enable(CRM_SPI4_PERIPH_CLOCK, TRUE); spi_default_para_init(&spi_init_struct); spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX; spi_init_struct.master_slave_mode = SPI_MODE_MASTER; spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_32; //SPI_MCLK_DIV_2; spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB; spi_init_struct.frame_bit_num = SPI_FRAME_8BIT; spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_HIGH; spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE; spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE; spi_init(SPI4, &spi_init_struct); //spi_hardware_cs_output_enable(SPI3, TRUE); spi_enable(SPI4, TRUE); } // void adc_test(void) { /* gpio_bits_set(GPIOE, GPIO_PINS_11 | GPIO_PINS_12 | GPIO_PINS_13 | GPIO_PINS_14); vTaskDelay(100); gpio_bits_reset(GPIOE, GPIO_PINS_11 | GPIO_PINS_12 | GPIO_PINS_13 | GPIO_PINS_14); vTaskDelay(100); */ ADC_CS_LOW; common_spi_send(ADC_SPI, 0x03); ADC_CS_HIGH; vTaskDelay(100); }