This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADC3140EVM-PDK:通过 Linux 上的 USB 连接评估板

Guru**** 2482785 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1105281/adc3140evm-pdk-interfacing-with-eval-board-via-usb-on-linux

器件型号:ADC3140EVM-PDK

您好!

我正在使用 Linux (基于 debian)系统进行评估。  检测到器件并报告样本格式、速率、通道等。 跳线设置为从板载麦克风录制。  使用 arecord 时、如下所示:

arecord -D HW:card=T20、dev=0 -c 8 test-01.wav

记录通过 ALSA 成功访问器件并生成文件。  但是、该文件没有输入数据。

如何激活此卡以便它对模拟输入进行采样并通过 USB 输出?  我花了250美元购买此板并评估此芯片。  我需要在 Linux 上使用此器件自动执行从启动到生成输入的过程,因此使用 PP3不是问题--除非它在 Linux 上可用并提供用于配置电路板的命令行参数。  

此电路板的 API 在哪里?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Thomas:

    欢迎使用 E2E、感谢您关注我们的产品!

    我们将尽快查看此查询。 对于我们团队中的大部分成员暂时不上班的任何延误、我深表歉意。

    此致、

    Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Arthur:

    不用担心、我明白了。  我将接头连接到 SCL 和 SDA 引脚以直接发出 i2c 读取/写入。  按照规范(https://www.ti.com/lit/ds/sbas992a/sbas992a.pdf)、我向寄存器发出适当的命令、将其置于唤醒/受电状态。  然后、我通过 USB 进行记录。  这就避免了对驱动器(除 i2c 之外)和配置 UI 的需求、尽管它似乎仅支持4个通道@ 32位的最大48kHz 采样、即使所有滤波都关闭。

    我尝试使 I2S 正常工作、因此我可以获得192kHz/w 4个通道@ 32位、但我在编写的器件覆盖层和硬件时钟中遇到了一些错误、 此时缺少示波器来调试时钟问题、因此我现在必须稳定在48kHz。

    对于任何其他尝试使 EVM 板正常工作的人、您需要初始化 IC。  IC 打开后、您可以通过 USB 进行记录。  虽然我确定有一种通过 USB 驱动 i2c 的机制、但 MB 正在使用 XMOS 芯片、我不确定 TI 如何对其进行编程以访问 i2c、所以我只是四处看看。  假设您可以驱动 i2c、下面是一个 shell 脚本、用于将器件设置为唤醒状态、激活4个通道并为 IC 通电:

    !/bin/sh

    #帮助者
    R=0
    BIN2HEX(){
       i=$(echo $1)
       h=$(echo "obase=16;IBASE=2;$I"| bc)
       R=$(echo 0x$h)

    int2hex(){
       i=$(($1 <<$2))
       b=$(echo "obase=2;$i"| bc)
       BIN2HEX $b


    nomask=0xff
    sc_set(){
       i2cset -f -y -m $3 0x4c $1 $2
       睡眠0.002


    # SW 复位
    SC_SET 0x01 0x01 0x01
    睡眠0.02

    #获取唤醒状态
    i2cget -f -y 3 0x4c 0x02

    # DSP 配置
    BIN2HEX 00000000
    V=$r #
    BIN2HEX 11111000
    M=$r #
    SC_SET 0x6C $v $m

    #----配置信道

    #在为 ADC 通道上电之前配置所需的通道增益设置、并且在 ADC 上电时不要更改此设置。 每个通道增益支持的可编程范围为0dB 至42dB、步长为1dB。

    BIN2HEX 00110000
    SV=$r #通道设置值
    BIN2HEX 11111101
    sm=$r #通道设置掩码

    int2hex 42 2 # int 表示以 dB 为单位的增益、向左移位2
    Gv =$r #通道增益值
    BIN2HEX 11111100
    gm=$r #通道增益掩码

    回声"$gv &$gM"

    #通道1
    #设置
    SC_SET 0x3C $SV $SM
    #增益
    3D A8
    # 42dB = 42 = 101010 = 2A << 2 = A8
    #只写6位从1-7 (-m 0xFC = 11111100)
    SC_SET 0x3D $gv $gm

    #通道2
    SC_SET 0x41 $SV $SM
    SC_SET 0x42 $gv $gm

    通道3
    SC_SET 0x46 $SV $SM
    SC_SET 0x47 $gv $gm

    #通道4
    SC_SET 0x4b $SV $SM
    SC_SET 0x4c $gv $gm


    #--唤醒和通电

    #通过 I2C 使用内部寄存器写入 P0_R2来唤醒器件  
    编号02 81
    SC_SET 0x02 0x81 $nomask

    #通过 I2C 写入 P0_R115来启用输入通道1至通道4  
    73 F0  
    SC_SET 0x73 0xF0 $nomask

    #通过 I2C 写入 P0_R116来启用 ASI 输出通道1至通道4插槽  
    74 F0
    SC_SET 0x74 0xF0 $nomask


    #通过 I2C 写入 P0_R117、为 ADC、MICBIAS 和 PLL 加电  
    75 E0
    SC_SET 0x75 0xE0 $nomask

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了清晰起见,下面是 shell 脚本的 mod/额外信息:

    (笑声)

       i2C_bus=3 #您需要找到合适的总线--这应该有助于:i2cdetect -l 和 ls /sys/bus/i2c/devices

       TLV_addr=0x4c #您需要找到电路板的 i2c 寄存器-- i2cdetect 将列出活动寄存器
       sc_set(){
           i2cset -f -y -m $3 i2c_bus $tlv_addr $1 $2
           睡眠0.002
       }

    (笑声)