英飞凌
直播中

刘英

7年用户 1120经验值
私信 关注

基于FX3的新项目,当总字节数nbTotal小于自动DMA缓冲区大小时,如何处理才能将所有字节提交到PP端口?

我正在启动一个基于 FX3(配置为从 FIFO)的新项目。  作为设计准备工作的一部分,我阅读了 KBA223338 以及其他参考资料。 将为 U2P 字节传输设置 SS BULK OUT + AUTO DMA 通道。 DMA 缓冲区大小,dmaBufSize,可以是 16K、32K 或 64K。 必须稍后敲定。 U2P 字节传输总量从 32B 到几百 KB 不等。 根据规则,当总字节数 nbTotal 小于自动 DMA 缓冲区大小(相同或更大)时,应如何处理,才能将所有字节提交到 PP 端口。

回帖(1)

王银喜

2024-5-24 16:44:17
在这种情况下,当总字节数nbTotal小于自动DMA缓冲区大小时,可以采取以下步骤来处理,以便将所有字节提交到PP端口:

1. 确定合适的DMA缓冲区大小:首先,需要确定一个合适的DMA缓冲区大小(16K、32K或64K),以便在传输过程中不会出现缓冲区溢出或不必要的内存浪费。可以根据项目需求和预期的传输数据量来选择合适的大小。

2. 初始化FX3:在项目开始时,需要对FX3进行初始化,包括设置SS BULK OUT + AUTO DMA通道,以及配置DMA缓冲区大小。

3. 计算传输数据的总字节数:在传输数据之前,需要计算要传输的数据的总字节数(nbTotal)。这可以通过读取数据源或使用其他方法来实现。

4. 判断是否需要使用DMA:如果nbTotal大于或等于DMA缓冲区大小,那么可以使用DMA进行数据传输。如果nbTotal小于DMA缓冲区大小,那么可以考虑使用其他方法,如PIO(Programmable I/O)或手动DMA传输。

5. 使用PIO或手动DMA传输:如果nbTotal小于DMA缓冲区大小,可以使用PIO或手动DMA传输将数据发送到PP端口。PIO是一种较慢的传输方式,但它不需要DMA缓冲区。手动DMA传输则需要手动管理DMA缓冲区,将数据分批次传输。

6. 确保数据完整性:在传输过程中,需要确保数据的完整性。可以通过添加校验和、CRC(循环冗余校验)等方法来实现。

7. 处理传输完成:在数据传输完成后,需要处理传输完成的逻辑,例如通知应用程序、释放资源等。

8. 测试和调试:在实现上述步骤后,需要对整个系统进行测试和调试,确保数据传输的稳定性和可靠性。

通过以上步骤,即使当总字节数nbTotal小于自动DMA缓冲区大小时,也可以将所有字节提交到PP端口。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分