hallo TDK
wenn ich das richtig sehe, sendet der sensor einfach 11 brauchbare bits. das hindert dich aber nicht 16 taktflanken zu senden, resp. 16 bits einzulesen. wenn ich deinen text lesse und deinen code, so bringst du 'bits' und 'bytes' durcheinander: 8 bits sind 1 byte. vielleicht basiert darauf der fehler?
ps: bist du sicher, dass deine berechnung (shifts und addition) OK ist, ich habe ein dumpfes gefühl, dass da auch was mit der SPI-konfiguration nicht i.O. ist (ist aber nur eine vermutung). sinn machen würde doch sowas wie:
value1 = (int32)SPI_READ(0x10); // reads upper 8 bits
value2 = (int32)SPI_READ(0x10); // reads lower 3 bits
value1 <<= 3; // shifts upper 8 bits by 3, 0000'0000'xxxx'xxxx -> 0000'0xxx'xxxx'x000 (x = received bits)
value2 >>= 5; // shifts lower 3 bits by 5, 0000'0000'xxxy'yyyy -> 0000'0000'0000'0xxx (y = received non sense bits)
value = value1 | value2; // packs the 11 bits together
brauchst du wirklich int32? int16 täte es auch schon ;-)