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.

CC1310: spi超Transfer Size Limit传输

Part Number: CC1310

您好!

       我正才使用CC1310F128芯片的SPI从机功能,需要一次性接收10000个字节。但是在SPI应用中了解到,UDMA每次传输最大只能支持1024个字节,超出部分会启动多次1024个字节传输。

       我应该在程序中怎样配置,才能达到不断传输直到所有字节传输完成?

      Transfer Size Limit

          The UDMA controller only supports data transfers of up to 1024 data frames. A transfer with more than 1024 frames will be transmitted/received in multiple 1024 sized portions until all data has been transmitted/received. A data frame can be 4 to 16 bits in length.

  • 您好,

    收到您的问题了,我们升级到英文论坛给工程师看下,有答复尽快给到您。

  • 您好,

    您不必去配置任何东西,它将由 SPI 驱动程序自动完成,如您发的Transfer Size Limit所示。

    作为参考,这里是 2048 字节传输的样子:(使用修改后的 spimaster 示例)

  • Nick   您好!

          一: 

               这个是不是将CC1310做为spimaster的发送示例??我这边是将CC1310做为spislave。在另一个MCU做为spimaster时,MCU一次性发送大于1024个字节时,CC1310做为spislave只收到1024个字节,使用的是Slave Mode With Return Partial模式。我这边的MCU做为spimaster时,一次发送2048个字节,中间并不会拉高CSN引脚,而是在2048个字节全部发送完成后再拉高CSN引脚。

        二:

             目前我也再考虑使用Continuous Slave Transfer In SPI_MODE_CALLBACK模式,但是在配置完程序后,可以接收到第一组数据,后续数据一直无法接收。reset以后,又可以正常接收到第一组数据。请问应该怎样使用才能让这个模式持续运行起来?您这边是否有相应的示例可以发我看下??

        谢谢!

  • Nick   您好!

        Continuous Slave Transfer In SPI_MODE_CALLBACK模式下只进入一次的原因是因为我在SPI_MODE_CALLBACK模式下调用了SPI_control函数,因为我的MCU做为spimaster发送的数据长度不是固定的,所以需要CC1310做为spislave也可以判断接收未知长度的字节。当我注释掉SPI_control函数时,可以正常循环进入Continuous Slave Transfer In SPI_MODE_CALLBACK模式运行。现在问题在TI的API文档中说明:在SPI_MODE_CALLBACK模式也可以传输未知数量的字节。但是在API中没有具体应用例程。

       以下是原文:

           This use case will perform a transfer in SPI_MODE_BLOCKING until the wanted amount of bytes is transferred or until chip select is deasserted by the SPI master. This SPI_transfer() call can be used when unknown amount of bytes shall be transferred. Note: The partial return is also possible in SPI_MODE_CALLBACK mode.

          麻烦您看下,怎样才能在SPI_MODE_CALLBACK模式下正常传输未知数量的字节???????

           谢谢!

  •  您好,

      一:

    这确实是个CC1310做为spimaster的发送示例

    二:

    如果尚未完成,必须在每次回调后重新启用 RX 传输。原因是当接收到 1024 字节时,SPI/UDMA driver认为传输已经完成。

    这是与TI资深工程师沟通的帖子(链接),由于您的问题比较复杂,您可以直接和工程师回复,或者由我这边转述。

    您可以直接把想咨询的内容(最好是英文)发予我。

    感谢您的支持。

  • 您好,Nick

           我的问题已在英文论坛解决,由于在英文论坛是您创建的帖子,麻烦您标记下已解决。

           谢谢您的帮助!