# ESP-IDF ISO-TP Component [](https://components.espressif.com/components/espressif/esp_isotp) ISO 15765-2 (ISO-TP) transport protocol implementation for ESP-IDF, enabling reliable transmission of large data payloads (up to 4095 bytes) over TWAI networks with automatic segmentation and reassembly. ## Key Features - **Automatic segmentation** for messages >7 bytes with flow control - **Non-blocking API** with ISR-based frame processing - **Multi-instance support** for concurrent communication channels - **Automotive compliance** (UDS, OBD-II compatible) - **Robust error handling** with timeout and sequence validation > [!NOTE] > TWAI-FD (Flexible Data-rate) is not supported in this version. ## Installation ```bash idf.py add-dependency espressif/esp_isotp ``` ## Configuration Configure ISO-TP protocol parameters: ```bash idf.py menuconfig # Navigate to: Component config → ISO-TP Protocol Configuration ``` ## Quick Start ```c #include "esp_isotp.h" #include "esp_twai_onchip.h" void app_main(void) { // 1. Initialize TWAI twai_onchip_node_config_t twai_cfg = { .io_cfg = {.tx = GPIO_NUM_5, .rx = GPIO_NUM_4}, .bit_timing = {.bitrate = 500000}, .tx_queue_depth = 16, }; twai_node_handle_t twai_node; ESP_ERROR_CHECK(twai_new_node_onchip(&twai_cfg, &twai_node)); // 2. Create ISO-TP transport esp_isotp_config_t config = { .tx_id = 0x7E0, .rx_id = 0x7E8, .tx_buffer_size = 4096, .rx_buffer_size = 4096, }; esp_isotp_handle_t isotp_handle; ESP_ERROR_CHECK(esp_isotp_new_transport(twai_node, &config, &isotp_handle)); // 3. Communication loop uint8_t buffer[4096]; uint32_t received_size; while (1) { esp_isotp_poll(isotp_handle); // CRITICAL: Call every 1-10ms if (esp_isotp_receive(isotp_handle, buffer, sizeof(buffer), &received_size) == ESP_OK) { printf("Received %lu bytes\n", received_size); esp_isotp_send(isotp_handle, buffer, received_size); // Echo back } vTaskDelay(pdMS_TO_TICKS(5)); } } ```
82441ca3992eeb2f1c9c0e728b7028309dffb911
idf.py add-dependency "espressif/esp_isotp^0.1.0"