尊敬的专家:
我使用的是 MCAL Eth 应用的开箱即用演示
- 如何在 MCAL 以太网项目中禁用中断节奏
- 如何切换到轮询模式而不是中断模式。
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.
尊敬的专家:
我使用的是 MCAL Eth 应用的开箱即用演示
在以太网中、处理数据发送和接收事件的两种主要模式为 轮询 和 中断 。
什么是轮询模式?
在轮询模式下、MCU 定期检查传输和接收状态。 R5F 不依赖于以太网/DMA 外设来通知其有新数据可用(Rx)或数据传输正在完成(Tx)。
什么是中断模式?
在中断模式下、MCU 依靠 DMA 来通知数据传输或接收。 当新数据包到达(Rx 流)时、DMA 通知回调函数被命中。 然后、此回调函数处理流。 在 Tx 侧、当 DMA 完成数据传输时、将命中 Tx 回调、以进一步处理应用流。
什么是中断节奏?
中断节奏是一种机制、用于控制对 Rx 和 Tx 事件做出响应时产生中断的速率。 这样、就可以更高效地管理资源。 使用中断节奏单元、例如2ms、它指示每2ms 生成一次中断、并将在该时间间隔内处理所有数据包。
注: 默认情况下、开箱即用 MCAL Eth_App 演示会启用中断节奏。
请参阅 4.10. ETH—平台 MCAL 开发- AM263用户指南(TI.com) 、用于正确开始和设置 TH 应用演示
禁用中断起搏的步骤:
禁用中断和启用轮询的步骤:
现在,在 examples/Eth/EthApp.c 文件中,调用 Eth_Transmit ()函数后调用 Eth_Tx ()。
retVal = Eth_Transmit(pEthConfigPtr->ctrlIdx, bufIdx, frameType, txConfirmation, lenByte, gBCstMacAddr); #if (ETH_ENABLE_TX_INTERRUPT != STD_ON) AppUtils_delay(1U); #endif if ((Std_ReturnType) E_NOT_OK == retVal) { gTestPassed = E_NOT_OK; gAppObj.stats.ethTransmitErr++; } else { #if (ETH_ENABLE_TX_INTERRUPT != STD_ON) Eth_TxConfirmation(0); #endif while(gAppObj.txConfirmPacketFlag==FALSE) { /*wait till tx packet confirmed */ } gAppObj.stats.ethTransmitPckCnt++;同一个 diff 片段:
gmake -s allclean gmake -s eth_app
使用 CCS 运行应用。 打开 Wireshark 并检查从微控制器发送的数据包。
MCU 将数据包发送到外部世界:
MCU 接收来自外部世界的数据包:
如上所示、ETH 应用演示现在将使用轮询模式而不是默认中断模式。
此致、
Shaunak