I use the SC16IS752 NXP reference in a specific project. To test this reference, I have made an evaluation board.
Right now, I test the interrupt mode of the component.
First of all, the RX FIFO trigger level is fixed to 8 bytes.
Software test is extremly simple:
I send 8 bytes from UART microcontroler (MPC5566) to SC16IS762.
When the 8 bytes have been received by SC16IS762, the component triggers an interrupt received by microcontroller.
This interrupt is acknoledged by microcontroller and after approximatively 2 ms in sequential software (out of interrupt), datas in SC16IS762 RX FIFO are got back by microcontroller by the SPI bus.
The problem is that the SC16IS762 signals a Time-out interrupt when I check the interrupt source (in IIR register) just before get back RX FIFO data in SC16IS762.
This time-out flag it seems to be raised because, in my case the time between interrupt and the checking of interrupt source is too long (approximatively 2 ms => more than 4 character times after the last character is received).
But in datasheet, the chapter on Time-out conditions is :
"When the UART receives a number of characters and these data are not enough to set off the receive interrupt (because they do not reach the receive trigger level), the UART will generate a time-out interrupt instead, 4 character times after the last character is received. The time-out counter will be reset at the center of each stop bit received or each time the receive FIFO is read."
In my use case, I receive 8 characters and my RX trigger level is set to 8 characters, Thus the time-out interrupt shall not be trigged ! I have check the interrupt source (in IIR register) in my interrupt routine and the interrupt source is really RHR interrupt.
So I don't understand why after 2 ms, the interrupt source change in spite of the RX trigger level is reach.
Can you help me ?