Любое эхо можно отсечь. На то оно и эхо. Гонял USART в рехиме HalfDuplex - по одной линии. Там было эхо. И проблема с ним у меня была, но по одной простой причине - я в качестве буферов приема и передачи использовал одну и ту-же область памяти. Поэтому в момент начала передачи я выключал прием. Включал прием по прерыванию TC. В разное время делал это 2 способами:
1. Запрещал прием по DMA на время передачи.
2. Запрещал приемник USART (CR1->RE).
Оба способа работали. Если не используешь DMA, то этого можно не делать, достаточно отбросить принятое эхо - вычитать принятые данные по прерыванию RXNE.
Если что-то не получается, значит это у тебя косяк. Так что код в студию.