I've got a stumper here for me so I'm asking others here to see if anyone has any clue on where to look. I'm updating an old board with a new touch chip and a new I2C peripheral. Using SSP 1.2.1 on a S5D9 (it's an old board and these don't like to port much)...Touch chip is on its own I2C bus while the main I2C bus is shared between a couple of threads.
I got the new touch chip added and the driver changed to deal with it and the same with the updated I2C peripheral no problem. Our board also sends audio out the I2S interface to an audio chip. While I've got this new stuff running, the I2S channel has just stopped working (no clock, WSL or data). The first write come back with success but the second write comes back with IN_USE. There is nothing on any of the I2S lines in all of this (WSL comes high during initialization, but otherwise doesn't clock). No idea of how that would be possible since those lines are all outputs from the micro itself.
Going back to an old board, with the last code, I have that one working correctly and giving me audio. Move the same code to the new board and it stops working - no attempt at audio at all other than attempting to write the I2S thing as noted (same problem).
Interestingly enough I noticed that the old board is running I2C clock at 356KHz but the new one is running at 291KHz. This with the same crystals and code and pretty much the same board layout (we changed out two chips). I have no idea if this is related somehow but the thing has me baffled and I'm grasping at straws here.
My guess is something is up with the configuration. Check the pingcfg of the I2S lines to see if they are the same for the old and new boards.
Diff the configuration.xml with the working project - see if anything pops out - it is fairly readable.
I'd start with that at least.
Almost has to be something with the config but diffing is is showing nothing. Pins are the same place.
The difference in clock rates is interesting. Not sure it means anything but it shouldn't be happening either..
IT might be worth trying the latest SSP for Synergy. USually the convert is automatic - at least for a lot of things.
Did you compare your clock config (the fancy one with all the lines and boxes) to see why the I2C clock changed - it should show the derivation leading to the 291K.
The clock tree charts look the same but don't tell me much really. Another interesting thing I found was that on old hardware, I've got an Audio clock out of 706.1KHz (which is about what I'm expecting (705.6KHz)). On the new hardware, I've got nothing at all.
In the pins view (peripherals), it's showing SSI as going out P400 which is correct and that's where I'm seeing it on the old board.
Maybe this does have something to do with clocks.... Is it possible that the crystal is tarting strangely and causing the clock tree to do something strange?
Found the board problem that resulted caused the audio (pin connection missing from layout somehow) but it doesn't explain the clock difference between the two boards in I2C thing. That's a little strange yet.