[DAC] 数播 的时钟问题

[复制链接] 查看: 7277|回复: 10

113

主题

4

好友

717

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
230656
帖子
644
精华
0
经验
717 点
金钱
621 ¥
注册时间
2010-8-17
发表于 2020-6-23 12:52 来自手机端 | 显示全部楼层
最近看了很多资料但还是不理解这个时钟问题
不管你是用什么设备 还是上操作系统
时钟问题是怎么解决的   不论后面是什么样的解码芯片
这个iis信号的时钟是怎么处理的
看了一下103音乐播放器的历程  那不是我不舍得投入成本 用更好的mcu M7这样的或是高端的FPGA 时钟问题也是存在的103的历程是输出SPI信号用VS 2103芯片 这个芯片好像可以把SPI转换成IIS
我仍然想不出怎么解决时钟的问题 那位师傅介绍一下有这种转换时钟的芯片帮个忙或提示一下

14

主题

1

好友

191

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
878796
帖子
180
精华
0
经验
191 点
金钱
163 ¥
注册时间
2020-6-2
发表于 2020-6-23 13:25 | 显示全部楼层
什么时钟问题?说清楚啊

127

主题

0

好友

1万

积分
     

版主 当前离线

脑放进行时

Rank: 7Rank: 7Rank: 7

UID
3986
帖子
18055
精华
2
经验
17387 点
金钱
15124 ¥
注册时间
2005-4-20

社区贡献 优秀设计 论坛版主

发表于 2020-6-23 17:23 来自手机端 | 显示全部楼层
参考厂机  名机

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2020-6-23 21:57 来自手机端 | 显示全部楼层
本帖最后由 BH7KQK 于 2020-6-23 22:44 编辑

自己动动脑子想一想为什么别人可以输出精确的44100,
因为别人用的晶振是11.289600
理论误差是0,套用手册公式算一下。无论是否输出MCK,倍频到67737600,都可以。
最后用示波器测一测。不要人云亦云。
手册之所以用8M晶振是为了保证USB通信。

无论是STM32还是LPC4337我都做过。别人也做过。
问题不是出在理论误差,而是抖动,用ARM几也一样,
所以,为了解决这个问题,在F407之后,都可以外接独立I2S时钟。用好的晶振可以低至0.5PS
另外SPI和I2S是不同的协议,只是硬件上同一个外理方式,同样,放在Ateml上它也不是叫l2S,而是叫SSC,只是叫法不同,能出一样的信号就行。
要是你觉得不爽,STM32还有更专业的SAI接口。

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2020-6-23 22:38 | 显示全部楼层
本帖最后由 BH7KQK 于 2020-6-23 22:39 编辑

以STM32F105为例。代码片段。以及播放流程。

1: 使用11.289600晶振。

#define SYSCLK_FREQ_72MHz  67737600

开PLL3,I2S专用PLL

RCC_PREDIV2Config(RCC_PREDIV2_Div1);
RCC_PLL3Config(RCC_PLL3Mul_6);
RCC_PLL3Cmd(ENABLE);   
/* Configure I2S clock source: On Connectivity Line Devices, the I2S can be
   clocked by PLL3 VCO instead of SYS_CLK in order to guarantee higher
    precision */
RCC_I2S2CLKConfig(RCC_I2S2CLKSource_PLL3_VCO);

I2S2使用PLL3作为时钟。

2:
  SPI_I2S_DeInit(SPI2);
  
  /* I2S peripheral configuration */
  I2S_InitStructure.I2S_Standard = I2S_Standard_LSB;
  I2S_InitStructure.I2S_DataFormat = I2S_DataFormat_16b;
//I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Enable;
        I2S_InitStructure.I2S_MCLKOutput = I2S_MCLKOutput_Disable;
       
  I2S_InitStructure.I2S_AudioFreq = I2S_AudioFreq_44k;
  I2S_InitStructure.I2S_CPOL = I2S_CPOL_Low;

  I2S_InitStructure.I2S_Mode = I2S_Mode_MasterTx;
  I2S_Init(SPI2, &I2S_InitStructure);

  /* DMA1 Channel5 configuration ----------------------------------------------*/
  DMA_DeInit(DMA1_Channel5);
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI2->DR;
-------------------------------------------------------------------------------------
配置DMA之后,使用双缓冲机制,过半中断检测。

之后,就是读卡,在主程序里把WAV数据分别读入缓冲区,启动I2S外设就可以了。

简单来说,就是I2S使用DMA,配置好之后,什么也不用管,主程序只要保证及时把数据丢给DMA缓冲区。
启动之后,DMA就会按照I2S配置的44.100K的频率把数据发送出去,DAC芯片收到就会转换成声音出来。


95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2020-6-23 22:55 | 显示全部楼层
把SPI外设理解为一辆车,它可以装I2S格式,也可以是SPI格式,I2S也分菲利浦的和左对齐,右对齐。然后数据是多少位等。
而不是说它不叫I2S就不是I2S接口,硬件是同一个接口,发的格式不同而已。

10

主题

0

好友

328

积分

业余侠客 当前离线

Rank: 4

UID
7460
帖子
302
精华
0
经验
328 点
金钱
178 ¥
注册时间
2006-2-3
发表于 2020-6-26 12:10 来自手机端 | 显示全部楼层
SPI后加一片CPLD做时钟管理

113

主题

4

好友

717

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
230656
帖子
644
精华
0
经验
717 点
金钱
621 ¥
注册时间
2010-8-17
 楼主| 发表于 2020-7-25 01:07 来自手机端 | 显示全部楼层
其实 我不是这个意思。  可能冫我没有阐述清楚

113

主题

4

好友

717

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
230656
帖子
644
精华
0
经验
717 点
金钱
621 ¥
注册时间
2010-8-17
 楼主| 发表于 2020-7-27 10:42 | 显示全部楼层
lz兄弟  我不想用st的iis  现在数据位也搞不清 准备开板 我实测吧

7

主题

1

好友

408

积分

业余侠客 当前离线

Rank: 4

UID
585925
帖子
412
精华
0
经验
408 点
金钱
394 ¥
注册时间
2013-4-23
发表于 2020-7-28 11:42 | 显示全部楼层
单片机PLL生成得时钟会不特别准,不过也没什么影响,你不应该听不出来。更准确时钟生成是后面用cpld/fpga做I2S接口,利用I2S的主从模式在cpld/fpga端生成时钟。这便是很多什么忽悠人的什么时钟管理的技术内容了,没啥东西。

95

主题

5

好友

1179

积分
     

侠之大者 当前离线

论坛傻逼多

Rank: 6Rank: 6

UID
577648
帖子
1089
精华
0
经验
1179 点
金钱
958 ¥
注册时间
2013-3-26
发表于 2020-7-29 08:30 来自手机端 | 显示全部楼层
TABK 发表于 2020-7-28 11:42
单片机PLL生成得时钟会不特别准,不过也没什么影响,你不应该听不出来。更准确时钟生成是后面用cpld/fpga做 ...

我个人比较过可以听得出来,特别是R2R芯片。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部