3uint8_t
sd_crc7(
const uint8_t* data, uint8_t len) {
5 for (uint8_t i = 0; i < len; ++i) {
6 for (
int bit = 7; bit >= 0; --bit) {
7 uint8_t in = (uint8_t)(((data[i] >> bit) & 1U) ^ ((crc >> 6) & 1U));
8 crc = (uint8_t)((crc << 1) & 0x7FU);
18 out[0] = (uint8_t)(0x40U | (index & 0x3FU));
19 out[1] = (uint8_t)(argument >> 24);
20 out[2] = (uint8_t)(argument >> 16);
21 out[3] = (uint8_t)(argument >> 8);
22 out[4] = (uint8_t)argument;
23 out[5] = (uint8_t)((
sd_crc7(out, 5) << 1) | 1U);