⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dac.c

📁 编译后直接运行的MP3播放器全部C语言源代码 一个包含FAT文件系统、系统引导 Boot、FLASH Driver等内容的
💻 C
字号:
/*************************************************************************** *             __________               __   ___. *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  / *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  < *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \ *                     \/            \/     \/    \/            \/ * $Id: dac.c,v 1.8 2003/11/03 23:36:36 linusnielsen Exp $ * * Copyright (C) 2002 by Linus Nielsen Feltzing * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/#include "config.h"#include "stdbool.h"#include "i2c.h"#include "debug.h"#include "dac.h"#ifdef HAVE_DAC3550Astatic bool line_in_enabled = false;static bool dac_enabled = false;int dac_volume(unsigned int left, unsigned int right, bool deemph){    int ret = 0;    unsigned char buf[3];    i2c_begin();    if (left > 0x38)        left = 0x38;    if (right > 0x38)        right = 0x38;    buf[0] = DAC_REG_WRITE | DAC_AVOL;    buf[1] = (left & 0x3f) | (deemph ? 0x40 : 0);    buf[2] = right & 0x3f;    /* send write command */    if (i2c_write(DAC_DEV_WRITE,buf,3))    {        ret = -1;    }    i2c_end();    return ret;}/******************************************************************** Bit6:  0 = 3V        1 = 5V** Bit5:  0 = normal    1 = low power** Bit4:  0 = AUX2 off  1 = AUX2 on** Bit3:  0 = AUX1 off  1 = AUX1 on** Bit2:  0 = DAC off   1 = DAC on** Bit1:  0 = stereo    1 = mono** Bit0:  0 = normal right amp   1 = inverted right amp******************************************************************//* dac_config is called once to initialize it. we will apply   our static settings because of the init flow.   dac_init -> dac_line_in -> mpeg_init -> dac_config*/static int dac_config(void){    int ret = 0;    unsigned char buf[2];    i2c_begin();    buf[0] = DAC_REG_WRITE | DAC_GCFG;    buf[1] = (dac_enabled ? 0x04 : 0) |        (line_in_enabled ? 0x08 : 0);    /* send write command */    if (i2c_write(DAC_DEV_WRITE,buf,2))    {        ret = -1;    }    i2c_end();    return ret;}void dac_enable(bool enable){    dac_enabled = enable;    dac_config();}void dac_line_in(bool enable){    line_in_enabled = enable;    dac_config();}void dac_init(void){    unsigned char buf[2];    i2c_begin();    buf[0] = DAC_REG_WRITE | DAC_SR_REG;    buf[1] = 0x07;    /* send write command */    i2c_write(DAC_DEV_WRITE,buf,2);    i2c_end();}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -