#ifndef SN_SPI_H #define SN_SPI_H #include "ciu32f003_std.h" #define SPI_MOSI_PA0 1U #define SPI_MOSI_PA7 2U #define SPI_MOSI_PB7 3U #define SPI_MISO_PA1 1U #define SPI_MISO_PB6 2U #define SPI_MISO_PC1 3U #define SPI_SCK_PA6 1U #define SPI_SCK_PB0 2U #define SPI_SCK_PB2 3U #define SPI_NSS_NULL 1U #define SPI_NSS_PA6 2U #define SPI_NSS_PB1 3U #define SPI_NSS_PB5 4U #define SPI_SOF_CS_PA0 1U #define SPI_SOF_CS_PA1 2U #define SPI_SOF_CS_PA2 3U #define SPI_SOF_CS_PA3 4U #define SPI_SOF_CS_PA4 5U #define SPI_SOF_CS_PA5 6U #define SPI_SOF_CS_PA6 7U #define SPI_SOF_CS_PA7 8U #define SPI_SOF_CS_PB0 9U #define SPI_SOF_CS_PB1 10U #define SPI_SOF_CS_PB2 11U #define SPI_SOF_CS_PB3 12U #define SPI_SOF_CS_PB4 13U #define SPI_SOF_CS_PB5 14U #define SPI_SOF_CS_PB6 15U #define SPI_SOF_CS_PB7 16U #define SPI_SOF_CS_PC0 17U #define SPI_SOF_CS_PC1 18U // SPI 模式 CPOL CPHA 说明 // 模式 0 0 0 时钟空闲为低电平,在时钟第一个边沿进行数据采样,即数据在时钟的上升沿采样,下降沿变化。 // 模式 1 0 1 时钟空闲为低电平,在时钟第二个边沿进行数据采样,即数据在时钟的下降沿采样,上升沿变化。 // 模式 2 1 0 时钟空闲为高电平,在时钟第一个边沿进行数据采样,即数据在时钟的下降沿采样,上升沿变化。 // 模式 3 1 1 时钟空闲为高电平,在时钟第二个边沿进行数据采样,即数据在时钟的上升沿采样,下降沿变化。 #define SPI_MODE_0 0U #define SPI_MODE_1 1U #define SPI_MODE_2 2U #define SPI_MODE_3 3U #define SPI_MSB SPI_FIRSTBIT_MSB #define SPI_LSB SPI_FIRSTBIT_LSB void SN_SPI_IO_set(uint8_t SPI_MOSI_x , uint8_t SPI_MISO_x , uint8_t SPI_SCK_x, uint8_t SPI_NSS_x ); //设置SPI的io void SN_SPI_MASTER_init(uint32_t SPI_DIV, uint8_t SPI_MODE_X , uint8_t SPI_MSB_OR_LSB ); //SPI外设设置并且启动 void SN_SPI_IO_SOF_cs(uint8_t SPI_SOF_CS_Px); //设置软件片选 void SN_SPI_TX_RX(uint8_t * send_data ,uint8_t * read_data ,uint16_t len); //SPI发送接收 void SN_SPI_TX(uint8_t * send_data ,uint16_t len); //SPI发送数据 void SN_SPI_RX(uint8_t * read_data ,uint16_t len); //SPI接收数据 #define SN_SPI_Deinit() {std_spi_deinit(); std_rcc_apb2_clk_disable(RCC_PERIPH_CLK_SPI1)} //SPI去初始化 #endif