Hi,
I am using a beagle bone black with an AM3358 processor and trying to communicate with a cortex-m3. I am using a debian distribution (official beagle package) with 3.8.13-bone70 kernel. The beagle UART1 serial port is being used. The hardware flow control is required because, the cortex M3 has no FIFO (one data register and one deserialisation register). Thus hardware flow control is required and it must react with 1 caracter delay at most.
For test purpose I am making some tests between a beagle (TX) and a Windows computer (RX). On the beagle I have configured the UART1 and the pinmuxing in order to enable the CTS/RTS function. I think the setup is correct because apparently characters are sent by the beagle only when the beagle CTS pin is low. But this only apparently works. Indeed when I take a close look with an oscilloscope I can see the CTS line going high but some caracters continues to be sent up to 1 ms after the CTS line is high ! As I am using a 115200 baudrate this means that up to 12 characters are sent after CTS is inactive (high state).
According to the AM335x datasheet , Cf. 19.3.8.1.3.2 Hardware Flow Control :
Auto-CTS:
The transmitter circuitry checks uarti_cts before sending the next data byte. When uarti_cts is active,
the transmitter sends the next byte. To stop the transmitter from sending the next byte, uarti_cts must
be deasserted before the middle of the last stop-bit currently sent.
Thus in my understanding I would expect one maybe two caracters to be sent after CTS goes high level. Why so much latency ? Is this latency expected due to the usage of FIFO by the AM335x ? If yes is there a way to disable the FIFOs ? Any clue is welcome.
Thanks for your help,
Regards