Доброго времени суток. Изучаю статью с сайта об однопроводной линии stm32. Хочу сделать на CMSIS. И сразу же возник вопрос.
После отправки 0xF0 встаем на прием, и в том случае, если на шине присутствуют другие устройства, мы примем значение, не равное тому, что мы отправили. Если же устройств на шине нет, то примем ровно то, что отправили, а именно 0xF0, поскольку фактически Tx и Rx USART'а у нас замкнуты (одна линия для передачи данных по шине).
Вот я настроил 9600 скорость и выход с открытым стоком. Отправил 0xF0 - тут все понятно. Но дальше, насколько я понимаю, я перестраиваю вывод на вход без подтяжки и как я могу принять то, что уже отправил? Или халовские функции как-то хитрее работают? Мне непонятен этот момент...
@jebo У разных МК может быть по разному. Это для 1-Wire?
Если да, лучше использовать UART.
Если имеется в виду UART или USART
У одних, при выборе работы с одной линией, вход и выход объединяются на самом кристалле. У других этого нет и приходится объединять их снаружи.
Если делать на GPIO, там есть нюансы.
Если не для 1-Wire, а для чего то похожего, делается так же как и для 1-Wire.
Есть библиотеки на ногодрыге, USART и USART+DMA. Статьи по этим библиотекам я не писал, но могу дать ради интереса.
@jebo добрый день, да, как Эдуард упомянул - в данном случае (когда USART настроен на работу в режиме Single-wire) это все аппаратно происходит.
@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?