spi_parameter_struct spi_init_struct;
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_SPI2);
/* SPI5_CLK(PB3), SPI5_MISO(PB4), SPI5_MOSI(PB5), SPI5_IO2(PC9) and SPI5_IO3(PC10) GPIO pin configuration */
gpio_af_set(GPIOC, GPIO_AF_5, GPIO_PIN_10 | GPIO_PIN_9);
gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10 | GPIO_PIN_9);
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, GPIO_PIN_10 | GPIO_PIN_9);
gpio_af_set(GPIOB, GPIO_AF_5, GPIO_PIN_3 | GPIO_PIN_4| GPIO_PIN_5);
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3 | GPIO_PIN_4| GPIO_PIN_5);
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_25MHZ, GPIO_PIN_3 | GPIO_PIN_4| GPIO_PIN_5);
/* SPI5_CS(PC11) GPIO pin configuration */
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_11);
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
SPI_FLASH_CS_HIGH();
/* SPI5 parameter config */
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;//SPI在全双工通讯中接收/发送数据
spi_init_struct.device_mode = SPI_MASTER;//SPI为主机模式且SWNSS=1
spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;//SPI使用8位数据帧格式
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;//在SPI为空闲状态时,CLK引脚拉低,且"在第1个时钟跳变沿时开始采集第1位数据"
spi_init_struct.nss = SPI_NSS_SOFT;//使用NSS软件模式:NSS电平取决于SWNSS位;
spi_init_struct.prescale = SPI_PSC_32; //SPI预分频
spi_init_struct.endian = SPI_ENDIAN_MSB;//先发送高位
spi_init(SPI2, &spi_init_struct);
/* quad wire SPI_IO2 and SPI_IO3 pin output enable */
spi_quad_io23_output_enable(SPI2);
/* enable SPI5 */
spi_enable(SPI2);
|