У стм32 какой-то прикол в аппаратном управлении потоком, я наискось пробежался по дш, но ничего такого глазом не зацепился. Суть в том, что после взведения RTS через энное время она его дёргает обратно и загребает новый байт, из-за чего можно что-нибудь прозевать, в итоге я программно ногами дрыгал. Да и по фт232 видел комментарии, что она не совсем корректно работает с CTS и отправляет лишнее (скорее всего это относилось к левакам, судить не берусь). Так что инвертированные сигналы могут не являться самой большой проблемой. И ещё порекомендую глянуть в референс к стм, вполне возможно, что там сигналы тоже будут инвертированы.

Комментарии: 10

  1. Andrey

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

    • Anonim

      Когда стм32 взводит бит полученного байта по юарту, она следом дергает ртс для индикации того, что слать пока нельзя. При сбросе того бита автоматически дергается обратно ртс. Так вот, если долго не доставать байт, рассчитывая на то, что всё это время ничего слаться не будет, то можно прошляпиться, ибо через некоторое время стм дергает ртс обратно не смотря на то, что байт еще не достали. Емнип, при частоте в 24МГц это было раз в полсекунды.

      • Andrey

        не наблюдал такого, посмотрю, емнип rts завязан не на RXNE а на заполненный/не заполненный буфер пириема, который "отвязан" от бита RXNE

        • Anonim

          По сути, RXNE и является индикатором занятости буфера приема

          • Andrey

            да, перепутал с отправкой, там shift register

        • Andrey

          У меня другой прикол, на мегабите при взводе флага rts руками при обработке прерывания RXNE с компа ещё прилетает 2 байта То есть получается, что на такой скорости тормозить прием по 1 байту не получится, без потери данных Всегда ещё 3 будет прилетать

          • Andrey

            так а зачем его при обработке RXNE руками то взводить?

          • Anonim

            На переключение контекста видимо время уходит. С аппаратным RTS себя так же ведет?

            • Andrey

              Теста ради, чтобы посмотреть, что передача тормозится вообще. С аппаратным вообще не тормозится, видимо, мне в прерывании не хватает каких-то мксек единиц, чтобы обработать данные, а подлетают следующие и начинаются потери

              • Anonim

                Должен тормозиться, у меня всё работало, и картинка с анализатора полностью совпадала с таковой из RM, т.е. RTS взводился на тот промежуток времени, пока DMA расшевеливался и доставал байт из DR.

Не нашли ответ?

Вам также может быть интересно