TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] TMS570LC4357:具有多个传输组的 MibSPI 从设备、由同一 CS 引脚连接/控制(HALCoGen + FreeRTOS)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1465515/tms570lc4357-mibspi-slave-with-several-transfer-groups-connected-controlled-by-the-same-cs-pin-halcogen-freertos

器件型号:TMS570LC4357

工具与软件:

您好!

我尝试使用相当繁琐的协议来模拟(MIB) SPI 从站。

目前、我能够模拟 SPI 层上的协议、但无法模拟传输层上的协议、方法是使用16B (请求4B -响应12B)上的传输组、以以下方式发送:

Fullscreen
1
2
3
MOSI: --- | x1 | x2 | x3 | x4 | -------- 15us ------- | NA | NA | NA | NA | NA | NA | NA | NA | NA |NA | NA | NA | ----- | a1 | a2 | a3 | a4 | -------- 15us ------- | NA | NA | NA | NA | NA | NA | NA | NA | NA |NA | NA | NA | ---
MISO: --- | NA1 | NA2 | NA3 | NA4 | ------- 15us ------- | y1 | y2 | y3 | y4 | y1 | y2 | y3 | y4 | y1 |y2 | y3 | y4 | ----- | NA1 | NA2 | NA3 | NA4 | ------- 15us ------- | x1 | x2 | x3 | x4 | x1 | x2 | x3 | x4 | x1 | x2 | x3 | x4 | ---
| TGx | ----- | TGx | |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

注意:响应(为简化请求提供4倍副本)会因传输组 TGX 的一次传输而延迟。

但问题是,我需要 立即响应,即~15us 后收到请求(即类似的东西):

Fullscreen
1
2
3
MOSI: --- | x1 | x2 | x3 | x4 | -------- 15us ------- | NA | NA | NA | NA | NA | NA | NA | NA | NA |NA | NA | NA | ----- | a1 | a2 | a3 | a4 | -------- 15us ------- | NA | NA | NA | NA | NA | NA | NA | NA | NA |NA | NA | NA | ---
MISO: --- | NA1 | NA2 | NA3 | NA4 | ------- 15us ------- | x1 | x2 | x3 | x4 | x1 | x2 | x3 | x4 | x1 |x2 | x3 | x4 | ----- | NA1 | NA2 | NA3 | NA4 | ------- 15us ------- | a1 | a2 | a3 | a4 | a1 | a2 | a3 | a4 | a1 | a2 | a3 | a4 | ---
| TGx | ------- 15us ------- | TGy | ----- | TGx | ------- 15us ------- | TGy |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我尝试在通知功能"mibspiGroupNotification "中控制传输组和 TGy 中的数据。

基本上通过执行以下操作(伪代码):

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void mibspiGroupNotification(mibspiBASE_t *mibspi, uint32 group)
{
if (mibspi == mibspiREG1)
{
if (group == TGx)
{
/* Get TGx request data */
mibspiGetData(mibspiREG1, TGx, &g_TGx_rx_data[0]);
/* Copy request data to TGy response/tx data buffer g_TGy_tx_data[0] */
... // memcpy(...);
/* Set TGy data */
mibspiSetData(mibspiREG1, TGy, &g_TGy_tx_data[0]);
/* Clear enable of TGx */
mibspiREG1->TGCTRL[TGx] &= ~0x80000000U;
/* Enable TGy */
mibspiREG1->TGCTRL[TGy] |= 0x80000000U; // mibspiTransfer(mibspiREG1, TGy);
} else {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 

这种方法似乎几乎起作用、问题是我似乎在发送预期数据之前发送1B 的旧/损坏数据、并且这样做会干扰 TGy 缓冲区/响应(以及 TGX)的数据内容/顺序。  

因此、我想知道我的预期用例是否可行?

有什么建议吗? 这似乎是应该有可能完成的事情吗?  

免责声明:我目前没有可以共享的工作区/项目、因此仅共享描述当前问题所需的必要详细信息。