I have been reading about the different ways modules can connect to Arduino and then how those connections work, but must admit without professional training in microcontrollers and digital electronics I find the alphabet soup a bit confusing. Can someone help hash out the basics in a systemic table/bullet point format what the interfaces/links are and what of those acronyms are synonymous? So far my findings (perhaps incorrectly) are that:
The SPI is a synchronous 3 wire interface taking in fact 4 wires (SCLK - clock, MOSI - master to slave, MISO - back from slave to master [except in daisy chain option], SS - slave select line, pulled low when active) or more (+1 for each additional slave) to communicate, as well as +5 and GND. SPI requires assigning any of the Arduino digital pins in a sketch/code and can connect many devices on the bus. Examples of SPI modules that I have are:
SD card reader.
Daisy chaining / stringing MAX driver chips for 8x8 LED matrixes that don't use MISO wire back to Arduino. You can string up to four of those in line and have the MISO of Slave1 go to MOSI of Slave2 and so on.
The I2C is a synchronous 2 wire interface taking only two wires (SDA - data wire, SLC - clocking wire), as well as +5V and GND. I2C requires assigning addresses in a sketch/code of the device to communicate. The address can be found out with a utility code. Examples of I2C modules that I have are:
1602, 16x2, 20x4, etc LCD controller module/breakout board
BMP180 barometric pressure sensor
MPR121 capacitive touch breakout board
COM port style TX/RX line pins that run at 5V while PC com port runs at 12V. There are TX0/RX0, TX1/RX1, TX2/RX2 pins on mega boards that allow connecting to other microcontrollers. I didn't get to use them yet.