DAC使用
测试波形如下:
#include <Arduino.h> // required before wiring_private.h
#include "wiring_private.h" // pinPeripheral() function
int sinv[200];
const float pi=3.14;
//Serial2用于打印调试信息 11-RX 10-TX
Uart Serial2 (&sercom1, 11, 10, SERCOM_RX_PAD_0, UART_TX_PAD_2);
void SERCOM1_Handler()
{
Serial2.IrqHandler();
}
void setup() {
// pinMode(A0, OUTPUT); //DAC输出时不需要设置此项
analogWriteResolution(10); //10位分辨率
analogWrite(A0, 0);
Serial2.begin(115200);
pinPeripheral(10, PIO_SERCOM);
pinPeripheral(11, PIO_SERCOM);
delay(1000);
for (int i=0;i<200;++i) //计算正弦波200点
{
sinv[i]=(int)(512.0*sin(2*pi/200*i)+512); //满幅度3.3v 中心位置1024/2=512
delay(10);
Serial2.print("i= ");
Serial2.println(i);
Serial2.println(sinv[i]);
}
Serial2.println( sin(2*pi/200));
}
int i;
void loop() {
int output;
analogWrite(A0, sinv[i]);
delayMicroseconds(1);
i++;
if(i>=200)
i=0;
}