ADAU1467 works as SPI master when selfboot is enabled, but how to configure SPI clock frequency for the SPI master?
I tried to look through 1467 datasheet and past EZ threads, but couldn't find it.
I just want to understand how the selfboot function(state machine) works.
As far as I checked with 1467 EVB and SigmaStudio 4.6, Actual SPI clock monitored by a scope
- During Selfboot write : around 10M regardless of "Write Speed" setting,
- Selfboot enabled(read) : around 10k if "Write Speed" was below 1,000k
- Selfboot enabled(read) : around 500k if "Write Speed" was 10,000k
Could you clarify this?
Look at figure 39 in the datasheet. The initial SPI/I2C speed is fixed in the firmware. It is very low speed but it only loads in the 16 byte header from the hex data file. In that header are four bytes that setup the serial port speed for loading in the rest of the hex file. It is not a straightforward number for setting up the speed but you can set this up in SigmaStudio.
Now I have to say I am not 100% that this has not been changed with recent revisions. I do not have time to check this at this time. In SigmaStudio, you setup this speed in the EEPROM Properties. You find it here:
When the window opens up you set the speed here:
You may have more questions but this will get you started.
I will have to look up the information of how the speed is calculated. As I recall it is something like the number of clock cycles for the clock to be high and then the number of cycles for it to be low. So the number in the hex file is not just a number for the speed.
There is a way to change the speed.
The SigmaStudio GUI feature for changing boot speed is currently, broken, though, so here is a workaround. There is a bug fix on the way as well.
The initial loading of the EEPROM header (first 16 bytes in EEPROM memory) is at a set speed, something like <1MHz. I recall the speed is about 400kHz.
After the header is read, and the PLL has locked, the remaining contents of the EEPROM are read at a new speed which is user-defined. The formula for changing the speed is missing from the datasheet, though, so here it is:
EEPROM Speed Configuration Value = ceil(SYSCLK / (2 * SPI_Frequency))
SYSCLK on ADAU1467 is in most cases 300MHz, and SPI Frequency is specified in Hz. So, if you want the speed to be 20MHz (the maximum officially supported speed), the formula is:
EEPROM Speed Configuration Value = ceil(300e6 / (2 * 20e6)) = 8
Remember to convert to hex, so this is 0x08.
Notice that the realized speed will not be as high as 20 MHz because the adjustment is only so granular. The closest you can get is 300e6 / (2 * 8) = 18.75 MHz. The next step up would have been 21.4 MHz.
Now you can change the bytes in your EEPROM sequence to set the speed as needed.
Notice that SigmaStudio doesn't include the Chip Erase or Page Write delays in the Capture Window. So, you will need to add those manually.
I know this response came some months late. If you (or anyone else) are still working on this, we can provide more clarification on how to get this working.