Crate ft6336u_driver

Crate ft6336u_driver 

Source
Expand description

§FT6336U Capacitive Touch Controller Driver

A platform-agnostic driver for the FT6336U capacitive touch controller using the embedded-hal I2C traits.

§Features

  • No std dependency - works in embedded environments
  • Uses embedded-hal I2C traits for portability
  • Support for up to 2 simultaneous touch points
  • Gesture detection capabilities
  • Configurable power modes and scan rates
  • Comprehensive register access

§Quick Start

use ft6336u_driver::FT6336U;

// Create the driver with your I2C peripheral
let mut touch = FT6336U::new(i2c);

// Scan for touch events
let touch_data = touch.scan().unwrap();

if touch_data.touch_count > 0 {
    let point = &touch_data.points[0];
    println!("Touch at ({}, {})", point.x, point.y);
}

§Hardware Integration

The FT6336U communicates over I2C at address 0x38. It requires:

  • An I2C bus connection (SDA/SCL)
  • A reset pin (typically controlled by GPIO or GPIO expander)
  • An interrupt pin (optional, for event-driven operation)

§Interrupt-Driven Operation

For optimal power efficiency, configure the touch controller’s interrupt pin and use it to trigger touch scans only when needed:

use ft6336u_driver::{FT6336U, GestureMode};

let mut touch = FT6336U::new(i2c);

// Enable interrupt mode
touch.write_g_mode(GestureMode::Trigger).unwrap();

// In your interrupt handler:
// let data = touch.scan().unwrap();

Structs§

FT6336U
FT6336U capacitive touch controller driver with async I2C interface
TouchData
Complete touch data including up to 2 touch points
TouchPoint
A single touch point with coordinates and status

Enums§

CtrlMode
Control mode for power management
DeviceMode
Device operating mode
Error
Errors that can occur during FT6336U operations
GestureMode
Gesture mode (interrupt trigger configuration)
TouchStatus
Touch event status for a single touch point

Constants§

ADDR_ACTIVE_MODE_RATE
Active mode report rate register address
ADDR_CHIP_ID
Chip ID register address
ADDR_CTRL
Control mode register address
ADDR_DEVICE_MODE
Device mode register address
ADDR_DISTANCE_LEFT_RIGHT
Gesture distance left/right register address
ADDR_DISTANCE_UP_DOWN
Gesture distance up/down register address
ADDR_DISTANCE_ZOOM
Gesture distance zoom register address
ADDR_FILTER_COE
Filter coefficient register address
ADDR_FIRMWARE_ID
Firmware ID register address
ADDR_FOCALTECH_ID
Focaltech ID register address
ADDR_GESTURE_ID
Gesture ID register address
ADDR_G_MODE
Gesture mode register address
ADDR_LIBRARY_VERSION_H
Library version high byte register address
ADDR_LIBRARY_VERSION_L
Library version low byte register address
ADDR_MONITOR_MODE_RATE
Monitor mode report rate register address
ADDR_OFFSET_LEFT_RIGHT
Gesture offset left/right register address
ADDR_OFFSET_UP_DOWN
Gesture offset up/down register address
ADDR_POWER_MODE
Power mode register address
ADDR_RADIAN_VALUE
Gesture radian value register address
ADDR_RELEASE_CODE_ID
Release code ID register address
ADDR_STATE
Device state register address
ADDR_TD_STATUS
Touch detection status register address
ADDR_THRESHOLD
Touch detection threshold register address
ADDR_TIME_ENTER_MONITOR
Time to enter monitor mode register address
ADDR_TOUCH1_EVENT
Touch point 1 event register address
ADDR_TOUCH1_ID
Touch point 1 ID register address
ADDR_TOUCH1_MISC
Touch point 1 miscellaneous data register address
ADDR_TOUCH1_WEIGHT
Touch point 1 weight register address
ADDR_TOUCH1_X
Touch point 1 X coordinate register address
ADDR_TOUCH1_Y
Touch point 1 Y coordinate register address
ADDR_TOUCH2_EVENT
Touch point 2 event register address
ADDR_TOUCH2_ID
Touch point 2 ID register address
ADDR_TOUCH2_MISC
Touch point 2 miscellaneous data register address
ADDR_TOUCH2_WEIGHT
Touch point 2 weight register address
ADDR_TOUCH2_X
Touch point 2 X coordinate register address
ADDR_TOUCH2_Y
Touch point 2 Y coordinate register address
COORD_UD
Coordinate up/down flag
I2C_ADDR
FT6336U I2C address
PRES_DOWN
Touch press down flag