如果我只能检查主板,我如何知道 SPI 是否正常工作?



我有一个STM32F429ZI Nucleo板(用于SPI主设备和UART检查一切正常(和一个
EVB-LAN9252-SPI板

我必须检查SPI是否正常工作,但似乎我无法在从属端调试或检查

下面显示的是我在STM32F429ZI Nucleo board上使用的test code,以检查SPI是否正常工作。SPI1和SPI4被配置在一个板中。

while (k < 32)
{
HAL_UART_Transmit(&huart4, &SPI1_Buffer_Tx[k], 1, 100);
k++;
}
k = 0;
while (k < 32)
{
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, GPIO_PIN_RESET); // this GPIO is connected to hardware NSS
HAL_SPI_Transmit(&hspi1, &SPI1_Buffer_Tx[k], 1, 100);
HAL_SPI_Receive(&hspi4, &SPI4_Buffer_Rx[k], 1, 100);
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, GPIO_PIN_SET);
k++;
}
k = 0;
while (k < 32)
{
HAL_UART_Transmit(&huart4, &SPI1_Buffer_Tx[k], 1, 100);
k++;
}
k = 0;
while (k < 32)
{
HAL_UART_Transmit(&huart4, &SPI4_Buffer_Rx[k], 1, 100);
k++;
}

在这种情况下,UART向我显示这样的答案

abcdefghijklmnopqrstuvwxyzABCDEF //what was originally in the transmit buffer
bcdefghijklmnopqrstuvwxyzABCDEF //what was received in the receive buffer

也许这是可能的,因为我可以在奴隶一侧阅读,使用这样的代码

HAL_SPI_Receive(&hspi4, &SPI4_Buffer_Rx[k], 1, 100);

现在回到最初的项目。

一开始,我假设从主机传输的数据应该以某种方式在从机中循环,并且传输回主机。因此,如果我从主机读取,我应该获得原始数据,但向后

所以这就是CCD_ 3。

while (k < 32)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi1, &SPI1_Buffer_Tx[k], 1, 100);
HAL_SPI_Receive(&hspi1, &SPI1_Buffer_Rx[k], 1, 100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
k++;
}

并且我从主机接收到的是32个CCD_ 4s。我不确定我哪里错了。

  1. 数据真的在从方循环吗?是我做错了什么吗
  2. 数据似乎传输正确,但从机没有被命令将任何数据传输回主机。这就是为什么我无法从大师那里接收到有意义的数据

2-1。如果是,我如何知道从设备已正确接收数据

2-2.我如何命令从将一些有意义的数据传输回主机?我只能在主板上调试我的代码。

感谢您的友好评论!

我花了整整一个月的时间才完成这项工作,我相信未来会有像我这样的新手,所以…

如在LAN9252数据表页面302/329和303/329中;0x0050";以接收";0x92520001";,以及";0x0064";以接收";0x87654321";。

你发送数据的方式有点微妙,这就是我一直失败的部分。我过去(现在(没有完全理解SPI通信的原理,你需要一个带多个探针的示波器(使用示波器后我只花了2天时间,因为在那之前我无法检查我在做什么(。

相关内容

  • 没有找到相关文章

最新更新