Other Parts Discussed in Thread: C2000WARE
Hello
I am writing an interrupt driven SCI driver to communicate between 2 micro controllers. It is not clear from the technical manual how can I detect the end of block?
I am using SCI in standard mode with FIFO enabled. Per the technical manual, the receive FIFO interrupt RXINT is common interrupt for SCI FIFO receive, receive error, and receive FIFO overflow. How do I use these interrupts to detect end of message? For example, if the block (or message) length is say 20 bytes. On receiving, I will get RXINT when FIFO is full. I will move these bytes to my local buffer and then wait for remaining block. Now, there are only 4 bytes left. Will the receive FIFO generate RXINT interrupt when 4 bytes are received and then line is Idle? If yes, then is there any flag to indicate that this interrupt was caused due to Idle time?
I also checked Idle line mode in multiprocessor communication. But that only detects start of a block after Idle line and not end of a block due to line being Idle for longer than 10-bits. In section 19.8.1 Step 4: " If the CPU is being addressed, the service routine clears the SLEEP bit and receives the rest of the data block." --- How does it detect end of block via interrupt? (I want line to be Idle as indication of end of block)
Thank you very much for your help.
Zubair Hameed