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);
}