I2S MULTIPLEXER

caglaripek

Üye
Katılım
11 Ekim 2024
Mesajlar
18
Merhaba ınmp441 kullanarak stm32f407vg kartımdan ı2s aracılığıyla sesi okuyorum ve stm32f407 kartım maksimum 2 adet ı2s girişine izin veriyor benim projemde ise 24 adet mikrofondan ses okumam gerekiyor bunu nasıl yapabilirim yardımcı olur musunuz?
 
Merhaba, I2S iki kanaldır. Eğer 24 kanal işleyeceksen I2S kullanamazsın. Onun yerine TDM kullanman lazım. Hem inmp441 hem de kullandığın MCU TDM destekliyor. Biraz araştır, sonra konu ile ilgili istediğin spesifik soruyu sor.
 
Merhaba, I2S iki kanaldır. Eğer 24 kanal işleyeceksen I2S kullanamazsın. Onun yerine TDM kullanman lazım. Hem inmp441 hem de kullandığın MCU TDM destekliyor. Biraz araştır, sonra konu ile ilgili istediğin spesifik soruyu sor.
Timur Bey, Tdm araştırdım ama ne kaynak bulabildim ne örnek bulabildim özellikle ı2s ile ilgili elinizde örnek veya kaynak varsa atabilir misiniz?
 
Elimde yazılmış program örneği yok. TDM ile ilgili youtube'da birçok kaynak var. Önce bunları izle ve konu hakkında genel bir bilgi sahibi ol. Ondan sonra MEMS mikrofonun datasheet'i ve kullandığın MCU nun "reference manual" dokümanı yeterli olur. MCU nin SAI denen seri port çevre birimini kullanman gerekecek. MCU master olacak diğer bütün MEMS ler slave olacak.

Yaptığın araştırmalar sonucunda öğrendiklerini aşama aşama burada paylaşırsan, doğru yolda gittiğini de teyit edebilirsin.
 
+ 24 kanaldan okunan sesler nerede işlenecek? Mcu içerisindemi yoksa farklı bir sistememi aktarılacak?
+ Mikrofonlar ile mcu arasıdaki en uzun mesafe ne kadar?

Biraz daha detay paylaşırsanız farklı öneriler gelebilir.
 
+ 24 kanaldan okunan sesler nerede işlenecek? Mcu içerisindemi yoksa farklı bir sistememi aktarılacak?
+ Mikrofonlar ile mcu arasıdaki en uzun mesafe ne kadar?

Biraz daha detay paylaşırsanız farklı öneriler gelebilir.
Merhaba, okunan sesler mcu içerisinde işlenecek fft uygulanarak frekanslarına ayrılacak ve mikrofonlar arası maksimum 40 50 cm olacak. Amacım her mikrofondan gelen verilerin frekansını bulmak.
 
Geliştirme kartı kullanıyorsun ve adamlar hiçbir SAI portuna erişim sağlamamış mı? Yoksa çalıştığın firma hardware geliştirdi ve hardware'de SAI portuna erişim mi yok?
 
datasheet kısmına girip baktığımda SAI desteği olmadığını görüyorum SAI desteği STM32F42xxx and STM32F43xxx ailesi için geliştirilmiş bende ise STM32F4 ailesi var.
 
Evet reference manual'da SAI bölümüne yazmışlar bu sadece 42xxx ve 43xxx diye. 407 de sadece SPI üzerinden I2S destekliyor ...
 
24 mic x 50cm = 1200cm ( 12M) en uzaktaki mikrofon mesafesi. Seçtiğiniz / seçeceğiniz iletişim yönteminin bu mesafeyi desteklemesi gerekir.
 
24 mic x 50cm = 1200cm ( 12M) en uzaktaki mikrofon mesafesi. Seçtiğiniz / seçeceğiniz iletişim yönteminin bu mesafeyi desteklemesi gerekir.

Mikrofonlar genelde bir arada oluyor, mesafe sorunu yok.

1728738119771.jpeg
 
Merhaba, okunan sesler mcu içerisinde işlenecek fft uygulanarak frekanslarına ayrılacak ve mikrofonlar arası maksimum 40 50 cm olacak. Amacım her mikrofondan gelen verilerin frekansını bulmak.
Konu sahibi mikrofonlar arası 40-50cm gibi bir değer verdi.
Lineer yerleştirildiği varsayarsak
+ Mcu bir uçta ise 12m
+ Mcu orta bir yerde ise 6m

en uzak sensör mesafesi olmazmı? benmi olayı yanlış anladım :emindegil1:
 
SPI ile bir şekilde yapılabilir mi diye baktım ama stm32f407 SPI en fazla 16 bit data formatını destekliyor. Ama mikrofondan 24 bit geliyor. SAI olan bir MCU kullanman gerekiyor gibi duruyor.
 
SPI ile bir şekilde yapılabilir mi diye baktım ama stm32f407 SPI en fazla 16 bit data formatını destekliyor. Ama mikrofondan 24 bit geliyor. SAI olan bir MCU kullanman gerekiyor gibi duruyor.
24 bit okumak için 2 kere word veya 3 kere bayt okunarak yapılabilinir diye düşünüyorum.Ancak 24 adet SPI' ın stm32 içerisinde yoktur.Bunun yerinede software SPI yazarak,yani clok ve data pinlerini tanımlayarak sıralı tarama ile yapılabilinir diye düşünüyorum.Yani clok sinyali üretecegiz ve data okuyacagız.Hızın yetememesi durumunda hazır Hal kütüphaneleri yerine register bazında programlama yapmak gerekebilir.Denemek lazım.:)
 
Software SPI ile muhtemelen olmaz. Örnekleme hızı belli değil ama standart 44.1 kHz olsa, bunu da 24 kanal ve 24 bit ile çarparsak (mono varsayıyorum) 25 Mbps veri hızı ortaya çıkıyor. Ancak hardware TDM ve DMA bunun altından kalkabilir.
 
16 kanal icin 16 Rx hattini PA0, PA1, ....PA15 seklinde baglarsin.
Clock hatti olarak timer cikis pininden yararlanirsin. Bu tum mikrofonlarin clock sinyali olur.
Her interrupt oldugunda A portunu okursun. Rama yazarsin. (DMA da olabilir)

Sonra bit ayiklayip paketleme yaparsin.

24 kanal da de benzer sekilde. ikinci bir port uzerinden okunabilir.
 
Son düzenleme:
kesme sıklığı çok yüksek oluyor o şekilde. 44.1 kHz de 945 ns de kesme geliyor. Daha düşük örneklemeye razı olsan, mesela 8 kHz de bile örneklense, 5 us de bir kesme gelir. İşlemci vaktinin çoğunu kesmede geçirir ses datasını işlemek için yeterince MIPS kalmaz muhtemelen.

DMA ile nasıl yapılabilir bu yapı bilmiyorum. Her clock geldiğinde otomatik olarak iki portu okuyabilen ve dairesel buffer'a yazan bir DMA var mı STM32 lerde?
 
mikrofonların I2S hatlarını paralel bağlayıp, Enable bacaklarıyla mikrofonları açıp/kapatın?
 

Çevrimiçi personel

Forum istatistikleri

Konular
7,103
Mesajlar
121,004
Üyeler
2,878
Son üye
burakgul

Son kaynaklar

Son profil mesajları

az bilgili çok meraklı
Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Back
Top