Top.Mail.Ru
Уведомления
Очистить все

[Закреплено] STM32 для начинающих

Страница 21 / 21
 Jebo
(@jebo)
Level 1

Доброго времени суток. Изучаю статью с сайта об однопроводной линии stm32. Хочу сделать на CMSIS. И сразу же возник вопрос.

После отправки 0xF0 встаем на прием, и в том случае, если на шине присутствуют другие устройства, мы примем значение, не равное тому, что мы отправили. Если же устройств на шине нет, то примем ровно то, что отправили, а именно 0xF0, поскольку фактически Tx и Rx USART'а у нас замкнуты (одна линия для передачи данных по шине).

Вот я настроил 9600 скорость и выход с открытым стоком. Отправил 0xF0 - тут все понятно. Но дальше, насколько я понимаю, я перестраиваю вывод на вход без подтяжки и как я могу принять то, что уже отправил? Или халовские функции как-то хитрее работают? Мне непонятен этот момент...

ОтветитьЦитата
Размещено : 11.04.2025 23:46
(@eduard)
Level 5 Moderator

@jebo У разных МК может быть по разному. Это для 1-Wire?

Если да, лучше использовать UART.

Если имеется в виду UART или USART

У одних, при выборе работы с одной линией, вход и выход объединяются на самом кристалле. У других этого нет и приходится объединять их снаружи.

Если делать на GPIO, там есть нюансы.

Если не для 1-Wire, а для чего то похожего, делается так же как и для 1-Wire.

Есть библиотеки на ногодрыге, USART и USART+DMA. Статьи по этим библиотекам я не писал, но могу дать ради интереса.

 

ОтветитьЦитата
Размещено : 12.04.2025 10:40
Aveal
(@aveal)
Top level Admin

@jebo добрый день, да, как Эдуард упомянул - в данном случае (когда USART настроен на работу в режиме Single-wire) это все аппаратно происходит.

ОтветитьЦитата
Создатель темы Размещено : 12.04.2025 10:46
 Jebo
(@jebo)
Level 1

Запись от: @eduard

@jebo У разных МК может быть по разному. Это для 1-Wire?

Если да, лучше использовать UART.

Если имеется в виду UART или USART

У одних, при выборе работы с одной линией, вход и выход объединяются на самом кристалле. У других этого нет и приходится объединять их снаружи.

Если делать на GPIO, там есть нюансы.

Если не для 1-Wire, а для чего то похожего, делается так же как и для 1-Wire.

Есть библиотеки на ногодрыге, USART и USART+DMA. Статьи по этим библиотекам я не писал, но могу дать ради интереса.

 

Доброго времени суток.

Я хотел бы сам сделать на CMSIS. Я собираюсь делать на STM32F3DISCOVERY.  На кристалле этой платы ноги TX и RX замыкаются между собой.

Для понимания интерфейса я смотрел мануал (хотя там буквально пол страницы) и статью на данном сайте "Библиотека для работы с шиной 1-Wire на STM32"  . Из этой статьи я решил повторить (но на CMSIS, а не на HAL) использование UART однопроводной режим.

 

Но в этой статье для меня есть непонятный момент, который я бы хотел для себя разъяснить.

Вот прямая цитата из данной статьи:

После отправки 0xF0 встаем на прием, и в том случае, если на шине присутствуют другие устройства, мы примем значение, не равное тому, что мы отправили. Если же устройств на шине нет, то примем ровно то, что отправили, а именно 0xF0, поскольку фактически Tx и Rx USART'а у нас замкнуты (одна линия для передачи данных по шине).

Мне непонятно как можно одновременно и принимать и отправлять в полудуплексном режиме? Если мы отправили 0xF0, то при внешней подтяжке к питанию (для открытого стока микросхемы), если на линии нет ведомого устройства ведь будет висеть всегда 1?

 

 

ОтветитьЦитата
Размещено : 13.04.2025 23:35
Страница 21 / 21
Поделиться: