Files
hpw421/component/boot2/bsp/DMA_uart_debug.c
2026-07-03 18:08:25 +08:00

44 lines
1.4 KiB
C

#include "DMA_uart_debug.h"
volatile uint8_t __attribute__((aligned(4))) DMA_buf[16] = {0XAA, 0XAA, 0XAA, 0XAA};
#define DMAS_BASE 0x50001000
// #define DMAS_CHx_SAR(a) ((volatile unsigned *)(DMAS_BASE + 0x40 + (a * 0x20)))
// #define DMAS_CHx_DAR(a) ((volatile unsigned *)(DMAS_BASE + 0x44 + (a * 0x20)))
// #define DMAS_CHx_CTL0(a) ((volatile unsigned *)(DMAS_BASE + 0x48 + (a * 0x20)))
// #define DMAS_CHx_CTL1(a) ((volatile unsigned *)(DMAS_BASE + 0x4C + (a * 0x20)))
// #define DMAS_CHx_CA(a) ((volatile unsigned *)(DMAS_BASE + 0x50 + (a * 0x20)))
// #define DMAS_EN ((volatile unsigned *)(DMAS_BASE + 0))
#define DMAS_STA ((volatile unsigned *)(DMAS_BASE + 0x08))
__XIP_RAM_CODE void DMA_Uart(uint8_t ch)
{
__write_hw_reg32(DMAS_CHx_SAR(ch), (uint32_t)DMA_buf);
__write_hw_reg32(DMAS_CHx_DAR(ch), (ch * 0x1000 + 0x40010000));
__write_hw_reg32(DMAS_CHx_CTL1(ch), ((2 << 8)));
__write_hw_reg32(DMAS_CHx_CTL0(ch), 4);
}
__XIP_RAM_CODE void DMA_Uart_SendChar(uint8_t ch)
{
__write_hw_reg32(DMAS_CHx_CTL0(ch), 4);
while ((*(DMAS_STA)) & (0x01 << ch))
;
*(DMAS_EN) = ch;
}
__XIP_RAM_CODE void DMA_Uart_SendNumChar(uint8_t ch, uint8_t bt)
{
__write_hw_reg32(DMAS_CHx_CTL0(ch), bt);
while ((*(DMAS_STA)) & (0x01 << ch))
;
*(DMAS_EN) = ch;
}
/*
void DMA_Uart_SendChar_1(uint8_t ch)
{
while((*(DMAS_STA))&(0x01<<ch));
*(DMAS_EN)=ch;
}*/