Easyelectronics.ru

Электроника для всех
Текущее время: 29 окт 2020, 21:01

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: STM32F107 проблема с отправкой кадра с помощью DMA
СообщениеДобавлено: 15 авг 2012, 17:45 
Только пришел

Зарегистрирован: 28 апр 2012, 14:12
Сообщения: 8
Пользуюсь платой TE-STM32F107. Собственно, начитавшись/насмотревшись всяких примеров, попытался отправить кадр по Ethernet с помощью DMA.
Код настройки DMA:
Код:
ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;   
ETH_InitStructure.ETH_Speed = ETH_Speed_100M;                                       
ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable;             
ETH_InitStructure.ETH_Mode = ETH_Mode_FullDuplex;                                                                                 
ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Disable;                                                                                 
ETH_InitStructure.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable;                                                                                                                                                                       
ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Enable;                                                                                                       
ETH_InitStructure.ETH_BroadcastFramesReception =ETH_BroadcastFramesReception_Disable;   
ETH_InitStructure.ETH_PromiscuousMode =ETH_PromiscuousMode_Disable;                                                             
ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;     
ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect;

Код передачи с помощью DMA:
Код:
if ((DMATxDscrTab->Status & ETH_DMARxDesc_OWN) == 0)
{
   // Чтобы успешно отправлять, следует сначала отключить передачу (либо успевать обрабатывать все буферы, чтобы DMA не подвешивался).
   ETH_DMATransmissionCmd(DISABLE);
   //помещаем данные
   Tx_Buff[0][20] = 0xAA;
   Tx_Buff[0][21] = 0xFF;
   // отдаём дескриптор в DMA Ethernet
   DMATxDscrTab->Status = ETH_DMARxDesc_OWN | ETH_DMATxDesc_TCH | ETH_DMATxDesc_TTSE | ETH_DMATxDesc_LS | ETH_DMATxDesc_FS;
   // разрешаем передачу
   ETH_DMATransmissionCmd(ENABLE);
}

Отправка с помощью функции ETH_HandleTxPkt(Send_buf ,100); проходит на ура - сниффер ловит 100 байт, что говорит о правильной настройки, хотя бы, портов.
Подскажите, что я сделал не так при отправке?
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F107 проблема с отправкой кадра с помощью DMA
СообщениеДобавлено: 15 авг 2012, 17:58 
Только пришел

Зарегистрирован: 28 апр 2012, 14:12
Сообщения: 8
Хмм... посмотрел тело функции ETH_HandleTxPkt( ... ). Оказывается она использует DMA. Затупил я...
Да и, вообще, без DMA не отправилось бы :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Asd12, ILYAUL


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB