// 发 CMD17(地址=块号×512) 读一块
uint8_t cmd[6] = {0x51, (addr>>24)&0xFF, (addr>>16)&0xFF,
(addr>>8)&0xFF, addr&0xFF, crc7};
// 等 R1 响应 0x00 → 等起始令牌 0xFE → 收512B + CRC2B
uint8_t token;
while(read_byte() != 0xFE); // 数据起始令牌
for(int i=0;i<512;i++) buf[i] = read_byte();
// 帧校验 CRC16 可选检查