[TriCore][官方例程][TC397以太网例程详解] - 1.概览

关键词

TC397 官方例程;TC397 以太网例程;TC397 GETH;


简介

本篇为 Aurix TriCore TC397 以太网官方例程分析,重点关注其硬件行为

调试所用的开发板型号:KIT-A2G-TC397-5V-TFT

所使用的例程:Ethernet_1_KIT_TC397_TFT

英飞凌 TriCore 官方例程下载地址:

GitHub - Infineon/AURIX_code_examples


系列文章链接

TC397以太网例程 - 1.概览

TC397以太网例程 - 2.STM 定时器初始化

TC397以太网例程 - 3.LwIP 配置及初始化

TC397以太网例程 - 4.ASCLIN 串口配置

TC397以太网例程 - 5.IP 地址声明

TC397以太网例程 - 6.内存 & 协议等初始化

TC397以太网例程 - 7.netif 网卡配置

TC397以太网例程 - 8.硬件初始化

TC397以太网例程 - 9.基本设置

TC397以太网例程 - 10.默认/用户配置

TC397以太网例程 - 11.RTL8211F 复位

TC397以太网例程 - 12.GETH 初始化

TC397以太网例程 - 13.PHY 初始化

TC397以太网例程 - 14.Tx/Rx 使能

TC397以太网例程 - 15.其他配置

TC397以太网例程 - 16.ECHO 应用 - 初始化

TC397以太网例程 - 17.ECHO 应用 - 轮询定时器

TC397以太网例程 - 18.ECHO 应用 - 接收报文


目录

1.主函数概览

2.运行例程

2.1.配置 IP 地址

2.2.网卡配置

2.3.本机与开发板通信


1.主函数概览

主函数可以分为如下几个部分:

  • STM 定时器初始化;

  • 发送 GETH 模块使能请求;

  • MAC 地址定义及 LwIP 初始化;

  • ECHO 应用初始化;

  • ECHO 程序运行:Poll 定时器 & 报文收发;

// Cpu0_Main.c
void core0_main (void)
{
    ...
// ---------------------------------------------------
    // STM 初始化
    IfxStm_CompareConfig stmCompareConfig;                                  /* STM Configuration declaration                */
    IfxStm_initCompareConfig(&stmCompareConfig);                            /* Initialize a default configuration for STM   */
    stmCompareConfig.triggerPriority     = ISR_PRIORITY_OS_TICK;            /* Priority of the interrupt generated by STM   */
    stmCompareConfig.comparatorInterrupt = IfxStm_ComparatorInterrupt_ir0;  /* Select the request source 0                  */
    stmCompareConfig.ticks               = IFX_CFG_STM_TICKS_PER_MS * 10;   /* First interrupt shall occur after 10 ms      */
    stmCompareConfig.typeOfService       = IfxSrc_Tos_cpu0;                 /* CPU0 serves the interrupts                   */
    IfxStm_initCompare(&MODULE_STM0, &stmCompareConfig);                    /* Initialize the Compare functionality         */
// ---------------------------------------------------

// ---------------------------------------------------
    // 检查 GETH 模块是否使能,若未使能则发送使能请求
    IfxGeth_enableModule(&MODULE_GETH);                     /* Enable Gigabit Ethernet Media Access Controller (GETH) module*/
        |--> gethSFR->CLC.B.DISR = 0;                       /* set the enable request */
        |--> IfxGeth_isModuleEnabled(gethSFR);              /* read back to ensure proper enabling */
            |--> return (gethSFR->CLC.B.DISS == 0) ? 1 : 0;
// ---------------------------------------------------

// ---------------------------------------------------
    // LwIP 初始化
    /* Define a MAC Address */
    eth_addr_t ethAddr;
    ethAddr.addr[0] = 0xDE;
    ethAddr.addr[1] = 0xAD;
    ethAddr.addr[2] = 0xBE;
    ethAddr.addr[3] = 0xEF;
    ethAddr.addr[4] = 0xFE;
    ethAddr.addr[5] = 0xED;
    Ifx_Lwip_init(ethAddr);                                 /* Initialize LwIP with the MAC address                         */
// ---------------------------------------------------

// ---------------------------------------------------
    // ECHO 应用初始化
    echoInit();                                             /* Initialize ECHO application                                  */
// ---------------------------------------------------

    while (1)
    {
// ---------------------------------------------------
        // 循环监听
        Ifx_Lwip_pollTimerFlags();                          /* Poll LwIP timers and trigger protocols execution if required */
        Ifx_Lwip_pollReceiveFlags();                        /* Receive data package through ETH                             */
// ---------------------------------------------------
    }
}

2.运行例程

官方例程无法直接运行,需要对 IP 地址、子网掩码、默认网关等进行设置

2.1.配置 IP 地址

官方例程的 IP、网关、子网掩码未指定,需要用户配置,在 Ifx_Lwip_init() 初始化时,手动设置这三个地址:

// Libraries/Ethernet/lwip/port/src/Ifx_Lwip.c
void Ifx_Lwip_init(eth_addr_t ethAddr)
{
    ...
    ip_addr_t default_ipaddr, default_netmask, default_gw;
    IP4_ADDR(&default_gw, 0,0,0,0);
    IP4_ADDR(&default_ipaddr, 0,0,0,0);
    IP4_ADDR(&default_netmask, 255,0,0,0);
----------------------------------------------------------
  
// 重新配置
    ip_addr_t default_ipaddr, default_netmask, default_gw;
    IP4_ADDR(&default_gw, 192,168,3,1);
    IP4_ADDR(&default_ipaddr, 192,168,3,123);
    IP4_ADDR(&default_netmask, 255,255,255,0);

2.2.网卡配置

电脑使用了 USB-RJ45 转接口,通过该转接口连接 TC397 开发板的网口,因此需要在设置中启用该网卡:

网卡识别到后,需要手动配置 IP、网关、子网掩码,保证该网卡与程序中配置的 IP 地址在同一网段:

修改官方例程的 IP 地址等,并完成电脑侧的配置后,可以 ping 通:

2.3.本机与开发板通信

主机 ping 通开发板后使用 PuTTY 与其连接:

连接成功后出现以下界面:

在对话框中输入字符串,会通过网络将刚才输入的字符串打印出来,例如:

输入:Hello!

界面打印:Board:Hello!


下一篇: TC397以太网例程 - 2.STM 定时器初始化