guo_stc 发表于 2026-2-3 08:39:24

AI8051U DMA使用问题?

谁能帮我看看,这个DMA设置哪里不对? AI8051U34K64 QFN ,主频45.1184MHZ, ES关闭, DMA的完成中断不产生,在电脑上发送的再多的数据都没回应.

DMA_UR1R_SET:                                                                        ;
        MOV                DPX,        #WORD0 DMA_UR1R_CFG                        ;B7:UR1RIE,B3B2:UR1RIP中断优先级,
        MOVH        DPX,        #WORD2 DMA_UR1R_CFG                        ;B1B0:UR1RPTY总线优先级
        MOV                R11,        #10000101B                                        ;
        MOV                @DPX,        R11                                                        ;
       
        MOV                DPX,        #WORD0 DMA_UR1R_STA                        ;B1:RXLOSS数据丢弃标志,
        MOVH        DPX,        #WORD2 DMA_UR1R_STA                        ;B0:UR1RIF中断请求标志
        MOV                R11,        #00000000B                                        ;
        MOV                @DPX,        R11                                                        ;
       
        MOV                DPX,        #WORD0 DMA_UR1R_AMTH                ;传输总字节数高字节
        MOVH        DPX,        #WORD2 DMA_UR1R_AMTH                ;
        MOV                R11,        #000H                                                ;32BYTE
        MOV                @DPX,        R11                                                        ;
       
        MOV                DPX,        #WORD0 DMA_UR1R_AMT                        ;传输总字节数低字节
        MOVH        DPX,        #WORD2 DMA_UR1R_AMT                        ;
        MOV                R11,        #01FH                                                ;
        MOV                @DPX,        R11                                                        ;
       
;        JB                UART1_A_B_ST,        DMA_UR1R_SET1                ;
        MOV                WR10,        #WORD0 SBUF1_ADDR                        ;
        SJMP        DMA_UR1R_SET2                                                ;
        DMA_UR1R_SET1:                                                                ;
        MOV                WR10,        #WORD0 SBUF2_ADDR                        ;
        DMA_UR1R_SET2:                                                                ;
        MOV                DPX,        #WORD0 DMA_UR1R_RXAH                ;接收地址高字节
        MOVH        DPX,        #WORD2 DMA_UR1R_RXAH                ;
        MOV                @DPX,        R10                                                        ;
        MOV                DPX,        #WORD0 DMA_UR1R_RXAL                ;接收地址低字节
        MOVH        DPX,        #WORD2 DMA_UR1R_RXAL                ;
        MOV                @DPX,        R11                                                        ;
       
        MOV                DPX,        #WORD0 DMA_UR1R_CR                        ;B7:UR1REN,B5:TRIG触发开始,
        MOVH        DPX,        #WORD2 DMA_UR1R_CR                        ;B0:CLRFIFO,写1清空FIFO
        MOV                R11,        #10100001B                                        ;
        MOV                @DPX,        R11                                                        ;
RET                                                                                                ;

DMA_UR1R_ISR:                                                                        ;DMA串口1接收中断
        PUSH        DPX                                                                        ;
        PUSH        WR10                                                                ;
        PUSH        PSW                                                                        ;
        PUSH        PSW1                                                                ;
        SETB                UART1_RX_OVER                                                ;
        MOV                DPX,        #WORD0 DMA_UR1R_STA                        ;B1:RXLOSS数据丢弃标志,
        MOVH        DPX,        #WORD2 DMA_UR1R_STA                        ;B0:UR1RIF中断请求标志
        MOV                R11,        #0                                                        ;
        MOV                @DPX,        R11                                                        ;
        MOV                DPTR,        #WORD0 DMA_QSPI_CR                        ;B7:QSPIEN,B6:写1写开始,B5:写1读开始,
;        MOVH        DPX,        #WORD2 DMA_QSPI_CR                        ;B1:写1清空写FIFO,B0:写1清空读FIFO
        MOV                @DPX,        R11                                                        ;
        MOV                DPTR,        #WORD0 DMA_UR1R_DONEH                ;
        MOV                R10,        @DPX                                                ;
        MOV                DPTR,        #WORD0 DMA_UR1R_DONE                ;
        MOV                R11,        @DPX                                                ;
;        JB                UART1_A_B_ST,        DMA_UR1R_ISR1                ;
        MOV                UART1_1COUNT,        WR10                                ;
        SETB      BUFF1_BUSY_ST                                                ;
        SJMP             DMA_UR1R_ISR2                                                ;
        DMA_UR1R_ISR1:                                                                ;
        MOV                UART1_2COUNT,        WR10                                ;
        SETB         BUFF2_BUSY_ST                                                ;
        DMA_UR1R_ISR2:                                                                ;
        POP                PSW1                                                                ;
        POP                PSW                                                                        ;
        POP                WR10                                                                ;
        POP                DPX                                                                        ;
RETI                                                                                        ;

guo_stc 发表于 2026-2-6 15:23:17

总结一下,ES不能关闭,必须在023H中断中,清0RI标志. DMA好难用!{:4_198:}
页: [1]
查看完整版本: AI8051U DMA使用问题?