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

ADAU1452 I2C transaction

SigmaDSP & SigmaStudio keddy Nov 23, 2017 00:00 2 replies Original on forum ↗
Subscribe
keddy Question
Nov 23, 2017 00:00

Hi there,

Is it possible to split the DSP Program data or Parameter data into more than one I2C transaction? If yes, how to do it? Kindly please advise.

Thanks and best regards,

Keddy

Audio Signal Processors

adau1452

SigmaDSP Audio Processors

keddy Reply
Nov 24, 2017 00:00

Hi there,

To be more specific, I want to split single I2C transaction to smaller ones for DSP program data portion.

1) if we transfer the data with a single transaction of 8316 Bytes to address 0xC000:

data read back is exact match of the program data ADAU1452 is working correctly.

2) if we transfer the data with 3 transaction:

Transaction1: Address:0xC000, Size:4096, data Offset: 0

Transaction2: Address:0xD000, Size:4096, data Offset: 4096

Transaction3: Address:0xE000, Size:142 , data Offset: 8192

What we noticed is that:

Read back after each transaction, we get correct data that is programmed in

Read back after all transaction is done, we get:

Transaction 1: Data Matching Transaction 1 but starting part of the section is overwritten by data from Transaction3

Transaction 2: Exact Match

Transaction 3: Exact Match

ADAU1452 is not working.

Need your advice whether the way we split the I2C Transaction is correct. If not, what is the correct way to split the I2C transaction?

BR,

Keddy

DaveThib Reply
Nov 24, 2017 00:00

Hello Keddy,

Perhaps this is a confusion between bytes and words? The SigmaDSP memory is organized and addressed as words not bytes.

There are only 8192 words of program memory and so therefor only 8192 valid addresses for it.

So if you try to go above 0xDFFF then it will wrap around and start back as 0xC000. There is no 0xE000 memory address.

You are writing 8316 bytes which is only 2079 words.

In your writing routine you need to write the data in groups of 4 and then increment the address. If you stop or segment the writes then you will need to do it on the word boundaries since you cannot write a partial word. Well, you can but it will not be what you expect.

By the way, thanks for your excellent writeup of the issue and the tests you did.

Dave T