#define FLASH_CS_RCU RCU_GPIOB
#define FLASH_CS_PORT GPIOB
#define FLASH_CS_PIN GPIO_PIN_12
#define FLASH_IO_RCU RCU_GPIOB
#define FLASH_IO_PORT GPIOB
#define FLASH_IO_PIN GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15
#define FLASH_SPI_RCU RCU_SPI1
#define FLASH_SPI SPI1
#define SPI_FLASH_PER SPI1
void spi_CfgInit(void)
{
spi_parameter_struct spi_init_struct;
spi_i2s_deinit(FLASH_SPI);
//rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_SPI1);
// SPI2 GPIO config
gpio_af_set(SPI1_MISO_PORT, GPIO_AF_5, SPI1_MISO_PIN);
gpio_af_set(SPI1_MOSI_PORT, GPIO_AF_5, SPI1_MOSI_PIN);
gpio_af_set(SPI1_SCK_PORT, GPIO_AF_5, SPI1_SCK_PIN);
//模式
gpio_mode_set(SPI1_MISO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, SPI1_MISO_PIN);
gpio_mode_set(SPI1_MOSI_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, SPI1_MOSI_PIN);
gpio_mode_set(SPI1_SCK_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, SPI1_SCK_PIN);
//MISO输入
gpio_output_options_set(SPI1_MISO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,SPI1_MISO_PIN);
// MOSI输出
gpio_output_options_set(SPI1_MOSI_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,SPI1_MOSI_PIN);
// SCK
gpio_output_options_set(SPI1_SCK_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,SPI1_SCK_PIN);
// NSS
gpio_mode_set(SPI1_FLASH_NSS_PORT,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,SPI1_FLASH_NSS_PIN);
gpio_output_options_set(SPI1_FLASH_NSS_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, SPI1_FLASH_NSS_PIN);
//拉高
gpio_bit_set(SPI1_FLASH_NSS_PORT,SPI1_FLASH_NSS_PIN);
spi_init(FLASH_SPI, &spi_init_struct);
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;// 传输模式全双工
spi_init_struct.device_mode = SPI_MASTER; // 配置为主机
spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT; // 8位数据
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE; // 极性低,相位1
spi_init_struct.nss = SPI_NSS_SOFT; // 软件cs
spi_init_struct.prescale = SPI_PSC_32; // 4分频
spi_init_struct.endian = SPI_ENDIAN_MSB; // 高位在前
spi_init(FLASH_SPI, &spi_init_struct);
/* enable SPI1 */
spi_enable(FLASH_SPI);
/* enable SPI1 */
//
}
|