1. If one received frames under an `interrupt_free` section, in my case
`init` in RTIC, the RX IRQ will fire and clear it's enable bit after
`interrupt_free` is complete. There is no frame to read so RX is now
unconditionally disabled forever.
2. On clearing of RX IRQ, TX stops silently. This happens due to the use
of `write` instead of `modify` when modifying IRQ enable bits.
Solution 1: Enable RX IRQs on every call to `try_read` that return no
data. This solution also solves the issue of very delayed handling of
the RX IRQ which would cause the same issue.
Solution 2: Use `modify` instead of `write`.
Running the bxcan driver without having it connected
to a CAN bus causes the `info` logs to bombard.
This removes the logging statements as they looked
like remnants from the development of the driver.
The bx::* separate structs (Can, Rx, Tx) and separate `Instance` trait
are a relic from the `bxcan` crate. Remove them, move the functionality
into the main structs.