Bootstrap

SPI调试&&SPI基础知识&&SPI实际波形&&实际Demo

一、问题出现场景:

 原理可以参考链接:SPI协议详解(图文并茂+超详细) - 知乎 (zhihu.com)

1.SPI的引脚变动

二、程序内部移植注意

移植已有项目的SPI程序架构

以上引脚变动需要注意的点:

1.引脚使用的变动,比如从PA3变为PB4

2.SPI编号的变动,有的MCU可能会有三组SPI【SPI1 SPI2 SPI3】

3.SPI的时钟源是否变化,这个决定SPI 的时钟频率,正常频率设置应该为 总线/2

【原来SPI1 SPI_PSC_8】

    /* SPI2 parameter config */
    spi_init_struct.trans_mode           = SPI_TRANSMODE_FULLDUPLEX;
    spi_init_struct.device_mode          = SPI_MASTER;
    spi_init_struct.frame_size           = SPI_FRAMESIZE_8BIT;
    spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_1EDGE;
    spi_init_struct.nss                  = SPI_NSS_SOFT;
    spi_init_struct.prescale             = SPI_PSC_16 ;
    spi_init_struct.endian               = SPI_ENDIAN_MSB;
    spi_init(SPI2, &spi_init_struct);

4.引脚变动时需要查看芯片手册,确认变动的引脚是否是特殊引脚

PA15为特殊引脚需要做重映射

void gpio_config(void) 
{ /* GPIO output */ 
  gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP,ENABLE); 
  gpio_pin_remap_config(GPIO_SPI2_REMAP, ENABLE); 
}

三、波形分析问题点

波形分析思路

1.CS引脚是否可以顺利的拉高拉低

2.主机发送数据时波形是否正确

3.从机发送数据时波形是否正确

  • 连接SPI的引脚到示波器对应的通道
  • 使用示波器抓捕波形
  • 进入程序进行DEG

实际波形可以参考下图:

参考链接:SPI协议详解(图文并茂+超详细) - 知乎 (zhihu.com)

【SPI有四种模式,由极性和相序决定】


四、出现该问题的反思

1.对于芯片底层配置不熟悉

主要时芯片手册的了解和引脚配置的知识存在盲区

很多引脚配置最好参考原厂配置,【这里上传了GD的资料】

2.对于SPI出现问题解决思路不清晰

检查引脚配置

检查时钟源

检查波形

3.对于时钟的概念和意义未深刻理解

【待补充,这里就总结一下SPI调试过程中的收获】

;