Хочу взяться за один из данных протоколов, но не знаю какой подойдет больше. P.s.: Я разбираюсь в электронике и схемотехнике, но в языке C я новичок, так что нужен более легкий в программном смысле вариант.
SPI - Serial Peripheral Interface - стандарт обмена данными между устройствами. ICSP - In-Circuit Serial Programming, он же ISP - In-System Programming - способ записи программы в МК. Зависит от типа МК. Может быть реализован поверх аппаратного SPI (В Examples/Arduino ISP именно так и сделано).
SPI - трехпроводной интерфейс для двусторонней передачи данных между устройствами. ICSP - это 6-выводной (в не-ардуино платах чаще 10-выводной) разъем для программирования МК. В нем продублированы пины SPI + питание (кроме линии SS - ее в разъеме ICSP нету).
в двух словах отличия: spi -есть chip select icsp- есть ресет оба произрастают из мотороловского xwire