梁工 发表于 2025-10-30 11:02:05

STC32G144K246的DAC+OP应用 DAC1+OP1-DAC2+OP3-DAC2+OP4 同时输出3个正弦波

请直接下载"obj"里面的"DAC.hex"测试, 下载时选择主频48MHz。
3个DAC同时输出正弦波,输出正弦波最高频率大约200KHz(DAC+运放的带宽决定),波形漂亮!
DAC1+OP1从P0.7输出正弦波,P0.5(OP1负输出入端)要悬空。输出接一阶RC滤波(3K+220pF)送示波器通道1。
DAC2+OP3从P7.4输出正弦波,P7.1(OP3负输出入端)要悬空。输出接一阶RC滤波(3K+220pF)送示波器通道2。
DAC2+OP4从P4.0输出正弦波,P6.5(OP4负输出入端)要悬空。输出接一阶RC滤波(3K+220pF)送示波器通道3。
输出正弦波可自行决定,我给的数据是500Hz ~100KHz。




//主循环
while(1) //循环40T, 采样1.2MHz@48MHz, 3MHz@120MHz
{
    //sum1 += 22;    //1000Hz,   N = fx * 65536/3000000 = fx*1024/46875
    //sum2 += 11;    //500Hz

    //sum1 += 218;   //10KHz
    //sum2 += 109;   // 5KHz

      sum1 += 2185;//100KHz
      sum2 += 1092;// 50KHz

//主循环
while(1) //循环40T, 采样1.2MHz@48MHz, 3MHz@120MHz
{
    //sum1 += 22;    //1000Hz,   N = fx * 65536/3000000 = fx*1024/46875
    //sum2 += 11;    //500Hz

    //sum1 += 218;   //10KHz
    //sum2 += 109;   // 5KHz

      sum1 += 2185;//100KHz

      sum2 += 1092;// 50KHz

      DAC1_DAT = T_SineTable[(u8)(sum1 >>8)];
      DAC1_CR= 0x41;   //刷新DAC1输出
      DAC2_DAT = T_SineTable[(u8)(sum2 >>8)];
      DAC2_CR= 0x41;   //刷新DAC2输出
}

滤波电路:



输出1000Hz和500Hz正弦波照片:


输出10KHz和5KHz正弦波照片:


输出100KHz和50KHz正弦波照片:




程序源码:



页: [1]
查看完整版本: STC32G144K246的DAC+OP应用 DAC1+OP1-DAC2+OP3-DAC2+OP4 同时输出3个正弦波