add newline every 32 read requests

This commit is contained in:
Fischer Moseley 2024-08-23 09:13:34 -06:00
parent 080af6c5ee
commit ed2dfd141b
1 changed files with 9 additions and 5 deletions

View File

@ -164,11 +164,16 @@ class UARTInterface(Elaboratable):
for addr_chunk in addr_chunks:
# Encode addrs into read requests
bytes_out = b"".join([f"R{a:04X}\r\n".encode("ascii") for a in addr_chunk])
ser.write(bytes_out)
bytes_out = "".join([f"R{a:04X}\r\n" for a in addr_chunk])
# Add a \n after every 32 packets, see:
# https://github.com/fischermoseley/manta/issues/18
bytes_out = "\n".join(split_into_chunks(bytes_out, 7 * 32))
ser.write(bytes_out.encode("ascii"))
# Read responses have the same length as read requests
bytes_in = ser.read(len(bytes_out))
bytes_in = ser.read(7 * len(addr_chunk))
if len(bytes_in) != len(bytes_out):
raise ValueError(
@ -211,9 +216,8 @@ class UARTInterface(Elaboratable):
# Encode addrs and datas into write requests
bytes_out = "".join([f"W{a:04X}{d:04X}\r\n" for a, d in zip(addrs, datas)])
bytes_out = bytes_out.encode("ascii")
ser = self._get_serial_device()
ser.write(bytes_out)
ser.write(bytes_out.encode("ascii"))
def _decode_read_response(self, response_bytes):
"""