Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2743
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

16. Циклический контроль избыточности

В цифровых системах вполне возможно, что данные могут повредиться, особенно если они передаются через коммуникационную среду. В цифровой электронике сообщение

– это поток битов, равных либо 0, либо 1, и он становится поврежденным, когда один из нескольких этих битов случайно изменяется во время передачи. По этой причине сообщениями всегда обмениваются с некоторыми дополнительными данными, используемыми для обнаружения того, было ли исходное сообщение повреждено или нет. В Главе 8 мы проанализировали раннюю форму обнаружения ошибок, связанных с передачей данных: бит четности – дополнительный бит, добавляемый к сообщению, который используется для отслеживания того, является ли число битов, равное 1, нечетным или четным (в зависимости от типа четности). Однако данный метод не может обнаружить ошибки, связанные с одновременным изменением двух или более бит.

Циклический контроль (проверка) избыточности (Cyclic Redundancy Check, CRC) – это ши-

роко используемый метод обнаружения ошибок в цифровых данных как во время передачи, так и при их хранении. В методе CRC к проверяемому сообщению добавляется несколько контрольных битов, называемых контрольной суммой (checksum)1. Приемник может определить, согласуются ли контрольные биты с данными, чтобы с определенной степенью вероятности утверждать, произошла ли ошибка при передаче. Если это так, получатель может попросить отправителя повторно передать сообщение. Данный метод также применяется в некоторых устройствах хранения данных, таких как жесткие диски. В этом случае каждый блок памяти на диске будет иметь определенные контрольные биты, и аппаратное обеспечение может автоматически инициировать повторное считывание блока при обнаружении ошибки или может сообщить об ошибке программному обеспечению. Важно подчеркнуть, что CRC является хорошим методом для выявления искаженных сообщений, но не для исправления при обнаружении ошибок.

Поскольку метод CRC используется многими периферийными устройствами и протоколами связи (например, Ethernet, MODBUS и т. д.), в микроконтроллерах довольно часто встречаются специализированные аппаратные периферийные устройства, способные вычислять контрольную сумму CRC байтовых потоков, освобождая процессор от выполнения этой операции в программном обеспечении. Все микроконтроллеры STM32 предоставляют отдельное периферийное устройство CRC, и в данной главе кратко объясняется, как использовать соответствующий ему модуль CubeHAL.

Как обычно, прежде чем углубляться в детали реализации, сначала мы дадим краткое введение в математический аппарат метода CRC2.

1Контрольной суммой часто называют CRC. Это не совсем правильно, поскольку CRC – это специальный метод обнаружения ошибок, который использует четко охарактеризованный алгоритм плюс последовательность битов контрольной суммы для определения того, было ли сообщение повреждено или нет. Тем не менее, довольно часто называют контрольную сумму термином CRC или кодом CRC.

2Действительно превосходная диссертация по алгоритмам CRC представлена в этом онлайн-документе Росса Н. Уильямса (Ross N. Williams) (http://www.zlib.net/crc_v3.txt)