This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

CMSIS UART triggers ARM_USART_EVENT_RX_TIMEOUT

Using the UART I need to pause out my characters like this.

USARTdrv->Send("A", 1); osDelay(20); USARTdrv->Send("T", 1);

If I don't my device does not reply at all. When spacing it out the CMSIS is calling the ARM_USART_EVENT_RX_TIMEOUT break point, yet I get a good reply from the device? I;d like to understand what is going on here rather then ignoring the break point and moving on .

the baud and bits are correct USARTdrv->Control(ARM_USART_MODE_ASYNCHRONOUS | ARM_USART_DATA_BITS_8 | ARM_USART_PARITY_NONE | ARM_USART_STOP_BITS_1 | ARM_USART_FLOW_CONTROL_NONE, 9600);

My reply from the device is about 300ms, is there a setting for timeout?

Parents
  • I believe I have most of my issues resolved just one last unknown here?

    USARTdrv->Send("AT", 2);
    osSignalWait(0x01, osWaitForever);
    cmd=0;
    while(cmd==0)
    {
            USARTdrv->Receive(&cmd, 2);
            osSignalWait(0x01, osWaitForever);
    }
    
    osDelay(1000);
    

    this code works twice, after the second iteration it throws a ARM_USART_EVENT_RX_TIMEOUT

    After the delay it never sends. On my scope I see this.

    AT OK
    AT OK

    ..then nothing more as the break point was hit, why twice?

Reply
  • I believe I have most of my issues resolved just one last unknown here?

    USARTdrv->Send("AT", 2);
    osSignalWait(0x01, osWaitForever);
    cmd=0;
    while(cmd==0)
    {
            USARTdrv->Receive(&cmd, 2);
            osSignalWait(0x01, osWaitForever);
    }
    
    osDelay(1000);
    

    this code works twice, after the second iteration it throws a ARM_USART_EVENT_RX_TIMEOUT

    After the delay it never sends. On my scope I see this.

    AT OK
    AT OK

    ..then nothing more as the break point was hit, why twice?

Children