Jump to content

    

kan35

Участник
  • Content Count

    535
  • Joined

  • Last visited

Everything posted by kan35


  1. Добрый день! Какое количество участников предполагается?
  2. Две STM32L476 с dfsdm входами и 4 встроенных аппаратных фильтра позволяет одна подключить 8 микрофонов. Еще еа spi штуки 4 и программно отфильтровать ииого штук 12 можно подключить. 2 контроллера - минимум 16 микрофонов без каких либо сложностей.
  3. Если без USB, то проще, согласен. Я подумал, что предполагается, что будет какой-нибудь брендованный под оператора свисток 3G, и потребуется делать хост с поддержкой составных устройств... у меня вот нет готового решения. на счет студента не знаю, студент студенту рознь
  4. Если взять камеры с jpeg и с сериальным выходом, https://www.google.ru/webhp?sourceid=chrome...q=camera+rs+232 3G убрать, оставить wifi,то в общем то все вполне решаемо за разумные деньги, с 3G ( и на сколько я понял USB2.0 нужен для него) количество работы удваивается Как я понял серверная часть имеется и отлажена, если ее нет, то это еще работа... механикой (креплением камер и т д) заниматься не хочу, если что - пишите в лс
  5. Это работает, большое спасибо! У меня очень мало свободной памяти программ в устройстве, поэтому перед каждой активностью я делаю AT*PSSTKI=1, потом делаю несколько раз AT*PSSTK="COMMAND REJECTED",1,16, потом AT*PSSTKI=0. Чтобы меня эти сообщения не доставали в рабочем режиме. Просто уже не хватает ресурсов их принимать всегда. Ну и в общем все ок. Но что я заметил ( у меня SIM900): на модуль приходят теперь SMS-подобные сообщения (через +CMTI: "SM",1), те ли это самые PSST? я их естественно читаю и .. списываются деньги - по 5 рублей. Я декодировал - там какие то анекдоты вроде как, в общем - "услуга". В телефоне они появляются с вопросом - принять или нет, а в модуле - принимаются сами вроде как, то есть буду или не буду я их читать - деньги уже списались. Я могу делать что то не так, конечно, поправьте меня кто сталкивался. Звонил в МТС - сказали, что я якобы даю согласие каждый раз при таком запросе. По AT логу ничего такого - просто SMS-ки валят! Никаких подписок на номере нет. То есть вопрос в том - в какой момент в модуле я даю согласие на принятие этой услуги?
  6. Контроллер фиксирован? в смысле, что можно ли другой?
  7. Не наблюдалось такого. Он, очевидно, пытается перекодировать в какой то локальный алфавит. AT+CMGF=0 на сколько я знаю влияет только на SMS. И еще, я отправляю AT+CUSD=1,"*102#" OK ... Приведу свои команды ему, сравните: ATCmdWRPR(5, PHYSICAL_PORT, "ATI\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGMI\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGMM\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGMR\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CGSN\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+IFC=0,0\r", 1000, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "ATV1\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+CRC=0\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, PHYSICAL_PORT, "AT+PSSLEEP=1,1\r", 200, 2, "OK\r\n", "ERROR\r\n"); // тут перевожу в режим CMUX и далее через него ATCmdWRPR(5, VIRTUAL_PORT_2, "AT+CLIP=1\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, VIRTUAL_PORT_2, "AT+CMGF=0\r", 200, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(5, VIRTUAL_PORT_2, "AT+CNMI=2,1,0,0,0\r", 500, 2, "OK\r\n", "ERROR\r\n"); ATCmdWRPR(30, VIRTUAL_PORT_2, "AT+CPMS=\"SM\",\"SM\",\"SM\"\r", 500, 2, "OK\r\n", "ERROR\r\n");
  8. Именно так. Если более 1с ничего не отправляю на модем (в своем случае контроллирую через таймер ртос), то да, отправляю '\r' и жду 10мс. Если даже модем находится не во сне, то ничего не случается. таким образом, максимум может потеряься 1% от пропускной способности, но по факту гораздо меньше. Кстати, пробовал по DTR, парвда на Quectel M72, но если используешь CMUX, то перед усыплением нужно ему давать определенные команды, иначе не уснет, с автозасыпанием однозначно все проще получилось.
  9. Не теряйте время, господа. Если если кому то хочется поработать на 500 а получить 50 + геморрой, то советую брать заказ))
  10. Там только комплектации на 100тр как минимум, работы тоже много: подбор этой само комплектации, включая разработку плат, программирование многопроцессорной системы или чего то на FPGA городить. Времени минимум пара месяцев без учета пожеланий по интерфейсу пользователя. За 30тр не найдете вы никого, даже 100 это оптимистично.
  11. Можно пойти пацанским путём: использовать PPP и внешний tcp стек, благо нынче и железа подходящего полно и софт есть например lwIP и STM32 и любой модем включая проводные))
  12. не сочтите за флуд, но использую ws6318 с автопереходом в сон без DTR, несколько каналов CMUX по одному их которых PPP, по другим двум AT команды и все очень стабильно работает, вам DTR принципиально?
  13. А вот такое сомнение позволте высказать: 3000 евро чистыми в месяц - это не мало случаем? Ну, допустим, сейчас это на 30% больше того, что в среднем предлагается в той же столице нашей Родины за тот же объем функций и знаний. Но и расходов будет больше значительно, одни только поездки домой встанут в копеечку, а потом придется возвращаться в Россию и отсюда вопрос - а удасться ли мне скопить достаточно денег для того, чтобы купить квартиру потом в ближнем Подмосковье (не будем размахивтаься на Москву, даже)? Так что, после 3-5 лет в Баварии вернуться в Россию станет невозможно не только морально, но и финансово-технически - будет трудно найти работу, опять же жилье и т д, все эти проблемы в встанут полный рост. В таком случае более реалистично полчатеся, как вы и предлагаете - оставаться там, покупать дом, машину и т д, но на 3кЕ это получится?? Может быть есть более веселые перспективы? Немцы за такие же деньги трудятся или это "особые" условия?
  14. STM32F4 DMA+SDIO

    действительно, в дма должен быть выставлен peripherial flow control, burst mode по 4 слова, а так же, что не маловажно, чтобы работал стандартрный HAL драйвер нужно включить прерывание так же от SDIO и установить прерывание от него выше, чем от dma. Вроде бы проблема решена. Хоть и не понятно, почему работает именно при таких настройках и только при таких.
  15. Какие проблемы запретить прерывания в задаче и сделать задержку, потом включить прерывания. Критические секции в rtos как правило это и делают.
  16. STM32F4 DMA+SDIO

    Посмотрел - ошибок нет во флагах. Скрин приложу чуть позже. Данные 512 байт как будто пролетают все.
  17. STM32F4 DMA+SDIO

    CIRC не влияет, я отключал А 32 битный захват данных и так включен (PSIZE=2, MSIZE = 2). В NDTR перед началом транзакции было 0x00000080, после - 4, то есть отправилось 124 слова, кстати я в буфере вижу, что так и есть, данные из карты идут! раньше напарывался та такой косяк, что данные были не выровнены на 4 байта, но тут все четко.
  18. STM32F4 DMA+SDIO

    Убрал вариант влияния FATfs. Оставил только эти функции: BSP_SD_Init(); char buffer[512]; BSP_SD_ReadBlocks((uint32_t *)buffer, 0, 512, 1); PFCTRL дейтсивтельно ни влияет. Просто NDTR начинается с 0xFFFF. И в данном случае так же не дочитывает 4 слова. По битам - проверяю, все то же самое, см. картинку. test
  19. STM32F4 DMA+SDIO

    У меня STM32F1 все заработало можно сказать с пол пинка - и чтение и запись. А на F4 - никак. Делаю одинаково - настраиваю проект через STM32CubeMX. Поллингом проверял - работает, хотя там другие беды. Ссылка на проект целиком ниже, я думаю запустится на любой плате с SD картой. https://yadi.sk/d/L5v5UHt0fxMdr
  20. STM32F4 DMA+SDIO

    Спасибо за ответ! У меня проблема при чтении пока, до записи банально не добрался. Попробовал прибавить 16 к 512 в DLEN, но ситуация не сильно поменялась, в счетчике стало оставаться 3 (вместо 4). при чем эти несчастные 16 остаются в счетчике DLEN после отработки, надо видимо еще что-то править
  21. STM32F4 DMA+SDIO

    Здравствуйте все! У кого нибудь получалось напустить SDIO на DMA в STM32? Особенно инстресует если получалось оживить его на драйвере в комплекте HAL от ST. У меня какой то странный глюк - в счетчие ДМА перед началом транзакции считывания 512 байт в счетчике числится 128 32 битных слов, а после - остается 4 слова (не дочитывает). В итоге прерывание не случается и все остальные беды. Какого лешего эти 4 слова остаются не вычитанными???
  22. libopencm3

    Запускаю свой первый проект на HAL через CubeMX, не соглашусь, что это говнокод. Косяков, конечно, еще довольно много, но в целом все это собирается более менее небольшими усилиями и с FreeRTOS состыкуется хорошо, прерывания с обработкой всех флагов - if else меня не сильно напугали, понятно, что за универсальность приходится платить. На SPL код был оптимальнее, на какую то долю % быстрее и на какие то единицы % копактнее, но делал я его на порядок дольше, а памяти и мегагерцев и так некуда девать.
  23. Выяснил, действительно, переполняется буфер SDIO, кривой драйвер, спасибо, ST. Перешел на драйвер с обменом по ДМА. Загрузка проца, прерывания, оптимизации кода - перестали влиять. Надо же! FreeRTOS был не при чем.
  24. Собственно здесь прикрепил проект для отладки STM3210E-EVAL от STM (STM32cube и IAR/KEIL). Косяк не зависит от проца,компилятра. https://yadi.sk/d/0fjiGdpJfvD3a Ниже я привожу код, который я сам писал, все остальное делает конфигуратор. В конфигураторе настроил обработку 4 каналов Ацп и прерывание от дма после каждого цикла. Как видите - прерывание пустое. Как только включаю оцифровку - FAT даже не монтируется, о чем мигает светодиод :-) ! если у кого есть возможность посмотрите на код, а еще лучше - попробуйте. /* USER CODE BEGIN 4 */ void LED(int state) { if (state) HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_SET); else HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_RESET); } void Fault(int n) { while (1) { for (int i = 0; i<n; i++) { LED(1); osDelay(50); LED(0); osDelay(150); } osDelay(1000); } } void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { /* NOTE : This function should not be modified. When the callback is needed, function HAL_ADC_ConvCpltCallback must be implemented in the user file. */ } /* USER CODE END 4 */ /* StartDefaultTask function */ void StartDefaultTask(void const * argument) { /* init code for FATFS */ MX_FATFS_Init(); /* USER CODE BEGIN 5 */ if (HAL_ADC_Start_DMA(&hadc1,\ (uint32_t *)aADCxConvertedValues,\ ADCCONVERTEDVALUES_BUFFER_SIZE\ ) != HAL_OK)\ Fault(4); /* Start Error */ if (f_mount(&fs, SD_Path, 1) != FR_OK ) Fault(1); /* Infinite loop */ for(;;) { FIL fp; unsigned int ar; char buff[10]; osDelay(1); if (f_open(&fp, "test.txt", FA_READ) != FR_OK) Fault(2); if (f_read(&fp, buff, 10, &ar) != FR_OK || ar != 10) Fault(3); if (f_close(&fp) != FR_OK) Fault(4); } /* USER CODE END 5 */ }
  25. Приложение крутится на STM32F405 и взаимодействует с vlsi1053b. Захватывает звук по SPI от Vlsi и сохраняет на SD карту (по SDIO). Еще один поток отрабатывает кнопки, итого - 2 потока. В начале все было хорошо, но как только добавил функцию оцифровки со встроенного ацп (с пустым прерыванием от ДМА по завершению цикла с частотой 22кгц) - появились сбои записи fatfs в основном потоке, например, вызываю запись 100 байтов, а функция сообщает, что записала 55. И после этого уже не пишет ничего. Пошел дальше - понизил оптимизацию кода до наименьшей - и ошибки начали валиться просто даже при открытии файлов на чтение. В итоге, убрал взаимодействие с Vlsi, убрал все возможные DMA и прерывания (кроме прерываний от rtos) и результат такой, что сбои случаются если просто запустить и сразу обратиться к карте, хотя если делать все по шагам - все прокатывает отлично. Опять таки - выкручиваю оптимизацию на скорость - и все начинает работать как бы стабильно. Настораживает, что приложение никогда не зависает, просто я фиксирую ошибки по тому или иному блоку (по SD карте или ошибки коммуникации с VlSI) , связанные, как мне видится с длительными блокированиями задач, хотя тот же fatfs работает синхронно по полингу и откуда взяться такому лагу - пока ума не приложу, в vlsi через, например минуту стабильной работы ни с того ни с сего внезапно переполняется буфер с аудиоданнми, вчера день потерял в поиске, что может быть????? Проект генерировал в STM32CubeMX 4.7, так же стараюсь использовать его обертки для rtos, вроде в них нет подвоха. настройки прерываний и их приоритеты корректны и за этим следит Cube, тут перепроверял. Глобалный стек - 0x4000, у основной задачи - столько же