ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
fw_uart.h File Reference
#include "fw_conf.h"
#include "fw_types.h"
#include "fw_exti.h"

Go to the source code of this file.

Macros

#define UART1_SetRxState(__STATE__)   SBIT_ASSIGN(REN, __STATE__)
 
#define UART1_ClearTxInterrupt()   SBIT_RESET(TI)
 
#define UART1_ClearRxInterrupt()   SBIT_RESET(RI)
 
#define UART1_WriteBuffer(__DATA__)   (SBUF = (__DATA__))
 
#define UART1_SetFrameErrDetect(__STATE__)   SFR_ASSIGN(PCON, 6, __STATE__)
 
#define UART1_SetBaudSource(__BAUD_SRC__)   SFR_ASSIGN(AUXR, 0, __BAUD_SRC__)
 
#define UART1_ConfigMode0FixedSyncSerial(__STATE__)   do{ SM0=0; SM1=0; SFR_ASSIGN(AUXR, 5, __STATE__);}while(0)
 
#define UART1_SetMode0Baudx6(__STATE__)   SFR_ASSIGN(AUXR, 5, __STATE__)
 
#define UART1_ConfigMode2Fixed9bitUart(__STATE__)   do{ SM0=1; SM1=0; SFR_ASSIGN(PCON, 7, __STATE__);}while(0)
 
#define UART1_SetTimer1Mode2Baudx2(__STATE__)   SFR_ASSIGN(PCON, 7, __STATE__)
 
#define UART1_SwitchPort(__ALTER_PORT__)   (P_SW1 = P_SW1 & ~(0x03 << 6) | ((__ALTER_PORT__) << 6))
 
#define UART2_SetRxState(__STATE__)   SFR_ASSIGN(S2CON, 4, __STATE__)
 
#define UART2_ClearTxInterrupt()   SFR_RESET(S2CON, 1)
 
#define UART2_ClearRxInterrupt()   SFR_RESET(S2CON, 0)
 
#define UART2_WriteBuffer(__DATA__)   (S2BUF = (__DATA__))
 
#define UART2_TxFinished()   (S2CON & (0x01 << 1))
 
#define UART2_Set8bitUART()   SFR_RESET(S2CON, 7)
 
#define UART2_Set9bitUART()   SFR_SET(S2CON, 7)
 
#define UART2_SwitchPort(__ALTER_PORT__)   (P_SW2 = P_SW1 & ~(0x01 << 0) | ((__ALTER_PORT__) << 0))
 
#define UART3_SetBaudSource(__BAUD_SRC__)   SFR_ASSIGN(S3CON, 6, __BAUD_SRC__)
 
#define UART3_SetRxState(__STATE__)   SFR_ASSIGN(S3CON, 4, __STATE__)
 
#define UART3_Set8bitUART()   SFR_RESET(S3CON, 7)
 
#define UART3_Set9bitUART()   SFR_SET(S3CON, 7)
 
#define UART3_ClearTxInterrupt()   SFR_RESET(S3CON, 1)
 
#define UART3_ClearRxInterrupt()   SFR_RESET(S3CON, 0)
 
#define UART3_WriteBuffer(__DATA__)   (S3BUF = (__DATA__))
 
#define UART4_SetBaudSource(__BAUD_SRC__)   SFR_ASSIGN(S4CON, 6, __BAUD_SRC__)
 
#define UART4_SetRxState(__STATE__)   SFR_ASSIGN(S4CON, 4, __STATE__)
 
#define UART4_Set8bitUART()   SFR_RESET(S4CON, 7)
 
#define UART4_Set9bitUART()   SFR_SET(S4CON, 7)
 
#define UART4_ClearTxInterrupt()   SFR_RESET(S4CON, 1)
 
#define UART4_ClearRxInterrupt()   SFR_RESET(S4CON, 0)
 
#define UART4_WriteBuffer(__DATA__)   (S4BUF = (__DATA__))
 

Enumerations

enum  UART1_BaudSource_t { UART1_BaudSource_Timer1 = 0x00 , UART1_BaudSource_Timer2 = 0x01 }
 
enum  UART1_AlterPort_t { UART1_AlterPort_P30_P31 = 0x00 , UART1_AlterPort_P36_P37 = 0x01 , UART1_AlterPort_P16_P17 = 0x10 , UART1_AlterPort_P43_P44 = 0x11 }
 
enum  UART2_AlterPort_t { UART2_AlterPort_P10_P11 = 0x00 , UART2_AlterPort_P46_P47 = 0x01 }
 

Functions

int16_t UART_Timer_InitValueCalculate (uint32_t sysclk, HAL_State_t _1TMode, uint32_t baudrate)
 
void UART1_Config8bitUart (UART1_BaudSource_t baudSource, HAL_State_t _1TMode, uint32_t baudrate)
 
void UART1_Config9bitUart (UART1_BaudSource_t baudSource, HAL_State_t _1TMode, uint32_t baudrate)
 
void UART1_TxChar (char dat)
 
void UART1_TxHex (uint8_t hex)
 
void UART1_TxString (uint8_t *str)
 
void UART2_Config (HAL_State_t _1TMode, uint32_t baudrate)
 
void UART2_TxChar (char dat)
 
void UART2_TxHex (uint8_t hex)
 
void UART2_TxString (uint8_t *str)
 
void UART3_ConfigOnTimer2 (HAL_State_t _1TMode, uint32_t baudrate)
 
void UART3_ConfigOnTimer3 (HAL_State_t _1TMode, uint32_t baudrate)
 
void UART4_ConfigOnTimer2 (HAL_State_t _1TMode, uint32_t baudrate)
 
void UART4_ConfigOnTimer4 (HAL_State_t _1TMode, uint32_t baudrate)
 

Variables

__CODE char HEX_TABLE [16]
 

Macro Definition Documentation

◆ UART1_ClearRxInterrupt

#define UART1_ClearRxInterrupt ( )    SBIT_RESET(RI)

Definition at line 53 of file fw_uart.h.

◆ UART1_ClearTxInterrupt

#define UART1_ClearTxInterrupt ( )    SBIT_RESET(TI)

Definition at line 52 of file fw_uart.h.

◆ UART1_ConfigMode0FixedSyncSerial

#define UART1_ConfigMode0FixedSyncSerial (   __STATE__)    do{ SM0=0; SM1=0; SFR_ASSIGN(AUXR, 5, __STATE__);}while(0)

Mode0: Synchronous shift serial mode, baudrate is fixed, provided by SYSCLK Baud = (UART_M0x6 = 0)? (SYSCLK/12) : (SYSCLK/2)

Definition at line 61 of file fw_uart.h.

◆ UART1_ConfigMode2Fixed9bitUart

#define UART1_ConfigMode2Fixed9bitUart (   __STATE__)    do{ SM0=1; SM1=0; SFR_ASSIGN(PCON, 7, __STATE__);}while(0)

Mode2: 9-bit UART mode, baudrate is fixed, provided by SYSCLK Baud = (SMOD = 0)? (SYSCLK/64) : (SYSCLK/32)

Definition at line 67 of file fw_uart.h.

◆ UART1_SetBaudSource

#define UART1_SetBaudSource (   __BAUD_SRC__)    SFR_ASSIGN(AUXR, 0, __BAUD_SRC__)

Definition at line 56 of file fw_uart.h.

◆ UART1_SetFrameErrDetect

#define UART1_SetFrameErrDetect (   __STATE__)    SFR_ASSIGN(PCON, 6, __STATE__)

Definition at line 55 of file fw_uart.h.

◆ UART1_SetMode0Baudx6

#define UART1_SetMode0Baudx6 (   __STATE__)    SFR_ASSIGN(AUXR, 5, __STATE__)

Definition at line 62 of file fw_uart.h.

◆ UART1_SetRxState

#define UART1_SetRxState (   __STATE__)    SBIT_ASSIGN(REN, __STATE__)

Definition at line 51 of file fw_uart.h.

◆ UART1_SetTimer1Mode2Baudx2

#define UART1_SetTimer1Mode2Baudx2 (   __STATE__)    SFR_ASSIGN(PCON, 7, __STATE__)

Definition at line 68 of file fw_uart.h.

◆ UART1_SwitchPort

#define UART1_SwitchPort (   __ALTER_PORT__)    (P_SW1 = P_SW1 & ~(0x03 << 6) | ((__ALTER_PORT__) << 6))

Alternative port selection: P30/P31, P36/P37, P16/P17, P43/P44

Definition at line 72 of file fw_uart.h.

◆ UART1_WriteBuffer

#define UART1_WriteBuffer (   __DATA__)    (SBUF = (__DATA__))

Definition at line 54 of file fw_uart.h.

◆ UART2_ClearRxInterrupt

#define UART2_ClearRxInterrupt ( )    SFR_RESET(S2CON, 0)

Definition at line 110 of file fw_uart.h.

◆ UART2_ClearTxInterrupt

#define UART2_ClearTxInterrupt ( )    SFR_RESET(S2CON, 1)

Definition at line 109 of file fw_uart.h.

◆ UART2_Set8bitUART

#define UART2_Set8bitUART ( )    SFR_RESET(S2CON, 7)

Definition at line 113 of file fw_uart.h.

◆ UART2_Set9bitUART

#define UART2_Set9bitUART ( )    SFR_SET(S2CON, 7)

Definition at line 114 of file fw_uart.h.

◆ UART2_SetRxState

#define UART2_SetRxState (   __STATE__)    SFR_ASSIGN(S2CON, 4, __STATE__)

Definition at line 108 of file fw_uart.h.

◆ UART2_SwitchPort

#define UART2_SwitchPort (   __ALTER_PORT__)    (P_SW2 = P_SW1 & ~(0x01 << 0) | ((__ALTER_PORT__) << 0))

Alternative port selection: P10:rx/P11:tx, P46:rx/P47:tx

Definition at line 118 of file fw_uart.h.

◆ UART2_TxFinished

#define UART2_TxFinished ( )    (S2CON & (0x01 << 1))

Definition at line 112 of file fw_uart.h.

◆ UART2_WriteBuffer

#define UART2_WriteBuffer (   __DATA__)    (S2BUF = (__DATA__))

Definition at line 111 of file fw_uart.h.

◆ UART3_ClearRxInterrupt

#define UART3_ClearRxInterrupt ( )    SFR_RESET(S3CON, 0)

Definition at line 139 of file fw_uart.h.

◆ UART3_ClearTxInterrupt

#define UART3_ClearTxInterrupt ( )    SFR_RESET(S3CON, 1)

Definition at line 138 of file fw_uart.h.

◆ UART3_Set8bitUART

#define UART3_Set8bitUART ( )    SFR_RESET(S3CON, 7)

Definition at line 136 of file fw_uart.h.

◆ UART3_Set9bitUART

#define UART3_Set9bitUART ( )    SFR_SET(S3CON, 7)

Definition at line 137 of file fw_uart.h.

◆ UART3_SetBaudSource

#define UART3_SetBaudSource (   __BAUD_SRC__)    SFR_ASSIGN(S3CON, 6, __BAUD_SRC__)

Definition at line 134 of file fw_uart.h.

◆ UART3_SetRxState

#define UART3_SetRxState (   __STATE__)    SFR_ASSIGN(S3CON, 4, __STATE__)

Definition at line 135 of file fw_uart.h.

◆ UART3_WriteBuffer

#define UART3_WriteBuffer (   __DATA__)    (S3BUF = (__DATA__))

Definition at line 140 of file fw_uart.h.

◆ UART4_ClearRxInterrupt

#define UART4_ClearRxInterrupt ( )    SFR_RESET(S4CON, 0)

Definition at line 158 of file fw_uart.h.

◆ UART4_ClearTxInterrupt

#define UART4_ClearTxInterrupt ( )    SFR_RESET(S4CON, 1)

Definition at line 157 of file fw_uart.h.

◆ UART4_Set8bitUART

#define UART4_Set8bitUART ( )    SFR_RESET(S4CON, 7)

Definition at line 155 of file fw_uart.h.

◆ UART4_Set9bitUART

#define UART4_Set9bitUART ( )    SFR_SET(S4CON, 7)

Definition at line 156 of file fw_uart.h.

◆ UART4_SetBaudSource

#define UART4_SetBaudSource (   __BAUD_SRC__)    SFR_ASSIGN(S4CON, 6, __BAUD_SRC__)

Definition at line 153 of file fw_uart.h.

◆ UART4_SetRxState

#define UART4_SetRxState (   __STATE__)    SFR_ASSIGN(S4CON, 4, __STATE__)

Definition at line 154 of file fw_uart.h.

◆ UART4_WriteBuffer

#define UART4_WriteBuffer (   __DATA__)    (S4BUF = (__DATA__))

Definition at line 159 of file fw_uart.h.

Enumeration Type Documentation

◆ UART1_AlterPort_t

Alternative ports

The ports for STC8G1K08-8Pin and STC8G1K08A are different: 00 - P3.0 P3.1, 01 - P3.2 P3.3, 10 - P5.4 P5.5, 11 - n/a

Enumerator
UART1_AlterPort_P30_P31 
UART1_AlterPort_P36_P37 
UART1_AlterPort_P16_P17 
UART1_AlterPort_P43_P44 

Definition at line 43 of file fw_uart.h.

44{
UART1_AlterPort_t
Definition: fw_uart.h:44
@ UART1_AlterPort_P30_P31
Definition: fw_uart.h:45
@ UART1_AlterPort_P36_P37
Definition: fw_uart.h:46
@ UART1_AlterPort_P16_P17
Definition: fw_uart.h:47
@ UART1_AlterPort_P43_P44
Definition: fw_uart.h:48

◆ UART1_BaudSource_t

Enumerator
UART1_BaudSource_Timer1 
UART1_BaudSource_Timer2 

Definition at line 31 of file fw_uart.h.

32{
UART1_BaudSource_t
Definition: fw_uart.h:32
@ UART1_BaudSource_Timer2
Definition: fw_uart.h:34
@ UART1_BaudSource_Timer1
Definition: fw_uart.h:33

◆ UART2_AlterPort_t

Enumerator
UART2_AlterPort_P10_P11 
UART2_AlterPort_P46_P47 

Definition at line 102 of file fw_uart.h.

103{
UART2_AlterPort_t
Definition: fw_uart.h:103
@ UART2_AlterPort_P10_P11
Definition: fw_uart.h:104
@ UART2_AlterPort_P46_P47
Definition: fw_uart.h:105

Function Documentation

◆ UART1_Config8bitUart()

void UART1_Config8bitUart ( UART1_BaudSource_t  baudSource,
HAL_State_t  _1TMode,
uint32_t  baudrate 
)

Mode1: 8-bit UART; dynamic baud-rate; 10-bit frame: 1 start, 8 data(lsb), 1 stop; clocked by Timer1 or Timer2

Definition at line 56 of file fw_uart.c.

57{
58 uint16_t init;
59 SM0=0; SM1=1;
60 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
61 _UART1_ConfigDynUart(baudSource, _1TMode, init);
62}
#define __SYSCLOCK
Definition: fw_sys.h:45
unsigned short uint16_t
Definition: fw_types.h:19
void _UART1_ConfigDynUart(UART1_BaudSource_t baudSource, HAL_State_t _1TMode, int16_t init)
Definition: fw_uart.c:36
int16_t UART_Timer_InitValueCalculate(uint32_t sysclk, HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:20

◆ UART1_Config9bitUart()

void UART1_Config9bitUart ( UART1_BaudSource_t  baudSource,
HAL_State_t  _1TMode,
uint32_t  baudrate 
)

Mode3: 9-bit UART; dynamic baud-rate; 11-bit frame: 1 start, 8 data(lsb), 1 programmable, 1 stop; clocked by Timer1 or Timer2

Definition at line 64 of file fw_uart.c.

65{
66 uint16_t init;
67 SM0=1; SM1=1;
68 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
69 _UART1_ConfigDynUart(baudSource, _1TMode, init);
70}

◆ UART1_TxChar()

void UART1_TxChar ( char  dat)

FIXME: If place this in first with following TXString(), sending may not work. didn't find the reason

Definition at line 72 of file fw_uart.c.

73{
75 while(!TI);
77}
__CODE int8_t dat[20]
#define UART1_ClearTxInterrupt()
Definition: fw_uart.h:52
#define UART1_WriteBuffer(__DATA__)
Definition: fw_uart.h:54

◆ UART1_TxHex()

void UART1_TxHex ( uint8_t  hex)

Definition at line 79 of file fw_uart.c.

80{
81 UART1_TxChar(HEX_TABLE[hex >> 4]);
82 UART1_TxChar(HEX_TABLE[hex & 0xF]);
83}
void UART1_TxChar(char dat)
Definition: fw_uart.c:72
__CODE char HEX_TABLE[16]
Definition: fw_util.c:18

◆ UART1_TxString()

void UART1_TxString ( uint8_t str)

Definition at line 85 of file fw_uart.c.

86{
87 while (*str) UART1_TxChar(*str++);
88}

◆ UART2_Config()

void UART2_Config ( HAL_State_t  _1TMode,
uint32_t  baudrate 
)

Dynamic baud-rate, provided by Timer2

Definition at line 102 of file fw_uart.c.

103{
104 uint16_t init;
105
106 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
107 // Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
108 TIM_Timer2_Set1TMode(_1TMode);
109 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
111}
#define TIM_Timer2_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:82
#define TIM_Timer2_SetRunState(__STATE__)
Definition: fw_tim.h:75
#define TIM_Timer2_Set1TMode(__STATE__)
Definition: fw_tim.h:79
@ HAL_State_ON
Definition: fw_types.h:71

◆ UART2_TxChar()

void UART2_TxChar ( char  dat)

Definition at line 113 of file fw_uart.c.

114{
116 while(!UART2_TxFinished());
118}
#define UART2_TxFinished()
Definition: fw_uart.h:112
#define UART2_ClearTxInterrupt()
Definition: fw_uart.h:109
#define UART2_WriteBuffer(__DATA__)
Definition: fw_uart.h:111

◆ UART2_TxHex()

void UART2_TxHex ( uint8_t  hex)

Definition at line 120 of file fw_uart.c.

121{
122 UART2_TxChar(HEX_TABLE[hex >> 4]);
123 UART2_TxChar(HEX_TABLE[hex & 0xF]);
124}
void UART2_TxChar(char dat)
Definition: fw_uart.c:113

◆ UART2_TxString()

void UART2_TxString ( uint8_t str)

Definition at line 126 of file fw_uart.c.

127{
128 while (*str) UART2_TxChar(*str++);
129}

◆ UART3_ConfigOnTimer2()

void UART3_ConfigOnTimer2 ( HAL_State_t  _1TMode,
uint32_t  baudrate 
)

dynamic baud-rate from timer2 or timer3

Definition at line 136 of file fw_uart.c.

137{
138 uint16_t init;
139
141 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
142 // Timer2: 1T mode and initial value. prescaler is ignored, no interrupt.
143 TIM_Timer2_Set1TMode(_1TMode);
144 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
146}
#define UART3_SetBaudSource(__BAUD_SRC__)
Definition: fw_uart.h:134

◆ UART3_ConfigOnTimer3()

void UART3_ConfigOnTimer3 ( HAL_State_t  _1TMode,
uint32_t  baudrate 
)

Definition at line 148 of file fw_uart.c.

149{
150 uint16_t init;
151
153 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
154 // Timer3: 1T mode and initial value. prescaler is ignored, no interrupt.
155 TIM_Timer3_Set1TMode(_1TMode);
156 TIM_Timer3_SetInitValue(init >> 8, init & 0xFF);
158}
#define TIM_Timer3_Set1TMode(__STATE__)
Definition: fw_tim.h:96
#define TIM_Timer3_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:99
#define TIM_Timer3_SetRunState(__STATE__)
Definition: fw_tim.h:92

◆ UART4_ConfigOnTimer2()

void UART4_ConfigOnTimer2 ( HAL_State_t  _1TMode,
uint32_t  baudrate 
)

dynamic baud-rate from timer2 or timer4

Definition at line 165 of file fw_uart.c.

166{
167 uint16_t init;
168
170 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
171 TIM_Timer2_Set1TMode(_1TMode);
172 TIM_Timer2_SetInitValue(init >> 8, init & 0xFF);
174}
#define UART4_SetBaudSource(__BAUD_SRC__)
Definition: fw_uart.h:153

◆ UART4_ConfigOnTimer4()

void UART4_ConfigOnTimer4 ( HAL_State_t  _1TMode,
uint32_t  baudrate 
)

Definition at line 176 of file fw_uart.c.

177{
178 uint16_t init;
179
181 init = UART_Timer_InitValueCalculate(__SYSCLOCK, _1TMode, baudrate);
182 TIM_Timer4_Set1TMode(_1TMode);
183 TIM_Timer4_SetInitValue(init >> 8, init & 0xFF);
185}
#define TIM_Timer4_SetInitValue(__TH__, __TL__)
Definition: fw_tim.h:116
#define TIM_Timer4_SetRunState(__STATE__)
Definition: fw_tim.h:109
#define TIM_Timer4_Set1TMode(__STATE__)
Definition: fw_tim.h:113

◆ UART_Timer_InitValueCalculate()

int16_t UART_Timer_InitValueCalculate ( uint32_t  sysclk,
HAL_State_t  _1TMode,
uint32_t  baudrate 
)

Definition at line 20 of file fw_uart.c.

21{
23 value = sysclk / (4 * baudrate);
24 if (!_1TMode)
25 value = value / 12;
26 if (value > 0xFFFF)
27 return 0;
28 else
29 return 0xFFFF - value + 1;
30}
value
Definition: DS18B20_ATY.c:216
unsigned long uint32_t
Definition: fw_types.h:20

Variable Documentation

◆ HEX_TABLE

__CODE char HEX_TABLE[16]
extern

Definition at line 18 of file fw_util.c.