Thread 中讨论的其他器件:SysConfig
如果我将最小 DMA 字节设置为非常高的值、我已经能够成功地使用 SPI 传输数据、但是当我将最小 DMA 传输大小设置为如图所示的较小值时、我会在 运行时继续运行到 dmaErrorFxn 中。
我当前的 SPI 配置如下所示:

我希望在调试这方面有一些帮助。
谢谢!
Vasav
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.
Vasav、您好!
如果您将最小 DMA 传输大小保持为更高的值、是否遇到任何错误?
SPI 驱动程序已经过默认 DMA 设置的测试、如果将其更改为更小、则会导致 DMA 的使用量增加、如果您执行许多小传输、效率也会降低。 也就是说、您所显示的10个字节应该可以使用而不会出现错误。
如果您使用相同的设置但运行一个简单的测试应用程序、如 spimaster 演示、您是否仍然遇到这些 DMA 错误?
此致、
Michael
您好、Michael、
根据您的建议、我尝试了一些事情。 首先、我创建了一个程序、使用电路板所需的引脚配置来测试 SPI 输出(它基本上与 spimasterdemo 相同、只不过它简化为仅执行 TX)。 在此程序中、我将通过 SPI 发送100个字节、并使用逻辑分析仪观察输出。 当我将 minDMATransfer 设置为1000字节时、我可以看到所有数据都在发送。 如中的第一张图片所示。 
然后我尝试将 minDMATransfer 更改为10、我注意到它卡在 FreeRTOS 函数中。 我还注意到一些字节已经传输、但并非全部。 这是我在逻辑分析仪上注意到的情况的图像。
您可以看到、仅发送33个字节、之后它卡在 FreeRTOS 中。
我还临时将硬件配置从仅主器件 Tx 更改为全双工、并将3线更改为4引脚 SS 且低电平有效。 使用此配置、我能够使代码与 DMA 一起运行。 总之、我不确定接下来要尝试什么或可能导致此问题的原因。
感谢你的帮助!
Vasav
Vasav、您好!
感谢您提供 SysConfig SPI 设置的屏幕截图。
我还有几个更明确的问题:
1.执行半双工测试时,使用的传输计数是多少? 具体而言、当.count >最小 DMA 传输大小时、是否总是会出现此问题? 请记住、计数和最小 DMA 传输大小均以 SPI 字为单位(因此、如果每个字运行8个字节、则为8个字节、等等)
2.当您运行半双工 SPI 并尝试执行传输时,是否将 rxbuf 保留为 NULL,或者您是否仍然为 SPI_Transfer()函数提供缓冲区?
3.问题是在第一个 SPI_Transfer()上发生,还是仅在第二个+ SPI 传输上发生。
可能会发生的情况是、如果 SPI 处于半双工模式、DMA 传输设置不会与 SPI 外设正确交互。 具体而言、它会尝试从未被填满的 FIFO 中提取数据。 如果您修改 SPI 驱动程序以禁用已禁用 TX 或 RX 的 DMA 设置、会发生什么情况? 我已连接一个修改后的驱动程序、尝试这样做、请尝试一下-很遗憾、我没有带宽来完全测试这个想法、因此感谢您在这里提供帮助。
e2e.ti.com/.../3312.SPICC32XXDMA.c
此致、
Michael
您好、Michael、
感谢您将此代码发送给我。
1) 1)是的、我使用小于传输计数的值尝试了它、它只是停留在传输过程中。 这意味着您发送的代码中第735行上的信标永远不会被发布。
2) 2) 我将 rxBuff 保留为 NULL。
3) 3)使用新代码、发送问题代码的代码不再进入 dmaErrorFxn、但第735行上的信号量永远不会被触发。
此外、使用新代码、我只能看到33个字节被传输。 这是逻辑分析仪的图片:

对于 SDK 的未来版本、您可以在 SPItransfer 中包含超时功能、因为您似乎已经内置了 transferTimeout 功能。
我仍然坚持这一点、因此感谢您的任何帮助。
谢谢!
Vasav
Vasav、您好!
应已在 SPI 驱动程序中实现超时功能。 在您设置为 open 的 SPI_Params 中、应提供设置 thre transferTimeout 的选项。 这是在一个阻断 SPI 传输期间连接到信号量的超时。 如果您设置 SPI_Params.transferTimeout、信标是否会按预期超时?
此外、使用新的驱动程序、您是否曾使用过 spiHwiFxn? 也许 DMA 传输会过早停止、您能否在调试模式下运行测试程序、并在传输完成之前查看您是否正在进入 spiHwiFxn?
此致、
Michael
你好 Ben!
谢谢、但我最终创建了一个新帖子、由其他人处理。 以下是其他阅读此内容的人的链接: e2e.ti.com/.../3794313
Vasav