This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BEAGLEBK:SPI 接收问题

Guru**** 2614265 points
Other Parts Discussed in Thread: AM3358

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/658795/beaglebk-spi-receive-issue

器件型号:BEAGLEBK

我正在使用 AM3358 - PRU1来设置 SPI1、数据从 D1 (MOSI)传出并出现在 D0 (MISO)上、但我从 RX0读取的所有数据都是0。 我看过了 bwilcut 和其他一些非常相似的线程、但它们似乎没有得到答案。 我将在 Win10上使用 CCS7.4.0.00015以及 XDS110调试探针。

SPI1每125us 发送8个字 x 32位。 它如下所示:

SPI 解码器按如下方式对其进行解码、这正是我所期望的。

引脚多路复用器在器件树中设置。 引脚100-103为 SCLK、D0、D1和 CS。 D0为 MISO、D1为 MOSI。 我想在44e10998时只需要0x0B、但我正在尝试使其正常工作。 AFAIK 没有为 SPI 加载 Linux 驱动程序。

 CAT /sys/kernel/debug/pinctrl/44e10800.pinmux/pins

引脚100 (PIN100) 44e10990 0000000b 引脚控制-单路
引脚101 (PIN101) 44e10994 0000002b pinctrl-single
引脚102 (PIN102) 44e10998 0000002b pinctrl-single
引脚103 (PIN103) 44e1099c 0000000b pinctrl-single

在运行下面的代码几秒钟后、然后暂停调试器、结果如下所示。 代码初始化 IEP (用于125us 计时生成)和 SPI1 (用于数据传输)。 然后、它会在循环中等待 IEP 的时序比较。 8个字被写入 SPI Tx、8个字被发回。 读取 RX0之前和之后的标志状态以及 RX0值被保存。 定期提取 SPI 寄存器(dbg_SPI1__*)以进行调试报告。 请注意、rxBuf 结果全部为0。

e2e.ti.com/.../6740.main.c

谢谢、

Steve。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的 SPI 时钟被引脚多路复用为仅输出。 它必须是:

    引脚100 (PIN100) 44e10990 0000002b pinctrl-single

    请参阅 AM335x TRM 修订版 P 中表24-4下方的注释1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常好。 非常感谢您的及时和目标响应。
    我认为这值得纳入 PRU-ICSS 常见问题解答。 虽然不是特定于 PRU、但出现这种情况的原因是、正如另一个线程中提到的、TI 通常希望通过 Linux 来处理 SPI、因此没有 PRU-SPI 示例。 如果您错过了该脚注、您就会感到非常吐司。 我不是第一次跳过这个环回输入。 还有其他人喜欢吗? 当然、任何搜索此特定问题的人现在都将找到此主题以及答案、因此它可能并不重要。 再次感谢。