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

vn821202

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

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

  • Посещение

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


  1. Требуется разработать демо проект реализующий USB composite device (CDC+MSC) с использованием новых версий CubeMX и HAL на микроконтроллере stm32f407xx и stm32F746 (32F746GDISCOVERY). Требования к композитному устройству: MSC должен работать с uSD картой через 4-проводный интерфейс SDIO. CDC должен реализовывать два виртуальных ком. порта на ПК. Также должна быть предусмотрена возможность конфигурирования для работы с OTG_FS и OTG_HS. Возможно использование в проекте FreeRTOS или Azure RTOS USBX. Проект должен быть собран под Keil MDK. В случае использование в проекте ОС необходимо использовать оберки cmsis_os2. Проверка работы OTG_HS будет производится на 32F746GDISCOVERY.
  2. Спасибо, разобрался после чтения официальной документации. Первоначально я думал, что вызов xStreamBufferReceive заблокируется до приема 64 байт, но чтение и разблокировка происходит при любом количестве байт от 1 до 64.
  3. printf("TickCount1 = %d\n", osKernelGetTickCount()); //debug out j-link (допустим TickCount1 = 100) numBytes = xStreamBufferReceive( rxUartStream, //Stream Handle (Stream Size = 256 byte, trigger Level = 64) rxUartData, //Recive Buffer 64, //await count data 7 ); printf("TickCount2 = %d\n", osKernelGetTickCount()); //debug out j-link (тут я ожидаю увидеть TickCount1 = 107 или numBytes = 64)) //на самом деле получаю TickCount1 = TickCount2 и numBytes = 1
  4. Всем привет! Пересылаю информацию из UART ISR в USB CDC для этого использую StreamBuffer размером 256 байт и установленным триггером на 64 байта. При скорости UART 115200 бод (8 бит данных, 2 стоп бита) пересылка 64 байт требует примерно 6,1 с. При отладке обнаружил, что вызов xStreamBufferReceive не приводит к блокировке не по количеству байт, не по тайм-ауту. В чем может быть дело? В результате код работает корректно только если использовать osDelay(7). Фрагмент кода: /* Stream from UART Recive ISR */ StreamBufferHandle_t rxUartStream = NULL; rxUartStream = xStreamBufferCreate(256, 64); /* USER CODE BEGIN Header_fnc_Uart_Usb */ /** * @brief Function implementing the task_Uart_Usb thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_fnc_Uart_Usb */ void fnc_Uart_Usb(void *argument) { /* USER CODE BEGIN fnc_Uart_Usb */ uint8_t numBytes; uint8_t rxUartAwait = 64; uint8_t rxUartData[rxUartAwait]; for(;;) { printf("TickCount1 = %d\n", osKernelGetTickCount()); //debug out j-link numBytes = xStreamBufferReceive( rxUartStream, //Stream Handle (Stream Size = 256 byte, trigger Level = 64) rxUartData, //Recive Buffer rxUartAwait, //await count data 7 //> (1/115200)*(8+3)*sizeof(rxUartData) = 6.1 ms ); printf("TickCount2 = %d\n", osKernelGetTickCount()); //debug out j-link if (numBytes) { uint8_t result, busy = 0, error = 0; do { result = CDC_Transmit_FS(rxUartData, numBytes); if (USBD_BUSY == result) { if(++busy > 3) break; } if (USBD_FAIL == result) { if(++error > 3) break; } } while(result != USBD_OK); if (result == USBD_OK) { #ifdef DEBUG printf("to_USB ->, numBytes = %d\n", numBytes); //debug out j-link #endif osDelay(7); } else { #ifdef DEBUG printf("Error: busy - %d, error - %d\n", busy, error); //debug out j-link #endif osDelay(1); } } } /* USER CODE END fnc_Uart_Usb */ }
  5. Спасибо за ответ. Опыт использования UCB CDC из CubeMX у меня есть, только ранее в своих приложениях (не очень сложных) я использовал автомат состояний. Читая статьи на разных сайтах про взаимоотношения CubeMX, USB и FreeRTOS у меня сложилось впечатление, что реализация стека USB от CubeMX плохо стыкуется с FreeRTOS, т.к. стек USB работает через прерывания. Поэтому и решил поднять этот вопрос и узнать мнение спецов.
  6. Может подскажите какую-нибудь статью, чтобы понять как это лучше сделать? Ну или если знаете подходящий репозиторий на GitHub, дайте ссылку, плиз...
  7. Хотелось бы понять. Можно-ли создать в CubeMX рабочий проект, например с USB CDC, реализующий эхо через VCP и UART без допиливания библиотек CubeMX?
  8. Здравствуйте! Интересует возможность адаптации примеров из CubeMX для STM32 по работе с USB (CDC, CDC+MSD) под FreeRtos. Есть ли такая возможность в принципе?
  9. Здравствуйте! Ищу официальную (оригинальную) документацию на микросхему CH378 на английском языке. Хотелось бы узнать у участников форума отзывы о применении данной микросхемы в своих проектах, если такие есть. Интересует скорость записи на SD карту по SPI, скорость чтения SD карты по USB. Прикрепил перевод с китайского, выполненный Google. CH378 is a file management control chip —EN.pdf
  10. Здравствуйте! Ищу официальную (оригинальную) документацию на микросхему CH378 на английском языке. Хотелось бы узнать у участников форума отзывы о применении данной микросхемы в своих проектах, если такие есть. Интересует скорость записи на SD карту по SPI, скорость чтения SD карты по USB. Прикрепил перевод с китайского, выполненный Google. CH378 is a file management control chip —EN.pdf
  11. Аналоговые каналы, с усилителей-нормализаторов датчиков, >= 9 каналов. Цифровые каналы: RS-485 / UART - 1 канал. Часть датчиков может иметь цифровой интерфейс (I2C, spi), тогда цифровых каналов должно быть больше. Цель исключительно узконишевая и не массовая. Обязательно наличие контроля над исходными кодами/схемотехникой.
  12. Здравствуйте! Требуется разработать регистратор аналоговых и цифровых каналов а также программное обеспечение для ПК для конфигурирования и проверки работоспособности регистратора. Регистратор должен производить регистрацию на SD карту c файловой системой FAT. Каждой завершенной сессии регистрации должен соответствовать соответствующий файл. При подключении регистратора к ПК по интерфейсу USB регистратор должен предоставлять доступ к SD карте как к съемному USB диску для считывания и просмотра зарегистрированных файлов. Регистратор должен быть реализован на МК STM32 с интерфейсом SDIO доступа к SD карте. Предпочтительно использование программного стека Keil+CubeMX+HAL+FatFs+FreeRTOS.
  13. Здравствуйте! Для существующей разработки 2010 года ищу замену модуля DIGI XBP24BZ7SIT-004 – 802.15.4 Zigbee® Transceiver Module 2.4GHz (снят с производства) на аналогичный от DIGI. Не могу определиться с моделью для замены. Может кто подскажет?
  14. Если количество выводов микросхемы небольшое (SO14, sot23-5, tssop20 и т.п.), то предпочитаю использовать УГО микрохемы, которое совпадает с фактическим расположением выводов на корпусе. Так в последующем удобнее "ковыряться" в плате со схемой в руках.
  15. Нашел способ развязки датчика по постоянному току в известной книге. Насколько эта схема жизнеспособна? Кто-нибудь применял ее на практике?
  16. Стандартная схема усилителя заряда с двухполярным питанием по вашей логике тоже не должна работать. Однако все работает. Отличие у приведённой схемы только в том, что отрицательный терминал датчика в установившемся режиме находится под напряжением 2.5 В, которое поступает на датчик через резистор 10 ГОм. Впрочем, вышеприведённая схема прекрасно работает в случае, когда положительный терминал датчика подключается к шине 2,5 В.
  17. Противоречий нет. Корпус датчика (выход+ пъезокварцевой пластины) может быть подключен только к шине 0В. В схеме есть напряжение питания +7В и напряжение ИОН +2.5В. Схема усилителя использует напряжение ИОН в качестве напряжения смещения (для задания уровня на выходе усилителя в установившемся режиме).
  18. Здравствуйте уважаемые специалисты! Пытаюсь спроектировать усилитель заряда для пьезокварцевого датчика. Питание схемы только униполярное (7В) и из-за ограничений по габаритам и количеству элементов сформировать двухполярное питание невозможно. В схеме есть источник опорного напряжения +2.5 В. Обычно в подобных схемах (при духполярном питании) один из выводов датчика подключается к общей шине (0В). В моей схеме в качестве общей шины выступает напряжение 2.5В. Один вывод датчика (отрицательный заряд) подключен на вход усилителя заряда, второй вывод датчика является его корпусом и к нему подключается напряжение питания 0В. Получается, что к чувствительному элементу датчика будет приложено напряжение 2.5 В. Как это может повлиять на работу датчика и на работу схемы усилителя? Нужен совет.
  19. Здравствуйте уважаемые специалисты! Может кто сталкивался с контроллером солнечных батарей EPSolar LS0512 или подобным. Собственно у меня вопрос в следующем. В описании устройства указано, что номинальный ток заряда / разряда аккумулятора - 5 А. Можно но ли с эти устройством использовать аккумулятор, номинальный ток заряда которого 2,7 А? Можно ли как то при помощи навесных элементов совместить этот контроллер с аккумулятором типа GSL9-12 9Ah? Может кто-нибудь посоветовать готовый встраиваемый контроллер заряда-разряда свинцовой АКБ (нужно чтобы в одном устройстве совмещались функции контроллера разряда до минимального рабочего напряжения АКБ с защитой от КЗ и контроллера заряда, желательно с возможностью настройки зарядного тока или режимов заряда). Заранее спасибо. Контроллер заряда АКБ от солнечных батарей EpSolar-LS0512.pdf GSL9-12 9Ah (-40...+60'C).pdf
  20. Спасибо за комментарий. Мне в этой схеме еще не понятно назначение элементов левее VT1. Зачем нужна схема на VT2 и SCR1, DTR1, FET4 с соответствующими элементами в обвязке? Зачем транзистор FET3 управляется по линии 4 и через транзистор FET6? Насколько правильно дано описание на сайте http://impulsite.ru/viewtopic.php?p=7883#p7883 " Вообще говоря, на результат измерения может влиять собственное внутреннее сопротивление мультиметра. Кроме того, если обратиться к схеме, то видно, что через R14, R13 и стабилитрон VD1 протекает ток, недостаточный для нормального уровня стабилизации. Поэтому в режиме ожидания напряжение на VD1 будет низкое. Лишь в динамике, непосредственно перед поджигом лампы, запирается FET3 открывается DTR1 и по цепи R35, R11, SCR1 начинает протекать ток, падение напряжения на R35 открывает VT2 и резистором R12 поддерживается ток не более 64 мА (кратковременно) через VD1, что обеспечивает номинальное напряжение стабилизации VD1. В этот момент на затворе VT1 должно наблюдаться примерно 28-30 В. И наблюдать можно осциллографом. Или, полагая, что детали стабилизатора напряжения и драйвера исправны, то можно подбирать стабилитрон под IGBT-транзистор. Или 30 В для CT40KM, RJP4301, RJP63F3A и др.. Или 17-18 В - для транзисторов IRG4BC40, HGT1S20N60C3, TIG056BF, RJP5001... и подобных. Кроме напряжения стабилизации еще важен минимальный/номинальный ток стабилизации стабилитрона. Он должен быть не больше 2-5 мА. "
  21. Здравствуйте уважаемые специалисты ! Хочу понять работу высоковольтной части схемы фотовспышки Sigma EF-500DG (схема взята на сайте impulsite.ru). Если у кого есть опыт по этой теме, прошу объяснить как можно подробнее. P.S. Может кто посоветует, где можно найти схему на фотовспышку EF - 610 DG ?
  22. Здравствуйте! Хотелось бы разобраться с возможностью просмотра во время отладки переменных в окне Logic Analyzer. Просмотрел документацию Keil, Segger, но Logic Analyzer для введенных переменных ничего не отображает. Не могу разобраться что делаю не так. Использую отладку MCBSTM32 с камнем stm32f103rc, есть фирменные отладчики ULINK2 и J-LINK Ultra+. Может кто-нибудь поделиться готовым настроенным проектом, чтобы эта функция работала? Заранее Спасибо.
  23. Keil 5.25 +STM32F476 NUCLEO

    Спасибо, доступ к регистрам появился частично. Судя по документу RM0351диапазон адресов шин APB1 - APB2 - AHB1 - AHB2 от 0x40000000 до 0x50060BFF но при указании этого диапазона в INI файле KEIL выдаёт ошибку ***error 129: MapMem - map size truncated to 128MB.
  24. Keil 5.25 +STM32F476 NUCLEO

    Здравствуйте форумчане! Пытаюсь запустить под симулятором стандартный проект NUCLEO-L476RG\Examples_LL\ADC, при запуске симуляции сразу возникает ошибка: Load "STM32L476RG_NUCLEO\\STM32L476RG_NUCLEO.axf" WS 1, `aADCxConvertedData,0x0A WS 1, `aADCxConvertedData_Voltage_mVolt,0x0A *** error 65: access violation at 0x40021000 : no 'read' permission Симулятор останавливается на строке Set MSION bit void SystemInit(void) { /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif /* Reset the RCC clock configuration to the default reset state ------------*/ /* Set MSION bit */ RCC->CR |= RCC_CR_MSION; Все настройки проекта по умолчанию. Что нужно поправить, чтобы погонять проект под симулятором?
  25. Все работает. Кроме extern необходимо использовать & 6.3.7 Methods of importing linker-defined symbols in C and C++ You can import linker-defined symbols into your C or C++ source code. They are external symbols and you must take the address of them. The only case where the & operator is not required is when the array declaration is used, for example extern char symbol_name[];. http://www.keil.com/support/man/docs/armli...62065956104.htm
×
×
  • Создать...