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

pil123456789

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

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

  • Посещение

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


  1. работает так же как и по отдельности реализовали эту схему. делали USB_FULLSPEED -device, USB_HSPEED - host. Работают они полностью независимо.
  2. Протокол придумываем с нуля, ничего существующего нет. На мой взгляд при выборе протоколов стоит стремится выбирать из существующего, а не плодить сущности. Если мы связываем устройство каким либо образом с миром ПК, то подход избавляет от необходимости писать ответную часть протокола. >> Сделайте свой TCP сервер с нужным протоколом. Вопрос протокола и стоит >> Возьмите готовый сервер (MQTT например) и пробросьте порт. Спасибо. Это интересно, буду читать. >>Используйте http/https протокол с VPS за 20 руб в месяц. Это вопрос сервера. Свой или "облачный". Пока не стоит. >>Используйте открытый сервер для IoT (штук 20 в гугле найдутся на первой странице) А встречали такие, где не только красивая обертка, но и файло-передача логов и обновление прошивки?
  3. Дело происходит на cortex-m. Так что без скриптов. Но здорово, что велосипед не мой. Интересует какие еще варианты возможны. Например, у колеги возникла идея проброса отдельного порта ввода вывода(в примерах tty) на сервере на порт tcp. Socat в linux вроди такое умеет, может и ssl. И общаются они через организованный псевдо последовательный порт. (Tty over tcp).
  4. Здравствуйте! Есть вопрос, может кто сталкивался с подобной задачкой. Есть устройство на Cortex M3 c GPRS. Нужно организовать доступ к нему из интернета со следующим функционалом: 1. Обновление прошивки. 2. Постоянное получение текстовых логов работы. 3. Конфигурировать устройство. 4. Минимально управлять. Короткий список команд. Естественно хочется что то стандартное повозможности, минимум велосипедов. Единственное, что смог сам придумать, это: 1. Есть сервер FTPS со статическим IP 2. Устройство конектиться к нему и происходит двухсторонний обмен. Например есть папки IN и OUT. В одну складываем логи, из другой берем команды. FTPS, так как уже есть реализации и FTP и SSL для cortex. Доплачивать за static IP для устройства не хочется. Сталкивались с другими вариантами решения обмена по GPRS на кнтроллерах?
  5. Про SPI понятно, как вариант. Второе - интерфейс внешний памяти, может некую двухстороннюю память между ними поставить? Или сделать FPGA - внешней памятью для контроллера? Да контроллер stm32f217, 7.5Мбод UART работает. CPU - stm32f217 120МГц - пока так. Хотелось бы распаралелить максимально, чтобы посылки в UARTы уходили одновременно. А можно объяснить в чем проблема поподробнее? Тоже думал об этом. Но опыта подобного нет. Программирую контроллеры, немного знаком с FPGA простенькими. Боюсь не потяну. + Спасибо всем за участие.
  6. Спасибо за ответ. Все таки чем связать с контроллером? Там потом UART -> rs485. Расстояние 0,5-1м + помехи.
  7. Скорость обусловлена задачей, как и количество абонентов. С количеством логических элементов будет понятно при моделировании на компе Интересен вопрос как соединить CPU <-> FPGA. отпадают всякие uart, spi. Вот думаю через общую память как то?
  8. Нужна ваша экспертная помощь новичку в ПЛИС. Нужно выбрать ПЛИС (или несколько маленьких ПЛИС) Задача: 1. Обмен с контроллером, который получает данные по Ethernet. Я пока вижу это через какую то двухстороннюю память, но вопрос открыт. 2. Выдача информации на 17 Uart со скоростями 5-7Мбод 3. Получение информации с 17 uart, скорость не принципиальна. 4. Uart'ы fullduplex, т.е. 17 uart на вход и 17 на выход. 5. FPGA не сложно упаковывет посылки для uart (подсчет простеньких контрольных сумм) Вопросы: 1. Выбор FPGA 2. как принято осуществлять обмен FPGA<->CPU. Объем данных на выход ~50 байт CPU->FPGA (с высокой скоростью) на вход ~100-200 байт FPGZ->CPU (скорость не критична) Заранее спасибо всем сочуствующим.
  9. 100Mb Ethernet

    Источник это пока теория, но точно не моя разработка, соответственно Ethernet стандартен. Rs485 5-10Мбод звездой - это просто 16 стандартных RS485 (точка-точка) Непонятно, что такое джиттер? А получится эмитировать 16 UART'ов? (SPI не так хорош, но можно и 16 SPI).
  10. 100Mb Ethernet

    Ух ты, сколько ответили. Спасибо! 1. Нестандартный Ethernet не пойдет, т.к. этим выходом наша подсистема заканчивается. Странно в документации будет это описывать. Все делается как ОКР, не хватит 100Мбит - вижу тока вариант 1Гб сеть ну или что то последовательное типа LVDS. На данный момент 100Мбит Ethernet, до второй ревизии как минимум. 2. Дальше внутряння сеть RS485 со скоростями 5-10Мбод. Причем не стандартная шина, а звезда (в устройстве так надежнее/удобнее). Оконечниками будут STM32F205 (мне оно ближе). 3. На роль центрального узла Ethernet -> 16*RS485 думаю попробовать тот же stm32 + CPLD MAX V, на макетке попробуем успеет ли stm выплевывать. (может посоветуете через что их лучше соединить?). Не хватит stm, буду думать. Мощные FPGA для меня туманная тема. 4. Передача двунаправленная, но посылки RS485 -> Ethernet редкие. Думаю нужно ли закладывать фул дуплекс или хватит 1/2 дуплекс RS485.
  11. Вопрос изменился. Оконечники стало ясно что можно сделать на контроллерах используя имеющиеся наработки. Теперь вопрос как сделать корневой узел. Задачи: 1. до 100Мб поток Ethernet (UDP) 2. 16 последовательных каналов со скоростью до 3-5 Мбод каждый В какую сторону смотреть?
  12. 100Mb Ethernet

    Спасибо всем за ответы. Варианты значит такие: 1. FPGA c загруженым ядром+ там же формирование внешних последовательных интерфейсов 2. CPU с Ethernet 100 + (маленькая FPGA)/CPLD А какого уровня FPGA смотреть/пробовать? (уже не та ветка форума похоже)
  13. 100Mb Ethernet

    100Мб - это поток(вероятно UDP пакеты), реально будет меньше ~30-50Мбод, но запас это хорошо. Суть девайса парсить этот поток и выплевывать информацию в 16 последовательных интерфейсов ~3-5Мбод. По ощущениям stm32 f107 не успеет. Может стоит смотреть в сторону Cortex M4? Интересует ваш опыт работы с загруженным Ethernet 100. Непонятно зачем конкретизировать физ. уровень, я пока выбираю контроллер.
  14. 100Mb Ethernet

    Понадобилось прогонять через систему 100Мб, видимо UDP пакетами. От контроллера нужно лишь наличие мощи, чтоб переваривать 100Мб и отправлять в некий другой интерфейс. Чем иp ARM минимально можно обойтись? Работал тока с младшими stm32 и аналогичными LPC, они явно не тянут.
  15. Предполагается построение следующей системы: Сеть типа "звезда"(далее корневой узел и оконечники(16 штук)). Внутри нее требуется постоянная передача ~20-30Мбод. Корневой узел имеет внешний выход Ethernet 100, он осуществляет только транзакции Ethernet<->внутренняя сеть, может незначительные вычисления. Узлы имеют N ADC + параллельные шины управления. Максимальное расстояние в сети 1 метр. Пока видится реализация оконечника как CPLD(MAX V) + ADC, а корневого узла как МК(с поддержкой Ethernet 100) + CPLD ( симметричность внутренней сети). Внутренняя сеть LVDS. Жизнеспособна ли концепция? Как ведет себя LVDS при ВЧ помехах? Использовал ли кто нибудь LVDS для связи многих точек?
  16. keil RL-ARM FlashFS

    Задача: прикрутить spi флешку к контроллеру STM32f105, хотя контроллер в данном случае не важен. При этом устройство должнобыть для компа как флешка. Использую RL_ARM без RTX. Получается на FlashFS работать с флешкой и USB_MSC пашет, но поотдельности. У Keil, есть статейка Using FlashFS with USB Devices И там все отлично работает, т.к., RL_ARM заточен на сопряжение FlashFS + USB_MSC + Memory Card drive. А вот с SPI Flash Drive не дружен, т.к. нет функций для работы FAT. Подскажите как ему подпихнуть эти функции? Или SPI Flash притвориться SPI Memory Card и переписать ее функции? Или есть чего попроще? Нашел аналогичный вопрос keil forum1, Keil forum2. Может, то чего я хочу в принципе нереализуемо?
  17. Bluetooth телефонов

    Здравствуйте. Есть желание отправлять с телефона по bluetooth простые команды на перефирию, типм вкл/выкл. А вопрос следующий, есть ли такой профиль во всех телефонах или хотя б в большинстве. В идеале хотелось бы упралять вовсе без дополнительного ПО на мобиле, т.к. на сколько я понимаю добраться из явы до блютус тоже не стандарт, а писать под разные операционки напряжно. Это реализуемо?
  18. Вообщем использовал самый простой вариант, т.е. Virt COM = 1 in bulk + 1 out bulk. Причем InterruptIn не убрал из описания, а просто посадил на несуществующую конечную точку. Все пашет ОК. Всем спасибо, хоть дискусия ушла к vid|pid=)
  19. vid pid не нулевые, про это речь была. Проблема только при массовом выпуске.
  20. а можно дескриптор? Пока запасной вариант, попробую.
  21. Собственно на LPC1343 реализованно composite device. Все получается, но! нехватает конечных точек. Вычитал, что можно как то подцепиться к 0й endpoint. Как? Подскажите где копать, пожалуйста. Дальше вопрос, сможет ли в таком случае соответствующий интерфейс стать стандартным (kbd, mouse) ? Конкретезирую. У меня composite: mouse+kbd+Virtual COM. mouse 1 endpoint interrupt in kbd 1 endpoint interrupt in Virt COM 3: 1 in interrupt + 1 in bulk + 1 out bulk тем временем в контроллере: 0 0 Control Out 64 No 0 1 Control In 64 No 1 2 Interrupt/Bulk Out 64 No 1 3 Interrupt/Bulk In 64 No 2 4 Interrupt/Bulk Out 64 No 2 5 Interrupt/Bulk In 64 No 3 6 Interrupt/Bulk Out 64 Yes 3 7 Interrupt/Bulk In 64 Yes 4 8 Isochronous Out 512 Yes 4 9 Isochronous In 512 Yes Проблема в том что 4ая endpoint Isochronous и её никуда не подсунишь. А влезть как то нужно. КАК? Увидел что вроди как CDC можно и через Isochronous делать. Пока ковыряю в эту сторону
  22. Спасибо за подсказки, совладал с этой библиотекой. В голове уперто сидела идея, что все должно быть доступно прям из препроцессора, ан нет. Забыл отписаться по результатам, мало ли кому понадобится. Примеры от ST рабочии, но нужно заточить под свой кварц, если он у вас оригинальный. Например чуть подправить ф-цию SetSysClockTo в system_stm32f10x.c под себя. И заставить юзать именно наш вариант. static void SetSysClockToHSE8(void) { __IO uint32_t StartUpCounter = 0, HSEStatus = 0; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/ /* Enable HSE */ RCC->CR |= ((uint32_t)RCC_CR_HSEON); /* Wait till HSE is ready and if Time out is reached exit */ do { HSEStatus = RCC->CR & RCC_CR_HSERDY; StartUpCounter++; } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT)); if ((RCC->CR & RCC_CR_HSERDY) != RESET) { HSEStatus = (uint32_t)0x01; } else { HSEStatus = (uint32_t)0x00; } if (HSEStatus == (uint32_t)0x01) { /* Enable Prefetch Buffer */ FLASH->ACR |= FLASH_ACR_PRFTBE; /* Flash 2 wait state */ FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY); FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; /* HCLK = SYSCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; /* PCLK2 = HCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; /* PCLK1 = HCLK */ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL | RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC); /* PLL configuration: PLLCLK = PREDIV1 * 9 = 72 MHz */ RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL); RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLMULL9); /* Enable PLL */ RCC->CR |= RCC_CR_PLLON; /* Wait till PLL is ready */ while((RCC->CR & RCC_CR_PLLRDY) == 0) { } /* Select PLL as system clock source */ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW)); RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL; /* Wait till PLL is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) { } } else { /* If HSE fails to start-up, the application will have wrong clock configuration. User can add here some code to deal with this error */ } }
  23. Спасибо, щас попробую. Вот последняя фраза "Ну и дальше" - это к чему?=)
  24. Спасибо за ответ. За неимением альтернатив (не нашел по крайней мере), уже ковыряюсь в этой библиотеке. И есть проблема. У меня на макетке кварц 8Мгц + 32Мгц под юсб. Если залить пример из библиотеки возникает ошибка нумерации по юсб. пример пользую под STM3210C-EVAL, т.е. как раз под stm32f105. на ките к которому пример кварц 25мгц. Пытаюсь править под свой кварц: 1. препроцессору добавил, теперь он такой STM32F10X_CL,USE_STDPERIPH_DRIVER, USE_STM3210C_EVAL, HSE_VALUE=8000000 2. system_stm32f10x.c теперь рабочий дефайн: (чтоб работал параметр препроцессора ) #define SYSCLK_FREQ_HSE HSE_VALUE Больше ума не приложу что пробовать, буду благодарен за идеи.
×
×
  • Создать...