DSP

SPI调试小结两芯片中断模式通信

2019-07-13 19:43发布

         SPI分为主机和从机,一般用4根线,MOSI , MISO, CLK, CS 。主机一般有3根线是固定的MOSI , MISO, CLK,CS引脚可以用任意的引脚去定义。 主机提供CLK,辅机被动的接受CLK。 接线方式是MOSI , MISO, CLK, CS对应MOSI , MISO, CLK, CS,它们是一一对应的。      调试SPI有很多的方法,可以在官网上下载库,如果是STM32也可以用cube进行库的生成。 如果是好用的库一般可以进行发送数据,调试的关键是参数的设置。 主机的参数配置: SpiHandle.Instance               = SPIx;   //   SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  SpiHandle.Init.Direction         = SPI_DIRECTION_2LINES;
  SpiHandle.Init.CLKPhase          = SPI_PHASE_2EDGE;//SPI_PHASE_1EDGE¸ÄΪSPI_PHASE_2EDGE  可以单线通信可以进行双向同时通信
  SpiHandle.Init.CLKPolarity       = SPI_POLARITY_LOW;
  SpiHandle.Init.CRCCalculation    = SPI_CRCCALCULATION_DISABLE;
  SpiHandle.Init.CRCPolynomial     = 7;
  SpiHandle.Init.DataSize          = SPI_DATASIZE_8BIT; //一个中断发送的字节数   选择16可能回出现自己的倒序问题
  SpiHandle.Init.FirstBit          = SPI_FIRSTBIT_MSB;  //主机和从机要一致
  SpiHandle.Init.NSS               = SPI_NSS_SOFT;
  SpiHandle.Init.TIMode            = SPI_TIMODE_DISABLE;//
  SpiHandle.Init.NSSPMode          = SPI_NSS_PULSE_DISABLE;
  SpiHandle.Init.CRCLength         = SPI_CRC_LENGTH_16BIT;
  SpiHandle.Init.Mode = SPI_MODE_MASTER;     从机的配置: spi_slave_config.pin_miso         = SPIS_MISO_PIN;
    spi_slave_config.pin_mosi         = SPIS_MOSI_PIN;
    spi_slave_config.pin_sck          = SPIS_SCK_PIN;
    spi_slave_config.pin_csn          = SPIS_CSN_PIN;
    spi_slave_config.mode             = SPI_MODE_1;     //模式的选择会影响数据的接受,不满足模式就会出现接受数据的乱码       
    spi_slave_config.bit_order        = SPIM_MSB_FIRST;           
    spi_slave_config.def_tx_character = DEF_CHARACTER;     
    spi_slave_config.orc_tx_character = ORC_CHARACTER;