Hi All,
The background to this is I’m investigating quick ways for me to get extra audio channels into the Teensy. (I’m in Sydney and our supply chain is not exactly prompt)
While browsing around for stuff to improvise with, I noticed that my local electronics shop has a bunch of the Respeaker for Raspberry Pi’s in stock for a very reasonable $40 ea:
https://www.littlebird.com.au/products/respeaker-4-mic-array-for-raspberry-pi
(The Respeaker for Raspberry Pi is a square board, consisting of 4 analog microphones, and the AC108 as ADC to convert to various digital formats, including TDM. It’s aimed at sound localization & voice control stuff)
I’ve been playing with the audio libraries recently, and love the teensy ecosystem a lot.
I see the Teensy audio libraries’ native processing is all performed on 16 bits data. And I see from Paul’s post here: https://hackaday.io/project/2984-te...g/57537-tdm-support-for-many-channel-audio-io
And the audio tool documentation, that the AudioInputTDM object decodes a 256 bit TDM data frame, and puts it into 16 channels of 16 bits each. (Which in the case of the CS42448 board is actually representing 8 channels of 32 bit data. (Which is made up of 24 valid bits, & 8 bits of padding))
I also see that the ICS-52000, which is from what I gather probably the most common TDM mic, similarly uses 32-bit frames with 24 data bits padded with 8 zero bits.
So, given how easy it is to get TDM into Teensy & start processing (around two mouse clicks), I’m hoping that the AC108 ADC chip (which the datasheet promises can provide TDM), will provide a TDM format that is compatible:
https://cdn.sparkfun.com/assets/6/0/d/c/a/AC108_Datasheet_V1.1.pdf
However the datasheet is light on details as to how to set it up. I presume the AC108 must be interrogated via I2C and put in a suitable mode for the TDM to begin working, but there’s nothing about I2C registers in the datasheet, and more detailed manuals are hidden by the manufacturer behind a broken web form.
My next step is to reverse engineer the code here:
https://github.com/respeaker/seeed-voicecard/blob/3d56af9d3ca403487fc5ba18154976950f2a7fd4/ac108.c
to see how the raspberry pi driver works under the hood, and exactly what is required to initialize the chip.
But I thought I’d check with the community first in case someone has already figured it out?
For $40, I’m quite willing to grab one and risk it not working. A $40 microphone array and a $35 teensy to make a quick-and-dirty phased array sonar would be pretty awesome.
Cheers,
Gavin
The background to this is I’m investigating quick ways for me to get extra audio channels into the Teensy. (I’m in Sydney and our supply chain is not exactly prompt)
While browsing around for stuff to improvise with, I noticed that my local electronics shop has a bunch of the Respeaker for Raspberry Pi’s in stock for a very reasonable $40 ea:
https://www.littlebird.com.au/products/respeaker-4-mic-array-for-raspberry-pi
(The Respeaker for Raspberry Pi is a square board, consisting of 4 analog microphones, and the AC108 as ADC to convert to various digital formats, including TDM. It’s aimed at sound localization & voice control stuff)
I’ve been playing with the audio libraries recently, and love the teensy ecosystem a lot.
I see the Teensy audio libraries’ native processing is all performed on 16 bits data. And I see from Paul’s post here: https://hackaday.io/project/2984-te...g/57537-tdm-support-for-many-channel-audio-io
And the audio tool documentation, that the AudioInputTDM object decodes a 256 bit TDM data frame, and puts it into 16 channels of 16 bits each. (Which in the case of the CS42448 board is actually representing 8 channels of 32 bit data. (Which is made up of 24 valid bits, & 8 bits of padding))
I also see that the ICS-52000, which is from what I gather probably the most common TDM mic, similarly uses 32-bit frames with 24 data bits padded with 8 zero bits.
So, given how easy it is to get TDM into Teensy & start processing (around two mouse clicks), I’m hoping that the AC108 ADC chip (which the datasheet promises can provide TDM), will provide a TDM format that is compatible:
https://cdn.sparkfun.com/assets/6/0/d/c/a/AC108_Datasheet_V1.1.pdf
However the datasheet is light on details as to how to set it up. I presume the AC108 must be interrogated via I2C and put in a suitable mode for the TDM to begin working, but there’s nothing about I2C registers in the datasheet, and more detailed manuals are hidden by the manufacturer behind a broken web form.
My next step is to reverse engineer the code here:
https://github.com/respeaker/seeed-voicecard/blob/3d56af9d3ca403487fc5ba18154976950f2a7fd4/ac108.c
to see how the raspberry pi driver works under the hood, and exactly what is required to initialize the chip.
But I thought I’d check with the community first in case someone has already figured it out?
For $40, I’m quite willing to grab one and risk it not working. A $40 microphone array and a $35 teensy to make a quick-and-dirty phased array sonar would be pretty awesome.
Cheers,
Gavin