20 unsigned short buffer;
21 while (RESET == spi_i2s_flag_get(SPI0, SPI_FLAG_TBE));
24 spi_i2s_data_transmit(SPI0, data);
25 while (RESET == spi_i2s_flag_get(SPI0, SPI_FLAG_RBNE));
28 buffer = spi_i2s_data_receive(SPI0);
36 spi_parameter_struct spi_init_struct;
39 rcu_periph_clock_enable(RCU_GPIOA);
40 rcu_periph_clock_enable(RCU_SPI0);
43 gpio_af_set(GPIOA, GPIO_AF_0, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
44 gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
45 gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
48 gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_4);
49 gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
52 gpio_bit_set(GPIOA, GPIO_PIN_4);
55 spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
56 spi_init_struct.device_mode = SPI_MASTER;
57 spi_init_struct.frame_size = SPI_FRAMESIZE_16BIT;
58 spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE;
59 spi_init_struct.nss = SPI_NSS_SOFT;
61 spi_init_struct.endian = SPI_ENDIAN_MSB;
63 spi_init(SPI0, &spi_init_struct);
used to place important parameter configurations for users
#define SPI_PRESCALE
set SPI frequency to 72 / 16 = 4.5MHz
void spi_config(void)
configure spi0 periph and its gpios
unsigned short spi_readwrite_halfworld(unsigned short data)
spi0 transmit data for sc60228
this is the header file of spi.c.