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