A fault-tolerant process control system 200, comprising: a first master process 110 controller including a first processor 111 including first memory 111a and a first serial communication engine 117; at least a second master process controller 110' connected in parallel to said first master process controller including a second processor 111' including second memory 111a' and a second serial communication engine 117'; a first bus switch 211 coupling said first serial communication engine to a shared Serial Peripheral Interface bus 235 including a plurality of SPI lines and a second bus switch 212 coupling said second serial communication engine to said shared SPI bus, wherein said shared SPI bus transmits SPI signals received from said first serial communication engine 117 when said first bus switch 211 is enabled to at least a first target device 120, and transmits SPI signals received from said second serial communication engine 117' when said second bus switch 212 is enabled to at least a second target device 120', and an arbiter block 225 having an input coupled to receive a select control signal from both said first and second master process controllers, the arbiter block is coupled to both said first bus switch 211 and to said second bus switch 212 for single bus switch selection, wherein at any time only one of said first master process controller and said second master process controller is granted access to said shared SPI bus, wherein said first target device 120 and said second target device 120' are comprised of a plurality of input/output modules 120, 120' that are each coupled to field devices including sensors and actuators, the sensors and actuators are coupled to processing equipment in an industrial processing facility; and wherein if the first master process controller and the second master process controller request the shared SPI bus simultaneously, only one of the master process controllers gains access to the shared SPI bus, characterized in that. a fault-free master process controller takes preference over a master process controller with current fault(s). a first master process 110 controller including a first processor 111 including first memory 111a and a first serial communication engine 117; at least a second master process controller 110' connected in parallel to said first master process controller including a second processor 111' including second memory 111a' and a second serial communication engine 117'; a first bus switch 211 coupling said first serial communication engine to a shared Serial Peripheral Interface bus 235 including a plurality of SPI lines and a second bus switch 212 coupling said second serial communication engine to said shared SPI bus, wherein said shared SPI bus transmits SPI signals received from said first serial communication engine 117 when said first bus switch 211 is enabled to at least a first target device 120, and transmits SPI signals received from said second serial communication engine 117' when said second bus switch 212 is enabled to at least a second target device 120', and an arbiter block 225 having an input coupled to receive a select control signal from both said first and second master process controllers, the arbiter block is coupled to both said first bus switch 211 and to said second bus switch 212 for single bus switch selection, wherein at any time only one of said first master process controller and said second master process controller is granted access to said shared SPI bus, wherein said first target device 120 and said second target device 120' are comprised of a plurality of input/output modules 120, 120' that are each coupled to field devices including sensors and actuators, the sensors and actuators are coupled to processing equipment in an industrial processing facility; and wherein if the first master process controller and the second master process controller request the shared SPI bus simultaneously, only one of the master process controllers gains access to the shared SPI bus, characterized in that. a fault-free master process controller takes preference over a master process controller with current fault(s).