45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|||||||||||||||||||||
Общение с барометром MS5540 на STM32 (Arduino to STM32)19.07.2016, 21:59. Показов 4480. Ответов 23
Метки нет Все метки)
(
Получил от китайца сей аппарат, пошел тут же гуглить что нибудь готовое, но не тут то было. Информации по нем очень мало, даже на Arduino нашел скетч только после глубокой раскопки гугл ответов и пытаюсь его теперь переписать под STM32, но пока плохо получается, а точнее вроде что-то получилось, но получаемые значения неправильные..
Возникла также проблема с подключением самого устройства. Есть распиновка, но в ней нет знакомых мне слов (MOSI, MISO, и т.д) пробую тыкнуть на угад SCLK -> SPI2_SCK DIN -> SPI2_MISO DOUT -> SPI2_MOSI Остальные пины не задействованы. Не знаю на счет жизненной необходимости в 32kHz, но пока не имеем таких кварцов, а PWM занят под GPIO. Если меняю MISO / MOSI местами то получаемые данные остаются прежними, тоесть получаю нули. Исходя из этого можно предположить что я не правильно перевел скетч ардуино под STM32 и/или не правильно все это дело соединил.. Собсно инициализирую SPI2:
Если закомментить циклы в SEND:
0
|
19.07.2016, 21:59 | |
Ответы с готовыми решениями:
23
Arduino IDE для Stm32 Stm32 nucleo f103rb и arduino Совместимость Arduino библиотек и Stm32 |
Модератор
![]() 8962 / 6728 / 921
Регистрация: 14.02.2011
Сообщений: 23,751
|
|
19.07.2016, 22:17 | |
Путин, а документацию почитать?
https://media.digikey.com/pdf/... 540-CM.pdf там на совсем SPI, точнее совсем не SPI ![]()
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|
19.07.2016, 23:17 [ТС] | |
Все хуже чем могло было быть. На том сайте как раз где я взял скетч было упоминание о совместимости SPI. А теперь получается писать придется с 0 и вроде диаграммы простые, но я не совсем представляю как реализовать сие, с подобным ранее никогда не сталкивался, поэтому сильно обрадовался присутствию хотя бы SPI, которого как оказывается и нет.
Не понятен сам процесс отправки, как генерировать SCLK и параллельно что-то передавать + слушать DOUT да еще и все синхронно. Не понятно какой длительностью должен быть импульс на бит возможно есть какие-то стандарты о которых я пока не знаю. Хочется опять же побыстрее узнать сколько там мм рт.ст, а не растягивать дело в лучшем случае на неделю.
0
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
20.07.2016, 10:44 | |
чем же конкретно отличается описанное от обычного SPI? Я что-то не нашел нестыковок.
![]() Все данные, которые вы хотите передать, должны быть выставлены на передающей ноге перед спадающим фронтом клока. Но перед этим же клоком нужно забрать данные. ЗЫ: CS нога все-таки нужна в SPI. Фишка в синхронизации, т.к. когда CS поднят - у вас сбрасывается сдвигающий регистр в вашем датчике. Иначе в какой-то момент работы устройства по линии CLK может просочиться лишний импульс, и все дальнейшие данные пойдут наперекосяк. Добавлено через 3 минуты примерный алгоритм приема передачи в вашем случае такой: { CLK_ON(); WAIT(); GET_IN_BIT(); SET_OUT_BIT(); CLK_OFF(); SOME_DELAY(); } loop 8 bits;
0
|
Модератор
![]() 8962 / 6728 / 921
Регистрация: 14.02.2011
Сообщений: 23,751
|
|
20.07.2016, 11:02 | |
ну я же сказал
![]() CS нужен слейву, чтобы выставить свои данные и подготовится к приемке здесь же используется спецовая посылка, да и скорость очень медленная для SPI (32 килогерца) хотя, даташит просмотрел мельком, сильно не вникал
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|
20.07.2016, 13:26 [ТС] | |
Хорошо забудем про SPI будем считать что тут его нет, лишний раз залезть под капот не помешает.
Собсно пока есть такое представление: Поднимаю SCLK и жду когда уровень нормализуется, передаю бит и прижимаю SCLK к земле. Так передаю 3 бита в качестве Старта. Если все хорошо, то датчик в ответ прижимает DOUT. Если это так то я далее передаю по тому же принципу как и старт остальные биты и т.д. Попробую пока по такой схеме начать что нибудь, дальше будет видно..
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
||||||||||||||||
21.07.2016, 15:12 [ТС] | ||||||||||||||||
Ну собсно посидел и посЕдел написал функцию отправки и приема, пробую отправить и получить, вроде отправляется а получить не могу..
Добавлено через 1 минуту В даташите краем глаза увидел что данные передаются со скоростью 500 kHz, может я со скоростью не попал? Отправка судя по графикам проходит в момент нарастания фронта на SCLK, а получение наоборот в момент спада Добавлено через 22 часа 7 минут Невероятно, припаял по емкости к ногам питания МК и к удивлению от барометра стали приходить данные, работаем пока дальше..
0
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
21.07.2016, 15:33 | |
ппц. Ну как так можно? Сделайте фото вашей установки ). Набось контроллер в воздухе висит? и на соплях проводками к батарейке припаян?
![]() PS: зарекаюсь помогать страждущим без схемы и фотографии монтажа.. ![]()
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
||||||
21.07.2016, 21:42 [ТС] | ||||||
Для МК сделана платка ЛУТ'ом, но была такая идея после ~10 раз неудачного ЛУТА и кучи испорченного PCB.. Питание идет от программатора. Фотку как нибудь позже, там просто куча проводов.
Взглянул на даташит барометра, смотрю рекомендуют тантал на 47uf ну я впаял и омг я снова получаю ничего!! ![]() Отпаял тантал назад и ничего не изменилось! Припаял назад.. Купил таки 32.768 кварцы, а то в даташите написано что крайняя необходимость в них есть, только вывод на него 1.. Судя по схеме 1 кварц на барометр и МК. Сейчас еще с кодом поиграюсь, не могу понять куда исчезло всё.. Под отладчиком 3 раза подряд ходил, ответ был всегда одним и тем же, что собсно правильно, а теперь нули и все.. Добавлено через 1 минуту Не могу еще определиться куда подтяжку на вход от барометра делать? Добавлено через 1 минуту определенной схемы нет, просто питание от ST-Link, дальше просто от МК проводами прямое соединение с барометром. Ну еще тантал на барометре между выводами питания и на МК к каждой ноге по 100 nF припаял Добавлено через 56 минут Поставил капкан при чтении:
Добавлено через 4 часа 10 минут В ходе проб и ошибок я таки смог получить калибровочные данные, и они очень похоже что валидные, однако не могу получить температуру и собсно давление, в обоих случаях приходит 0x0000FFFF. Это как раз те самые данные которые идут с задержкой по даташиту в 33мс, но чую что это далеко не так, будем пробовать играться с задержкой...
0
|
Модератор
![]() 8962 / 6728 / 921
Регистрация: 14.02.2011
Сообщений: 23,751
|
|
21.07.2016, 21:55 | |
только сейчас заметил
![]() DIN (вход?) - MISO (Master Input Slave Output) DOUT (выход?) MOSI(Master Output Slave Input ) вход на вход выход на выход? ![]()
0
|
Модератор
![]() 8962 / 6728 / 921
Регистрация: 14.02.2011
Сообщений: 23,751
|
|
21.07.2016, 22:21 | |
Путин, слушай, мне вот какая идея в голову ударила, а не может этот барометр быть мастером?
тогда твое подключение логично
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|
21.07.2016, 22:46 [ТС] | |
ValeryS, Проверенно, результат отрицательный, собсно по даташиту тоже, МК всегда выступает в качестве инициатора. Пока остаюсь при таком варианте, когда я могу прочитать внутреннюю память барометра, но для работы ADC барометра нужно на вывод подать частоту в 32.768 кГц (пробовал припаяться к ноге кварца, ожидаемо не сработало
![]()
0
|
Модератор
![]() 8962 / 6728 / 921
Регистрация: 14.02.2011
Сообщений: 23,751
|
|
21.07.2016, 23:02 | |
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|
21.07.2016, 23:35 [ТС] | |
Сделал генерацию через таймер, замерил получилось ~32.768 кГц но в диапазон допустимых значений попадаем, однако ничего не изменилось, температура и давление по прежнему 0xFFFF, есть мысль что сенсор дефектный, но другой будет только через мес.. Попробую завтра еще в коде пошарить может чего упустил..
0
|
![]() 1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
22.07.2016, 10:13 | |
1) DIN нужно подключать к MOSI, DOUT - к MISO. Оставьте это подключение и больше не трогайте. В данном случае должно быть так, и только так. Схема - наше все. я об этом уже сказал.
2) По поводу дефектности - можно считать, что вы его могли спалить, включив выходы встречно. Косвенно можно попытаться это выяснить - померяйте ток потребления датчика. По ДШ он не должен быть >1mA. Но если датчик испорчен - он должен кушать >10..15mA я так думаю. Из-за пробитых выходных полярников на выходе DOUT.
0
|
45 / 25 / 16
Регистрация: 14.04.2011
Сообщений: 623
|
|
22.07.2016, 17:29 [ТС] | |
Потребление 30 - 50 uA. Насчет дефектности сам сенсор имеет механические повреждения в области как раз датчиков. Есть мысль что чип внутри остался цел (т.к. я без проблем читаю 64bit память сенсора), а остальное собсно повредилось, хотя повреждения в виде разрезов внутри етой банки, но они не глубокие и судя по даташиту банка залита защитным гелем так что не факт.. Прикрепил фото с микроскопа.. Не могли же такие на вид легкие повреждения повредить сенсоры?
0
|
22.07.2016, 17:29 | ||||||
Помогаю со студенческими работами здесь
20
Чем связать STM32 + STM32 в одном корпусе? Проблема отслеживания кнопки stm32 + arduino IDE Проблема с прошивкой stm32 через Arduino ide Реализовать управление плеером на MPD (linux, stm32, arduino) Создание считывателя импульсов на STM32 bluepill в Arduino IDE Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
|
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
|
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
|
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
|
Агрегаты и сущности в DDD микросервисах
Javaican 10.04.2025
Разработка современных программных систем часто приводит на распутье: монолит или микросервисы? Даже при выборе микросервисной архитектуры многие команды сталкиваются с проблемой правильного. . .
|
Многопоточность в C#: Task и параллельное программирование
UnmanagedCoder 10.04.2025
Современные процессоры уже давно перестали наращивать тактовую частоту в пользу увеличения количества ядер. Это создало интересную ситуацию: разработчики, привыкшие к последовательному. . .
|
Линейное решение нелинейной задачи с помощью арктангенса для метода обработки данных из double buffering.
Hrethgir 10.04.2025
Публикация в доработке, метод арктангенса в комментариях внизу.
Вообще изначально я пренебрёг квадратурой числа, но потом понял, что для вычисления приблизительного значения - сгодится, формулу. . .
|
Переменные в Python
py-thonny 10.04.2025
Переменная в программировании — это символическое имя, связанное с областью памяти, в которой хранится значение. Она позволяет получать доступ к данным через понятные человеку идентификаторы, а не. . .
|
Многопоточность в C#: Task и асинхронные операции
UnmanagedCoder 10.04.2025
Многопоточность позволяет выполнять несколько операций одновременно, что важно для решения двух основных задач: повышения скорости выполнения вычислительно-сложных операций и сохранения отзывчивости. . .
|
Запуск контейнеров Docker на ARM64
Mr. Docker 09.04.2025
Появление таких решений, как Apple M1/ M2, AWS Graviton, Ampere Altra и Raspberry Pi, сделало использование ARM-систем обыденностью для многих разработчиков и DevOps-инженеров. При этом Docker,. . .
|