Do they? (Sound as good)?
Also, only the two lower-power chips come with digital input. The higher-power ones are analog input only.
Also, only the two lower-power chips come with digital input. The higher-power ones are analog input only.
Where is this information from? I have the MA12070 register map from the only document I could find with it in (Datasheet, 86 pages), and it doesn't have register 0x40 for setting volume. I've been struggling with trying to figure out how to set the volume for weeks. There are 2 pages with read/write registers that go up to 0x2D and then read registers from 0x60. I have the Aliexpress board PL-AD-160 v1.5 with a blue heatsink that is analogue in but an i2c header that I hoped I could use to set the volume. From your offset list, the only registers I have documentation for are 0x1D and 0x60 onwards.The hissing from my ma12070p board magically stopped. I don't know what fixed it. Based on testing this at 12V via battery, and observing that the hissing seemed proportional to supply voltage, I found a 15V supply to use (instead of the 24V I was initially using). I figured if the hissing was quieter, and I put the lid on the chassis, I could live with the hiss.
So I modified it to use the 15V supply, and let it run continuously for a day or two. Thus far, I'd only been using it with cheap speakers. But since it had been working predictably (except for the PCB hissing), I decided to change to my nicer speakers. I continued to let it run continuously.
And yesterday I noticed there was no more hissing! I don't know exactly when it stopped, actually, as at 15V with the case lid on, it was fairly easy to ignore. I did a power cycle, and the hissing did not return. Just now I reverted back to the original 24V PSU, and there is no hissing!
Now my problem is that it appears there is some noticeable latency/lag between issuing commands (start/stop playback, volume change) and hearing the result of those commands on the speaker. I don't know how to measure this, but it appears to be on the order of half to three-fourths of a second. Enough that, for example, AV sync on video playback is so bad as to be unwatchable.
Also, here's a little Python code for doing some basic interaction with the ma12070p via I2C. It's not complete or "production ready" by any means, but hopefully serves as a useful example.
Code:#!/usr/bin/python3 from smbus import SMBus def status(bus): for offset in [ 0x1d, 0x40, 0x35, 0x36, 0x7e, 0x60, 0x61, 0x62, 0x64, 0x65, 0x66, 0x6d, 0x75, 0x7c ]: b = bus.read_byte_data(address, offset) print('offset {0}: value={1} / {2}'.format(hex(offset), hex(b), bin(b))) # I2C address is determined by pins 28/AD0 and 29/AD1 # 0x20 is the default for the ma12070p reference board address = 0x20 bus = SMBus(1) # using RPI GPIO physical pins 3 and 5 print('initial status:') status(bus) # enable limiter # bit 0 set to 1 => default i2s_sck_pol [default] # bit 6 set to 1 => use the limiter bus.write_byte_data(address, 0x36, 0x41) # enable processor AND use right-justified I2S # bit 3 set to 1 => use the audio processor # bits 0:2 all 0 => i2s standard / right-justified 20 bits bus.write_byte_data(address, 0x35, 0x8) # set volume # default is 0x18 => 0 dB # 0x19 => -1 dB # 0x20 => -2 dB # ... # 0x3a => -34 dB # 0x40 => -40 dB # 0xfa => -50 dB # ... # 0xa8 => -144 dB bus.write_byte_data(address, 0x40, 0x3a) # set power mode profile 3 (PMP3) bus.write_byte_data(address, 0x1d, 0x3) print('status after writes:') status(bus) bus.close()
Damn, I got this as an alternative to the MAX9744 boards I've been using, which have i2c volume control. So, I'm going to need an analogue pre-amplifier with an i2c controlled gain. Any recommendations? I don't want an I2S board.
- Home
- Amplifiers
- Class D
- Infineon MA12070 Class D