主题中讨论的其他器件:C2000WARE
您好!
我正在 使用 C2000 Ware 软件套件中的 TI USB 库。 我的 CCS 版本:9.3.0.00012。 我已经将 USB 堆栈的源文件导入到项目中、因此我可以修改它。
库的版本在源文件中编写为注释、如下所示:
//$TI 版本:F2806x 支持库 v2.06.00.00 $
//$Release Date:星期五 Feb 12 19:15:11 IST 2021 $
//$Copyright:
//版权所有(C) 2009-2021德州仪器(TI)公司- http://www.ti.com/
我相信该库是从 Stellaris 微控制器系列移植到 C28x 系列的。
我使用 USB 库的主机函数与大容量存储设备全速进行点对点通信。 有时设备无法响应、并且我在 usbhostenum.c 文件中的 PipeRead 或 PipeWrite 函数中收到 NAKTO (NAK 超时)错误。 管道读取/写入函数处于阻塞状态(即、我在那里等待、直到事务完成)。 我意识到这些函数中存在一个 while perever 循环、该循环导致我的程序卡住、因此我使用一个计时器以500ms 的超时时间退出。
我遇到的问题是 、在我退出此函数后、除了 DSP 复位(使用看门狗)之外、我始终无法恢复与器件的通信。 我已经尝试使用 C2000Ware 示例项目中的初始化函数重置 USB 堆栈。 这有时有效、但并非始终有效。 我想我曾看到过 TXPKTRDY 位置1、阻止主机发送任何其他通信的情况。
我的问题是、什么是复位所有 USB 寄存器以实现"全新"启动的最佳方法。 我不希望每次发生这种情况时都来复位 DSP? 我认为、重新初始化缺少了一些东西、重新初始化使通过看门狗的 DSP 复位正常工作、而不是 USB 堆栈的软件复位正常工作。
此外、使用非阻塞路由是否也会更好地工作? 如何实现非阻塞管道读取/写入?
谢谢