lakylong 发表于 2008-11-22 11:00

用过M62446AFP的朋友进来看看

搞了好几天,实在不知道我写的这个写函数到底有什么地方错了。它就是无法控制音量。请大哥们指点指点。看看什么地方错了,或者有更好的写法的话告诉小弟一声。不胜感激。
void WRITE(int a,int b,int c)                    //a为音量控制字,比如值为40,b为音调中的低音控制字,比如值为+5,c为音调控制中的高音控制字
{
int x=0;                                                       //保存各声道待传的数据
int tone=0,v=0;                               //tone为音调控制字,v为音量控制字。
int temp;
c=c<<12;
b=b<<4;
if((n=1)||(n=0))                               //n为模式,模式为2.0直通模式或者2.1声道模式的时候关音调控制
tone=0x0004;
else
tone=b|c;
CS=1;
delay();                  //CS为片选线,SCK为时钟线,MOSI为数据线
CS=0;
delay();
for(temp=16;temp>0;temp--)                //该for为传送音调控制字
{
MOSI=(bit)(tone&0x8000);
SCK=0;
delay();
SCK=1;
tone=tone<<1;
;
}
delay();
CS=1;
delay();
CS=0;
DELAY(5);
v=a<<9;                                                //前置两声道音量控制字的合成
a=a<<2;
v=v|a;
x=v|0x0001;
CS=1;
delay();
CS=0;
for(temp=0;temp<16;temp++)                //传送前置两声道的音量控制字
{
MOSI=(bit)(x&0x8000);
delay();
SCK=0;
delay();
SCK=1;
x=x<<1;
delay();
}
CS=1;
delay();
CS=0;
DELAY(5);
if(n==3)                                                //当为模式3时(5.1声道模式),后置两声道开,否则送80使衰减无穷大,即静音
x=v|2;
elsex=0x5052;
CS=1;
delay();
CS=0;
for(temp=0;temp<16;temp++)
{
MOSI=(bit)(x&0x8000);
delay();
SCK=0;
delay();
SCK=1;
x=x<<1;
delay();
}
CS=1;
delay();
CS=0;
DELAY(5);
if(n==3)                                                  //当为模式3时(5.1声道模式),中置和低音两声道开,否则送80使衰减无穷大,即静音
x=v|0x0003;
else x=0x5053;
CS=1;
delay();
CS=0;
for(temp=0;temp<16;temp++)
{
MOSI=(bit)(x&0x8000);
delay();
SCK=0;
delay();
SCK=1;
x=x<<1;
delay();
}
CS=1;
delay();
CS=0;
}
另附M62446AFP PDF:http://www.datasheet5.com/datasheet_pdf/EIVEYHYIVHGA

老牙 发表于 2008-11-22 11:31

不懂,等高手出现

lakylong 发表于 2008-11-22 15:57

真的没人懂啊,高手们不要吝啬嘛。我只是个学生,求学而已。请高手们帮帮忙啊:sa

aolin 发表于 2008-11-26 08:51

:22fs 62446没有片选信号的,那个信号叫LATCH,这个信号应该放在每串数据的最后,即每送完16bit数据后,再给LATCH一个脉冲的.数据手册上就写得很清楚的呀

aayy 发表于 2009-4-17 12:42

刚好前几天在朋友家拆过一部用M62446作音量音调控制的机子,有2.1/3.1/5.1声道可选,朋友想将2.1改为2.0声道来听音乐,保留3.1/5.1声道看碟,大伙有什么方法?

zzp19 发表于 2009-4-17 13:40

songrisi 发表于 2009-4-17 15:33

汇编语言!:victory: :victory: :victory:

aayy 发表于 2009-4-17 19:10

原帖由 zzp19 于 2009-4-17 13:40 发表 http://bbs.hifidiy.net/images/common/back.gif
http://bbs.hifidiy.net/viewthread.php?tid=217418&extra=&page=2
我写过一个M62493 的 时序是一样的,你看看有什么帮助没有

谢谢,
对驱动程序不是很懂

huangfu112000 发表于 2013-1-11 02:43

妖!上D唔上D边个太得明啊???叫谭浩强来啦???

huangfu112000 发表于 2013-1-11 02:45

注释又写D唔写D!!!

zhong.jun 发表于 2025-8-27 14:49

音量是:7位音量+7位音量+2位地址=16位。高位在前,看看你自己的是否正确。时钟脉冲3.2uS.
页: [1]
查看完整版本: 用过M62446AFP的朋友进来看看