|
找个懂俄文的高手帮我翻译一下.谢谢. ST发送文件的算法.
ну раз в свободном, значит можно сделать дополнение еще одним камментом.
====
Более доступным языком...
В общих чертах, алгоритм следующий:
Передача данных начинается с первого блока (нулевой передается самым последним).
1. Синхронизация.
2. Синхронизация
3. Передача номера блока
4. Передача самого блока
5. Синхронизация
6. Передача старшего байта контрольной суммы блока
7. Передача младшего байта контрольной суммы блока
8. Чтение байта подтверждения (0х6 – если накопитель принял корректно данные и КС их совпадает, 0х15 – если ошибка)
9. Если конец файла не достигнут – передается следующий блок -> пункт 2
10. Передача номера блока (0)
11. Передача самого блока.
12. Синхронизация
13. Передача старшего байта КС блока
14. Передача младшего байта КС блока
15. Чтение байта подтверждения (0х6 – если накопитель принял корректно данные и КС их совпадает, 0х15 – если ошибка)
16. Передача старшего байта контрольной суммы всего передаваемого файла
17. Передача младшего байта контрольной суммы всего передаваемого файла
Принцип подсчета КС блока:
sCRC=sCRC+((sCRC AND 0xAA) XOR cByteForSend);
Плюс в конце после подсчета по всем байтам блока добавляем и номер блока
sCRC=sCRC+((sCRC AND 0xAA) XOR iNumberBlock);
Принцип подсчета КС файла:
sCRCCommon=sCRCCommon+((sCRCCommon AND 0xAA) XOR cByteForSend);
Общую КС начинать считать от начала файла!
Синхронизация: |
|