본문 바로가기

WCH/CH32V003

CH32V003 SSM - Arduino ADC 테스트

 

새로운 칩에 대해서 테스트 하다 잘 안되는 사항이 있으면 기록하면서 정리 해봐야 겠다.

ADC는 가장 기본이 되는 부분인데 정상 동작을 하지 않는다.

 

variant_CH32V003F4.h 파일을 보면 디폴트로 ADC Module이 Enable 되저 있지 않다.

/* ENABLE Peripherals */
//#define                         ADC_MODULE_ENABLED
#define                         UART_MODULE_ENABLED
// #define                         SPI_MODULE_ENABLED
#define                         I2C_MODULE_ENABLED

 

 

CH32V003의 ADC는 10비트 이고 ADC핀은 아래와 같이 할당되어 있다.

/* CH32V003F4 Pins */
#define PA1                     PIN_A1
#define PA2                     PIN_A0
#define PC0                     2
#define PC1                     3
#define PC2                     4
#define PC3                     5 
#define PC4                     PIN_A2
#define PC5                     7
#define PC6                     8
#define PC7                     9
#define PD0                     10
#define PD1                     11
#define PD2                     PIN_A3
#define PD3                     PIN_A4 
#define PD4                     PIN_A7
#define PD5                     PIN_A5
#define PD6                     PIN_A6 
#define PD7                     17

 

 

ADC_MODULE_ENABLED 를 활성화 하고 다시 구동해 보니 ADC가 정상적으로 동작하는 것을 확인 할 수 있다.

int sensorPin = PD3;   // select the input pin for the potentiometer
int ledPin = PD4;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {

  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);

  Serial.begin(115200);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);


  Serial.println(sensorValue);
}
반응형