| SpiConnectionSettings | GHIElectronics.TinyCLR.Devices.Spi | Per-device SPI bus settings: clock, mode, chip select, etc. |
| SpiController | GHIElectronics.TinyCLR.Devices.Spi | Represents an SPI bus controller. Obtain one via GetDefault or FromName(string), then create a SpiDevice for each chip on the bus via GetDevice(SpiConnectionSettings). |
| SpiControllerApiWrapper | GHIElectronics.TinyCLR.Devices.Spi.Provider | Concrete ISpiControllerProvider backed by the native TinyCLR SPI HAL. |
| SpiControllerSoftwareProvider | GHIElectronics.TinyCLR.Devices.Spi.Provider | Software (bit-bang) SPI provider. Useful when no hardware SPI peripheral is available on the desired pins, or to escape pin-mux conflicts. Significantly slower than the native hardware provider. |
| SpiDevice | GHIElectronics.TinyCLR.Devices.Spi | Represents a single chip on an SPI bus. Each transfer is preceded by a re-apply of ConnectionSettings, so multiple devices on the same controller can coexist without manual reconfiguration between calls. |