본문 바로가기

[ST_MICRO]/STM32H7

[STM32H7 EVM] Arduino DAC 출력 테스트

STM327H EVM 보드에는 D34 LED에 DAC1_OUT2(PA5) 가 연결되어 있어 DAC 출력 값을 LED 밝기로 확인 가능하다.

Arduino에서 DAC2는 어떻게 출력하지?

 

 

STM32H7에서 DAC 핀은 PA4, PA5에 할당되어 있다.

Arduino 에서 DAC 핀맵 정의는 아래와 같다.

//*** DAC ***

#ifdef HAL_DAC_MODULE_ENABLED
WEAK const PinMap PinMap_DAC[] = {
  {PA_4,  DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC1_OUT1
  {PA_5,  DAC1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC1_OUT2
  {NC,    NP,    0}
};
#endif

 

 

Arduino 에서 핀맵 할당은 D19에 PA5를 설정했고 Analog 핀에서는 A3에 맵핑 해 두었다.

// Pin number
const PinName digitalPin[] = {
  /* Right Side: */
  PA_10, // D0
  PA_9, // D1
  PC_13, // D2
  PD_13,  // D3
  PC_8,  // D4
  PD_2,  // D5
  PC_12, // D6
  PG_10, // D7
  PB_4, // D8
  PE_2,  // D9
  PE_3,  // D10
  PB_5,  // D11
  PB_4,  // D12
  PB_3,  // D13
  PB_8,  // D14
  // NC, AUDIO IN L
  // NC, AUDIO IN R
  // NC, AUDIO OUT L
  // NC, AUDIO OUT R
  // NC, AGND
  /* Left Side: */
  // NC, 3v3A Out
  PB_9,  // D15/A0  --15
  PB_0,  // D16/A1
  PB_1,  // D17/A2
  PA_4,  // D18/A3 --18
  PA_5,  // D19/A4 --19
  
  
  
  const uint32_t analogInputPin[] = {
  16, // A0
  17, // A1
  18, // A2
  19, // A3
  20, // A4
  21, // A5
  22, // A6
  23, // A7
  24, // A8
  25, // A9
  26, // A10
  27  // A11
};

 

 

이제 STM32H7 DAC 출력을 위한 Arduino 코드를 적성해 보자.

A0 에 연결된 VR값을 받아서 DAC로 출력하는 간단한 예제를 작성해 보았다.

const int analogInPin = A0;
const int analogOutPin = A3;

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

#define LED_BUILTIN     PD13

void setup() {

  analogReadResolution(12);      
  
  Serial.begin(115200);
  Serial.print("STM32H7 DAC Test\r\n");

  pinMode(LED_BUILTIN, OUTPUT);
}


void loop() {

  // read the analog in value:
  sensorValue = analogRead(analogInPin);

  // change the analog out value:
  analogWrite(analogOutPin, outputValue);

  // print the results to the Serial Monitor:
  Serial.print("sensor = ");
  Serial.print(sensorValue);
  Serial.print("\t output = ");
  Serial.println(outputValue);

  delay(100);
}

 

반응형