Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 11.04.2018
Сообщений: 19

Передача структуры по Ethernet (STM32F407)

10.03.2020, 09:34. Показов 4035. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. На просторах интернета нашел старый пример реализации передачи Ethernet пакета с использованием DMA. В нем производится запись и передача значений 0x01 и 0x02. Код программы:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "stm32f40x.h"
#include "stm32_eth.h"
#include <stdio.h>
#include "delay.h"
 
//PHY_ADDRESS
#define PHY_ADDRESS       0x01F /* PHY_ADDRESS TE-STM32F407 Board */ 
#define RMII_MODE          /*MII mode or RMII mode*/
 
#define MY_MAC_ADD_0 0x33
#define MY_MAC_ADD_1 0x35
#define MY_MAC_ADD_2 0x43
#define MY_MAC_ADD_3 0x38
#define MY_MAC_ADD_4 0xF3
#define MY_MAC_ADD_5 0xA3
 
 
#define ETH_RXBUFNB        8 
#define ETH_TXBUFNB        2 
 
ETH_InitTypeDef ETH_InitStructure;
ETH_DMADESCTypeDef  DMARxDscrTab[ETH_RXBUFNB], DMATxDscrTab[ETH_TXBUFNB];
u8 Rx_Buff[ETH_RXBUFNB][ETH_MAX_PACKET_SIZE], Tx_Buff[ETH_TXBUFNB][ETH_MAX_PACKET_SIZE]; 
 
int main(void)
{
SysTick_Config(SystemCoreClock/1000);
RCC_Configuration();
NVIC_Configuration();
GPIO_PinRemapConfig(GPIO_Remap_ETH, DISABLE); 
GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_MII);
RCC->CFGR |= RCC_CFGR_MCO_HSE;
GPIO_Configuration();
  
 ETH_DeInit();
 ETH_SoftwareReset();
 while(ETH_GetSoftwareResetStatus()==SET);
 
 ETH_StructInit(&ETH_InitStructure);
 /*------------------------   MAC   -----------------------------------*/
 ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable ;  
 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; 
 /* Configure ETHERNET */
 Value = ETH_Init(&ETH_InitStructure, PHY_ADDRESS);
 
 /* Initialize Tx Descriptors list: Chain Mode */
 ETH_DMATxDescChainInit(DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
 /* Initialize Rx Descriptors list: Chain Mode  */
 ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
 
 //Разрешаем прием
 DMARxDscrTab -> Status = ETH_DMARxDesc_OWN;
 
 /* Enable MAC and DMA transmission and reception */
 ETH_Start();  
 
while(1)
{
    TransmitPacket();
}
 
}
Функция TransmitPacket:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void TransmitPacket(void)
{
if ((DMATxDscrTab->Status & ETH_DMARxDesc_OWN)==0)
{   
            //Сначала отключаем передачу
            ETH_DMATransmissionCmd(DISABLE);
        
                        Tx_Buff[0][20] = 0x01;
                        Tx_Buff[0][21] = 0x02;
 
            //отдаем дескриптор в руки DMA Ethernet
            DMATxDscrTab -> Status = ETH_DMARxDesc_OWN | ETH_DMATxDesc_TCH | ETH_DMATxDesc_TTSE |
                        ETH_DMATxDesc_LS | ETH_DMATxDesc_FS;
                        
                        //разрешаем отправку
            ETH_DMATransmissionCmd(ENABLE);
 
}
Возможно ли по такой же схеме передать структуру? То есть чтобы в анализаторе пакетов было нечто подобное как на приложенной картинке.


Кусок этой структуры сформировал, но как засунуть её в пакет не понимаю.
C#
1
2
3
4
5
6
7
8
9
10
1 struct APDU {
2   int8_t savPDU_tag;
3   int8_t savPDU_length; // razmer APDU
4   int8_t noASDU_tag;
5   int8_t noASDU_length; // razmer noASDU
6   int8_t noASDU;
7   int8_t SequenceofASDU_tag;
8   int8_t SequenceofASDU_length; // razmer vseh ASDU
9   struct ASDU_LE ASDU1;
10 };
Миниатюры
Передача структуры по Ethernet (STM32F407)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.03.2020, 09:34
Ответы с готовыми решениями:

Ethernet на STM32F407
Добрый вечер уважаимые форумчаны. Очень нужна ваша помощь. Необходимо запустить Ethernet на STM32F407. Имееться платка Olimex STM32-E407,...

Проблема с Ethernet на STM32F407
Всем привет! 1 я соединил ПК-отладка с LAN8720-отладка STM32f407discovery 2 с сайта ST.com скачал STM32F4x7_ETH_LwIP_V1.1.1 3 в кейле...

STM32F407 USART1 DMA2 передача данных разной длины
Код рабочий но если закинуть в буфер 3 символа - передаються 3 мои а потом 125 мусора как мне передавать данные разной длины от...

1
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
10.03.2020, 10:25
Цитата Сообщение от supremeremixx Посмотреть сообщение
не понимаю.
у вас в примере данные копируются в ячейки 20 и 21 Tx буфера:
C
1
2
                        Tx_Buff[0][20] = 0x01;
                        Tx_Buff[0][21] = 0x02;
вот, начиная с ячейки 20 закидывайте данные вашей структуры в пакет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.03.2020, 10:25
Помогаю со студенческими работами здесь

Анализ структуры фрейма Ethernet.
Всем привет. Ребята, нужна помощь. Есть файл, который содержит n-ое количество фреймов, их подробные описания, типа получателей,...

[РЕШЕНО] STM32F407+LSM303C, STM32F407 (дискавери)
Доброго времени суток, форумчане. Вот уже пару дней бьюсь над проблемкой, не выходит &quot;каменный цветок&quot;. Собственно...

Передача пакетов по Ethernet
Приветствую! Необходимо обмениваться инфой с контроллером PERCO по ethernet. Как я понял обмен нужно реализовывать с использованием...

Передача данных по Ethernet
Всем доброе время суток. Может кто работал с передачей данных по Ethernet в Билдере, поделитесь инфой как именно организовать передачю...

Передача данных по Ethernet
Задался вопросом организовать передачу данных от микроконтроллера по Ethernet и аналогично в обратном направлении. Хочу поинтересоваться в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru