Easyelectronics.ru

Электроника для всех
Текущее время: 18 фев 2018, 00:28

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 28 ноя 2017, 17:55 
Здравствуйте!

Зарегистрирован: 27 ноя 2017, 19:07
Сообщения: 4
Здравствуйте!
Пытаюсь подружить STM32F103 blue pill с ds18b20 и испытываю проблемы. Надеюсь на помощь опытных коллег)
Сконфигурировал USART в полудуплексном режиме и использую подходы, описанные тут:http://we.easyelectronics.ru/STM32/esche-raz-o-stm32-i-ds18b20-podpravleno.html
http://we.easyelectronics.ru/STM32/stm32-1-wire-dma.html
Пробовал схемы подключения из обеих статей (uart+диод шоттки) и half-duplex uart. Проблема актуальна в обоих случаях.

Датчик послушно отзывается на сигнал сброса.
Но когда доходит доходит до чтения его ответов, складывается ощущение что он не может подтянуть уровень к земле на достаточное время. Под спойлером размещаю осциллограммы с комменнтарием.
Show Осциллограммы


Я трактую осциллограммы как попытки датчика притянуть к земле уровень на шине, но он почемуто не может удержать этот уровень достаточное время.

Взаимодействие с UART используя HAL. Большая часть инициализации сгенерирована CubeMX.
Инициализация пинов:
Код:
    /**USART3 GPIO Configuration   
    PB10     ------> USART3_TX
    PB11     ------> USART3_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_11;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


Во время экспериментов пришел к блокирующей записи с активированным DMA на чтение.
Код получается такой:
Код:
uint8_t dma_buf[8];
HAL_UART_Receive_DMA(&huart3, dma_buf, 8);
if (HAL_UART_Transmit(&huart3, (uint8_t *) ow_buf, 8, 100000)
      != HAL_OK) {
   // Transfer error in transmission process
   Error_Handler();
}
HAL_UART_DMAStop(&huart3);

//далее анализ прочитанного


Поведение сохраняется как при трехпроводной схеме подключения с полноценным питанием, так и в случае паразитного питания. Напряжение 3.3В, резисторы пробовл 4к7 и 2к7. Все делаю на макетной плате, расстояния минимальные. Сам датчик рабочий -- с ардуиной пашет на ура.
Может у кого нибудь есть мысли, в чем корень моих проблем?
Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 28 ноя 2017, 20:29 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4627
morphal писал(а):
в чем корень моих проблем?

Калокуб, аурдунья и нежелание изучать железо.

Вывод должен быть в OD а не пушпул, и с внешним пуллапом...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 28 ноя 2017, 22:32 
Здравствуйте!

Зарегистрирован: 27 ноя 2017, 19:07
Сообщения: 4
dosikus_2 писал(а):
Вывод должен быть в OD а не пушпул, и с внешним пуллапом...


Внешняя подтяжка присутствует.
В half-duplex варианте подключения OD режим выставлен -- осциллограмму я приводил, проблема в наличии.
В подключении по схеме c диодом Шоттки высталение OD режима Tx-ноге не помогает.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 28 ноя 2017, 23:14 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4627
Завтра могу скинуть рабочий проект для F0...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 28 ноя 2017, 23:23 
Здравствуйте!

Зарегистрирован: 27 ноя 2017, 19:07
Сообщения: 4
dosikus_2 писал(а):
Завтра могу скинуть рабочий проект для F0...


Скиньте, пожалуйста, если есть возможность. Буду благодарен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 29 ноя 2017, 09:25 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2503
Работал в полудуплексе(одна нога Tx, OD режим) на F1 и F4, проблем не было. Но у меня подтяжка по 1 ком и питание датчиков +5,+3.3. А после выдачи команды 0x44 при активном питании, датчик вообще притягивает линию к земле на время измерения (на 12 бит около 750 мс) ? Можно попробовать провод поменять, вдруг херовый контакт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: USART ds18b20 не может подтянуть сигнал к нулю
СообщениеДобавлено: 29 ноя 2017, 10:04 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 4627
http://rgho.st/8sL5VQNjq


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB