
Bu proje, çıkarılabilir bir flash karttan müzik parçaları çalabilen basit ama akıllıca düşünülmüş bir dijital ses çalar uygulamasıdır. Sistemin merkezinde LPC213x ailesinden bir ARM7 mikrodenetleyici bulunur. Oynatıcı, araç teybinin harici CD değiştirici veri yolunu taklit ederek baş üniteden gelen komutları alır; ardından seçilen parçayı karttan okuyup analog ses çıkışı olarak baş üniteye geri verir.
Buradaki ana fikir yalnızca “karttan ses çalmak” değildir. Proje aynı zamanda bir otomobil teybi ile uyumlu çalışacak şekilde tasarlanmıştır. Yani cihaz, baş ünitenin gözünde bir tür CD changer gibi davranır. Dizinler sanal CD, içlerindeki WAV dosyaları ise parça gibi ele alınır.
Not: Kaynak dosyada proje mimarisi ayrıntılı biçimde anlatılsa da, bileşen bazında okunabilir tam şema görüntüsü görünmüyor. Bu yüzden aşağıdaki açıklama, pin pin şema çözümünden çok proje raporundaki donanım ve yazılım mimarisi esas alınarak toparlanmıştır.

Sistem Blok Diyagramı
İçerik
- 1 Sistem Blok Diyagramı
- 2 Sistemin genel çalışma mantığı
- 3 Kaynak gereksinimleri ve hedef işlemci ailesi
- 4 MMC kart ve dosya sistemi bölümü
- 5 DAC bölümü ve ses üretimi
- 6 Baş ünite veri yolu nasıl çözülmüş?
- 7 Besleme yapısı ve araç içinde kullanım notu
- 8 Yazılım mimarisi neden başarılı?
- 9 Bu projede öne çıkan ana bölümler
- 10 Dikkat edilmesi gereken noktalar

Sistemin genel çalışma mantığı
Sistem üç ana bölümden oluşur: depolama tarafında MMC flash kart, kontrol tarafında LPC213x mikrodenetleyici, ses çıkışı tarafında ise DAC bölümü bulunur.
Baş üniteden gelen komutlar veri yolu üzerinden alınır; oynatıcı ilgili klasörü ve dosyayı seçer; ardından WAV verisini yüksek hızda karttan okuyup DAC katına gönderir. Üretilen stereo hat seviyesi sinyal de baş ünitenin yardımcı girişine verilir.
Bu yaklaşım özellikle araç içi kullanım için mantıklıdır. Çünkü klasik CD yazma derdi olmadan kart içindeki klasörler üzerinden albüm mantığı kurulabilir.
Sistemin bunu yapabilmesi için dosya sistemi, veri yolu haberleşmesi ve örnekleme zamanlaması birlikte düşünülmüştür.
Kaynak gereksinimleri ve hedef işlemci ailesi
| Başlık | Değer |
|---|---|
| Toolchain | GCC within Keil uVision |
| RAM | 11K |
| ROM | 24K |
| CPU clock | 60 MHz |
| UART | 1 adet |
| SPI | 2 adet |
| I2C | 1 adet |
| Timer | 2 adet |
| Input capture | 1 adet |
| Kullanılan GPIO | 15 adet |
| Hedefler | LPC2132, LPC2134, LPC2136, LPC2138 ve daha küçük tamponla LPC2131 |
Bu tablo, projenin rastgele büyütülmüş bir deneme olmadığını gösteriyor. Kaynak tüketimi belli, görev paylaşımı belli ve hedef işlemci ailesi net olarak tanımlanmış durumda.
MMC kart ve dosya sistemi bölümü
Depolama tarafında MMC kart kullanılmış ve kart SPI modunda çalıştırılmıştır.
Daha yavaş olan SPI0 hattı kart erişimine ayrılmış, zaman açısından daha kritik olan ses örnekleri ise hızlı seri hatta bırakılmıştır.
Proje raporuna göre MMC erişim hızı 2.5 Mbit/s civarında seçilmiş ve bu hız, 44.1 kHz stereo WAV akışı için yeterli bulunmuştur.
Dosya sistemi tarafında FAT16 tercih edilmiştir. Bunun nedeni daha düşük bellek yükü ve dönemin kart kapasitesi ile iyi uyum sağlamasıdır.
Ardışık okuma performansını artırmak için dosya açılışında küme yapısının önceden taranması gibi ek iyileştirmeler de yapılmıştır.
Dosya sistemi mantığını genel çerçevede hatırlamak isteyenler için dosya sistemi yapısı ile ilgili içerik de yararlı olabilir.
DAC bölümü ve ses üretimi
Projede iki farklı prototip mantığı kullanılmıştır. İlk prototipte LPC213x’in dahili 10 bit mono DAC çıkışı kullanılmış, ikinci prototipte ise daha iyi ses kalitesi için harici TLV320DAC23 stereo DAC tercih edilmiştir.
Bu geçiş önemli bir geliştirmedir; çünkü araç içi kullanımda stereo hat çıkışı gerçek anlamda fark yaratır.
Harici DAC bölümünde ilginç bir ayrıntı vardır: TLV320DAC23, LPC213x’in doğal seri ses yapısı ile kullanılmak istenmiş, ancak LPC213x tarafında çerçeve başına 16 bit sınırı bulunduğu için doğru stereo aktarım adına left-justified veri formatına geçilmiştir.
Sol-sağ kanal işareti de ayrı bir pin üzerinden her ikinci örnekte değiştirilmiştir. DAC ayarları için ayrıca I2C0 hattı kullanılmıştır.
Baş ünite veri yolu nasıl çözülmüş?
Araç teybi ile haberleşme tarafında baş ünitenin harici değiştirici veri yolu benimsenmiştir.
Rapor bu hattı 62 kb/s seviyesinde SPI benzeri bir haberleşme olarak tanımlar.
LPC213x üzerinde yeterli sayıda ek SPI çevre birimi kalmadığı için bu bölüm doğrudan donanımsal SPI ile değil, yazılımsal bit-banging yöntemiyle kurulmuştur.
Burada Timer1 önemli rol oynar. Saat kenarlarını yakalama, bayt başlangıcını senkronlama ve paketler arası boşluğu algılama görevleri bu zamanlama yapısı ile çözülmüştür.
Yani mikrodenetleyici yalnızca ses örneği üretmiyor; aynı zamanda araç teybi ile gerçek zamanlı komut alışverişini de yürütüyor.
Hata ayıklama ve test sırasında benzer işlerde kullanılabilecek bir seri port terminal aracı da pratikte faydalı olabilir.
Besleme yapısı ve araç içinde kullanım notu
Kontrol beslemesi, baş üniteden gelen 12V hat üzerinden alınır ve LM1086 lineer regülatör ile 3.3V seviyesine düşürülür.
Rapordaki hesapta MMC kart için yaklaşık 50 mA, LPC2138 için 40 mA ve TLV320DAC23 için 15 mA akım öngörülmüş; toplam akım yaklaşık 95 mA olarak verilmiştir.
Bu kullanımda lineer regülatör üzerinde yaklaşık 0.9W civarında güç kaybı oluştuğu ve araç içi ortam için soğutucu düşünülmesi gerektiği özellikle belirtilmiştir.
Bu ayrıntı önemlidir; çünkü proje düşük güçlü görünse de araç içi sıcaklık koşulları regülatörü zorlayabilir.
Yazılım mimarisi neden başarılı?
Projede yazılım üç ana görev olarak ayrılmıştır. En düşük öncelikte dosya sistemi ve akış yönetimi vardır.
En yüksek öncelikte DAC örnekleme kesmesi bulunur. Bunun hemen altında ise baş ünite komutlarını alan haberleşme kesmesi yer alır.
Bu dağılım, ses çıkışının bozulmaması için doğru bir tercihtir.
Örnekleme tarafında çift tamponlama kullanılması da önemli bir artıdır.
Bir tampon DAC’a veri akıtırken diğer tampon arka planda yeni örneklerle doldurulur.
Böylece sesin takılması veya boşluk oluşması engellenir.
Rapor ayrıca bazı kayıpsız sıkıştırma algoritmalarının denendiğini, ancak işlemci yükü yüzünden istenen örnekleme hızında pratik bulunmadığını söylüyor.
Bu da projenin sınırlarını dürüst biçimde gösteriyor.
Bu projede öne çıkan ana bölümler
| Bölüm | Görev |
|---|---|
| LPC213x denetleyici | Sistem kontrolü, veri yolu haberleşmesi, kart erişimi ve ses akış yönetimi |
| MMC kart okuyucu | WAV dosyalarını depolama ve yüksek hızlı okuma |
| TLV320DAC23 stereo DAC | Dijital ses örneklerini stereo analog hatta dönüştürme |
| LM1086 3.3V regülatör | 12V araç hattından kontrol beslemesi üretme |
| Baş ünite veri yolu | Play, stop, next track, next CD gibi komutları alma ve gerekirse yanıt verme |
| Arka plan dosya akışı | FAT16 üzerinden dosya tarama ve tampon doldurma |
Dikkat edilmesi gereken noktalar
- Bu proje MP3 çözücü tabanlı hazır modül mantığında değildir; odak doğrudan WAV akışı ve gerçek zamanlı örnekleme üzerinedir.
- Baş ünite veri yolu donanımsal SPI yerine yazılımsal yöntemle çözüldüğü için zamanlama hatalarına karşı dikkatli tasarım gerekir.
- Harici stereo DAC kullanılan sürüm, ilk mono prototipe göre daha olgun yapıdadır.
- Lineer regülatör araç içinde ek ısınma oluşturabileceği için soğutma ve yerleşim göz ardı edilmemelidir.
- Kaynaksız biçimde “her türlü sıkıştırılmış ses dosyasını çalar” denmemelidir; kaynak metin özellikle WAV akışı ve denenen ama yük getiren kayıpsız codec girişimlerinden söz eder.
Bu çalışma, LPC213x ailesiyle yapılmış sıradan bir ses oynatıcıdan daha fazlasıdır.
Proje; MMC karttan yüksek hızlı veri okuma, FAT16 dosya sistemi, araç teybi veri yoluna uyum, gerçek zamanlı örnekleme, harici stereo DAC kullanımı ve tampon yönetimini tek yapıda birleştirir.
Özellikle gömülü sistemlerde ses işleme ile haberleşme işinin aynı işlemci üzerinde nasıl dengelendiğini görmek açısından öğretici bir örnektir.
Aynı işlemci ailesinin farklı bir kullanımını görmek isteyenler için LPC2138 ile VGA sinyali üreten çalışma da ilginç bir karşılaştırma sunar.