About using PCM3010 with jetson NANO

Hello,

Can the TI PCM3010 audio codec be used with the jetsson nano?
Where can I check how to use it, if possible?

Thank you.

Hello!

I took a quick look at the PCM3010 and I don’t see why this would not work with Jetson. It should be possible to connect the PCM3010 SCKI to the Tegra AUD_MCLK and the I2S interface to on the PCM3010 to that on Jetson. There really should not be any software changes needed because there is no control interface (I2S or SPI) on the PCM3010. You just need to configure the FMT pins on the PCM3010 accordingly. The PCM3010 appears to support standard I2S timing with FMT0 = 1 and FMT1 = 1 and so you use this configuration. Then all you should need to do is …

Configure the pinmux …

$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4 aud_mclk
$ sudo reboot

Then start playback …

$ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S24_LE -t sine -f 500

Regards,
Jon

1 Like

Hello,

Thank you for your anwer.

About glossary.
What means FMT ?

Thank you.

Hello,


What am I supposed to do?

Thank you.

Hello,

If I run the following command and take mclk, the waveform will appear as in #1.
When I take fs, about 3v comes out as in #2.
When I check sclk 12, the signal seems to be weird or not as in #3.

#1.

#2.

#3.

pin map

If the rate is 48000 as you told me
mclk should come out 384 * fs,
sclk knows that fs * 64 should come out.

How can I do this?

Thank you.

Hello,

After reboot

following command show like below image.
Is it right?

sudo /opt/nvidia/jetson-io/jetson-io.py

Thank you.

Hello!

I am not sure what is means, however, please check the codec datasheet for more info or contact the codec vendor or further details.

Regards,
Jon

1 Like

Hello,

here FMT Mentioned.

Thank you.

Ah yes, I forgot that speaker-test does not support S24_LE. You can try S32_LE instead.

Regards,
Jon

1 Like

Hello!

Yes this looks correct.

Regards,
Jon

Hello,

Thank you for your answer.

But,

Can you show me how to workaround this problem?

Thank you.

Hello!

Looks like you have an extra space between ‘tegrasndt210ref,’ and ‘0’. You should have …

$ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S32_LE -t sine -f 500

Jon

1 Like

Hello,


Playback open error: -16,Device or resource busy

Why did this error occur?

Thank you.

Hello,

When I take pin7, the following waveform appears.

It turns out 11.289MHz.

But if I set the sampling frequency to 48000, it is normal that 18.432MHz should come out.


How can I set it up in software?

Thank you.

Hello,

When set as below, the waveform appears only at pin gpio7

There is no waveform from fs (pin 35) and sclk (pin 12).

How should I solve this problem?

How should I solve this problem?

Thank you.

Hello,

I did what you told me
It comes out like this:



gpio9 should come out 18.432Mhz.
However, 12.288Mhz is coming out.

Can you tell me how to set this to 18.432Mhz?

Thank you.

Hello,

When I run the command in another jetson nano module, I get the following error. What’s wrong with this?

Thank you.

Hello!

For the AUD_MCLK this is correct. The AUD_MCLK by default operates at 256 * fs. So 256 * 48000 which is 12.288MHz.

Regards
Jon

1 Like

Hello,

As you told me, fs256 was correct

I checked that the sound came out through the speaker test.

dtb is changed through jetson-io.py,
Can you tell me how to do it by manually modifying the device tree table?

Thank you.

Hello!

The standard procedure to updating the pinmux is described here:

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fadaptation_and_bringup_nano.html%23wwpID0E06P0HA

It works slightly different to jetson-io, but this is the correct way to setup the pinmux statically.

Regards,
Jon