コード例 #1
0
ファイル: spi_nrf.c プロジェクト: AntonLynnyk/Embedded
void SPI_Initialize()
{
    SPI_RCC_Configuration();
    SPI_GPIO_Configuration(SPI_Mode_Master);

    SPI_InitTypeDef   SPI_InitStructure;
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_Init(NRF_SPI, &SPI_InitStructure);
    SPI_Cmd(NRF_SPI, ENABLE);

    SPI_NSSInternalSoftwareConfig(NRF_SPI, SPI_NSSInternalSoft_Set);
}
コード例 #2
0
ファイル: spi_driver.c プロジェクト: Yinhezhang/xiaoche
/**
  * @brief  根据外部SPI设备配置SPI相关参数
  * @param  SPIx 需要使用的SPI
  * @retval None
  */
void SPI_Configuration(SPI_TypeDef* SPIx)
{
	SPI_InitTypeDef SPI_InitStruct;

	SPI_RCC_Configuration(SPIx,0);

	SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;   //波特率预分频值为32  Chain提示此处注意,通信时钟由主SPI的时钟分配而得,不需要设置从SPI的时钟
	SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex;    //双线双向全双工
	SPI_InitStruct.SPI_Mode = SPI_Mode_Master;    //主SPI设备
	SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;  //SPI数据大小	
	SPI_InitStruct.SPI_CPOL = SPI_CPOL_Low;   //时钟悬空低
	SPI_InitStruct.SPI_CPHA = SPI_CPHA_1Edge;   //数据捕获与第一个时钟沿
	SPI_InitStruct.SPI_NSS = SPI_NSS_Hard;   //NSS由外部管脚管理
	SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;   //数据传输从MSB开始
	SPI_InitStruct.SPI_CRCPolynomial = 7;   //定义用于CRC值计算的多项式
	SPI_Init(SPIx, &SPI_InitStruct);    //配置以上SPI的配置
	
	SPI_GPIO_Configuration(SPIx,0);

	SPI_SSOutputCmd(SPIx, ENABLE);   //使能指定的SPI SS输出
	SPI_Cmd(SPIx, ENABLE);   //使能SPI外设
}