Объединить протокол терминала TMS2812 для Python и Android

This commit is contained in:
2026-10-01 15:41:43 +03:00
parent e3e30fdad7
commit 3457657979
14 changed files with 729 additions and 9 deletions

View File

@@ -102,6 +102,14 @@ PCAN_ABI_API const char *pcan_abi_periph28335_command_name(
size_t project_index, size_t command_index);
/* PM67/TMS320F2812 legacy memory upload. */
PCAN_ABI_API size_t pcan_abi_tms2812_build_fixed(uint8_t controller, uint8_t command,
const uint8_t *payload, size_t payload_size, uint8_t *output, size_t output_size);
PCAN_ABI_API size_t pcan_abi_tms2812_build_memory(uint8_t controller, uint8_t command,
uint32_t word_address, uint16_t value, uint8_t *output, size_t output_size);
PCAN_ABI_API size_t pcan_abi_tms2812_build_test(uint8_t controller, uint16_t duration,
uint16_t pause, const uint8_t *digits, size_t digit_count, uint8_t *output, size_t output_size);
PCAN_ABI_API int pcan_abi_tms2812_validate_response(const uint8_t *data, size_t size,
uint8_t controller, uint8_t command, size_t full_size, int allow_short_tail);
PCAN_ABI_API uint16_t pcan_abi_tms2812_crc16(
const uint8_t *data, size_t size);
PCAN_ABI_API size_t pcan_abi_tms2812_build_upload(

View File

@@ -1,6 +1,6 @@
/**
* @file tms2812.h
* @brief Shared PM67/TMS320F2812 legacy upload protocol.
* @brief Shared PM67/TMS320F2812 legacy terminal and memory protocol.
*/
#ifndef TMS2812_H
#define TMS2812_H
@@ -13,6 +13,10 @@ extern "C" {
#endif
#define TMS2812_CMD_UPLOAD 52U
#define TMS2812_CMD_PEEK 56U
#define TMS2812_CMD_POKE 57U
#define TMS2812_CMD_TEST_ALL 66U
#define TMS2812_PING_ADDRESS 0x00000100UL
#define TMS2812_UPLOAD_REQUEST_SIZE 12U
#define TMS2812_UPLOAD_RESPONSE_OVERHEAD 8U
@@ -28,6 +32,20 @@ typedef enum {
uint16_t tms2812_crc16(const uint8_t *data, size_t size);
size_t tms2812_build_fixed_request(uint8_t controller, uint8_t command,
const uint8_t *payload, size_t payload_size, uint8_t *output, size_t output_size);
/* command=0 is the host PING operation; on wire it is PEEK at 0x100. */
size_t tms2812_build_memory_request(uint8_t controller, uint8_t command,
uint32_t word_address, uint16_t value, uint8_t *output, size_t output_size);
size_t tms2812_build_test_request(uint8_t controller, uint16_t duration,
uint16_t pause, const uint8_t *digits, size_t digit_count,
uint8_t *output, size_t output_size);
/* Ordinary BALZAM responses reserve two bytes after CRC. If allow_short_tail
* is true only those bytes may be omitted; caller must observe the UART gap.
* UPLOAD responses use tms2812_validate_upload_response instead. */
int tms2812_validate_response(const uint8_t *data, size_t size,
uint8_t controller, uint8_t command, size_t full_size, int allow_short_tail);
size_t tms2812_build_upload_request(
uint8_t controller, uint32_t word_address, uint32_t byte_count,
uint8_t *output, size_t output_size);