• WANTED: Happy members who like to discuss audio and other topics related to our interest. Desire to learn and share knowledge of science required. There are many reviews of audio hardware and expert members to help answer your questions. Click here to have your audio equipment measured for free!

NeatAmp TAS3251 Open Source Hardware - 2x170W I2S in, I2C controlled, integrated DSP amp

jmf11

Member
Joined
Mar 25, 2023
Messages
88
Likes
42
Location
France - Aix en Provence
*** This post is a duplicate from https://www.diyaudio.com/community/...-in-i2c-controlled-integrated-dsp-amp.398823/ ****

Even if it is an "old" project (https://www.diyaudio.com/community/...-controlled-integrated-dsp-amp-tas3251.325826), I create a new thread as the project goes fully open source along the lines of a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.

The NeatAmp is working since 2020. All elements, including the KiCAD files (v5) are now accessible in https://github.com/jmf13/NeatAmpTAS3251/tree/master in an open source hardware spirit along the lines of a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.

As far as I know, there are not so many (no?) equivalent for digital input + DSP + this level of power.

The purpose of the project is to design an "amplification brick" for:

  • Active speakers with DSP usage,
  • digital centered audio systems, like systems based on Raspberry Pi, or PC music servers relying on digitalized music files, micro-controllers (uC) have also rich audio features very suitable for audio projects. Target applications are classic stereo systems, but more specifically multi channel active speakers, for which there are less easy to implement options for the hobbyist.
The sound quality shall be High. Not a "No compromize" quality, but sort of 95% of that quality for a fraction of the price (adjusted pareto rule :). The quality shall be above the common offer around class D DIYT amps, where often design cuts the corners and needs retrofitting and "tuning" to have target performance. The neat amp uses Wüth coils, Elna Carafine on analog audio path, MKP... The TAS3251 datasheet performance is expected to be achieved in that design.

A key idea is modularity. The amplification module shall easily interface with generic, open (manufacturer independant) and well spread protocols:
  • I2S for the audio streams (reference interface since the beginning)
  • I2C for the control of the device (propocol that we can find in any uC
The DSP in feature opens possibilities of removing analog filters, easy performance of tests and experiments on filters, easy implementation of active speakers with oly one digital in wire....

As much as possible the design of the "brick" shall not enforce usage options. I should, as far as possible, let the end user choose how he wants to use the amplification chip. This is a key difference with the ready made amps, where the cheap price comes with an heavy lack of flexibility.

The Open Source Hardware License and making KiCAD files available allows flexibility for the tuning of some key components (like output selfs and caps...), or usage.

The final system is cost competive with the latest Hypex fusion plates DIYclassd.com. 300€ for 2x125W + DSP + Power supply. Is it achievable to have a similar thing for 100€ ?

Last, It should be possible to build from PCB by the hobbyist, with achievable SMD soldering. This is to ensure that even if no manufacturing, the design could be useful to hobbyists.

The board has differenet possible use cases:
  • The board embeds a stm32 uC that allows the board to operate stand alone, for example behind a simple USB to I2S board. The onboard uC controls the TAS3251, loads the DSP parameters, controls the volume,
  • The board is the slave of a Rpi, controlled by RPi I2C and fed by I2S (possible but not implemented yet)

There is also an I2C 256K EEprom for parameters and DSP configurations storage (or other features).

STM32 uC programming can be done either in C, or Arduino style.

The discussion about the project can be found here [design log] Neat 2x170W I2S in, I2C controlled, integrated DSP amp (TAS3251)

To define the configuration of the TI TAS3251, usage of TI application PurePath console (PPC3) with the TAS3251 module is expected. When I started the project, TI was easily granting access to those applications. The Datasheets contain a lot of information on the registers and the configuration, but it seems that not all was documented.

Other important ressources:

TAS3251

NeatAmp Wiki

AIM65/NeatAMP-Test-Dev-software
 

Attachments

  • TAS3251_3D.JPG
    TAS3251_3D.JPG
    182 KB · Views: 147
  • IMG_20200503_095335.jpg
    IMG_20200503_095335.jpg
    300.5 KB · Views: 147

mcdn

Addicted to Fun and Learning
Forum Donor
Joined
Mar 7, 2020
Messages
559
Likes
780
That looks really nice! The STM32 microcontroller presents quite a barrier to entry for a lot of people: it's a pig to interface to and program and is even harder to solder than the TAS3251. What about a socketable Arduino compatible or RP2040 (Pi Pico) option there, with a layer of software to abstract all the I2C and DSP stuff?
 
OP
J

jmf11

Member
Joined
Mar 25, 2023
Messages
88
Likes
42
Location
France - Aix en Provence
Hi,

I run the stm32 as an Arduino. my config runs with a very simple Arduino sketch. So it is an onboard Arduino, you can control exactly as you want. Or you can program it in C with the ST tools. Down to what you prefer (or the complexity of what you want to do).

The basic workflow I use is:
- define the filters you need with TI PPC3 tool, and download the resulting registers in a .txt file,
- copy paste those in the Arduino .h file,
- using Arduino IDE , load the stm32,
- done.

On top, you can program in the uC all I/O you would need. Yo can monitor the execution using the Arduino IDE serial console...

If you want to work with a RPi, just connect the I2C and I2S of the RPi to the board and use only the stm32 for the lower level TAS3251 boot and FAULT management. Flexible

AIM65 did quite a bit of development for this board. You can have a look at it

The first 10 boards were assembled at JLPCB for most of the SMD, including the stm32, the LM5010 voltage regulator. As it was the first batch, the TAS3251, more expensive were not soldered and we hand soldered them. Now that the board is proven to work, would be much better to have those soldered at factory.

Everything is open if someone feels ready to develop a layer of software to abstract all the I2C and DSP stuff ;-)

Best regards,

JMF
 

mcdn

Addicted to Fun and Learning
Forum Donor
Joined
Mar 7, 2020
Messages
559
Likes
780
Ah cool, that makes sense. Some friendly feedback: As a fairly experienced software/hardware person I do still find the project a bit hard to approach. I'd love to help simplify it a bit in terms of getting new people on board. Is there a "simple path" documented somewhere that starts with a JLPCB/PCBWay order and ends in a running amp with no filters?
 
OP
J

jmf11

Member
Joined
Mar 25, 2023
Messages
88
Likes
42
Location
France - Aix en Provence
I take the friendly feedback. It makes sense. I could improve https://github.com/jmf13/NeatAmpTAS3251/wiki to describe this "simple path".

Let's try to experiment:

Pre-conditions:
  • Request TI access to PPC3 software and TAS3251 module,
  • Power supply (lab power supply to start with, I power my 2xNeatAmps configuration with a Meanwell LRS-350-36),
  • USB to I2S module,
  • Install Arduino IDE and the NeatAmp_F030C8 variant (https://github.com/jmf13/NeatAmpTAS3251/tree/master/Arduino variant/NeatAmp_F030C8)
  • stm32 programmer (STLink V2 which is an usb stick (Ali or Ebay sourced - 3€) or a V3 ; I use the one of a Nucleo board),
  • Nice to have: a serial to USB adaptater for debug of HMI. Not needed for getting the amp up and running.
Order and finalize the board:


  • Order from JLCPCB (or equivalent), with assembly of all "tough" SMD parts (at least), including TAS3251 this time. It can be a "basic assembly" of components only on top (there are only 6x0805 parts on the bottom) <=> order
  • Finalize the board:
    • solder all the bottom SMD,
    • solder remaining top SMD (if any after manufacturer assembly)
    • solder through hole parts: caps, connectors...

  • Startup sequence as (to be adjusted):
    • Install Jumpers (JP1: Forced Reset by uC, J2 (Master))
    • Power with 17 to 20V (in order to limit the power sent to the board)
    • Test that 3.3, 12, 15V generated.
    • LED D5 is ON.
    • => program the stm32 with a "Blink" to test correct operation and programming of the uC
    • check correctness for all voltage test points => AVDD should be 0V (TAS not initialized) => If all OK, power OFF


This is what I use for my LX-Minis.

JMF
 
Top Bottom