ESP32 I2C Comprehensive Test Suite
Overview
This directory contains the comprehensive I2C test suite (I2cComprehensiveTest.cpp) for the ESP32
implementation.
For complete documentation including test details, API reference, and usage examples, see:
๐ Complete I2C Documentation
Quick Test Information
Test File Location
- Main Test File:
examples/esp32/main/I2cComprehensiveTest.cpp - Test Framework:
examples/esp32/main/TestFramework.h
Running the Tests
```bash
From project root
cd examples/esp32
Build the I2C test suite
./scripts/build_example.sh i2c_test Release
Flash and monitor
./scripts/flash_example.sh i2c_test Release flash_monitor ```text
Test Categories (24 Total)
The comprehensive test suite includes:
Core Functionality (10 tests)
- Bus initialization - Basic setup and configuration
- Bus deinitialization - Cleanup and state management
- Configuration validation - Clock sources and settings
- Device creation - 7-bit and 10-bit addressing
- Device management - Multi-device operations
- Device probing - Device detection
- Bus scanning - Device discovery
- Write operations - Data transmission
- Read operations - Data reception
- Write-read operations - Register access patterns
Advanced Features (8 tests)
- Error handling - Fault conditions and recovery
- Timeout handling - Timing validation
- Multi-device operations - Concurrent device access
- Clock speeds - Standard/Fast/Fast+ mode testing
- Address modes - 7-bit vs 10-bit addressing
- ESP-specific features - Clock sources, power management
- Thread safety - Concurrent access verification
- Performance - Timing and throughput measurement
New Features (6 tests)
- Edge cases - Boundary conditions and limits
- Power management - Sleep mode compatibility
- Async operations - Non-blocking I2C operations
- Async timeout handling - Async slot management
- Async multiple operations - Sequential async operations
- Index-based access - Device iteration and access methods
Expected Output
```text โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ ESP32-C6 I2C COMPREHENSIVE TEST SUITE โ โ HardFOC Internal Interface โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ I2C Bus Initialization โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ [SUCCESS] Bus initialization tests passed
// โฆ 24 test categories โฆ
Test Summary: I2C
Tests Run: 24
Passed: 24
Failed: 0
Success Rate: 100.00%
```text
Hardware Requirements
- ESP32-C6 DevKit-M-1 (or compatible)
- GPIO Configuration:
- SDA: GPIO21
- SCL: GPIO22
- Optional: I2C devices for comprehensive testing
Test Configuration
The test suite uses these default configurations:
```cpp // GPIO pins static constexpr hf_pin_num_t TEST_SDA_PIN = 21; static constexpr hf_pin_num_t TEST_SCL_PIN = 22;
// Test device addresses static constexpr uint16_t TEST_DEVICE_ADDR_1 = 0x48; // Common device static constexpr uint16_t TEST_DEVICE_ADDR_2 = 0x50; // EEPROM static constexpr uint16_t NONEXISTENT_ADDR = 0x7E; // Non-existent
// Clock frequencies
static constexpr uint32_t STANDARD_FREQ = 100000; // 100kHz
static constexpr uint32_t FAST_FREQ = 400000; // 400kHz
static constexpr uint32_t FAST_PLUS_FREQ = 1000000; // 1MHz
```text
For Complete Documentation
๐ See Complete I2C Documentation for:
- Complete API reference
- Detailed test descriptions
- Usage examples
- Asynchronous operation details
- Index-based access methods
- Performance characteristics
- Best practices and considerations