我无法将 ADC 字长更改为20、24或32位(卡在16位)。 使用8MHz MCLK、48kHz/立体声 SR。 使用此配置成功计时数据。
我已将第0页寄存器27 (0x1B)值更改为0x1C (20位 WL、生成 BCLK、WCLK)。 但这没有影响。
是否缺少其他配置设置?
谢谢、
杰克逊
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.
我无法将 ADC 字长更改为20、24或32位(卡在16位)。 使用8MHz MCLK、48kHz/立体声 SR。 使用此配置成功计时数据。
我已将第0页寄存器27 (0x1B)值更改为0x1C (20位 WL、生成 BCLK、WCLK)。 但这没有影响。
是否缺少其他配置设置?
谢谢、
杰克逊
亚伦:
随附的是 P0 R27设置为20位字长度并生成 BCLK 和 WCLK (0x1C)的屏幕截图。 设置0x0C、0x2C 和0x3C (16位、24位和32位)的输出相同。
下面也是用于配置编解码器的 I2C 事务的日志。
| 10. | 0.104572 | I2C | 设置写入[0 (0x30)]+ ACK | 103.411. | TLV 首先在 TLV320AIC3204_init()、"conf_data_pll"寄存器中写入 | |
| 0.104597 | I2C | "0"(0x00)+ ACK | 0.024. | PAGE 0、寄存器0 | ||
| 0.104619 | I2C | "0"(0x00)+ ACK | 0.022. | 选择 PAGE 0 | ||
| 11. | 0.104662 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.104687 | I2C | "1"(0x01)+ ACK | 0.024. | 通过软件复位来初始化器件 | ||
| 0.104709 | I2C | "1"(0x01)+ ACK | 0.022. | |||
| 12. | 0.104752 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.104777 | I2C | '4'(0x04)+ ACK | 0.024. | PLL 时钟高电平、MCLK、PLL | ||
| 0.104799 | I2C | C (0x43)+ ACK | 0.023. | |||
| 13. | 0.104842 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.104867 | I2C | '5'(0x05)+ ACK | 0.024. | 为 PLL 加电、P=1、R=1 | ||
| 0.104889 | I2C | '145'(0x91)+ ACK | 0.022. | |||
| 14. | 0.104932 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.104956 | I2C | "6"(0x06)+ ACK | 0.024. | J=10. | ||
| 0.104979 | I2C | n (0x0A)+ ACK | 0.023. | |||
| 15. | 0.105022 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105046 | I2C | "7"(0x07)+ ACK | 0.024. | D=7520 =(29<8)+ 96 (PLL D 值(MSB)) | ||
| 0.105069 | I2C | '29'(0x1D)+ ACK | 0.023. | |||
| 16. | 0.105112 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105136 | I2C | "8"(0x08)+ ACK | 0.024. | (PLL D 值(LSB)) | ||
| 0.105159 | I2C | `(0x60)+ ACK | 0.022. | |||
| 17. | 0.105202 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | 其次是 TLV320AIC3204_init()、"conf_data_clk"寄存器中的 TLV 写入 | |
| 0.105226 | I2C | '11'(0x0B)+ ACK | 0.024. | |||
| 0.105249 | I2C | '130'(0x82)+ ACK | 0.023. | |||
| 18 | 0.105292 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105316 | I2C | '12'(0x0C)+ ACK | 0.024. | |||
| 0.105339 | I2C | '135'(0x87)+ ACK | 0.023. | |||
| 19. | 0.105382 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105406. | I2C | \r (0x0D)+ ACK | 0.024. | |||
| 0.105429 | I2C | "0"(0x00)+ ACK | 0.023. | |||
| 20. | 0.105472 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105496 | I2C | '14'(0x0E)+ ACK | 0.024. | |||
| 0.105519 | I2C | '128'(0x80)+ ACK | 0.022. | |||
| 21. | 0.105562 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105586 | I2C | <(0x3C)+ ACK | 0.024. | |||
| 0.105609 | I2C | "8"(0x08)+ ACK | 0.023. | |||
| 22. | 0.1056552 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105676 | I2C | "27"(0x1B)+ ACK | 0.024. | |||
| 0.105699 | I2C | '12'(0x0C)+ ACK | 0.022. | |||
| 23 | 0.105742 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105766 | I2C | '30'(0x1E)+ ACK | 0.024. | |||
| 0.105788 | I2C | '156'(0x9C)+ ACK | 0.022. | |||
| 24 | 0.105832 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105856 | I2C | %(0x25)+ ACK | 0.024. | |||
| 0.105878 | I2C | '238'(0xEE)+ ACK | 0.023. | |||
| 25 | 0.105922 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.105946 | I2C | '18'(0x12)+ ACK | 0.024. | |||
| 0.105968 | I2C | '130'(0x82)+ ACK | 0.022. | |||
| 26 | 0.106012 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106036 | I2C | '19'(0x13)+ ACK | 0.024. | |||
| 0.106058 | I2C | '135'(0x87)+ ACK | 0.023. | |||
| 27. | 0.106101 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106126 | I2C | '20'(0x14)+ ACK | 0.024. | |||
| 0.106148 | I2C | '128'(0x80)+ ACK | 0.022. | |||
| 28. | 0.106191 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106216 | I2C | =(0x3D)+ ACK | 0.024. | 选择 ADC PRB_R1 | ||
| 0.106238 | I2C | "1"(0x01)+ ACK | 0.022. | |||
| 29. | 0.106281 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | TLV 在 TLV320AIC3204_init()、"conf_data_routing"寄存器中写入第三个 | |
| 0.106306 | I2C | "0"(0x00)+ ACK | 0.024. | |||
| 0.106328 | I2C | "1"(0x01)+ ACK | 0.023. | 第1页 | ||
| 30 | 0.106371 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106396 | I2C | "1"(0x01)+ ACK | 0.024. | |||
| 0.106418 | I2C | "8"(0x08)+ ACK | 0.022. | |||
| 31. | 0.106461 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106486 | I2C | "2"(0x02)+ ACK | 0.024. | |||
| 0.106508 | I2C | "1"(0x01)+ ACK | 0.023. | |||
| 32 | 0.106551 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106575 | I2C | {(0x7B)+ ACK | 0.024. | |||
| 0.106598 | I2C | "1"(0x01)+ ACK | 0.023. | |||
| 33. | 0.106641 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106665 | I2C | '20'(0x14)+ ACK | 0.024. | |||
| 0.106688 | I2C | %(0x25)+ ACK | 0.022. | |||
| 34 | 0.106731 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106755 | I2C | n (0x0A)+ ACK | 0.024. | |||
| 0.106778 | I2C | 3 (0x33)+ ACK | 0.023. | |||
| 35. | 0.106821 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106845 | I2C | =(0x3D)+ ACK | 0.024. | |||
| 0.106868 | I2C | "0"(0x00)+ ACK | 0.022. | |||
| 36. | 0.106911 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | ||
| 0.106935 | I2C | G (0x47)+ ACK | 0.024. | |||
| 0.106958 | I2C | 2 (0x32)+ ACK | 0.023. | |||
| 0.107001 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107025 | I2C | {(0x7B)+ ACK | 0.024. | |||
| 0.107048 | I2C | "1"(0x01)+ ACK | 0.022. | |||
| 0.107091 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107115 | I2C | 4 (0x34)+ ACK | 0.024. | |||
| 0.107138 | I2C | '16'(0x10)+ ACK | 0.022. | |||
| 0.107181 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107205 | I2C | 6 (0x36)+ ACK | 0.024. | |||
| 0.107228 | I2C | '16'(0x10)+ ACK | 0.022. | |||
| 0.107271 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107295 | I2C | 7 (0x37)+ ACK | 0.024. | |||
| 0.107318 | I2C | '4'(0x04)+ ACK | 0.022. | |||
| 0.107361 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107385 | I2C | 9 (0x39)+ ACK | 0.024. | |||
| 0.107408 | I2C | '4'(0x04)+ ACK | 0.023. | |||
| 0.107451 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107475 | I2C | ;(0x3B)+ ACK | 0.024. | 撤消对左 MICPGA 的静音、增益选择为32dB、使通道增益为0dB | ||
| 0.107497 | I2C | "0"(0x00)+ ACK | 0.022. | |||
| 0.107541 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.107565 | I2C | <(0x3C)+ ACK | 0.024. | 撤消对正确 MICPGA 的静音、增益选择为32dB、使通道增益为0dB | ||
| 0.107587 | I2C | "0"(0x00)+ ACK | 0.022. | |||
| 0.147649 | I2C | 设置写入[0 (0x30)]+ ACK | 40.061 | "TLV320AIC3204_CONFIG (CONF_DATA_DE静 音)" | ||
| 0.147673 | I2C | "0"(0x00)+ ACK | 0.024. | |||
| 0.147695 | I2C | "0"(0x00)+ ACK | 0.023. | |||
| 0.147739 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.147763 | I2C | Q (0x51)+ ACK | 0.024. | |||
| 0.147785 | I2C | '192'(0xC0)+ ACK | 0.023. | |||
| 0.147828 | I2C | 设置写入[0 (0x30)]+ ACK | 0.043 | |||
| 0.147853 | I2C | R (0x52)+ ACK | 0.024. | |||
| 0.147875 | I2C | "0"(0x00)+ ACK | 0.023. |
您好、Jackson、
感谢您的分享。
上面的寄存器信息显示了写入命令、对吧? 作为完整性检查、您能否在配置器件后执行寄存器转储以查看寄存器0x1B 是否正在读取0x0C? 我不认为这是一个问题、因为器件能够同时输出 BCLK 和 WCLK、但最好确保寄存器已配置。
我目前没有可用的 AIC3204 EVM、但有一个正在订购中。 一旦我在一天或两天内收到它、我就可以自行进行一些测试、并帮助更好地调试这种行为。
此致、
Aaron Estrada
亚伦:
我尝试在写入之前和之后读取寄存器0x1B、并得到意外结果。 我知道我正在写入寄存器、因为我试验了 P0 R6 (时钟设置寄存器3、PLL J 值)、并且我可以在示波器上看到字时钟的变化、但 I2C 流量不显示正确的读取结果(请参阅下面的内容)。 您能否调查此 I2C 输出并告诉我我是否错误地执行了读取指令?
| 时间[s] | 分析器名称 | 解码的协议结果 | 注释 |
| 1.508E-05 | I2C | 设置写入[0 (0x30)]+ ACK | 将 PAGE 设置为0x00 |
| 0.0001153 | I2C | "0"(0x00)+ ACK | |
| 0.0002153 | I2C | "0"(0x00)+ ACK | |
| 0.0003782 | I2C | 设置写入[0 (0x30)]+ ACK | 将地址设置为0x1B |
| 0.0004783 | I2C | "27"(0x1B)+ ACK | |
| 0.000641 | I2C | 设置读取到['193'(0xC1)]+ ACK | 读取1个字节 |
| 0.0007312 | I2C | "0"(0x00)+ NAK | (? 应该已经是0x0c) |
| 0.0009067 | I2C | 设置写入[0 (0x30)]+ ACK | 将0x2C 写入0x1B |
| 0.0010068 | I2C | "27"(0x1B)+ ACK | |
| 0.0011069 | I2C | 逗号(0x2C)+ ACK | |
| 0.0012704. | I2C | 设置写入[0 (0x30)]+ ACK | 将 PAGE 设置为0x00 |
| 0.0013705 | I2C | "0"(0x00)+ ACK | |
| 0.0014706 | I2C | "0"(0x00)+ ACK | |
| 0.0016336 | I2C | 设置写入[0 (0x30)]+ ACK | 将地址设置为0x1B |
| 0.0017338 | I2C | "27"(0x1B)+ ACK | |
| 0.0018963 | I2C | 设置读取到['193'(0xC1)]+ ACK | 读取1个字节 |
| 0.0019864 | I2C | '255'(0xFF)+ NAK | (? 与之前的读数不同) |
谢谢、
杰克逊
亚伦:
好消息、坏消息:
好消息:我在代码中发现了阻止我读取寄存器的错误:
上面的第6行中有一个错误:"Setup read to ['193'(0xC1)]+ ACK"。 这应该是0x31、而不是0xC1。
(我的错误、来自另一个器件的读取例程的快速剪切和粘贴!)
更正此错误后、我可以读取/写入/读取0x1B 寄存器并通过 I2C 获取预期结果:
| 时间[s] | 分析器名称 | 解码的协议结果 | 注释 |
| 1.51667E-05 | I2C | 设置写入[0 (0x30)]+ ACK | 读取0x1B |
| 0.000115333 | I2C | "0"(0x00)+ ACK | |
| 0.000215583 | I2C | "0"(0x00)+ ACK | |
| 0.000479917 | I2C | 设置写入[0 (0x30)]+ ACK | |
| 0.000580083 | I2C | "27"(0x1B)+ ACK | |
| 0.000844083 | I2C | 设置读取到[1 (0x31)]+ ACK | |
| 0.000934333 | I2C | '12'(0x0C)+ NAK | 读取结果:0x0C (预期在之前的设置中) |
| 0.001211333 | I2C | 设置写入[0 (0x30)]+ ACK | 向寄存器0x1B 写入新值(0x1C) |
| 0.0013115 | I2C | "27"(0x1B)+ ACK | |
| 0.001411667 | I2C | '28'(0x1C)+ ACK | |
| 0.0016765 | I2C | 设置写入[0 (0x30)]+ ACK | 读取0x1B |
| 0.00177675 | I2C | "0"(0x00)+ ACK | |
| 0.001877 | I2C | "0"(0x00)+ ACK | |
| 0.002141333 | I2C | 设置写入[0 (0x30)]+ ACK | |
| 0.002241583 | I2C | "27"(0x1B)+ ACK | |
| 0.0025055 | I2C | 设置读取到[1 (0x31)]+ ACK | |
| 0.00259575 | I2C | '28'(0x1C)+ NAK | 读取结果:0x1C (如预期!) |
坏消息:
这就确认了我已经用0x1B 寄存器写入了0x1C、该寄存器应该将器件配置为一个20位字、但范围没有变化。 似乎还有其他一些寄存器也需要进行更改以启用此功能。
您是否有任何示例脚本用于配置器件的20位或更长字
—杰克逊
您好、Jackson、
在此对拖延表示歉意。
我认为我发现了为什么您的输入/输出数据速率低至16位的原因。 您的 BCLK 设置为~1.56MHz。 在48kHz 的 WCLK 上、最多只允许发送32位数据(左侧和右侧为16位)。
要增加 BCLK 频率、您需要减小 P0、R30中的 BLCK 分频器设置、以发送至少为2*bit_length*FS 的 BCLK。 例如、如果您希望发送32位数据、则需要至少2.822MHz 的 BCLK 频率。 请告诉我这是否有帮助。
此致、
Aaron Estrada