/*!
\file gd32f30x_enet.c
\brief ENET driver
\version 2017-02-10, V1.0.0, firmware for GD32F30x
\version 2018-10-10, V1.1.0, firmware for GD32F30x
\version 2018-12-25, V2.0.0, firmware for GD32F30x
\version 2020-04-02, V2.0.1, firmware for GD32F30x
\version 2020-09-30, V2.1.0, firmware for GD32F30x
*/
/*
Copyright (c) 2020, GigaDevice Semiconductor Inc.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
*/
#include "gd32f30x_enet.h"
#include <stdlib.h>
#ifdef GD32F30X_CL
#if defined (__CC_ARM) /*!< ARM compiler */
__align(4)
enet_descriptors_struct rxdesc_tab[ENET_RXBUF_NUM]; /*!< ENET RxDMA descriptor */
__align(4)
enet_descriptors_struct txdesc_tab[ENET_TXBUF_NUM]; /*!< ENET TxDMA descriptor */
__align(4)
uint8_t rx_buff[ENET_RXBUF_NUM][ENET_RXBUF_SIZE]; /*!< ENET receive buffer */
__align(4)
uint8_t tx_buff[ENET_TXBUF_NUM][ENET_TXBUF_SIZE]; /*!< ENET transmit buffer */
#elif defined ( __ICCARM__ ) /*!< IAR compiler */
#pragma data_alignment=4
enet_descriptors_struct rxdesc_tab[ENET_RXBUF_NUM]; /*!< ENET RxDMA descriptor */
#pragma data_alignment=4
enet_descriptors_struct txdesc_tab[ENET_TXBUF_NUM]; /*!< ENET TxDMA descriptor */
#pragma data_alignment=4
uint8_t rx_buff[ENET_RXBUF_NUM][ENET_RXBUF_SIZE]; /*!< ENET receive buffer */
#pragma data_alignment=4
uint8_t tx_buff[ENET_TXBUF_NUM][ENET_TXBUF_SIZE]; /*!< ENET transmit buffer */
#elif defined (__GNUC__) /* GNU Compiler */
enet_descriptors_struct rxdesc_tab[ENET_RXBUF_NUM] __attribute__ ((aligned (4))); /*!< ENET RxDMA descriptor */
enet_descriptors_struct txdesc_tab[ENET_TXBUF_NUM] __attribute__ ((aligned (4))); /*!< ENET TxDMA descriptor */
uint8_t rx_buff[ENET_RXBUF_NUM][ENET_RXBUF_SIZE] __attribute__ ((aligned (4))); /*!< ENET receive buffer */
uint8_t tx_buff[ENET_TXBUF_NUM][ENET_TXBUF_SIZE] __attribute__ ((aligned (4))); /*!< ENET transmit buffer */
#endif /* __CC_ARM */
/* global transmit and receive descriptors pointers */
enet_descriptors_struct *dma_current_txdesc;
enet_descriptors_struct *dma_current_rxdesc;
/* structure pointer of ptp descriptor for normal mode */
enet_descriptors_struct *dma_current_ptp_txdesc = NULL;
enet_descriptors_struct *dma_current_ptp_rxdesc = NULL;
/* init structure parameters for ENET initialization */
static enet_initpara_struct enet_initpara ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static uint32_t enet_unknow_err = 0U;
/* array of register offset for debug information get */
static const uint16_t enet_reg_tab[] = {
0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C, 0x0028, 0x002C, 0x0034,
0x0038, 0x003C, 0x0040, 0x0044, 0x0048, 0x004C, 0x0050, 0x0054, 0x0058, 0x005C, 0x1080,
0x0100, 0x0104, 0x0108, 0x010C, 0x0110, 0x014C, 0x0150, 0x0168, 0x0194, 0x0198, 0x01C4,
0x0700, 0x0704,0x0708, 0x070C, 0x0710, 0x0714, 0x0718, 0x071C, 0x0720, 0x0728, 0x072C,
0x1000, 0x1004, 0x1008, 0x100C, 0x1010, 0x1014, 0x1018, 0x101C, 0x1020, 0x1024, 0x1048,
0x104C, 0x1050, 0x1054};
/* initialize ENET peripheral with generally concerned parameters, call it by enet_init() */
static void enet_default_init(void);
#ifndef USE_DELAY
/* insert a delay time */
static void enet_delay(uint32_t ncount);
#endif /* USE_DELAY */
/*!
\brief deinitialize the ENET, and reset structure parameters for ENET initialization
\param[in] none
\param[out] none
\retval none
*/
void enet_deinit(void)
{
rcu_periph_reset_enable(RCU_ENETRST);
rcu_periph_reset_disable(RCU_ENETRST);
enet_initpara_reset();
}
/*!
\brief configure the parameters which are usually less cared for initialization
note -- this function must be called before enet_init(), otherwise
configuration will be no effect
\param[in] option: different function option, which is related to several parameters,
only one parameter can be selected which is shown as below, refer to enet_option_enum
\arg FORWARD_OPTION: choose to configure the frame forward related parameters
\arg DMABUS_OPTION: choose to configure the DMA bus mode related parameters
\arg DMA_MAXBURST_OPTION: choose to configure the DMA max burst related parameters
\arg DMA_ARBITRATION_OPTION: choose to configure the DMA arbitration related parameters
\arg STORE_OPTION: choose to configure the store forward mode related parameters
\arg DMA_OPTION: choose to configure the DMA descriptor related parameters
\arg VLAN_OPTION: choose to configure vlan related parameters
\arg FLOWCTL_OPTION: choose to configure flow control related parameters
\arg HASHH_OPTION: choose to configure hash high
\arg HASHL_OPTION: choose to configure hash low
\arg FILTER_OPTION: choose to configure frame filter related parameters
\arg HALFDUPLEX_OPTION: choose to configure halfduplex mode related parameters
\arg TIMER_OPTION: choose to configure time counter related parameters
\arg INTERFRAMEGAP_OPTION: choose to configure the inter frame gap related parameters
\param[in] para: the related parameters according to the option
all the related parameters should be configured which are shown as below
FORWARD_OPTION related parameters:
- ENET_AUTO_PADCRC_DROP_ENABLE/ ENET_AUTO_PADCRC_DROP_DISABLE ;
- ENET_TYPEFRAME_CRC_DROP_ENABLE/ ENET_TYPEFRAME_CRC_DROP_DISABLE ;
- ENET_FORWARD_ERRFRAMES_ENABLE/ ENET_FORWARD_ERRFRAMES_DISABLE ;
- ENET_FORWARD_UNDERSZ_GOODFRAMES_ENABLE/ ENET_FORWARD_UNDERSZ_GOODFRAMES_DISABLE .
DMABUS_OPTION related parameters:
- ENET_ADDRESS_ALIGN_ENABLE/ ENET_ADDRESS_ALIGN_DISABLE ;
- ENET_FIXED_BURST_ENABLE/ ENET_FIXED_BURST_DISABLE ;
- ENET_MIXED_BURST_ENABLE/ ENET_MIXED_BURST_DISABLE ;
DMA_MAXBURST_OPTION related parameters:
- ENET_RXDP_1BEAT/ ENET_RXDP_2BEAT/ ENET_RXDP_4BEAT/
ENET_RXDP_8BEAT/ ENE
没有合适的资源?快使用搜索试试~ 我知道了~
GD32F303CBT6工程模版
共155个文件
h:33个
o:27个
c:27个
2 下载量 151 浏览量
2023-12-27
20:46:27
上传
评论
收藏 730KB 7Z 举报
温馨提示
GD32工程模版
资源推荐
资源详情
资源评论
收起资源包目录
GD32F303CBT6工程模版 (155个子文件)
gd32f30x_template.uvguix.31837 90KB
gd32f30x_template.axf 50KB
gd32f30x_enet.c 154KB
gd32f30x_timer.c 86KB
gd32f30x_rcu.c 48KB
gd32f30x_can.c 41KB
gd32f30x_adc.c 36KB
gd32f30x_fmc.c 32KB
gd32f30x_exmc.c 32KB
system_gd32f30x.c 31KB
gd32f30x_usart.c 30KB
gd32f30x_spi.c 28KB
gd32f30x_sdio.c 28KB
gd32f30x_dma.c 27KB
gd32f30x_i2c.c 26KB
gd32f30x_gpio.c 22KB
gd32f30x_dac.c 16KB
gd32f30x_ctc.c 13KB
gd32f30x_pmu.c 11KB
gd32f30x_bkp.c 9KB
gd32f30x_exti.c 8KB
gd32f30x_fwdgt.c 7KB
gd32f30x_misc.c 7KB
gd32f30x_rtc.c 6KB
gd32f30x_dbg.c 6KB
gd32f30x_wwdgt.c 4KB
gd32f30x_crc.c 4KB
systick.c 3KB
main.c 45B
gd32f30x_timer.crf 320KB
gd32f30x_can.crf 313KB
gd32f30x_fmc.crf 309KB
gd32f30x_dma.crf 309KB
gd32f30x_rcu.crf 308KB
gd32f30x_adc.crf 307KB
gd32f30x_exmc.crf 306KB
gd32f30x_usart.crf 306KB
gd32f30x_spi.crf 305KB
gd32f30x_i2c.crf 305KB
gd32f30x_sdio.crf 303KB
gd32f30x_dac.crf 303KB
gd32f30x_gpio.crf 303KB
gd32f30x_enet.crf 302KB
system_gd32f30x.crf 302KB
gd32f30x_pmu.crf 301KB
gd32f30x_ctc.crf 301KB
gd32f30x_bkp.crf 301KB
gd32f30x_exti.crf 300KB
gd32f30x_fwdgt.crf 300KB
gd32f30x_rtc.crf 300KB
gd32f30x_misc.crf 299KB
gd32f30x_crc.crf 299KB
gd32f30x_dbg.crf 299KB
gd32f30x_wwdgt.crf 299KB
main.crf 68B
gd32f30x_enet.d 2KB
gd32f30x_usart.d 2KB
gd32f30x_timer.d 2KB
gd32f30x_fwdgt.d 2KB
gd32f30x_wwdgt.d 2KB
gd32f30x_can.d 2KB
gd32f30x_dma.d 2KB
gd32f30x_sdio.d 2KB
gd32f30x_gpio.d 2KB
gd32f30x_exti.d 2KB
gd32f30x_exmc.d 2KB
gd32f30x_misc.d 2KB
system_gd32f30x.d 2KB
gd32f30x_dbg.d 2KB
gd32f30x_fmc.d 2KB
gd32f30x_ctc.d 2KB
gd32f30x_rcu.d 2KB
gd32f30x_i2c.d 2KB
gd32f30x_pmu.d 2KB
gd32f30x_spi.d 2KB
gd32f30x_adc.d 2KB
gd32f30x_dac.d 2KB
gd32f30x_rtc.d 2KB
gd32f30x_crc.d 2KB
gd32f30x_bkp.d 2KB
startup_gd32f30x_hd.d 64B
main.d 30B
gd32f30x_template_Template.dep 55KB
gd32f30x_enet.h 142KB
core_cm4.h 107KB
gd32f30x_rcu.h 81KB
gd32f30x_timer.h 56KB
gd32f30x_can.h 53KB
gd32f30x_gpio.h 41KB
gd32f30x_exmc.h 34KB
gd32f30x_adc.h 30KB
gd32f30x_sdio.h 30KB
gd32f30x_usart.h 29KB
cmsis_armcc.h 28KB
gd32f30x.h 27KB
gd32f30x_spi.h 24KB
gd32f30x_fmc.h 23KB
gd32f30x_i2c.h 23KB
core_cm4_simd.h 22KB
gd32f30x_dma.h 19KB
共 155 条
- 1
- 2
资源评论
逃与桃
- 粉丝: 79
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功