اطلاعیه

Collapse
No announcement yet.

پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

    تو مد جدید همون برنامه ای که آقای _e_ قرار دادن هست دیگه تازه برا تست vs هم یه برنامه گذاشتن
    اگه vs سخت افزاری وصل نکردی ام این برنامه بگیر من اینو رو برد اولیم امتحان کردم درستم کار میکرد البته صداش خش داشت که اونم ماله سخت افزارش بود
    کد:
    $regfile = "m128def.dat"
    $crystal = 8000000
    
    $swstack = 128
    $hwstack = 128
    $framesize = 1024
    '--------------------------------------------------------------
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Rs = Pine.0 , E = Pine.2 , Db4 = Pine.4 , Db5 = Pine.5 , Db6 = Pine.6 , Db7 = Pine.7
    
    '----------------------------------------------------------------
    '-----------------------------------------------------------------------
    Led Alias Portd.1
    Mmc_csn Alias Portb.0
    Dreq Alias Pind.4
    Xcs Alias Portd.2
    Xdcs Alias Portd.3
    Xrst Alias Portd.5
    
    Config Led = Output                    'led
    Config Vs_miso = Input                   'serial input vs-1003
    Config Vs_mosi = Output                  'serial out vs-1003
    Config Vs_clock = Output                  'serial clock vs-1003
    Config Xcs = Output                    'VS Chip Select
    Config Xrst = Output                    'VS Reset
    Config Dreq = Input                    'VS Data Request
    Config Xdcs = Output                    'VS Stream Request
    '-------------------------------------------------------------------------------
    
    Set Vs_mosi
    Set Vs_clock
    Set Xcs
    Set Xrst
    Set Xdcs
    Cls
    Reset Led
    Reset Vs_mosi
    Reset Vs_clock
    
    
    '-------------------------
    
    '-------------------------------------------------------------------------------
    Dim B As Byte
    Dim A1 As Byte
    Dim A2 As Byte
    Dim L As Byte
    Dim Ff As Byte
    Dim S As String * 30
    Dim Diskf As Long
    Dim Disks As Long
    Dim Vs_w As Byte
    Dim Vs_r As Byte
    Dim Sc_mode_ad As Byte
    Dim Sc_bass_ad As Byte
    Dim Sc_clockf_ad As Byte
    Dim Sc_aiaddr_ad As Byte
    Dim Sc_vol_ad As Byte
    Dim I As Word
    Dim Buffer(512) As Byte
    
    '-------------------------------------------------------------------------------
    Vs_w = 2
    Vs_r = 3
    Sc_mode_ad = 0
    Sc_bass_ad = 2
    Sc_clockf_ad = 3
    Sc_aiaddr_ad = 10
    Sc_vol_ad = 11
    Led = 0
    
    '-------------------------------------------------------------------------------
    
    Cursor Off
    Cls
    Lcd "loading..."
    
    $include "Config_AVR-DOS.BAS"
    $include "Config_MMC.bas"
    
    B = Drivereset()
    B = Driveinit()
    
    If Gbdriveerror <> 0 Then
    Lcd "mmc config error"
    End
    End If
                   'include avr-dos
    B = Initfilesystem(1)                   'init file system
    If B <> 0 Then Print "Errore MMC"             'se errore
    Cls
    Lcd "VS1003 !!!"
    Wait 2
    
    
    Set Led
    Lcd "Reseting VS1003."
    Reset Xrst
    Waitms 1
    Set Xrst
    Waitus 500
    
    Bitwait Dreq , Set
    Reset Led
    
    Cls
    Lcd "Initializing VS"
    Wait 2
    Set Led
    
    Reset Xcs
    Cls
    Lcd "Reset Xcs"
    Wait 10
    Shiftout Vs_mosi , Vs_clock , Vs_w , 1
    'Spiout Vs_w , 1
    Shiftout Vs_mosi , Vs_clock , Sc_mode_ad , 1
    
    'Spiout Sc_mode_ad , 1                   'Halate Kariyeh VS1003
    A1 = 8
    A2 = 0
    Shiftout Vs_mosi , Vs_clock , A1 , 1
    
    'Spiout A1 , 1
    Shiftout Vs_mosi , Vs_clock , A2 , 1
    
    'Spiout A2 , 1
    Set Xcs
    Cls
    Lcd "Set Xcs"
    'Wait 10
    Waitus 500
    Bitwait Dreq , Set
    
    Reset Xcs
    Shiftout Vs_mosi , Vs_clock , Vs_w , 1
    
    'Spiout Vs_w , 1
    Shiftout Vs_mosi , Vs_clock , Sc_bass_ad , 1
    
    'Spiout Sc_bass_ad , 1                   'Tanzime Bass va Treble
    A1 = &H79
    A2 = &HF7
    Shiftout Vs_mosi , Vs_clock , A1 , 1
    
    'Spiout A1 , 1
    Shiftout Vs_mosi , Vs_clock , A2 , 1
    
    'Spiout A2 , 1
    Set Xcs
    Waitus 500
    Bitwait Dreq , Set
    
    Reset Xcs
    Shiftout Vs_mosi , Vs_clock , Vs_w , 1
    
    'Spiout Vs_w , 1
    Shiftout Vs_mosi , Vs_clock , Sc_clockf_ad , 1
    
    'Spiout Sc_clockf_ad , 1                  'Tanzimeh Clock va PLL bar royeh Adade 3
    A1 = &H80
    A2 = 0
    Shiftout Vs_mosi , Vs_clock , A1 , 1
    
    'Spiout A1 , 1
    Shiftout Vs_mosi , Vs_clock , A2 , 1
    
    'Spiout A2 , 1
    Set Xcs
    Waitus 500
    Bitwait Dreq , Set
    
    Reset Xcs
    Shiftout Vs_mosi , Vs_clock , Vs_w , 1
    
    'Spiout Vs_w , 1
    Shiftout Vs_mosi , Vs_clock , Sc_aiaddr_ad , 1
    
    'Spiout Sc_aiaddr_ad , 1                  'Barnameyeh Karbari Nadarim
    A1 = 0
    A2 = 0
    Shiftout Vs_mosi , Vs_clock , A1 , 1
    
    'Spiout A1 , 1
    Shiftout Vs_mosi , Vs_clock , A2 , 1
    
    'Spiout A2 , 1
    Set Xcs
    Waitus 500
    Bitwait Dreq , Set
    
    Reset Xcs
    Shiftout Vs_mosi , Vs_clock , Vs_w , 1
    
    'Spiout Vs_w , 1
    Shiftout Vs_mosi , Vs_clock , Sc_vol_ad , 1
    
    'Spiout Sc_vol_ad , 1                    'Tanzime Volume Rooyeh Haddeaksar
    A1 = 0
    A2 = 0
    Shiftout Vs_mosi , Vs_clock , A1 , 1
    
    'Spiout A1 , 1
    Shiftout Vs_mosi , Vs_clock , A2 , 1
    
    'Spiout A2 , 1
    Set Xcs
    Waitus 500
    Bitwait Dreq , Set
    
    Cls
    Lcd "VS1003 initiated"
    Reset Led
    Wait 1
    Cls
    Lcd "playing file:"
    
    Ff = Freefile()
    Open "song.mp3" For Binary As #ff             'create file in MMC
    Locate 2 , 1
    Lcd Ff
    Do
    
     Get #ff , Buffer(1) , , 512
    
    
     Set Led
     Cls
    
    
     For I = 1 To 512
     Reset Xdcs
       Shiftout Vs_mosi , Vs_clock , Buffer(i) , 1
      Set Xdcs
       'Spiout Buffer(i) , 1
       Bitwait Dreq , Set
    
     Next I
     Cls
    
      Bitwait Dreq , Set
    
     Lcd "Set Xdcs"
    
     Reset Led
    Loop Until Eof(#ff) <> 0
    
    Cls
    Lcd "Ended."
    Close #ff
    
    End                            'end program

    دیدگاه


      پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

      بازم نشد فقط مونده احتمال سخت افزار :cry2:
      راستی ممکنه IC سوخته باشه ؟؟ :cry2:
      البته Dreq میده ها !!1 :cry2:
      الهم عجل لولیک الفرج

      فقط 313 نفر...

      دیدگاه


        پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

        :cry2: :cry2:
        الهم عجل لولیک الفرج

        فقط 313 نفر...

        دیدگاه


          پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

          سلام
          بعد از سال ها متوجه شدم دیفالت 1011 روی مد 1003 است
          حالا نمیخواهم مد رو تغییر بدم باید چی کنم؟؟؟
          الهم عجل لولیک الفرج

          فقط 313 نفر...

          دیدگاه


            پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

            نوشته اصلی توسط FAM
            سلام
            کسی میتونه با این پایه ها
            Vs_miso Alias Ping.1
            Vs_mosi Alias Portc.0
            Vs_clock Alias Portc.1
            Xcs Alias Portc.2
            Xreset Alias Portc.3
            Dreq Alias Pinc.4
            Xdcs Alias Portc.5
            یه برنامه برا 1011 بنویسه که
            1- از مد جدید استفاده کنه
            2- با کریستال 12.288 باشه
            3-خروجی یه چیزی بده ترجیحا صدا که من بفهمم VS رو درست بستم
            توی دیتا شیت از یه منع 2.7 استفاده کرده و 2 نوع VCC هایی رو که باید به هش وصل شه
            از هم جداکرده و جی ان دی هاشو هم همینطور یعنی جدا جدا بسته ولی من بهم وصل کردم ممکنه مشکل نخوندن از این باشه؟
            و مورد بعدی این که اگه کسی لطف کنه یه برنامه مثل همونی که آقا چیا کو گذاشتن بزاره با پین هایی که بالا نوشتم ازش کلی :biggrin:
            و ممنون میشم آخه 2 تا برنامه تو سایت هست ولی هر 2 هم سخت افزاری و یکی دیگه هم که با کدویژنه و اون یکیم با مد قدیمی اگه برای
            کسی مقدوره یه برنامه بنویسه (با مد جدید) یا همونی که چیا نوشته رو به مد جدید ببره.
            میدونم دم عیده و همه کار دارن اما تورو خدا یه کی پیدا شه خیلی کارم لنگه اگه این VS1011 رو راه بندازم براش دعا میکنم
            با تشکر
            سلام
            ببخشید من چند روزی اینجا نبودم و این تاپیک را ندیدم.

            VS1011 شما SOIC است یا QFP ؟

            اگر QFP است همون شماتیک دیتاشیت را ببندید.
            اگر SOIC است مدار خروجی صوت را مثل VS1001 ببندید (یعنی با خازن 100 میکرو) .
            gpio ها را پول داون و test را پول پ کنید.
            تغذیه ها را هم همه را به هم وصل کنید (با 3.3 خوب جواب میده) .
            1011 به صورت پیشفرض روی مود قدیمی (مود 1001) است. دلیلش هم اینه که 1001 دیگه تولید نمیشه و میخوان بازارش را از دست ندهند و مدارات قبلی بدون نیاز به تغییر در فریمور و سخت افزار با 1011 هم کار کند.
            برای ورود به مود جدید باید بیت SM_SDINEW در رجیستر SCI MODE را یک کنید.(پیشفرض صفر است یعنی مود قدیمی) . در VS1003 عکس این مطلب صادق است یعنی بعد از ریست با مود جدید کار میکند.
            در این مود دو کانال SPI داریم که MISO,MOSI,SCK آن مشترک و دو چیپ سلکت برای دیتا و کنترل داریم.(XCD,XDCS)

            نکته مهم : بعد از ریست نرم افزاری هم این بیت مجدد صفر می شود.

            من با بیسکام کار نکردم ولی در همین تاپیک مثال کامل با کدویژن گذاشتم.
            موفق باشید.
            If everything seems under control, you're just not going fast enough
            Mario Andretti

            دیدگاه


              پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

              سلام
              توی اون مثال شما از مد جدید استفاده کردید؟
              الهم عجل لولیک الفرج

              فقط 313 نفر...

              دیدگاه


                پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                نوشته اصلی توسط FAM
                سلام
                توی اون مثال شما از مد جدید استفاده کردید؟
                سلام
                بله از مود جدید استفاده کردم.
                موفق باشید.
                If everything seems under control, you're just not going fast enough
                Mario Andretti

                دیدگاه


                  پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                  سلام
                  آقای منصوری این پروژه ای که گذاشتید از چه فرکانسی استفاده میکنه داخلی یا خارجی؟
                  خود VS1011 فرکانسش چنده؟
                  میشه یه توضیح کاملی بدبد من خیلی کارم لنگه :cry2:
                  الهم عجل لولیک الفرج

                  فقط 313 نفر...

                  دیدگاه


                    پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                    سلام.
                    دوستان روشی هست که بشه mp3 رو بوسیله خود میکرو دیکود کرد؟

                    دیدگاه


                      پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                      تا اونجایی که من میدونم نه چون سرعت پردازش avr در حدی نیست که mp3 دیکد کنه

                      دیدگاه


                        پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                        نوشته اصلی توسط FAM
                        سلام
                        آقای منصوری این پروژه ای که گذاشتید از چه فرکانسی استفاده میکنه داخلی یا خارجی؟
                        خود VS1011 فرکانسش چنده؟
                        میشه یه توضیح کاملی بدبد من خیلی کارم لنگه :cry2:
                        سلام
                        میکرو با 8 مگ داخلی
                        vs با 12.288 مگ
                        موفق باشید.
                        If everything seems under control, you're just not going fast enough
                        Mario Andretti

                        دیدگاه


                          پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                          امروز یه برنامه نوشتم که تگ mp3 رو میخونه گفتم اینجا بزارم شمام استفاده کنید برای من که بدون مشکل کار میکنه
                          این ساب هم تگ ورجن یکو ساپرت میکنه هم ورجن دو رو(id3v1,id3v2) شیوه کارم اینجوره که این بیت tag اگه 1 باشه یعنی mp3 تگ داره اما اگه صفر باشه یعنی تگ نداره بعد اگه mp3 تگ داشت artist و album تو Tartist و Ttile ذخیره میشه ورودی sub هم که همونطور که مشخصه اسم فایل mp3 یه
                          البته چون این یه قسمت از برنامه اصلی خودمه شاید یه سری متغیرا رو اینجا تعریف نکرده باشم یه چندتا رو که هواسم بود اول تابع تعریف کردم بقیشو خودتون چک کنید و برای برنامه خودتون ادیتش کنید
                          موفق باشید

                          کد:
                          Sub Tagporkon(byval Mp3ahang As String)
                          
                          dim Tartist as string*16
                          dim Ttile as string*16
                          dim Buffer(100) as Byte
                          dim Tag as bit
                          
                          
                          Dim Identifier(3) As Byte
                          Dim Noskhe(2) As Byte
                          Dim Flags(1) As Byte
                          Dim Size(4) As Byte
                          
                          
                          Dim Frameid(4) As Byte
                          Dim Fsize(4) As Byte
                          Dim Fflags(2) As Byte
                          
                          Dim Fsize_adad As Long
                          Dim Lngbuf As Long
                          Dim Lngbuf2 As Long
                          
                          Dim Frameidstr As String * 4
                          
                          Dim Encod_shomareh As Byte
                          
                          Dim Txtkhales As String * 16
                          
                          Dim Bytbuf As Byte
                          
                          Dim Fp As Long
                          
                          Dim Shomarandeh As Byte
                          
                          
                          Ff = Freefile()
                          Open Mp3ahang For Binary As #ff
                          Reset Mmc_csn
                          'tag version 2
                          Fp = 1
                          Seek #ff , Fp
                          
                          Get #ff , Identifier(1) , , 3
                          Get #ff , Noskhe(1) , , 2
                          Get #ff , Flags(1) , , 1
                          Get #ff , Size(1) , , 4
                          
                          If Identifier(1) = "I" And Identifier(2) = "D" And Identifier(3) = "3" Then
                          Fp = Loc(#ff) + 1
                          Seek #ff , Fp
                          Do
                          
                          
                          Get #ff , Frameid(1) , , 4
                          Get #ff , Fsize(1) , , 4
                          Get #ff , Fflags(1) , , 2
                          '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
                          'gereftaneh fraime size
                          Fsize_adad = 0
                          
                          Fsize_adad = Fsize_adad + Fsize(4)
                          Lngbuf2=2 ^ 8
                          Lngbuf = Fsize(3) *Lngbuf2
                          Fsize_adad = Fsize_adad + Lngbuf
                          Lngbuf2=2 ^ 16
                          Lngbuf = Fsize(2) * Lngbuf2
                          Fsize_adad = Fsize_adad + Lngbuf
                          Lngbuf2 = 2 ^ 24
                          Lngbuf = Fsize(1) * Lngbuf2
                          Fsize_adad = Fsize_adad + Lngbuf
                          '/////////////////////////////////////////////
                          'gereftaneh frime id
                          
                          Frameidstr = Chr(frameid(1)) + Chr(frameid(2)) + Chr(frameid(3)) + Chr(frameid(4))
                          
                          If Fsize_adad > 2 Then
                          
                          If Frameidstr = "TPE1" Or Frameidstr = "TIT2" Or Frameidstr = "TALB" Then
                          
                          
                          Get #ff , Encod_shomareh , , 1
                          
                          Lngbuf = Fsize_adad - 2
                          
                          Get #ff , Buffer(1) , ,Lngbuf
                          
                          '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
                          'marhaleyeh ramz goshayee
                          Txtkhales = ""
                          Shomarandeh = 0
                          For I = 1 To Lngbuf
                          
                          If Encod_shomareh = 0 Or Encod_shomareh = 3 Then
                          'text khales
                          If Buffer(i) = 0 Then Exit For
                          Txtkhales = Txtkhales + Chr(buffer(i))
                          Incr Shomarandeh
                          If Shomarandeh > 16 Then
                          Exit For
                          End If
                          
                          
                          Elseif Encod_shomareh = 1 Then
                          'unicode ba bom
                          Bytbuf= i Mod 2
                          If I >= 3 And Bytbuf <> 0 Then
                          If Buffer(i) = 0 Then Exit For
                          Txtkhales = Txtkhales + Chr(buffer(i))
                          Incr Shomarandeh
                          If Shomarandeh > 16 Then
                          Exit For
                          End If
                          
                          End If
                          
                          
                          
                          Elseif Encod_shomareh = 2 Then
                          'unicode bedoneh bom
                          Bytbuf= i Mod 2
                          If Bytbuf <> 0 Then
                          If Buffer(i) = 0 Then Exit Function
                          Txtkhales = Txtkhales + Chr(buffer(i))
                          Incr Shomarandeh
                          If Shomarandeh > 16 Then
                          Exit For
                          End If
                          
                          End If
                          End If
                          Next I
                          '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
                          'tayeenh inkeh chi hast etelaat
                          
                          
                          If Frameidstr = "TPE1" Then
                          'artist
                          Tartist = Txtkhales
                          Cls
                          Tag = 1
                          Else
                          'album
                          Ttile = Txtkhales
                          Tag = 1
                          End If
                          '----------------------------------------------------------------
                          
                          
                          End If
                          End If
                          Fp = Fp + 10
                          Fp = Fp + Fsize_adad
                          Seek #ff , Fp
                          ' chek kardaneh inkeh aya az loop kharej shavad ya na
                          If Fsize_adad = 0 Then
                          Exit Do
                          End If
                          
                          Loop
                          Close #ff
                          
                          Exit Function
                          End If
                          Close #ff
                          Tag = 0
                          '||||||||||||||||||||||||||||||||||||||||||||||||
                          
                          
                          
                          '----------------------------------------------------------------------------
                          'tag version 1
                          I = Lof(#ff)
                          I = I - 127
                          Seek #ff , I
                           Get #ff , Buffer(1) , , 512
                           Set Mmc_csn
                           Close #ff
                           If Mid(buffer(1) , 1 , 3) = "TAG" Then
                          
                          Ttile = Mid(buffer(1) , 4 , 16)
                          Ttile = Trim(ttile)
                          Tartist = Mid(buffer(1) , 34 , 16)
                          Tartist = Trim(tartist)
                          Tag = 0
                          If Ttile <> "" Then
                          Tag = 1
                          End If
                          If Tartist <> "" Then
                          Tag = 1
                          End If
                          
                          Else
                          Tag = 0
                          End If
                          End Sub
                          '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\

                          دیدگاه


                            پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                            سلام
                            آقا من دیگه از دست این VS1011 خسته شدم دیگه بیخیال
                            علی جان ممکنه یه زحمتی بکشی : :redface:
                            PCB ای که خودت داری ازش جواب میگیری + کل برنامه (معمولی باشه خیلی پیشرفته نباشه) + توضیحات و....
                            لطف کنی چون هم بدرد من میخوره هم بعد از من هرکسی میاد حیرون نمیمونه لطفا ............
                            باتشکر
                            الهم عجل لولیک الفرج

                            فقط 313 نفر...

                            دیدگاه


                              پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                              سلام

                              http://ali3635.persiangig.com/PCB1.PcbDoc

                              این pcb یه که الان دارم ازش جواب میگیرم فقط یه چنتا تغییر توش دادم البته تو میتونی ندی مثلا من از atmega128 L استفاده کردم و بعد دیگه بین mmc و vs1003 از مقاومت استفاده نکرم و البته چون من با jtag پرگرام میکنم برای jtag ام جا گازاشتم . و البته این pcb سوکت هارد ام داره حالا نمیدونم چقدر به کارت میاد البته اگه فقط pcb vs1003 میخای آقای _e_ هم گازاشتن یکی و ایشونم دارن ازش جواب میگیرن حالا باز بشین ببین کدوم به کارت میاد برنامه الانم که دارم ازش جواب میگیرم ام خیلی طولانی و پیچیده شده تا الان 1200 خط شده و بیشترشم برای مدریت فایلا و آهنگهاس تا کار با vs1003 بیشتر سر در گمت میکنه اما اونی که بالا تر برات گازاشتم او پرت ایناشو درست کنی برات جواب میده درست کار میکنه چون منم از اون شروع کردم کلا برنامش چیزه خاصی نداره یعنی حتی اگه هیچ گونه تنظیماتی ام برا vs1003 انجام ندی و یه راست فایل mp3 رو براش بفرستی باز یه صدایی ازش در میاد من خودم مشکلم بیشتر سخت افزاری بود ماله تو ام احتمالا همینجوره

                              دیدگاه


                                پاسخ : پخش فایل MP3 با VS1003 و ضبط صدا با فرمت WAV با همین آی سی

                                آقا خیلی ممنون حالا یه برنامه ی ساده ممکنه بزاری راستی
                                لطفا یه لیستی از قطعات و.... با تشکر
                                الهم عجل لولیک الفرج

                                فقط 313 نفر...

                                دیدگاه

                                لطفا صبر کنید...
                                X