68

主题

44

好友

1万

积分
     

贵宾 当前在线

Rank: 3Rank: 3

UID
111707
帖子
12480
精华
3
经验
12893 点
金钱
12349 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2024-3-3 17:17 | 显示全部楼层
dayugg 发表于 2024-3-1 21:10
你存疑的“if(i_data & 0x80)”语句是高位写入的转换。2310要求高位写入,我跟楼主算法代码不同的是楼 ...


嗯嗯,左右声道单独发送 是这类芯片的标准写法,。

因为有些场合需要平衡控制。即 左右声道音量可以独立调节。
我用16位是自己没有 独立调节的需求。

0

主题

0

好友

319

积分
     

业余侠客 当前离线

Rank: 4

UID
18739
帖子
652
精华
0
经验
319 点
金钱
283 ¥
注册时间
2007-2-10
发表于 2024-3-3 22:51 | 显示全部楼层
谢谢楼主分享

2

主题

1

好友

263

积分

业余侠客 当前离线

Rank: 4

UID
43174
帖子
282
精华
0
经验
263 点
金钱
259 ¥
注册时间
2008-5-15
发表于 2024-3-4 20:55 | 显示全部楼层
我自己写的程序今天也成功出声了,我没有用中断来写,虽然还没一键静音,虽然还不能保存当前音量,已经很开心了。
这几天都被那个SDCC编译器误导了,搞得我一直怀疑自己的程序,后来还是用了Keil一次成功。
再次感谢楼主!!(顺便说一下楼主106楼的代码编译出来发现旋转方向是反的

40

主题

6

好友

1493

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
20253
帖子
1325
精华
2
经验
1493 点
金钱
1278 ¥
注册时间
2007-3-16

社区贡献 乐于助人

发表于 2024-3-5 21:14 | 显示全部楼层
转眼这么多年过去了。算起来10年前折腾过PGA2310. 也很多年没来论坛了

23

主题

0

好友

310

积分
     

业余侠客 当前离线

Rank: 4

UID
36802
帖子
598
精华
0
经验
310 点
金钱
278 ¥
注册时间
2008-3-6
发表于 2024-3-6 15:29 | 显示全部楼层
jacksl528 发表于 2023-12-10 17:56
PGA2311 是德州仪器十年前推出的 “新一代”数字音量控制器件。
一个消费级半导体器件从被设计到 ...

我自己打板,死活弄不好,无论怎么调电位器(EC11),输出R,L都是对地短路。交流输入9V,一路7805供单片机和3211数字供电,一路7805供3211模拟供电和负压芯片。这样取电正常吗

QQ截图20240306151711.png

68

主题

44

好友

1万

积分
     

贵宾 当前在线

Rank: 3Rank: 3

UID
111707
帖子
12480
精华
3
经验
12893 点
金钱
12349 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2024-3-6 16:00 | 显示全部楼层
cbng 发表于 2024-3-6 15:29
我自己打板,死活弄不好,无论怎么调电位器(EC11),输出R,L都是对地短路。交流输入9V,一路7805供单片 ...

测量几个供电电压是否正常,如果是正常的,  就看程序是否烧录成功。

这个系统通电后静态电流因该在40-50mA左右 为正常值。

2

主题

1

好友

263

积分

业余侠客 当前离线

Rank: 4

UID
43174
帖子
282
精华
0
经验
263 点
金钱
259 ¥
注册时间
2008-5-15
发表于 2024-3-6 16:55 | 显示全部楼层
cbng 发表于 2024-3-6 15:29
我自己打板,死活弄不好,无论怎么调电位器(EC11),输出R,L都是对地短路。交流输入9V,一路7805供单片 ...

仔细检查有没有接触不良,我做了5个其中一个也是没有声音,后来发现是PGA2311的第十脚没焊接好,导致右声道未有效接地。按理说右声道不影响左声道,可偏偏整个系统就是出不来声。看来数字电路都是相关的,不能以模拟电路的思维来判断。
无标题.jpg

2

主题

0

好友

53

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
793295
帖子
68
精华
0
经验
53 点
金钱
49 ¥
注册时间
2015-5-26
发表于 2024-3-6 18:53 | 显示全部楼层
羡慕会单片机的,楼主出个单数码管显示0-9的就更好了

23

主题

0

好友

310

积分
     

业余侠客 当前离线

Rank: 4

UID
36802
帖子
598
精华
0
经验
310 点
金钱
278 ¥
注册时间
2008-3-6
发表于 2024-3-6 19:34 | 显示全部楼层
本帖最后由 cbng 于 2024-3-6 19:35 编辑
jacksl528 发表于 2024-3-6 16:00
测量几个供电电压是否正常,如果是正常的,  就看程序是否烧录成功。

这个系统通电后静态电流因该在40 ...


9v输入,电流35ma。电压都是+4.9,-4.9。程序烧录成功了。估计是2311的问题,淘宝15元包邮的

23

主题

0

好友

310

积分
     

业余侠客 当前离线

Rank: 4

UID
36802
帖子
598
精华
0
经验
310 点
金钱
278 ¥
注册时间
2008-3-6
发表于 2024-3-6 19:36 | 显示全部楼层
heimux 发表于 2024-3-6 16:55
仔细检查有没有接触不良,我做了5个其中一个也是没有声音,后来发现是PGA2311的第十脚没焊接好,导致右声 ...

你在哪买的2311,多少钱。我的15包邮

2

主题

1

好友

263

积分

业余侠客 当前离线

Rank: 4

UID
43174
帖子
282
精华
0
经验
263 点
金钱
259 ¥
注册时间
2008-5-15
发表于 2024-3-6 19:58 | 显示全部楼层
cbng 发表于 2024-3-6 19:36
你在哪买的2311,多少钱。我的15包邮


https://www.mouser.cn/c/?q=PGA2311U

2

主题

1

好友

263

积分

业余侠客 当前离线

Rank: 4

UID
43174
帖子
282
精华
0
经验
263 点
金钱
259 ¥
注册时间
2008-5-15
发表于 2024-3-6 22:34 | 显示全部楼层
各位,我已经打通了所有的经脉,实现了一键静音、断电记忆等功能,现在交作业了:
1,首先,SDCC编译器没有问题,加个--iram-size参数把内存限定在128byte就行了,Keil可以完全舍弃了,哈哈;
2,用中断实现了一键静音并在一定程度上消除了抖动,我这里是按键放开后动作;
3,利用单片机的EEPROM实现了断电记忆,不用每次开机从零音量开始了,就是不知道这ROM靠不靠谱,STC官方声称其擦写次数在10万次以上;
4,之前还在立创商城买了STC8G1K08这个单片机,是看中他有硬件SPI的功能,后来才发现这个STC8G1K08在用作SPI主机的时候只能接收数据不能发送数据,只能作罢;
5,在旋转编码器这块代码上我跟楼主的有点区别,楼主是用中断的方式,这个STC15F104W单片机的INT2中断是下降沿触发的,只能在下降沿调节音量,而我的代码是上升沿和下降沿都触发音量调节的,所以调节速度快了一倍,简单来说,调节相同大小的音量,用楼主的固件需要转一圈,而我的只要转半圈。所以,希望快调的可以试试我的固件,喜欢微调的用楼主的固件;
6,至于双芯片菊花链的能不能用你们也可以刷机试一下,我自己还没有打双芯片PGA2311的板子

最后附上下载链接
PGA2311_SDCC.zip (930 Bytes, 下载次数: 71)

68

主题

44

好友

1万

积分
     

贵宾 当前在线

Rank: 3Rank: 3

UID
111707
帖子
12480
精华
3
经验
12893 点
金钱
12349 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2024-3-6 23:37 | 显示全部楼层
heimux 发表于 2024-3-6 22:34
各位,我已经打通了所有的经脉,实现了一键静音、断电记忆等功能,现在交作业了:
1,首先,SDCC编译器没 ...

支持动手派!我只是做了该类芯片最基本的基础应用。

你可以开发更多的东西 造福坛友

1

主题

0

好友

6

积分

注册会员 当前离线

Rank: 2

UID
1092300
帖子
5
精华
0
经验
6 点
金钱
4 ¥
注册时间
2024-2-25
发表于 2024-3-7 01:02 来自手机端 | 显示全部楼层
感谢!

2

主题

1

好友

263

积分

业余侠客 当前离线

Rank: 4

UID
43174
帖子
282
精华
0
经验
263 点
金钱
259 ¥
注册时间
2008-5-15
发表于 2024-3-7 09:57 | 显示全部楼层
jacksl528 发表于 2024-3-6 23:37
支持动手派!我只是做了该类芯片最基本的基础应用。

你可以开发更多的东西 造福坛友

万不敢当啊,只是纯粹喜欢DIY而已,楼主是抛砖引玉,我是摸石头过河 与其整天刷垃圾短视频不如找点事情做做,再不学点东西人就废了;
这个编码器控制MCU发送SPI属于最基础的东西,指针和数组都没涉及到,再高级点的咋也不会啊;
我的代码要是给真正的高手看了肯定是要笑掉大牙了,好在能用就行,自己研究代码的好处就是灵活方便,想怎么改都行。单说编码器上的按键除了一键静音之外还有很多种玩法,比如一键切换为左右声道平衡控制,无非就是一个声道+另一个声道-之类的;还有一键切换粗调微调,让步进在1db和0.5db之间切换,这些都是可以用代码实现的。只是个人觉得没啥必要就没有深入研究了。

68

主题

44

好友

1万

积分
     

贵宾 当前在线

Rank: 3Rank: 3

UID
111707
帖子
12480
精华
3
经验
12893 点
金钱
12349 ¥
注册时间
2009-6-14

社区贡献 论坛贵宾

 楼主| 发表于 2024-3-7 11:44 来自手机端 | 显示全部楼层
heimux 发表于 2024-3-7 09:57
万不敢当啊,只是纯粹喜欢DIY而已,楼主是抛砖引玉,我是摸石头过河 与其整天刷垃圾短视频不如找点事 ...

一键粗调,一键细调 这个方案还是有点用。 一些耳放就是这样的

5

主题

0

好友

78

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
85950
帖子
81
精华
0
经验
78 点
金钱
68 ¥
注册时间
2009-3-6
发表于 2024-3-7 16:08 | 显示全部楼层
本帖最后由 ouco 于 2024-3-7 16:12 编辑
zhaojunsong9986 发表于 2024-2-25 21:25
数码管显示,如果直接把vol的十六进制数据送入,就可能会显示A-F字符,请问怎么处理的?


vol变量实际上是记录编码器的输入脉冲数,取值范围是0~255,如果屏蔽PGA2310的放大作用,则为0~192。
我是用TM1637显示4位数码管,从网上下载了一个显示函数:display(m,second),该函数功能就是给m赋值0~99之间任意数,数码管左边2位就可显示相应的数字,给second赋值0~99之间任意数,数码管右边2位就可显示相应的数字,实现代码如下:
             m=vol/100;
             second=vol%100;
              display(m,second);
将代码放在main()的while(1)里面。

31

主题

7

好友

545

积分
     

职业侠客 当前离线

着迷

Rank: 5Rank: 5

UID
38449
帖子
3168
精华
0
经验
545 点
金钱
492 ¥
注册时间
2008-3-25
发表于 2024-3-7 21:02 | 显示全部楼层
座下来认真学习。

1

主题

0

好友

4

积分

注册会员 当前离线

Rank: 2

UID
910435
帖子
3
精华
0
经验
4 点
金钱
2 ¥
注册时间
2021-6-24
发表于 2024-3-10 09:37 | 显示全部楼层
有心做一个,进来学习学习

54

主题

0

好友

1598

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
496
帖子
1259
精华
0
经验
1598 点
金钱
880 ¥
注册时间
2004-4-29
发表于 2024-3-10 11:01 | 显示全部楼层
谢谢楼主的分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部