打印

U盘MP3 由VS1003和CH376S构成,能播放音乐但是速度慢

[复制链接]
5401|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Ray12345|  楼主 | 2012-4-20 23:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Ray12345 于 2012-4-20 23:47 编辑

int main(void)
{
        u8 u8Result;
        u8 u8Length;
    u8 *pu8Temp = u8SectorBuf;
    u32 u32FileLen = 0;
    u32 u32DataCnt = 0;
    u32 i,j;

        Stm32_Clock_Init(9);      //72M
        delay_init(72);          //延时初始化
        uart_init(72, 9600);    //设置串口1的波特率

        Vs1003_Init();                   //Vs1003的初始化
        Vs1003SoftReset();          //软复位VS1003

        VsRamTest();                  //RAM测试
        VsSineTest();      //VS1003正弦测试

        CH376_Init();
       
         delay_ms(100);
          while(1)
      {
            
//            SPI1_SetSpeed(SPI1_SPEED_16);                            //高速,对VS1003B,最大值不能超过36.864/6Mhz,这里设置为4.5M
                if(CH376DiskConnect()==USB_INT_SUCCESS)           /* 检查U盘是否连接,不支持SD卡 */
                {
                //        LED2 = 0;
                        USART1_SendByte(0xe3);
                        if(CH376DiskMount()==USB_INT_SUCCESS)  /* 初始化磁盘并测试磁盘是否就绪 */
                        {               

                       
                                u8Length = CH376ReadBlock(pu8Temp);        /*从当前主机端点的接收缓冲区读取数据块,返回长度*/
                                if (u8Length != 0)
                            {
                                CH376DiskQuery((u32 *)pu8Temp);        /*查询磁盘剩余空间信息,扇区数*/
                                strcpy((char*)pu8Temp, "\\风.MP3");            
                                u8Result = CH376FileOpen(pu8Temp);           // 打开文件

                                if (u8Result == USB_INT_SUCCESS)
                                {
                                       USART1_SendByte(0xe5);
                                                //LED2 = 1;
                                    u32FileLen = CH376GetFileSize();  /* 获取文件大小 */                  
                                               
                                    while (u32DataCnt < u32FileLen)
                                    {
                                                        SPI2_SetSpeed(SPI2_SPEED_2);//高速
                                               pu8Temp = u8SectorBuf;
                                        CH376SecRead(pu8Temp, 1, 0); /*以扇区为单位从当前位置读取数据块,不支持SD卡*/
                                        u32DataCnt += 512;
               
                                                    SPI1_SetSpeed(SPI1_SPEED_16); //高速,对VS1003B,设置为4.5M  

                                                        VS_XDCS = 0;                /*VS_XDCS = 0,选择vs1003的数据接口        */
                                        i = 0;                                                
                                        while (i < 512)              //循环发送512个字节
                                                        {                         
                                                           while (VS_DREQ == 0);        //等待DREQ为高                                         
                                                        //                  VS_XDCS = 0;       
                                                                        for (j=0; j<32; j++)
                                                    {
                                                        SPI1_ReadWriteByte(*pu8Temp++);                                                                               
                                                    }
                                                        i += 32;
                                                   //                      VS_XDCS = 1;                                                                                  
                                                        }
                                                        VS_XDCS = 1;           /*VS_XDCS = 1*/           
                             }
                                       }
                        }
                    }
            }
          }

  
}




/****************SPI1及VS1003端口初始化***********/
void SPI1_Init(void)
{         
        RCC->APB2ENR|=1<<2;       //PORTA时钟使能          
        RCC->APB2ENR|=1<<12;      //SPI1时钟使能
         
        //这里只针对SPI口初始化
        GPIOA->CRL&=0X000FFFFF;
        GPIOA->CRL|=0XBBB00000;//PA5.6.7复用             
        GPIOA->ODR|=0X7<<5;    //PA5.6.7上拉
               
        SPI1->CR1|=0<<10;//全双工模式       
        SPI1->CR1|=1<<9; //软件nss管理
        SPI1->CR1|=1<<8;  

        SPI1->CR1|=1<<2; //SPI主机
        SPI1->CR1|=0<<11;//8bit数据格式
               
        SPI1->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1
        SPI1->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1
       
        SPI1->CR1|=6<<3; //Fsck=Fcpu/64

//        SPI1->CR1|=0<<7; //MSBfirst
        SPI1->CR1 &= ~(1<<7); //MSBfirst
//        SPI1->CR1|=1<<13; //CRC 计算多项式   
        SPI1->CR1|=1<<6; //SPI设备使能
        SPI1_ReadWriteByte(0xff);//启动传输                 
}


/*****************************SPI2及CH376端口初始化*************************************/

void SPI2_Init(void)
{         
        RCC->APB2ENR|=1<<3;       //PORTB时钟使能
        RCC->APB2ENR|=1<<5;       //PORTD时钟使能          
        RCC->APB1ENR|=1<<14;      //SPI2时钟使能
       
        /*CH376端口初始化*/          
//        GPIOD->CRL &= 0XF0FF0FFF;                 //(SCS)PD3推挽输出    (INT#)PD6输入
//        GPIOD->CRL |= 0X08003000;
//        GPIOD->ODR |= 1 << 6;

        GPIOD->CRH &= 0XFF00FFFF;                 //(SCS)PD12推挽输出    (INT#)PD13输入
        GPIOD->CRH |= 0X00430000;
        GPIOD->ODR|=1<<12;

        //这里只针对SPI2口初始化
        GPIOB->CRH&=0X000FFFFF;
        GPIOB->CRH|=0XBBB00000;//PB.13,PB.14,PB.15复用             
//        GPIOB->ODR|=1<<14;     //PB.14上拉
        GPIOB->ODR|=7<<13;     //PB.14上拉
               
        SPI2->CR1|=0<<10;//全双工模式       
        SPI2->CR1|=1<<9; //软件nss管理
        SPI2->CR1|=1<<8;  

        SPI2->CR1|=1<<2; //SPI主机
        SPI2->CR1|=0<<11;//8bit数据格式       
         
        SPI2->CR1 |= 0<<0;    //数据采样从第一个时间边沿开始,CPHA=0
        SPI2->CR1 &= ~(1<<1); //空闲模式下SCK为0,所以此位CPOL=0

        SPI2->CR1|=1<<3; //Fsck=Fcpu/4

        SPI2->CR1 &= ~(1<<7); //MSBfirst
//        SPI2->CR1|=0<<7; //MSBfirst  
        SPI2->CR1|=1<<13; //CRC 计算多项式
        SPI2->CR1|=1<<6; //SPI设备使能
        SPI2_ReadWriteByte(0xff);//启动传输                 
}
沙发
wahahaabc| | 2012-4-21 00:43 | 只看该作者
速度慢 指的是什么“速度慢”

使用特权

评论回复
板凳
Ray12345|  楼主 | 2012-4-21 11:16 | 只看该作者
播放的音乐语速慢,像慢放的一样,帮忙看下是什么原因?谢谢

使用特权

评论回复
地板
Ray12345|  楼主 | 2012-4-21 11:50 | 只看该作者
2# wahahaabc 音乐能播放,但是语速有点慢,慢半拍,纠结了几天了,一直找不到原因,麻烦看下,谢谢

使用特权

评论回复
5
Ray12345|  楼主 | 2012-4-21 14:18 | 只看该作者
没人回答~自己顶!

使用特权

评论回复
6
Ray12345|  楼主 | 2012-4-21 17:41 | 只看该作者
论坛好冷清啊~~  贴出来这么久,木有大仙回答~~:Q

使用特权

评论回复
7
Ray12345|  楼主 | 2012-4-22 12:57 | 只看该作者
继续冷~~:L

使用特权

评论回复
8
Ray12345|  楼主 | 2012-4-22 18:38 | 只看该作者
路过的也瞟一眼嘛~~

使用特权

评论回复
9
na239152605| | 2012-4-27 10:45 | 只看该作者
呵呵!我也想做个MP3用TI的PCM1770

使用特权

评论回复
10
FZK374470412| | 2012-8-18 22:06 | 只看该作者
学习了..........谢谢分享............

使用特权

评论回复
11
vlsi源合| | 2012-11-26 11:12 | 只看该作者
代理vs1003可以提供技术支持

使用特权

评论回复
12
歌笑| | 2013-6-4 09:49 | 只看该作者
我也在做,能不能加qq请教下啊!347063577

使用特权

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

本版积分规则

0

主题

7

帖子

0

粉丝