About using PCM3010 with jetson NANO

Hello,

Yes.

sdcard module + custom carrier board(with PCM3010): OK

emmc module + custom carrier board(with PCM3010): Not OK


Specifically, on a custom carrier board (with audio codec PCM3010)
When using the nano devkit module (sdcard), I set up using jetson-io.py confirmed that the sound was played with the speaker-test command.

When using the nano production module (emmc), the process of setting pin-mux was made using an excel file to create a .dtis file and a dtb file to be applied to the flashing.
There was no sound with the speaker-test command.

Thank you.

Hi,

Is this carrier board based on the product design guide? Actually the product design guide is for emmc module so it is little surprising to me only sd module can work.

Hello,

yes.
If necessary, we can send you a custom carrier board, and send you a circuit diagram related to the audio codec.


Thank you.

Hi,

Can you directly write the register value to emmc module from sdcard module and see if it can work?

For example, you said

for devkit module(sdcard)
sudo grep “aud_mclk|dap4” /sys/kernel/debug/tegra_pinctrl_reg
[sudo] password for jetson8:
Bank: 1 Reg: 0x70003144 Val: 0x00000044 → dap4_fs_pj4
Bank: 1 Reg: 0x70003148 Val: 0x00000054 → dap4_din_pj5
Bank: 1 Reg: 0x7000314c Val: 0x00000004 → dap4_dout_pj6
Bank: 1 Reg: 0x70003150 Val: 0x00000044 → dap4_sclk_pj7
Bank: 1 Reg: 0x70003180 Val: 0x00000000 → aud_mclk_pbb0

and what your emmc module has:

Thus, dap4_din_pj5 and aud_mclk_pbb0 have different values. Could you use devmem tool to directly write the value to these 2 pins?

For example,

dap4_din_pj5 is in register 0x70003148, then you write value 0x54 based on sdcard result on emmc module. To make sure 2 boards have the same values.

1 Like

Hi @WayneWWW,

on emmc_module + custom carrierboard,

sudo devmem2 0x70003148 b 0x54
sudo devmem2 0x70003180 b 0x00

run following command,
sudo grep “aud_mclk|dap4” /sys/kernel/debug/tegra_pinctrl_reg
Bank: 1 Reg: 0x70003144 Val: 0x00000044 → dap4_fs_pj4
Bank: 1 Reg: 0x70003148 Val: 0x00000054 → dap4_din_pj5
Bank: 1 Reg: 0x7000314c Val: 0x00000004 → dap4_dout_pj6
Bank: 1 Reg: 0x70003150 Val: 0x00000044 → dap4_sclk_pj7
Bank: 1 Reg: 0x70003180 Val: 0x00000000 → aud_mclk_pbb0

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

speaker-test 1.1.3

Playback device is hw:tegrasndt210ref,0
Stream parameters are 48000Hz, S32_LE, 2 channels
Sine wave rate is 500.0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 16 to 4096
Period size range from 16 to 2048
Using max buffer size 4096
Periods = 4
was set period_size = 1024
was set buffer_size = 4096
0 - Front Left
1 - Front Right
Time per period = 5.887486
0 - Front Left
1 - Front Right
Time per period = 5.973818
0 - Front Left
1 - Front Right
Time per period = 5.973289
0 - Front Left

But, no sound

Thank you.

Hi neuezeal,

Is i2s signal the correct one? You only mentioned the mclk seems not correct (expected: 18Mhz but result is 12Mhz?).

1 Like

Hello,

Yes. Confirmed by @jonathan:

Thank you.

Hi,

Then it seems not an issue on tegra side. Please contact with vendor of PCM3010 to see if anything is missing.

1 Like

Hello,

On one custom board using the same audio codec
It’s strange that sdcard module works, but emmc module doesn’t.

  1. I’ll send you the board, so can you test it inside?

  2. Are there any plans to make gpio configuration using jetson-io.py available in production modules?

  3. Can you help me find a way to get technical support service from nvidia’s remote support or by contacting nvidia korea?

Thank you.

We can’t do further support on customer’s carrier board, only debug suggestions here.
Please contact with our ecosystem partners for the support services, see https://developer.nvidia.com/embedded/community/ecosystem#hardware_design

1 Like

Hello, @WayneWWW, @kayccc

I try to test the i2s signal on the nvidia devkit carrier board without codec chip.
Jetson nano module is master for i2s. So the Clock signals of i2s is generated without audio codec chip.
I tested follow two case.

  1. devkit module (sdcard) + the nvidia devkit carrier board
    ========================================
    a. For configure the pinmux :
    $ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4 aud_mclk
    $ sudo reboot
    b. Then start playback …
    $ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S32_LE -t sine -f 500
    ========================================

  2. production module (emmc) + the nvidia devkit carrier board
    ========================================
    a. For configure the pinmux :
    Create a dtsi file using Jetson_Nano_Module_Pinmux_Config_Template.xlsm
    Converted to dtb file, applied to Linux_4_tegra/kernel/dtb, and flashed.
    @jonathan even made a patch and applied what was provided.
    b. Then start playback …
    $ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S32_LE -t sine -f 500
    About using PCM3010 with jetson NANO - #26 by forumuser
    ========================================

Test Case 1: 7, 12, 35 on the 40pin header.

Pin 7 Image


Pin 12 Image

Pin 35 Image

Test Case 2: 7, 12, 35 on the 40pin header.
No signal came out from 7, 12, 35 on the 40pin header.
It mean always 0V signal.

Since jetson is the master, the signal should come from pins 7, 12 and 35.

Thank you.

Did you also configure the pinmux in test case 2?

1 Like

Hello,

The dtsi file provided by @jonathan was converted into dtb and applied.

Thank you.

neuezeal,

Can you paste the dmesg from both sdcard module and emmc module?

1 Like

Hello,

a. configure the pinmux,
b. start playback

a, b Which level of dmesg to send?

Thank you.

Hi neuezeal,

We need the one after you start the playback. Thanks.

1 Like

Here,

dmesg_production_module_after_playback.zip (17.6 KB)

dmesg_devkit_module_after_playback.zip (17.8 KB)

Thank you.

Hi neuezeal,

Just want to confirm, is your devkit and module a B01 one or A02?

1 Like

Hello,

This is B01.

Thank you.

Hello,

Do you have any comments?

Thank you.