初始化仓库

This commit is contained in:
2025-10-15 00:22:56 +08:00
commit a6ddc01c98
650 changed files with 438085 additions and 0 deletions

View File

@@ -0,0 +1,496 @@
/*********************************************************************************************************************
* TC264 Opensourec Library <20><><EFBFBD><EFBFBD>TC264 <20><>Դ<EFBFBD><EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
*
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> TC264 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
*
* TC264 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD><EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD>
*
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
*
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
*
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_driver_uart
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD>޹<EFBFBD>˾
* <20><EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADS v1.10.2
* <20><><EFBFBD><EFBFBD>ƽ̨ TC264D
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
*
* <20>޸ļ<DEB8>¼
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
* 2022-09-15 pudding first version
* 2023-09-27 pudding <20>޸Ĵ<DEB8><C4B4>ڷ<EFBFBD><DAB7>ͺͽ<CDBA><CDBD>յ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӵӵײ<D3B5><D7B2><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>жϴ<D0B6><CFB4><EFBFBD>
* 2023-10-07 pudding <20><><EFBFBD><EFBFBD>ͳһ<CDB3>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
********************************************************************************************************************/
#include "IFXPORT.h"
#include "ifxAsclin_reg.h"
#include "ifxCpu_Irq.h"
#include "IFXASCLIN_CFG.h"
#include "SysSe/Bsp/Bsp.h"
#include "isr_config.h"
#include "zf_common_debug.h"
#include "zf_common_function.h"
#include "zf_driver_uart.h"
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>handle<6C><65><EFBFBD><EFBFBD>
IfxAsclin_Asc uart0_handle;
IfxAsclin_Asc uart1_handle;
IfxAsclin_Asc uart2_handle;
IfxAsclin_Asc uart3_handle;
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ascConfig<69>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>ڴ<EFBFBD><DAB4>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
static IfxAsclin_Asc_Config uart_config;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static uint8 uart0_tx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart0_rx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart1_tx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart1_rx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart2_tx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart2_rx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart3_tx_buffer[1 + sizeof(Ifx_Fifo) + 8];
static uint8 uart3_rx_buffer[1 + sizeof(Ifx_Fifo) + 8];
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_set_interrupt_priority(UART_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_set_interrupt_priority (uart_index_enum uartn)
{
switch(uartn)
{
case UART_0:
{
uart_config.interrupt.txPriority = UART0_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART0_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART0_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART0_INT_SERVICE;
}break;
case UART_1:
{
uart_config.interrupt.txPriority = UART1_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART1_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART1_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART1_INT_SERVICE;
}break;
case UART_2:
{
uart_config.interrupt.txPriority = UART2_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART2_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART2_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART2_INT_SERVICE;
}break;
case UART_3:
{
uart_config.interrupt.txPriority = UART3_TX_INT_PRIO;
uart_config.interrupt.rxPriority = UART3_RX_INT_PRIO;
uart_config.interrupt.erPriority = UART3_ER_INT_PRIO;
uart_config.interrupt.typeOfService = UART3_INT_SERVICE;
}break;
default: zf_assert(FALSE);
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ô<EFBFBD><C3B4>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_set_buffer(UART_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_set_buffer (uart_index_enum uartn)
{
switch(uartn)
{
case UART_0:
{
uart_config.txBuffer = &uart0_tx_buffer;
uart_config.rxBuffer = &uart0_rx_buffer;
uart_config.txBufferSize = 1;
uart_config.rxBufferSize = 1;
}break;
case UART_1:
{
uart_config.txBuffer = &uart1_tx_buffer;
uart_config.rxBuffer = &uart1_rx_buffer;
uart_config.txBufferSize = 1;
uart_config.rxBufferSize = 1;
}break;
case UART_2:
{
uart_config.txBuffer = &uart2_tx_buffer;
uart_config.rxBuffer = &uart2_rx_buffer;
uart_config.txBufferSize = 1;
uart_config.rxBufferSize = 1;
}break;
case UART_3:
{
uart_config.txBuffer = &uart3_tx_buffer;
uart_config.rxBuffer = &uart3_rx_buffer;
uart_config.txBufferSize = 1;
uart_config.rxBufferSize = 1;
}break;
default: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_get_handle(UART_1);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
IfxAsclin_Asc* uart_get_handle (uart_index_enum uartn)
{
IfxAsclin_Asc* uart_handle = NULL;
switch(uartn)
{
case UART_0: uart_handle = &uart0_handle; break;
case UART_1: uart_handle = &uart1_handle; break;
case UART_2: uart_handle = &uart2_handle; break;
case UART_3: uart_handle = &uart3_handle; break;
default: IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}
return uart_handle;
}
void uart_mux (uart_index_enum uartn, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin, uint32 *set_tx_pin, uint32 *set_rx_pin)
{
switch(uartn)
{
case UART_0:
{
if (UART0_TX_P14_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P14_0_OUT;
else if(UART0_TX_P14_1 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P14_1_OUT;
else if(UART0_TX_P15_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P15_2_OUT;
else if(UART0_TX_P15_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin0_TX_P15_3_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART0_RX_P14_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin0_RXA_P14_1_IN;
else if(UART0_RX_P15_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin0_RXB_P15_3_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
case UART_1:
{
if (UART1_TX_P02_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P02_2_OUT;
else if(UART1_TX_P11_12 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P11_12_OUT;
else if(UART1_TX_P15_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_0_OUT;
else if(UART1_TX_P15_1 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_1_OUT;
else if(UART1_TX_P15_4 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_4_OUT;
else if(UART1_TX_P15_5 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P15_5_OUT;
else if(UART1_TX_P20_10 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P20_10_OUT;
else if(UART1_TX_P33_12 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P33_12_OUT;
else if(UART1_TX_P33_13 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin1_TX_P33_13_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART1_RX_P15_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXA_P15_1_IN;
else if(UART1_RX_P15_5 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXB_P15_5_IN;
else if(UART1_RX_P20_9 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXC_P20_9_IN;
else if(UART1_RX_P11_10 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXE_P11_10_IN;
else if(UART1_RX_P33_13 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXF_P33_13_IN;
else if(UART1_RX_P02_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin1_RXG_P02_3_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
case UART_2:
{
if (UART2_TX_P02_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P02_0_OUT;
else if(UART2_TX_P10_5 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P10_5_OUT;
else if(UART2_TX_P14_2 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P14_2_OUT;
else if(UART2_TX_P14_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P14_3_OUT;
else if(UART2_TX_P33_8 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P33_8_OUT;
else if(UART2_TX_P33_9 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin2_TX_P33_9_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART2_RX_P14_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXA_P14_3_IN;
else if(UART2_RX_P02_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXB_P02_1_IN;
else if(UART2_RX_P10_6 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXD_P10_6_IN;
else if(UART2_RX_P33_8 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXE_P33_8_IN;
else if(UART2_RX_P02_0 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin2_RXG_P02_0_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
case UART_3:
{
if (UART3_TX_P00_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P00_0_OUT;
else if(UART3_TX_P00_1 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P00_1_OUT;
else if(UART3_TX_P15_6 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P15_6_OUT;
else if(UART3_TX_P15_7 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P15_7_OUT;
else if(UART3_TX_P20_0 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P20_0_OUT;
else if(UART3_TX_P20_3 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P20_3_OUT;
else if(UART3_TX_P21_7 == tx_pin) *set_tx_pin = (uint32)&IfxAsclin3_TX_P21_7_OUT;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
if (UART3_RX_P15_7 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXA_P15_7_IN;
else if(UART3_RX_P20_3 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXC_P20_3_IN;
else if(UART3_RX_P00_1 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXE_P00_1_IN;
else if(UART3_RX_P21_6 == rx_pin) *set_rx_pin = (uint32)&IfxAsclin3_RXF_P21_6_IN;
else IFX_ASSERT(IFX_VERBOSE_LEVEL_ERROR, FALSE);
}break;
default:break;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD>д<EFBFBD><D0B4>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> dat <20><>Ҫ<EFBFBD><D2AA><EFBFBD>͵<EFBFBD><CDB5>ֽ<EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_write_byte(UART_1, 0xA5); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ķ<EFBFBD><C4B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>0xA5<41><35>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><E1B7A2><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD>CPU<50>ڴ<EFBFBD><DAB4>ڵ<EFBFBD>ִ<EFBFBD><D6B4>ʱ
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_write_byte (uart_index_enum uart_n, const uint8 dat)
{
IfxAsclin_Asc* uart_handle;
uart_handle = uart_get_handle(uart_n);
while(IfxAsclin_getTxFifoFillLevel(uart_handle->asclin) != 0);
IfxAsclin_write8(uart_handle->asclin, &dat, 1);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *buff Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_write_buffer(UART_1, &a[0], 5);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_write_buffer (uart_index_enum uart_n, const uint8 *buff, uint32 len)
{
while(len)
{
uart_write_byte(uart_n, *buff);
len--;
buff++;
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *str Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ַ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_write_string(UART_1, "seekfree");
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_write_string (uart_index_enum uart_n, const char *str)
{
while(*str)
{
uart_write_byte(uart_n, *str++);
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڽ<EFBFBD><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݣ<EFBFBD>whlie<69>ȴ<EFBFBD><C8B4><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint8 dat = uart_read_byte(UART_1); // <20><><EFBFBD><EFBFBD> UART_1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 uart_read_byte (uart_index_enum uart_n)
{
uint8 return_num = 0;
IfxAsclin_Asc* uart_handle;
uart_handle = uart_get_handle(uart_n);
while(IfxAsclin_getRxFifoFillLevel(uart_handle->asclin) == 0);
IfxAsclin_read8(uart_handle->asclin, &return_num, 1);
return return_num;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڽ<EFBFBD><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD>գ<EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_uart.h <20><> uart_index_enum ö<><C3B6><EFBFBD><EFBFBD><E5B6A8>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĵ<DDB5>ַ
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 1<><31><EFBFBD><EFBFBD><EFBFBD>ճɹ<D5B3> 0<><30>δ<EFBFBD><CEB4><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uint8 dat; uart_query_byte(UART_1, &dat); // <20><><EFBFBD><EFBFBD> UART_1 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
uint8 uart_query_byte (uart_index_enum uart_n, uint8 *dat)
{
uint8 return_num = 0;
IfxAsclin_Asc* uart_handle;
uart_handle = uart_get_handle(uart_n);
if(IfxAsclin_getRxFifoFillLevel(uart_handle->asclin) > 0)
{
IfxAsclin_read8(uart_handle->asclin, dat, 1);
return_num = 1;
}
return return_num;
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> status 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> 0<><30><EFBFBD>ر<EFBFBD><D8B1>ж<EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_tx_interrupt(UART_1, 1); // <20>򿪴<EFBFBD><F2BFAAB4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_tx_interrupt (uart_index_enum uart_n, uint32 status)
{
Ifx_ASCLIN *asclinSFR = uart_config.asclin;
volatile Ifx_SRC_SRCR *src;
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uart_n);
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
src = IfxAsclin_getSrcPointerTx(asclinSFR);
IfxAsclin_enableTxFifoFillLevelFlag(asclinSFR, (boolean)status);
if(status)
{
IfxSrc_enable(src);
}
else
{
IfxSrc_disable(src);
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uart_n <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> status 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> 0<><30><EFBFBD>ر<EFBFBD><D8B1>ж<EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_rx_interrupt(UART_1, 1); // <20>򿪴<EFBFBD><F2BFAAB4><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_rx_interrupt (uart_index_enum uart_n, uint32 status)
{
Ifx_ASCLIN *asclinSFR = uart_config.asclin;
volatile Ifx_SRC_SRCR *src;
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uart_n);
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
src = IfxAsclin_getSrcPointerRx(asclinSFR);
IfxAsclin_enableRxFifoFillLevelFlag(asclinSFR, (boolean)status);
if(status)
{
IfxSrc_enable(src);
}
else
{
IfxSrc_disable(src);
}
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sbus<75><73>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>(UART_0,UART_1,UART_2,UART_3)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_sbus_init(UART_2, 100000, UART2_TX_P10_5, UART2_RX_P10_6);
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_sbus_init (uart_index_enum uartn, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
{
boolean interrupt_state = disableInterrupts();
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uartn);
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
uart_set_buffer(uartn); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
uart_set_interrupt_priority(uartn); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
uart_config.baudrate.prescaler = 4;
uart_config.baudrate.baudrate = (float32)baud;
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
uart_config.frame.stopBit = IfxAsclin_StopBit_2; //ֹͣλ
uart_config.frame.parityType = IfxAsclin_ParityType_even; //żУ<C5BC><D0A3>
uart_config.frame.dataLength = IfxAsclin_DataLength_8;
uart_config.frame.parityBit = TRUE; //<2F><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pins.cts = NULL;
pins.rts = NULL;
uart_mux(uartn, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
pins.rxMode = IfxPort_InputMode_pullUp;
pins.txMode = IfxPort_OutputMode_pushPull;
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
uart_config.pins = &pins;
IfxAsclin_Asc_initModule(uart_get_handle(uartn), &uart_config);
uart_rx_interrupt(uartn, 1);
uart_tx_interrupt(uartn, 0);
restoreInterrupts(interrupt_state);
}
//-------------------------------------------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> uartn <20><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>(UART_0,UART_1,UART_2,UART_3)
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> baud <20><><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> tx_pin <20><><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> rx_pin <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint32 ʵ<>ʲ<EFBFBD><CAB2><EFBFBD><EFBFBD><EFBFBD>
// ʹ<><CAB9>ʾ<EFBFBD><CABE> uart_init(UART_0,115200,UART0_TX_P14_0,UART0_RX_P14_1); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>115200 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P14_0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>P14_1
// <20><>ע<EFBFBD><D7A2>Ϣ
//-------------------------------------------------------------------------------------------------------------------
void uart_init (uart_index_enum uart_n, uint32 baud, uart_tx_pin_enum tx_pin, uart_rx_pin_enum rx_pin)
{
boolean interrupt_state = disableInterrupts();
volatile Ifx_ASCLIN *moudle = IfxAsclin_getAddress((IfxAsclin_Index)uart_n);
IfxAsclin_Asc_initModuleConfig(&uart_config, moudle); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>
uart_set_buffer(uart_n); // <20><><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
uart_set_interrupt_priority(uart_n); // <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD>
uart_config.clockSource = IfxAsclin_ClockSource_ascFastClock; // ʹ<>ø<EFBFBD><C3B8><EFBFBD>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6.25M
uart_config.baudrate.prescaler = 4;
uart_config.baudrate.baudrate = (float32)baud;
uart_config.baudrate.oversampling = IfxAsclin_OversamplingFactor_8;
IfxAsclin_Asc_Pins pins; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pins.cts = NULL;
pins.rts = NULL;
uart_mux(uart_n, tx_pin, rx_pin, (uint32 *)&pins.tx, (uint32 *)&pins.rx);
pins.rxMode = IfxPort_InputMode_pullUp;
pins.txMode = IfxPort_OutputMode_pushPull;
pins.pinDriver = IfxPort_PadDriver_cmosAutomotiveSpeed1;
uart_config.pins = &pins;
IfxAsclin_Asc_initModule(uart_get_handle(uart_n), &uart_config);
uart_rx_interrupt(uart_n, 0);
uart_tx_interrupt(uart_n, 0);
restoreInterrupts(interrupt_state);
}