找回密码
 立即注册
查看: 1647|回复: 3

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

[复制链接]

83

主题

8319

回帖

1万

积分

超级版主

积分
17942
发表于 2025-10-30 11:02:05 | 显示全部楼层 |阅读模式
截图202511181334464590.jpg

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输出
}

滤波电路:

截图202510301050009260.jpg

输出1000Hz和500Hz正弦波照片:
截图202510301056552761.jpg

输出10KHz和5KHz正弦波照片:
截图202510301057598387.jpg

输出100KHz和50KHz正弦波照片:
截图202510301058426066.jpg

程序源码:
DAC OPA输出3个正弦波.rar (67.06 KB, 下载次数: 227)



1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
回复

使用道具 举报 送花

已绑定手机

3

主题

89

回帖

848

积分

高级会员

积分
848
发表于 2025-11-18 08:41:57 | 显示全部楼层
请教一下,这个放大器是起到电压跟随器的功能吗?为什么负输入要悬空呀?

点评

因为运放选择Buffer模式时,IN-依旧链接在所选择的IO上,所以要悬空。  详情 回复 发表于 2025-11-18 09:43
接各种嵌入式兼职,传感器,电机驱动等软硬件
回复

使用道具 举报 送花

83

主题

8319

回帖

1万

积分

超级版主

积分
17942
 楼主| 发表于 2025-11-18 09:43:51 | 显示全部楼层
Ryan_*** 发表于 2025-11-18 08:41
请教一下,这个放大器是起到电压跟随器的功能吗?为什么负输入要悬空呀? ...

因为运放选择Buffer模式时,IN-依旧链接在所选择的IO上,所以要悬空。
回复

使用道具 举报 送花

1

主题

11

回帖

151

积分

注册会员

积分
151
发表于 2026-7-20 23:13:01 | 显示全部楼层
按照STC32G144K246的数据手册,DAC的工作频率≤2MHz,但是在例程中,将系统时钟源切换到了HPLL1/2,最终系统时钟是120MHz,算出来DAC工作频率是15MHz,不是远远超过手册的限制了?
截图202607202312371254.jpg
截图202607202312443462.jpg
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-11 05:20 , Processed in 0.099281 second(s), 65 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表