44 lines
1.4 KiB
C
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;
|
|
}*/
|