Jump to content

    

js_slider

Участник
  • Content Count

    29
  • Joined

  • Last visited

Everything posted by js_slider


  1. Да, я устанавливал этот драйвер, после распаковки там простой inf файл + цифровая подпись + Exe-шник установки данного inf файла, который в свою очередь использует usbser.sys.
  2. Так этот драйвер от ST есть нечто иное как inf файл, который и использует стандартный usbser.sys. Или я не прав?
  3. Да, использую стандартный драйвер usbser.sys, слышал что он глючный... но свой написать нет опыта... подскажите есть какое решение? Может есть безглючный аналог драйвера? Поделитесь пожалуйста.
  4. Здравствуйте. Использую пример VCP от ST. Работаю под WinXP с виртуальным COM портом через API как с файлом. Циклически посылаю данные (короткие пакеты от 8 до 16 байт) в железку функцией - WriteFile. Данные уходят моментально, но время от времени возникает непонятный TimeOut на передачу (WriteFile) порой до 250ms. При аналогичной работе, но с реальным COM портом, таких задержек нет. В чем может быть проблема? Кто сталкивался?
  5. Просто я в некоторых схемах отошел от EEPROM, и использую эмуляцию EEPROM из Flash контроллера. Это вполне себя оправдывает...
  6. Это отличный вариант, но только если в схеме используется EEPROM, а вот если ее нет и не надо.. то покупать их, затем впаивать в некое считывающее MAC устройство... как то извращенно
  7. Понятно... А скажите как обстоят дела с MAC для Ethernet... Есть легальные варианты не платить буржуям из IEEE? Кто имеет реальный опыт выпуска устройств?
  8. Правильно ли я понял что установка драйвера возможна при VID=PID=0 только для HID и MassStorage устройств, а для CDC никак?
  9. Суть проблемы, сделал виртуальный COM порт на STM32F405. Для USB устройств требуется покупать VID PID за дорого... Есть энтузиасты которые ставят VID=PID=0, и драйвер у них ставится по классу устройства, а не по VID PID, но там не виртуальный COM порт был. И поговаривают что это вполне легально... Собственно вопрос Есть ли способ установить драйвер usbser.sys для виртуального COM порта не по VID PID?
  10. Вобщем проблему решил... Пришлось переписать местами драйвер у ST. Как оказалось использовать их кольцевой буфер APP_Rx_Buffer, как у них в примере: for( i = 0; i < Len; i++ ) { //push data into transfer buffer APP_Rx_Buffer[APP_Rx_ptr_in] = Buf[i]; //increase pointer value APP_Rx_ptr_in++; // To avoid buffer overflow if(APP_Rx_ptr_in == APP_RX_DATA_SIZE) { APP_Rx_ptr_in = 0; } } крайне не желательно. Оно так глючит. Описание решения проблемы нашел тут: https://my.st.com/public/STe2ecommunities/m...currentviews=96 Теперь передаю за раз 80килобайт, все уходит без потерь Скорость обмена получил порядка 445килобайт. можно и выше, если дописывать буфер по CallBack функции окончания передачи предыдущего пакета..., но меня и так устраивает...
  11. Поделитесь пожалуйста кодом как вы определяете завершение передачи? Имею аналогичную проблему... удалось ли вам ее решить?
  12. У коллег ветка заглохла.. и без результатно в отношении потери данных... Неужели Virtual COM Port не способен стабильно работать... работают же как то FTDI и им подобные...
  13. Сбои заключаются в том что посланный массив данных от МК к PC, не доходит весь, а частично где то теряется. Как решается данная задача потери? неужели это не лечится на VCP? По поводу DMA.. USB у меня работает в режиме FullSpeed, как я понял в этом режиме нет поддержки DMA у ST32F4, поправте если ошибаюсь. Люди добрые покажите примером как это можно сделать... как понять что буфер APP_Rx_Buffer[] освободился на N-ое кол-во байт...
  14. Опишите пожалуйста, если можно с примером, как реализованно заполнение буфера? Заполняете 64байта, потом ждете какой-то таймаут или прерывание по окончании передачи? затем вновь 64 байта...? Отключаете ли прерывание USB на время заполнения буфера в цикле? Не происходят ли переодические сбои при передачи больших массивов данных?
  15. Заметил еще проблему... Если массив данных более 64 байт, то переодически происходят сбои в передаче данных... Кто сталкивался? Подскажите что не так делаю?
  16. Камень STM32F405 Задача требуется передавать большой массив данных по виртуальному COM порту. За основу взял пример от ST, COM порт определился, попробывал передавать данные вот так: for( i = 0; i < Len; i++ ) { //push data into transfer buffer APP_Rx_Buffer[APP_Rx_ptr_in] = Buf[i]; //increase pointer value APP_Rx_ptr_in++; // To avoid buffer overflow if(APP_Rx_ptr_in == APP_RX_DATA_SIZE) { APP_Rx_ptr_in = 0; } } данные до размера APP_RX_DATA_SIZE=2048 передает, а вот как сделать чтоб мог передавать свыше APP_RX_DATA_SIZE? Нужно что то вроде прерывания по окончанию передачи и определять значение сколько можно еще дописать в APP_Rx_Buffer... Вариант увеличения APP_RX_DATA_SIZE не вариант, т.к. свободной памяти мало. Пожалуйста направьте в нужном направлении.
  17. Благодарю всех откликнувшихся. Проблема решена. Действительно стек падал из-за вызовов tcp_write из прерывания.
  18. Из него родимого... из прерывания... а можете пояснить почему это отличный способ завалить программу??? какая разница из обработчика прерывания вызывать или еще откуда в программе... если так и так не callback?
  19. Здравствуйте. Сделал на STM32F4 TCP/IP сервер c использованием lwip стека без OS. Все работает замечательно по типу запрос-ответ. Ответ процедурой tcp_write реализован как и требуется из callback. Но вот возникла необходимость посылать данные не по запросу, а по событию - по приходу строба на ножку. Делал ссылку на pcb во время коннекта клиента, и отправлял данные вне callback... struct tcp_pcb *Globalpcb; .... Globalpcb=pcb; .... if(Globalpcb != NULL) { COUNT_TX=tcp_sndbuf(Globalpcb); if(COUNT_TX > Len) { err = tcp_write(Globalpcb, Data, Len, 1); tcp_output(Globalpcb); } } все работает..., но не долго - периодически стек падает. Вопрос как гармотно использовать tcp_write в данном случае чтобы не порушить стек? Кто сталкивался?
  20. Безусловно эта задача для того чтобы поизучать FPGA и ее возможности, озы программирования и тд и тп. Как я понял из высказывания, проблем с доступом к данной памяти нет, отлично! Собственно еще ламерский вопрос, поскольку с языками программирования для плис еще не знаком, то подскажите какой язык (доступный из пакета Xilinx ISE 10) является более гибким/функциональным и удобным для работы. На изучение какого языка стоит потратить драгоценное время.
  21. Прежде никогда с ПЛИС не работал, поэтому представления не имею о возможных реализуемых на них задачах. В наличии имею платку на базе FPGA - XC3S50AN от Xilinx. Судя по шиту у FPGA есть RAM - 54Kbit (блочная) и 11Kbit (распределенная), доступна ли эта память для использования ее в качестве массива данных, поступающих например по реализованному параллельному порту от внешнего устройства? Например возьмем образно простенькую задачу: Есть устройство в режиме Master с параллельным интерфейсом 8bit- шина данных и clk - строб, по которому данные выставляются на шине. Необходимо эти приходящие с порта данные по стробу запоминать в кольцевом буфере FPGA размером 2000 байт. (данные идут постоянно с частотой ~6Mhz) И по запросу, передавать этот буфер (2000 байт) по UART реализованному в этой-же FPGA. Возможно ли реализовать данную задау используя данную FPGA без использования внешней памяти? Что означает блочная и распределенная память? В чем их отличия и предназначения?
  22. Господа это всё здорово, а можно более конструктивно... Как это выглядет с точки зрения математики? Меня интересуют формулы, алгоритмы...
  23. Я не совсем корректно объяснил проблему (только недавно разобрался)... Всего в сигнале 2-е гармоники, одна фиксированная гармоника (паразитная) равна 50 Hz, и одна полезная гармоника(частоту которой требуется определять), варьирует она от (0-100 Гц). Причём амплитуда "паразитной" частоты - const, а амплитуда полезной гармоники варьирует прямопропорционально своей частоте, т.е. чем выше частота тем выше амплитуда. Достаточно чувствительности диапазона определения полезной частоты от 10Гц до 100Гц. Есть у кого какие соображения?
  24. Я не совсем корректно объяснил проблему (только недавно разобрался)... Всего в сигнале 2-е гармоники, одна фиксированная гармоника (паразитная) равна 50 Hz, и одна полезная гармоника(частоту которой требуется определять), варьирует она от (0-100 Гц). Причём амплитуда "паразитной" частоты - const, а амплитуда полезной гармоники варьирует прямопропорционально своей частоте, т.е. чем выше частота тем выше амплитуда. Достаточно чувствительности диапазона определения полезной частоты от 10Гц до 100Гц. Есть у кого какие соображения?
  25. Вариант с датчиком скорости не подходит. Проблема ещё заключается и в том что с уменьшением частоты вращения уменьшается и амплитуда генерируемого сигнала, что создаёт дополнительные проблемы в определении частоты.