找回密码
 立即注册
查看: 1626|回复: 13

高速DAC实现@Ai8051U,DMA支持8/16位并口接R-2R电阻,输出正弦波、任意波形

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-9-9 18:10:09 | 显示全部楼层 |阅读模式
截图202409092005482657.jpg
高速DAC实现, 用DMA支持的
===TFT彩屏8位或16位并行数据接口送R-2R电阻网络
===输出正弦波,或任意波形
===@Ai8051U,DMA-M6800/i8080并行8/16位接口   
深圳国芯人工智能有限公司-产品_AI8051U系列 (stcai.com)


使用TFT彩屏接口+DMA, 将正弦波数据输出到P2口,
接R-2R做DAC输出正弦波(或任意波形)。
本例为32点正弦波,此法将极大程序减少对CPU的占用,

中断频率为输出波形的频率,比如输出2000Hz的正弦波,
如果用传统的中断重装方式,将需要64KHz(15.625us)的中断,
严重拖累CPU。
而使用本方法,中断率为2000Hz,并且中断仅仅是重启DMA。
注意:

重启DMA需要大约1us的时间,会附加到输出波形中,引起失真,
当波形小于5000Hz时,影响可以忽略,大于10KHz时,
影响开始能检测到。
后面做数字电桥LCR会考虑使用本部分电路及方法,
或者使用DMA-PWM产生正弦波。

要附加一个 R-2R DAC 电路:
截图202409091808531273.jpg

输出1000Hz正弦波(32点正弦波表):
截图202409091809417472.jpg
可以用 内置的 12位ADC 来反馈检测控制精度


程序源码:
使用TFT彩屏8位数据口接R-2R电阻做DAC通过DMA输出波形.rar (239.4 KB, 下载次数: 125)


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-9-9 19:58:34 | 显示全部楼层
截图202409091958017075.jpg



截图202409091958287052.jpg


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-9-9 20:00:37 | 显示全部楼层
截图202409091959375618.jpg


截图202409092000095257.jpg


截图202409092000357349.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-01 23:18:33

15

主题

139

回帖

975

积分

高级会员

积分
975
发表于 2024-9-9 23:33:05 | 显示全部楼层
DMA传输间隔期,P2能保持上一次的输出数据吗?

点评

保持  详情 回复 发表于 2024-9-10 09:22
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-9-10 09:22:00 | 显示全部楼层
本帖最后由 梁工 于 2024-9-10 09:33 编辑
hea*** 发表于 2024-9-9 23:33
DMA传输间隔期,P2能保持上一次的输出数据吗?

保持,下面为没有滤波的波形,明显是有保持的,没有保持的难以回复波形的:
截图202409100932109792.jpg

水平放大2倍:
截图202409100933195515.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-01 23:18:33

15

主题

139

回帖

975

积分

高级会员

积分
975
发表于 2024-9-10 12:41:54 | 显示全部楼层
我测试的结果不是这样。
两次输出间有4个时钟的无效数据0,你上面那个图应该是初步滤波后或者示波器采样率太低显示不出来。
之前我用DMA-LCM做高速DAC,失败原因这是其中之一。后面第二版加了个574将数据用WR打了一下。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-01 23:18:33

15

主题

139

回帖

975

积分

高级会员

积分
975
发表于 2024-9-10 12:54:42 | 显示全部楼层
直接烧录1楼的hex,示波器测量截图如下:
IMG_20240910_124607.jpg

因只用了高3bit且电阻网络架构不同,所以幅值有些差异,应该不影响说明这个问题。

点评

加一个100PF的电容就看不到这个尖峰了。毕竟这是彩屏驱动外设,数据输出切换有尖峰,但滤波后基本不影响。  详情 回复 发表于 2024-9-10 15:15
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-9-10 15:15:56 | 显示全部楼层
hea*** 发表于 2024-9-10 12:54
直接烧录1楼的hex,示波器测量截图如下:

加一个100PF的电容就看不到这个尖峰了。毕竟这是彩屏驱动外设,数据输出切换有尖峰,但滤波后基本不影响。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:7
  • 最近打卡:2025-04-01 23:18:33

15

主题

139

回帖

975

积分

高级会员

积分
975
发表于 2024-9-10 15:25:49 | 显示全部楼层
做高速DAC有影响。
我用来输出视频,最高可设为3个时钟输出一个字节,实际效果是7个时钟输出一次,其中3个时钟有效数据,4个时钟输出0。没办法滤波的,要滤把有效数据也滤掉了。
只能用来做低速低精度DAC,干扰脉冲相对于有效数据占的比例小一些。
但是做低速DAC不如用PWM更合适了。

点评

输出视频!我主楼说了,超过10KHz就会有明显的影响(32点)。  详情 回复 发表于 2024-9-10 15:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-9-10 15:32:33 | 显示全部楼层
hea*** 发表于 2024-9-10 15:25
做高速DAC有影响。
我用来输出视频,最高可设为3个时钟输出一个字节,实际效果是7个时钟输出一次,其中3个 ...

输出视频!我主楼说了,超过10KHz就会有明显的影响(32点)。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:37 , Processed in 0.126972 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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