Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

кто может проверить правильность вычисления CRC16 для MMC на своих карточках ?

Отправлено ыфефт 01 марта 2007 г. 15:13


#define crc16_mmc_start_value 0 /**< \brief starting value of MMC CRC16 \ingroup params_mmc */

/** \brief updates MMC CRC16 value crc_old with data \ingroup params_mmc */
uint16_t crc16_mmc_upd(uint8_t data, uint16_t crc)
{uint8_t cnt_bits, flag_xor;
for (cnt_bits = 8; cnt_bits; cnt_bits--)
{flag_xor = ((crc >> 8) & 0x80) ^ (data & 0x80);
data <<= 1;
crc <<= 1;
if (flag_xor) crc ^= 0x1021;
}
return(crc);
}

uint8_t data_buf[] = { /*0xfe,*/ 0x6F, 0xFF, 0xFF, 0x53, 0x4D, 0x49, 0x20, 0x20, 0x20, 0x11,
0x61, 0x40, 0x01, 0x08, 0x49, 0x27, };

int main(int argc, char *argv[])
{uint16_t bcnt_01, crc_01;
uint8_t crc_02;

crc_01 = 0;
for (bcnt_01=0; bcnt_01!=sizeof(data_buf); bcnt_01++) crc_01 = crc16_mmc_upd(data_buf[bcnt_01],crc_01);

printf("%x\n", crc_01);
system("PAUSE");
return 0;
}

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 85:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru