打印

基于stm32f4控制pcm1770解码音频文件学习笔记

[复制链接]
10991|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
610095871|  楼主 | 2012-12-8 22:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

pcm1770-Low-Voltage and Low-Power Stereo Audio DAC w Headphone Amp .pdf (612.17 KB)

最近在学习stm32f4(和朋友一起做的开发板),板载了pcm1770,当时看到一些开发板上带有pcm1770所以就选了这款芯片,这两天下班后就在公司玩会,结果看到其他开发板上并没有给出关于pcm1770的配置和控制,无奈只能自己探索了。。。
   pcm1770  音频接口采用I2S ,控制接口采用spi。
   学习板上SPI3作为I2S接口传输音频数据, SPI2控制pcm1770;
   一开始没怎么看pcm1770的数据手册,直接配置spi去控制,结果。。。。结果都不知道怎么去测试是否控制,网上找资料没什么结果,只能去看英文数据手册。
   下面是PCM1770的控制时序图

MS:  使能脚 低电平使能  MC:时钟 MD: 数据
看完时序图,我开始去修改spi2的配置

SPI_I2S_DeInit(SPI2);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//全双工
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;//16位数据模式
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//空闲模式下SCK为1,看时序图 MC在空闲的时候是1
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//数据采样从第2个时间边沿开始,MD信号 在MC=0的时候进行变化,在上升沿的情况下输出
//因为常态下MC=1,又是上升沿锁定数据输出,所以选择第二个时钟沿

   SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//NSS软件管理
   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;//波特率,
   SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//大端模式
   SPI_InitStructure.SPI_CRCPolynomial = 0;//CRC多项式
   SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//主机模式
   SPI_Init(SPI2, &SPI_InitStructure);
   SPI_Cmd(SPI2, ENABLE);

  下面是操作PCM1770的函数
void PCM1Writereg(u8 WriteAddr, u8 WriteData)
{
  u16 WriteAddrData;
    WriteAddrData = (0x00FF & WriteAddr);
  WriteAddrData = WriteAddrData << 8;
  WriteAddrData = WriteAddrData | WriteData;
  GPIO_ResetBits(GPIOB,GPIO_Pin_11);//MS 使能
  delay_us(100);
  SPI2_RWByte(WriteAddrData);
  GPIO_SetBits(GPIOB,GPIO_Pin_11);//MS 失能
  delay_us(100);
  

}


这样配置之后 我又开始去控制,还是不知道是不是正确控制了,后来我看了下pcm1770的寄存器

MUTx: Soft Mute Control
Where, x = L or R, corresponding to the headphone output HOUTL or HOUTR.
我试着去控制静音,但是还没设置I2S接口,没送数据,也不知道是不是设置正确了。。。。

我看到了器件第10脚是个音频输入脚,之后pcm1770的03寄存器bit4,发现这个AIN是可以通过寄存器控制的

我是做安防的,身边的音频视频源比较多,直接接上,使能03寄存器的bit4  将音频信号接到第10脚 耳机听到了声音,之后失能03寄存器的bit4 接上音频信号源  耳机没声音了。。。控制总算正确了。。。。
另外 pcm1770的04寄存器bit0位是来控制掉电和正常模式的,一共4个寄存器比较简单。
回过头来看pcm1770的控制,发现本人过分依赖网上的资料,看,懒得去看数据手册,懒得去探索,其实静下心来去自己摸索,往往并没有自己想想的那么难,反而能收获一定的能力和成功的喜悦。。。希望有和我一样毛病的技术员能够吸取教训。
今天用了st官方提供的i2s的例程中的音频数据C文件进行播放测试,效果还行接下来会继续本人在调试I2S接口中的问题和收获。。






PCM_ControlTim.png (33.15 KB )

PCM_ControlTim.png
沙发
fishingtd| | 2012-12-28 13:49 | 只看该作者
我现在用的是103,只有两个SPI,现在SPI1对SD卡读写和触摸屏的控制,想加上这个音频,怎么实现,SPI1还可以控制PCM1700吗?

使用特权

评论回复
板凳
610095871|  楼主 | 2012-12-28 15:18 | 只看该作者
fishingtd 发表于 2012-12-28 13:49
我现在用的是103,只有两个SPI,现在SPI1对SD卡读写和触摸屏的控制,想加上这个音频,怎么实现,SPI1还可以 ...

具体的看spi设备的时序配置要求主要看CPOL CPHA,如果可以的话 可以用不同的使能脚来控制不同的spi器件,如果还不行的话就用管脚模拟spi

使用特权

评论回复
地板
fishingtd| | 2012-12-30 20:27 | 只看该作者
你好,能给我看一下你音频模块的 原理图吗

使用特权

评论回复
5
秋天落叶| | 2012-12-30 20:31 | 只看该作者
很好的学习笔记

使用特权

评论回复
6
fishingtd| | 2012-12-30 20:34 | 只看该作者
我想知道I2S音频接口上的电阻还用接吗,如果接接多大,还有那个AIN用不用接,接到哪,呵呵,我是菜鸟,期待您的回复:lol

使用特权

评论回复
7
pkat| | 2012-12-30 20:45 | 只看该作者
fishingtd 发表于 2012-12-30 20:27
你好,能给我看一下你音频模块的 原理图吗

原理图

使用特权

评论回复
8
戒指320| | 2012-12-30 20:54 | 只看该作者
好像没看到别的板子上用1770,除过我的那两个板

使用特权

评论回复
9
戒指320| | 2012-12-30 20:57 | 只看该作者
中文版 PCM1770_低功耗立体声音频DAC芯片.pdf (630.74 KB)

使用特权

评论回复
评论
水泡泡洗澡澡 2020-2-15 19:49 回复TA
骗子 
10
sinadz| | 2012-12-30 20:58 | 只看该作者
很不错的学习比较,多谢共享

使用特权

评论回复
11
610095871|  楼主 | 2012-12-31 10:54 | 只看该作者
通用外设.pdf (1.12 MB)
原理图

使用特权

评论回复
12
cheungman| | 2012-12-31 17:23 | 只看该作者
用TDA1543最简单

使用特权

评论回复
13
fishingtd| | 2012-12-31 18:45 | 只看该作者
610095871 发表于 2012-12-31 10:54
原理图

:handshake谢谢

使用特权

评论回复
14
wlang| | 2013-7-17 17:32 | 只看该作者
很好的学习笔记  学习了

使用特权

评论回复
15
cjhk| | 2013-7-17 19:07 | 只看该作者
学习笔记很不错  顶一个   楼主  不错哦

使用特权

评论回复
16
chaoking888| | 2015-7-12 11:08 | 只看该作者
学习了!

使用特权

评论回复
17
eaglezhou| | 2019-8-15 10:49 | 只看该作者

使用特权

评论回复
18
THAT158075599| | 2022-4-13 14:53 | 只看该作者
好帖子

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:UCGUI源码学习中---Q群295214484 http://ucgui.taobao.com

27

主题

323

帖子

10

粉丝