关于AI8051U和Ai32F12K54的DMA_UART1的BUG发现
本帖最后由 DebugLab 于 2024-10-26 11:22 编辑我现在不知道是不是很大的一个BUG吧,最近刚玩STC的DMA不久,还不是很懂的样子,但是这几天快马加鞭的赶进度,发现通过DMA在UART1发送字节的时候,读取两个寄存器有困难,
读不到值,就是DMA_UR1T_DONE和DMA_UR1T_DONEH两个寄存器,压根没法读,可能是DMA发送完成之后就自动把这两个寄存器全给cut了吧,我不知道,有没有懂行的哥们给个意见,
一共建设对DMA的认知!!
这个设计就是那个样子,DMA传输过程中,DONE寄存器表示已完成字节数,传输完成时就硬件自动清零了。
如果一定要读DONE寄存器,需要加个判断,STA状态寄存器的完成标志。
读寄存器DONE,结果非零值说明是实际完成字节数,结果为零则再判断STA状态寄存器的IF标志,如果DONE为零且IF也为零,说明已完成字节数为0,如果DONE为零且IF为1,说明已传输已全部完成,字节数可从寄存器AMT得到。
health 发表于 2024-10-26 02:58
这个设计就是那个样子,DMA传输过程中,DONE寄存器表示已完成字节数,传输完成时就硬件自动清零了。
如果一 ...
我大概清楚了,数据手册上面没有写明白,硬件在DMA传输完成之后就已经很迅速的将DONE寄存器的值清零了,所以怎么读都读不到,定时器1ms中断查询都是不等于最后实际传输的值的
页:
[1]