Описание библиотеки микросхемы 5023ВС016 процессора "Спутник"
debug_uart.c
См. документацию.
1 
29 #include "chip_5023BC016.h"
30 #include "uart.h"
31 #include "debug_uart.h"
32 #include "ringbuffer.h"
33 #include "system.h"
34 #include "gpio.h"
35 
38 
42 void DBG_UART_Init(void)
43 {
44 #ifdef ENABLE_DEBUG_UART
45  UART_Init(UART1); // Инициализация UART-а
46  UART_SetBaud(UART1, BAUDRATE_921600, 80000000); // Определение и установка оптимальных параметров делителя частоты
47  UART_Config(UART1, 112);/*((!UART_LCR_H_PEN) | // Установка длины слова данных, числа стоповых бит и контроля четности
48  UART_LCR_H_FEN |
49  UART_LCR_H_WLEN8 |
50  (UART_LCR_H_SPS_DIS)));*/
51  UART_Enable(UART1); // Разрешение работы UART
52  UART_TXEnable(UART1); // Разрешение работы передатчика
54  UART_SetupFIFOS(UART1, UART_IFLS_7DIV8, UART_IFLS_1DIV8); // Установка порогов прерываний по заполнению буфера приемника/передатчика
55  RingBuffer_Init(&dbg_uart_tx_rb, dbg_uart_tx_buf, 1, DEBUG_UART_RB_SIZE); // Инициализация кольцевого буфера
56  PRINT("__DEBUG_ENABLED");
57 #endif
58 }
59 
63 void DBG_TX_Process(void)
64 {
65 #ifdef ENABLE_DEBUG_UART
66  uint8_t ch;
68  {
69  if(RingBuffer_Pop(&dbg_uart_tx_rb, &ch))
70  {
72  }
73  }
74 #endif
75 }
76 
80 void DBG_TX_Flush(void)
81 {
82 #ifdef ENABLE_DEBUG_UART
83  uint8_t ch;
84  while (!(RingBuffer_IsEmpty(&dbg_uart_tx_rb)))
85  {
87  {
88  if(RingBuffer_Pop(&dbg_uart_tx_rb, &ch))
89  {
91  }
92  }
93  }
94 #endif
95 }
96 
101 void DBG_WriteBuffer(char *buffer)
102 {
103 //#ifdef ENABLE_DEBUG_UART
104  uint32_t length;
105  length = strlen(buffer);
106  RingBuffer_InsertMult(&dbg_uart_tx_rb, buffer, length);
107 //#endif
108 }
109 
115 void DBG_ShowBuffer(uint8_t *buffer, uint32_t length)
116 {
117 #ifdef ENABLE_DEBUG_UART
118  uint32_t i;
119  if (length)
120  {
121  for(i=0; i<length; i++)
122  {
123  snprintf(dbg_buffer,256,"%02x ",buffer[i]);
125  }
126  DBG_WriteBuffer("\n");
127  }
128 #endif
129 };
130 
131 void gpioInit()
132 {
133  GPIO_D->ALTFUNCSET |= (1 << 15); //uart0 tx
134  GPIO_E->ALTFUNCSET |= (1 << 0); //uart0 rx
135 }
136 
137 void clockInit()
138 {
139  CMN_REG->PWR_CTRL_CLK |= (1<<2);
140  CMN_REG->PWR_CTRL_RST |= (1<<2);
141 }
142 
147 uint8_t DBG_GetChar(void)
148 {
149 #ifdef ENABLE_DEBUG_UART
151  {
152  return (uint8_t) UART_ReadByte(DEBUG_UART);
153  }
154 #endif
155  return EOF;
156 }
void clockInit()
Подача clock для отладочного UART.
Definition: debug_uart.c:137
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с отладочным выводом...
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с кольцевыми буферами...
#define PRINT(...)
Макросы для использования отладочного выхода
Definition: debug_uart.h:48
#define UART1
Указатель на структуру UART1.
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с аппаратным модулем U...
void DBG_UART_Init(void)
Инициализация отладочного UART&#39;а
Definition: debug_uart.c:42
int RingBuffer_IsEmpty(RINGBUFF_T *RingBuff)
Проверка кольцевого буфера на отсутствие данных
Definition: ringbuffer.c:224
void UART_Enable(UART_T *pUART)
Разрешение работы UART.
Definition: uart.c:303
void UART_RXEnable(UART_T *pUART)
Разрешение работы приемника
Definition: uart.c:312
void UART_Init(UART_T *pUART)
Инициализация UART.
Definition: uart.c:93
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с аппаратным модулем G...
void DBG_ShowBuffer(uint8_t *buffer, uint32_t length)
Вывод содержимого массива в отладочный UART.
Definition: debug_uart.c:115
Этот файл содержит описание адресного пространства микроконтроллера 5023ВС016.
FlagStatus UART_GetStatus(UART_T *pUART, UART_STATUS_T Stat)
Получение текущего статуса UART контроллера
Definition: uart.c:251
int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num)
Запись нескольких элементов в кольцевой буфер.
Definition: ringbuffer.c:77
uint32_t UART_SetBaud(UART_T *pUART, uint32_t baud, const uint32_t sys_freq)
Установка целой и дробной частей делителя для получения заданной скорости последовательного обмена ...
Definition: uart.c:456
char dbg_buffer[256]
Definition: main.c:32
void RingBuffer_Init(RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count)
Инициализация кольцевого буфера.
Definition: ringbuffer.c:40
uint8_t DBG_GetChar(void)
Получение символа из отладочного UART&#39;а
Definition: debug_uart.c:147
uint8_t UART_ReadByte(UART_T *pUART)
Прием одного байта по UART&#39;у
Definition: uart.c:204
Структура кольцевого буфера
Definition: ringbuffer.h:39
void UART_SetupFIFOS(UART_T *pUART, UART_IFLS rxfifolimit, UART_IFLS txfifolimit)
Установка порогов прерываний по заполнению буфера приемника/передатчика
Definition: uart.c:126
void gpioInit()
Иницилизация gpio.
Definition: debug_uart.c:131
#define DEBUG_UART_RB_SIZE
Definition: debug_uart.h:42
RINGBUFF_T dbg_uart_tx_rb
Кольцевой буфер отладочного UART.
Definition: debug_uart.c:36
void DBG_TX_Flush(void)
Вывод всех данных, накопленных в кольцевом буфере, в отладочный UART.
Definition: debug_uart.c:80
void UART_TXEnable(UART_T *pUART)
Разрешение работы передатчика
Definition: uart.c:284
Этот файл содержит структуры, макросы и функции необходимые для взаимодействия с регистрами общего на...
uint8_t dbg_uart_tx_buf[DEBUG_UART_RB_SIZE]
Массив, используемый коьлцевым буфером.
Definition: debug_uart.c:37
Status RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data)
Чтение одного элемента из кольцевого буфера
Definition: ringbuffer.c:120
void UART_SendByte(UART_T *pUART, uint8_t data)
Передача одного байта по UART&#39;у
Definition: uart.c:331
#define DEBUG_UART
Definition: debug_uart.h:41
#define GPIO_E
Указатель на структуру GPIO_E.
#define CMN_REG
Указатель на структуру CMN_REG.
#define BAUDRATE_921600
Definition: uart.h:219
void UART_Config(UART_T *pUART, uint32_t config)
Установка длины слова данных, числа стоповых бит и контроля четности
Definition: uart.c:232
void DBG_WriteBuffer(char *buffer)
Запись строки данных в кольцевой буфер
Definition: debug_uart.c:101
void DBG_TX_Process(void)
Пересылка данных, накопленных в кольцевом буфере, в отладочный UART.
Definition: debug_uart.c:63
#define GPIO_D
Указатель на структуру GPIO_D.