Hello
I have read multiple posts on SPI and I2C however have a few questions which I hope someone can answer. If I have stated anything incorrectly, can someone please correct me.
I am currently working on a project where I need a few Arduino processors to talk to each other. They are not all the same processors, however that shouldnt matter.
The aim is to have the Master Arduino address up to 8 slave Arduino's or devices on the communications backbone, so whether they are arduino compatible processors or if they are IO Expanders for example.
I have been tossing up whether I should be using SPI or I2C as the 'backbone' for the comms.
From what I understand, SPI isnt fully 'supported' in Arduino yet. It works, but its not really native so to speak, and is done via bingbanging?
I2C is fully supported from what I can tell, however it is slower than SPI, but does only use 2 wires.
Is SPI, in its current form, faster than I2C, given the fact that its not really 'supported', or is I2C actually faster with how its currently implemented in Arduino ?
What determines the speed also, as I see there are a few different speed options when reading wikis about these comms. Are these settable somehow or is it a case of the bus going at the speed of the slowest device?
Also can a number of different devices all go on the same bus if they all talk I2C or SPI, or is there some variation between implementation of these between brands so its not all smooth sailing?
Along with the master Arduino talking to a number of slave Arduino's, I want to be able to talk to other SPI and I2C devices, such as SHT15's and SCH1000's and I2C EEPROM etc. I am just a little unsure what is the best method and if I can also implement hardware and software version of SPI or I2C at the same time.
To break up what I just said:
The SHT15 I have isnt SPI or I2C, so isnt really an issue for this now that I have written it...
The SCH1000 is SPI. If I was to have the hardware pins of the master Arduino go to the SPI backbone, is there a way for me to implement software SPI on different pins for the SCH1000 so it doesnt take up an address on the SPI backbone? Basically so I can have 8 addresses for other devices on the backbone.
The EEPROM I have is I2C. If I was to use an I2C backbone instead of SPI, can I implement a software I2C for the same reasons as above, to provide the 8 addresses on the backbone still without this EEPROM taking up one of the addresses?
From what I have seen, I2C looks easier to implement nicely, however I am just unsure about the speed factor and if SPI is actually the better way to go for being a communications backbone, given the current way these comms are implemented in the Arduino IDE.
Is version 19 of the IDE improving support for SPI by the way?
Thanks in advance
James