I know this isn't specifically about Keil, but I've explored all avenues I can think of and had no joy.
Has anyone here got any experience with the Wolfson WM8940 codec?
I've got one connected to an LPC3250 via the I2C bus (using Keil tools), but can't get it to do anything I tell it.
I know it is accepting the data (through 'scoping and the I2C getting all the necessary ACKs).
The closest I've got is by only sending a single 8 bit register values - Whereas the documentation states that two 8 bit bytes are expected.
Any help would be appreciated.
I have encountered i2c peripherals (particularly EEPROMs) that clearly required the MCU (it was a Cortex M3, but also an LPC2478) to insert a few microseconds of delay after ending a transaction and probably other scenarios in order to operate correctly, even though it was not documented at all.
Likewise.
At the moment, I'm triggering operations by Tera Term so things are positively sedate.
In case anyone would like to know the outcome ...
Further scoping of the I2C signals revealed that some transmissions to the Wolfson part were actually being extended.
If a byte were transmitted to the device that had it's LS bit set, then it would immediately be followed by a twin byte where the LS bit was clear.
Transmissions to other devices on the I2C bus was successful.
After repeated checking of code and scouring of various forums I decided to ask NXP support. They came back saying that they had witnessed this before.
Some Wolfson devices assert the data line too early and it would appear that this can cause the I2C state machine in the LPC3250 to misbehave.
Their fix - Add an RC delay to the I2C data line.
As yet, they are unsure as to where this detail should be posted.