void TSI_Calibrate(TSI_Type *base, tsi_calibration_data_t *calBuff) { assert(calBuff != NULL); uint8_t i = 0U; bool is_int_enabled = false; if (base->GENCS & TSI_GENCS_TSIIEN_MASK) { is_int_enabled = true; TSI_DisableInterrupts(base, kTSI_GlobalInterruptEnable); } for (i = 0U; i < FSL_FEATURE_TSI_CHANNEL_COUNT; i++) { TSI_SetMeasuredChannelNumber(base, i); TSI_StartSoftwareTrigger(base); while (!(TSI_GetStatusFlags(base) & kTSI_EndOfScanFlag)) { } calBuff->calibratedData[i] = TSI_GetCounter(base); TSI_ClearStatusFlags(base, kTSI_EndOfScanFlag); } if (is_int_enabled) { TSI_EnableInterrupts(base, kTSI_GlobalInterruptEnable); } }
void TSI_Init(TSI_Type *base, const tsi_config_t *config) { assert(config != NULL); bool is_module_enabled = false; bool is_int_enabled = false; #if !(defined(FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) && FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL) CLOCK_EnableClock(kCLOCK_Tsi0); #endif /* FSL_SDK_DISABLE_DRIVER_CLOCK_CONTROL */ if (base->GENCS & TSI_GENCS_TSIEN_MASK) { is_module_enabled = true; TSI_EnableModule(base, false); } if (base->GENCS & TSI_GENCS_TSIIEN_MASK) { is_int_enabled = true; TSI_DisableInterrupts(base, kTSI_GlobalInterruptEnable); } if(config->mode == kTSI_AnalogModeSel_Capacitive) { TSI_SetHighThreshold(base, config->thresh); TSI_SetLowThreshold(base, config->thresl); TSI_SetElectrodeOSCPrescaler(base, config->prescaler); TSI_SetReferenceChargeCurrent(base, config->refchrg); TSI_SetElectrodeChargeCurrent(base, config->extchrg); TSI_SetNumberOfScans(base, config->nscn); TSI_SetAnalogMode(base, config->mode); TSI_SetOscVoltageRails(base, config->dvolt); } else /* For noise modes */ { TSI_SetHighThreshold(base, config->thresh); TSI_SetLowThreshold(base, config->thresl); TSI_SetElectrodeOSCPrescaler(base, config->prescaler); TSI_SetReferenceChargeCurrent(base, config->refchrg); TSI_SetNumberOfScans(base, config->nscn); TSI_SetAnalogMode(base, config->mode); TSI_SetOscVoltageRails(base, config->dvolt); TSI_SetElectrodeSeriesResistor(base, config->resistor); TSI_SetFilterBits(base, config->filter); } if (is_module_enabled) { TSI_EnableModule(base, true); } if (is_int_enabled) { TSI_EnableInterrupts(base, kTSI_GlobalInterruptEnable); } }
void TSI_Init(TSI_Type *base, const tsi_config_t *config) { assert(config != NULL); bool is_module_enabled = false; bool is_int_enabled = false; CLOCK_EnableClock(kCLOCK_Tsi0); if (base->GENCS & TSI_GENCS_TSIEN_MASK) { is_module_enabled = true; TSI_EnableModule(base, false); } if (base->GENCS & TSI_GENCS_TSIIEN_MASK) { is_int_enabled = true; TSI_DisableInterrupts(base, kTSI_GlobalInterruptEnable); } TSI_SetHighThreshold(base, config->thresh); TSI_SetLowThreshold(base, config->thresl); TSI_SetElectrodeOSCPrescaler(base, config->prescaler); TSI_SetReferenceChargeCurrent(base, config->refchrg); TSI_SetElectrodeChargeCurrent(base, config->extchrg); TSI_SetNumberOfScans(base, config->nscn); TSI_SetAnalogMode(base, config->mode); TSI_SetOscVoltageRails(base, config->dvolt); TSI_SetElectrodeSeriesResistor(base, config->resistor); TSI_SetFilterBits(base, config->filter); if (is_module_enabled) { TSI_EnableModule(base, true); } if (is_int_enabled) { TSI_EnableInterrupts(base, kTSI_GlobalInterruptEnable); } }
/* Update mouse pointer location. */ static usb_status_t USB_DeviceHidMouseAction(void) { if(Ax > SENSITIVITY) { if(xDir==1) { g_UsbDeviceHidMouse.buffer[1] = 2U; }else{ g_UsbDeviceHidMouse.buffer[1] = (uint8_t)-2U; } }else{ g_UsbDeviceHidMouse.buffer[1] = 0; } if(Ay > SENSITIVITY) { if(yDir==1) { g_UsbDeviceHidMouse.buffer[2] = 2U; }else{ g_UsbDeviceHidMouse.buffer[2] = (uint8_t)-2U; } }else{ g_UsbDeviceHidMouse.buffer[2] = 0; } TSI_EnableHardwareTriggerScan(TSI0, false); /* Enable software trigger scan */ TSI_DisableInterrupts(TSI0, kTSI_EndOfScanInterruptEnable); TSI_ClearStatusFlags(TSI0, kTSI_EndOfScanFlag); TSI_SetMeasuredChannelNumber(TSI0, BOARD_TSI_ELECTRODE_2); TSI_StartSoftwareTrigger(TSI0); while (!(TSI_GetStatusFlags(TSI0) & kTSI_EndOfScanFlag)) { } /* Left mouse button */ if(TSI_GetCounter(TSI0) > TOUCH_THRESHHOLD){ g_UsbDeviceHidMouse.buffer[0] |= 1U; }else{ g_UsbDeviceHidMouse.buffer[0] &= ~1U; } TSI_EnableHardwareTriggerScan(TSI0, false); /* Enable software trigger scan */ TSI_DisableInterrupts(TSI0, kTSI_EndOfScanInterruptEnable); TSI_ClearStatusFlags(TSI0, kTSI_EndOfScanFlag); TSI_SetMeasuredChannelNumber(TSI0, BOARD_TSI_ELECTRODE_1); TSI_StartSoftwareTrigger(TSI0); while (!(TSI_GetStatusFlags(TSI0) & kTSI_EndOfScanFlag)) { } /* Right mouse button */ if(TSI_GetCounter(TSI0) > TOUCH_THRESHHOLD){ g_UsbDeviceHidMouse.buffer[0] |= 2U; }else{ g_UsbDeviceHidMouse.buffer[0] &= ~2U; } /* Send mouse report to the host */ return USB_DeviceHidSend(g_UsbDeviceHidMouse.hidHandle, USB_HID_MOUSE_ENDPOINT_IN, g_UsbDeviceHidMouse.buffer, USB_HID_MOUSE_REPORT_LENGTH); }