Перейти к содержанию
    

remixx

Участник
  • Постов

    37
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о remixx

  • Звание
    Участник
    Участник

Посетители профиля

904 просмотра профиля
  1. А при этом на выходе в анализаторе получится просто упорядоченный набор цифр, или же именно набор параметров + их значения? То есть я не совсем понимаю существует ли вообще возможность передачи именно структуры, или же указывая в Ethertype (тип Ethernet пакета) конкретное интересующее значение она формируется автоматически, а дальше, как вы и сказали, с учетом длины нужно поэлементно передать численные значения, а они сами автоматически присвоются параметрам по порядку?
  2. Здравствуйте. На просторах интернета нашел старый пример реализации передачи Ethernet пакета с использованием DMA. В нем производится запись и передача значений 0x01 и 0x02. Код программы: #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: 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); } Возможно ли по такой же схеме передать структуру? То есть чтобы в анализаторе пакетов было нечто подобное: Кусок этой структуры сформировал, но как засунуть её в пакет не понимаю. 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 };
  3. В общем копался копался и вот к чему пришел:Скачал готовые примеры udp и http сервера с сайта stm, правда конкретно для дискавери их нету, поэтому пришлось переконфигурировать их. За основу брал вот эту тему т.к. разбирается как раз мой случай.После прошивки контроллера подключил плату напрямую к контроллеру и если раньше разъем Rj45 просто горел зеленым, то после прямого подключения загорается оранжевый светодиод, а зеленый начинает хаотично мигать.Пробую пинговать - результата нет, пробую через браузер зайти на http сервер - аналогично.Залил в контроллер программу udp клиента, который должен посылать echo сообщения на статический ip адрес. Настраиваю его на ПК и указываю его в программе. Запускаю wireshark и вот что он выдает:2001 2086.482021000 192.168.0.10 192.168.0.255 NBNS 92 Name query NB MSCDC1.ZGHR.RU<00>2002 2344.964991000 192.168.0.10 192.168.0.255 NBNS 92 Name query NB MSCTMG<00>2003 2347.958454000 AsustekC_a8:15:63 Broadcast ARP 42 Who has 192.168.0.1? Tell 192.168.0.10И дальше по сути эти пакеты повторяются в хаотичной последовательности. Если фильтровать по ip платы, то от неё никаких пакетов не поступает, ping через командную строку тоже не работает.В связи с чем появился вопрос - т.к. компьютер рабочий, то вероятно в нем есть какие-то сетевые настройки предназначенные для защиты, т.к. MSCDC1.ZGHR.RU это название организации, помимо этого вне зависимости подключен ли ПК к интернету или напрямую к плате, он постоянно посылает вот эти Name query NB на последний ip в сети (т.е. первые три цифры могут меняться в зависимости от задаваемых настроек ххх.ххх.ххх но последняя всегда остается 255 на которую и идут все эти запросы).Т.е. может быть такое что именно из-за этой защиты плата не может быть увидена и пропингована ПК?
  4. воркбенч тоже не видит их upd: тут недопонимание - я использую stm32systemworkbench)
  5. скачал, но на работе нельзя ставить кейл (использую систем воркбенч), дома попробую запуститься)
  6. сейчас буду разбираться может быть проблема даже не в самом коде, потому что после прошивки и подключения интернет кабеля на разъеме rj45 начинает гореть зеленый светодиод, это по идеи означает что соединение по локальной сети установлено. Может что-то мешает конкретно добавить новое устройство в сеть?
  7. по конкретней бы( похоже что это файл настроек, которые в кубе находятся в LWIP->Key options, там не менял ничего в соответствии с теми уроками по которым собственно и делал этот проект
  8. Тогда все функции есть
  9. Я так понимаю настройку тактовой частоты выполняет функция SystemClock_Config, после неё вызывается MX_LWIP_Init вместе с функциями инициализации портов и таймера, а уже после идет цикл.
  10. STM32F407VG + LAN8720 ETH BOARD (Waveshare)

    Пытаюсь запустить эзернет на 407, используя готовый модуль от waveshare. В кубе добавляю ETH по RMII, в настройках ввожу МАК и выставляю PHY Address в 1 (нашел в даташите для этого модуля) и больше ничего не трогаю. Подключаю к этому LWIP, в нем отключаю DHCP и руками задаю маску и шлюз роутера + вписываю свободный ip. Включаю UDP и больше ничего не трогаю. Собираю проект, в переменные добавляю структуру gnetif, а в бесконечном цикле функции для постоянной работы стека (ethernetif_input и sys_check_timeouts). После прошивки в контроллер плата по указанному ip не пингуется, а роутер не находит новое устройство с указанным маком. Перепроверил все подключения на правильность, прослушал контакты - все в порядке. Уже отчаялся, так и не могу понять в чем заключается проблема...
  11. Попала в руки плата дискавери, к которой необходимо подключить ЖКИ 1602. Запитал его от 5В на плате, а вот с контрастом все оказалось сложнее, т.к. нету подстроечника. Поэтому решил регулировать контраст с помощью ШИМ.Выставил следующие настройки таймера: Код: htim2.Instance = TIM2; htim2.Init.Prescaler = 839; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 999; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 0; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; Ну и в качестве теста попробовал изменить длительность импульса от максимума до минимума: Код: for (i=0; i<=999; i++) { TIM2->CCR1=i; } for (i=999; i>0; i--) { TIM2->CCR1=i; } По итогу получил, что когда импульс находится в минимуме, то на экране появляются еле заметные квадраты в обеих строках, а по мере его увеличения они вообще пропадают. Находил примеры лишь демонстрации работы такой схемы, без конкретной реализации.Можно ли все таки использовать ШИМ с дискавери для регулировки контраста ЖКИ? И каким образом подобрать оптимальное значение?
  12. Пытаюсь запрограммировать 107rct6 через st-link utility. На одном компьютере подключение выполняется в нормальном режиме и заливка программы проходит успешно, на другом же коннект к таргету происходит только через ресет и при попытке залить программу выдается вот такая ошибка: 10:09:06 : Connection to device is lost: check power supply and debug connection. 10:09:06 : If the target is in low power mode, please enable "Debug in Low Power mode" option from Target->settings menu. В чем может быть проблема? Настройки в st-link utility:
  13. Стоит. Залез в сам шаблон, убрал перед строчками знак "=" и вроде все ожило. Единственный вопрос, а можно как-нибудь менять размер и положение надписей непосредственно на схеме? Просто наименования изделий разные, где-то больше где-то меньше, а поля у меня корректируются только в шаблоне.
  14. Вроде бы все делаю по инструкции Design->Document Options->Parameters и там меняю информацию, но чтобы я не писал у меня в самом документе в каждом поле остается #NAME? Я подумал что это из-за шрифтов, но даже вводя цифры и английские буквы все остается также.
  15. Применяя форматки наших ГОСТов почему-то не меняются параметры (фамилии, названия и т.д.), поэтому хотел экспортировать в dwg/dxf чтобы открыть в компасе где заполнение всей информации гораздо проще и удобней.
×
×
  • Создать...