Where to begin... :smileyhappy:
Our host/master is always using the FT232 USB converter chip, and is driven by a library we control (the packet is always fully computed with CRC before transmission starts). In addition, we never send or receive more than 6 words / 12 bytes of payload data. Given all that, I think we can assume "gap-less" packets arriving at our client/slave.
But if the host/master OS inserts an intra-packet gap, and the slave interprets that as end-of-packet, the CRC will fail and the slave will silently drop the packet. If there is an intra-packet gap that is so short that the slave doesn't notice, then the CRC will succeed and the packet will be processed normally.
As for using IDLE for end-of-packet detection; you are correct to say that IDLE's one-byte trigger is too short to meet the 3.5 byte delay specified by Modbus. But -- not to be flippant -- so what? If there's a gap of any length, it's *probably* the end of packet (see previous paragraph). And if the CRC checks out, then it's definitely the end of packet.
Since the Modbus uses a strict "request / response" protocol in which all requests are initiated by the master, I think the only place where the 3.5 byte delay comes in to play is when the master wants to retry a packet -- it needs to make sure that enough time has elapsed so a request followed by a retry isn't interpreted as a single packet. But the why would the master be retrying a packet after such a short timeout?
Perhaps I'm missing something fundamental here. Let me know! Thanks.