#366 uartStartReceive(I) erroneos gates

closed-fixed
2014-05-09
2013-01-14
Gereon
No

I ran into another problem with the uart Driver on the STM32F4 board. This time it is the receive function (uartStartReceive(I))
in the current implementation this asserts
chDbgAssert((uartp->state == UART_READY) && (uartp->rxstate == UART_RX_IDLE),
"uartStartReceiveI(), #1", "not active");
will result that I am never able to receive more than one symbol via uart DMA transfer.
This problem can be resolved by using these asserts instead;
chDbgAssert((uartp->state == UART_READY),
"uartStartReceiveI(), #1", "not active");
chDbgAssert((uartp->rxstate != UART_RX_ACTIVE),
"uartStartReceiveI(), #1", "rx active");

Discussion

    • assigned_to: nobody --> gdisirio
    • priority: 5 --> 4
    • milestone: --> 2.4.3
    • status: open --> open-fixed
     
  • Hi, thanks for finding, I also fixed another instance of the same problem.

    Will be fixed in 2.4.4stable and 2.5.2unstable, fixed in repository.

     
    • status: open-fixed --> closed-fixed