Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Подключение DS18b20 к STM32

Непрочитано 23.05.2012, 12:40  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Возьмем простейшую задачу - надо прочитать серийный номер датчика, подключенного к пину 2 порта C.
Для этого вводим массив:
Код:
unsigned char DS18B20_sn[8];
Далее не забываем разрешить тактирование порта:
Код:
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC , ENABLE);
Эта процедура использует функции библиотеки от ST. На самом деле будет просто произведена установка первого бита регистре RCC-›APB2ENR.
Далее мы обращаемся к процедуре из тела main:
Код:
unsigned char error;
error = DS1822_Search_Rom_One_Device (GPIOC, GPIO_Pin_2, &DS18B20_sn);
В результате переменная error будет содержать код ошибки или ноль в случае успеха, а массив будет заполнен серийным номером вашего датчика включая контрольную сумму.
Реклама:
Easyrider83 вне форума  
Эти 4 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
AVP (09.08.2017), Johnson1893 (22.11.2016), kot-69 (23.05.2012), miwutka (24.11.2016)
Непрочитано 23.05.2012, 12:48  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Далее нам надо запустить процедуру конвертирования температуры, которая при настройках датчика по-умолчанию займет 750мс.
Для этого обратимся к функции DS1822_Start_Conversion_by_ROM:
Код:
error = DS1822_Start_Conversion_by_ROM (GPIOC, GPIO_Pin_2, &DS18B20_sn);
Если ошибка по-прежнему не вылезла, значит все работает и можно ждать конвертирования.
Через 750мс можно получить результат:
Код:
unsigned int temperatura;
error = DS1822_Get_Conversion_Result_by_ROM_CRC (GPIOC, GPIO_Pin_2, &DS18B20_sn, &temperatura);
Эта фунция проверяет так же контрольную сумму. Поэтому, если возникла ошибка передачи данных, она вернет код ошибки, отличный от нуля.
В итоге мы имеем переменную temperatura, которая содержит 12 бит значения температуры. Для округления просто сдвигаем результат вправо на 4 бита:
Код:
unsigned char real_temp=temperaru››4;
Easyrider83 вне форума  
Эти 4 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
AVP (09.08.2017), Johnson1893 (22.11.2016), kot-69 (23.05.2012), miwutka (24.11.2016)
Непрочитано 24.05.2012, 13:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Выкладываю рабочий пример с любым количеством сенсоров. Все данные вываливаются в UART. На мой взгляд удачная получилась библиотека.
Прошу перекачать файлы библитек. Добавил функцию SearchRom2.
Миниатюры:
Нажмите на изображение для увеличения
Название: DS18B20_2.png
Просмотров: 483
Размер:	62.8 Кб
ID:	35149  
Вложения:
Тип файла: rar USART-One_Wire v2 Multisensors.rar (593.4 Кб, 899 просмотров)

Последний раз редактировалось Easyrider83; 24.05.2012 в 13:04.
Easyrider83 вне форума  
Эти 9 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
291066 (12.09.2013), AVP (09.08.2017), Gummi (07.10.2016), Johnson1893 (22.11.2016), kot-69 (24.05.2012), L_0_R (24.05.2012), miwutka (24.11.2016), wellcom (17.02.2013), zagagulkin (12.11.2013)
Непрочитано 18.02.2013, 20:54  
wellcom
Временная регистрация
 
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
wellcom на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Сообщение от Easyrider83 Посмотреть сообщение
Добавил функцию SearchRom2.
Скажите пожалуйста, а в чем отличия этих ф-ций?
- DS1822_Search_Rom
- DS1822_Search_Rom_One_Device
- DS1822_Search_Rom2
wellcom вне форума  
Сказали "Спасибо" wellcom
AVP (09.08.2017)
Непрочитано 18.02.2013, 21:07  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Сообщение от wellcom Посмотреть сообщение
Скажите пожалуйста, а в чем отличия этих ф-ций?
- DS1822_Search_Rom
- DS1822_Search_Rom_One_Device
- DS1822_Search_Rom2
- DS1822_Search_Rom пишет серийники в локальную переменную
Код:
unsigned char Search_Rom_SN[One_Wire_Device_Number_MAX][DS1822_SERIAL_NUM_SIZE];
DS1822_Search_Rom2 пишет серийники в переменную, полученную через указатель.
DS1822_Search_Rom_One_Device возвращает серийник одного устройства, если оно подключено к линии в гордом одиночестве.
Easyrider83 вне форума  
Эти 4 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
AVP (09.08.2017), Johnson1893 (22.11.2016), miwutka (24.11.2016), wellcom (18.02.2013)
Непрочитано 18.02.2013, 23:50  
wellcom
Временная регистрация
 
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
wellcom на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Никак не могу раскурить вместе с даташитом вот это
Код:
	PIN_OUT_PP(GPIOx, PINx); // установить 2-х тактный выход /выход двумя состояниями (англ. Push-Pull — туда-сюда)/
	PIN_OFF(GPIOx, PINx);    //сбросить пин
	if (Bit==0)// данные передаются временными слотами
	{
		delay_us(Time_Pulse_Delay_High); //60 us
		PIN_ON(GPIOx, PINx);			//установить пин порта в 1 (отпустить линию)
		delay_us(Time_Pulse_Delay_Low);  //10 us
	}
	else //
	{
		delay_us(Time_Pulse_Delay_Low); //10 us
		PIN_ON(GPIOx, PINx);   			//установить пин порта в 1 (отпустить линию)
		delay_us(Time_Pulse_Delay_High);//60 us
	}
	PIN_IN(GPIOx, PINx); // сделать вход без подтяжки
не могу понять почему после установки слота времени, например лог.0 (60мкс) после отпускания шины 1варе, в таком состоянии находимся еще 10 мкс, и при формировании лог 1 на шине - наоборот 60 мкс?
wellcom вне форума  
Непрочитано 19.02.2013, 00:00  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Тут все просто. Суммарная длительность слота 70мкс. 10мс - нолик, 60мкс - единичка.
Easyrider83 вне форума  
Непрочитано 02.03.2013, 22:37  
wellcom
Временная регистрация
 
Регистрация: 25.09.2008
Сообщений: 95
Сказал спасибо: 39
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
wellcom на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Подскажите пожалуйста, используя динамическую индикацию на семисегментниках, каким образом лучше состряпать исходник, что бы время измерения нескольких датчиков не влияло на показания (свечения) индикаторов?..приходит только мысль - мерять Т не на всех подряд датчиках, а как то таймеру по очереди...
wellcom вне форума  
Непрочитано 03.03.2013, 00:05  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

wellcom, выход только один - гасить экран на время измерений. Благо, это не долго.
Все прерывания должны быть выключены.
Easyrider83 вне форума  
Непрочитано 03.03.2013, 00:10  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Подключение DS18b20 к STM32

Easyrider83, 1wire на UARTE не пробовал ?
__________________
Осторожно , злой кот
dosikus вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32-Comstick Flyguy06 Микроконтроллеры, АЦП, память и т.д 0 18.06.2011 08:49
Подключение кнопок к STM32 MasterSID Микроконтроллеры, АЦП, память и т.д 9 01.05.2011 12:42
Proteus - подключение DS18B20 через USB или Com-порт Leva007 Proteus 16 27.11.2010 22:25
Подключение DS18B20 r Attiny2313 vaal555 Микроконтроллеры, АЦП, память и т.д 1 27.09.2010 22:06
Подключение DS18B20 к ATMega8 rocky7 Микроконтроллеры, АЦП, память и т.д 1 28.06.2010 20:30


Часовой пояс GMT +4, время: 10:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.