BTW, this was with 100Kbps module. I tried reducing frequency to 10 Kbps, and observed another infrequent but persistent failure mode - this time it happens after the SendStop() and MCSR ends up being stuck at 0x1c, instead of going to 0x0.
Looks like the problem was resolved by terminating a previous read with a NAK rather than an ACK. The problem was much more pronounced at 4 MHz and therefore easier to debug.
The whole sequence of the single logical operation is:
Then the sequence repeats itself a few times a second. So the questions are:
1. When does not terminating e) with a NAK cause a silent problem in a) which subsequently breaks b) and all future operations of the interface
2. Whey does it happen only rarely at lower speeds (<=400 KHz)?