реклама на сайте
подробности

 
 
> Алгоритм CRC16 для SD карты на ассемблере AVR, полином X16+X12+X5+1
Lisitsin
сообщение Aug 9 2017, 15:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 1-10-10
Из: Рязань
Пользователь №: 59 868



Здравствуйте, уважаемые коллеги!
Столкнулся с такой проблемой. Перерыл весь интернет, не могу найти алгоритм подсчёта контрольной суммы для чтения сектора SD карты на ассемблере.
реализовал вот этот алгоритм:
https://embdev.net/articles/CRC-16-CCITT_in_AVR_Assembler
Реализовал в своём проекте. В документе Physical Layer Simplisied Specification v4.1 говорится, что
CRC16 Example
512 bytes with 0xFF data --> CRC16 = 0x7FA1
и действительно, если записать сектор со значениями 0xff во всех байтах, то при его чтении вижу crc16=0x7fa1, а этот алгоритм даёт 0x6995.
Вот и возникает вопрос: может, я что-то не так делаю? Или это неверный алгоритм? На всякий случай привожу свой код на AVR Atmega128-16PU:
BUF - временный регистр. Использую при чтении байта из карты.
ZH:ZL - собственно, CRC16
TMPH:TMPL - пара регистров, использую при вычислении CRC16

SER ZH ; -
SER ZL ; - инициализация CRC16
RS_RDLOOP: MOV BUF,ZH ; ///
MOV ZH,ZL ; /// меняем местами байты CRC16
MOV ZL,BUF ; ///
RCALL RCV_BYTE ; - процедура чтения байта из карты
ST X+,BUF ; - RECIEVE NEXT BYTE

eor ZL, BUF ; First XOR

mov TMPH, ZL ;
swap TMPH ; These 2 instructions are faster than executing 4 times "lsr 4".
andi TMPH, 0x0F ;
eor ZL, TMPH ; Second XOR
mov TMPH, ZL
swap TMPH
andi TMPH, 0xF0
eor ZH, TMPH ; Third XOR

mov TMPH, ZL
swap TMPH
mov TMPL, TMPH
andi TMPH, 0xF0
andi TMPL, 0x0F
lsl TMPH
rol TMPL
eor ZL, TMPH ; Fourth XOR
eor ZH, TMPL

CPI XH,HIGH(SND_BUF+0X200) ; - это собственно проверка на конец заполнения буфера чтения 512 байт
BRCS RS_RDLOOP ; -

Вот и всё в общем-то. Может кто-то сказать в чём я ошибся?
Огромное СПАСИБО!!!

Сообщение отредактировал Lisitsin - Aug 9 2017, 16:01


--------------------
с Уважением,
Lisitsin
Vasil.Lisitsin@yandex.ru
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016