This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS570LC4357:为什么 RXERRCODE 为2h?

Guru**** 2610005 points
Other Parts Discussed in Thread: TMS570LS3137, TMS570LC4357, HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/764171/ccs-tms570lc4357-why-the-rxerrcode-is-2h

器件型号:TMS570LC4357
主题中讨论的其他部件:TMS570LS3137HALCOGEN

工具/软件:Code Composer Studio

当我使用 EMAC 模块时、我发现我无法将消息传输到 PC 或从 PC 接收消息。

我从名为 RXERRCODE (MACSTATUS)的寄存器中读取值为2h 的值。

但相同的代码可以与 TMS570LS3137配合使用。

我的提示中是否有问题?以下是代码文件:

静态空 TMS570EmacTXData (空)

静态 EMACDESC_t* const sl_FirstTXDescPtr = EMAC_RAM_base(#define EMAC_RAM_base      (((EMACDESC_t*)(0xFC520000UL))  /* CPPI RAM*/)+ array_size (EMAC_SL_HWRXBuffer);/*第一帧发送HDP所在位置*/
EMACDESC_t* DescPtr = sl_FirstTXDescPtr;/*当前发送数据的HDP *
uint8_t owner = 0U;/* CPU是否已经取得所有DESC的控制权*/
uint8_t EOQ = 0U;/* EMAC硬件模块是否已经处理完上一个DESC队列*/

/*1==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 1*/
/*判断发送缓冲区中的数据是否已经全部发送完毕*/
while (DescPtr!= NULL)

Owner |= DescPtr -> Owner;//=0
if ( DescPtr ->NextPtr ==空)//μ 第一次过

EOQ = DescPtR->EOQ;//=0

DescPtr = DescPtr -> NextPtr;//=0,EOQ=0,onxer=1

/*1==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 1*/

/*1==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 1*/
/* EMAC硬件发送模块中的数据已经发送完毕,可以再次发送新的数据。*/
第三次由第一个条件过((((EMAC_TXINTSTATRAW 和1U)== 1U)&&(EOQ == 1U)&&(所有者=0U)&&(EMAC_TX0HDP =0U))//μ s
||(sl_FirstTXDescPtr->BufferPtr == NULL))

DescPtr = sl_FirstTXDescPtr;

while (EMAC_SL_TXBuffer.Head.Cnt!= EMAC_SL_TXBuffer.Tail.Cnt)//第一次没过,后面过了

/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/
/*配置发送缓冲区寄存器*/
memset (DescPtr、0U、sizeof (EMACDESC_t));
DescPtr -> BufferPtr = EMAC_SL_TXBuffer.Data[EMAC_SL_TXBuffer.Head.Cnt].Buffer;/*存放待发送数据的缓冲区*
DescPtr -> NextPtr = DescPtr + 1U;/*下一帧发送缓冲区*/
DescPtr ->数据长度= EMAC_SL_TXBuffer.Data[EMAC_SL_TXBuffer.Head.Cnt].Len;/*Δ V*/
DescPtr -> PacketLen = EMAC_SL_TXBuffer.Data[EMAC_SL_TXBuffer.Head.Cnt].Len;/*数据长度*
DescPtr -> SOP = 1U;/*起始标志位*/
DescPtr -> EOP = 1U;/*结束标志位*/
DescPtr ->所有者= 1U;/*标志本数据控制权交由EMAC模块*/
/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/

/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/
/*更新发送队列信息*/
EMAC_SL_TXBuffer.Data[EMAC_SL_TXBuffer.Head.Cnt].Len = 0U;
EMAC_SL_TXBuffer.Head.Cnt++;
/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/

DescPtr ++;/*指向下一个发送缓冲区*//fc5201b0
}/*优先发送ARP或者通信协议数据*/

while ((EMAC_SL_IsGotRemoteMacAddr)&&(EMAC_SL_IsRXRemoteUDPData)
&&(EMAC_SL_StandardOutputMSG.Head.Cnt!= EMAC_SL_StandardOutputMSG.Tail.Cnt))

EMACTXData_t* EMACDataPtr = EMAC_SL_StandardOutputMSG.Data + EMAC_SL_StandardOutputMSG.Head.Cnt;/*当前存放数据的缓冲区*
MACFram_t* MacFramePtr =(MACFram_t*)(EMACDataPtr ->缓冲器);
IPHeader_t* IPHeaderPtr =(IPHeader_t*)(EMACDataPt->缓冲区+ 14U);
UDPHeader_t* UDPHeaderPtr =(UDPHeader_t*)(EMACDataPt->缓冲器+ 34U);
uint16_t PacketLen = MAX (MIN_IP_DATA_LEN、EMACDataPtr -> Len);

memcpy (MacFramePtr -> DstMacAddr、EMAC_SL_RemoteMacAddr、大小 EMAC_SL_RemoteMacAddr);/*目的网卡MAC地址*/
IPHeaderPtr->TotalLen = EMACDataPtr->Len - 14U;
IPHeaderPtr ->标识= EMAC_SL_IPFrameID++;
TMS570EmacFillIPHeaderCheckSum ((uint8_t*)(IPHeaderPtr));
UDPHeaderPtr ->DataLen = EMACDataPtr ->Len - 34U;
UDPHeaderPtr ->校验和= TMS570EmacCalcUDPChecksum (REMOAL_MSG_PORT、
EMACDataPtr ->缓冲器+ UDP_HEADER_LEN、EMACDataPtr ->Len - UDP_HEADER_LEN);

/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/
/*配置发送缓冲区寄存器*/
memset (DescPtr、0U、sizeof (EMACDESC_t));
DescPtr -> BufferPtr = EMACDataPtr -> Buffer;/*存放待发送数据的缓冲区*/
DescPtr -> NextPtr = DescPtr + 1U;/*下一帧发送缓冲区*/
DescPtr ->长度= PacketLen;/*数据长度*/
DescPtr -> PacketLen = PacketLen;//数据长度*/
DescPtr -> SOP = 1U;/*起始标志位*/
DescPtr -> EOP = 1U;/*结束标志位*/
DescPtr ->所有者= 1U;/*标志本数据控制权交由EMAC模块*/
/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/

/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/
/*更新发送队列信息*/
EMAC_SL_StandardOutputMSG.Data[EMAC_SL_StandardOutputMSG.Head.Cnt].Len = UDP_HEADER_LEN;
EMAC_SL_StandardOutputMSG.Head.Cnt++;
/*2===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 2*/

DescPtr 指向下一个发送缓冲区;/*Δ t*/
}/*发送软件运行输出信息(为了保证能够完整地接收到所有的输出信息,只有建立网络连接后再尝试发送)*/

if (DescPtr!= sl_FirstTXDescPtr)//mmeiguo、第二次过了

DescPtr --;
DescPtr -> NextPtr =空;/*将最后一个发送缓冲区的NextPtr置为空,表示发送到此缓冲区便结束*/
EMAC_TX0CP = EMAC_TX0CP;
EMAC_TX0HDP =(uint32_t)(sl_FirstTXDescPtr);/*开始发送数据(本语句必须放在最后)*


/*1==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 1*/

typedef 结构体 EMACDescStr{

struct EMACDescStr* NextPtr;/*下一个数据信息的指针*/
uint8_t* BufferPtr;/*存储数据的缓冲区地址*/
uint16_t 数据存储缓冲区中第一个有效字节所在的位置;/*μ s*/
uint16_t 长度;/*数据存储缓冲区中有效数据的长度,单位为字节*/
UINT_t SOP:1;/*数据帧第一个数据包标志位*/
uint_t EOP:1;/*数据帧最后一个数据包标志位*/
uint_t owner:1;/*数据帧当前的控制权是否属于CPU标志位*/
UINT_t EOQ:1;/*数据包是否为数据帧中的最后一包标志位*/
UINT_t TDOWNCMPLT:1;/*拆卸完成(TDOWNCMPLT)标志*/
UINT_t PASSCRC:1;/*数据包的CRC是否由EMAC模块生成标志位*/
uint_t Jabber:1;/* Jabber 帧是长度超过 RXMAXLEN 并具有 CRC、代码或对齐错误的帧*/
uint_t 超大尺寸:1;/*数据包数据长度过大报警*/
uint_t 片段:1;/*数据包不完整报警*/
UINT_t 数据包数据长度过小报警大小:1;/*μ*/
UINT_t CONTROL:1;/*本帧数据为控制帧数据*/
UINT_t 溢出:1;/*数据包接收覆盖报警*/
UINT_t CODEERROR:1;/*数据包内容错误报警*/
UINT_t ALIGNERROR:1;/*数据包对齐错误报警*/
UINT_t CRCERROR:1;/*数据包CRC错误*/
uint_t nomatch:1;/*数据包MAC地址不匹配报警*/
uint16_t PacketLen;/*整帧数据的长度*/
}EMACDESC_t;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请检查您的引脚多路复用设置。 TMS570LC4357具有用于以太网引脚的替代终端。
    2.是否可以在禁用高速缓存的情况下尝试测试?
    3.您的案例中 EMAC 的时钟是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉 ,这种现象已经发生了变化,在读取时 MACSTATUS 寄存器总是0050000。

    我检查了 pinmux 文件:

    void muxInit (void){

    /*使能引脚复用*/
    PinMuxReg -> KICKER0 = 0x83E70B13U;
    PinMuxReg -> KICKER1 = 0x95A4F1E0U;

    PinMuxReg ->PINMUX[0]= PINMUX_BLE_N19_MII_RX_ER | PINMUX_BLE_D4_EMIF_ADDR_00 | PINMUX_BLE_D5_EMIF_ADDR_01 | PINMUX_BLE_C4_EMUX_ADDR_06;

    PinMuxReg->PINMUX[1]= PINMUX_BLE_C5_EMIF_ADDR_07 | PINMUX_BLE_C6_EMIF_ADDR_08 | PINMUX_BLE_C7_EMIF_ADDR_09 | PINMUX_BLE_C8_EMIF_ADDR_10;

    PinMuxReg ->PINMUX[2]= PINMUX_BLE_C9_EMIF_ADDR_11 | PINMUX_BLE_C10_EMIF_ADDR_12 | PINMUX_BLE_C11_EMIF_ADDR_13 | PINMUX_BLE_C12_EMIF_ADDR_14;

    PinMuxReg ->PINMUX[3]= PINMUX_BLE_C13_EMIF_ADDR_15 | PINMUX_BLE_D14_EMIF_ADDR_16 | PINMUX_BLE_C14_EMIF_ADDR_17 | PINMUX_BLE_D15_EMUX_ADDR_18;

    PinMuxReg ->PINMUX[4]= PINMUX_BLE_C15_EMIF_ADDR_19 | PINMUX_BLE_C16_EMIF_ADDR_20 | PINMUX_BLE_C17_EMIF_ADDR_21;

    PinMuxReg ->PINMUX[5]= 0U;

    PinMuxReg ->PINMUX[6]= 0U;

    PinMuxReg ->PINMUX[7]= 0U;

    PinMuxReg ->PINMUX[8]= PINMUX_BLE_D16_EMIF_BA_1;

    PinMuxReg ->PINMUX[9]= PINMUX_BLE_R4_EMIF_NCA | PINMUX_BLE_N17_EMIF_NCS_0 | PINMUX_BLE_L17_EMIF_NCS_2;

    PinMuxReg ->PINMUX[10]= PINMUX_BLE_K17_EMIF_NCS_3 | PINMUX_BLE_M17_EMIF_NCS_4 | PINMUX_BLE_R3_EMIF_NRA| PINMUX_BLE_P3_EMIF_nWAIT;

    PinMuxReg ->PINMUX[11]= PINMUX_BLE_D17_EMIF_Nwe | PINMUX_BLE_E9_EMIF_ADDR_05 | PINMUX_BLE_E8_EMIF_ADDR_04 | PINMUX_BLE_E7_EMIF_ADDR_03;

    PinMuxReg->PINMUX[12]= PINMUX_BLE_E6_EMIF_ADDR_02 | PINMUX_BLE_E13_EMIF_BA_0 | PINMUX_BLE_E12_EMIF_NOE | PINMUX_BLE_E11_EMIF_nDQM_1;

    PinMuxReg ->PINMUX[13]= PINMUX_BLE_E10_EMIF_nDQM_0 | PINMUX_BLE_K15_EMIF_DATA_00 | PINMUX_BLE_L15_EMIF_DATA_01 | PINMUX_BLE_M15_EMIF_DATA_02;

    PinMuxReg ->PINMUX[14]= PINMUX_BLE_N15_EMIF_DATA_03 | PINMUX_BLE_E5-EMIF_DATA_04 | PINMUX_BLE_F5_EMIF_DATA_05 | PINMUX_BLE_G5_EMIF_DATA_06;

    PinMuxReg ->PINMUX[15]= PINMUX_BLE_K5_EMIF_DATA_07 | PINMUX_BLE_L5_EMIF_DATA_08 | PINMUX_BLE_M5_EMIF_DATA_09 | PINMUX_BLE_N5_EMIF_DATA_10;

    PinMuxReg ->PINMUX[16]= PINMUX_BROLE_P5_EMIF_DATA_11 | PINMUX_BLE_R5_EMIF_DATA_12 | PINMUX_BLE_R6_EMIF_DATA_13 | PINMUX_BLE_R7_EMIF_DATA_14;

    PinMuxReg ->PINMUX[17]= PINMUX_BLE_R8_EMIF_DATA_15 | PINMUX_BLE_R9_EXTCLKIN2 | PINMUX_BLE_R10_ETMTRACECLKOUT | PINMUX_BLE_R11_ETMTRACECTL;

    PinMuxReg ->PINMUX[18]= PINMUX_BLE_B15_FRAYTX1 | PINMUX_BLE_B8_FRAYTX2 | PINMUX_BLE_B16_FRAYTXEN1 | PINMUX_BLE_B9_FRAYTXEN2;

    PinMuxReg->PINMUX[19]= PINMUX_BLE_C1_GIOA_2 | PINMUX_BLE_E1_GIOA_3 | PINMUX_BLE_B5_GIOA_5 | PINMUX_BLE_H3_GIOA_6;

    PinMuxReg ->PINMUX[20]= PINMUX_BLE_M1_GIOA_7 | PINMUX_BLE_F2_GIOB_2 | PINMUX_BLE_W10_GIOB_3 | PINMUX_BLE_J2_GIOB_6;

    PinMuxReg->PINMUX[21]= PINMUX_BLE_F1_GIOB_7 | PINMUX_BLE_R2_MII_TXD_2 | PINMUX_BLE_F3_MII_COL | PINMUX_BLE_G3_MDIO;

    PinMuxReg ->PINMUX[22]= PINMUX_BLE_J3_MIBSPI1NCS_3 | PINMUX_BLE_G19_MII_RXD_2 | PINMUX_BLE_V9_MIBSPI3CLK | PINMUX_BLE_V10_MIBSPI3NCS_0;

    PinMuxReg->PINMUX[23]= PINMUX_BLE_V5_MDCLK | PINMUX_BLE_B2_MIBSPI3NCS_2 | PINMUX_BLE_C3_MIBSPI3NCS_3 | PINMUX_BLE_W9_MIBSPI3NENA;

    PinMuxReg->PINMUX[24]= PINMUX_BLE_W8_MIBSPI3SIMO | PINMUX_BLE_V8_MIBSPI3SOMI | PINMUX_BLE_H19_MII_TXEN | PINMUX_BLE_E19_MIBSPI5NCS_0;

    PinMuxReg ->PINMUX[25]= PINMUX_BROLE_B6_MIBSPI5NCS_1 | PINMUX_BLE_W6_MIBSPI5NCS_2 | PINMUX_BLE_T12_MIBSPI5NCS_3 | PINMUX_BLE_H18_MII_RXD_3;

    PinMuxReg ->PINMUX[26]= PINMUX_BLE_J19_MII_TXD_1 | PINMUX_BLE_E16_MIBSPI5SIMO_1 | PINMUX_BLE_H17_MIBSPI5SIMO_2 | PINMUX_BLE_G17_MIBSPIM_3;

    PinMuxReg->PINMUX[27]= PINMUX_BLE_J18_MII_TXD_0 | PINMUX_BLE_E17_MIBSPI5SOMI_1 | PINMUX_BLE_H16_MIBSPI5SOMI_2 | PINMUX_BLE_G16_MIBSPI5SOMI_3;

    PinMuxReg->PINMUX[28]= PINMUX_BLE_K18_MIBSPI4CLK | PINMUX_BLE_V2_MIBSPI4NENA | PINMUX_BLE_W5_MIBSPI4SIMO | PINMUX_BLE_NCS_MIBSPI4U1_0;

    PinMuxReg->PINMUX[29]= PINMUX_BLE_B12_MIBSPI4NCS_1 | PINMUX_BLE_V6_MIBSPI4SOMI | PINMUX_BLE_W3_SCI3RX | PINMUX_BLE_T1_N2HET1_07;

    PinMuxReg ->PINMUX[30]= PINMUX_BLE_E18_MII_TXD_3 | PINMUX_BLE_V7_N2HET1_09 | PINMUX_BLE_D19_MII_TX_CLK | PINMUX_BLE_E3_N2HET1_11;

    PinMuxReg ->PINMUX[31]= PINMUX_BLE_B4_MII_CRS | PINMUX_BLE_N2_SCI3TX | PINMUX_BLE_N1_N2HET1_15 | PINMUX_BLE_A4_N2HET1_16;

    PinMuxReg ->PINMUX[32]= PINMUX_BLE_A13_SCI4RX | PINMUX_BLE_J1_N2HET1_18 | PINMUX_BLE_B13_SCI4TX | PINMUX_BLE_P2_N2HET1_20;

    PinMuxReg ->PINMUX[33]= PINMUX_BLE_H4_N2HET1_21 | PINMUX_BLE_B3_N2HET1_22 | PINMUX_BLE_J4_N2HET1_23 | PINMUX_BLE_P1_MII_RXD_0;

    PinMuxReg ->PINMUX[34]= PINMUX_BLE_A14_MII_RXD_1 | PINMUX_BLE_K19_MII_RXCLK | PINMUX_BLE_B11_MII_RX_DV | PINMUX_BLE_D3_N2HET2_01;

    PinMuxReg->PINMUX[35]= PINMUX_BLE_D7_N2HET2_02 | PINMUX_BLE_D3_MIBSPI2NENA | PINMUX_BLE_D2_MIBSPI2SOMI | PINMUX_BLE_D1_MIBSPI2SIMO;

    PinMuxReg->PINMUX[36]= PINMUX_BLE_P4_LIN2RX | PINMUX_BLE_T5_LIN2TX /*| PINMUX_BLE_T4_MII_RXCLK | PINMUX_BLE_U7_MII_TX_CLK*/;

    PinMuxReg ->PINMUX[37]= PINMUX_BLE_E2_MIBSPI2CLK | PINMUX_BLE_N3_MIBSPI2NCS_0;

    PinMuxReg ->PINMUX[80]=(SIGNAL _AD2EVT_T10 | 0x02020200U);

    PinMuxReg ->PINMUX[81]= 0x020202U;

    PinMuxReg ->PINMUX[82]= 0x020202U;

    PinMuxReg ->PINMUX[83]=(SIGNAL _GIOA_0_A5 | 0x000202U);

    PinMuxReg ->PINMUX[84]= SIGNAL _GIOA_1_C2 | SIG信号_GIOA_2_C1 | SIGNAL _GIOA_3_E1 | SIGNAL _GIOA_4_A6;

    PinMuxReg ->PINMUX[85]= SIGON_GIOA_5_B5 | SIGON_GIOA_6_H3 | SIGON_GIOA_7_M1 | SIGON_GIOB_0_M2;

    PinMuxReg ->PINMUX[86]= SIGNAL _GIOB_1_K2 | SIGNAL _GIOB_2_B9 |/* SIGNAL _GIOB_3_W10 |*/ SIGNAL _GIOB_4_G1;

    PinMuxReg ->PINMUX[87]= SIGNAL _GIOB_5_G2 | SIG信号_GIOB_6_J2 | SIG信号_GIOB_7_F1 | SIGNAL _MDIO_G3;

    PinMuxReg ->PINMUX[88]=(SIGNAL /MIBSPI1NCS_4_U10 | SIGNAL MIBSPI1NCS_5_U9 | 0x00020000U);

    PinMuxReg ->PINMUX[89]= SIGNEL_MII_COL_F3 | SIGNEL_MII_CRS_B4;

    PinMuxReg ->PINMUX[90]= SIGNAL_MII_RX_DV_B11 | SIGNAL_MII_RX_ER_N19 | SIGNAL_MII_RXCLK_K19 | SIGNAL_MII_RXD_0_P1;

    PinMuxReg ->PINMUX[91]= SIGNAL_MII_RXD_1_A14 | SIGNAL_MII_RXD_2_U3 | SIGNAL_MII_RXD_3_V3 | SIGNAL_MII_TX_CLK_D19;

    PinMuxReg ->PINMUX[92]=/* SIGNAL_N2HET1_17_F3 | SIGNAL_N2HET1_19_G3 |*/ SIGNAL_N2HET1_21_H4 | SIGNAL_N2HET1_23_J4;

    PinMuxReg ->PINMUX[93]= SIGNAL_N2HET1_25_M3 | SIGNAL_N2HET1_27_A9 | SIGNAL_N2HET1_29_A3 | SIGNAL_N2HET1_31_J17;

    PinMuxReg ->PINMUX[94]= SIGNAL_N2HET2_00_D6 | SIGNAL_N2HET2_01_D8 | SIGNAL_N2HET2_02_D7 /*| SIGNAL_N2HET2_03_E2*;

    PinMuxReg ->PINMUX[95]= SIGNAL_N2HET2_04_D13 | SIGNAL_N2HET2_05_D12 | SIGNAL_N2HET2_06_D11 /*| SIGNAL_N2HET2_07_N3*;

    PinMuxReg ->PINMUX[96]= SIGNAL_N2HET2_08_K16 | SIGNAL_N2HET2_09_L16 | SIGNAL_N2HET2_10_M16 | SIGNAL_N2HET2_11_N16;

    PinMuxReg ->PINMUX[97]= SIGNAL_N2HET2_12_V6 |/* SIGNAL_N2HET2_13_D2 |*/ SIGNAL_N2HET2_14_T1 | SIGNAL_N2HET2_15_K4;

    PinMuxReg ->PINMUX[98]= SIGNAL_N2HET2_16_L4 | SIGNAL_N2HET2_18_N4 |/* SIGNAL_N2HET2_20_N2 |*/ SIGNAL_N2HET2_22_T7;

    PinMuxReg ->PINMUX[99]=/* SIGNAL_nTZ1_N19 |*/ SIGNAL_nTZ1_2_F1 | SIGNAL_nTZ1_3_J3;


    PinMuxReg ->PINMUX[161]= 0x02020200U;

    PinMuxReg ->PINMUX[162]= 0x020202U;

    PinMuxReg ->PINMUX[163]= 0x000202U;


    /*用户代码开始(3)*/
    /*用户代码结束*/

    PINMUX_EMIF_OUTPUT_ENABLE (ON);
    PINMUX_GATE _EMIF_CLK_ENABLE (ON);

    PINMUX_GIOA_DISABLE_HET1_ENABLE (OFF);
    PINMUX_GIOB_DISABLE_HET2_ENABLE (OFF);
    PINMUX_ETHERNET_SELECT (MII);
    PINMUX_ALT_ADC_TRIGGER_SELECT (1);


    PINMUX_ETPWM1_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM2_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM3_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM4_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM5_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM6_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM7_EQEPERR_ENABLE (EQEPERR12);
    PINMUX_ETPWM_TIME_BASE_SYNC_ENABLE (OFF);
    PINMUX_ETPWM_TZ1_ENABLE (异步);
    PINMUX_ETPWM_TZ2_ENABLE (异步);
    PINMUX_ETPWM_TZ3_ENABLE (异步);
    PINMUX_ETPWM_EPWM1SYNCI_ENABLE (异步);

    PINMUX_ETPWM_SOC1A_ENABLE (ON);
    PINMUX_ETPWM_SOC2A_ENABLE (ON);
    PINMUX_ETPWM_SOC3A_ENABLE (ON);
    PINMUX_ETPWM_SOC4A_ENABLE (ON);
    PINMUX_ETPWM_SOC5A_ENABLE (ON);
    PINMUX_ETPWM_SOC6A_ENABLE (ON);
    PINMUX_ETPWM_SOC7A_ENABLE (ON);

    PINMUX_EQEP1A_FILTER_ENABLE (OFF);
    PINMUX_EQEP1B_FILTER_ENABLE (OFF);
    PINMUX_EQEP1I_FILTER_ENABLE (OFF);
    PINMUX_EQEP1S_FILTER_ENABLE (OFF);
    PINMUX_EQEP2A_FILTER_ENABLE (OFF);
    PINMUX_EQEP2B_FILTER_ENABLE (OFF);
    PINMUX_EQEP2I_FILTER_ENABLE (OFF);
    PINMUX_EQEP2S_FILTER_ENABLE (OFF);

    PINMUX_ECAP1_FILTER_ENABLE (OFF);
    PINMUX_ECAP2_FILTER_ENABLE (OFF);
    PINMUX_ECAP3_FILTER_ENABLE (OFF);
    PINMUX_ECAP4_FILTER_ENABLE (关闭);
    PINMUX_ECAP5_FILTER_ENABLE (OFF);
    PINMUX_ECAP6_FILTER_ENABLE (OFF);

    PINMUX_GIOA0_DMA_ENABLE (ON);
    PINMUX_GIOA1_DMA_ENABLE (ON);
    PINMUX_GIOA2_DMA_ENABLE (ON);
    PINMUX_GIOA3_DMA_ENABLE (ON);
    PINMUX_GIOA4_DMA_ENABLE (ON);
    PINMUX_GIOA5_DMA_ENABLE (ON);
    PINMUX_GIOA6_DMA_ENABLE (ON);
    PINMUX_GIOA7_DMA_ENABLE (ON);
    PINMUX_GIOB0_DMA_ENABLE (ON);
    PINMUX_GIOB1_DMA_ENABLE (ON);
    PINMUX_GIOB2_DMA_ENABLE (ON);
    PINMUX_GIOB3_DMA_ENABLE (ON);
    PINMUX_GIOB4_DMA_ENABLE (ON);
    PINMUX_GIOB5_DMA_ENABLE (ON);
    PINMUX_GIOB6_DMA_ENABLE (ON);
    PINMUX_GIOB7_DMA_ENABLE (ON);

    pinMuxReg ->PINMUX[174]|=(uint32_t)(~(0XFEFFFFFFU));

    PINMUX_TEMP1_ENABLE (OFF);
    PINMUX_TEMP2_ENABLE (OFF);
    PINMUX_TEMP3_ENABLE (OFF);

    /*禁用引脚复用*/
    PinMuxReg ->KICKER0 = 0x000000000000U;
    PinMuxReg ->KICKER1 = 0x000000000000U;


    我添加了以下代码:

    MRC P15、#0、R1、C1、c0、 0;读取系统控制寄存器配置数据
    BIC R1、R1、#0x1 <<12;指令高速缓存禁用
    BIC R1、R1、#0x1 <<2;数据高速缓存禁用
    DSB
    MCR P15、#0、R1、C1、c0、 0;禁用高速缓存 RAM ISB

    文件:hL_sys_core.asm 中

    时钟如下:

    这三种解决方案不起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很抱歉、我没有计划查看您的 pinmux 设置的源代码。

    1.如果您使用的是 TI Launchpad:请按照说明操作
    processors.wiki.ti.com/.../LAUNCHXL2_RM57L:_lwIP_Demo

    2.如果您使用 TI HDK、请使用替代引脚而不是默认引脚(HALCoGen 中输入引脚复用的右列)

    如果您使用自己的电路板、请根据电路板原理图中使用的 EMAC 信号对引脚进行引脚多路复用