- 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~B6R1=0x0;MainLoop1:[P_DAC1]=R1; //输出0[P_DAC2]=R1;CALL Delay //呼叫延时子程序R1+=R3 //幅度提高1 个音阶JMP MainLoop1 //返回MainLoop1Delay: //延时子程序R2=0DelayLoop:R2+=2048JNZ DelayLoop //溢出时R2 变为0,延时结束RETF //子程序返回
原创力文档

文档评论(0)