Подключение DS18b20 к STM32
11.02.2014, 07:50
|
|
|
Прописка
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от Easyrider83
|
Выкладываю рабочий пример с любым количеством сенсоров. Все данные вываливаются в UART. На мой взгляд удачная получилась библиотека.
Прошу перекачать файлы библитек. Добавил функцию SearchRom2.
|
Либа использует один пин? По идее мона используя либу навесить на порт кучу датчиков?
|
|
|
|
11.02.2014, 10:48
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от elesy
|
|
Либа использует один пин?
|
Да, но есть вариант под два пина в том случае, если используется опторазвязка. Там очень легко переделать код и я не стал публиковать его.
Сообщение от elesy
|
|
По идее мона используя либу навесить на порт кучу датчиков?
|
Я проверял до 16 датчиков. Все работает.
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
30.07.2014, 14:10
|
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от Easyrider83
|
Попытаюсь объяснить понятно.
В простейшем случае код работает так:
Main передает параметры функциям DS18x20, получая код ошибки и данные.
Например, функция DS1822_Search_Rom_One_Device принимает параметр типа GPIO_TypeDef (GPIOA, GPIOB, GPIOC - порт вашего МК), далее параметр пина в виде (1‹‹номер пина) или GPIO_Pin_номер пина. Далее надо дать функции указатель на массив, где вы собираетесь хранить серийный номер, который вернет датчик. Т.е. указываете номер ячейки памяти, с которой у вас начинается массив. Выглядит это так - &DS18B20_sn, где unsigned char DS18B20_sn[8] - массив длинной 8 байт. Функция возвращает код ошибки, который можно посмотреть в файле 1-wire.h т.к. все ошибки могут быть вызваны только ошибками данных на шине.
Функция обращается к процедурам 1-Wire, которые уже пользуясь функциями программных задержек реализуют связь датчика с МК через судорожные подергивания пина. За работу пина отвечает библиотека GPIO, которая использует метод BitBang для быстрой работы пина.
|
Добрый день Вам! Хочу выразить свой восторг от реализации Вашей библиотеки! Все очень аккуратно и грамотно написано. Все понятно и доступно ; )
Видно что профессионал в этом деле!
Теперь буду ее использовать в своих проектах.
|
|
|
|
Сказали "Спасибо" artyomugr
|
|
|
30.07.2014, 14:14
|
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от Easyrider83
|
Да, но есть вариант под два пина в том случае, если используется опторазвязка. Там очень легко переделать код и я не стал публиковать его.
Я проверял до 16 датчиков. Все работает.
|
Так вроде и библиотеку не надо перепиливать. Достаточно обращаться при чтении к одной ноге , а при записи к другой , верно?
|
|
|
|
31.07.2014, 01:47
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Уныло всё как-то, прямо сферический ногодрыг в феерическом вакууме. Один таймер с DMAR и два канала ДМА - всё аппаратно и не нужно ничего отключать и гасить.
|
|
|
|
31.07.2014, 01:53
|
|
|
Вид на жительство
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
умные люди перепилят библиотеку под свои нужды, или напишут полностью свою. Код считаю что написан аккуратно
и грамотно. Если вы не согласны - напишите почему
|
|
|
|
31.07.2014, 02:14
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от STM32F0
|
|
Уныло всё как-то, прямо сферический ногодрыг в феерическом вакууме. Один таймер с DMAR и два канала ДМА - всё аппаратно и не нужно ничего отключать и гасить.
|
Дык, на изиэлектрониксе как раз и "пробегал" код с DMA и UART. Им и пользуюсь. Отлично работает, никакого маразма вроде явных пауз или ручного ногодрыга. Только перенастроить скорость для сброса, а потом обратно вернуть. По прерыванию DMA заполняем очередной принятый бит / отправляем следующий бит.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
31.07.2014, 09:43
|
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
|
Цитата:
|
|
Только перенастроить скорость для сброса, а потом обратно вернуть. По прерыванию DMA заполняем очередной принятый бит / отправляем следующий бит.
|
На таймере вообще ничего не нужно делать, оно само молотит, по окончанию трансфера просто вытащить данные.
|
|
|
|
31.07.2014, 11:06
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от STM32F0
|
|
На таймере вообще ничего не нужно делать, оно само молотит, по окончанию трансфера просто вытащить данные.
|
Кстати, да. Глянул свой код: нашел ошибку + идиотизм (я жду, пока придут данные вместо того, чтобы по прерыванию выставить флаг, а в основном цикле, когда этот флаг выставлен, вытащить данные).
Надо будет переделывать весь алгоритм, чтобы по-человечески было, а не через жопу.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
10.03.2015, 12:42
|
|
|
Прописка
Регистрация: 29.06.2007
Сообщений: 217
Сказал спасибо: 143
Сказали Спасибо 13 раз(а) в 11 сообщении(ях)
|
Re: Подключение DS18b20 к STM32
Сообщение от banzayy
|
error = DS1820_Search_Rom_One_Device (GPIOC, GPIO_Pin_15, &DS18B20_sn); возвращает ошибку 4
я больше грешу на настройку GPIO, хотя вроде как всё правильно
|
Всем привет.У меня массив серийника заполняется.А вот при чтении температуры выдаёт 4 (ошибка CRC).Пытаюсь переделать под stm32l152.Пока глухо(((.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:44.
|
|