0

主题

0

好友

64

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
52959
帖子
55
精华
0
经验
64 点
金钱
64 ¥
注册时间
2008-9-2
发表于 2008-11-22 11:00 | 显示全部楼层
搞了好几天,实在不知道我写的这个写函数到底有什么地方错了。它就是无法控制音量。请大哥们指点指点。看看什么地方错了,或者有更好的写法的话告诉小弟一声。不胜感激。
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;
else  x=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

174

主题

11

好友

7274

积分
     

荣誉版主 当前离线

刺桐乐声

Rank: 4

UID
19239
帖子
11953
精华
4
经验
7274 点
金钱
6139 ¥
注册时间
2007-2-25

社区贡献 论坛版主 乐于助人

发表于 2008-11-22 11:31 | 显示全部楼层
不懂,等高手出现

0

主题

0

好友

64

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
52959
帖子
55
精华
0
经验
64 点
金钱
64 ¥
注册时间
2008-9-2
 楼主| 发表于 2008-11-22 15:57 | 显示全部楼层
真的没人懂啊,高手们不要吝啬嘛。我只是个学生,求学而已。请高手们帮帮忙啊

37

主题

3

好友

494

积分

业余侠客 当前离线

Rank: 4

UID
24262
帖子
928
精华
0
经验
494 点
金钱
452 ¥
注册时间
2007-7-3
发表于 2008-11-26 08:51 | 显示全部楼层
62446没有片选信号的,那个信号叫LATCH,这个信号应该放在每串数据的最后,即每送完16bit数据后,再给LATCH一个脉冲的.数据手册上就写得很清楚的呀

5

主题

0

好友

842

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
1543
帖子
950
精华
0
经验
842 点
金钱
773 ¥
注册时间
2004-9-8
发表于 2009-4-17 12:42 | 显示全部楼层
刚好前几天在朋友家拆过一部用M62446作音量音调控制的机子,有2.1/3.1/5.1声道可选,朋友想将2.1改为2.0声道来听音乐,保留3.1/5.1声道看碟,大伙有什么方法?
头像被屏蔽

0

主题

0

好友

95

积分

禁止发言 当前离线

UID
53514
帖子
102
精华
0
经验
95 点
金钱
95 ¥
注册时间
2008-9-7
发表于 2009-4-17 13:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

64

主题

7

好友

1993

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
29889
帖子
4094
精华
0
经验
1993 点
金钱
1692 ¥
注册时间
2007-11-4
发表于 2009-4-17 15:33 | 显示全部楼层
汇编语言!

5

主题

0

好友

842

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
1543
帖子
950
精华
0
经验
842 点
金钱
773 ¥
注册时间
2004-9-8
发表于 2009-4-17 19:10 | 显示全部楼层
原帖由 zzp19 于 2009-4-17 13:40 发表
http://bbs.hifidiy.net/viewthread.php?tid=217418&extra=&page=2
我写过一个M62493 的 时序是一样的,你看看有什么帮助没有


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

3

主题

2

好友

76

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
70282
帖子
82
精华
0
经验
76 点
金钱
72 ¥
注册时间
2008-12-22
发表于 2013-1-11 02:43 | 显示全部楼层
妖!上D唔上D边个太得明啊???叫谭浩强来啦???

3

主题

2

好友

76

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
70282
帖子
82
精华
0
经验
76 点
金钱
72 ¥
注册时间
2008-12-22
发表于 2013-1-11 02:45 | 显示全部楼层
注释又写D唔写D!!!

34

主题

7

好友

1817

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
532639
帖子
1599
精华
0
经验
1817 点
金钱
1571 ¥
注册时间
2012-10-2
发表于 2025-8-27 14:49 | 显示全部楼层
音量是:7位音量+7位音量+2位地址=16位。高位在前,看看你自己的是否正确。时钟脉冲3.2uS.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版| ( 鄂ICP备2025138941号-3 ICP证:鄂B2-20130019 公安局网监备:420100007348 邮箱:1343292467@qq.com )

GMT+8, 2025-9-22 06:09 , Processed in 0.157635 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部