Risolto il "mistero" del WMP a 400 kHz, la colpa è delle resistenze di pull up, se sono troppo alte il segnale viene fortemente distorto e diventa illeggibile.
Quando ho montato il tutto sulla breadboard come pull up ho messo 5.6k, un valore abbastanza alto, per risparmiare un pochino di corrente sul 3.3V, con l'ADXL 345 non ci sono problemi, lavora benissimo e il segnale è ottimo, mettendo sullo stesso bus il WMP il segnale degrada notevolmente a 400 kHz.
Il motivo è legato alle specifiche della I2C che non stabiliscono una distanza massima, il limite è dato dalla capacità complessiva della linea, cavi e device, che non deve superare i 400 pf, inoltre la corrente minima che deve scorrere sulle resistenze di pull up è stabilita a 3 mA, se poi ci si vuole attenere alle specifiche I2C con carico di linea fino a 200 pf vanno bene le pull up, tra 200 e 400 pf andrebbe usato un generatore di corrente a 3 mA.
Con la tensione di 3.3V e 5.6 k scorrono solo 3.3/5.6k = 590 uA, molto meno di quello previsto normalmente per il bus I2C, va bene lo stesso a patto che la capacità complessiva della linea non sia tale da produrre una costante di tempo (RpullIp * Clinea) che rallenta eccessivamente i fronti di salita e discesa del segnale.
Nel caso del WMP + ADXL345 + cavi + breadboard a quanto pare la capacità complessiva è decisamente alta e l'I2C non funziona, mettendo come pull up delle 3.3k il tutto ha iniziato a funzionare, al controllo strumentale il fronte di salita dei segnali è ancora molto lento, ma nei limiti di funzionamento, con 1.5 k ( = 2.2 mA a 3.3 V) i segnali sono buoni.
Credo che i problemi di sgancio del WMP citati dall'autore siano dovuti pure a questo problema, cosa ancora più strana è che nelle indicazioni di collegamento tra il WMP e Arduino, nel suo caso la versione nano, non ci sono proprio le pull up, e senza non può funzionare.