三、重要参数 (1)主从模式:主要配置单片机为从机还是主机 (2)单双工通信:选择单工通信或者双工通信 (3)NSS软件还是硬件:选择软件NSS引脚将寄存器配置 (4)传输数据格式:8bit或者16bit (5)CPOL:选择时钟的空闲模式是低电平或者高电平 (6)CPHA:选择数据采样时钟边沿第一个或者第二个 (7)波特率:数据传输速度 (8)MSB/LSB:选择数据传送方向高位开始还是低位开始 (9)SPI设备使能:启动SPI设备 (10)TXE/RXNE:发送和接收数据状态标志位,判断数据是否发送/接收完成。 在使用库函数配置spi时可以跟踪到SPI_InitTypeDef这个结构体定义去查看里面的参数定义代码如下,每个参数都有注释。代码如下: typedef struct
{
uint16_t SPI_Direction; /*!< Specifies the SPI unidirectional or bidirectional data mode.
This parameter can be a value of [url=home.php?mod=space&uid=144993]@ref[/url] SPI_data_direction */
uint16_t SPI_Mode; /*!< Specifies the SPI operating mode.
This parameter can be a value of @ref SPI_mode */
uint16_t SPI_DataSize; /*!< Specifies the SPI data size.
This parameter can be a value of @ref SPI_data_size */
uint16_t SPI_CPOL; /*!< Specifies the serial clock steady state.
This parameter can be a value of @ref SPI_Clock_Polarity */
uint16_t SPI_CPHA; /*!< Specifies the clock active edge for the bit capture.
This parameter can be a value of @ref SPI_Clock_Phase */
uint16_t SPI_NSS; /*!< Specifies whether the NSS signal is managed by
hardware (NSS pin) or by software using the SSI bit.
This parameter can be a value of @ref SPI_Slave_Select_management */
uint16_t SPI_BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
used to configure the transmit and receive SCK clock.
This parameter can be a value of @ref SPI_BaudRate_Prescaler.
[url=home.php?mod=space&uid=536309]@NOTE[/url] The communication clock is derived from the master
clock. The slave clock does not need to be set. */
uint16_t SPI_FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
This parameter can be a value of @ref SPI_MSB_LSB_transmission */
uint16_t SPI_CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation. */
}SPI_InitTypeDef;
参数设置完成后调用SPI_Init函数进行初始化,把设置好的参数写到对应的寄存器中。也可一通过配置寄存器的值直接配置相关参数而不通过库函数进行配置。通过查询STM32参考手册,可以发现相关寄存器,和相关参数值对应的功能。
|