A Serial Peripheral Interface (SPI) is (at least) a four-wire bus: Master Input Slave Output (MISO); Master Output Slave Input (MOSI); Serial Clock (SCK); and Chip Select (CS), which is used to connect a serial flash, AD/DA converter. The master always generates the clock. Its speed can reach up to 80 MHz, even if there is no real speed limitation (much faster than I2C as well). The Linux I2C subsystem is the interface through which the system running Linux can interact with devices connected on the system's I2C bus. It is designed in such a manner that the system running Linux is always the I2C master.
CH1: UNDERSTANDING I2C DEVICE DRIVER AND I2C SUBSYSTEM IN LINUX
Overview of I2C protocolUnderstanding I2C registers of target device
Understanding the Linux I2C Framework
Understanding the I2C Adapter, Algorithm
Understanding the Client Device Driver
Developing stand alone low level I2C driver
Writing I2C Adapter and Client driver
Interfacing client driver with EEPROM
Hands-On Assignments
Lab1:Setting and porting platform specific embedded linux on BBBLab2:Writing low level I2C driver
Lab3: Writing I2C Adapter and Client driver
Lab4:Interfacing with I2C EEPROM
CH2: UNDERSTANDING SPI DEVICE DRIVER AND SPI SUBSYSTEM IN LINUX
Overview of SPI protocolUnderstanding SPI registers of target device
Writing independent low level SPI driver
Understanding the Linux SPI Framework
Concept of Controller, Client driver registration and probe
Developing stand alone SPI client and cotroller driver
Interfacing with a SPI device
Hands-On Assignment on Embedded Board
Lab1:Setting and porting platform specific embedded linux on BBBLab2:Writing low level SPI driver
Lab3:Writing client and controller driver
Lab4:Interfacing with external device ADC