Hello ADI team
Started project with ADE7953 and have problem with reading value of it's registers.When write to register (3rd byte in transmission is 0x80), on MISO line receive back it's default value (documentation doesn't say about it), but when want to read the register (3rd byte is 0x00), the MISO line is floating high. The same behaviour is with all 8-bit registers I tested and 16-bit.On 24-bit register I don't see output of default value during writing value, of course during reading register or reading last data or last command receive only 0xFF, 0xFFFF or 0xFFFFFF depending register.
Another form of observed activity is IRQ line. It is released several microseconds after RESET (voltage is stable all the time because test works in loop). After writing 0xAD to register 0xFE and 0x30 to register 0x120 the IRQ line goes Low (active). After write 0 to register IRQ_ENA line go High (inactive). It show chip react at least on some commands. I am fighting with it from few days without success.
My hardware is development board (Nucleo-F767ZI) connected by wires directly to ADE7953 chip soldered on separate board. It should be connected through ADUM3154 isolator, but actually is wired directly. Powered with 3,3V (3,308V), voltage on VINTA is 2,611V (bit too high?), on VINTD is 2,485V, on REF is 1,206V. Quartz works on correct frequency. The SPI clock is 2,5MHz, but tried much lower with the same results. Initially was short circuit below capacitor on VINTA line, so the higher value of voltage can be result of it.
The board containing ADE7953, 2x double transoptors and AM1L-0505 DC/DC converter with 80% efficiency, consume 45mA. Too much in my opinion. The 3 LEDs lighting in transoptors consume about 3x3,5mA, total 10,5mA. So ADE7953 consume about 3 times as it should. Can't see any short circuits on board, also re-soldered the chip 2 times to be sure. Board has solder mask and is done by professional manufacturer. Have 2 boards, but actually only one ADE7953 chip co can't compare with other.
For easier diagnostic my test software works in loop:
reset = L
reset = H
wait for IRQ = L
additionally wait extra 100ms to be sure everything is stabilized
write 0x00AD to 0x00FE (write 16 bits, but also tried to write 8-bit. Which one is correct? Register looks to be 8 bit, but in example code I saw 16 bit writing)
write 0x0030 to 0x0120 (this is 16 bits without doubts)
write to CONFIG
read LAST RWD16
and so on with several other registers.
In separate documents include schematic and images taken from oscilloscope showing signals during transmission with description what operation is done. Please help if you could.
Please verify your spi read/write conform to figure 69
16bit address | 8bit read/write| data 0x80 for read 0x00 for write
I thin you don't have the read write byte.
To read the config register
send MSB first 0x0102(address) | 0x80(read)| generate 8 clks get data from spi buffer generate 8 clks get data from spi buffer.
My commands are correct. I do exactly as you wrote (except command for read is 0x00, not 0x80 as you wrote)
opss sorry - you have right. My opcodes for RD/WR are replaced.
It is reason why it respond default command during write, and why MISO line was floating (not stable high) during read.
Just recompiled code and confirm it works correctly.
Thank you very much. The things directly before your eyes are the hardest to see ;-)