To write SPI data using library one uses the SPI library's [transfer()][1] function: it takes a byte argument and actually sends it over the SPI bus. You can specify more arguments, namely what to do with SS pin, but this doesn't seem to concern you. The [Arduino SPI EEPROM example][2] might also be useful. If you need to send data that isn't 8-bytes, it would be exceedingly convenient if the data size (in bits) was a multiple of 8. In this case, the data is sent in 8-bit (or one-byte) chunks. The simplest way to do it is to treat your data as a byte array: byte data[] = {0x00, 0x00, 0x00, 0x00}; // this is 24 bits (8bits/byte * 4 bytes) // Transfer 24 bits of data for (int i=0; i<4; i++) { transfer(data[i]); // Send 8 bits } Sending data that isn't a multiple of 8 bits is a bit tricky with SPI on Arduino/AVR. [1]: http://arduino.cc/en/Reference/SPITransfer [2]: http://arduino.cc/en/Tutorial/SPIEEPROM