Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => ARM7 Mikrodenetleyici => Konuyu başlatan: cebeci52 - 09 Ağustos 2014, 16:44:34

Başlık: stm32f4 de analog sinyal ölçme ve adc ile cevirme
Gönderen: cebeci52 - 09 Ağustos 2014, 16:44:34
stm32f4 kitinde aldıgım analog sinyali ölçüp adc ile cevirip usb ye atabilirmiyim
Başlık: Ynt: stm32f4 de analog sinyal ölçme ve adc ile cevirme
Gönderen: r32mp - 21 Ekim 2014, 22:22:45
Yapabilirsin.

Usb üzerinden bir programa göndereceksin anladığım kadarı ile ? microc'nin arm derleyicisini kullanarak kısa yoldan haledersin. hatta usb örneğide mevcud.
Farklı bir derleyici kullanacağım dersen. keil,iar vs... Örnekler den yayarlanabilirsin.

Basitçe adc okuma yapmak için:


#include "stm32f4xx_adc.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx.h"


// ADC AYAR
void ADC_AYAR(){


ADC_InitTypeDef adcinitayar1;
ADC_CommonInitTypeDef adcinitayar2;
GPIO_InitTypeDef portayar;
GPIO_InitTypeDef ledayar;


// SAAT SINYALLERINI AÇIYORUZ
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);


// ADC AYARLARI
ADC_DeInit();
adcinitayar1.ADC_ContinuousConvMode = ENABLE;
adcinitayar1.ADC_DataAlign = ADC_DataAlign_Right;
adcinitayar1.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
adcinitayar1.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConv_T1_CC1;
adcinitayar1.ADC_NbrOfConversion = 1;
adcinitayar1.ADC_Resolution = ADC_Resolution_10b;
adcinitayar1.ADC_ScanConvMode = DISABLE;
ADC_Init(ADC1, &adcinitayar1);

adcinitayar2.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
adcinitayar2.ADC_Mode = ADC_Mode_Independent;
adcinitayar2.ADC_Prescaler = ADC_Prescaler_Div2;
adcinitayar2.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
ADC_CommonInit(&adcinitayar2);


// PA5 pini analog girisi
portayar.GPIO_Mode = GPIO_Mode_AN;
portayar.GPIO_Pin = GPIO_Pin_5;
portayar.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA , &portayar);



//ADC yi aciyoruz
ADC_Cmd(ADC1,ENABLE);

//adc kanal ayari
ADC_RegularChannelConfig(ADC1,ADC_Channel_5,1,ADC_SampleTime_3Cycles);

}

int adcx_oku(){

ADC_SoftwareStartConv(ADC1);

while (!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
return ADC_GetConversionValue(ADC1);

}
unsigned int okunan=0;

int main(void){

ADC_AYAR();

while(1){

okunan = adcx_oku();
//Usb üzerinden veriyi göndermek kalıyor geriye

}



Daha önce hiç usb ile veri transferi yapmamıştım forumda vardır mutlaka. Gene en kese yol MicroC arm. Bununla alakalı bir örnek bulayım.