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

0men

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные 0men


  1. On 7/11/2022 at 2:55 PM, dm_mur said:

    Скажите, от чего у вас тактируется GD32? При тактировании от PLL внутренний регулятор GD32 нужно переключать в High driver mode (биты 16, 17 регистра PMU_CTL). У STM этого нет. У меня GD32 виснет в цикле ожидания бита HDRF, причем судя по отображаемым значениям регистра PMU_CTL в отладчике,  бит PMU_CTL_HDEN остается нулем после записи туда 1. Тактирование PMU включено. При этом если не заводить PLL и оставить тактирование на частоте кварца, проц заводится и ножками дрыгает.

    от кварца 25 МГц который идет на PLL, дальше с плл делителя /P уже на системный клок. Управление тактированием вообще не менялось, осталось от стм, сделано через HAL. Дерево клоков GD здесь не отличается от стм

     

      RCC_ClkInitTypeDef RCC_ClkInitStruct;
      RCC_OscInitTypeDef RCC_OscInitStruct;

      /* Enable Power Control clock */
      __PWR_CLK_ENABLE();
     
      /* The voltage scaling allows optimizing the power consumption when the device is
         clocked below the maximum system frequency, to update the voltage scaling value
         regarding system frequency refer to product datasheet.  */
      __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
     
      /* Enable HSE Oscillator and activate PLL with HSE as source */

      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
      RCC_OscInitStruct.HSEState = RCC_HSE_ON;
      RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
      RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
      RCC_OscInitStruct.PLL.PLLM = 25;
      RCC_OscInitStruct.PLL.PLLN = 336;
      RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
      RCC_OscInitStruct.PLL.PLLQ = 7;


      if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
      {
        Error_Handler();
      }

     
      /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
         clocks dividers */
      RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
      RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
      RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
      RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  
      RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;  
      if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
      {
        Error_Handler();
      }

     

    On 7/11/2022 at 2:55 PM, dm_mur said:

    Скажите, от чего у вас тактируется GD32? При тактировании от PLL внутренний регулятор GD32 нужно переключать в High driver mode (биты 16, 17 регистра PMU_CTL). У STM этого нет. У меня GD32 виснет в цикле ожидания бита HDRF, причем судя по отображаемым значениям регистра PMU_CTL в отладчике,  бит PMU_CTL_HDEN остается нулем после записи туда 1. Тактирование PMU включено. При этом если не заводить PLL и оставить тактирование на частоте кварца, проц заводится и ножками дрыгает.

     

    я кажется понял в чем у вас проблема. У вас тактирование системного клока идет от кварца напрямую, в этом случае нужно устанавливать эти биты, у меня же кварц идет на плл, а потом уже на системный клок, в этом случае биты High driver mode не нужны

     

    image.thumb.png.b85341ebfd79701818ec1b62ef19ed0d.png

  2. On 6/3/2022 at 5:40 AM, khlenar said:

    Здравствуйте все. 

    есть Китайская термопара. 2 вывода. С экрана отвода нет. Когда касаешься руками экрана, изменяется значение. Вопрос. Как быть с экраном? 

    имхо, тут нужно с измерительной частью разбираться.

  3. On 3/14/2016 at 11:37 PM, zltigo said:

    Ну и Li-Ion батарея не проканает в принципе, ибо при закорачивании ее отдельной банки БЕЗ каких либо внешних цепей защиты о ограничения тока, она наверняка превысит допустимую температуру практически для любой из категорий взрывоопасных смесей.

     

    Некропост, конечно ) но не могу удержаться. Вы абсолютно не правы, скажу вам как производить Ех оборудования, который использует LiIon банки формата 18650. Есть модели определенных производителей, которые без проблем проходят испытания на кз

  4. On 7/4/2022 at 10:42 PM, n_kurochkin said:

    У них на сайте есть библиотеки  GD32F3x0 Firmware Library ну и на другие процессоры. Ктонибудь пробовал на сколько они работоспособны. Конечно CUBE-MX это удобно но и так попрет, как то же раньше писали на них. 

     

    GD32F405 спокойно заработал с прошивкой от стм32ф405 без изменений. Юсб девайс, уарты, таймеры, спи, тви, дма

  5. On 6/29/2022 at 9:54 PM, barzebuba said:

    Я так понимаю Вы с MassStorage работаете на FS? У меня HS. На FS висит DFU и да, пришлось тоже включать vbus_sensing_enable, чтобы он заработал. А на ноге USB_OTG_FS_VBUS у меня висит UART, там альтернативная функция.

    Похоже, проблема vbus_sensing_enable есть у всех гдшников, на 405ом мне тоже пришлось включать, хотя на стм все и без вбуса прекрасно работает.

  6. тут все просто

     

    And ST Different ,GD Of Flash There is the concept of partition , front 256K,CPU Execute instruction zero wait , call code District , Outside this scope is called dataZ District . There is no difference between the two in erasure operation , But there is a big difference in read operation time ,code The area code takes zero and waits ,data There is a large delay in executing code in the area , Code execution is more efficient than code The area is one order of magnitude slower , therefore data Areas usually do not recommend running code that requires high real-time performance , To solve this problem , The method of decentralized loading can be used , For example, put the initialization code , Picture code, etc data District .

     

    https://chowdera.com/2022/04/202204091601119439.html

     

    Кстати, в даташитах на старшие процы (450-470) уже явно в мануале сделано разделение флэша на Code Area и Data Area. Код из кода арии выполняется без задержек, код из дата с огромными задержками. Это происходит потому, что в реальности код из кодаарии выполняется из рамы, а код из даты из флэша, который по спи подключен

  7. 1 hour ago, lomy said:

    рмальный.

    Может кто-то сталкивался с такой проблемой и может объяснить, почему так происходит?

    Нет никакой проблемы. Вы считали 4 байта, снова проинитили ДМА вызвав HAL_UART_Receive_DMA(…), указатель начала области памяти куда дма кладет данные снова встал на начало массива куда и занеслись лишние байты из посылки

  8. Вот именно. Какое сопротивление пинцета резистора не позволит опустить сброс до нужного уровня?

     

    не очень понял необходимость этой информации. Думаю, сопротивление полевика десятые ома

  9. Посмотрите картинку Simplified diagram of the reset circuit в RM.

    Зависит от сопротивления резистора, которым подтягиваете к питанию. И сопротивления того ПТ внутри МК, которым опускается сброс.

    И собаки подключены туда же. во всяком случае, в STM32.

     

    слово замкнул, означает замкнул пинцетом )

  10. сталкивался ли кто-то с таким поведением?

    на Силабсовском форуме вроде бы нашел упоминание про NVIC_SystemReset(), который не работает в случае подтяжки сброса в 1

    про ватчдог упоминаний не видел, но может быть одинаковый механизм

     

    поэкспериментировать с железкой не могу - нету под рукой, есть недоступный прибор (только виртуально по JTAG или штатными UART-ами имею доступ через удаленный комп) и т.д.

    там пожалели диод/транзистор, чтобы сделать опен-дрейн сброс и собственно сброс STM32 происходит только когда "управляющий проц" сбрасывает NRST в 0

     

    проверил - замкнул NRST на питание, NVIC_SystemReset() не сбрасывает. stm32f4

  11. Коллеги, может быть кто-нибудь сталкивался: STM32F439ZI + USB OTG_HS в full-speed режиме. Стандартная библиотека STM32 USB Device Library V2.4.2 + stm32f4xx_ll_usb.

    Простейший код

    1. инит клоков

    2. инит юсб

    3. бесконечный цикл

     

    Если внутри цикла ничего нет, то все ок, енумерация проходит, драйвер встает, стмовский порт в списке устройств виден. Как только внутрь цикл делаешь так:

     

    for(;;)

    HAL_PWR_EnterSLEEPMode( PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI );

     

    енумерация не начинается, исследование показало, что не устанавливаются некоторые флаги

     

    При этом, на другой плате с процом STM32F439VG юсб включен на OTG_FS и такой проблемы нет...

     

    Пока выкрутился анализом прерывания Handle Connection event (по подключению Vbus) в котором устанавливаю флаг запрета входа в в слип режим, но хочется понять причину..

     

    Дополнение: попробовал на STM32L4R7VI - все работает без костылей (OTG_FS)

  12. В своё время смотрел на это эхо в качестве примера. Слишком там замудрёно, особенно для новичка. Я бы советовал посмотреть на веб сервер, там есть пара полезных идей. Правда, код перегружен вот этой условной компиляцией, но куда деваться?

     

    Да, там основная сложность в том, что данные для отправки задаются в виде связного списка и содержатся внутри спец структуры. Но, по идее, там все красиво сделано - отправили первый сегмент, залудили колл-бек функцию по приходу аска, смотрим есть ли еще данные, если есть отправляем и снова колбек, если нет, то освобождаем всю память и закрываем соединение. Но я у себя все переписал, не люблю связные списки ))

  13. Нужно просто переписать эхоклиент из примера под свою задачу. Для этого нужно просто разобраться с основными функциями lwip и принципом его работы. Возьмите для начала в качестве сервера терминалку hercules

  14. Хм, настолько серьезно? Я имею в виду, что это нельзя или серьезно обкладывать бумагой нужно?

     

    Это страна-импортер или страна-экспортер обычно ограничивает? или обе две?

     

    Но в любом случае спасибо за напоминание, совсем забыл про эту сторону вопроса. Посмотрю-поспрашиваю.

     

    элитан возит без проблем

  15. У меня однажды на воинствующем предприятии (но в гражданском проекте) по результатам работы потребовали, как у них принято- полную бумажную распечатку сорцов. И никто не воспринял вопли "молодого специалиста" про то, что это Альтера и схемный ввод. Раз программируемое-значит программу давай, а не схему какую-то. Пришлось вывести на печать весь листинг Квартуса (полностью забитая 1K10, там очень "много букф" было), и все были довольны, сдали макулатуру в архив :). Ну а для реальной работы, естественно, оставили нужный набор файлов и распечаток, но в локальном "неофициальном" архиве отдела.

     

    схемный ввод в наше время?? грустьпечаль

  16. Это которая на STM32F429I-DISCOVERY стоит? :rolleyes:

    В одном из проектов использовал пару шт. MT48LC32M16A2P-75 (шина 32 бит). По разводке вроде совпадает с вашей. Естественно кроме ноги A12, которая у Вас должна быть 'NC' и по уму - закинута на всяк случай на шину МК. Внутренняя её организация похожая. Проблем с ними не было.

    Также на EVB SK-MLPC1788 работал с MT48LC16M16A2TG. Организация и разводка тоже аналогичные. Тоже всё ок было.

     

    MT48LC32M16A2P-75 имеет шину данных 16 бит

  17. При чем тут метрология, идет разговор о надежности применения CubeMX и HAL в своих изделиях и методов испытания надежности ПО.

     

    про надежность смотрите ГОСТ Р МЭК 61508 и гост р мэк 61511. У импортных он упоминается как SIL

  18. Там ничего необычного нет, простые вещи которые соблюдают нормальные программисты. Вы еще про стандарты оформления ПО вспомните.

     

    Видимо, вы не совсем в теме, бывает. Рекомендую еще взглянуть на ГОСТ Р МЭК 61508-6-2012, но он к метрологии не имеет отношения.

×
×
  • Создать...