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

[复制链接]
11654|18
 楼主| 610095871 发表于 2012-12-8 22:16 | 显示全部楼层 |阅读模式

pcm1770-Low-Voltage and Low-Power Stereo Audio DAC w Headphone Amp .pdf (612.17 KB, 下载次数: 162)

最近在学习stm32f4(和朋友一起做的开发板),板载了pcm1770,当时看到一些开发板上带有pcm1770所以就选了这款芯片,这两天下班后就在公司玩会,结果看到其他开发板上并没有给出关于pcm1770的配置和控制,无奈只能自己探索了。。。
   pcm1770  音频接口采用I2S ,控制接口采用spi。
   学习板上SPI3作为I2S接口传输音频数据, SPI2控制pcm1770;
   一开始没怎么看pcm1770的数据手册,直接配置spi去控制,结果。。。。结果都不知道怎么去测试是否控制,网上找资料没什么结果,只能去看英文数据手册。
   下面是PCM1770的控制时序图
QQ截图20121208213253.png
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的寄存器
reg.png
MUTx: Soft Mute Control
Where, x = L or R, corresponding to the headphone output HOUTL or HOUTR.
我试着去控制静音,但是还没设置I2S接口,没送数据,也不知道是不是设置正确了。。。。
AIN.png
我看到了器件第10脚是个音频输入脚,之后pcm1770的03寄存器bit4,发现这个AIN是可以通过寄存器控制的
reg3.jpg
我是做安防的,身边的音频视频源比较多,直接接上,使能03寄存器的bit4  将音频信号接到第10脚 耳机听到了声音,之后失能03寄存器的bit4 接上音频信号源  耳机没声音了。。。控制总算正确了。。。。
另外 pcm1770的04寄存器bit0位是来控制掉电和正常模式的,一共4个寄存器比较简单。
回过头来看pcm1770的控制,发现本人过分依赖网上的资料,看,懒得去看数据手册,懒得去探索,其实静下心来去自己摸索,往往并没有自己想想的那么难,反而能收获一定的能力和成功的喜悦。。。希望有和我一样毛病的技术员能够吸取教训。
今天用了st官方提供的i2s的例程中的音频数据C文件进行播放测试,效果还行接下来会继续本人在调试I2S接口中的问题和收获。。






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 | 显示全部楼层
你好,能给我看一下你音频模块的 原理图吗
秋天落叶 发表于 2012-12-30 20:31 | 显示全部楼层
很好的学习笔记
fishingtd 发表于 2012-12-30 20:34 | 显示全部楼层
我想知道I2S音频接口上的电阻还用接吗,如果接接多大,还有那个AIN用不用接,接到哪,呵呵,我是菜鸟,期待您的回复:lol
pkat 发表于 2012-12-30 20:45 | 显示全部楼层
fishingtd 发表于 2012-12-30 20:27
你好,能给我看一下你音频模块的 原理图吗

原理图
戒指320 发表于 2012-12-30 20:54 | 显示全部楼层
好像没看到别的板子上用1770,除过我的那两个板
戒指320 发表于 2012-12-30 20:57 | 显示全部楼层
中文版 PCM1770_低功耗立体声音频DAC芯片.pdf (630.74 KB, 下载次数: 345)

评论

骗子  发表于 2020-2-15 19:49
sinadz 发表于 2012-12-30 20:58 | 显示全部楼层
很不错的学习比较,多谢共享
 楼主| 610095871 发表于 2012-12-31 10:54 | 显示全部楼层
通用外设.pdf (1.12 MB, 下载次数: 256)
原理图
cheungman 发表于 2012-12-31 17:23 | 显示全部楼层
用TDA1543最简单
fishingtd 发表于 2012-12-31 18:45 | 显示全部楼层
610095871 发表于 2012-12-31 10:54
原理图

:handshake谢谢
wlang 发表于 2013-7-17 17:32 | 显示全部楼层
很好的学习笔记  学习了
cjhk 发表于 2013-7-17 19:07 | 显示全部楼层
学习笔记很不错  顶一个   楼主  不错哦
chaoking888 发表于 2015-7-12 11:08 | 显示全部楼层
学习了!
eaglezhou 发表于 2019-8-15 10:49 | 显示全部楼层
THAT158075599 发表于 2022-4-13 14:53 | 显示全部楼层
好帖子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

27

主题

323

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部