搜索
bottom↓
回复: 11

求助:PT8211-16位音频DA编程疑问

[复制链接]

出0入0汤圆

发表于 2012-6-4 15:47:58 | 显示全部楼层 |阅读模式

小弟刚学51单片机,蛋痛地从老式VCD上拆下一块PT8211来玩。找到对应文档,貌似很容易驱动的样子,于是有了下面的程序。
为了调试方便,驱动函数只操作高8位,低8位置0。
问题来了:
输入127的时候得到约3.682V最高电压,
输入128时得到最低电压1.241V,
输入0时得到约2.470V,
输入255时得到2.460V.
VCC为4.92V.

按我的理解应该是输入0时,输出电压最小且为0V,输入255时输出电压最大且等于VCC.为什么会出现我的这种情况呢?是我的函数错误还是我理解文档错误,又或者这类音频双DA就是这样设计的呢?
求高人指点一二,拜谢!附上我的函数和找到的说明档.

#include <reg52.h>
//#include "Time.h"
//#include <intrins.h>
//#define NOP _nop_();_nop_();_nop_();_nop_();_nop_()
sbit BCK=P3^6;
sbit WS=P3^5;
sbit DIN=P3^4;
/*双16位D/A芯片,这里当8位用*/
void PT8211_Write(unsigned char R_dat,L_dat)
{
    unsigned char i=0;
        WS=0;                                                  //右声道输入
        for(i=0;i<8;i++)
    {
                BCK=0;
            if(R_dat&0x80)                          //比较高位,是1送1,是0送0
                {
                        DIN=1;
                }
                else
                {
                    DIN=0;
                }
                R_dat=R_dat<<1;
                BCK=1;                                           //BCK上升沿送入数据
        }
        for(i=0;i<8;i++){BCK=0;DIN=0;BCK=1;}          //低8位全置零

        WS=1;                                                  //左声道输入

        for(i=0;i<8;i++)
    {
                BCK=0;
            if(L_dat&0x80)                           //if((L_dat>>7)&0x01)
                {
                        DIN=1;
                }
                else
                {
                    DIN=0;
                }
                L_dat=L_dat<<1;
                BCK=1;
        }
           for(i=0;i<8;i++){BCK=0;DIN=0;BCK=1;}                 //低8位全置零
}





阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入663汤圆

发表于 2012-6-4 16:16:01 | 显示全部楼层
本帖最后由 gzhuli 于 2012-6-4 16:17 编辑

音频DAC是用二进制补码的,最高位是符号位:
0x7F -> 127
...
0x01 -> 1
0x00 -> 0 (中点电压)
0xFF -> -1
0xFE -> -2
...
0x80 -> -128

出0入0汤圆

 楼主| 发表于 2012-6-4 16:21:12 | 显示全部楼层




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-6-4 16:44:51 | 显示全部楼层
音频DAC是用二进制补码的,最高位是符号位:
0x7F -> 127
...
0x01 -> 1
0x00 -> 0 (中点电压)
0xFF -> -1
0xFE -> -2
...
0x80 -> -128

感谢gzhuli!

是不是由于这个符号位的存在,单电源下我无法将输出调到0V或VCC了对吧?这是IC的设计决定的?

出0入663汤圆

发表于 2012-6-4 17:03:18 | 显示全部楼层
音频DAC一般都不是轨到轨输出的,本来就到不了0和VCC,而且直流精度很差,因为音频应用不关心直流精度,只关心线性度。

出0入0汤圆

 楼主| 发表于 2012-6-4 17:14:46 | 显示全部楼层
非常感谢,我消化一下先

出0入0汤圆

 楼主| 发表于 2012-6-4 17:42:34 | 显示全部楼层
修改完毕

void PT8211_Write(unsigned char R_dat,L_dat)
{
    unsigned char i=0;
        R_dat-=128;
        WS=0;                                                  //右声道输入
        for(i=0;i<8;i++)
    {
                BCK=0;
            if(R_dat&0x80)                          //比较高位,是1送1,是0送0
                {
                        DIN=1;
                }
                else
                {
                    DIN=0;
                }
                R_dat=R_dat<<1;
                BCK=1;                                           //BCK上升沿送入数据
        }
        for(i=0;i<8;i++){BCK=0;DIN=0;BCK=1;}          //低8位全置零

        WS=1;                                                  //左声道输入
        L_dat-=128;

        for(i=0;i<8;i++)
    {
                BCK=0;
            if(L_dat&0x80)                           //if((L_dat>>7)&0x01)
                {
                        DIN=1;
                }
                else
                {
                    DIN=0;
                }
                L_dat=L_dat<<1;
                BCK=1;
        }
           for(i=0;i<8;i++){BCK=0;DIN=0;BCK=1;}                 //低8位全置零
}

出0入0汤圆

发表于 2012-9-29 20:02:43 | 显示全部楼层
谢谢 下载进去试试

出0入17汤圆

发表于 2012-10-19 20:38:01 | 显示全部楼层
好,可以玩玩,毕竟是16位呢。可以ADC组成闭环系统。

出0入0汤圆

发表于 2013-5-7 20:50:01 | 显示全部楼层
gzhuli 发表于 2012-6-4 17:03
音频DAC一般都不是轨到轨输出的,本来就到不了0和VCC,而且直流精度很差,因为音频应用不关心直流精度,只 ...

学习了!

MARK

出0入0汤圆

发表于 2013-5-28 13:31:37 | 显示全部楼层
学习学习。

出0入0汤圆

发表于 2014-2-17 16:59:27 | 显示全部楼层
对这些便宜的音频DAC用基准校正直流偏差后,不知能不能当做工业DAC用,哪位小伙伴去试试
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 02:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表