第六章:STM32CUBEIDE工程下的SPI配置
简述
??本章主要是讲解了STM32的SPI外设使用。
1、芯片选型&创建工程
这里我选择的是STM32F103CC8T6芯片。 配置工程名点击finish
2、芯片工程配置
这里我们主要是在.ioc文件里面进行图形界面配置
1)配置系统外部晶振&仿真引脚配置
①在Pinout&Configuration下配置系统的时钟为外部输入时钟 ②在Clock Configuration下配置主频时钟为72兆如图
③配置仿真脚这里我们能配置的是JTAG脚(不配置无法仿真运行)
2)配置SPI1
这里我们配置的是SPI1 参数配置(Parameter Settings)如图 这里我们需要知道硬件SPI的基本配置,CPOL和CPHA。我们要根据通信的外部芯片来确定我们的这些配置,这里我们配置CPOL为LOW空闲电平为低电平,CPHA为1EDGE第一个跳变沿触发,软件配置片选脚选择可PB0作为我们SPI的片选脚。 配置生成的单独的.C.H文件 生成代码
3、调试&仿真
在main.c中添加代码如下
unsigned char tx_msg[100] = {0};
unsigned char rx_msg[100] = {0};
//SPI发送
HAL_SPI_Transmit(&hspi1,tx_msg,sizeof(tx_msg),0xffff);
//SPI接收
HAL_SPI_Receive(&hspi1,rx_msg,sizeof(rx_msg),0xffff);
//SPI收发一体
HAL_SPI_TransmitReceive(&hspi1,tx_msg,rx_msg,sizeof(tx_msg),0xffff);
这里有三个函数都是阻塞模式的。 SPI单独发送函数 HAL_SPI_Transmit(&hspi1,tx_msg,sizeof(tx_msg),0xffff); SPI单独接收函数 HAL_SPI_Receive(&hspi1,rx_msg,sizeof(rx_msg),0xffff); SPI收发一体函数 HAL_SPI_TransmitReceive(&hspi1,tx_msg,rx_msg,sizeof(tx_msg),0xffff); tx_msg为发送缓冲,rx_msg为接收缓冲,0xffff为超时时间
对于无回应的SPI外部从设备,我们用单独发送函数即可。 对于有回应的SPI外部从设备,我们使用SPI收发一体函数比较合适,视情况而定。 一定要看好外部从设备的数据手册,CPOL,CPHA,等配置不对是无法通信的。
点击调试配置仿真器 这里我们配置的是JLINK JTAG模式 然后就可以仿真 运行了
4、总结
这样SPI配置就完成了!~~~ 如有什么不懂联系加QQ群:1063618791
|