CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Source/ciu32l051_std_spi.c

118 lines
2.7 KiB
C

/************************************************************************************************/
/**
* @file ciu32l051_std_spi.c
* @author MCU Ecosystem Development Team
* @brief SPI STD库驱动。
* 实现SPI初始化等API。
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @addtogroup SPI
* @{
*
*/
/************************************************************************************************/
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std.h"
#ifdef STD_SPI_PERIPHERAL_USED
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @addtogroup SPI_External_Functions
* @{
*
*/
/************************************************************************************************/
/**
* @brief SPI初始化
* @param spix SPI外设
* @param spi_init_param SPI初始化结构体
* @retval 无
*/
void std_spi_init(SPI_t *spix, std_spi_init_t *spi_init_param)
{
/* 配置SPI通信速率 */
std_spi_set_baud_rate(spix,spi_init_param->baud_rate_prescaler);
/* 配置SPI时钟极性 */
std_spi_set_polarity(spix,spi_init_param->clk_polarity);
/* 配置SPI相位 */
std_spi_set_phase(spix,spi_init_param->clk_phase);
/* 配置SPI模式 */
std_spi_set_mode(spix,spi_init_param->mode);
}
/**
* @brief SPI去初始化
* @param spix SPI外设
* @retval 无
*/
void std_spi_deinit(SPI_t *spix)
{
std_spi_disable(spix);
if(spix == SPI1)
{
std_rcc_apb2_reset(RCC_PERIPH_RESET_SPI1);
std_rcc_apb2_clk_disable(RCC_PERIPH_CLK_SPI1);
}
else if (spix == SPI2)
{
std_rcc_apb1_reset(RCC_PERIPH_RESET_SPI2);
std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_SPI2);
}
else
{
/* 无操作 */
}
}
/**
* @brief SPI结构体初始化
* @param spi_init_struct SPI初始化结构体
* @retval 无
*/
void std_spi_struct_init(std_spi_init_t *spi_init_struct)
{
spi_init_struct->mode = SPI_MODE_MASTER;
spi_init_struct->baud_rate_prescaler = SPI_BAUDRATEPRESCALER_128;
spi_init_struct->clk_polarity = SPI_POLARITY_LOW;
spi_init_struct->clk_phase = SPI_PHASE_1EDGE;
}
/**
* @}
*/
#endif /* STD_SPI_PERIPHERAL_USED */
/**
* @}
*/
/**
* @}
*/