STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

[uquote="a5021",url="/forum/viewtopic.php?p=4726223#p4726223"]с ds18b20, чтобы по максимуму в железе и без софтовых ожиданий/прерываний/ногодрыгов?[/uquote]
Возьмите и не мучайтесь:
https://aliexpress.ru/item/100500748286 ... 97b2n9PHf1
И параметры импульсов правильные, и фронты правильные, и работает всё через DMA, и даже гальваническая развязка очень просто реализуется.
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="veso74",url="/forum/viewtopic.php?p=4726254#p4726254"]Вариант: использование UART (Single Wire, Half-Duplex) на 9600 и 115200 bps.
Идея: STM32 1-Wire (One Wire) Protocol + DS18B20 Code Example[/uquote]
Это довольно подозрительная статья. В коде после старта преобразования сразу же считывается результат, хотя известно, что 12-битное преобразование занимает до 750 миллисекунд. Да и побитовое считывание с активным использованием ядра такая себе автоматика. Ногодрыг, только в профиль. Это уж не говоря, что HAL_UART_Transmit -- блокирующая функция, где процессор тупо молотит циклы, ожидая флага от юсарта. Я немного другим интересуюсь: мне нужно получать данные с ds18b20 минимально отвлекая ядро.
tonyk писал(а):https://aliexpress.ru/item/1005007482869799.html?sku_id=12000044505946600&spm=a2g2w.productlist.search_results.0.224597b2n9PHf1
И параметры импульсов правильные, и фронты правильные, и работает всё через DMA, и даже гальваническая развязка очень просто реализуется.
Ой, нет. Мою задачу это не упрощает, а усложняет.
Реклама
veso74
Поставщик валерьянки для Кота
Сообщения: 1906
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

Подозрительно или нет для вас, работает. И это не мешает менять то, что вам не нравится.
5 минут на включение, компиляцию и тестирование. Результат комнатной температуры - в Live Expresion.

Изображение
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="veso74",url="/forum/viewtopic.php?p=4726322#p4726322"]Подозрительно или нет для вас, работает.[/uquote]
Это работает неправильно. Неправильно работающий алгоритм меня не интересует.
И это не мешает менять то, что вам не нравится.
Так все целиком надо менять. Решение не соответствует поставленной задаче.
Реклама
Эиком - электронные компоненты и радиодетали
veso74
Поставщик валерьянки для Кота
Сообщения: 1906
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

Не зная подробностей вашего запроса, просто предложил способ.
Если вы так хорошо знакомы с методом, то предложите свой.
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="veso74",url="/forum/viewtopic.php?p=4726340#p4726340"]Не зная подробностей вашего запроса, просто предложил способ.[/uquote]
все подробности исчерпывающим образом я изложил здесь. как-то неожиданно услышать про "незнание подробностей".
Если вы так хорошо знакомы с методом, то предложите свой.
я в полной мере представляю, что должно быть сделано, но пока еще не задумывался, как это может быть сделано. есть понимание, что возбуждение шины 1-wire микроконтроллером полностью детерминировано. моменты, когда мк должен переключать ногу вниз, а когда отпускать, известны для всего цикла измерения. раз так, то нужен, по сути, незамысловатый секвенсор, который бы проигрывал всю последовательность целиком.
Реклама
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

a5021 писал(а):Ой, нет. Мою задачу это не упрощает, а усложняет.
Да ну. В Далласе ведь работают люди, любящие усложнять жизнь других. Вы хоть мурзилку на эту микруху полистали? Примеры программ посмотрели?
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

вы правы. надо было покрупнее:

Изображение
Вложения
enlarged.jpg
(11.98 КБ) 416 скачиваний
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

a5021 писал(а):вы правы. надо было покрупнее:a5021,
Согласен. Вам следует читать внимательней.
tonyk писал(а):Примеры программ посмотрели?
P. S. Для тех кто читает не внимательно. В даташите на DS2489B приведены примеры на С работы устройствами на шине I2C. Для тех кто в танке могу добавить, что работа через конвертер UART-I2C никак не связана с девайсом, который выполняет в данном случае функцию мастера шины, лишь бы у него были функции приёма-передачи блоков данных через UART.
veso74
Поставщик валерьянки для Кота
Сообщения: 1906
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

tonyk, внутри напр. STM32G4xx есть 5 x USART, для чего нужна внешняя ИС, по цене почти как МК? USART аппаратный, с буфером, "на строке" - данные выводятся по мере наступления времени, плюс DMA все работает (почти) незаметно для центрального ядра. Конечно, для всего есть свои решения. DS2480 к 1-wire - ето еще одно решение.
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

veso74 писал(а):tonyk, внутри напр. STM32G4xx есть 5 x USART, для чего нужна внешняя ИС, по цене почти как МК?
Вы даташит читали? Видимо, нет, коли задаёте такой вопрос.
veso74
Поставщик валерьянки для Кота
Сообщения: 1906
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

Да. Даже заказал DS2480B и жду, после вашего сообщения. Интересная ИС.
Просто в МК (STM32) есть много ресурсов, которые можно использовать без включения внешних компонентов.
Аватара пользователя
sc0rpy
Открыл глаза
Сообщения: 61
Зарегистрирован: Ср июн 18, 2025 07:20:55

Re: STM32 новичку в ARM что к чему

Сообщение sc0rpy »

[uquote="a5021",url="/forum/viewtopic.php?p=4726223#p4726223"]никому не попадался код работы с ds18b20, чтобы по максимуму в железе и без софтовых ожиданий/прерываний/ногодрыгов?[/uquote]

в теории это выглядит так - аппаратный слот модулем сравненія таймера, чтение модулем захвата другого таймера. гдето даже пример попадался.
глаза баяца, руки из жопы, но я не здаюсь
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

veso74 писал(а):Просто в МК (STM32) есть много ресурсов, которые можно использовать без включения внешних компонентов.
В STM32 нет схем формирования импульсов для OW, поэтому что вы там собрались использовать- не понятно. Рассчитывать на заявленные для OW 150м с банальным резистором, ИМХО, наивно. Ну и реализации шины OW с гальванической развязкой на DS2480B решается тривиально в отличие от огорода на внешних дискретных компонентах, которые в итоге займут на плате места больше, чем одна DS2480B.
veso74
Поставщик валерьянки для Кота
Сообщения: 1906
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

Ничего толком не предлагал: нашел решение на первой странице поисковика, попробовал на STM32 на бредборде на столе за 5 минут, получил результа: комнатная температура, работа понравилась, и поделил ссылкой на использование DS18B20 с ресурсами UART в STM32. Если не нужно: 1-wire -> UART в STM32, не используйте, и всё.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="sc0rpy",url="/forum/viewtopic.php?p=4726548#p4726548"][uquote="a5021",url="/forum/viewtopic.php?p=4726223#p4726223"]никому не попадался код работы с ds18b20, чтобы по максимуму в железе и без софтовых ожиданий/прерываний/ногодрыгов?[/uquote]

в теории это выглядит так - аппаратный слот модулем сравненія таймера, чтение модулем захвата другого таймера. гдето даже пример попадался.[/uquote]

а почему другого? в таймере может быть несколько каналов и для каждого можно выбирать режим независимо от других. одним каналом семплы нарезаем, другим захват делаем. на такой код я и хотел поглядеть.

Добавлено after 3 hours 7 minutes 43 seconds:
[uquote="tonyk",url="/forum/viewtopic.php?p=4726625#p4726625"]В STM32 нет схем формирования импульсов для OW, поэтому что вы там собрались использовать- не понятно.[/uquote]
Собрались использовать схему с открытым стоком и подтягивающий резистор, аккурат, как написано в наставлении о караульной службе. В общем, пока суд да дело, я набросал секвенсор из одного таймера и одного канала дма.

логика работы: таймер стартует, выход канала в ноль. так начинается reset pulse. регистр ccr содержит значение 480. совпадение перещелкивает выход и дергает канал дма, который грузит в регистр сравнения время следующего переключения и т.д.

вот такая последовательность полностью формирует всю циклограмму для старта преобразования:

Код: Выделить всё

const uint16_t ccr_seq[] = {
    // Timer starts LOW (line pulled low)
    480,    // [0] Release line (HIGH) at 480 µs — presence pulse start
    980,    // [1] Pull line LOW at 980 µs — presence pulse duration 500 µs

    // 0xCC (11001100, LSB first: 0,0,1,1,0,0,1,1)
    1040,   // [2] Release (HIGH) after 60 µs LOW (bit 0)
    1041,   // [3] Pull LOW after 1 µs HIGH
    1101,   // [4] Release (HIGH) after 60 µs LOW (bit 1)
    1102,   // [5] Pull LOW after 1 µs HIGH
    1103,   // [6] Release (HIGH) after 1 µs LOW (bit 2, '1')
    1163,   // [7] Pull LOW after 60 µs HIGH
    1164,   // [8] Release (HIGH) after 1 µs LOW (bit 3, '1')
    1224,   // [9] Pull LOW after 60 µs HIGH
    1284,   // [10] Release (HIGH) after 60 µs LOW (bit 4)
    1285,   // [11] Pull LOW after 1 µs HIGH
    1345,   // [12] Release (HIGH) after 60 µs LOW (bit 5)
    1346,   // [13] Pull LOW after 1 µs HIGH
    1347,   // [14] Release (HIGH) after 1 µs LOW (bit 6, '1')
    1407,   // [15] Pull LOW after 60 µs HIGH
    1408,   // [16] Release (HIGH) after 1 µs LOW (bit 7, '1')
    1468,   // [17] Pull LOW after 60 µs HIGH

    // 0x44 (01000100, LSB first: 0,0,1,0,0,0,1,0)
    1528,   // [18] Release (HIGH) after 60 µs LOW (bit 0)
    1529,   // [19] Pull LOW after 1 µs HIGH
    1589,   // [20] Release (HIGH) after 60 µs LOW (bit 1)
    1590,   // [21] Pull LOW after 1 µs HIGH
    1591,   // [22] Release (HIGH) after 1 µs LOW (bit 2, '1')
    1651,   // [23] Pull LOW after 60 µs HIGH
    1711,   // [24] Release (HIGH) after 60 µs LOW (bit 3)
    1712,   // [25] Pull LOW after 1 µs HIGH
    1772,   // [26] Release (HIGH) after 60 µs LOW (bit 4)
    1773,   // [27] Pull LOW after 1 µs HIGH
    1833,   // [28] Release (HIGH) after 60 µs LOW (bit 5)
    1834,   // [29] Pull LOW after 1 µs HIGH
    1835,   // [30] Release (HIGH) after 1 µs LOW (bit 6, '1')
    1895,   // [31] Pull LOW after 60 µs HIGH
    1955    // [32] Release (HIGH) after 60 µs LOW (bit 7)
};
а вот такое наблюдается на выходе канала:

Изображение
Вложения
CropImage.jpg
(20.67 КБ) 313 скачиваний
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

a5021 писал(а):схему с открытым стоком и подтягивающий резистор, аккурат, как написано в наставлении о караульной службе
В наставлении по караульной службе нарисована другая схема, и именно для неё приведены характеристики по количеству узлов и длине линии связи.
Аватара пользователя
sc0rpy
Открыл глаза
Сообщения: 61
Зарегистрирован: Ср июн 18, 2025 07:20:55

Re: STM32 новичку в ARM что к чему

Сообщение sc0rpy »

after 1 µs
на столе будет работать, а в реальных условиях я подожду 100мкс между стартами слотов
глаза баяца, руки из жопы, но я не здаюсь
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[uquote="sc0rpy",url="/forum/viewtopic.php?p=4726934#p4726934"]на столе будет работать, а в реальных условиях я подожду 100мкс между стартами слотов[/uquote]
да понятно, что мегагерцовые частоты в проводах не уйдут далеко. но паузы можно делать, хоть по десять часов:

"If for any reason a transaction needs to be suspended, the bus MUST be left in the idle state if . Infinite recovery time can occur between bits so long as the 1-Wire bus is in the inactive (high) state during the recovery period."

предложенная схема легко настраивается под различные тайминги. ограничение -- разрядность таймера.
Аватара пользователя
JackSmith
Потрогал лапой паяльник
Сообщения: 332
Зарегистрирован: Ср мар 09, 2016 08:07:41

Re: STM32 новичку в ARM что к чему

Сообщение JackSmith »

[uquote="a5021",url="/forum/viewtopic.php?p=4726757#p4726757"]одним каналом семплы нарезаем, другим захват делаем.[/uquote]
дергать прерывание для приема каждого бита вместо того, чтобы забрать готовый байт в USARTx_DR?
Ответить

Вернуться в «ARM»