static char END_CHARS[4] = {0x3B, 0x54, 0x05, 0x10};
void setup()
{
SPI.begin();
SPI.setDataMode(SPI_MODE0);
SPI.setBitOrder(MSBFIRST);
Serial.begin(115200);
ReadID();
EraseChip(); // 擦除flash
Serial.println("inited");
}
// 检测是否写入完成,当最后四个字节和结束字节一样的时候写入结束
bool isEnd(char check[4]) {
if (check[0] == END_CHARS[0] && check[1] == END_CHARS[1]
&& check[2] == END_CHARS[2] && check[3] == END_CHARS[3]){
return true;
}
return false;
}
char buffer[64]; // 串口一次最多64字节
char page[256]; // 每页有256字节
int currentPos = 0; // 当前页当前位置
int currentPage = 0; // 当前页数
bool writed = false; // 写入完成标记
bool start = false; // 开始写入标记
bool printed = false; // 写入完成之后打印完成标记
void loop() {
if(!writed && Serial.available() > 0) { // 如果写入未完成我们继续读取串口
if(!start) {
start = true;
Serial.println("start write");
}
int size = Serial.readBytes(buffer, 64);
if(size >= 0) {
if(size == 64) {
if(currentPos + size == 256) { // 当读取恰好满一页