Вот смотри, есть пример https://github.com/SoCXin/CH579/blob/master/project/startcode/NET/IP_Raw/IP_Raw.c
В нем такое:
void ETH_IRQHandler( void ) /* 以太网中断 */
{
CH57xNET_ETHIsr(); /* 以太网中断中断服务函数 */
}
Если перед вызовом CH57XNET_ETHIsr() прочитать регистр R8_ETH_CON, то можно узнать причину прерывания. Если стоит флаг RB_ETH_EIR_RXIF, то пакет успешно принят. Тогда из регистра R32_ETH_RX узнаем длину пакета и где он в памяти лежит. Залезаем втуда и выдергиваем из пакета чего нужно и после этого вызываем CH57xNET_ETHIsr