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.

[参考译文] TMS320F28069:F28069的 USB 通信问题

Guru**** 2538955 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/608737/tms320f28069-usb-communication-problem-with-f28069

器件型号:TMS320F28069

大家好、

我正在使用 TMS320F28069 MCU 和 CCS 6。 我正在尝试 在  我们自己的硬件和 GUI 之间与大容量器件通信。 我 每500ms 使用 USBBufferDataWritten()函数发送30个字节数据

从一开始就发送数据没有问题。 但 6-7分钟后、MCU 不再发送数据。 我已经在调试模式中检查了问题所在、我意识到 USB 的底层没有空间接受另一个数据包。 因为"ulPacket"值在 ScheduleNextTransmission ()中保持为"0"。

静态空调度 NextTransmission (const tUSBBuffer *psBuffer)

tUSBBufferVars *psVars;
unsigned long ulPacket、ulSpace、ulTotal;

//
//获取指向工作区变量的指针。
//
psVars = psBuffer->pvWorkspace;

//
//询问下层是否有空间接受另一个数据包。
//
ulPacket = psBuffer->pfnAvailable(psBuffer->pvHandle);

//
//如果返回的值不是零,则可以写入该数字
//字节数到底层。
//
if (ulPacket)

//
//缓冲区中有多少连续数据?
//
ulSpace = USBRingBufContigUsed(&psVars->sRingBuf);

//
//缓冲区中有多少总数据?
//
ulTotal = USBRingBufUsed(&psVars->sRingBuf);

//
//假设有连续字节,将连续字节写入底层
//要发送的内容。
//
if (ulSpace)

//
//确定在此传输中可以发送的最大块大小。
//
ulSpace =(ulSpace < ulPacket)? ulSpace:ulPacket;
//
//调用下层发送新数据包。 电流
//数据跨越缓冲区换行,告诉下层可以
//等待第二次调用以填充整个数据包
//传输它。
//

psBuffer->pfnTransfer (psBuffer->pvHandle、
(psVars->sRingBuf.pucBuf +
psVars->sRingBuf.ulReadIndex)、ulSpace、
((((ulSpace < ulPacket)&&
(ulSpace < ulTotal))? false:true);

//
//我们是否需要发送第二部分来填写数据包? 这种情况
//如果当前数据包跨越缓冲区换行,则会发生。
//
if ((ulSpace < ulPacket)&&(ulSpace < ulTotal))

//
//数据包跨越了换行。 还有多少空间
//数据包?
//
ulPacket = ulSpace;

//
//我们实际上可以发送多少数据?
//
ulSpace = ulTotal - ulSpace;
ulSpace =(ulSpace > ulPacket)? ulPacket:ulSpace;

psBuffer->pfnTransfer (psBuffer->pvHandle、
psVars->sRingBuf.pucBuf、ulSpace、true);

//
//尚未更新环形缓冲区读取索引。 我们一旦开始就会执行该操作
//确保数据包已正确传输。
//

有人能不知道低层为什么不接受任何数据包吗?

此致

优素福

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    优素福

    我明天需要研究这个问题。 请留意答案。

    SAL