tas5756m 使用GPIO口加内部PLL产生MCLK的方法究竟是怎么样的?即PDF中的 8.3.3.2 clock Master from a non-audio rate master clock
(由于不知道怎么贴图,所以请见谅)
我看着tas5756m芯片手册文档配置对应的寄存器发现无法正常输出:
按照TAS5756M 的时钟树:
1.我将 0x0d(PLL clock source select) 设置为0x30 (GPIO口)
2.设置0x12(GPIO Source for PLL reference clk) 设置为0x03 (GPIO 0)
3.设置0x08 (GPIO output enable) 设置为0x04 (GPIO 1输出模式 GPIO0 输入) 并将 0x52 GPIO 1的输出模式设置为 0x10(PLL/4)
4.PLL enable 使能 0x04设置为 0x01
但是我发现GPIO 1还是没有时钟输出。我不知道是哪里错了,而且电路连接是正确的.
请问哪位大神知道怎么做的? 谢谢
程序配置如下:
{ 0x09, 0x31 },//BCLK LRCLK output
{ 0x0c, 0x7f },//exit reset
{ 0x20, 0x03 },//除以4 BCK
{ 0x21, 0x3f },//除以64 LRCLK
{ 0x28, 0x00 },//i2s 16位
{ 0x29, 0x00 },//shift 0
{ 0x04, 0x01 },//PLL Enable
{ 0x08, 0x04 },//P0入 P1出
{ 0x0d, 0x30 },//PLL参考GPIO口
{ 0x12, 0x03 },//PLL Source GPIO0
{ 0x14, 0x02 },//P
{ 0x15, 0x01 },//J
{ 0x16, 0x20 },//D
{ 0x17, 0xb7 },//D
{ 0x18, 0x01 },//R
{ 0x52, 0x10 },//GPIO1 output mode
{ 0x1b, 0x01 },//DSP Clock Divider
{ 0x1c, 0x01 },//DAC Clock Divider
{ 0x1e, 0x01 },//NCP Clock Divider
{ 0x1f, 0x01 },//OSR Clock Divider
Mickey Zhang:
三线I2S配置请参考如下的步骤:
#3-Wire I2S
#System Clock PLL Mode with NO MCLK input. Provide supply voltages(3.3V). Don't provide I2S clocks yet.
#Write 0x00 at address 0x00 (Go to Page 0)
w 98 00 00
#Write 0x10 at address 0x02 (Standby request)
w 98 02 10
#Write 0x0A at address 0x25 (Ignore SCK halt detection, Disable clock auto set)
w 98 25 0A
#Write 0x10 at address 0x0D (PLL clock source => BCLK)
w 98 0D 10
#Write 0x00 at address 0x14 (PLL divider : PLL P = 1)
w 98 14 00
#Write 0x20 (BCLK=32fs) at address 0x15 (PLL divider : PLL J = 32)
w 98 15 20
#Write 0x00 at address 0x16 (PLL divider : PLL D(MSB) = 0)
w 98 16 00
#Write 0x00 at address 0x17 (PLL divider : PLL D(LSB) = 0)
w 98 17 00
#Write 0x01 at address 0x18 (PLL divider : PLL R = 2)
w 98 18 01
#Write 0x01 at address 0x1B (DSP Clock divider = 2)
w 98 1B 01
#Write 0x0F at address 0x1C (DAC Clock divider = 16)
w 98 1C 0F
#Write 0x03 at address 0x1D (NCP Clock divider = 4)
w 98 1D 03
#Write 0x07 at address 0x1E (OSR Clock divider = 8)
w 98 1E 07
#Write 0x00 at address 0x22 (Interpolation filter = 8x, fs setting= 48kHz)
w 98 22 00
#Write 0x04 at address 0x23 (IDAC(MSB), IDAC = 1024 cycles)
w 98 23 04
#Write 0x00 at address 0x24 (IDAC(LSB), IDAC = 1024 cycles)
w 98 24 00
#Write 0x00 at address 0x02 (Standby release)
w 98 02 00
#Provide I2S clocks (MCLK : floating, LRCLK : 44.1kHz, BCLK : 32*fs = 1.414MHz)
Wenjin Wu:
回复 Mickey Zhang:
你好,谢谢你的回答, 你的方法应该可以. 但是我们公司现在需要通过GPIO0 引入一个12.288MHz的时钟,然后通过内部PLL进行倍频率后在gpio 1输出,然后使用这个PLL倍频的时钟引到tas5756 Mclk 做主时钟, 最后通过内部分频器分频到为的Bclk \LRCLK 输出。(tas5756做主设备)
请问有没有对应的寄存器配置方法?
Wenjin Wu:
回复 Mickey Zhang:
tas5756 主设备 4线式 主时钟使用12.288 需要产生44.1khz的音频始终. 需要这方面的配置方法. 请问有例子吗?