Other Parts Discussed in Thread: RM44L920, HALCOGEN
Hello, I am using the RM44L920 Hercules microcontroller.
I use the SCI/LIN module as a serial interface to communicate with an external CPU. The SCI/LIN module is configured with the following settings:
- Baud rate: 460800
- 8 data bits, no parity, and one stop bit
- Multi-buffered mode with length=0 (response field has 1 byte/character)
- Enable interrupt for Framing/Overrun/Parity error, Receive, and Break detect
Unfortunately, after power on, the external CPU sends approximately 200 bytes data with baud rate of 1.8MHz to the RM44L920 microcontroller. As a result, the RM44L920 microcontroller gets stuck at the LIN ISR (linLowLevelInterrupt). The Receive flag (INTVECT1 = 11 / Receive) is consistently asserted after the external CPU sends data to the Hercules microcontroller with 1.8MHz baud rate. However, the bit FE (frame error) in the SCI Flags register is never set to 1, and INTVECT1 is never set to 6 (Frame error), which is expected.
I am wondering why the error interrupt is not being generated (spnu608a, March 2018, Table 26-4 (SCI/LIN Interrupts)). Instead, the Receive flag is always asserted.
When I change the settings of the SCI/LIN module as follows:
- Baud rate: 460800
- 8 data bits, no parity, and one stop bit
- Multi-buffered mode with length=0 (response field has 1 byte/character)
- Enable interrupt for Receive only
The RM44L920 microcontroller still gets stuck at the LIN ISR (linLowLevelInterrupt) after the external CPU sends data to the Hercules microcontroller with a baud rate of 1.8MHz. The Receive flag (INTVECT1 = 11 / Receive) is consistently asserted. However, as expected, the bit FE (frame error) and OE (overrun error) in the SCI Flags register are set to 1.
By the way, when I set the SCI/LIN module in non multi-buffered mode, everything works well. The microcontroller does not stuck at ISR. Is there anything I missed by using Multi-buffered mode?




