STM32F3 ADC

Started by ch25, April 13, 2015, 01:58:30 PM

Previous topic - Next topic

ch25

จาก STM32F3 Discovery ทดสอบ ADC แล้วมันคอมไพล์ผ่านแต่ตอนรันมันไปค้าง  while(ADC_GetCalibrationStatus(ADC1) != RESET );
------------------------
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
  /* Configure ADC Channel7 as analog input */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
 
  ADC_StructInit(&ADC_InitStructure);

  /* Calibration procedure */ 
  ADC_VoltageRegulatorCmd(ADC1, ENABLE);
 
  /* Insert delay equal to 10 µs */
  Delay(10);
 
  ADC_SelectCalibrationMode(ADC1, ADC_CalibrationMode_Single);
  ADC_StartCalibration(ADC1);
 
  while(ADC_GetCalibrationStatus(ADC1) != RESET );


ไม่รู้จะแก้ยังไง

crywolf

ลอง reset calibration register ก่อน แล้วค่อย calibration ดูครับ

  /* ADC1 reset calibration register */   
  ADC_ResetCalibration(ADC1);
  while(ADC_GetResetCalibrationStatus(ADC1));
 
  /* ADC1 calibration start */
  ADC_StartCalibration(ADC1);
  while(ADC_GetCalibrationStatus(ADC1));

ch25

ขอบคุณครับ แต่หา ADC_ResetCalibration(ADC1); ไม่เจอ คอมไพล์ไม่ผ่านครับ


ch25

ตอนนี้เปลี่ยนมาใช้ Stm32Cube MX ให้มันสร้างไฟล์ให้ ก็พออ่านค่าได้อยู่ครับแต่มันไม่ค่อยถูก ผมต้องการอ่านค่า 4 ช่อง ต่อเนื่อง ผ่าน DMA ไม่รู้จะตั้งยังไงให้ถูกต้อง

ch25

ตอนนี้อ่านค่า ADC ผ่าน DMA แต่พบว่าอ่านที่ได้มัน หมุนวนไปเรื่อย ๆ จะทำยังไงให้มันนิ่ง