|
1-wire интерфейс, задержки, тайминги |
|
|
|
Mar 30 2018, 17:08
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
Хочу реализовать 1 wire интерфейс для общения между stm32f303ve и температурным датчиком ds1821,но есть такая проблема, я работаю на 1Мгц (HCLK) и у меня не получается сделать точную задержку времени, что для 1wire весьма критично, ведь он завязан на таймингах.
Может кто-нибудь подсказать как можно реализовать точную задержку, скажем, в 1 микросекунду и возможно ли это реализовать на stm на такой частоте ядра? Дело ещё в том, что когда мы подаём сигнал на какую-то ножку, также необходимо время пока сигнал достигнет нужный величины (Vdd, к примеру),судя по даташиту оно должно быть около 125 НАНОсекунд на частоте в 2Мгц, но как я не пытался время задержки у меня получается минимально около 50мкс с помощью DWT, что очень много, буду рад вашим мыслям и советам, спасибо
Сообщение отредактировал Connor - Mar 30 2018, 17:10
|
|
|
|
|
Mar 30 2018, 18:44
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
да гуглил я гуглил!))ничего толкового не нашёл для себя, из реализации задержек в мкс в основом только DWT, а рабочий пример что я видел для one wire был на 72МГц
Сообщение отредактировал IgorKossak - Apr 1 2018, 17:41
Причина редактирования: бездумное цитирование
|
|
|
|
|
Mar 30 2018, 18:44
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Connor @ Mar 30 2018, 20:08)  Хочу реализовать 1 wire ..., в 1 микросекунду...Дело ещё в том,...... 1) Если внимательно присмотритесь к данному протоколу, то станет понятно что там нет 1мкс... Да сигнал Вы должны снимать(лог, 0) в каждом слоте передачи. Но протокол сделан так, что ничего страшного не произойдёт если там скажем будет не 1 мкс, а 2 или 3.. 2) По поводу распространения сигнала - когда реализуете сами задержки выбросите из головы. Сосредоточьтесь ТОЛЬКО на соблюдения даташита в таймингах. Очень критично именно стробирование слота и дальнейшее чтение или удержание линии необходимое кол-во мкс. 3) есть различные реализации данной задачи. есть последовательный порт, есть ногодрыг, есть пдп. Всё тут не раз обсуждалось - если покопаться внимательно, найти можно. 4) Почему ds1821 (хоть я и сторонник их юзанья в пром. изготовлении для регулировки...)? Он выпадает из общего ряда 1Wire протокола. Он НЕ!!! имеет адресацию на шине (отсюда один порт = один датчик. Что лично по мне упрощает пусконаладку и ремонт конечного изделия на объекте = меньше отвёрточно-настроечной потери времени). Есть и плюсы - он даёт разрешение температуры до 0,01 градуса (обычные DS18xx только 0,0625 градуса). 5) Не забывайте защиту от статики. 6) Если линии длинные (более 50 метров) - рекомендую перенести нагрузочный резистор ближе к датчику и уменьшить его до сотен ом где-то.. с уважением (круглый)
|
|
|
|
|
Mar 30 2018, 19:04
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
Цитата(kolobok0 @ Mar 30 2018, 12:44)  Спасибо, я понимаю, но у меня даже не получается сделать задержку кратной 5 мкс или 15, и на сколько я помню разрешение у него 8бит, а это 1 градус в диапазоне от -55 до +170 что ли или около того. Мне, при решении данной задачи, стало интересно именно реализация задержки, ведь на 1МГц один клок это 1мкс, один такт, в принципе теоретически такая задержка возможна...
Сообщение отредактировал IgorKossak - Apr 1 2018, 17:42
Причина редактирования: бездумное цитирование
|
|
|
|
|
Mar 30 2018, 19:28
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
Цитата(domowoj @ Mar 30 2018, 13:20)  А какой смысл использовать этот кристалл СТМ на такой низкой частоте? На плате много других устройств, которые работают на более высокой частоте и расположены они очень близко, и был уже негативный опыт частотных искажений в связи с работой стм на близкой частоте
|
|
|
|
|
Mar 30 2018, 19:42
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 26-05-17
Пользователь №: 97 309

|
Ладно, ребят, тему можно закрывать, всем данке шон
|
|
|
|
|
Mar 30 2018, 19:59
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(domowoj @ Mar 30 2018, 22:53)  ну разделите питания, с землями поработайте, как же люди в быстродействующих АЦП эти вопросы решают. А решение понизить частоту- решение в лоб, Если это сделано по такой причине, то это не решение, а перекладывание с больной головы (схемотехнической) на здоровую (программистскую). Могу предположить, что схемотехник в конторе ТС-а, имеет бОльший авторитет, чем автор и давит своим авторитетом, заставляя принимать решения в свою пользу
|
|
|
|
|
Mar 30 2018, 20:07
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Connor @ Mar 30 2018, 22:04)  ...разрешение у него 8бит, а это 1 градус в диапазоне от -55 до +170... там есть формула расчёта повышенного разрешения. приходит помимо температуры ышо два числа (одни из них для НЕ 21 всегда конст - отсюда и ограничение в 0,0625 градуса. а вот для 21 - оба меняются) - отсюда и получается 0,01. ну или по другому. я знаю как. могу за супер-пупер деньги сделать разрешение в 0,01 градуса (не софтово). по поводу задержки. Вы явно не смотрите в даташит на протокол. Изжовано уже не один десяток человек. чесслово.. у самого за плечами пром. реализация и на 51 и на авр и на стм32 - да пофигу в принципе... совет дня - найдите две команды. Одна выставляет нуль, вторая снимает. поставте рядом друг с другом . обеспечьте неразрывность этих операций. всё...ваша задача решена... в чём проблема то? и ышо один совет дня. обратите внимание на временной слот чтения. на его минимальную задержку. Это и есть крайнее значение джитера (и оно, по памяти, около 6 мкс). а то к которому надо стремиться - 1мкс... получается от 1мкс до 5мкс - вы вы можете немного сдрейфить. Да, чем менее точно - тем короче линия получится.. кстати, надеюсь Вы НЕ!!! используете внутренние подтягивающие резисторы??? Это распространённая ошибка.. удачи вам (круглый) PS ПОВАНГУЮ... Цитата(Connor @ Mar 30 2018, 22:04)  ... у меня даже не получается сделать задержку кратной 5 мкс или 15... Вы пытаетесь на прерывании ловить джитер микросекунд... оно? Ышо раз - взгляните на протокол...Там НЕТ такой необходимости от слова СОВСЕМ!!! 1) между слотами - дрейф в десятки! микросекунд - без проблем... 2) между фазами тестирования(на чтении) - десятки!!! микросекунд - без проблем... есть только! 1мкс при НАЧАЛЕ слота чтения или записи. ВСЁ!!!
Сообщение отредактировал kolobok0 - Mar 30 2018, 20:15
|
|
|
|
|
Mar 31 2018, 09:41
|
Знающий
   
Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050

|
Цитата(Connor @ Mar 30 2018, 22:28)  На плате много других устройств, которые работают на более высокой частоте и расположены они очень близко, и был уже негативный опыт частотных искажений в связи с работой стм на близкой частоте с такими проблемами вам проще вынести обработку w1 на отдельный чип, например https://www.chipdip.ru/product/ds2482s-100-2там есть с 1 линией и до 8-ми.. или сделать самописный бридж, хоть из атмеги или другого подручного mcu иначе ваша stm32 только и будет, что потеть, обрабатывая тайминги для w1
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|