在程序中,我首先发送结束地址,而不是发送擦除删除所有以前的数据。而不是将命令发送到闪存新数据,而不是将开始地址发送到闪存数据的位置。起始地址从0x4000开始到数据结束,增量为64。在上面的代码中,我想发送0x4000作为0x00,0x40,0x00,比下一次增加64,即0x4040作为0x00,0x40,0x40,然后继续递增64(0x40),直到结束入口。
我试着用Pyserial写开始地址。启动地址以字节的形式发送,如下所示
1块0x00,0x40,0x00
2块0x00,0x40,0x40
3 chunck 0x00,0x40,0x80
将其增加64,并使用ser.write编写
它打印错误的数据,并以1字节本身作为40,80而不是最后一个字节的增量。任何帮助都是非常感谢的。
offset = 0
size = 64
Chunk = 0
counter = 0
Total_size = 147456
while(currentoffset < Total_size):
TempBuff = []
No_Of_Bytes = Chunk * 64
Address = 0x4000 + (Chunk * 64)
for i in range(str(hex(Address)).__len__(),2,-2):
a = Address & 0xFF
if (str(hex(a)).__len__() < 3):
b = format(a, '#04x')
else:
b = hex(a)
Address = Address >> 8
TempBuff.append(b)
ser.write(b)
if TempBuff.__len__() < 3:
ser.write("0x00")
for indx in range(TempBuff.__len__()-1,-1,-1) :
ser.write(TempBuff[indx])
Chunk = Chunk + 1
offset += size 发布于 2018-07-13 17:18:59
start_address = 0x4000
end_address = 0x8000
block_size = 64
for addr in range(start_address,end_address,block_size):
addr_as_hex6 = "%06x"%addr
c1,c2,c3 = addr_as_hex6[:2],addr_as_hex6[2:4],addr_as_hex6[4:]
print("SEND: 0x%s 0x%s 0x%s"%(c1,c2,c3))我猜..。
https://stackoverflow.com/questions/51329509
复制相似问题