Нашел несколько вариантов настройки DMA для работы с Ethernet: 1. В примерах ST все делается через заполнение структуры ETH_InitStructure, затем в некоторых еще включают прерывание ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R, ENABLE);
2. В примерах Промэлектроники вся настройка происходит парой функций ETH_DMATxDescChainInit(DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB); // Initialize Tx Descriptors list: Chain Mode ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB); // Initialize Rx Descriptors list: Chain Mode DMARxDscrTab->Status = ETH_DMARxDesc_OWN; // Разрешаем приём
3. Нашел еще один образец, где вместо ETH_DMATxDescChainInit, из предыдущего варианта, используется: ETH_DMAPTPTxDescChainInit //Initializes the DMA Tx descriptors in chain mode with PTP.
В чем разница получается разница полученных настроек (через структуру ETH_InitStructure и через функции ETH_DMATxDescChainInit)? "with PTP" - это, я так понял, для синхронизации обмена по Ethernet, но в работе надо будет вызывать еще доп.функции (какие?). Спасибо.
|