分享

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

 书剑阁2013 2013-10-16



最近在学习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接口中的问题和收获。。






    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多