stm32 spi全双工从机模式

Posted

技术标签:

【中文标题】stm32 spi全双工从机模式【英文标题】:stm32 spi full-duplex slave mode 【发布时间】:2019-12-08 18:03:20 【问题描述】:

我正在研究 stm32f0308-discovery 和 jetson tx2 之间的 spi 通信。 Jetson 是主人,stm32 应该是奴隶。 (我知道怎么做,但如果可能的话 stm32 也可能是主人。)我的问题是我是 stm32 的新手,我不知道如何让 stm32 成为奴隶。有人可以告诉我 stm32 spi slave 的方法吗?提前致谢。

【问题讨论】:

【参考方案1】:

您可以先阅读产品系列的参考手册。然后,您可以在 STM32Cube 软件包中找到 SPI 外设配置源代码示例。

如果您是 STM32 新手和微控制器生态系统的新手,恐怕您需要接受一些培训。但是网上有很多资源。

【讨论】:

谢谢!我只使用 2 个设备,它们是主设备和从设备,并且 NSS 也已激活。我想知道是否有必要,因为当我尝试从 stm32(从设备)读取数据时,必须有中断才能使用读取数据功能。我应该使用 NSS 中断还是有什么办法?【参考方案2】:

您可以在配置 SPI_InitTypeDef 结构时选择 SPI 模式。您需要将 SPI_Mode 设置为 Slave,如下所示:

SPI_InitDef.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitDef.SPI_Mode = SPI_Mode_Slave;       // <-- This is it
SPI_InitDef.SPI_DataSize = SPI_DataSize_8b;  // 8-bit transactions
SPI_InitDef.SPI_FirstBit = SPI_FirstBit_MSB; // set it to match Master conf
SPI_InitDef.SPI_CPOL = SPI_CPOL_Low;         // set it to match Master conf
SPI_InitDef.SPI_CPHA = SPI_CPHA_2Edge;       // set it to match Master conf
SPI_InitDef.SPI_NSS = SPI_NSS_Hard;          // use hardware SS

可以找到使用蓝色药丸板的示例教程here

【讨论】:

以上是关于stm32 spi全双工从机模式的主要内容,如果未能解决你的问题,请参考以下文章

带有 STM32F7 的 SPI 从模式和循环 DMA

FPGA作为从机与STM32进行SPI协议通信---Verilog实现

SPI怎么区分主从? 两个设备之间通过SPI连接,根据啥来定义主从?

2个stm32怎么用spi通信

SPI通信四大模式

stm32串口通讯是检测边沿还是电平