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.

C6747 SPI SLAVE boot 的问题

前面SWS, POS阶段都能正确的接收到DSP的的应答。但是到了OS阶段,没有收到应答。

我发送opcode的方式是:先发送opcode,接着发送后面的数据;发完数据后循环发送opcode并且读SPI,但是一直没有独到opcode应答。

不知道还我这样发送的opcde方式是否是正确的?我看了SPRABB1C.pdf,上面没有说清楚后面opcode synchronization阶段该怎么发送。

  • 试试加长host发opcode之间的时间间隔。

    NOTE: SPI slave boot modes suffer from a bug during Opcode Synchronization. The bootloader will
    hang if an opcode is sent by the host before the bootloader is ready to receive it (for
    example., if the bootloader is still processing the previous opcode). Therefore, in SPI slave
    boot modes, the host should insert sufficient delay between opcodes that the bootloader is
    ready to receive the next opcode. This bug does not affect other slave boot modes (I2C,
    UART, etc.).


    http://www.ti.com/lit/an/sprabb1c/sprabb1c.pdf

  • 这段我早就注意到了,而且也加长了时间间隔,但是没有用;而且前面两个步骤是能读到应答的。

    我现在主要是不明白opcode及其后面的参数该怎么发送,那个文档说的不够详细。

  • master发送opcode给DSP, 等待接收RECV opcode,如果收不到RECV opcode, 再发送opcode给DSP,直到收到RECV opcode为止。

  • Each AIS command consists of an opcode, optionally followed by one or more arguments, followed by
    optional data

    每个opcode后面都有参数,这些参数是跟随在opcode之后发给DSP吗?我现在就是这么做的,但是没有收到RECV opcode。

  • 应该是我理解错了,opcode后面的参数需要收到应答后才发送。

    8.3 The AIS_Util.cs Source Code
    The UART Boot Host includes a single C# source file named AIS_Util.cs, which serves as a reference
    implementation of the boot master requirements laid out in Section 7. This source file is used by the UART
    Boot Host application itself, and is provided as-is with no direct support.

    我在看AIS_Util.cs的代码,参照这个代码应该能有个结果。

  • DSP SPI SLAVE BOOT成功!

    最后一步 opcode synchronization,需要先单独发送opcode,收到RECV opcode后,再发送opcode后面的数据。