手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

HAL库怎么使用SPI通信

时间:2024-10-11 22:38:54

1、第一步:新建或者打开一个HAL工程,在Pinout页右侧的“Configuration ->Peripherals”下找到需要使用的SPI外设,选择“Mode”右侧的下拉框,Full-Duplex Master为主机全双工通信。Hardware NSS Signal为使能端口硬件控制选择,建议Disable,使用软件控制使能端口。 选择完毕后会在右侧的引脚图中显示出端口配置。

HAL库怎么使用SPI通信
HAL库怎么使用SPI通信

2、第二步:因为这里没有使用硬件使能控制,所以还需要配置一个使能端口,这里就使用SPI的NSS端口进行配置,在右侧的引脚图中找到这个端口比如PA4,然后选择“GPIO_Output”。

HAL库怎么使用SPI通信
HAL库怎么使用SPI通信

3、使能端口配置完毕后再左侧的SPI配置中会显示一个突出的红色,这个是提示用户硬件SPI的使能端口被占用了,可以不予理会。

HAL库怎么使用SPI通信

4、第三步:切换到“Clock Configuration”页,配置好外设时钟。

HAL库怎么使用SPI通信

5、第四步:切换到“Configuration”页,找到对应的“SPI”。

HAL库怎么使用SPI通信

6、第五步:软件弹出“SPIx Configuration”对话框(x为SPI编号,这里使用了SPI1),切换到“Parameter Settings”,在Basic Parameters选择SPI数据每次传输的bit数和传输的顺序,其中Data Size就是bit数,这里选择8 Bits,“First Bit”就是开始传输的bit位置,MSB First为高位先传。 “Clock Parameters”的“Prescaler”为分频数,它决定了SPI的波特率,根据需求选择,但不能超过SPI的最大速率。Clock Polarity为时钟极性,即数据不传输时的时钟是高电平还是低电平。Clock Phase为数据采集的相位,1 Edge即第一个跳变采集。 Advanced Parameters可以选择CRC校验和使能端口控制方式,这里禁止CRC校验,NSS控制前面已经选择了非硬件方式,可以不再理会。

HAL库怎么使用SPI通信

7、第六步:继续切换到“GPIO Settings”,这里可以配置SPI各端口的模式,由于前面已经配置了SPI,一般只需要考虑MISO是否开启上拉,以及MOSI和CLK端口的通信速率。 配置完毕后不要忘记点击“OK”确认配置。

HAL库怎么使用SPI通信

8、第七步:通过“Project ->Generate Code”生成代码。

HAL库怎么使用SPI通信

9、第八步:使用Keil5打开工程,可以看到在软件初始化的代码中有MX_SPIx_Init(),注意如果软件中使用了FATFS那么需要自己手动把SPI的初始化放到FATFS的初始化前面。

HAL库怎么使用SPI通信

10、HAL库提供了HAL_SPI_Transmit函数用于发送,第一个参数是SPI对应的句柄,这个可以在SPI的初始化函数中找到相关变量名称,一般是hspix(其中x为具体的SPI序号),第二个参数是数据缓存,第三个是需要发送的数据个数,第四个是超时等待数单位视毫秒。下面的代码是向SPI1发送一个数据,超时等待1000毫秒。uint8_t d;HAL_SPI_Transmit(&hspi1, &d, 1, 1000);

HAL库怎么使用SPI通信

11、对于接收数据,可以使用HAL_SPI_Receive()函数,参数和HAL_SPI_Transmit类似,但个人建议使用HAL_SPI_TransmitReceive()函数,因为HAL_SPI_Receive只管收,而SPI通信不管是收还是发都会发送一次数据,这回导致在接收数据时发送一个不可知的数据造成通信异常。

HAL库怎么使用SPI通信
© 手抄报圈