DAC方式音频输出.docVIP

  • 25
  • 0
  • 约1.92千字
  • 约 3页
  • 2017-06-07 发布于重庆
  • 举报
DAC方式音频输出

13 DAC方式音频输出 文章来源:凌阳科技大学计划 作者:凌阳科技大学计划 发布时间:2005-6-3 15:31:19 SPCE061A 为音频输出提供两个DAC 通道:DAC1 和DAC2,分别由经由DAC1和DAC2 引脚输出。DAC 的输出范围从0x0000 到0xFFFF。如果DAC 的输出数据被处理成PCM 数据,必须让DAC 输出数据的直流电位保持为0x8000,且仅有高10 位的数据有作用。DAC1 和DAC2 的输出数据应写入P_DAC1(写) ($7017)和P_DAC2(写)($7016)单元。上电复位后,两个DAC 均被自动打开,此时会消耗少量的电流(几毫安)。所以如不需要用它们,尽量将P_DAC_Ctrl(写)($702AH)单元的第1 位设为‘1’,关闭DAC 输出。 DAC 的直流电压必须保证平稳地变化。否则会由于电压的突变引起扬声器产生杂音。采用ramp up/down 技术,可以减缓电压变化的幅度,从而输出高品质的音频数据。它的应用场合包括:被唤醒/上电复位后首次使用DAC 时,上电复位功能被关闭/进入睡眠状态之前。 P_DAC2(读/写)(7016H) DAC2 是个10 位的D/A 转换单元。在DAC 方式下,该单元带有10 位的缓冲寄存器DAR2。 P_DAC2(写):通过此单元直接写入10 位数据到10 位寄存器DAR2,来锁存DAC2的输入数值(无符号数)。 P_DAC2(读):从DAR2 内读出10 位数据。 P_DAC1(读/写)(7017H) DAC1 是个10 位的D/A 转换单元。在DAC 方式下,该单元带有10 位的缓冲寄存器DAR1。 P_DAC1(写):通过此单元直接写入10 位数据到10 位寄存器DAR1,来锁存DAC1的输入数值(无符号数)。 P_DAC1(读):从DAR1 内读出10 位数据。 P_DAC_Ctrl(写) (702AH) DAC 音频输出方式的控制单元(如 2.22 所示),其中第5~8 位用于选择DAC 的数据锁存方式;第3、4 位用来控制A/D 转换方式;第1 位为‘0’ ,用于双DAC 音频输出。b9~b15 为保留位。 2.22 详细地列出了P_DAC_Ctrl 单元的b3~b8 的控制功能。 DAC 输出特性 DAC是被设计来用作音频输出设备。通常DAC的最大输出电流和AVdd成正比。参考表2.23,DAC的最大输出电流范围是“正常电流值±10%”。例如,AVdd=3.0V、DAC@3mA时,DAC的最大输出电流范围是2.7mA~3.3mA。 我们在得知DAC的最大输出电流以后,模拟电压输出范围可由DAC的负载来决定。由于DAC本身的物理特性,最大的输出电压将比AVdd低0.3V~0.4V。例如,当电流为3mA,AVdd=3V,电阻为866 Ohm时,向P_DAC写入0xFFC0,这时,最大的输出电压为3mA×867Ohm=2.6V。如果电阻值大于867 Ohm,输出电压值的变化不一定根据电阻的值成正比。 [例2.19]: 本实验采取直接方式,通过编程实现一个锯齿波,将实验板的DAC 输出端接示波器可以观察到锯齿波形,同时也可以听到AUD1 和AUD2 两端的扬声器有持续间断的声音。 // Date: 2002/06/19 //************************************************************* .DEFINE P_DAC_Ctrl 0x702A .DEFINE P_DAC1 0x7017 .DEFINE P_DAC2 0x7016 .CODE .PUBLIC _main; _main: INT OFF; //关中断 R1=0x0000; //设置DAC 输出的数据锁存方式,A/D 转换方式 [P_DAC_Ctrl]=R1; R3=0x0040 //D/A 转换为10 位,即B15~B6 R1=0x0; MainLoop1: [P_DAC1]=R1; //输出0 [P_DAC2]=R1; CALL Delay //呼叫延时子程序 R1+=R3 //幅度提高1 个音阶 JMP MainLoop1 //返回MainLoop1 Delay: //延时子程序 R2=0 DelayLoop: R2+=2048 JNZ DelayLoop //溢出时R2 变为0,延时结束 RETF //子程序返回

文档评论(0)

1亿VIP精品文档

相关文档