历史上的今天
返回首页

历史上的今天

今天是:2025年07月24日(星期四)

正在发生

2018年07月24日 | STM32 PCM1770调试

2018-07-24 来源:eefocus

本文初步介绍了PCM1770配置方法与调试过程,希望能起到抛砖引玉的作用。

PCM1770是24位的DAC,支持I2S信号输入,可直接驱动耳机,也可加后级功放来驱动喇叭,应用电压范围为-0.3V至4V,普通的3V3就可以。

     如图1所示,该DAC对22KHZ以上频率有60dB的衰减,相当于自带一个低通滤波,减少了后级的干扰。

     如图2所示,该DAC在3V3电压条件下有100dB的信噪比,72dB的分离度确实低了点,用来玩玩还行。

                                                                                                                              图1


                                                                                                                            图2


接下来讲PCM1770的上电时序,芯片手册中如图3对上电时序描写的很清楚,就是在VCC起来至少1ms之后,将PD引脚拉高,在1024个内部系统时钟后,芯片内部会自动复位,之后双输出会拉高表示复位成功。可以利用GPIO进行PD的操作,也可利用单片机内部的Reset引脚进行硬件复位,我采用了第二种方法,复位电路如图4,时序如图5,CH1是RESET端(PD),CH2是VCC,可见,PD拉高是在VCC拉高1.2ms之后,满足PCM1770的复位时序要求。


                                                                                                     图3
   

                                     图4                                                                                                                                     图5


        再来看看PCM1770的配置寄存器和寄存器的写入时序,常用到的寄存器如图6,关于软件静音、音量衰减、模拟混合等功能可按自己的需求去配置,因为我们用到的数据传输格式为I2S,故在这里必须要配置音频数据传输格式选择寄存器,由图7可得,输出传输数据协议的选择主要是配置FMT寄存器的3个位,使用I2S进行数据传输需将FMT配置为001,从图6看出FMT的3个位位于寄存器3,地址为03h,因此可知要写入数据为0000 0011 0000 0001b。


                                                                                                                            图6

                                                                                                                           图7

                                                                                                                           图8


                                                                                                                          图9
       

      寄存器的写入时序如图8和图9,图8对其进行了简单的描述,就是指MS拉低,MC作为时钟运行,MD发送16位的数据,前8位为写入寄存器的地址,后8位为写入的数据;图9对时序进行了详细的规定,对此编写的简单代码如下。

void init_hardware(){
int i=15;
GPIO_ResetBits(GPIOC, GPIO_Pin_10);//MC
delay_nms(2);
GPIO_ResetBits(GPIOC, GPIO_Pin_7);//MS
delay_nms(2);
  while(i>=0){ 
delay_nms(1);
  GPIO_ResetBits(GPIOC, GPIO_Pin_10);//第1次上升沿
if(i==0){
GPIO_SetBits(GPIOC, GPIO_Pin_12);
  }else if(i==9){
GPIO_SetBits(GPIOC, GPIO_Pin_12);
}else if(i==8){
  GPIO_SetBits(GPIOC, GPIO_Pin_12);
}else{
  GPIO_ResetBits(GPIOC, GPIO_Pin_12);
}
delay_nms(1);
GPIO_SetBits(GPIOC, GPIO_Pin_10);
i--;
}
GPIO_SetBits(GPIOC, GPIO_Pin_12);//MD
delay_nms(2);


推荐阅读

史海拾趣

Aerovox Corporation公司的发展小趣事

Aerovox Corporation成立于1922年,是一家专业生产电容器和电子元件的公司。以下是关于Aerovox Corporation发展的五个相关故事:

  1. 成立与初期发展: Aerovox Corporation于1922年在美国马萨诸塞州波士顿成立,最初名为"Northeast Electric Company",后来改名为"Aerovox Corporation"。公司的创始人是W·H·J·Gilbert先生,他致力于开发高性能的电容器。起初,Aerovox主要生产电感线圈和电容器,为无线电和电视等新兴行业提供支持。

  2. 二战期间的发展: 在二战期间,Aerovox Corporation转向军事市场,为美国军方生产电容器和其他电子元件,支持军事通信和雷达系统的发展。这一时期,公司迅速扩张并积累了丰富的技术经验。

  3. 技术创新与扩张: 随着电子技术的不断发展,Aerovox Corporation不断进行技术创新,推出了一系列具有创新性的产品,包括高压电容器、电感器和电源解决方案。公司不仅在军事领域取得了成功,还在民用市场上获得了广泛的应用。

  4. 全球化和市场拓展: Aerovox Corporation通过建立全球销售网络和合作伙伴关系,拓展了国际市场。公司在美国以外的地区设立了生产基地和销售办事处,提供定制化的解决方案,满足客户不断增长的需求。

  5. 持续创新与领先地位: 如今,Aerovox Corporation仍然致力于持续创新,不断开发新的产品和解决方案,以满足不断变化的市场需求。公司在电力电子、医疗设备、工业自动化、交通运输等领域拥有广泛的应用,保持着行业领先地位。

这些故事展示了Aerovox Corporation作为一家具有悠久历史和丰富经验的电子公司,在不同时期和领域的持续发展和创新。

Coleman Cable Inc公司的发展小趣事

在发展过程中,Coleman Cable积极寻求与行业内外的合作伙伴建立稳固的合作关系。通过与知名电子制造商建立供应链合作关系,Coleman Cable的电缆产品得以广泛应用于各种电子设备中。同时,公司还与科研机构、高校等建立产学研合作关系,共同研发新技术、新产品,推动公司技术的不断创新和升级。

DLG Hanbit公司的发展小趣事

为了保证产品的品质,DLG Hanbit公司建立了严格的质量管理体系,并引进了国际先进的质量检测设备。公司还积极参与国际标准制定,与全球知名电子企业建立了合作关系。通过不断提升产品品质和服务水平,DLG Hanbit公司的产品在国际市场上获得了认可,公司也逐渐实现了国际化战略。

Heatron LED Integration公司的发展小趣事

随着LED照明市场的不断扩大,Heatron LED Integration凭借敏锐的市场洞察力,迅速调整市场战略。公司不仅巩固了在国内市场的领先地位,还积极开拓国际市场,与多家国际知名企业建立了长期合作关系。通过参加国际展会、设立海外分支机构等方式,公司成功将产品推向全球多个国家和地区,实现了品牌的国际化。

GeneSiC公司的发展小趣事

在环保和可持续发展成为全球共识的今天,Heatron LED Integration积极践行绿色发展理念。公司不仅在生产过程中注重节能减排和资源循环利用,还致力于推广高效、节能的LED照明产品。通过不断的技术创新和产品优化,公司成功推出了一系列低碳环保的LED照明解决方案,为推动全球绿色可持续发展贡献了自己的力量。

Cal Test Electronics公司的发展小趣事

随着公司的发展,Cal Test Electronics逐渐与B&K Precision建立了紧密的合作关系。作为姊妹公司,双方在技术研发、产品制造和市场推广等方面展开了深度合作。这种共生关系不仅为Cal Test Electronics带来了更多的资源和支持,也使其在电子配件和测试产品领域的影响力逐渐扩大。通过共享技术和市场资源,双方共同推动了行业的发展。

问答坊 | AI 解惑

[原创]EDA 资料分享

defun( gfe_HelloWorld ()prog( ()    mark = axlDBTransactionStart()    axlControlRaise(\'options)    HelloWorld_form_file = \"./HelloWorld.form\"    _c ...…

查看全部问答>

有关无线技术的一些标准(二)

新兴的无线技术标准 随着人们对无线技术在过程工业中的应用兴趣持续增长,各种可用技术的数量也随之增加――要求为这些应用中的现场网络提供特定标准的愿望也增加了。 为过程工业而开发的无线标准目前有三个,分别是:WirelessHART(无线HART)、 ...…

查看全部问答>

自主式寻迹机器人小车的设计

自主式寻迹机器人小车的设计…

查看全部问答>

“敖飞电子”AVR16开发板芯片手册合集

在论坛芯币兑换的敖飞电子的朋友们不用到处找芯片手册了,我已经为大家准备好了。 …

查看全部问答>

请问DC综合的乘法器是什么类型的?有必要再用verilog专门写一个乘法器吗?

大家好:                 请问DC对于“*”综合出来的乘法器是什么类型的?有必要再用verilog专门写一个乘法器吗?现在我的工作时钟为20m左右,数据位数为32位的,需要乘法器在一个时 ...…

查看全部问答>

基于 LM3S的图形驱动库开发之底层驱动函数的编写

在上一个文档中我给大家介绍了TI图形驱动库的结构,分为三层:显示驱动层,图形基元层,小工具层。其中显示驱动层是需要我们程序员自己补充的。现在我们来具体谈谈如果来补充和书写底层驱动函数。从ti的文档中我们可以看出,我们需要补充的就是tDis ...…

查看全部问答>

【新人求助】关于PIC编程语言的问题

各位兄弟大家好!   本人是学习单片机的新人,不仅是PIC,51单片机以前也没有接触过。   由于工作需要,从现在起需要学习PIC单片机,想听取各位兄弟的意见。   我的问题是汇编语言和C语言各自有什么特点,对于我这样的新手来 ...…

查看全部问答>

STM32F103的USART1接收数据不一致,请香版主和各位兄弟帮忙

我使用英倍特的MCBSTM32开发板,用其USART1进行收发一串数据。 我现在的问题: 串口配置:波特率1200,1个起始位,8位数字,1个EVEN校验,一个停止位 STM32配置:波特率1200,1个起始位,9位数字,1个EVEN校验,一个停止位 串口发送数据: ...…

查看全部问答>

请教430动态分配空间的问题

#include <stdio.h> main() { int *Memory; Memory=(int *)malloc(100*sizeof(int)); .......... } 在编译是通过的。但连接是出现以下问题 Error[e16]: Segment DATA16_Z (size: 0x7d0 align: 0x1) is too long for segment definition ...…

查看全部问答>