为PCM1792设计I^2C接口
文档标识符:PCM1792_T-D-P12
作者:DLHC
最后修改日期:2021.10.2
本文链接:https://www.cnblogs.com/DLHC-TECH/p/PCM1792_T-D-P12.html
前言
有没有这样一种可能:你是一个音响发烧友,恰好有一块PCM1792解码板,就像图0.0所示,遗憾的是这块板子还缺少了I^2S音频数据板和I^2C控制板。但是,你幸运地发现这块板子上预留了I^2S和I^2C的接口,于是就想设计相应的硬件电路和程序来驱动这块解码板,这是本文所讨论的问题。(注意:本文成功地实现了52单片机通过I^2C接口读写PCM1792内部寄存器,但是PCM1792解码板仍然无法工作)
图0.0-PCM1792解码板
项目地址
github(源码、原理图以及数据手册):https://github.com/HaochuanDeng/PCM1792_I-2C
硬件设计
音频数据输入部分:用一个现成的PCM2706声卡输出I^2S音频数据给PCM1792,要达到这个目的需要将PCM2706的9号引脚接地,并且从PCM2706芯片上引出四根信号线,分别为:BCK、LRCK、DATA、GND,这四根信号线就是I^2S信号输出线,时序如图所示。
图1.0-PCM2706声卡
图1.1-PCM2706引脚定义
图1.2-PCM2706引脚说明
图1.3-PCM2706输出的I^2S信号时序
I^2C控制板:使用52单片机通过I^2C接口配置PCM1792内部寄存器,52单片机通过串口接收命令,然后通过I^2C接口读写PCM1792内部寄存器,以达到配置PCM1792芯片的目的。串口命令格式(只有两种命令共两条,分别为读寄存器命令和写寄存器命令)如下图所示。
图1.4-串口命令格式
图1.5- I^2C控制板原理图
图1.6- I^2C控制板
软件设计
源代码详见github。主要实现了89C52单片机通过I^2C总线读写PCM1792内部寄存器和串口用户界面。实际操作起来十分简单。
测试结果
1.成功实现了读写PCM1792内部寄存器。
2.但解码板仍然不工作,可能是解码板其它地方存在问题。
声明
此教程未经DLHC允许,禁止转载。DLHC保留所有权利。