I suspect this isn't a Rust problem, but a hardware problem.
How are you displaying the characters? If you are printing them on something like an LCD display, are you sure it supports the ASCII space character?
Also, are you sure the data isn't being messed up as it gets sent across your UART connection?
At a previous workplace we used to use serial to communicate between a computer and a microcontroller in a noisy cabinet and we found the UART transmissions would sometimes be garbled and need re-sending. If you can, you might want to inspect the bytes as they are received to see if they are what you sent.
0xA0 is interesting because it's exactly 0x80 more than the ASCII space character, 0x20. So, one possibility is that the high bit got set (0xA0 = 0x20 | 0b1000_0000 = 0b1010_0000) somehow in transmission.
(It also happens that 0xA0 is the Unicode (and Latin-1) code point for non-breaking space.)
But if that happens, that doesn't explain why the following bytes changed too. Nor does the result look like a UTF-8 mis-encoding (it might be something else).
Whatever the answer to your problem is, it won't be found with just general Rust knowledge.