ESP32 基于arduino平台的DAC模拟输出IQ通道模拟

先上代码

#include <Arduino.h>
#include <esp32-hal-dac.h>
#define DAC1 (*(volatile unsigned long *)0x3ff48484)//ADC数值寄存器
#define DAC2 (*(volatile unsigned long *)0x3ff48488)
#define LED1 25
#define LED2 26
#define pi 3.14159
#define totalStep 1000
unsigned long IOutputQueue[totalStep];
unsigned long QOutputQueue[totalStep];
unsigned long i;

void setup()
{
    delay(100);
    Serial.begin(115200);
    Serial.println("123");

    for (i = 0; i < totalStep; i++)
    {
        IOutputQueue[i] = sin(2 * pi * i / totalStep) * 127 + 128;
        IOutputQueue[i] = ((IOutputQueue[i] & 0x000000ff) << (19)) | 0xc0060400;
    }
    for (i = 0; i < totalStep; i++)
    {
        QOutputQueue[i] = cos(2 * pi * i / totalStep) * 127 + 128;
        QOutputQueue[i] = ((QOutputQueue[i] & 0x000000ff) << (19)) | 0xc0060400;
    }
    
    pinMode(LED1, OUTPUT);
    pinMode(LED2, OUTPUT);
    dacWrite(LED1, 0);
    dacWrite(LED2, 0);
    Serial.printf("%x", DAC1);//在这里我们可以观察到寄存配置应该是0xc0060400 
}

void loop()
{
    while (1)
    {
        i++;
        if (i >= totalStep)
            i = 0;
        DAC1 = IOutputQueue[i];
        DAC2 = QOutputQueue[i];
    }
}

示波器可以看到输出是正交的
附上寄存器说明
X*Y是个圆圈说明应该正交吧

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值