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.
Nick Sun:
您好,
收到您的问题了,我们升级到英文论坛给工程师看下,有答复尽快给到您。
,
Nick Sun:
您好,
您不必去配置任何东西,它将由 SPI 驱动程序自动完成,如您发的Transfer Size Limit所示。
作为参考,这里是 2048 字节传输的样子:(使用修改后的 spimaster 示例)
,
Yan:
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以后,又可以正常接收到第一组数据。请问应该怎样使用才能让这个模式持续运行起来?您这边是否有相应的示例可以发我看下??
谢谢!
,
Yan:
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模式下正常传输未知数量的字节???????
谢谢!
,
Nick Sun:
您好,
Yan 说: 一:
这确实是个CC1310做为spimaster的发送示例
Yan 说:二:
如果尚未完成,必须在每次回调后重新启用 RX 传输。原因是当接收到 1024 字节时,SPI/UDMA driver认为传输已经完成。
这是与TI资深工程师沟通的帖子(链接),由于您的问题比较复杂,您可以直接和工程师回复,或者由我这边转述。
您可以直接把想咨询的内容(最好是英文)发予我。
感谢您的支持。
,
Yan:
您好,Nick
我的问题已在英文论坛解决,由于在英文论坛是您创建的帖子,麻烦您标记下已解决。
谢谢您的帮助!