CAN bus is nice, since collision detection and node prioritization is done at the hardware level. As others have said, not all micros have the requisite hardware support.
RS485 with a simple token ring protocol would fit the bill, but fully fault tolerant token rings are difficult to implement.
If physical node failure tolerance is not a major issue, then a simple sequential master protocol over RS485 can be used. Data packets consists of a packet header containing the source node address, the data payload which may be empty, and a tail, with checksum if required. Node-0 sees no comms for x milliseconds, so sends out its packet. Node-1 sees tail of Node-0's packet, so sends it packet. Node 2 sees tail of Node-1's packet, so sends it packet, and so on. When last node send its data, there is no more comms, so Node-0 starts again. If a packet is corrupt, all nodes shut up, and Node-0 starts again. Major failure mode is where a physical Node fails in the middle of the address range, which will result in all higher addressed nodes never communicating. Failure of Node-0 means nothing communicates, but lack of response make it easy to troubleshoot...