STM32 PCM1770调试

发布者:创意驿站最新更新时间:2018-07-24 来源: eefocus关键字:STM32  PCM1770调试 手机看文章 扫描二维码
随时随地手机看文章

本文初步介绍了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);


关键字:STM32  PCM1770调试 引用地址:STM32 PCM1770调试

上一篇:STM32--vs1053 WAV录音实现(保存在SD卡)
下一篇:(STM32)使用DAC输出WAVE音频波形

推荐阅读最新更新时间:2024-03-16 16:09

STM32学习笔记:adc采样得到的电压值用485发送给pc
采用adc1的通道10,将采集到的电压值用485发送给PC显示, 先上原理图, 源代码见附件, 这里想说的是几个要注意的问题: 1,ad输入的电压经过了R42和R44进行分压,所以pc显示的电压值将会减半, 2、采用这个函数进行发送数据的时候,每次都是发送一个8位的数据(即一个字节),也就是最大值为256,。超过1个字节默认发送地位,即你要发送的数据位0x0145,只会发送45,具体可以参考数据手册,下图, USART_SendData(USART3,ADC_Value_B);1 3,pc 机上收集到的数据,如果没有勾选“以HEX显示”则显示的是acsii码,而我们发送数据给PC机发送的则是hex,所以这里要进行一次转换
[单片机]
<font color='red'>STM32</font>学习笔记:adc采样得到的电压值用485发送给pc
嵌入式学习⑦——Ardunio下的STM32串口通信
一、使用Ardunio完成STM32的串口通信 1. 安装Ardunio 安装链接见百度云:百度云盘 提取码:q251 下载之后点击安装程序进行安装 安装完成 进行Ardunio IDE的配置 进入解压后的文件夹,将文件夹中的Arduino_STM32复制到Ardunio的安装目录下的hardware文件夹下 打开Ardunio,点击菜单栏工具开发板“Ardunio ” 开发板管理器 输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装,安装过程可能需要几分钟。 打开系统示例程序 若可以成功编译则证明ARM配置成功 2. 使用USB连接开发板 1).烧录程序 编写以下代码: St
[单片机]
嵌入式学习⑦——Ardunio下的<font color='red'>STM32</font>串口通信
STM32 的待机唤醒功能
STM32 待机模式简介 很多单片机都有低功耗模式,STM32 也不例外。在系统或电源复位以后,微控制器处于运行状态。运行状态下的 HCLK 为 CPU 提供时钟,内核执行程序代码。当 CPU 不需继续运行时,可以利用多个低功耗模式来节省功耗,例如等待某个外部事件时。用户需要根据最低电源消耗,最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。 STM32 的 3 种低功耗模 STM32 的低功耗模式有 3 种: 1)睡眠模式(CM3 内核停止,外设仍然运行) 2)停止模式(所有时钟都停止) 3)待机模式(1.8V 内核电源关闭) 在这三种低功耗模式中,最低功耗的是待机模式,在此模式下,最低只需要 2uA 左右的
[单片机]
<font color='red'>STM32</font> 的待机唤醒功能
基于STM32+机智云物联网平台的农作物需水量计算系统
本文利用农业物联网的相关优势,搭建了一个基于 STM32 、机智云平台的农作物需水量计算系统,利用传感器采集农作物的现场环境信息后通过 ZigBee 协议发送到数据处理终端,根据设置的作物生长系数计算出对应的作物需水量;同时将相关的数据经过 4G 模块传输至机智云物联网平台,实现用户足不出户即可了解到农作物的相关信息,为制定合理的灌溉制度提供数据参考,达成适时灌溉和节约用水等目的。 实物图和App操作界面 01系统总体设计 基于机智云物联网平台的农作物需水量计算系统,利用嵌入式微控制器采集作物的温湿度、风速环境信息,同时采用 ZigBee 技术进行数据的传输,将采集的作物环境信息传输至数据处理终端;当数据处理终端接收
[单片机]
基于STM32+机智云物联网平台的农作物需水量计算系统
STM32单片机串口通信波特率计算方法
1. 什么是波特率 不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特率的计算方法。 2. STM32波特率相关的寄存器 STM32单片机设置波特率的寄存器只有一个:USART_BRR寄存器,如下图所示。 该寄存器的有效位数为16位,前4位用于存放小数部分,后12位用于存放整数部分。将波特率算出来后,数值填入这个波特率就可以了。下面介绍如何计算。 3. 波特率计算方法 STM32的数据手册给出了计算方法,有一个公式,如下图所示: 在这个公式上,共有三
[单片机]
<font color='red'>STM32</font>单片机串口通信波特率计算方法
STM32 HAL库串口发送4字节数据
uint32_t MotorEncoder = 0xff3c1A09; uint8_t code ; code =(uint8_t)(MotorEncoder 24); code =(uint8_t)(MotorEncoder 16&0xFF); code =(uint8_t)(MotorEncoder 8&0xFF); code =(uint8_t)(MotorEncoder&0xFF); HAL_UART_Transmit(&huart1 , code, 4, 0xff); 串口发送4字节的数据,从别人那里找到的代码,但是别人的代码有点小问题,修改了一下发出来,试验过了可以正常显示
[单片机]
STM32系列第8篇--串口配置步骤
//初始化串口1void My_USART1_Init(void) { GPIO_InitTypeDef GPIO_InitStrue; USART_InitTypeDef USART_InitStrue; NVIC_InitTypeDef NVIC_InitStrue; //串口时钟使能,GPIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //GPIO端口模式设置,PA9设置推挽复用,PA10设置浮空模式 GPIO_Init
[单片机]
STM32单片机对CAN过滤器的设置方法
在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否能够接收到想要的数据。下面针对几种不同情况对CAN过滤器(Filter)进行设置。 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//标示符屏蔽模式 CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; 1、对扩展数据帧进行过滤:(只接收扩展数据帧) CAN_FilterInitStructure.CAN_FilterIdHigh=(EXT_ID》》13)&0xFFFF; CAN_F
[单片机]
<font color='red'>STM32</font>单片机对CAN过滤器的设置方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved