SPI协议
一、定义SPI 是一个同步的数据总线也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。边沿触发总线接口 ( 引脚 ) SCK 、 MOSI 、 MISO 、 CSCS信号线进行从机的选择遵循一主多从或者一主一从的结构数据帧长度 8bit 或 1 6bit数据传输的格式 MSB 或 LSBMSB表示先发送最高位LSB表示发送最低位工作过程通信总是由主机发起主机通过MOSI引脚给从机发数据从机同时通过MISO引脚给主机发送数据由同一个时钟进行的同步全双工也可以半双工和单工二、通信协议SPI控制器挂在APB2总线上的通信过程主机先将NSS信号拉低这样保证开始接收数据当接收端检测到时钟的边沿信号时它将立即读取数据线上的信号这样就得到了一位数据1 bit由于时钟是随数据一起发送的因此指定数据的传输速度并不重要尽管设备将具有可以运行的最高速度。主机发送到从机主机产生相应的时钟信号然后数据一位一位地从MOSI信号线上进行发送到从机主机接收从机数据如果从机需要将数据发送回主机则主机将继续生成预定数量的时钟信号并且从机会将数据通过MISO信号线发送时钟极性除了配置串行时钟速率频率外SPI主设备还需要配置时钟极性。时钟极性通常写为CKP或CPOL。时钟极性和相位共同决定读取数据的方式比如信号上升沿读取数据还是信号下降沿读取数据CKP 0时钟空闲 IDLE 为低电平 0上升沿触发CKP 1时钟空闲 IDLE 为高电平 1下降沿触发时钟相位除配置串行时钟速率和极性外SPI主设备还应配置时钟相位或边沿。时钟相位通常写为CKE或CPHA时钟相位/边沿也就是采集数据时是在时钟信号的具体相位或者边沿CKE 0在时钟信号SCK的第一个跳变沿采样CKE 1在时钟信号SCK的第二个跳变沿采样三、硬件实现在单片机上选PA4到7引脚配置STM32 手册规定 SPI 最大速率是18 MHz四、实现结果