Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Optimize MCP2515Class::parsePacket()
1) Use the RX STATUS command instead of READ(CANINTF) to check availability of data to read. This reduces SPI usage for a simple "is data available" check from 3 bytes to 2. 2) Use the READ RX BUFFER command to read the RXFn* registers as well as the received data. This requires doing only a single CS pull, and only N+6 bytes transferred over SPI. READ RX BUFFER also takes care of resetting the RXnIF flag. If my math is right, the old code needed N+6 readRegister() calls for a standard frame, and N+9 readRegister() calls for an extended frame, plus one modifyRegister() call to reset the RXnIF flag. Each readRegister() call requires a CS pull and transferring 3 bytes over SPI. For N = 8, - we now send 16 bytes over SPI vs 45 for a standard frame (>2.8x reduction!) - we now do just 2 CS pulls vs 16 for a standard frame (8x reduction!)
- Loading branch information