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

a-styuf

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о a-styuf

  • Звание
    Частый гость
  1. Настройка тактирования STM32F373

    Спасибо. Попробую реализовать и отпишусь, как получу или не получу результат.
  2. Настройка тактирования STM32F373

    PLL тактирует от внешнего источника (на это указывает данный параметр - RCC_PLLSource_PREDIV1). Схема тактирования проинициализирована согласна reference manual: внешний источник подается через предделитель с коэффициентом 1 на PLL (в котором умножается на 6), затем выбирается как источник для системного клока. В то-то и проблема. Я сначала написал код. потом те же коэффициенты и клоки использовал в сube. В первом случае нет результата, во втором присутствует.
  3. Настройка тактирования STM32F373

    Добрый день! Разобравшись с правильным тактирование USB в мк данного типа, обнаружил, что не могу через функции стандартной библиотеки переферии rcc сконфигурировать частоты шин, и, соответственно, таймера. Что хочу: хочу, имея внешинй кварц на 8 МГц, получить 48 МГц на шине USB, 48 - Мгц SYSCLK, 24 МГц - APB1, 48 МГц - TIM2. Пишу код вот такой: CODE/* rcc init start */ RCC_DeInit(); //reset all rcc settings RCC_HSICmd(DISABLE); //hsi off RCC_HSEConfig(RCC_HSE_ON); //hse on RCC_PREDIV1Config(RCC_PREDIV1_Div1); //div1-hse pll_in RCC_PLLConfig(RCC_PLLSource_PREDIV1 ,RCC_PLLMul_6); // pll_clock=(8MHz/1)*6=48MHz RCC_PLLCmd(ENABLE); // pll enable RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //pll_clk is system clk source RCC_HCLKConfig(RCC_SYSCLK_Div2); //ahb_clk_devider RCC_PCLK1Config(RCC_HCLK_Div2); //apb1_clk_devider /* rcc init end */ Далее настраиваю таймер, на мегание в 1-у секунду. И он мигает с частотой около одной секунды. Экспериментально установлено, что он мигает с частотой, соответствующей частоте таймера в 72МГц, а не 48, как планировалось. 72 - это цифра для настроек по умолчанию, но ведь я их заменяю на новые! Попробовал все тоже самое проделать через CubeMX - и получилось с первого раза. Есть какой-то нюанс, видимо в ручной настройки тактирования. Если кто-то понимает в чем дело - помогите, пожалуйста.
  4. STM32F373 - проблемы с USB

    Спасибо всем за поддрежку моей решительности разобраться с usb! ) В итоге я все-таки решил проблему. Оказалось, что МК не дает подключить внутренний источник к шине USB, что соответствует написаному в даташите. Перепаяв внешний источник с 4,194304 Мгц на 8 МГц и проблема решилась. Параллельно я разобрался с устройством тактирования данного МК, так что если у кого-то возникнут вопросы - обращайтесь, я постараюсь помочь.
  5. STM32F373 - проблемы с USB

    Обновил информацию по мере осознания матчасти.
  6. STM32F373 - проблемы с USB

    Доброе время суток, форумчане! Разобравшись с прошлой проблемой, связанной с прошивкой МК (https://electronix.ru/forum/index.php?showtopic=139692), решил освоить ввод и вывод информации стандартным USB. Воспользовался стандартными библиотеками от STM. Поправил их под свой камень. Но вот беда - при подключении usb-устройство опредеяется с ошибкой (Device Descriptor Request Failed). Использую внешний источник тактового сигнала с частотой 4194398 Гц. Возможно проблема тут. Есть подозрения на тактирование USB-шины, но я нигде не могу найти, как правильно её настроить и откуда она берет клок. Разобрался я со схемой тактирования для данного МК. В итоге переписал инициализирование тактового сигнала: CODE/* rcc init start */ RCC_DeInit(); //reset all rcc settings RCC_HSEConfig(RCC_HSE_ON); //hse on RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE); //HSE like system clk source RCC_HSICmd(ENABLE); //HSI 8 MHz on RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_12); //pll work with (hsi/2)*12=48MHz RCC_PLLCmd(ENABLE); // pll enable /* rcc init end */ /* usb init start*/ Set_System(); Set_USBClock(); USB_Interrupts_Config(); USB_Init(); /* usb init end */ Так выглядит Set_USBClock(): CODEvoid Set_USBClock(void) { /* Select USBCLK source */ RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5); /* Enable the USB clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE); } Насоклько я понял, необходимо, что бы USB тактировалась частотой 48 МГц. Её я беру от внутренних 8 МГц, путем деления и умножения. В итоге на выходе PLL у меня стоит 48 МГц (теоритически). Их на прямую я пуская на USB модуль. Но по прежнему не работает. Если кто-то реализовывал USB на этом камне, поделитесь,пожалуста проектом на попробовать для keil. Удивительно, что в интернетах у людей получается это с наскока. Видимо я что-то не учел, раз отхватил пролем и тут. Если меня направите на нужную информацию или подскажите что сделать - огромное человеческое спасибо! Понимаю, что информация не полная, так что буду пополнять необходимую информацию по мере поступления вопросов.
  7. STM32F373 - проблемы с прошивкой

    Цитата(Aleksandr Baranov @ Jan 6 2017, 00:48) А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах? Проблема вот в чем: плата уже используется по целевому назначению, никто переразводить её не будет ради добавления шины ресет от МК до порта SWD. А с напаянным к ножке МК проводком плату ни заказчику не покажешь, не на испытания не поставишь. Во и приходится изгаляться(
  8. STM32F373 - проблемы с прошивкой

    Проблема решилась добавкой ресета к SWD шине. Как правильно говорил amiller, если перезагрузить МК, то порт А не успеет проинициализироваться и прошиться удастся. Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.
  9. STM32F373 - проблемы с прошивкой

    Попробовал сейчас снизить частоту для ST-LINK до 100 кГц. Не подключился. Перепробовал все комбинации режимов и ресетов - тоже самое. Не пробовал еще подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очень сложно - она никак не разведена на плате(
  10. STM32F373 - проблемы с прошивкой

    Код действительно не имеет смысла, о чем я и говорил в топике. Он был создан с единственной целью - прошить что-то в МК. опять же с другой стороны данный код не должен мешать последующей прошивке. Но проблема на лицо: первый раз проект залился в МК, после чего МК перестал определяться средствами прошивки и отладки. И понимаю ваш скепсис по поводу проблемы. Проблема не с кодом, который не претендует на что-то правильное и работающее. Проблема вот с чем: мог ли я програмно обрезать себе функцию отладки и прошивки через порт SW, и если да, то как это исправить.
  11. STM32F373 - проблемы с прошивкой

    Поправил! Спасибо, что указали на ошибку. Как я уже сказал, код я старый затер, но точно помню, что все порты были в соответствии.
  12. STM32F373 - проблемы с прошивкой

    Добрый день, товарищи! Возникла у меня такая проблема: появилась необходимость запрограммировать STM32F373 в наборе с разной периферией. В качестве программатара использую stm32l-discovery. В качестве среды - keil 5. Проект собрал, в качестве тестовой програмки решил помигать светодиодом на плате (PA1). Получился вот такой код: CODE#include "stm32f37x.h" int i=0; int main(void) { GPIO_InitTypeDef GPIO_IS; /* GPIOD Periph clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); GPIO_IS.GPIO_Pin = GPIO_Pin_All; GPIO_IS.GPIO_Mode = GPIO_Mode_OUT; GPIO_IS.GPIO_Speed = GPIO_Speed_2MHz; GPIO_IS.GPIO_OType = GPIO_OType_PP; GPIO_IS.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_IS); while(1) { GPIO_Write(GPIOA, 0xFF); while(i<100000) i++; i=0; GPIO_Write(GPIOA, 0xFF); while(i<100000) i++; i=0; } } #include "stm32f37x.h" Сразу оговорюсь, не осознал прблему и затер старый код, так что возможно использовался порт B. Сам код эффекта не имеет (ибо при переходе по внутренним while-ам состояние не меняется). Далее, я попытался прошиться из под keil через SW. Плата увиделась, прошивка прошла. А тут и началась беда. больше плата не распознавалась, понять почему, а тем более исправить, я не смог. Попробовал стандартуную утилиту к ST-LINK - эффект тот-же: скорее всего исключил проблему с keil. Попробовал вернуть программатар на МК discovery - работает: вроде как исключил проблемы с программатором. Не пробовал: подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очент=ь сложно - она никак не разведена на плате( В голове созрел такой вариант: раз ноги SWDIO и SWCLK сопряжены с шиной порта A, я снял с них функцию отладочных входов/выходов. Больше вариантов я не придумал, разве что МК погорел (чур меня). Надеюсь на вашу мудрость и понимание вороса .
  13. Есть, думаю, что к следующей итерации я постараюсь её и использовать. А кто-то знает - они уже продаются или нет в России?
  14. Цитата(COMA @ Oct 21 2013, 11:35) Потом можно заменить плиску на SOC - плис+АРМ от Альтера. На эту тему было обсуждение несколькими постами выше)
  15. Цитата(Golikov A. @ Oct 3 2013, 20:17) А слабо вместо первой ПЛИС поставить АРМ? Или у вас исторически сложилось не использовать АРМы? под чисто процессорные задачи хорошо ставить чисто процессоры)... Эх эх, было бы все так просто. Есть множество не зависимых от меня фактров, по которым я залажу именно в такую конфигурацию железа. Например консервативность взглядов непосредственного начальства. Насчет чисто процессорных задач - так потому и осваиваем ниос, а не пишем сервер на HDL-е.