STM32 DAC

Başlatan muhittin_kaplan, 15 Temmuz 2015, 00:49:14

muhittin_kaplan

DAC_SetChannel1Data(DAC_Align_12b_R,DATA)//saga yanaşık 12bit

stm32de Dac kullanırken alabildiğiniz minimum çıkış gerilimi nedir ? (kitabi bilgi varmı ?)

X-Fi

DAC için 2 seçenek var Vdda voltajını böler ya da Vref+ voltajını böler.

Vdda seçilirse minimum Vdda /4096 olur.

Ancak Vref için şöyle bir sınırlama getirilmiş  1.8V<=Vref+<=Vdda buna göre Vref+ ile min 1.8V bölünebilir.

Buda 1.8V/4096 olur.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

engerex

 ADC için max ve min ref değerleri nedir? Sanıyorum başka şartlarda var.

X-Fi

ADC de okuma hızı referansı değiştiriyor aşağıdaki tablo STM32L1xx için ADC referansı;


http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

LukeSkywalker


muhittin_kaplan

Kullandığım yöntem şu

http://www.keil.com/forum/23379/dac-without-dma-and-timer/

Muhtemelen 0v da olur ama  0x001 değer verdiğimde (3.3 v olduğunu düşünürsek) çıkış gerilimimin normalde 0.8mV olması gerekir.
0x0FF e kadar aynı gerilim değerini ( ~2mv ) alıyor sonrasında değerler yükselmeye başlıyor.

X-Fi

Muhittin hocam analog tasarım kurallarına uygun olarak tasarlanmayan bir kartda söylediğiniz değerleri doğru olarak okuyamazsınız. Ayrıca pcbdeki akım yönlerinin gnd hattında oluşturacağı potansiyel farklar olacaktır çok küçük voltajları doğru okumak için öncelikle işlemciyi pil ile besleyin ve kart üzerindeki gereksiz akımları kapatın, buna işlemciyi yüksek hızlarda çalıştırmak da dahil.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

muhittin_kaplan

Hocam ben doğrudan STM32VL kartın çıkışını ölçüyorum.
0x000-0x0FF değer arasında 1,9mV okuyorum.
0x100-0xFFF arasında bu çıkış gerilimi verdiğim değere göre değişiyor.
Anlayamadığım gadi 1-2mV ları Multimetre Çözünürlülüğü, Ölçüm Hataları, PCB vb problemlerden okuyamıyorum ama en azında 50mV 100mV seviyelerini ölçebilmeli Değişimleri görebilmeliyim.

magnetron

DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;

hocam bu satır var mı ?

muhittin_kaplan

anlamadım bir şekilde çalışmaya başladı.

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_dac.h"
/** \brief
 * \param
 * \param
 * \return
 *
 */

int main(void) {

GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitStructure;

//SystemInit();

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOA, &GPIO_InitStructure);

DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);

DAC_SetChannel1Data(DAC_Align_12b_R, 0xFFF);

DAC_Cmd(DAC_Channel_1, ENABLE);
  while (1)
  {

  }
}