Jump to content

Скептик

Members
  • Posts

    316
  • Joined

  • Last visited

Информация

  • Город
    Воронеж

Электроника

  • Стаж в электронике
    Более 20 лет
  • Сфера радиоэлектроники
    Радиосвязь

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Скептик's Achievements

Contributor

Contributor (5/14)

  • Dedicated
  • Week One Done
  • One Month Later
  • One Year In
  • Ten Year In

Recent Badges

5

Reputation

  1. Спасибо. Пробовал, не помогло. да и в других проектах CPOL и CPHA такие. Полезу в дебагер.
  2. Приветствую! Пытаюсь общаться с датчиком MPU9250 по SPI. Использую HAL. При обращении к SPI функции всё время возвращают статус HAL_BUSY. Смущает серый цвет Baub Rate. Подскажите, где копать.
  3. Подскажите, как инициализировать 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.
  4. А вот код на 407vgt в вашем стиле, который запускает 20 2-х канальных преобразований ADC с использованием DMA и разрешает прерывание по завершении процесса преобразования. Обработчик прерывания и настройка вектора прерывания отсутствует. По документации на 407 и 411 даже адреса регистров по-моему одинаковые. Надеюсь чем-то помог. ADC_DMA.c
  5. Проверил на своём stm32f407vgt, заработало. Нашёл 3 ошибки в предыдущем файле ADC_DMA.txt. Так что вот с исправленными ошибками: ADC_DMA.txt
  6. Нашёл ошибку! При открытии файла указатель почему-то автоматически перемещается в конец. Видимо, такая фича FatFs. Как только попробовал записать в файл, запись произощла в конец. Ворспользовался функцией: f_lseek(&logFile, 0); Всё заработало. Даже стыдно, что до этого сразу не догадался. В старых библиотеках FatFs даже порядок аргументов разнится: в старой: f_write(&fil_obj,var,strlen(var),&ByteWrite); в новой: f_read(&logFile, &readBuff[0], 8, &bytesRead);
  7. Старенький, конечно. У меня по-новее, но все равно спасибо, буду ковырять дальше (глубже).
  8. Мне кажется, алгоритм должен быть примерно такой: ADC_DMA.txt
  9. Отсюда и примерствовал.
  10. Очень плохо читаемый код. Непонятно, где настройки ADC. Сначала запускается DMA.
  11. Осваиваю работу с 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[] пуст.
  12. Новая проблема. Не совсем ассемблер, но тоже с ADC. Запускал ADC в режиме непрерывной конвертации для считывания 16-и значений в память с использованием DMA. Код генерировал в среде STM32CUBEide с использованием библиотеки HAL. Не работает. Считывается только первое значение и заполняет первый элемент массива. В трассировщике заметил, что неправильно выставляются регистры DMA. Выставил руками, заработало. Не пойму в чём ошибка, в самой библиотеке HAL, или в моём неправильном использовании её функций. Выдержку кода прилагаю. ADC_DMA.txt
  13. Справился! Оказалось, что отладчиком его проверить нельзя, так как там всё происходит аппаратно и сразу. При установке времени выборки 3 такта программа не успевает считать результат и OVR устанавливается в 1. Увеличил время выборки до 15 цикло, заработало. Не нашёл в RM0090 что при установки OVR работа ADC останавливается. Спасибо, что помогли!
  14. Проверил в отладчике. Он сразу устанавливается вместе с флагами STRT и EOC. После чтения из ADC_DR флаг EOC как положено, сбрасывается. Преобразование останавливается. Запуск ADC писал на C , устанавливая флаги командами типа *adc_cr2 |= 1<<30 /* SWSTART=1, (при EOCS,CONT,ADON=1) */, что бы не пропустить следующего преобразования.
  15. Отладчик и прошивальщик там очень соблазнительные.
×
×
  • Create New...