Part Number: TLV320AIC3256
Tool/software:
Dear TI,
I am working on a project that uses an ESP32-S3 MINI module with a TLV320AIC3256. Generally, things are working really well. I am able to download my PurePath generated project to the AIC3256 and it runs great. When I attempt to write coefficients to miniDSP-D, everything works fine too. Note, I am using adaptive mode and have developed an algorithm to keep both coefficient banks up to date. Now, I am attempting to read-back coefficients. Specifically, I have configured a specAna_TI_V1 as a VU meter and want to read the VU values from it. I have tested the specAna_TI_V1 as a VU meter on the TLV320AIC3256EVM-U board and it works fine. I have also connected my project (board / firmware) to PurePath Studio via the I2C port and sure enough PurePath can read the VU coefficient on my board. However, when I attempt to read coefficient with the ESP32-S3 I get incorrect data. (It looks like I'm reading page 0x00 instead of page 0x2d).
The basic algorithm is this:
- Swap miniDSP-D buffers
- Select the VU coefficient page
- Select the VU coefficient start register
- Read-back four bytes.
I connected up a Saleae and have a trace of the ESP32-S3 transactions: I can verify that the incorrect data is actually on the I2C bus. I have also generated a Saleae trace using the PurePath Studio I2C Memory tool to swap the buffers and read back the coefficients. It works, but seems to do a lot more than necessary. However, one thing did stand out: Instead of reading the four bytes of the VU coefficient as a single read, it sets the address for each I2C read then reads the AIC3256 one byte at a time. Why is this? From my reading it looks like there's an auto-increment function in the AIC3256 I2C read / write.
My plan right now is to duplicate the PurePath Studio process as closely as possible on the ESP32-S3. However I'm not sure why this would be necessary. Is there a document of some sort that outlines how to do coefficient reads from an AIC3256? Perhaps someone can look at my Saleae traces and tell me why each of these transactions is required -- and in some cases what PurePath Studio is doing?
Thanks for your help,
ACV