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

Flexz

Свой
  • Постов

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

  • Посещение

Весь контент Flexz


  1. т.е. второй Sleep тоже глобальный, без классов и неймспейсов? И оно компилится нормально? Значит unsigned long и unsigned int у вас разные типы. Попробуйте явно приводить параметр к нужному типу, т.е. как то так - Sleep((unsigned long)1); Вообще стоит сделать обертку (например, вынести winbase.h в отдельный cpp-файл, функции которого будут просто вызывать соответствующие API-шные функции из winbase), что бы исключить случайное использование одной функции вместо другой. Иначе такой конфликт рано или поздно приведет к неочевидному багу.
  2. Нет, оператор "::" без имени слева - это обращение к глобальному идентификатору. Если слева будет имя класса, то обращение к статическому полю класса.
  3. ЕМНИП Актель бесплатно предоставляет ядро 51 проца, а так же периферийные модули, плюс вменяемый графический редактор, что бы все это собрать в кучу. Но бортовой ПЗУ-шки тут нет, разве что на регистрах ее сделать (их можно инициализировать в заданное значение), но это имхо извращение уже, да и много не сделать. Если вам нужен именно RT, то по информации от представителя Актель - Smartfusion2 в перспективе будет переведен в эту категорию.
  4. I2C - не USB, тут адреса не выдают и не регистрируют. Если даже вы найдете список микросхем с их адресами - нет никакой гарантии, что завтра не выйдет микросхема с тем же адресом, что и у вас. Обычно на случай пересечения на микросхемах делают 1-2 пина, которые задают младшие биты адреса. Либо делают несколько исполнений, отличающихся только адресом.
  5. Помимо Элкуса есть еще НТЦ Модуль. Есть готовые решения, есть отдельные контроллеры.
  6. DCMI лучший вариант, полностью аппаратный прием. На голом GPIO возможен такой вариант: читаем порт с данными и сигналом синхронизации с максимально-возможной частотой(ЕМИП с использованием DMA в режиме M2M - такта 4 на сэмпл уходит), после разбираем сигнал, выделяя синхронизацию вручную. Если не жалко еще таймер отдать под сие дело - сигнал синхронизации заводим на Input capture, от Input Capure толкаем DMA который читает порт.
  7. Бит COMDE есть в описаниях регистров таймера TIM1. Вообще если бит не описан, то скорее всего его нет на самом деле, а в сводную таблицу он попал копи-пастом.
  8. stm32f205 usart1 и usb

    А его и не надо инициализировать для USB отдельно, он сам себе шибко умный. Если посмотреть таблицу альтернативных функций пинов, то PA9 для USB вообще не значится. Удостоверьтесь что в USB контроллере выключен Vbus sensing. Если используете стандартную библиотеку, то в usb_conf.h нужно закомментировать строчку #define VBUS_SENSING_ENABLED
  9. Настройте таймер с периодом 1 в режиме Slave Gated Mode, прерывание от внешнего девайса заведите на External Trigger Input этого таймера. Прерывание от переполнения таймера и будет тем что вам требуется. Как-то так.
  10. А просто ST Link utility ставить не пробовали? Там драйвер в комплекте. ЕМНИП было что-то подобное на одном из компов - отдельно драйвер поставить не вышло, только всё вместе. Возможно дело в 64-битной винде.
  11. Не предусмотрена. Этот пример - банальный переходник USB-UART. Указанная функция вызывается из прерывания по RXNE и берет данные из UART, что бы передавать ей свои данные ее нужно слегка переписать.
  12. В файле usbd_cdc_vcp.c функция VCP_DataTx определена как static. Поэтому ее нельзя использовать в другом модуле, уберите static в объявлении и тогда можно будет подцепить ее в другом модуле.
  13. GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_2); GPIO_Pin_6 это 1<<6, а GPIO_PinSource6 - просто 6.
  14. Не вижу собственно включения выхода, в библиотеке это функция TIM_CCxCmd
  15. STM32F4: ADC Interleaved + DMA

    А если в обычном режиме - с одним АЦП, нормально работает? Еще один момент, который к делу скорее всего не относится, но все же стоит включить для DMA FIFO и пакетную передачу в память. Мне довелось как-то нарваться на редкое переполнение в АЦП, работающем с максимальной скоростью.
  16. USB-USB на STM32F1 не получиться. У него только один интерфейс USB, и тот только Device. Если брать stm-ку, то начиная с F2 - у этих два USB, в т.ч. хост и с примерами все в порядке. Непосредственно по задаче, первое что приходит в голову - это тансляция запросов с хоста на девайс (т.е. с компа на флешку) на уровне, например, scsi команд, плюс встраивание своих запросов. И оно даже наверное будет работать, и даже почти всегда. Проблема возникнет в тот момент, когда и комп и сам девайс захотят записать что-то в один и тот же сектор, в таблице фат, например. Вообще задача видится довольно нетривиальной, имхо решением будет отказаться от файловой системы на флешке и работать с ней с компа как с RAW диском. Вспомните телефоны, при подключении к компу в режиме диска (для доступа к SD-шке) сам телефон теряет к ней доступ, так что даже для "взрослых" девайсов это не так просто.
  17. Тот пациент ответ давно получил. Теперь я - пациент, и вот уже который день топаю ногами и требуют подробный диагноз :) В кейловской плате PHY тактируется с внешнего генератора 50МГц - никакого выбора нет. На STшной плате действительно можно выбрать MCO как источник, но там подается с MCO только 25MHz для MII. Для RMII написано буквально следующее: Мне действительно очень интересно узнать, как можно удовлетворить потребность PHY в 50 мегагерцах не задействуя ни доп. генератор, ни вторую PLL.
  18. А что именно на принимающей стороне? какая ОС, com-порт настоящий или перходник? PS проверка TC - в данном случае излишество, достаточно TXE проверять.
  19. А почему нет? Типовая схема включения DP-шки - 50МГц генератор заведенный как на вход RMII_REF_CLK проца, так и на тактовый вход DP-шки. RMII интерфейс процессора работает в своем частотном домене (этом самом 50МГц), в нем же работает RMII интерфейс PHY. Связь с частотынм доменом AHB (на который накладывается только одно ограничение - не менее 25МГц) и проца в целом - забота MAC, где-то внутри него должны быть FIFO для пересечения разных частотных доменов, аналогично внутри PHY. При таком раскладе нет разницы, берутся эти 50МГц с генератора или с ножки процессора. С процессора 50МГц можно сформировать как я писал выше - используя для HSE кврац кратный 1МГц и задействовав вторую PLL. Видимо можно как-то еще, оттолкнувшись именно от 25МГц кварца, как пишет vlad_new, но детали от не раскрывает :)
  20. Потому что для DP83848 нужно 50МГц на вход. Вы что-то знаете, чего не знаю я, но говорить явно нехотите. Можете все-таки раскроете тайну?
  21. Да, мне тоже не понятно, что вы хотите сказать :) Ткните меня носом в функцию удвоения HSE для вывода на MCO, в упор не вижу такого. Поделить можно, это да. Или вы предлагаете использовать вторую PLL, ту что I2S? Так для нее тоже 25МГц не нужно, т.к. формула генератора частоты имеет вид HSE / PLL_M * PLLI2S_N / PLLI2S_Q, где при HSE=25, имеем M=25,N=200,Q=4. Т.е. для получения 50МГц на MCO нужен любой кратный 1МГц кварц. Дальше ТС писал про подачу 50МГц с таймера. Надеюсь не нужно объяснять вам разницу между МСО и таймером? Попробуйте сгенерить 48МГц для USB и при этом получить с таймера 50МГц. И, как сказали выше, errata пишет нам для F2 для F4, правда, этого уже нет. Вот только, насколько я понял, вопрос был совсем в другом. На PHY идут 50МГц, взять их можно с внешнего генератора, и эти же 50МГц нужно подать на вход REF_CLK процессора. ТСа смутило то, что процессор вроде как должен работать внутри на этих 50МГц, а это не так, согласованием частот занимается контроллер Ethernet, процессор может работать на любой удобной частоте.
  22. При чем тут кварц в 25МГц? В вашем примере входная частота первым делом делится на 25 (параметр PLL_M), дальше все частоты считаются из 1МГц * 240.
  23. Получать на вход REF_CLK, правильно, но где написано, что ядро и внутренние шины процессора должны работать от этой частоты? Даташит оговаривает только ограничение на минимальную частоту AHB - 25МГц И как вы собираетесь при частоте таймера, скажем 168 МГц получить ровные 50МГц на выходе?
  24. Снова войдет в этот обработчик, если, конечно, не возникло более приоритетных прерываний.
×
×
  • Создать...