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

Скептик

Members
  • Постов

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

  • Посещение

Весь контент Скептик

  1. Заметил, что двухдиапазонный Wi-Fi усилитель EDUP нормально работает только при нагрузке на антенном порту согласованной не только в диапазоне рабочих частот (2.3-2.7 ГГц, 5.1-6 ГГц), а гораздо шире (100 МГц - 6 ГГЦ) . Т.е. с обычной антенной или с открытым входом усилитель самовозбуждается. Было выяснено, что проблема в отсутствии согласующего резистора на входе Приемного тракта диапазона 2.4 ГГц. Резистор был впаян, возбуд устранён. Ссылка на товар: https://sl.aliexpress.ru/p?key=Ifx1O1X Ссылка на проведённые мероприятия: https://disk.yandex.ru/d/6B7B1ccn_PNYXA
  2. А вдруг нет? Не очень хочется перепаивать его снова.
  3. Пришлось перепаять главный микроконтроллер в полётном контроллере pixhawk px4-pro v 4.3.9, а в нем нет бутлодера. Нашёл репозиторий на гитхабе, но там надо собирать в зависимости от версии платы. На официальном сайте такой платы нет, с такой версией платы другие. Кто может подсказать какая версия у меня реально? У меня такой: https://docs.px4.io/main/en/flight_controller/mro_pixhawk.html исходники бутлоадера в этом репозитарии https://github.com/PX4/PX4-Bootloader
  4. Карманный спектроанализатор из китая SA6 весьма неплох, но работает 50/50. Провел посильный реверс инженеринг данного девайса с целью разобраться в причинах возможных неисправностей. Прошивка закрытая, взлому "с кандачка" не поддаётся. Всё остальное сделал как смог. Надеюсь, будет кому-нибудь полезно. Не судите строго рукожопа, не владеющего современными средами разработки и визуализации. Возможны ошибки. Ссылка на папку с моими наработками: https://disk.yandex.ru/d/Dlg76J3yIPsYzg
  5. Спасибо. Пробовал, не помогло. да и в других проектах CPOL и CPHA такие. Полезу в дебагер.
  6. Скептик

    Почему SPI занят ?

    Приветствую! Пытаюсь общаться с датчиком MPU9250 по SPI. Использую HAL. При обращении к SPI функции всё время возвращают статус HAL_BUSY. Смущает серый цвет Baub Rate. Подскажите, где копать.
  7. Подскажите, как инициализировать SPI-интерфейс у MEMS-датчика MPU-9250. В документации сказано, что по умолчанию он находится под I2C-интерфейсом и что бы переключиться, надо изменить регистр. А та часть главы, на которую приводится ссылка, отсутствует. Note: To prevent switching into I2C mode when using SPI, the I2C interface should be disabled by setting the I2C_IF_DIS configuration bit. Setting this bit should be performed immediately after waiting for the time specified by the “Start-Up Time for Register Read/Write” in Section 6.3. For further information regarding the I2C_IF_DIS bit, please refer to the MPU-9250 Register Map and Register Descriptions document.
  8. А вот код на 407vgt в вашем стиле, который запускает 20 2-х канальных преобразований ADC с использованием DMA и разрешает прерывание по завершении процесса преобразования. Обработчик прерывания и настройка вектора прерывания отсутствует. По документации на 407 и 411 даже адреса регистров по-моему одинаковые. Надеюсь чем-то помог. ADC_DMA.c
  9. Проверил на своём stm32f407vgt, заработало. Нашёл 3 ошибки в предыдущем файле ADC_DMA.txt. Так что вот с исправленными ошибками: ADC_DMA.txt
  10. Нашёл ошибку! При открытии файла указатель почему-то автоматически перемещается в конец. Видимо, такая фича FatFs. Как только попробовал записать в файл, запись произощла в конец. Ворспользовался функцией: f_lseek(&logFile, 0); Всё заработало. Даже стыдно, что до этого сразу не догадался. В старых библиотеках FatFs даже порядок аргументов разнится: в старой: f_write(&fil_obj,var,strlen(var),&ByteWrite); в новой: f_read(&logFile, &readBuff[0], 8, &bytesRead);
  11. Старенький, конечно. У меня по-новее, но все равно спасибо, буду ковырять дальше (глубже).
  12. Мне кажется, алгоритм должен быть примерно такой: ADC_DMA.txt
  13. Отсюда и примерствовал.
  14. Очень плохо читаемый код. Непонятно, где настройки ADC. Сначала запускается DMA.
  15. Скептик

    Работа с FatFs

    Осваиваю работу с SD картой 8Mb отформатированную в FAT32, 4096 байт/кластер, с одним файлом LOG.TXT. Использовал CubeIDE. Подключил SD карту по интерфейсу SDIO 1 bit. Проверил работу SDIO чтением секторов через функции HAL, нашёл файл LOG.TXT и его содержимое. Подключил библиотеку FatFs. Использовал функции: f_mount(&fs, "", 1); f_open(&logFile, "LOG.TXT", FA_OPEN_APPEND | FA_WRITE | FA_READ); f_read(&logFile, &readBuff[0], 4, &bytesRead); f_close(&logFile); Все функции возвращают уведомление об успешном выполнении (значение 00). Проблема: bytesRead ==0 (0 прочитанных байт), буффер readBuff[] пуст.
  16. Новая проблема. Не совсем ассемблер, но тоже с ADC. Запускал ADC в режиме непрерывной конвертации для считывания 16-и значений в память с использованием DMA. Код генерировал в среде STM32CUBEide с использованием библиотеки HAL. Не работает. Считывается только первое значение и заполняет первый элемент массива. В трассировщике заметил, что неправильно выставляются регистры DMA. Выставил руками, заработало. Не пойму в чём ошибка, в самой библиотеке HAL, или в моём неправильном использовании её функций. Выдержку кода прилагаю. ADC_DMA.txt
  17. Справился! Оказалось, что отладчиком его проверить нельзя, так как там всё происходит аппаратно и сразу. При установке времени выборки 3 такта программа не успевает считать результат и OVR устанавливается в 1. Увеличил время выборки до 15 цикло, заработало. Не нашёл в RM0090 что при установки OVR работа ADC останавливается. Спасибо, что помогли!
  18. Проверил в отладчике. Он сразу устанавливается вместе с флагами STRT и EOC. После чтения из ADC_DR флаг EOC как положено, сбрасывается. Преобразование останавливается. Запуск ADC писал на C , устанавливая флаги командами типа *adc_cr2 |= 1<<30 /* SWSTART=1, (при EOCS,CONT,ADON=1) */, что бы не пропустить следующего преобразования.
  19. Отладчик и прошивальщик там очень соблазнительные.
  20. Прочитал. Как я понял, режим Continuous Conversion Mode исользуется только совместно с DMA. Отдельно невозможно?
  21. Ну вы и расписались, господа. А дело было так. Я изучаю STM32 на примере F407VGT и одновременно практикуюсь на типовых примерах в среде STM32CUBEIDE. Один из типовых примеров работы с ADC не получился. Узнав, что в среде редко, но встречаются ошибки, решил проверить на ассемблере. Код выложил без надстроек для компактности, там, где ошибка. Сделал элементарную ошибку по невнимательности, глаза замылились и обнаружил её лишь на следующий день. Однако следующую проблему решить не смог, поэтому снова прошу помощи у искушённых корифеев. В настройках ADC есть параметр преобразования - односигнальное/непрерывное, управляемое флагом ADC_CONT. В многочисленных примерах приведен запуск ADC без прерывания и DMA в непрерывном режиме. У меня не получилось. CUBE-код осуществляет только одно преобразование, asm-код 2 преобразования. Потом последовательность заканчивается. Одна из ссылок на пример: http://mypractic.ru/urok-27-rabota-s-acp-cherez-registry-cmsis-osnovnye-rezhimy-preobrazovaniya.html подпункт "Один канал, непрерывное преобразование." Руководствовался RM0090. Если поможете, буду рад.
  22. Прошу прощения, не понял пока почему, но заработало...
  23. Пробую работать с ADC на ассемблере. Не получается. Программа виснет на 65-ой строчке. Не пойму, где ошибка. main_ADC.asm
  24. CUBE32IDE как то шьёт. Первый раз надо перетыкать, а потом не надо.
×
×
  • Создать...