STM32F4 ADC Çalışma Frekansı

Başlatan camby, 25 Mart 2013, 15:07:12

camby

STM32F4 ADC Modülü APB2 yolu üzerinden besleniyor. Frekansı 84 MHz.

ADC Modülü için max. 36 MHz ' de çalışabilir deniyor. Çeşitli zamanlama hesaplamaları da bu 36 MHz üzerinden yapılmış.

84MHz - 36 MHz dönüşümü nerede yapılıyor ? Bununla ilgili adc prescaler bulamadım. Şu an ADC'nin çalıştığı frekansı nasıl tespit edebilirim ?

magnetron

hocam merhaba

ADCnin max frekansı nerde yazıyor ? aradım bulamadım

sizin sorunuzun cavabı ise reference manual de

ADC common control register (ADC_CCR)
bu registerde

Bits 17:16 ADCPRE: ADC prescaler
Set and cleared by software to select the frequency of the clock to the ADC. The clock is
common for all the ADCs.
Note: 00: PCLK2 divided by 2
01: PCLK2 divided by 4
10: PCLK2 divided by 6
11: PCLK2 divided by 8

Enginar

#2
Stm32f407vg çipinin dökümında yazıyodu hocam sanırım.ADC'leri 2MSPS(MegaSamplePerSecond).Yanlışım yoksa max 2Mhz örnekleme hızı var.84 mhz yi prescaler ve sampling time rutinlerinden sonra  <2mhz olması gerek.

camby

#3
Merhaba ,

Yüksek MSPS oranını yakalamaya çalışıyorum , o yüzden bu frekans hesapları biraz kafamı karıştırdı.

- ADC'nin maksimum frekansı datasheet üzerinde yazıyor. ( reference manuel değil ). Sayfa 124 , 2.4V-3.6V için Max 36 MHz.

- Aynı voltaj aralığında 2.4 MSPS çalışma değeri belirlenmiş.

- ADC_CCR Register ı yeni gördüm


O zaman şöyle bir sorun gözüküyor : APB2 Bus Hızı , PCLK2 : 84 MHz . ADC_CCR Register'dan gelen varsayılan (00) bölücü ayarı /2 . Bu durumda prescaler ile hiç oynamadığımızda ADC'ye 42 MHz clock gidecek. Yanlış mıyım ? Bu değer de çalışma frekansının üzerinde.

Prescaler'ı /4 yaparsak ADC'ye giden clock 21 MHz olacak. Bu değer de maksimum çalışma frekansının 2/3'ü neredeyse.


Manuel'de ise ilginç değerler var :

Alıntı YapThe total conversion time is calculated as follows:
Tconv = Sampling time + 12 cycles
Example:
With ADCCLK = 38 MHz and sampling time = 3 cycles:
Tconv = 3 + 12 = 15 cycles = 0.5 μs with APB2 at 60 MHz

APB2 , 60 MHz kullanmışlar , 38 MHz ADCCLK nasıl üretilmiş merak ediyorum.

Ne diyorsunuz bu konuya ?

magnetron

hocam sizin manualde bir hata var herhalde

bendeki reference manuel de sayfa 219 da

Alıntı YapThe total conversion time is calculated as follows:
Tconv = Sampling time + 12 cycles
Example:
With ADCCLK = 30 MHz and sampling time = 3 cycles:
Tconv = 3 + 12 = 15 cycles = 0.5 μs with APB2 at 60 MHz

bu durumda eğer işlemciyi 168 MHz de çalıştırıyorsanız

ADC max clock 21 Mhz ayarlamak zorundasınız

o zaman da max alabileceğiniz performans 1.4 MSample oluyor

z

ADC nin ext clk ile çalışma durumu varmı?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

camby

Yok hocam görmedim hiç , ext triger var ancak o da ADC ölçümü için. ADC bloğu clock  bus üzerinden besleniyor.

Sample rate maksimum yapabilmek için , bus hızında oynama yapacağım gibi duruyor şimdilik. 1.4 MSPS yeter ise ona da uğraşmam tabi.

camby

Alıntı yapılan: camby - 26 Mart 2013, 09:30:04
O zaman şöyle bir sorun gözüküyor : APB2 Bus Hızı , PCLK2 : 84 MHz . ADC_CCR Register'dan gelen varsayılan (00) bölücü ayarı /2 . Bu durumda prescaler ile hiç oynamadığımızda ADC'ye 42 MHz clock gidecek. Yanlış mıyım ? Bu değer de çalışma frekansının üzerinde.

Bu şekilde çalışıyorum , bir sorun yaşamadım henüz. ADC ben bu frekansta çalışmam gibi bir tepki de vermedi.

camby

Max ADC frekansı için sistemi 144 MHz çalıştırmışlar..

Alıntı Yap
In this example, the system clock is 144MHz, APB2 = 72MHz and ADC clock = APB2 /2.
Since ADCCLK= 36MHz and Conversion rate = 5 cycles
==> Conversion Time = 36M/5cyc = 7.2Msps

z

32F103 de bu ADC frekans seçim işi benim de hoşuma gitmedi. Max 14Mhz olabilen ADC clk frekansını, 72Mhz de koşan işlemciden dolayı ancak 72/6=12Mhz olarak seçiyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

camby

Datasheet ve manuel'lerde de bu frekans seçim sıkıntının yaşanacağından bahsedilmiyor. Yukarıdaki açıklamaları örnek klasörlerin içindeki read me 'lerde buldum..

Bu modellerde bus'ların fiziksel olarak dedikleri gibi ( 24-36-72 mhz) frekans sınırı var mı gerçekten. Özellikle f1 serilerinde baya bi çeşitlilik mevcut.

Hocam Siz adc modülünü 12mhz den yüksek bir frekansta çalıştırmayı denediniz mi ? Katsayılardan bu mümkün mü ?

Ben F4'ün adc sini 42Mhz çalıştırıyorum , hiç bir sorun yok. 3 ADC Triple Interleaved mode çalıştırıyorum , 42 MHz 8.4 MSPS 12 bit ölçüm alıyorum , gürültü dahi yok.

z

ADC yi overclock etmeyi hiç denemedim. Fakat çalışsa dahi güvenipte gerçek uygulama yapacağım üründe bu riske giremem.

Benim uygulamamda ADC ile ölçüm yapacağım zamanlar belli. MCU, ADC ile ölçümü yapmadan önce PLL ile CPU frekansını düşürüp ADC yi max frekansda çalışacak hale getirebilir. ADC ile işim bitince de tekrardan CPU yu max hıza getirebilirim ama bu attığım taşa ve ürküttüğüm kurbağalara değmez.

ST, ARM içine koyduğu çevrebirimlerini kesinlikle güzel tasarlamamış, malzemeden çalmış. TI'ın stellaris serisinden sonra ST kabak tadı verdi.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com