Я бы анонимные члены явно проименовал, например: unsigned autoload:1; //"0"enable,"1"disable
unsigned Dummy1 :3;
unsigned wordsInBatch:3; //"num of words in batch"+1
unsigned Dummy2 :1;
А то мне как-то прилетало, то ли в отладке, то ли при компиляции...
А по сути вопроса - в одном заголовочном объявляешь тип структуры и его включаешь в остальные заголовочные, где объявляешь саму константу внешней, extern const SPI32directPort.
Определение делаешь всего одно, в любом из файлов *.c, который будет компилироваться всегда, когда эта константа нужна. Там.
И везде, куда заинклюдишь заголовки с extern, константа (определённая единожды в *.c) становится доступной.