Update CCS12 peripheral firmware and documentation

This commit is contained in:
2026-09-04 19:34:10 +03:00
parent 55bee25b4f
commit 8cd81736cf
56 changed files with 3808 additions and 504 deletions

View File

@@ -1,3 +1,12 @@
/**
* @file crc16.c
* @brief Расчёт контрольных сумм CRC-CCITT и CRC-16 для протокольных кадров.
*
* Поддерживает табличные и побитовые варианты алгоритмов. Текущая конфигурация
* FAST_CRC/ONLY_CRC16 оставляет в прошивке только требуемый быстрый CRC-16.
* Размер задаётся в элементах буфера целевой платформы, а не в байтах host-PC;
* начальное значение CRC определяет вызывающий протокол.
*/
#include "crc16.h"
#define MAKE_TABS 0 /* Builds tables below */
#define FAST_CRC 1 /* If fast CRC should be used */
@@ -87,6 +96,13 @@ WORD crc_16_tab[] = {
/* CRC-CCITT is based on the polynomial x^16 + x^12 + x^5 + 1. Bits */
/* are sent MSB to LSB. */
/**
* @brief Продолжает расчёт CRC-CCITT по массиву слов.
* @param crc Начальное значение либо CRC предыдущего блока.
* @param buf Буфер данных; значим младший байт каждого слова.
* @param size Число обрабатываемых элементов.
* @return Итоговое 16-битное значение CRC-CCITT.
*/
unsigned int get_crc_ccitt(unsigned int crc,unsigned int *buf,unsigned long size )
{
#if !(FAST_CRC & !MAKE_TABS)
@@ -112,6 +128,13 @@ unsigned int get_crc_ccitt(unsigned int crc,unsigned int *buf,unsigned long size
/* CRC-16 is based on the polynomial x^16 + x^15 + x^2 + 1. Bits are */
/* sent LSB to MSB. */
/**
* @brief Вычисляет быстрый табличный CRC-16 с отражённым полиномом 0xA001.
* @param crc Начальное значение или результат предыдущей порции.
* @param buf Входные слова протокольного кадра.
* @param size Количество слов.
* @return CRC после обработки всего блока.
*/
unsigned int get_crc_16(unsigned int crc,unsigned int *buf,unsigned long size )
{
#if !(FAST_CRC & !MAKE_TABS)
@@ -139,6 +162,11 @@ unsigned int get_crc_16(unsigned int crc,unsigned int *buf,unsigned long size )
/**
* @brief Побитовый эталон расчёта CRC-16 без таблицы.
* @details Используется как компактная реализация и для сверки табличного
* варианта; восемь итераций обрабатывают каждый входной байт.
*/
unsigned int get_crc_16b(unsigned int crc,unsigned int *buf,unsigned long size )
{
@@ -175,6 +203,12 @@ unsigned long i;
return (crc & 0xffff);
}
/**
* @brief Проектная обёртка CRC-16 с установленным протоколом начальным значением.
* @param buf Кадр без добавляемого поля CRC.
* @param size Число элементов кадра.
* @return Контрольная сумма, готовая для сравнения или передачи.
*/
int get_crc16(unsigned int *buf, int size )
{
int crc16,i,j;