stm32 usb reporta informe de características

0

Estoy trabajando con USB HID en stm32f072. En la solicitud Get_Report, tengo que enviar datos a una PC host a través de Control Transfer Endpoint. Estoy tratando de hacerlo. Pero está enviando siempre algunos datos erróneos. Si quiero elaborar el problema, eso es

 case HID_REQ_GET_REPORT:

  if(req->wValue==PID_POOL_BLOCK_REPORT){

    buf[0] = 0x07;
    buf[1] = 0xFF;
    buf[2] = 0xFF,
    buf[3] = 0x0A;
    buf[4] = 0x02;

    if(USBD_LL_FlushEP (pdev, 0x00)==USBD_OK){

      USBD_CtlSendData (pdev, 
                        buf,
                        5);

    }    
  }

Pero el envío de datos es en realidad "0xF6 0x3A 0x82 0x28 0x45". No tengo ni idea de lo que está pasando dentro. Lo he intentado con el lavado del punto final también. Pero parece que no funciona. ¿Qué hacer realmente? Cualquier pista por favor. Gracias.

    
pregunta istiaq2379

1 respuesta

1

USB funciona de forma asíncrona. USBD_CtlSendData solo guarda un puntero al búfer; los datos realmente se leen de la memoria y se transmiten cuando el host lo solicita.

Por lo tanto, debe asegurarse de que los datos estén disponibles más adelante. Utilice una variable estática o global.

    
respondido por el CL.

Lea otras preguntas en las etiquetas