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.

[参考译文] TMS570LS1224:MibSPI 从器件以延迟启动

Guru**** 2350610 points
Other Parts Discussed in Thread: HALCOGEN, LAUNCHXL2-TMS57012, TMS570LC4357, TMS570LS1224
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/613271/tms570ls1224-mibspi-slave-starting-with-delay

器件型号:TMS570LS1224
主题中讨论的其他器件:LAUNCHXL2-TMS57012TMS570LC4357、HALCOGEN

大家好、

我正在尝试在 TMS570LS1224 (LAUNCHXL2-TMS57012)和 TMS570LC4357 (LAUNCHXL2-TMS570LC43)之间设置 MibSPI 连接。

我使用 Booster Pack 插入了 LaunchPad、因此我使用的是 MibSPI3。

两者上有不同的时钟、因此我设置了2个不同的波特率(4357为15MHz、1224为16MHz)。 我正在使用由芯片选择1触发的一个由16个字组成的单个传输组(CS0未映射到 Booster Pack)。 我使用4引脚模式

我看到从器件(1224)仅在350ms 后才开始响应、我不知道原因。 启动会以相同的顺序调用完全相同的函数。 我还尝试在从器件 A 配置的末尾设置一个断点、并在此时启动主器件、但结果不好。

在这段时间通信顺利进行之后、我没有看到任何错误。

有人可以给我一些帮助吗? 如果您需要更多信息、请告诉我!

谢谢、

Arianna

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先、主器件和从器件无需具有不同的波特率。 时钟由主器件提供给从器件并控制位速率。 即、主器件的 SPICLK 应连接到从器件的 SPICLK。

    第二、您能否确认主器件正在向从器件发送数据、以及从器件在您看不到从器件发送到主器件的数据时正在接收数据? 也就是说、从器件仅在从主器件移入数据时才会发送数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    感谢你的答复。

    是的、主器件的 SPICLK 被连接至被配置为输入的从器件的 SPICLK。 我使用了 Halcogen、我也为从器件配置了波特率。

    我在示波器上看到从主器件发送到从器件的数据。 由于 SOMI 和 ENA 引脚在前350ms 内为高电平、主器件正在接收全部0xFFFF。 在从器件中、我此时无法接收传输组的通知。

    此时似乎未配置 SPI、我无法理解原因。

    谢谢你

    Arianna

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

    您能否测量从启动到到达 MibSPI 初始化代码所需的时间? 引导时是否有其他阻止从器件中 MibSPI 初始化执行的函数或初始化? 简而言之、从器件在延迟的350ms 内会执行什么操作?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我有同样的问题...

    我尝试在 mibspi 配置结束时设置断点、然后启动主软件、但结果相同。 我看到的是、这350ms 内的从器件处于等待 mibspi 通知的 while 中。

    e2e.ti.com/.../5756.testHercules.zipI附加我的项目。

    在图中、您可以从示波器看到测量结果:

    -信号1:CLK

    信号2:Simo

    -信号3:SOMI

    信号4:ENA

    感谢您抽出宝贵时间观看 Chuck

    此致

    Arianna

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

    感谢您提供图。 这提供了一些有关代码中的查找位置的良好指示。

    首先、我看到您使用的是 Nena 功能。 在您等待的整个时间内、Nena 似乎是高电平、这表示从器件尚未准备好接收数据。 这意味着即使主器件正在发送、它也无法接收任何内容。 当您初始化从设备时、是否将任何数据放入 Tx 缓冲区、以便它准备好传输数据? 也就是说、由于它是一个从器件、它必须有一些准备好发送的东西、然后才能准备好接收并将 Nena 引脚置为有效、以向主器件指示它已准备就绪。

    请注意、主器件似乎忽略了 Nena 信号、并且乐于向从器件传输数据、而不管 Nena 引脚的状态如何。 您是否已将此引脚连接到主器件、主器件是否配置为使用 Nena 引脚? 我的理解是、在 Nena 引脚置为无效(高电平)时、时钟和 MOSI 线路都将保持。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我正在使用的 Booster Pack 不映射 Nena 引脚、因此我将其用于调试、这就是主器件忽略它的原因。

    这是我的从器件主代码:

    int main (void)
    {
    /*用户代码 begin (3)*/
    uint8_t i;
    
    /*在 Cortex R4 CPU 中启用 IRQ 中断*/
    _enable_interrupt_();
    
    mibspiInit();
    muxInit();
    
    /*启用到 INT 0的 TG 0完整中断*/
    mibspiEnableGroupNotification (mibspiREG3、0、0);
    
    /*填写转接组*/
    mibspiSetData (mibspiREG3、0、TG0_TX_DATA);
    
    TG0_IS _COMPLETE = 0x55555555;
    /*启用 TG0以启动*/
    mibspiTransfer (mibspiREG3、0);
    
    while (1)
    {
    
    /*等待 TG0 ISR 中设置此标志*/
    while (TG0_IS _COMPLETE!= 0xA5A5A5);
    
    mibspiGetData (mibspiREG3、0、TG0_RX_DATA);
    
    TG0_IS _COMPLETE = 0x55555555;
    
    mibspiTransfer (mibspiREG3、0);
    
    对于(I = 0;I < 16;I++)
    {
    if (TG0_RX_DATA[i]!=(TG0_TX_DATA[i]- 1))
    错误++;
    }
    }/*
    用户代码结束*/
    
    返回0;
    } 

    我不确定是否必须在从器件中以某种方式设置 TICKCNT。

    是否可能是调试问题? JTAG 可能会花费一些时间、这是出于某种原因? 我将同时使用2个 XDS110的目标配置来调试这两个项目。

    谢谢你

    Arianna

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

    我不认为这个问题与调试模式相关、除非您在到达初始化从器件的点之前中断、并且由于您不使用它来触发传输、因此不需要初始化节拍计数器。

    如何对电路板进行电源循环? 即、如何确保从器件已启动并正在等待主器件、并且主器件未在从器件准备就绪前启动并发送? 这可以通过 Nena 来实现、但前提是主器件也使用它。

    目前、我认为从器件未接收数据的原因、因此不会发出通知、这是因为 Nena 引脚在此350ms 期间保持高电平。 不过、我的初始状态是您没有将数据加载到 TxBuff 中并准备好进行传输。 您似乎正在使用 MibSPITransfer 函数执行此操作以启动传输组发送数据、但我不知道为什么 Nena 会继续帮助高电平? 您能否尝试禁用 Nena (配置为 GPIO)、使其不会妨碍从器件运行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我想我的问题已经解决了!

    我很确定这是一个调试问题、因为我尝试在目标配置中反转2个内核、并且看不到延迟。

    新配置(R4 =从器件、R5 =主器件)

    此问题是否可能是由2块板共用的复位引脚引起的?

    我仍然不明白350ms 的到来、但现在我很确定、在调试之外、我不会有任何问题。

    感谢您的参与、现在我对 MibSPI 更有信心!

    此致、

    Arianna

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

    您好、Arianna、

    我很高兴您能够隔离该问题、现在可以确定您在调试环境之外不会遇到任何问题。 至于问题是否由复位引脚引起、我无法确定是否是这种情况、因为我无法访问您的硬件设置。 您当然可以在示波器上监控 nRST、以查看从器件 nRST 是否在 SPI 开始工作时的延迟时间释放。 即使您确认情况确实如此、调试器也会将从器件长时间保持在复位状态、这一点必须理解。 这些信息必须来自 CCS 团队、因为我不是 CCS IDE 内部工作的专家。