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;