主题中讨论的其他器件:TMS570LC4357、
您好!
我们正在研究一个包含 SPI 接口的项目。 经过几天的时间、我们阅读 TM570LS3137的 TRM、我们注意到 TMS570 mibspi 接口、然后我们开始使用该接口。 实际上 mibspi 作为回路工作正常、但当我们想要作为正常接口使用后、我们无法成功。 我们还跟踪了 CS 引脚、该引脚在运行时始终为高电平。 问题是什么?
此致、
古坎
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.
您好!
我们正在研究一个包含 SPI 接口的项目。 经过几天的时间、我们阅读 TM570LS3137的 TRM、我们注意到 TMS570 mibspi 接口、然后我们开始使用该接口。 实际上 mibspi 作为回路工作正常、但当我们想要作为正常接口使用后、我们无法成功。 我们还跟踪了 CS 引脚、该引脚在运行时始终为高电平。 问题是什么?
此致、
古坎
尊敬的 Furkan:
首先、我建议您参考以下常见问题解答:
其中、请参阅以下重点介绍的 mibSPI 示例并尝试自行解决该问题。

如果这无法帮助解决问题、请附上您的代码、我将在最后对其进行调试。
--
谢谢。此致、
Jagadish。
尊敬的 Furkan:
在我们发送此缓冲区后,接收到的缓冲区仅由第一个发送缓冲区索引响应填充。 [/报价]您的意思是、如果您发送4个字符、那么您只接收1个字符?
您能分享您的代码吗?
--
谢谢。此致、
Jagadish。
否,如果我给出有关此主题的示例,将类似于:当我发送{0x0030、0x001、32、0x0033}时,这些消息响应将类似于{0x0002、0x00020x00020x0002}。 该过程的工作原理也是该模块依次或并行传输?
是否测试回送? 您需要的数据与发送的数据相同吗?
尊敬的 Furkan:
SPI 并行/模块模式控制寄存器(SPIPMCTRL)将控制数据并行或按顺序移位。

如果该寄存器中的 PMODE0值为零、则数据将仅在一行上按顺序移位。
如果您提供代码、那么我可以验证数据是如何移出控制器的。
我还建议您参考以下线程、最近我们看到 MibSPI 中存在一个数据损坏问题、通过在芯片选择激活与传输之间提供一些延迟来解决该问题:
(+) TMS570LS3137:MibSPI Slave ->主器件传输第一个值缺失第一位-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛
--
谢谢。此致、
Jagadish。
尊敬的 Furkan:
在我花了很多时间处理此数据后,我意识到我的 mibspi 缓冲区只能传输一次。 一次通信后无法更新传输缓冲区或接收缓冲区。
很高兴听到您解决了问题。
--
谢谢。此致、
Jagadish。
您好!
传输组配置与您的配置相同。 由于一些限制、我无法分享我的项目、对此我感到抱歉。
我查看了代码以确定问题的来源。 我检查了一些相关的寄存器值、似乎没有问题。 如果您想知道特定的寄存器值、我可以根据需要与您分享。
此致、
古坎
我创建了一个示例项目,其寄存器值与我的项目相同。
尊敬的 Furkan:
我没有 TMS570LS3137板、因此我只需在 TMS570LC4357上重新创建您的项目。 我将设置与您的设置相同、并复制粘贴的代码并进行测试。
这是我从 MibSPI3中得到的结果、

这是第一次迭代后的输出、它正如您想要发送的一样、即0x00、0x30和0x00。
可能只是根据您的要求。
我在您的代码中唯一不明白的是、
1.声明"t"为无符号字符、但会将1000和 100000之类的值移动到该变量中、这会将移动到 t 中的值截断。

2.第一次发送一个0x00之后只是循环在 while (1)中的0x30和0x00、这正是你想要的、或者你在这里忽略了什么?

我随附经测试的代码供您参考:
e2e.ti.com/.../MIBSPI3_5F00_TEST_5F00_LC4357.zip
--
谢谢。此致、
Jagadish。
尊敬的 Furkan:
1.变量 t 实际上不是很重要。 我仅使用该变量会在变量之间产生延迟。 在另一个项目中、我将此变量创建为32位无符号整数。
2.我的愿望跟你说的一样。 我希望访问一些寄存器、并在加速计上顺序获取它们的值。
[/报价]了解了这一点。
但正如我在逻辑分析仪波形中显示的那样、您的代码没有出现任何问题、而且工作正常。
--
谢谢。此致、
Jagadish。
尊敬的 Furkan:
所以您的意思是这个问题有关传感器带或等。对吗?
可以。
例如,如果我使用的缓冲区长度为10或多于10。 是否 ı 此缓冲区按顺序向右发送数据?
是的、回答正确。

如果将 TG 长度配置为10、这意味着您应该提供10个字节的数据、所有这10个字节将通过单次触发进行传输。
我的意思是、如果你调用"mibspiTransfer"函数、那么所有10个字节将一次进行传输、无需为每个字节调用"mibspiSetData"和"mibspiTransfer"。
--
谢谢。此致、
Jagadish。