- 积分
- 2112
- 在线时间
- 3000 小时
- 最后登录
- 2025-12-18
- 阅读权限
- 100
- 精华
- 0
  
- UID
- 897598
- 帖子
- 1951
- 精华
- 0
- 经验
- 2112 点
- 金钱
- 1837 ¥
- 注册时间
- 2021-2-4
|

楼主 |
发表于 2025-11-30 12:02
|
显示全部楼层
【2025年11月30日,有一些小的问题和改进共享】
输出缓冲也装上,机箱内满满登登的看着舒服多了
1. 添加了输出缓冲,尝试了LME49990和金嗓子前级电路,RMAA测试结果自制金嗓子分立电路比运放指标高
LME49990缓冲
金嗓子前级电路缓冲
2. 继电器音量噪音问题,有两个解决方法
1)简单直接的方法就是把控制电路数字地线,与模拟电路地线短接,最好大电解下面。 但是这样做指标会降低不少,但是基本可以去掉噪音。
2)音量调节后面增加缓冲,这样可以基本没噪音,测试指标也没问题。
3. 继电器音量调节后面,必须加RC滤波,因为继电器音量调节电路还是很容易引入数字电路的高频噪声。 后级功放输出嬬贝尔电路对地电阻烧了才想起来,前面没加RC滤波,功放输入端也没加RC滤波~ 最好都加上。
4. PCM1794静音功能忘了设计,切换同轴和光纤无信号时有白噪音。应该用DIR9001的ERROR端口高低电平控制PCM1794静音端口,这个比较麻烦后期重做板子再改吧。
5. 软件没发现bug,丝滑流畅。 唯一后期改的是音量从0~127改成0~100了,因为前面0~60基本没声音~~下面是改善后的代码
修改relay_control.c文件中的下面函数:
- void SetVolumeRelays(uint16_t volume) {
- uint16_t relay_value;
-
- // 将 0~100 的输入映射到继电器控制值
- if(volume == 0) {
- relay_value = 0;
- } else if(volume >= 1 && volume <= 27) {
- relay_value = volume * 2;
- } else { // volume >= 28 && volume <= 100
- relay_value = volume + 27;
- }
-
- // 确保值在有效范围内 (0~127)
- if(relay_value > 127) {
- relay_value = 127;
- }
-
- // 清除所有继电器状态
- GPIO_ResetBits(VOL_PORT, VOL1_PIN | VOL2_PIN | VOL3_PIN | VOL4_PIN);
- GPIO_ResetBits(VOL_HIGH_PORT, VOL5_PIN | VOL6_PIN | VOL7_PIN);
-
- delay_ms(5);
-
- // 设置低4位 (PB12-PB15)
- if(relay_value & 0x01) GPIO_SetBits(VOL_PORT, VOL1_PIN);
- else GPIO_ResetBits(VOL_PORT, VOL1_PIN);
-
- if(relay_value & 0x02) GPIO_SetBits(VOL_PORT, VOL2_PIN);
- else GPIO_ResetBits(VOL_PORT, VOL2_PIN);
-
- if(relay_value & 0x04) GPIO_SetBits(VOL_PORT, VOL3_PIN);
- else GPIO_ResetBits(VOL_PORT, VOL3_PIN);
-
- if(relay_value & 0x08) GPIO_SetBits(VOL_PORT, VOL4_PIN);
- else GPIO_ResetBits(VOL_PORT, VOL4_PIN);
-
- // 设置高3位 (PA8-PA10)
- if(relay_value & 0x10) GPIO_SetBits(VOL_HIGH_PORT, VOL5_PIN);
- else GPIO_ResetBits(VOL_HIGH_PORT, VOL5_PIN);
-
- if(relay_value & 0x20) GPIO_SetBits(VOL_HIGH_PORT, VOL6_PIN);
- else GPIO_ResetBits(VOL_HIGH_PORT, VOL6_PIN);
-
- if(relay_value & 0x40) GPIO_SetBits(VOL_HIGH_PORT, VOL7_PIN);
- else GPIO_ResetBits(VOL_HIGH_PORT, VOL7_PIN);
- }
复制代码
别忘了修改system_config.h中最大音量配置:
- #define MIN_VOLUME 0
- #define MAX_VOLUME 100
复制代码 |
|