USB CDC Example Receive only fail

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

USB CDC Example Receive only fail

ソリューションへジャンプ
1,848件の閲覧回数
etronic_arg
Contributor III

Hi,

I just trying to do a Virtual COM communication based on the USB CDC example from SDK.
I tested the example with success.

I cancel the "echo" part of the APPTask:

static void APPTask(void)
{
    usb_status_t error = kStatus_USB_Error;
    if ((1 == s_cdcVcom.attach) && (1 == s_cdcVcom.startTransactions))
    {
        /* User Code */
        /* endpoint callback length is USB_CANCELLED_TRANSFER_LENGTH (0xFFFFFFFFU) when transfer is canceled */
        if ((0 != s_recvSize) && (USB_CANCELLED_TRANSFER_LENGTH != s_recvSize))
        {
            int32_t i;

			/* Copy Buffer to Send Buff */
            for (i = 0; i < s_recvSize; i++)
            {
                s_currSendBuf[s_sendSize++] = s_currRecvBuf[i];
            }

			s_recvSize = 0;
        }


/*
        if (s_sendSize)
        {
            uint32_t size = s_sendSize;


			s_sendSize    = 0;

            error = USB_DeviceCdcAcmSend(s_cdcVcom.cdcAcmHandle, USB_CDC_VCOM_BULK_IN_ENDPOINT, s_currSendBuf, size);

            if (error != kStatus_USB_Success)
            {
                // Failure to send Data Handling code here
            }
        }
*/

 

If I send "HELLO" wth a terminal from a PC, the first time s_currSendBuf fills with the characters.

With the second "HELLO" I send, the terminal stucks.

I just need to receive characters but not send them back.
What would be the right way to do it?

Thanks

 

タグ(3)
0 件の賞賛
返信
1 解決策
1,759件の閲覧回数
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

Yes, this is a good solution. After you have data, just call the the function to send.

BR

Xiangjun Rong

USB_DeviceCdcAcmSend();

 

元の投稿で解決策を見る

0 件の賞賛
返信
3 返答(返信)
1,798件の閲覧回数
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

Can you tell us the part number you are using?

BR

XiangJun Rong

0 件の賞賛
返信
1,785件の閲覧回数
etronic_arg
Contributor III

Hello XiangJun,

The part I'm using is the MK27FN2M0VM115 in a custom board, but I also tested it in a FRDM-K64F.

I solve the issue partially calling the USB sending fuction without data after receiving:

 

 if (s_sendSize)
        {
            uint32_t size = s_sendSize;


			s_sendSize    = 0;

            error = USB_DeviceCdcAcmSend(s_cdcVcom.cdcAcmHandle, USB_CDC_VCOM_BULK_IN_ENDPOINT, NULL, 0);

            if (error != kStatus_USB_Success)
            {
                // Failure to send Data Handling code here
            }
        }

 

Is there a better solution?

タグ(1)
0 件の賞賛
返信
1,760件の閲覧回数
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi,

Yes, this is a good solution. After you have data, just call the the function to send.

BR

Xiangjun Rong

USB_DeviceCdcAcmSend();

 

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-1965405%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EUSB%20CDC%E3%81%AE%E4%BE%8B%E5%8F%97%E4%BF%A1%E3%81%AE%E3%81%BF%E5%A4%B1%E6%95%97%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1965405%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%81%A1%E3%82%87%E3%81%86%E3%81%A9SDK%E3%81%AEUSB%20CDC%E3%81%AE%E4%BE%8B%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E4%BB%AE%E6%83%B3COM%E9%80%9A%E4%BF%A1%E3%82%92%E3%82%84%E3%82%8D%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E7%A7%81%E3%81%AF%E3%81%93%E3%81%AE%E4%BE%8B%E3%82%92%E6%88%90%E5%8A%9F%E8%A3%8F%E3%81%AB%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3EAPPTask%E3%81%AE%E3%80%8C%E3%82%A8%E3%82%B3%E3%83%BC%E3%80%8D%E9%83%A8%E5%88%86%E3%82%92%E3%82%AD%E3%83%A3%E3%83%B3%E3%82%BB%E3%83%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3Estatic%20void%20APPTask(void)%0A%7B%0A%20%20%20%20usb_status_t%20error%20%3D%20kStatus_USB_Error%3B%0A%20%20%20%20if%20((1%20%3D%3D%20s_cdcVcom.attach)%20%26amp%3B%26amp%3B%20(1%20%3D%3D%20s_cdcVcom.startTransactions))%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F*%20User%20Code%20*%2F%0A%20%20%20%20%20%20%20%20%2F*%20endpoint%20callback%20length%20is%20USB_CANCELLED_TRANSFER_LENGTH%20(0xFFFFFFFFU)%20when%20transfer%20is%20canceled%20*%2F%0A%20%20%20%20%20%20%20%20if%20((0%20!%3D%20s_recvSize)%20%26amp%3B%26amp%3B%20(USB_CANCELLED_TRANSFER_LENGTH%20!%3D%20s_recvSize))%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20int32_t%20i%3B%0A%0A%09%09%09%2F*%20Copy%20Buffer%20to%20Send%20Buff%20*%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(i%20%3D%200%3B%20i%20%26lt%3B%20s_recvSize%3B%20i%2B%2B)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20s_currSendBuf%5Bs_sendSize%2B%2B%5D%20%3D%20s_currRecvBuf%5Bi%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%09%09%09s_recvSize%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%7D%0A%0A%0A%2F*%0A%20%20%20%20%20%20%20%20if%20(s_sendSize)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20uint32_t%20size%20%3D%20s_sendSize%3B%0A%0A%0A%09%09%09s_sendSize%20%20%20%20%3D%200%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20error%20%3D%20USB_DeviceCdcAcmSend(s_cdcVcom.cdcAcmHandle%2C%20USB_CDC_VCOM_BULK_IN_ENDPOINT%2C%20s_currSendBuf%2C%20size)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(error%20!%3D%20kStatus_USB_Success)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Failure%20to%20send%20Data%20Handling%20code%20here%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A*%2F%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3EPC%E3%81%8B%E3%82%89%E7%AB%AF%E6%9C%AB%E3%81%AB%E3%80%8CHELLO%E3%80%8D%E3%82%92%E9%80%81%E3%82%8B%E3%81%A8%E3%80%81%E5%88%9D%E5%9B%9Es_currSendBuf%E6%96%87%E5%AD%97%E3%81%A7%E5%9F%8B%E3%82%81%E5%B0%BD%E3%81%8F%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E2%E5%9B%9E%E7%9B%AE%E3%81%AE%E3%80%8CHELLO%E3%80%8D%E3%81%A7%E7%AB%AF%E6%9C%AB%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%E3%80%81%E9%80%81%E3%82%8A%E8%BF%94%E3%81%99%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3CBR%20%2F%3E%E3%81%9D%E3%82%8C%E3%82%92%E8%A1%8C%E3%81%86%E3%81%9F%E3%82%81%E3%81%AE%E6%AD%A3%E3%81%97%E3%81%84%E6%96%B9%E6%B3%95%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1970996%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3AUSB%20CDC%E3%81%AE%E4%BE%8B%E5%8F%97%E4%BF%A1%E3%81%AE%E3%81%BF%E5%A4%B1%E6%95%97%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1970996%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3E%E3%81%AF%E3%81%84%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E8%89%AF%E3%81%84%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%81%A7%E3%81%99%E3%80%82%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%9F%E3%82%89%E3%80%81%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%81%A0%E3%81%91%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%82%B7%E3%83%A3%E3%83%B3%E3%82%B8%E3%83%A5%E3%83%B3%E3%83%BB%E3%83%AD%E3%83%B3%3C%2FP%3E%0A%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3EUSB_DeviceCdcAcmSend()%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1970007%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3AUSB%20CDC%E3%81%AE%E4%BE%8B%E5%8F%97%E4%BF%A1%E3%81%AE%E3%81%BF%E5%A4%B1%E6%95%97%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1970007%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3CSPAN%3EXiangJun%E3%81%95%E3%82%93%E3%80%81%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E7%A7%81%E3%81%8C%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%83%A8%E5%88%86%E3%81%AF%E3%80%81%20%3C%2FSPAN%3EMK27FN2M0VM115%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81FRDM-K64F%E3%81%A7%E3%82%82%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FP%3E%3CP%3E%E5%8F%97%E4%BF%A1%E5%BE%8C%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AA%E3%81%97%E3%81%A7USB%E9%80%81%E4%BF%A1%E6%A9%9F%E8%83%BD%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%95%8F%E9%A1%8C%E3%82%92%E9%83%A8%E5%88%86%E7%9A%84%E3%81%AB%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%20translate%3D%22no%22%3E%20if%20(s_sendSize)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20uint32_t%20size%20%3D%20s_sendSize%3B%0A%0A%0A%09%09%09s_sendSize%20%20%20%20%3D%200%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20error%20%3D%20USB_DeviceCdcAcmSend(s_cdcVcom.cdcAcmHandle%2C%20USB_CDC_VCOM_BULK_IN_ENDPOINT%2C%20NULL%2C%200)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(error%20!%3D%20kStatus_USB_Success)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Failure%20to%20send%20Data%20Handling%20code%20here%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3CP%3E%E3%82%82%E3%81%A3%E3%81%A8%E8%89%AF%E3%81%84%E8%A7%A3%E6%B1%BA%E7%AD%96%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1969408%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3AUSB%20CDC%E3%81%AE%E4%BE%8B%E5%8F%97%E4%BF%A1%E3%81%AE%E3%81%BF%E5%A4%B1%E6%95%97%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1969408%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%0A%3CP%3E%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%93%81%E7%95%AA%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%82%B7%E3%83%A3%E3%83%B3%E3%82%B8%E3%83%A5%E3%83%B3%E3%83%BB%E3%83%AD%E3%83%B3%3C%2FP%3E%3C%2FLINGO-BODY%3E