скорость может быть (теоретическая) до половины системного тактирования (то есть до 10МГц). Но в реалии нужно не забывать про фланки.
А на самом деле она расчитывется от максимальной скорости самого медленного ведомого устройства. Ведь мастер может скольугодно быстро дергать тактирование устройств — но будут ли ведомые успевать читать его данныу?.. Поищите в сети документ AVR151 (вроде бы). Он описывает спецификацию интерфейса.
спасибо
просто у меня появилась идея сделать подобие gearman но на МК, т.е один ведущий мастер (босс), и множество slave'ов (workers),
каждый из которых может выполнять какую-то функцию.
мастер обходит каждый слейв, проверяет статус — занят/нет, если не занят, получает данные от выполненного таска и добавляет новый
Это и есть работа SPI. Хотя под это описание подходят и TWI(I2C) и 1-Wire.
Забыл написать еще про одну беду в SPI: допустим у нас микроконтроллер тактируется на 12МГц, а наш слэйв имеет собственный генератор на 10МГц. В такой ситуации нужно либо делать тактирование от одного генератора, либо выбирать частоту интерфейса кратную обеим частотам. Ведь запросто может получиться так, что на тактировании 11го бита наши сигналы могут не распознаться слэйвом.
Конечно возможно. Для каждого слейва надо выделить свой SS. Еще в некоторых случаях можно соединить все слейвы каскадом и использовать общий SS, тогда они будут работать как один большой сдвиговый регистр.