DT-AVR
DT-AVR
Application Note
AN195 – USB MP3 Player menggunakan VS1011E-L MP3 Audio Decoder Oleh: Tim IE
Breakout Board VS1011E-L MP3 dari Sparkfun Electronics merupakan modul MP3 decoder yang berbasis IC VS1011E-L dari VLSI. Modul ini mampu memainkan file MPEG1.0&2.0 audio layer III, WAV maupun PCM dengan cara yang sangat mudah. IC VS1011E-L memiliki low-power and high-performance DSP processor core VS DSP4, memori data kerja, 5,5kByte program atau data RAM untuk aplikasi user, kontrol dan input data secara serial(SPI), dan stereo DAC dengan oversampling variabel sample-rate berkualitas tinggi. VS1011E-L juga mendukung file MP3 dengan variable bit rate(VBR) serta dilengkapi dengan kontrol volume, treble, dan bass secara internal. Pada AN195 ini telah dibuat MP3 Player berbasis Breakout Board for VS1011E-L MP3 dengan sumber data MP3 dari USB Flash drive. Kontroler utama pada aplikasi ini yaitu DT-AVR ATmega128L Bootloader Micro System (Atmega128L) yang telah dilengkapi dengan bootloader sehingga tidak diperlukan programmer eksternal untuk menuliskan program. Berikut adalah perlengkapan yang diperlukan dalam aplikasi ini : • 1x DT-AVR 128L Bootloader Micro System • 1x Vinculum USB-Host Starter Kit • 1x DT-I/O Level Converter • 1x VS1101E Breakout board • 1x EMS LCD Display • 1x Power supply 12V dan 1x power supply 5V • 1x Headset Stereo atau Speaker kecil 8Ohm • 1x USB Flash drive • Beberapa kabel jumper dan konektor jack audio stereo. • Komputer (untuk melakukan pemrograman DT-AVR 128L Bootloader Micro System)
Adapun blok diagram dari aplikasi ini adalah sebagai berikut : Vinculum USB-Host Starter Kit
DT-I/O Level Converter
Breakout Board for VS1011E-L MP3
DT-AVR Atmega 128L Bootloader Micro System
Stereo Earphone USB Flash Drive Sumber gambar : Wikipedia
EMS LCD Display
Push button Kontroler
Gambar 1 Blok Diagram AN195
Page 1 of 12
Application Note AN195
Pengaksesan data dari USB Flash Drive dilakukan oleh DT-AVR ATmega128L Bootloader Micro System melalui Vinculum USB-Host Starter Kit dengan menggunakan antarmuka paralel. Sedangkan untuk pengaksesan dan pengiriman data MP3 ke Breakout Board for VS1011E-L MP3 dilakukan secara SPI serta menggunakan beberapa pin tambahan. Kemudian pada hubungan EMS LCD Display dengan DT-AVR Atmega128L BMS, digunakan komunikasi paralel dengan mode 4 bit. Perbedaan level tegangan logika antara DT-AVR ATmega128L Bootloader Micro System (5V) dengan Breakout Board for VS1011E-L MP3 (3,3V) dapat teratasi menggunakan DT-I/O Level Converter sebagai pengubah level tegangan dari 5V ke 3,3V dan sebaliknya.
Breakout Board for VS1011E-L MP3 bekerja dengan dua macam mode antarmuka serial, yaitu 1. Mode antarmuka data, Serial Data Interface (SDI) Merupakan mode antarmuka untuk mengirimkan data MP3, WAV, maupun data PCM. Data MP3 yang dikirimkan saat mode SDI akan langsung diubah menjadi audio. Untuk masuk dalam mode SDI, pin xCS pada Breakout Board for VS1011E-L MP3 harus diset HIGH dan pin xDCS diset LOW. Setelah selesai atau untuk keluar dari mode ini, pin xDCS perlu diset kembali ke HIGH. 2. Mode antarmuka perintah, Serial Command Interface (SCI) Merupakan mode antarmuka untuk membaca dan menuliskan command. Mode SCI meliputi pengaturan mode operasi, pengaturan sample rate, pengaturan volume, pengaturan clock frequency, dan lain-lain. Untuk masuk ke mode SCI, pin xDCS pada Breakout Board for VS1011E-L MP3 harus diset HIGH dan pin xCS diset LOW. Setelah selesai atau untuk keluar dari mode ini, pin xCS perlu diset kembali ke HIGH.
Hubungan antar modul adalah sebagai berikut : DT-AVR ATmega128L Bootloader Micro System
Vinculum USB-Host Starter Kit
GND (J14 pin 1)
GND (J10 pin 1)
VCC (J14 pin 2)
Tidak Terhubung
PORTC.0 (J14 pin 3)*
AD.0 (J10 pin 3) / Data 0
PORTC.1 (J14 pin 4)*
AD.1 (J10 pin 4) / Data 1
PORTC.2 (J14 pin 5)*
AD.2 (J10 pin 5) / Data 2
PORTC.3 (J14 pin 6)*
AD.3 (J10 pin 6) / Data 3
PORTC.4 (J14 pin 7)*
AD.4 (J10 pin 7) / Data 4
PORTC.5 (J14 pin 8)*
AD.5 (J10 pin 8) / Data 5
PORTC.6 (J14 pin 9)*
AD.6 (J10 pin 9) / Data 6
PORTC.7 (J14 pin 10)*
AD.7 (J10 pin 10) / Data 7
PORTD.0 (J15 pin 3)*
AC.0 (J9 pin 3) / RXF
PORTD.1 (J15 pin 4)*
AC.1 (J9 pin 4) / TXE
PORTD.2 (J15 pin 5)*
AC.2 (J9 pin 5) / RD
PORTD.3 (J15 pin 6)*
AC.3 (J9 pin 6) / WR
*) Pin tidak mutlak, dapat diganti dengan penyesuaian pada program. Tabel 1 Hubungan DT-AVR ATmega128L Bootloader Micro System dengan Vinculum USB-Host Starter Kit Pada AN195 ini modul Vinculum USB-Host Starter Kit menggunakan sumber Supply +5V DC dari luar sehingga pin VCC tidak boleh terhubung. Pin GND tetap terhubung sebagai jalur referensi logika bersama.
Page 2 of 12
Application Note AN195
DT-AVR ATmega128L Bootloader Micro System
DT-I/O Level Converter (J1)
GND (J14 pin 1)
GND (J1 pin 1)
VCC (J14 pin 2)
VIN (J1 pin 2)
PORTB.0 (J14 pin 3)*
Bit0 (J1 pin 3)
PORTB.1 (J14 pin 4)**
Bit1 (J1 pin 4)
PORTB.2 (J14 pin 5)**
Bit2 (J1 pin 5)
PORTB.3 (J14 pin 6)**
Bit3 (J1 pin 6)
PORTB.4 (J14 pin 7)*
Bit4 (J1 pin 7)
PORTB.5 (J14 pin 8)*
Bit5 (J1 pin 8)
PORTB.6 (J14 pin 9)*
Bit6 (J1 pin 9)
PORTB.7 (J14 pin 10)*
Bit7 (J1 pin 10)
*) Pin tidak mutlak, dapat diganti dengan penyesuaian pada program. **) Pin ini mutlak, tidak dapat diganti dengan pin yang lain. Tabel 2 Hubungan DT-AVR ATmega128L Bootloader Micro System dengan DT-I/O Level Converter
DT-I/O Level Converter (J2)
Breakout Board for VS1011E-L MP3
GND (J2 pin 1)
GND
VOUT (J2 pin 2)
+Vin
Bit0 (J2 pin 3)
CS (xCS)
Bit1 (J2 pin 4)
SCLK (SCL)
Bit2 (J2 pin 5)
SI
Bit3 (J2 pin 6)
SO
Bit4 (J2 pin 7)
RST
Bit5 (J2 pin 8)
DREQ
Bit6 (J2 pin 9)
Tidak terhubung
Bit7 (J2 pin 10)
BSYNC (xDCS)
Tabel 3 Hubungan DT-I/O Level Converter dengan Breakout Board for VS1011E-L MP3
Breakout Board for VS1011E-L MP3
Audio Jack/Plug Stereo
LEFT
Audio Left
GBUF
GND
RIGHT
Audio Right
Tabel 4 Hubungan Breakout Board for VS1011E-L MP3 dengan Jack Stereo
Page 3 of 12
Application Note AN195
DT-AVR Atmega Low Cost Micro System (2)
EMS LCD Display
GND (J12 pin 1)
GND (J3 pin 1)
VCC (J12 pin 2)
+5V (J3 pin 2)
PORTA.0 (J12 pin 3)*
RS (J3 pin 3)
PORTA.1 (J12 pin 4)*
R/W (J3 pin 4)
PORTA.2 (J12 pin 5)*
E (J3 pin 5)
PORTA.3 (J12 pin 6)*
BL (J3 pin 6)
PORTA.4 (J12 pin 7)*
DB4 (J3 pin 7)
PORTA.5 (J12 pin 8)*
DB5 (J3 pin 8)
PORTA.6 (J12 pin 9)*
DB6 (J3 pin 9)
PORTA.7 (J12 pin 10)*
DB7 (J3 pin 10)
*) Pin tidak mutlak, dapat diganti dengan penyesuaian pada program. Tabel 5 Hubungan DT-AVR ATmega128L Bootloader Micro System dengan EMS LCD Display
DT-AVR Atmega Low Cost Micro System (2)
Push Button Kontroler
GND (J18 pin 1)
GND (J3 pin 1)
VCC (J18 pin 2)
Tidak Terhubung
PORTG.0 (J18 pin 3)*
Play/Pause
PORTG.1 (J18 pin 4)*
Rec
PORTG.2 (J18 pin 5)*
Previous
PORTG.3 (J18 pin 6)*
Stop
PORTG.4 (J18 pin 7)*
Next
Tabel 6 Hubungan DT-AVR ATmega128L Bootloader Micro System dengan Push Button Kontroler Ilustrasi koneksi antar modul terdapat pada Gambar 2.
Page 4 of 12
Application Note AN195
USB Flash drive
Gambar 2 Hubungan antar modul pada AN195
Modul – modul diatas perlu dikonfigurasi terlebih dahulu agar dapat bekerja sesuai dengan yang diharapkan. Sebelum pengaturan koneksi kabel dan jumper pada modul-modul selesai dengan benar, jangan menghubungkan catu daya pada sistem. Berikut ini adalah langkah – langkah konfigurasi lanjutan yang perlu dilakukan :
DT-AVR ATmega128L Bootloader Micro System Mikrokontroler Atmega128L pada DT-AVR ATmega128L Bootloader Micro System menggunakan clock eksternal sebesar 7,372800 Mhz. Catu daya input yang digunakan sebesar +12V DC, oleh karena itu diperlukan pengaturan jumper J4 seperti pada Gambar 3. Pin 1 dan Pin 2 pada J4 yang terhubung oleh jumper menandakan pilihan input eksternal dari terminal VEXT dan terminal GND pada J3 DT-AVR ATmega128L Bootloader Micro System.
1
2
3
J4
Gambar 3 Pengaturan Jumper J4 pada DT-AVR ATmega128L Bootloader Micro System
Catu daya output dari regulator untuk aplikasi ini adalah +5V DC, oleh karena itu diperlukan pengaturan jumper J5 seperti pada Gambar 4. Pin 1 dan Pin 2 pada J5 tidak terhubung oleh jumper menandakan pilihan output +5V DC dari DT-AVR ATmega128L Bootloader Micro System. 1
2
J5
Gambar 4 Pengaturan Jumper J5 pada DT-AVR ATmega128L Bootloader Micro System
Page 5 of 12
Application Note AN195
Jalur PE.0 dan PE.1 terhubung ke rangkaian USB (mini USB port berfungsi sebagai jalur komunikasi maupun pemrograman melalui bootloader) dengan pengaturan jumper J6, J7, J8, dan J9 seperti pada Gambar 5.
Gambar 5 Pengaturan Jumper J6, J7, J8, dan J9 pada DT-AVR ATmega128L Bootloader Micro System
Jumper TX (J20) dan RX (J21) digunakan untuk memilih fungsi dan jalur PE.0 (J21) dan PE.1 (J20). Pada aplikasi ini digunakan konfigurasi jumper J20 dan J21 seperti pada Gambar 6, sehingga komunikasi UART dilakukan via USB atau UART RS-232 (via RJ45).
Gambar 6 Pengaturan Jumper J20 dan J21 pada DT-AVR ATmega128L Bootloader Micro System
Vinculum USB-Host Starter Kit Catu daya yang dibutuhkan oleh modul ini sebesar +5V DC melalui terminal biru J5, perhatikan dengan seksama posisi input +5V dan GND agar tidak terbalik. Antarmuka yang digunakan antara Vinculum USB-Host Starter Kit dengan DT-AVR ATmega128L Bootloader Micro System adalah paralel, oleh karena itu diperlukan pengaturan jumper J3 dan J4 pada Vinculum USBHost Starter Kit seperti pada Gambar 7.
Gambar 7 Pengaturan Jumper J3 dan J4 pada Vinculum USB-Host Starter Kit DT-I/O Level Converter Catu daya +5V masuk melalui pin VIN dan GND pada J1. Perhatikan polaritas catudaya, agar tidak terjadi pemasangan yang terbalik. Karena target output modul membutuhkan catu daya sebesar +3,3V DC maka diperlukan pengaturan jumper J3 pada posisi 2-3, sehingga pada J2 pin VOUT memiliki tegangan sebesar +3,3V DC dan dapat digunakan untuk catu daya bagi Breakout Board for VS1011E-L MP3. Ilustrasi jumper J3 dapat dilihat pada Gambar 8. 1
2
3
J3
Gambar 8 Pengaturan jumper J3 pada DT-I/O Level Converter Page 6 of 12
Application Note AN195
EMS LCD Display Modul ini mendapatkan catu daya dari DT-AVR ATmega128L Bootloader Micro System. Pastikan hubungan antara PORTA (J12) DT-AVR ATmega128L BMS dengan LCD PORT (J3) pada EMS LCD Display telah sesuai dengan tabel koneksi dan polaritas catu daya tidak terbalik. Pada aplikasi ini, EMS LCD Display difungsikan sebagai penampil data. Oleh karena itu, diperlukan pengaturan jumper J2 sehingga pin header WR Only terhubung dengan pin header LCD W/R. Mode operasi EMS LCD Display dengan pengaturan tersebut adalah write only. Ilustrasi koneksi J2 dapat dilihat pada Gambar 9. WR Only
■
LCD R/W
■
R/W ■ J2 LCD CTRL SLCT Gambar 9 Pengaturan Jumper J2 pada EMS LCD Display
Setelah menghubungkan modul – modul tersebut menggunakan kabel jumper dan melakukan pengaturan jumper pada masing-masing alat, lakukan pengecekan kembali menggunakan multimeter. Apakah koneksi antar modul sudah benar atau tidak. Pastikan juga bahwa tidak terjadi hubungan singkat antara VCC dan GND sebelum memberikan catu daya. Apabila konfigurasi di atas telah selesai dilakukan, silahkan mengikuti langkah – langkah berikut ini : 1. Berikan catu daya +9V DC s.d. +12V DC pada terminal J3 DT-AVR ATmega128L BMS. 2. Berikan catu daya +5V DC pada Vinculum USB-Host Starter Kit. 3. Hubungkan kabel USB dengan J6 MINI-B USB 2.0 konektor ke port USB Komputer. 4. Pastikan driver USB sudah terinstal pada Komputer, jika belum silakan mengikuti panduan pada Manual DT-AVR ATmega128L BMS. 5. Buka program AVR Bootloader dari Innovative Electronics. 6. Download file dengan ekstensi .hex (IEusb_mp3_player.hex) yang berada di AN195.zip (Source\IEusb_mp3_player\Release\IEusb_mp3_player.hex) pada DT-AVR ATmega128L Bootloader Micro System. 7. Apabila Program telah berjalan sementara USB Flash Drive belum ditancapkan pada J2 Vinculum USBHost Starter Kit, maka akan tampilan pada EMS LCD Display adalah sebagai berikut.
Gambar 10 Tampilan pada EMS LCD Display saat USB FD belum terdeteksi
8.
Hubungkan headset audio ke jack audio. File MP3 yang akan dimainkan harus berada pada bagian terluar (root) dari USB Flash drive (tidak berada di dalam folder). Pada AN ini program mendefinisikan hanya 20 file MP3 yang ditampilkan. 10. Pengembangan aplikasi untuk membaca file MP3 yang ada di dalam folder dan penambahan jumlah File yang dapat ditampilkan sangat mungkin untuk dilakukan. 11. Tekan Reset pada modul Vinculum USB-Host Starter Kit, kemudian hubungkan USB Flash Drive yang telah berisi file MP3. Maka tampilan LCD akan memunculkan tanda bahwa USB telah terdeteksi dan kemudian masuk pada menu pemilihan lagu seperti pada Gambar 11. 9.
Page 7 of 12
Application Note AN195
Gambar 11 Menu pemilihan lagu pada EMS LCD Display
12. Tekan tombol Next untuk memilih judul MP3 dengan nomor track satu nomor lebih tinggi. Nomor track tertinggi adalah sebesar jumlah file MP3 yang dikenali oleh sistem. 13. Tekan tombol Previous untuk memilih judul MP3 dengan nomor track satu nomor lebih rendah. Nomor track terendah adalah track nomor 1. 14. Tekan tombol Play/Pause untuk memainkan track MP3 yang telah dipilih.
Gambar 12 Tampilan EMS LCD Display saat memainkan track MP3
15. Saat track sedang dimainkan, penekanan tombol Play/Pause akan menghentikan proses playback sementara (Pause), saat tombol Play/Pause ditekan kembali proses playback akan dilanjutkan kembali.
Gambar 13 Tampilan EMS LCD Display saat pause
16. Pada AN ini tombol Rec dan tombol Stop masih belum difungsikan. 17. Setelah track MP3 selesai dimainkan, program akan kembali ke menu memilih track MP3 yang akan dimainkan.
Page 8 of 12
Application Note AN195
Adapun alur program dari IEusb_mp3_player.hex adalah sebagai berikut : A
Start
Inisialisasi Port push button kontroler Jalankan Rutin MP3State Inisialisasi LCD
Superloop Delay 250 mili detik
Tunggu 10 ms End Bersihkan Tampilan LCD
Inisialisasi Eksternal Interup0
Inisialisasi SPI
Inisialisasi UART
Inisialisasi VS1011E
Reset VS1011E
Inisialisasi Paralel
Set Paralel sebagai Input
State = Start U=0 trackNumber = 1
Enable Global Interrupt
A Gambar 14 Diagram alir program utama pada DT-AVR 128L Bootloader Micro System
Page 9 of 12
Application Note AN195
Penjelasan urutan kerja dari program diatas adalah sebagai berikut : 1. 2. 3. 4. 5. 6. 7. 8. 9.
10. 11. 12. 13. 14. 15.
Program melakukan inisialisasi port-port yang digunakan oleh push button kontroler pada PORTG. Program melakukan inisialisasi LCD karakter 16x2 pada PORTA. Program menuggu 10 ms sebelum menjalankan program selanjutnya. Program menjalankan program pembersih tampilan LCD. Program melakukan inisialisasi eksternal interup0 (nol) dengan mode low level. Program melakukan inisialisasi SPI sebagai Master, Clock rate 2 x 460,800 kHz, Clock Phase saat Cycle Start, Polaritas Clock Low, serta data order dengan pengaturan MSB terlebih dahulu. Program melakukan inisialisasi register UART (asynchronous, 9600 bps, 8 data bit, 1 stop bit, no parity) Program melakukan inisialisasi port-port yang terhubung dengan VS1011E dan memberi logika LOW pada pin SCLK, menuggu 10 ms, kemudian memberi logika HIGH pada pin RST pada VS1011E agar terlepas dari kondisi reset. Program melakukan Reset VS1011E dengan memberikan logika LOW pada pin RST, kemudian mengirimkan nilai 0xFF heksa ke VS1011E melalui SPI sebagai dummy data. Program kemudian memberi logika HIGH pada pin xDCS, xCS untuk keluar dari semua mode komunikasi serial serta juga memberi logika HIGH pada pin RST untuk keluar dari kondisi reset. Selanjutnya, program mengirimkan perintahperintah (SCI) untuk pengaturan Volume (SCI_VOL), Clock Frequency (SCI_CLOCKF), Sample rate (SCI_AUDATA) serta membaca nilai pin DREQ untuk memeriksa apakah VS1011E masih bisa menerima data/command selanjutnya. Sebagai akhir dari proses reset maka program akan menjalankan reset secara Software yang berisi perintah SCI_MODE, SCI_CLOCKF dan menuliskan 1023 dummy data 0x00 heksa ke VS1011E dalam mode SDI. Program melakukan inisialisasi port-port komunikasi paralel dengan Vinculum USB-Host Starter Kit, antara lain RXF, TXE, RD dan WR. Port paralel untuk data yang terhubung pada PORTC diinisialisasi secara terpisah oleh subrutin parallel_output() atau parallel_input(), tergantung keperluan proses. Inisialisasi variabel state, u, trackNumber, count, dan memanggil fungsi sei() untuk meng-enable kan global interrupt. Program masuk pada fungsi MP3State() yang merupakan subrutin dengan kerangka switch-case dengan variabel state sebagai inputnya. Program menunggu 250 mili detik. Program berjalan secara superloop (berulang terus-menerus) memasuki subrutin MP3State().
Subrutin MP3State() merupakan subrutin yang meliputi seluruh state operasional dari AN USB MP3 Player. Subrutin ini memiliki beberapa case yang berubah berdasarkan nilai dari variabel state. Case-case tersebut antara lain adalah Start, SdiskDetection, SdirUsb, Smenu, SdirFile, SopenFile, dan SreadFile. Setiap case tersebut mewakili program-program yang harus dikerjakan. Berikut ini adalah alur program dari subrutin MP3State() : Start
Switch state
Start
SdiskDetection
SdirUsb
Smenu
SdirFile
SopenFile
SreadFile
End Gambar 15 Diagram alir program pada subrutin MP3State()
Page 10 of 12
Application Note AN195
Subrutin Eksternal Interrupt0 merupakan subrutin yang digunakan untuk menerima data antarmuka paralel dari Vinculum USB-Host Starter Kit. Pada komunikasi data tersebut, pin RXF dari Vinculum USB-Host SK merupakan indikator adanya data pada port paralel data. Pin RXF akan LOW saat data tersedia dan akan kembali HIGH setelah proses baca data selesai. Dengan karakteristik tersebut, pin RXF dihubungkan dengan pin Eksternal Interrupt0 (PORTD.0) dengan konfigurasi Interrupt trigger LOW LEVEL. Program ini akan membaca data dan menyimpannya pada buffer[u] hingga ada data 0x0D heksa yang berarti karakter
(Carriage Return) atau akhir dari satu baris data. Jika data terbaca sebagai maka program akan memasuki subrutin check_buffer() untuk melakukan parsing. Berikut ini adalah alur program dari subrutin Eksternal Interrupt0 yaitu ISR( INT0_vect ) : Eksternal Interrupt0
Set port paralel sebagai input
Baca data dari port paralel, simpan dalam variabel temp
Simpan data variabel temp Ke variabel array buffer[u]
Apakah buffer[u]==0x0D ?
Tidak
Ya Bersihkan dan disable interrupt cli()
check_buffer()
increment array index u++
Enable interrupt sei()
Reset array index u=0
End Gambar 16 Diagram alir subrutin Eksternal Interrupt0
Page 11 of 12
Application Note AN195
Subrutin check_buffer() merupakan subrutin yang bertugas melakukan
parsing data yang diterima oleh
mikrokontroler. Berikut ini adalah alur program dari subrutin MP3State() : Start
Switch menuBuffer
detect
getfilename
getfilesize
none
End Gambar 17 Diagram alir program pada subrutin check_buffer() Gambar koneksi keseluruhan antar modul dapat dilihat pada Gambar 18.
Gambar 18 Rangkaian antar modul pada AN195
Listing program aplikasi ini terdapat pada AN195.ZIP Selamat berinovasi! All trademarks, company names, product names and trade names are the property of their respective owners. All softwares are copyright by their respective creators and/or software publishers.
Page 12 of 12
Application Note AN195