You can share the SPI as you like, between the two chip selects, each with its own mode. I do this. Simply write a help function to be used in place of the digitalwrite for each chip select that specifies the complete configuration of the SPI.
void cs1_low() {
SPI.setDataMode(SPI_MODE0);
SPI.setClockDivider(spiRate);
digitalWrite(MP3_XCS, LOW);
}
void cs2_low() {
SPI.setDataMode(SPI_MODE1);
SPI.setClockDivider(spiRate/2)
digitalWrite(MP3_XCS, LOW);
}
...
cs1_low();
foo = SPI.transfer(bar);
cs1_high(); //Deselect Control
...blah blah...
cs2_low();
foo = SPI.transfer(bar);
cs2_high(); //Deselect Control
In some cases, it you may need to account for settling. I use this between SD cards and other chips that are not the same.
It is best practice to not assume the SPI is in the mode you want, as different library or interrupt may have changed it. I have seen plenty of times where the mode is the same, but the speed between the SD card and others are different. Leading to "well it started, but I get junk later".