I want to share this issue that I recently discovered on DRV8711:
if during sleep (SLEEPn forced L) the SPI is used to write 3 or more registers, then after resuming from sleep the first write access is skipped.
It doesn't care if during sleep you also do readings (before, after, interleaved or mixed to the writings) and also it doesn't care if after resume you do some readings before the write: it is affected only the very first write operation after exiting the sleep condition.
The very odd thing is that with just 1 or 2 writings in sleep all works good... the issue starts only if the writes are 3 or more.
As workaround I managed to do a verify of the value just written (reading back the register just after writing it) and then doing it again till the value is as expected.
For sake of semplicity I done that for every write access: then I verifyed that all write operations is now a couple of write-read accesses while the very first write operation after resuming from sleep become a write-read followed by a second write-read (as the first write fails while the second works fine).
That's all.
Gianfranco
↧
DRV8711 write issue after sleep
↧