ΣSigmaStudio Ask AI Русский Log in

ARM initialize ADAU1452 problem

SigmaDSP & SigmaStudio PowerPan Jul 8, 2020 00:00 2 replies Original on forum ↗
Subscribe
PowerPan Question
Jul 8, 2020 00:00

Hi

I have a problem initialize ADAU1452 in Debian by i2c.

initialize data is 49xxx long and ARM driver could only write 8192 bytes per time, and how I could connect data for each transaction with STOP/START in the middle ?

tried first time send address 0x6000 and next time without address, not work, with 0x6000, not work, 0x6000+offset, not work, so, how I could make a driver in kernel ?

Best regards,

Power Pan

Audio Signal Processors

adau1452

SigmaDSP Audio Processors

ADIApproved Reply
Jul 8, 2020 00:00

Hello,

You may split up the write into multiple I2C transactions. The registers are all individually addressable.

For each transaction, ensure that you are writing enough data to fill up each 32-bit register; so, the data length for your block write needs to be a multiple of 4.

Treat each write as its own transaction. The device address, register address, etc. must all be repeated. And include the offset in the register address. The offset must be in words, not bytes.

Is this helpful?

Joshua

PowerPan Reply
Jul 8, 2020 00:00

Hi, Joshua,

thanks for your prompt reply. your answer is very clear and I'll try and send the feedback here.

The device address, register address, etc. must all be repeated. And include the offset in the register address. The offset must be in words, not bytes.

--------------------- how I could put offset? could you make it clearer? my initialize code could work, but not fully work with SPDIF normal and I2S output not correct. for my code first 0x6000 address transfer 8192-4 bytes means 7ff words, so next time will be 0x67ff for the address. but still it did not initialize output channel after 16.

one more question, every time we safe load to 0x6000 for 5 words, then write the address/length to trigger load, my question is if I have the same data and write to different address, could I just execute the trigger part instead of whole write ?

normal process:

safeload to 0x6000 -> write address and length -> same data safeload to 0x6000 -> write new address and length

simplified way:

safeload to 0x6000 -> write address and length -> write new address and length

could it work?

Best regards,

Power Pan