首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何知道SPI是否正确工作,如果我只能在主板上检查?

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

Stack Overflow用户
提问于 2022-09-02 07:15:06
回答 1查看 107关注 0票数 1

我有一个STM32F429ZI核心板(用于SPI主板和UART来检查一切正常工作)和一个EVB-LAN9252-SPI板(用于SPI从站)。

我必须检查SPI是否正确地工作,但似乎无法调试或检查从服务器端的

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

代码语言:javascript
复制
  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向我展示了这样的答案。

代码语言:javascript
复制
abcdefghijklmnopqrstuvwxyzABCDEF //what was originally in the transmit buffer
 bcdefghijklmnopqrstuvwxyzABCDEF //what was received in the receive buffer

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

代码语言:javascript
复制
HAL_SPI_Receive(&hspi4, &SPI4_Buffer_Rx[k], 1, 100);

现在回到原来的项目。

首先,我假设从主程序传送的数据应该在从中循环,以某种方式传输回主__,所以如果我从主程序读取数据,那么应该得到原始数据,但以倒向方式。

这就是code

代码语言:javascript
复制
  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 0xFF,我不知道我错在哪里。

  1. 的数据真的在奴隶方中流通吗?难道只有我做错了什么吗?
  2. --数据似乎被正确地传输了,但是奴隶并没有被命令将任何东西传输回主。这就是为什么我无法从主.

接收有意义的数据。

2-1。如果是这样的话,我如何知道从站正确地接收了数据?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 06:02:51

谢谢您的好意!

我花了整整一个月才完成这项工作,我相信将来会有像我这样的新手,所以..。

与LAN9252数据表第302/329和303/329页一样,您可以发送"0x0050“以接收"0x92520001",并发送"0x0064”以接收"0x87654321“。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73579053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档