找回密码
 立即注册
查看: 300|回复: 2

关于AI8051U和Ai32F12K54的DMA_UART1的BUG发现

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:402
  • 最近打卡:2025-05-01 11:09:19
已绑定手机

51

主题

138

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-10-26 00:17:51 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-10-26 11:22 编辑

我现在不知道是不是很大的一个BUG吧,最近刚玩STC的DMA不久,还不是很懂的样子,但是这几天快马加鞭的赶进度,发现通过DMA在UART1发送字节的时候,读取两个寄存器有困难,

读不到值,就是DMA_UR1T_DONE和DMA_UR1T_DONEH两个寄存器,压根没法读,可能是DMA发送完成之后就自动把这两个寄存器全给cut了吧,我不知道,有没有懂行的哥们给个意见,
一共建设对DMA的认知!!

DMA_UART自动发送256个字节.zip

211.81 KB, 下载次数: 48

用尽STC单片机的资源是我的梦想
回复

使用道具 举报 送花

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

15

主题

139

回帖

977

积分

高级会员

积分
977
发表于 2024-10-26 04:58:18 | 显示全部楼层
这个设计就是那个样子,DMA传输过程中,DONE寄存器表示已完成字节数,传输完成时就硬件自动清零了。
如果一定要读DONE寄存器,需要加个判断,STA状态寄存器的完成标志。
读寄存器DONE,结果非零值说明是实际完成字节数,结果为零则再判断STA状态寄存器的IF标志,如果DONE为零且IF也为零,说明已完成字节数为0,如果DONE为零且IF为1,说明已传输已全部完成,字节数可从寄存器AMT得到。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:402
  • 最近打卡:2025-05-01 11:09:19
已绑定手机

51

主题

138

回帖

1494

积分

金牌会员

积分
1494
发表于 2024-10-26 10:10:55 | 显示全部楼层
hea*** 发表于 2024-10-26 02:58
这个设计就是那个样子,DMA传输过程中,DONE寄存器表示已完成字节数,传输完成时就硬件自动清零了。
如果一 ...

我大概清楚了,数据手册上面没有写明白,硬件在DMA传输完成之后就已经很迅速的将DONE寄存器的值清零了,所以怎么读都读不到,定时器1ms中断查询都是不等于最后实际传输的值的
用尽STC单片机的资源是我的梦想
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 09:07 , Processed in 0.105847 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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