Always-on low power capacitive matrix autonomous scanning
By automating sensor scanning in CS-DMA, AS-MS, and LP-AOS modes through an autonomous scanning module, the problems of high CPU bandwidth and power consumption are solved, achieving low-power, high-efficiency sensor scanning, which is suitable for multi-channel and multi-chip configurations.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- INFINEON TECHNOLOGIES AMERICAS CORP
- Filing Date
- 2021-03-18
- Publication Date
- 2026-05-01
AI Technical Summary
Existing technologies require a large amount of CPU interaction in touch sensing interfaces to support sensor scan frames, resulting in high CPU bandwidth consumption, which affects system performance and increases power consumption. Furthermore, the need for periodic wake-up in low-power applications limits power optimization.
The autonomous scanning module performs sensor scanning in CS-DMA, AS-MS and LP-AOS modes. Through DMA engine and FSM automated operation, CPU intervention and interruption are reduced, low-power sensing is supported, and synchronous scanning is performed in multi-channel or multi-chip configurations.
It reduces CPU bandwidth consumption, saves device power, provides flexible performance tuning, supports efficient scanning of large touchscreens and a large number of sensors, and maintains system performance and low power consumption.
Smart Images

Figure CN113495645B_ABST
Abstract
Description
Technical Field
[0001] This subject matter generally relates to sensor technology, and more particularly to methods and systems for low-power scanning of sensors, such as capacitive, inductive, magnetic, current-based, and voltage-based sensors used in touchscreens or other sensing applications. Background Technology
[0002] Highly integrated electronic circuits that combine touch sensing interfaces, wireless connectivity, audio processing, and multimedia display can be used in a wide variety of applications. Touch sensing interfaces can be sliders, touchpads, or touchscreens employing a capacitive sensor matrix. To detect the user interface via touch sensing, CPU interaction may be required to scan the capacitive sensor matrix; this is called a scan frame. For example, the CPU can perform electrode interconnection and configure sensor parameters, such as block configuration, coarse and fine initialization, scan resolution, etc., before commanding the sensors to initiate a scan. Each sensor can continuously perform scans of frames. When a sensor completes its scan, it can generate an interrupt for the CPU to read and convert the scan results, and for the CPU to configure and command the next sensor in the frame. At the end of the frame, the CPU can process the scan results to detect user input. The scanning of sensor frames can be repeated periodically. The repeated interrupt handling and configuration of each sensor in a frame requires considerable CPU bandwidth, thus degrading the system performance of electronic circuits that also perform other functions, such as wireless communication, audio processing, graphics display, etc. Solutions to reduce CPU interaction for servicing touch sensing interfaces can include using dedicated hardware. However, dedicated hardware increases die area, power consumption, and cost.
[0003] In other applications, touch sensors can be used in low-power applications, such as battery-powered devices. To save power at the system level, the device can be put into sleep mode. However, to perform scanning, external device resources of the touch sensor (e.g., CPU, bus access, and I / O interconnects) may need to be in the active power domain. The device can operate on periodic scanning, where the CPU is put into sleep mode and periodically woken up to monitor user interactions in active mode. The need for periodic device wake-ups limits the extent of power optimization. To reduce average power consumption, the intervals used for sleep mode can be lengthened, which adversely leads to longer touches for system detection latency and reduced display refresh rates. Solutions that meet low-power applications without performance degradation may include the use of dedicated hardware, but these solutions may be constrained by the type of sensor used, may not be scalable, and may have a limited capacitance range. Highly integrated sensor scanning solutions in devices are desired that reduce the CPU bandwidth required to support scan frames, save device power, and provide flexibility for fine-tuning performance. Attached Figure Description
[0004] The described embodiments and their advantages can be best understood by referring to the following description taken in conjunction with the accompanying drawings. These drawings are in no way intended to limit any changes in form and detail that may be made to the described embodiments by those skilled in the art without departing from the spirit and scope thereof.
[0005] Figure 1 shows a timeline of an existing solution for a sensor to execute a scan frame, which generates an interrupt and requires CPU interaction for each frame.
[0006] Figure 2 A highly integrated electronic circuit according to one embodiment of the present disclosure is shown, which implements touch sensing capabilities, wireless connectivity, audio processing, LCD display driver, image capture, and other user interfaces used in IoT applications.
[0007] Figure 3 A functional block diagram of a sensor scanning module according to an embodiment of the present disclosure is shown, which performs an autonomous scan of all sensors in a frame without CPU intervention or interruption after each scan in a chain scan using direct memory access mode (CS-DMA).
[0008] Figure 4 The timeline of a sensor scanning module performing a scan frame in CS-DMA mode according to an embodiment of the present disclosure is shown.
[0009] Figure 5 A more detailed timeline of a sensor scanning module performing three scan frames in CS-DMA mode according to an embodiment of the present disclosure is shown, illustrating that the sensor scanning module issues a DMA request at the end of each scan in the frame and generates an interrupt at the end of each frame.
[0010] Figure 6 A more detailed timeline of three sensors in a frame to be scanned in a CS-DMA method according to an embodiment of the present disclosure is shown, illustrating that the sensor scanning module issues a DMA request at the end of each sensor scan and generates an interrupt at the end of each frame.
[0011] Figure 7 A functional block diagram of a sensor scanning module according to an embodiment of the present disclosure is shown. This sensor scanning module performs an autonomous scan of all sensors in a frame after each scan in an autonomous scan-multiple scan (AS-MS) mode without using CPU intervention, interrupts, or DMA resources.
[0012] Figure 8The illustration shows a timeline of a sensor scanning module executing a scan frame in AS-MS mode according to an embodiment of the present disclosure, demonstrating that the sensor scanning module configures the scan without requiring DMA resources and generates an interrupt at the end of the frame.
[0013] Figure 9 A functional block diagram of a sensor scanning module according to an embodiment of the present disclosure is shown. The sensor scanning module performs an autonomous scan of all sensors in a frame without using CPU intervention, interrupts, or DMA resources after each scan or after each frame, until user interaction is detected in a Low Power Always On Scan (LP-AOS) mode.
[0014] Figure 10 A timeline of a sensor scanning module performing frame scanning in LP-AOS mode according to an embodiment of the present disclosure is shown, illustrating that the sensor scanning module configures the sensor to perform multiple scan frames and generates an interrupt to wake up the CPU in sleep mode when a user touch event is detected at the end of two half-frames.
[0015] Figure 11 An interface for synchronizing multiple sensor channels or multiple sensor chips to simultaneously perform multiple sensor scans according to an embodiment of the present disclosure is shown for supporting a touch panel with a large number of sensors.
[0016] Figure 12 A timing diagram of three sensor channels for synchronously and simultaneously performing sensor scanning without CPU intervention is shown according to an embodiment of the present disclosure.
[0017] Figure 13 A timing diagram is shown according to an embodiment of the present disclosure for synchronizing sensor scans by waiting for consensus when the sensor channels have variable timing for loading scan configuration parameters, without CPU intervention.
[0018] Figure 14 An interface for synchronizing two sensor chips, each containing two sensor channels, is shown according to an embodiment of the present disclosure to perform multiple sensor scans simultaneously.
[0019] Figure 15 A flowchart is shown of a method for supporting autonomous scanning of a sensor in a frame in a CS-DMA, AS-MS, or LP-AOS mode for a single channel, according to an embodiment of the present disclosure.
[0020] Figure 16A flowchart is shown of a method for supporting autonomous scanning of a sensor in frames in CS-DMA, AS-MS, or LP-AOS modes in a synchronous multichannel configuration, according to an embodiment of the present disclosure.
[0021] Figure 17 A firmware architecture and data structure for a sensor module that supports autonomous sensor scanning in a frame using CS-DMA mode, according to one embodiment of the present disclosure, are shown.
[0022] Figure 18 The hardware-firmware interaction and data flow for loading a scan configuration from a data structure into a sensor module to perform a sensor scan in a frame using CS-DMA mode, according to one embodiment of the present disclosure, are illustrated.
[0023] Figure 19 The hardware-firmware interaction and data flow for copying a scan configuration data structure into the local RAM of a sensor module to perform a sensor scan in a frame using AS-MS mode, according to one embodiment of the present disclosure, are illustrated. Detailed Implementation
[0024] This document describes and illustrates examples of various aspects and variations of the subject matter in the accompanying drawings. The following description is not intended to limit the invention to these embodiments, but rather to enable those skilled in the art to make and use the invention. For example, although examples, implementations, and embodiments of the subject matter are described using capacitive sensors with touchscreen panels, the subject matter is not limited thereto and can be applied to other types of sensor technologies or sensor applications using other types of sensors (e.g., inductive, magnetic, current, voltage sensors).
[0025] In multifunctional devices with touch sensing capabilities, the touch sensing interface may include a matrix of capacitive sensors arranged on a surface such as a touchpad or touchscreen. To detect user interactions on the touch sensing interface, the device can scan the sensors to obtain sampled values for a specific sensor configuration. Typically, the device scans frames of sensors across multiple sensor configurations by moving from one sensor to another over multiple scans. Existing solutions require significant interaction from the device's CPU to support the sensor scan frames, thus consuming CPU bandwidth that could otherwise be used to implement other functions of the device, resulting in reduced system performance and increased power consumption.
[0026] Figure 1 illustrates a timeline of an existing solution for a sensor to perform a scan frame, which generates an interrupt and requires CPU interaction for each scan. The scan frame covers three scans, one for each of the three sensors. To perform a scan by the first sensor, the CPU can load its sensor configuration (e.g., coarse and fine initialization parameters) onto the first sensor. The CPU can then command the first sensor to perform the scan using the loaded configuration. When the first sensor completes its scan, it can generate an interrupt for the CPU to read and translate the scanned data. The CPU can load its sensor configuration onto the second sensor, command the second sensor to perform the scan using the loaded configuration, receive a scan completion interrupt from the second sensor, execute an interrupt service routine to read and translate the scanned data, and repeat the operation for subsequent sensors until the scan frame is complete. At the end of the frame, the CPU can post-process the scanned data from the sensors in the frame to detect user interaction. Additionally, the CPU can perform operations such as electrode interconnection and block configuration of the sensors in the frame. The CPU can repeat the sensor scan frame at a period determined by the touchscreen's refresh rate. Because each sensor scan in the frame generates an interrupt (which can be once every 100 microseconds) and requires CPU intervention, the scan operation incurs significant CPU overhead.
[0027] A system and method are disclosed that eliminates CPU intervention, interrupts, and CPU overhead when performing frame scanning, supports low-power sensing operation without periodically waking up the rest of the device, including the CPU, and is scalable to multi-channel or multi-chip sensor configurations to support large touchscreens or a large number of sensors. In one embodiment, the sensor scanning module is a stand-alone and autonomous block that is portable to different technology nodes or product families and does not have system-level performance impacts or implementation difficulties in applications requiring highly integrated devices. The sensor scanning module can operate independently of the rest of the system in the device to support always-on scanning operation while the rest of the system is in a low-power sleep mode.
[0028] In one embodiment, the sensor scanning module operates in chained scan (CS-DMA) using direct memory access mode to perform scans of all sensors within a frame without CPU intervention or generating CPU interrupts after each scan in the frame. CS-DMA mode reuses common resources, such as the DMA engine along with a sequencer or finite state machine (FSM) and a real-time configuration register set. This reuse of common resources helps reduce the die area and cost of the sensor scanning module. The sensor scanning module can use a combination of FSM and DMA engine to automate scan operations, avoiding repeated interrupts after each scan in the frame. The sensor scanning module can use the DMA engine to access memory without CPU intervention to access scan configuration data and initiate scans of the sensors in the frame. At the end of the frame, the sensor scanning module can trigger the DMA engine to read the scanned data of the frame and can generate interrupts or other types of signaling events for the CPU to process the scanned data.
[0029] In one embodiment, the sensor scanning module operates in an Autonomous Scan-Multiple Scan (AS-MS) mode to perform scans of all sensors within a frame without CPU intervention or generating a CPU interrupt after each scan within the frame. The sensor scanning module can use dedicated local memory (e.g., RAM) to store sensor configurations for the sensors in the frame, use an Open Module Manager (FSM) to control the operation of the sensor scanning module, and use a real-time configuration register set. Similar to CS-DMA mode, the sensor scanning module in AS-MS mode can use an FSM to automate the scan operation to avoid repeated interrupts after each scan within the frame. Unlike CS-DMA mode, the sensor scanning module in AS-MS mode can avoid DMA operations and associated bus arbitration when accessing scan configuration data by downloading scan configuration data from local memory to the real-time configuration register set. At the end of the frame, the sensor scanning module can generate an interrupt or other type of signaling event for the CPU to read and process the scanned data of the frame.
[0030] In one embodiment, the sensor scanning module operates in an Autonomous Low-Power Always-On Scan (LP-AOS) mode by processing multiple scan frames without CPU interaction until a touch event is detected. Unlike CS-DMA or AS-MS modes, the sensor scanning module in LP-AOS mode does not interrupt the CPU to read out and process scan data at the end of each frame. Instead, the sensor scanning module processes scan data from one or more frames until user interaction is detected and CPU intervention is requested. The CPU and the rest of the system can operate in a low-power sleep mode without periodically waking up in active mode to process scan data, thereby reducing peak and average current consumption. LP-AOS mode can operate actively in the power domain independently of the rest of the system, providing a consistent refresh rate and low touch-to-system wake-up latency, regardless of the system's power mode.
[0031] In one embodiment, sensor scanning modules in a multi-channel or multi-chip configuration can be synchronized to support large touchscreens or a large number of sensors. To synchronize their operation, multiple sensor channels can use unanimous agreement (a consensus method) to begin scanning, thus avoiding the need for time-binding actions or synchronization from the CPU. Multiple sensor channels or multiple sensor chips can operate in any of the CS-DMA, AS-MS, or LP-AOS autonomous sensing modes to achieve low-power operation without CPU intervention, thereby saving power. Performance is improved through consistent refresh rates and low touch-to-system wake-up latency across all power modes of the system, and a scalable solution is provided for combining any number of channels or chips to scan large panels.
[0032] In one embodiment, a capacitive sensing device is disclosed. The capacitive sensing device includes a processor and an Autonomous Capacitive Sensing Subsystem (ACSS). The ACSS can receive a start frame event triggered by the processor. Upon receiving the start frame event, the ACSS can load a sensor configuration for scanning a capacitive touch interface within the frame without processor intervention. The frame may include multiple scans. The ACSS can use a first sensor configuration to scan the capacitive touch interface and can receive sensor data. The ACSS can determine if any additional scans are present in the frame to be executed. If additional scans are present in the frame to be executed, the ACSS can load a next sensor configuration without processor intervention. The ACSS can use the next sensor configuration to scan the capacitive touch interface. If no additional scans are present in the frame, the ACSS can generate an interrupt or other type of signaling event to request the processor to process the sensor data.
[0033] Figure 2A highly integrated electronic circuit 200 according to one embodiment of this disclosure is illustrated. The electronic circuit 200 implements touch sensing capabilities, wireless connectivity, audio processing, an LCD display driver, image capture, and other user interfaces used in IoT applications. The electronic circuit 200 may include a sensor scanning module 203 that scans frames from a capacitive sensor to implement touch sensing capabilities. The electronic circuit 200 may include a WiFi / Bluetooth module 207 for implementing wireless connectivity, an LCD driver 209 for implementing display capabilities, and an image sensor 211 for capturing images from a camera. The electronic circuit 200 may include a CPU 201 to manage the operation of various functions and interfaces. Memory such as NAND flash memory 213 and SRAM 215 may be integrated with or external to the electronic circuit 200. The sensor scanning module 203 may operate in one of CS-DMA, AS-MS, or LP-AOS autonomous sensing modes to perform sensor scan frames without intervention from the CPU 201. In one embodiment, the electronic circuitry 200, including a CPU, a WiFi / Bluetooth module 207, an LCD driver 209, and an image sensor 211, can operate in sleep mode in a power domain independent of the power domain of the sensor scanning module 203 while scanning the capacitive sensor. In one embodiment, the sensor scanning module 203 may have DMA capability to access the SRAM 215 without CPU intervention to download configuration data for the sensor from the SRAM 215 or write sensor scan data from frames to the SRAM 215.
[0034] Figure 3 A functional block diagram of a sensor scanning module 301 according to an embodiment of the present disclosure is shown. The sensor scanning module 301 performs autonomous scanning of all sensors in a frame in CS-DMA mode without CPU intervention or interruption after each scan. The sensor scanning module 301 may be... Figure 2 Module 203. The sensor scanning module 301 may have an analog module 303 that implements analog components for the sensing circuit and a digital module 305 that implements digital circuitry for the sensing circuit. The sequencer 307 may implement an FSM and register mapping interface to support FSM operation. The I / O interface enables the sensor scanning module 301 to sense frames from capacitive sensors connected via I / O pins.
[0035] The register interface, including the basic configuration register (BASE_CFG) 311 and the scan configuration register (SCAN_CFG) 313, allows firmware running on the CPU 201 to configure and control the sensor scan module 301 for each scan and each stage, or to configure the state of each associated I / O before and after each scan. The basic configuration register 311 can store control parameters configured by the CPU 201 via the AHB bus 315 once or less frequently. For example, the basic configuration register 311 can be configured only upon power-up or only during mode transitions. In one embodiment, the basic configuration register 311 can include control parameters such as power mode, operating clock, start frame, abort scan command, status indication, operating mode, and other controls.
[0036] The scan configuration register 313 can store control parameters for sensor scanning performed by the sensor scan module 301. In one embodiment, the scan configuration register 313 may include control parameters such as AD conversion method, conversion configuration, input terminals, sensing or transmission clock, number of sub-conversions, etc. The sequencer 307 can access the scan configuration register 313 to control the execution of the FSM. The scan configuration register 313 can be written by the CPU 201 or written from memory 215 via DMA. When the scan configuration is written to the scan configuration register 313 and the start scan bit (START_SCAN) is initiated, the sequencer 307 can run the FSM to control the analog module 303, digital module 305, and I / O interface 309 to complete the scan, including all stages involved using the configured parameters.
[0037] Upon completion of a scan, sequencer 307 may trigger a DMA request to copy scan configuration parameters for the next scan of a frame from memory 215 to scan configuration register 313. Sequencer 307 can then use the newly configured parameters to initiate the next scan of a frame. Thus, sequencer 307 can complete a scan, trigger a DMA transfer to write the next scan configuration parameters, and begin the next scan without CPU intervention, enabling continuous scanning of frames, hence the term "chained scan." In one embodiment, at the end of a frame, sequencer 307 may trigger a DMA transfer to read the scanned frame data into memory 215 and generate an interrupt to request CPU 201 to process the scanned frame data.
[0038] The I / O interface 309 can connect external sensors on general purpose I / O (GPIO) to the sensing circuitry in analog module 303 and digital module 311. The I / O interface 309 can drive sensor excitation signals, such as sensing and shielding signals for self-capacitive scanning or Tx clock and Rx signals for mutual capacitive and inductive scanning. In one embodiment, the I / O associated with a sensor scan has two states: active and inactive, and an additional optional state, shielded, applicable only to self-capacitive scanning. The active state is when a scan is performed on a given I / O; the inactive state is when no scan is performed on a given I / O. However, the sensor scanning module 301 can perform scans on other I / Os. The shielded state is when an inactive I / O is excited using a shielding signal as part of a scan. All I / Os are inactive by default when no scan is in progress. If an ongoing scan exists on an I / O or a group of I / Os, the remaining I / Os are either inactive or shielded during a self-capacitive scan.
[0039] The scan can involve multiple stages, including fine and coarse initialization, conclusion, and sub-transformation. Sequencer 307 can control the state of all associated I / Os before and after the scan without CPU intervention. For example, sequencer 307 can configure sensing circuitry in analog module 303 and digital module 311 to perform each stage to produce the result of the transformation without CPU intervention. In one embodiment, more than one I / O can be configured as a sensor, Tx, or Rx electrode in a configuration referred to as “linked sensing.”
[0040] Figure 4The diagram illustrates a timeline of a sensor scanning module 301 performing a scan frame in CS-DMA mode according to an embodiment of this disclosure. The scan frame comprises three scans, one for each of the three sensors. To perform a scan of the first sensor, the CPU can load the basic configuration register 311 to command the sensor scanning module 301 to operate in CS-DMA mode and initiate the frame by setting the start frame bit (START_FRAME). The sensor scanning module 301 can initiate a DMA request to write scan configuration parameters for the first sensor scan into the scan configuration register 313. When the start scan bit (START_SCAN) is enabled, the sensor scanning module 301 can scan the first sensor using the downloaded scan configuration parameters. Upon completion of the scan, the sensor scanning module 301 can generate a DMA request to write scan configuration parameters for the second sensor scan into the scan configuration register without CPU intervention. The sensor scanning module 301 can then scan the second sensor using the updated scan configuration parameters. These operations can be repeated until all three scans of the frame are completed without CPU intervention. At the end of the frame, the sensor scanning module 301 can trigger a DMA request to read the scan data for the three scans of the frame into the system memory and generate an interrupt to request the CPU to post-process the scan data of the frame in order to detect user interaction.
[0041] Figure 5 A more detailed timeline is shown of a sensor scanning module 301 (also referred to as an Autonomous Capacitive Sensing Subsystem (ACSS)) executing three scan frames in CS-DMA mode according to one embodiment of the present disclosure. This shows the sensor scanning module 301 issuing a DMA request at the end of each scan within a frame and generating an interrupt at the end of each frame. An FSM (e.g., sequencer 307) can control the operation of the sensor scanning module 301. At event 1, the CPU can initialize the sensor scanning module 301 by configuring the basic configuration register 311. In one embodiment, the CPU can also configure a DMA channel for the sensor scanning module 301 to perform DMA transfers to and from system memory. CPU initialization can occur at power-on or when the CPU changes the sensor scanning mode. Scan configuration parameters for each sensor scan within a frame are stored in system memory (e.g., memory 215) in the form of an array of memory arrays or an array of data structures.
[0042] At event 2, the CPU can initiate frame start by setting the START_FRAME bit in the basic configuration register 311. The sensor scan module 301 can respond to DMA requests for the first sensor configuration parameters in the frame. When the memory arbitrator grants the DMA request, the DMA engine in the sensor scan module 301 can transfer the first sensor configuration parameters from system memory to the scan configuration register 313 without CPU intervention. The last register written by DMA can contain the START_SCAN bit to begin the first scan in the frame.
[0043] At event 3, the first scan is complete, and the sensor scan module 301 can issue a DMA request to transfer the next sensor configuration parameters from system memory to the scan configuration register 313 without CPU intervention. The last register written by DMA can again contain the START_SCAN bit to start the next scan in the frame with the updated scan configuration parameters. This operation of transferring the scan configuration parameters for the next scan using DMA at the end of each scan of the frame without CPU intervention is repeated until all scans of the frame are completed, hence the term "chained scan".
[0044] At event 4, when all scans of a frame are complete, the sensor scanning module 301 can issue a DMA request to read the scan results of the frame into system memory. No DMA request needs to be passed in the next sensor configuration parameters. The sensor scanning module 301 can generate an interrupt to allow the CPU to process the frame results read from the DMA. After processing the frame results, the CPU can initiate the next frame if needed by setting the START_FRAME bit in the basic configuration register 311. The sensor scanning module can respond by triggering a DMA request for the first sensor configuration parameters in the frame to begin scanning a new frame. The frame interval can be determined by the application firmware. Therefore, in CS-DMA mode, the sensor scanning module 301 performs scanning of the sensors in the frame based on the configuration parameters written by DMA after each scan. Because it is not necessary to store the configuration parameters for all sensors in the frame in the sensor scanning module 301, chip area savings can be achieved. The DMA controller used to implement DMA can be part of a general-purpose resource.
[0045] Figure 6 A more detailed timeline of three sensors in a frame to be scanned in a CS-DMA method according to an embodiment of the present disclosure is shown, illustrating that the sensor scanning module 301 issues a DMA request at the end of each sensor scan and generates an interrupt at the end of each frame. At event 1, the CPU performs a write cycle, wherein the CPU may program the DMA channel, initialize the sensor, and configure the basic configuration register 311.
[0046] At event 2, the CPU can trigger a frame scan by setting the START_FRAME bit. In one embodiment, frame triggering can be provided based on an external signal (e.g., GPIO) or an internal signal (e.g., a timer expiration event), eliminating the need for the CPU to periodically start frame scans. The CPU can intervene only at the end of a frame to process the scanned data, rather than at the beginning of a frame, thereby further saving CPU bandwidth.
[0047] In response to the START_FRAME bit, sensor scanning module 301 may issue a DMA write request, as shown in the first instance of event 3, to transfer sensor configuration for the first sensor from system memory to scan configuration register 313. The sensor configuration may include scan parameters, input terminal details, a start scan register value (e.g., the START_SCAN bit for starting the scan), and a pointer to sensor configuration for the next sensor. Sensor scanning module 301 may then begin scanning the first sensor and perform data conversion for the scanned data.
[0048] Upon completion of the first scan, sensor scanning module 301 may issue a DMA read request to read the scan results into system memory, as shown in the second instance of event 3. Sensor scanning module 301 may issue a DMA write request, as shown in the third instance of event 3, to transfer sensor configuration for the next sensor from system memory. In one embodiment, DMA read requests to read scan results at the end of each scan can be avoided by storing the scan results in sensor scanning module 301 (e.g., using a FIFO) until all scans of the frame are completed. At the end of the frame, sensor scanning module 301 may issue a DMA read request to read the scan results of all sensors in the frame into system memory. At event 4, sensor scanning module 301 may generate an interrupt for the CPU to process the scan results to determine user interactions such as touch or gestures.
[0049] In CS-DMA mode, sensor scanning module 301 autonomously performs frame scan transitions based on configuration parameters written to scan configuration register 313 via DMA transfer. At the end of each scan except the last scan, sensor scanning module 301 issues a DMA request to load the next configuration, enabling DMA to "chain" scans to initiate each scan without CPU intervention. Each scan of a frame is independent of other scans. The configuration parameters used for a scan can be different. Advantageously, no CPU bandwidth is required except for initializing the sensor and configuring the basic configuration register 311 at the beginning of a frame scan and processing the scan results at the end of a frame. However, the CPU and the rest of the system in the device may have to be in active mode because CS-DMA mode requires memory bus access for DMA transfer between the scan configuration stored in system memory and the scan configuration register 313 in sensor scanning module 301.
[0050] Figure 7 A functional block diagram of a sensor scanning module 401 according to an embodiment of the present disclosure is shown. This sensor scanning module 401 performs autonomous scanning of all sensors in a frame after each scan in an autonomous scan-multiple scan (AS-MS) mode, without using CPU intervention, interrupts, or DMA resources. The sensor scanning module 401 may be... Figure 2 Module 203. The analog module 303, I / O interface 309, basic configuration register 311 and scan configuration register 313 of digital module 405, and AHB bus 315 of sensor scanning module 401 are similar to those of sensor scanning module 301 for CS-DMA mode, and for the sake of brevity, the description of these modules will not be repeated.
[0051] Similar to CS-DMA mode, sensor scanning module 401 can operate autonomously to perform scanning of all sensors in a frame without CPU intervention or generating a CPU interrupt after each scan. However, unlike CS-DMA mode, local memory 417 of digital module 405 stores sensor scan configuration parameters for sensors in one or more scan frames. Local memory 417 may be RAM. In one embodiment, local memory 417 may be implemented as one or more register libraries. Scan configuration register 313 can load sensor scan configuration parameters for continuous scanning of frames from local memory 417 instead of from system memory via DMA as in CS-DMA mode. Advantageously, in AS-MS mode, the CPU, DMA, and AHB bus 315 are not used during frame scanning, avoiding the need for the CPU or the rest of the system to remain active during frame scanning to support DMA operations, at the expense of local memory 417. Sequencer 407 may run FSM to control the operation of sensor scanning module 401 to complete frame scanning.
[0052] Figure 8 The illustration shows a timeline of a sensor scanning module 401 executing a scan frame in AS-MS mode according to one embodiment of the present disclosure. It demonstrates that the sensor scanning module 401 configures the scan without requiring DMA resources and generates an interrupt at the end of the frame. CPU involvement is only required during initialization before the frame begins and during processing of the scanned data at the end of the frame.
[0053] At event 1, the CPU can initialize the sensor scanning module 401 by configuring the basic configuration register 311. The CPU can write the sensor scanning configuration parameters for one or more frames into the local memory 417. The sensor scanning configuration parameters for one or more frames can be stored in the local memory 417 as an array of data structures in a memory array or linked list. Event 1 can occur upon power-on or when the CPU changes the sensor scanning mode.
[0054] At event 2, the CPU can initiate frame start by setting the START_FRAME bit in basic configuration register 311. In one embodiment, frame triggering can be based on an external signal (e.g., GPIO) or an internal signal (e.g., a timer expiration event). This event triggers the first sensor configuration load event.
[0055] At event 3, sensor scanning module 401 loads the first sensor configuration parameters of the frame from local memory 417 into scan configuration register 313. The last register written may contain a START_SCAN bit to begin the first scan in the frame. Sensor scanning module 401 may perform frame scanning based on a linked list of sensor configuration parameters in local memory 417. Sensor scanning module 401 may maintain a pointer to this linked list so that, once the scan of the current sensor is complete, it loads sensor configuration parameters for subsequent sensor scans over the frame duration by incrementing the pointer to point to the sensor configuration parameters for the next sensor. Figure 8 The diagram shows three sensor configuration loading events from local memory 417 for three scans of a frame.
[0056] At event 4, when all scans of a frame are complete, the sensor scanning module 401 can issue an interrupt to allow the CPU to read and process the frame results. After processing the frame results, the CPU can initiate the next frame if needed by setting the START_FRAME bit in the basic configuration register 311. If the sensor scan configuration parameters for the next frame are not yet in local memory 417, the CPU can write a linked list of configuration parameters for the next frame into local memory 417. The sensor scanning module 401 can then be triggered to perform the next frame scan. The frame interval can be determined by the application firmware. In one embodiment, the sensor scanning module 401 can use a timer to periodically provide triggers for the start of a frame, without relying on the CPU to initiate the frame.
[0057] In AS-MS mode, sensor scanning module 401 autonomously performs frame scan transitions based on configuration parameters written from local memory 417 to the scan configuration register. As in CS-DMA mode, no CPU bandwidth is required except for initializing the sensors and configuring the basic configuration register 311 at the start of a frame scan and processing the scan results at the end of the frame. AS-MS mode provides the added benefit of eliminating the need for DMA channels and AHB bus arbitration to load scan configuration parameters for each scan. Instead, upon power-up, scan configuration parameters for all sensors in one or more frames are stored in local memory 417, and sequencer 407 cycles through the scan configuration parameters to complete the frame scan. Sensor scanning module 401 can operate independently, requiring only clock and power from the rest of the system, allowing the rest of the system to be in a low-power sleep mode during frame scanning. At the end of a frame, sensor scanning module 401 can issue an interrupt to allow the CPU to read and process the frame results to determine user interactions such as touch or gestures.
[0058] Figure 9A functional block diagram of a sensor scanning module 501 according to an embodiment of the present disclosure is shown. After each scan or after each frame, the sensor scanning module 501 performs an autonomous scan of all sensors in the frame without using CPU intervention, interrupts, or DMA resources until user interaction is detected in Low Power Always On Scan (LP-AOS) mode. The sensor scanning module 501 may be... Figure 2 Module 203. The LP-AOS mode is built on the AS-MS mode. The analog module 303, I / O interface 309, basic configuration register 311 and scan configuration register 313, local memory 417, and AHB bus 315 of the sensor scanning module 501 are similar to those of the sensor scanning module 401 used in AS-MS mode, and for the sake of brevity, the description of these modules will not be repeated.
[0059] Similar to AS-MS mode, LP-AOS mode loads scan configuration parameters from local memory 417 for continuous scanning of one or more frames to complete frame scanning. However, unlike AS-MS mode, LP-AOS mode does not generate interrupts to request the CPU to read and process the scanned data at the end of each frame. Instead, sensor scanning module 501 includes AOS data processing unit 519, which can process the scanned data during a frame to detect user interaction on the touch sensing interface. The ability of sensor scanning module 501 to process the scanned data to detect user interaction in LP-AOS mode allows the CPU and the rest of the system to operate in a low-power mode because the CPU, DMA, and AHB bus 315 are not used during frame scanning, and the CPU does not need to process the scanned data at the end of each frame to identify user touch events. Sensor scanning module 501 can operate from a separate power domain to actively perform frame scanning while the rest of the system is in sleep mode. Sensor scanning module 501 can issue an interrupt to wake up the CPU when AOS data processing unit 519 detects user interaction. The CPU can process the scanned data to recognize complex user interactions, such as gesture detection, which exceeds the detection capabilities of the AOS data processing unit 519. The sequencer 507 can run the FSM to control the operation of the sensor scanning module 501 to complete frame scanning.
[0060] Figure 10The illustration shows a timeline of a sensor scanning module 501 performing frame scanning in LP-AOS mode according to an embodiment of the present disclosure. It shows that the sensor scanning module 501 configures the sensor to perform multiple scan frames and generates an interrupt to wake the CPU from sleep mode when a user touch event is detected at the end of two half-frames. CPU involvement is only required before the first frame scan begins and when the sensor scanning module 501 processes the scanned data upon detecting user interaction.
[0061] At event 1, the CPU can initialize the sensor scanning module 501 by configuring the basic configuration register 311. The CPU can write the sensor scanning configuration parameters for one or more frames to the local memory 417. The sensor scanning configuration parameters for multiple frames can be stored in the local memory 417 as an array of data structures in a memory array or linked list. Event 1 can occur upon power-on or when the CPU changes the sensor scanning mode.
[0062] At event 2, the LP-AOS timer expires, triggering sequencer 507 to initiate a frame scan. In one embodiment, frame triggering can be provided based on an external signal (e.g., GPIO). This event triggers a first sensor configuration load event. Sensor scan module 501 loads the first sensor configuration parameters of the frame from local memory 417 into scan configuration register 313. The last register written may contain a START_SCAN bit to begin the first scan in the frame. Sensor scan module 501 may perform frame scanning based on a linked list of sensor configuration parameters in local memory 417. Sensor scan module 501 may maintain a pointer to this linked list to load sensor configuration parameters for consecutive sensor scans over the frame duration by incrementing the pointer to point to the sensor configuration parameters for the next sensor once the scan of the current sensor is complete. In one embodiment, sensor configuration parameters may change frame by frame, and local memory 417 may store a linked list of sensor configuration parameters for multiple frames.
[0063] At event 3, at the end of each scan in the frame, the AOS data processing unit 519 processes the scanned data to detect user interaction or whether the programmed conditions are met. Figure 10The example illustrates a scenario where no user interaction or programming condition is detected in the first two frames. In this scenario, at the end of each of the first two frames, the sensor scanning module 501 restarts the timer. When the timer expires, the sequencer 507 is triggered to initiate a new frame scan. In the third frame after two scans, the AOS data processing unit 519 detects user interaction. The sensor scanning module 501 can generate an interrupt to wake up the CPU. The CPU can switch to active mode to read the scanned data from the sensor scanning module 501 and can process the scanned data to further identify user interaction. In one embodiment, the AOS data processing unit 519 can execute a simple algorithm to determine whether there is a potentially valid user interaction or programming condition at the end of each scan. If so, the sensor scanning module 501 can wake up the CPU to execute a more complex algorithm to detect more complex gestures. In one embodiment, the scanned data can be stored in a data storage device (e.g., a FIFO). The CPU can read the data storage device to retrieve the scanned data for further processing.
[0064] Advantageously, the LP-AOS mode allows the sensor scanning module 501 to operate in an "always-on" mode while reducing overall system power consumption, because the sensor scanning module 501 operates from its own power domain and does not require periodically waking up the rest of the system. The result is a high refresh rate or low touch-to-wake latency without increasing average system power consumption. As a standalone and independently operating module, the sensor scanning module 501 can also be flexibly ported to different systems without system-level impact, allowing for customized solutions for touch sensing interfaces to be tailored to different applications. In one embodiment, the sensor scanning module can operate in any of the CS-DMA, AS-MS, or LP-AOS modes in a time-multiplexed manner. For example, the sensor scanning module can operate in LP-AOS mode for a period of time and switch to CS-DMA or AS-MS mode at specific events in the system.
[0065] Figure 11 An interface according to one embodiment of this disclosure is illustrated for synchronizing multiple sensor channels or multiple sensor chips to simultaneously perform multiple sensor scans for supporting a touch panel with a large number of sensors. To support a touch panel with a large number of sensors (e.g., a large touchscreen) using simultaneous multi-channel scanning, it may be necessary to synchronize the sensor scanning modules in multiple sensor channels or multiple sensor chips. For example, it may be necessary to synchronize and phase-align the sensor clocks or Tx clocks of all sensor channels to avoid crosstalk between channels. The operating clocks for the sensor scanning modules (301, 401, or 501) may also be synchronized, although phase alignment is not necessarily required.
[0066] When multiple sensor scanning modules operate in CS-DMA mode, the latency associated with loading sensor configuration parameters for scanning via DMA may differ for each module. When sensor scanning modules access different system memories, the latency can be a function of the DMA channel state and system memory bandwidth, and it is further complicated by DMA arbitration when sensor scanning modules access shared system memory. Because multiple sensor scanning modules may not simultaneously complete loading sensor configuration parameters for the next sensor scan, a no-dispute agreement mechanism (referred to as a consensus mechanism) can be implemented to instruct all sensor scanning modules to be ready for synchronizing the multi-channel sensors.
[0067] Figure 11 Three sensor scanning modules are illustrated for supporting simultaneous three-channel scanning of a touch-sensing panel. The sensor scanning module (which may also be referred to as an Autonomous Capacitive Sensing Subsystem (ACSS)) can be a CS-DMA mode module 301 and can reside in three chips. The master sensor scanning module can generate a sensor / Tx clock signal (SYNC_CLOCK) and a frame start signal (FM_SRT_OUT) to be received by the two slave sensor scanning modules to synchronize the operation of the three channels. The sensor / Tx clock signal is used to drive the sensor or Tx electrodes in all three sensor scanning modules to ensure that the sensor scans in all three channels are synchronized and phase-aligned. The frame start signal is used to synchronize the start of a frame. When the CPU in the master sensor scanning module writes the START_FRAME bit in the basic configuration register 311, the master sensor scanning module starts a frame by initiating a DMA request to load the scan configuration parameters for the first sensor scan into its scan configuration register 313. The master sensor scanning module generates FM_SRT_OUT to provide a trigger to start a frame for the slave modules. Upon receiving FM_SRT_IN from the two slave sensor scan modules, the slave modules also initiate their own DMA requests to load scan configuration parameters for their respective first sensor scan. In one embodiment, the frame start signal can be provided based on an external signal (e.g., GPIO) or an internal signal (e.g., a timer expiration event), eliminating the need for the CPU to periodically start frame scans. In one embodiment, all three sensor scan modules receive a common high-speed external clock (CLK_EXT) to synchronize their clock operations. In one embodiment, the master sensor scan module can output the system clock or a low-frequency version of the system clock to the two slave sensor scan modules for synchronizing their system clocks.
[0068] The SYNC signal (which may also be referred to as the busy signal) is a bidirectional (e.g., open-drain pull-up) signal used by all three sensor scan modules to indicate a consensus busy / ready state. In one embodiment, driving SYNC low indicates that at least one of the sensor scan modules is busy and therefore not ready to start scanning. A rising edge on SYNC indicates a consensus from all three sensor scan modules that they are all ready to start scanning. For example, when the CPU writes the START_FRAME bit to the master sensor scan module, the master sensor scan module begins its scan configuration loading operation and triggers scan configuration loading operations in two slave sensor scan modules using FM_SRT_OUT. All three sensor scan modules can drive SYNC low to indicate a busy state. The sensor scan module releases SYNC when it completes its scan configuration loading operation and is ready to start scanning. However, SYNC remains low while at least one other sensor scan module is still busy loading scan configuration parameters. A rising edge is only observed on SYNC when all three sensor scan modules have completed their scan configuration loading operation and released SYNC to indicate that they are ready to scan. Therefore, scanning of all three channels begins only upon "consensus" from all three sensor scanning modules. In one embodiment, SYNC can be driven low once a start frame signal or configuration load request is received. In another embodiment, the rising edge of SYNC can be sampled on the rising edge of the sensor / Tx clock signal (SYNC_CLOCK) to avoid synchronization problems between sensor scanning modules due to slow rise times of SYNC caused by weak pull-up resistors. In CS-DMA mode, the completion order of scan configuration load operations for the three channels may differ for different scans because each DMA channel may have different delays at any given time due to DMA state and system memory bandwidth. The consensus agreement mechanism implemented by SYNC ensures that the start of scanning of all channels is synchronized only when all sensor scanning modules are ready.
[0069] While a scan is in progress, SYNC can remain high. If any sensor scan module completes its scan and initiates the next scan configuration load operation by driving SYNC low, all other sensor scan modules can interpret the falling edge of SYNC as a request to perform the next scan. All other sensor scan modules can immediately hold SYNC low to indicate a busy state. A sensor scan module can release SYNC only when the current scan is complete, the scan configuration load operation for the next scan is complete, and it is ready to start the next scan. The next scan for all three channels will only begin when there is a consensus from all three sensor scan modules that they are ready. In this way, if a sensor scan module finishes its current scan early (e.g., due to a small number of sub-transitions in the scan due to a circular touchpad design), it will wait for all other sensor scan modules to complete their current scans and complete the loading of scan configuration parameters for the next scan before simultaneously starting the next scan for all channels.
[0070] Although the SYNC operation for synchronizing scans on all channels is described for CS-DMA mode, the consensus mechanism also applies to AS-MS or LP-AOS modes. For example, in AS-MS or LP-AOS mode, when a sensor scanning module initiates loading sensor configuration parameters from local memory, it can enable SYNC by driving it low. Once the sensor scanning module has finished loading the scan configuration parameters from local memory and is ready to begin scanning, it releases SYNC. However, SYNC can remain low until all sensor scanning modules release SYNC to indicate that they have finished loading their respective scan configuration parameters and are ready to begin scanning. All sensor scanning modules only begin their scans simultaneously when a rising edge is observed on SYNC to indicate that all sensor scanning modules have reached a consensus to begin scanning. In one embodiment, the sensor scanning module for multi-channel scanning of a touch sensing panel can operate in any of the CS-DMA, AS-MS, or LP-AOS modes in a time-multiplexed manner. For example, a sensor scanning module can operate in LP-AOS mode for a period of time and switch to CS-DMA or AS-MS mode at specific events in the system. In one embodiment, multiple sensor scanning modules can operate in any combination of CS-DMA, AS-MS, or LP-AOS modes within the same frame. For example, in a multi-channel configuration, a first sensor scanning module can operate in CS-DMA, a second sensor scanning module can operate in AS-MS mode, and a third sensor scanning module can operate in LP-AOS mode. The three sensor scanning modules can still use the described consensus mechanism to synchronize their multi-channel scans.
[0071] Figure 12 A timing diagram of three sensor channels for synchronously and simultaneously performing sensor scans without CPU intervention, according to an embodiment of the present disclosure, is shown. The sensor scanning module for these three channels is shown operating in CS-DMA mode.
[0072] At event 1, the CPU writes the START_FRAME bit to the master sensor scan module's basic configuration register 311. The master sensor scan module generates FM_SRT_OUT to trigger the start of frames for the two slave sensor scan modules. All three sensor scan modules initiate scan configuration load operations for the first scan via their DMA channels. Each sensor scan module can start the DMA transfer at a different time and can spend different amounts of time completing the DMA transfer depending on the DMA priority and system memory bandwidth. When a sensor scan module is triggered to start a frame or when initiating a scan configuration load operation, each sensor scan module drives SYNC low to indicate a busy state. When the scan configuration load operation is complete and the sensor scan module is ready to perform the scan, each sensor scan module releases SYNC.
[0073] At event 2, the last of the three sensor scanning modules completes its scan configuration loading operation and releases SYNC. Because the other two sensor scanning modules have already released their SYNC, a rising edge is observed on SYNC.
[0074] At event 3, the rising edge of SYNC is sampled on the rising edge of SYNC_CLOCK. The rising edge of the sampled SYNC indicates a consensus from all three sensor scan modules that they are all ready to begin scanning.
[0075] At event 4, all three sensor scanning modules begin scanning synchronously. During the scan, SYNC remains high. Once a sensor scanning module completes its scan and initiates the next scan configuration load operation via the DMA channel, it drives SYNC low to indicate a busy state.
[0076] At event 5, for the first scan, all three sensor scanning modules complete their scans simultaneously. All three sensor scanning modules drive SYNC low to re-enter a busy state and initiate a scan configuration loading operation for the next scan. Events 2, 3, and 4 are repeated to wait for all three sensor scanning modules to complete their scan configuration loading operations for the next scan, reaching a consensus that all three sensor scanning modules are ready to begin the next scan, and synchronously starting the next scan for all three channels.
[0077] At event 6, for the second scan, the sensor scan module (ACSS-0) for channel 0 completes the scan first and initiates the next scan configuration load operation via the DMA channel. Sensor scan module ACSS-0 drives SYNC low to indicate a busy state. The other two sensor scan modules can interpret the falling edge of SYNC as a request for the next scan and can keep SYNC low. The other two sensor scan modules may not release SYNC until their current scan is complete, the scan configuration load operation for the next scan is complete, and they are ready to start the next scan, in order to prevent sensor scan module ACSS-0 from starting the next scan prematurely.
[0078] At event 7, sensor scanning module ACSS-0 completes the scan configuration loading operation for the next scan and releases SYNC. However, SYNC remains low because the other two sensor scanning modules are still performing the current scan.
[0079] At event 8, the sensor scan module (ACSS-1) for channel 1 completes its current scan and also completes the scan configuration loading operation for the next scan. Sensor scan module ACSS-1 releases SYNC. However, SYNC remains low because the last sensor scan module (ACSS-2) is still performing its current scan. A rising edge on SYNC is only observed when sensor scan module ACSS-2 completes its current scan and also completes the scan configuration loading operation for the next scan, indicating a consensus that all three sensor scan modules are ready to start the next scan synchronously. Advantageously, the CPU does not need to synchronize channels and does not need an application layer interface between the sensor scan modules to start or synchronize scans.
[0080] Figure 13 A timing diagram according to an embodiment of the present disclosure is shown for synchronizing sensor scans of three sensor channels by waiting for consensus, when the sensor channels have variable timing for loading scan configuration parameters, without CPU intervention. At the start of a frame, DMA for the three sensor channels responds with a variable delay to complete the scan configuration loading operation. Once all sensor channels are configured, consensus is reached, and the sensor channels begin scanning in a lockstep manner. As a sensor channel completes its scan earlier, it continues loading scan configuration parameters for the next scan, but waits for all other sensor channels to complete their scans and load their scan configuration parameters for the next scan. The next scan begins in a lockstep manner only when a consensus is reached that all three sensor channels are ready to begin their next scan.
[0081] Figure 14An interface for synchronizing two sensor chips according to an embodiment of the present disclosure is shown, each sensor chip containing two sensor channels to perform multiple sensor scans simultaneously. The sensor scan module of one sensor chip may be a main sensor scan module (ACSS_0), which generates a sensor / Tx clock signal (e.g., Figure 11 SYNC_CLOCK) and the start of frame signal (e.g., Figure 11 The four sensor scanning modules (ACSS_1 and ACSS_2, ACSS_3) are located on the same chip (CHIP_0) as the master sensor scanning module, and the remaining two slave sensor scanning modules are located on the slave sensor chip (CHIP_1). The sensor / TX clock signal and frame start signal from ACSS_0 are used for synchronization between the master sensor chip (CHIP_0) and the slave sensor chip (CHIP_1). Similarly, the sensor / Tx clock signal and frame start signal generated by the master sensor scanning module (ACSS_0) can be used internally on the master sensor chip (CHIP_0) to synchronize the operation of the three slave sensor scanning modules. The four sensor scanning modules distributed across the two sensor chips can be used as follows: Figure 11 , Figure 12 and Figure 13 The consensus mechanism (SYNC signal) is used to synchronize the start of their scans. Therefore, with a frame trigger signal, all sensor scanning modules autonomously and synchronously complete all scans within the frame, without CPU intervention during the scan, regardless of whether the sensor scanning modules are in the same sensor chip or multiple sensor chips.
[0082] Figure 15 A flowchart of a method 600 for supporting autonomous scanning of a sensor in frames in CS-DMA, AS-MS, or LP-AOS modes for a single channel, according to an embodiment of this disclosure, is shown. Method 600 can be... Figure 2 , Figure 3 , Figure 7 , Figure 9 The FSM of sensor scanning modules 203, 301, 401, and 501 is used for practice.
[0083] At operation 601, the sensor scanning module awaits a start frame event. Before receiving the start frame event, the CPU can configure the sensor configuration of the sensor scanning module (e.g., CS-DMA, AS-MS, or LP-AOS operating modes and basic configuration register 311). In CS-DMA mode, the CPU can configure the DMA channel. In AS-MS or LP-AOS mode, the CPU can program local memory 417 to store sensor scan configuration parameters for one or more frames. In LP-AOS mode, the CPU can configure the wake-up condition. The CPU can trigger the start frame event by setting the START_FRAME bit. In one embodiment, frame triggering can be based on an external signal (e.g., GPIO) or an internal signal (e.g., a timer expiration event).
[0084] At operation 603, the sensor scanning module loads the sensor configuration for scanning. In CS-DMA mode, the sensor scanning module can issue a DMA write request to transfer the sensor configuration for the first sensor from system memory to scan configuration register 313. In AS-MS or LP-AOS mode, the sensor scanning module can load the sensor configuration for the first sensor from local memory 417. The sensor configuration may include scan parameters, input terminal details, start scan register value (e.g., the START_SCAN bit for starting the scan), and a pointer to the sensor configuration for the next sensor.
[0085] At operation 605, the sensor scanning module determines whether a start scan command has been received. The start scan command may be the START_SCAN bit written during the sensor configuration loading operation after the scan parameters have been loaded from the system memory of local memory 417.
[0086] At operation 607, if a start scan command has been received, the sensor scan module uses the loaded sensor configuration to perform a scan of the sensors in the frame. The scan can involve multiple stages, including fine and coarse initialization, conclusion, and sub-transformation.
[0087] At operation 609, if the sensor scanning module operates in LP-AOS mode, it processes the scanned data to determine whether a wake-up condition (e.g., user interaction) has been detected or whether a programming condition has been met. During LP-AOS mode, the CPU can be in sleep mode during frame scanning. When the sensor scanning module detects a potentially valid user interaction or programming condition during scanning, the CPU can be woken from sleep mode to further process the scanned data.
[0088] At operation 613, if a wake-up condition is detected in LP-AOS mode, the sensor scanning module generates a wake-up event. In one embodiment, the sensor scanning module may generate an interrupt to wake the CPU from sleep mode to execute an algorithm to detect user interactions, such as touches or gestures beyond the detection capabilities of the sensor scanning module. The sensor scanning module may then return to operation 601 to wait for the next start frame event.
[0089] At operation 611, if the sensor scanning module is operating in CS-DMA or AS-MS mode, the sensor scanning module determines whether the current scan is the last scan in the frame. If the current scan is not the last scan in the frame, the sensor scanning module returns to operation 603 to load the sensor configuration for the next scan. The sensor scanning module can also return to operation 603 to load the sensor configuration for the next scan when no wake-up condition is detected in LP-AOS mode.
[0090] At operation 613, if the current scan is the last scan in a frame in CS-DMA or AS-MS mode, the sensor scanning module generates a wake-up event. In one embodiment, the sensor scanning module may generate an interrupt for the CPU to read and process the scan results to determine user interactions such as touch or gestures. The sensor scanning module may then return to operation 601 to wait for the next start-frame event.
[0091] Figure 16 A flowchart of a method 700 for supporting autonomous scanning of a sensor in frames in CS-DMA, AS-MS, or LP-AOS modes in a synchronous multichannel configuration, according to an embodiment of this disclosure, is shown. Method 700 can be performed by... Figure 11 and Figure 14 In multi-channel or multi-chip configurations Figure 2 , Figure 3 , Figure 7 , Figure 9 The FSM of sensor scanning modules 203, 301, 401, and 501 is used for practice.
[0092] At operation 701, the sensor scanning module awaits a start frame event. Before receiving the start frame event, the CPU can configure the sensor configuration of the sensor scanning module (e.g., CS-DMA, AS-MS, or LP-AOS operating modes and basic configuration register 311). In CS-DMA mode, the CPU can configure the DMA channel. In AS-MS or LP-AOS mode, the CPU can program local memory 417 to store scan configuration parameters for one or more frames. In LP-AOS mode, the CPU can configure the wake-up condition. The CPU can trigger the start frame event by setting the START_FRAME bit. In one embodiment, frame triggering can be based on an external signal (e.g., GPIO) or an internal signal (e.g., a timer expiration event). In one embodiment, the slave sensor scanning module can receive the start frame event from the master sensor scanning module to synchronize the start of frames for all channels.
[0093] At operation 703, the sensor scanning module activates a busy / ready status signal (e.g., a bidirectional SYNC signal) to indicate a busy state. In one embodiment, the sensor scanning module may drive the SYNC signal low. A low SYNC signal indicates that at least one of the sensor scanning modules is busy and therefore not ready to begin scanning.
[0094] At operation 705, the sensor scanning module loads the sensor configuration for scanning. In CS-DMA mode, the sensor scanning module can issue a DMA write request to transfer the sensor configuration for the first sensor from system memory to scan configuration register 313. In AS-MS or LP-AOS mode, the sensor scanning module can load the sensor configuration for the first sensor from local memory 417. The sensor configuration may include scan parameters, input terminal details, start scan register value (e.g., the START_SCAN bit for starting the scan), and a pointer to the sensor configuration for the next sensor.
[0095] At operation 707, the sensor scan module invalidates the busy / ready status signal (e.g., releases the bidirectional SYNC signal) to indicate that the sensor scan module has completed loading its sensor configuration and is ready to scan. However, if at least one other sensor scan module is still loading its sensor configuration, the SYNC signal remains low. A rising edge on the SYNC signal is only observed when all sensor scan modules in a multi-channel or multi-chip configuration have completed their sensor configurations and have reached a consensus to start scanning.
[0096] At operation 709, the sensor scanning module determines whether a start scan command has been received. The start scan command can be a rising edge of the SYNC signal, which indicates that all sensor scanning modules in the channel are ready to begin scanning.
[0097] At operation 711, if a start scan command is received as indicated by the rising edge of a SYNC signal, the sensor scan module uses the loaded sensor configuration to perform a scan of the sensors in the frame. The scan can involve multiple stages, including fine and coarse initialization, conclusion, and sub-transformation.
[0098] At operation 713, if the sensor scanning module is operating in LP-AOS mode, it processes the scanned data to determine whether a wake-up condition (e.g., user interaction) has been detected or whether a programming condition has been met. During LP-AOS mode, the CPU can be in sleep mode during frame scanning. When the sensor scanning module detects a potentially valid user interaction or programming condition during scanning, the CPU can be woken from sleep mode to further process the scanned data.
[0099] At operation 715, if a wake-up condition is detected in LP-AOS mode, the sensor scanning module generates a wake-up event in operation 717. In one embodiment, the sensor scanning module may generate an interrupt to wake the CPU from sleep mode to execute an algorithm to detect user interactions, such as touches or gestures beyond the sensor scanning module's detection capabilities. The sensor scanning module may then return to operation 701 to wait for the next start frame event. If no wake-up condition is detected in LP-AOS mode, the sensor scanning module returns to operation 703 to enable a busy / ready state signal to indicate a busy state and load the sensor configuration for the next scan.
[0100] At operation 719, if the sensor scanning module is operating in CS-DMA or AS-MS mode, the sensor scanning module determines whether the current scan is the last scan in the frame. If the current scan is not the last scan in the frame, the sensor scanning module returns to operation 703 to enable the busy / ready status signal to indicate a busy state, and loads the sensor configuration for the next scan.
[0101] At operation 717, if the current scan is the last scan in a frame in CS-DMA or AS-MS mode, the sensor scanning module generates a wake-up event. In one embodiment, the sensor scanning module may generate an interrupt for the CPU to read and process the scan results to determine user interactions such as touch or gestures. The sensor scanning module can then return to operation 701 to wait for the next start-frame event.
[0102] Figure 17 A firmware architecture and data structure for a sensor module that supports autonomous sensor scanning in a frame using CS-DMA mode, according to an embodiment of the present disclosure, are shown.
[0103] The "sensing module" performs interrupt-driven and CPU-bandwidth-intensive sensor scanning operations, while the rest of the module performs specific data processing algorithms on the sensor scan data to detect various user interactions, such as touch and gestures.
[0104] Figure 18 The hardware-firmware interaction and data flow for loading a scan configuration from a data structure into a sensor module to perform sensor scanning in a frame using CS-DMA mode, according to an embodiment of the present disclosure, are illustrated.
[0105] The array of scan configuration data structures contains hardware-related parameters for each sensor scan within a frame. Information in each configuration includes details such as the sensing mode (CSX, CSD, or ISX), the GPIOs associated with the sensor, and information such as resolution and sensor clock. The last register contains information indicating whether this is the last scan in the frame, as well as a "scan start" control bit.
[0106] Each scan configuration data structure element has an associated DMA descriptor specifying the address (data source) of the scan configuration data structure and the address of the SCAN_CFG register (data destination), along with other DMA configuration information. Note that each descriptor points to the next descriptor (linked list) used for the next DMA transfer. To execute a scan frame, the firmware writes a "start of frame" bit into a register. The sequencer then issues a DMA request, based on which the first sensor-1 scan configuration is copied to the SCAN_CFG register via DMA. The sequencer only begins scan-related operations after the "start scan" bit (the last register) has been written, i.e., after the data transfer is complete. The sequencer performs a sensor scan based on the loaded configuration. At the end of the sensor scan, the results are pushed into a results FIFO, and a DMA request to load the next sensor scan configuration is issued only when the "last scan" bit in the current scan configuration is cleared. Sensor scans can be repeated for different scan configurations. At the end of the last scan, the scan configuration indicates the last scan in the frame, so the sequencer issues a "end of frame" interrupt, where a DMA request is made for writing the next scan configuration. The CPU can copy the scan results from the FIFO to a data structure for further data processing. In one embodiment, at the end of each scan or when the FIFO is full, another DMA transfer (FIFO to memory) can be used to transfer the data.
[0107] Figure 19The hardware-firmware interaction and data flow for copying a scan configuration data structure into the local RAM of a sensor module to perform a sensor scan in a frame using AS-MS mode, according to one embodiment of the present disclosure, are illustrated.
[0108] The scan operation is similar to CS-DMA mode scanning, except that the configuration is transferred between local RAM and SCAN_CFG by the sequencer instead of using DMA. To execute a scan frame, the firmware writes a "start of frame" bit to the configuration register. The sequencer then copies the sensor-1 scan configuration to the SCAN_CFG register. The sequencer only begins scan-related operations after the "start scan" bit (the last register) is written, i.e., after the data transfer is complete. The sequencer performs the scan based on the loaded configuration. At the end of the scan, the scan results are pushed into the results FIFO, and the sequencer loads the next scan configuration only when the "last scan" bit in the current scan configuration is cleared. After the last scan, the sequencer pushes the results into the FIFO, issues a "end of frame" interrupt, and terminates the frame. The CPU copies the scan results from the FIFO to a data structure for further data processing.
[0109] In one embodiment, Figure 2 , Figure 3 , Figure 7 , Figure 9 The sensor scanning modules 203, 301, 401, and 501 may include a memory and a processing device (not shown). The memory may be synchronous dynamic random access memory (DRAM), read-only memory (ROM), or other types of memory, which may be configured to store code to perform the functions of a WLAN driver. The processing device may be provided by one or more general-purpose processing devices, such as a microprocessor, a central processing unit, etc. In illustrative examples, the processing device may include a complex instruction set computing (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or a combination of instruction sets. The processing device may also include one or more special-purpose processing devices, such as application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), network processors, etc. The processing device may be configured to perform the operations described herein according to one or more aspects of this disclosure to perform autonomous scanning of the sensor in frames in a single-channel or multi-channel configuration.
[0110] Unless otherwise specified, terms such as “receive,” “generate,” “verify,” “execute,” “correct,” and “identify” refer to actions and processes performed or implemented by a computing device that manipulates and transforms data represented as physical (electronic) quantities in the registers and memory of the computing device into other data similarly represented as physical quantities in the memory or registers or other such information storage, transmission, or display devices of the computing device.
[0111] The examples described herein also relate to apparatus for performing the operations described herein. This apparatus may be specifically constructed for the desired purpose, or it may comprise a general-purpose computing device selectively programmed by a computer program stored in a computing device. Such a computer program may be stored in a computer-readable, non-transitory storage medium.
[0112] Some embodiments can be implemented as computer program products, which may include instructions stored on a machine-readable medium. These instructions can be used to program a general-purpose or special-purpose processor to perform the described operations. A machine-readable medium includes any mechanism for storing or transmitting information in a machine-readable form (e.g., software, processing application). Machine-readable media may include, but are not limited to, magnetic storage media (e.g., floppy disks); optical storage media (e.g., CD-ROMs); magneto-optical storage media; read-only memory (ROM); random access memory (RAM); erasable programmable memory (e.g., EPROM and EEPROM); flash memory; or another type of medium suitable for storing electronic instructions. A machine-readable medium may be referred to as a non-transitory machine-readable medium.
[0113] The methods and illustrative examples described herein are not inherently related to any particular computer or other device. Various general-purpose systems can be used in accordance with the teachings herein, or it can be demonstrated that constructing more specialized devices to perform the required method steps is convenient. The necessary structures for various such systems will emerge as set forth in the description above.
[0114] The foregoing description is intended to illustrate and not limit. Although this disclosure has been described with reference to specific illustrative examples, it will be appreciated that this disclosure is not limited to the described examples. The scope of this disclosure should be determined by reference to the appended claims and the full scope of their equivalents.
[0115] As used herein, the singular forms “a” and “described” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the terms “comprising” and / or “including” as used herein specify the presence of stated features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and / or groups thereof. Furthermore, the terms “first,” “second,” “third,” “fourth,” etc., as used herein, are meant as markers to distinguish different elements and may not necessarily have ordinal meanings specified according to their numerical values. Therefore, the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.
[0116] It should also be noted that in some alternative implementations, the functions / actions mentioned may not occur in the order shown in the figures. For example, two figures shown consecutively may actually be executed substantially simultaneously, or sometimes in reverse order, depending on the functions / actions involved.
[0117] Although the method operations are described in a specific order, it should be understood that other operations may be performed between the described operations, the described operations may be adjusted so that they occur at slightly different times, or the described operations may be distributed across a system that allows processing operations to occur at various intervals associated with the processing.
[0118] Various units, circuits, or other components may be described or claimed as being "configured to" or "configurable to" perform one or more tasks. In such a context, the phrase "configured to" or "configurable to" is used to imply a structure by indicating that the unit / circuit / component includes a structure (e.g., a circuit) that performs one or more tasks during operation. Thus, even when the specified unit / circuit / component is currently inoperable (e.g., not switched on), the unit / circuit / component may be considered configured to perform a task, or configurable to perform a task. Units / circuit / components used with the language "configured to" or "configurable to" include hardware—e.g., circuits, memory storing program instructions executable to perform operations, etc. The statement that a unit / circuit / component is "configured to" or "configurable to" perform one or more tasks is not explicitly intended to invoke paragraph 6 of 35 U.S.SC112 for that unit / circuit / component. Additionally, "configured as" or "configurable as" can include a general-purpose structure (e.g., a general-purpose circuit) manipulated by software and / or firmware (e.g., an FPGA or a general-purpose processor executing the software) to operate in a manner capable of performing the tasks(s) discussed. "Configured as" can also include adapting a manufacturing process (e.g., a semiconductor manufacturing facility) to manufacture a device (e.g., an integrated circuit) suitable for performing or implementing one or more tasks. "Configurable as" is expressly not intended to apply to blank media, unprogrammed processors or unprogrammed general-purpose computers, or unprogrammed programmable logic devices, programmable gate arrays, or other unprogrammed devices, unless accompanied by a programming medium that endows the unprogrammed device with the ability to be configured to perform the disclosed function(s).
[0119] For purposes of explanation, the foregoing description has been described with reference to specific embodiments. However, the illustrative discussion above is not intended to be exhaustive or to limit the invention to the precise forms disclosed. For example, although embodiments of the subject matter have been described using capacitive sensors with touchscreen panels, the subject matter is not limited thereto and can be applied to other types of sensor technologies or sensor applications using other types of sensors (e.g., inductive, magnetic, current, voltage sensors). In view of the foregoing teachings, many modifications and variations are possible. The embodiments were chosen and described in order to best explain the principles of the embodiments and their practical application, thereby enabling others skilled in the art to best utilize the embodiments and various modifications to suit a particular intended use. Therefore, the embodiments should be considered illustrative rather than restrictive, and the invention is not limited to the details given herein but can be modified within the scope and equivalents of the appended claims.
Claims
1. A capacitive sensing device, comprising: processor; An autonomous capacitive sensing subsystem (ACSS) is configured to: Receive start frame event; Upon receiving the start frame event, without intervention from the processor, a first sensor configuration for the first scan of the capacitive touch interface in a frame comprising multiple scans is loaded. The first sensor configuration is used to perform the first scan of the capacitive touch interface to receive sensor data; Determine if there is an additional scan of the frame to be executed; In response to determining an additional scan of the frame to be performed, without intervention from the processor, a next sensor configuration for the next scan of the frame is loaded, and the next scan of the capacitive touch interface is performed using the next sensor configuration; and In response to determining that there is no additional scan of the frame to be executed, the processor is signaled to process the sensor data.
2. The capacitive sensing device according to claim 1, wherein, The ACSS is configured to repeatedly load the next sensor configuration for the next scan of the frame without intervention from the processor, and to repeatedly execute the next scan using the next sensor configuration until there are no more frames to be scanned.
3. The capacitive sensing device according to claim 1, wherein, In order to load the first sensor configuration or the next sensor configuration without the intervention of the processor, the ACSS is configured to load the first sensor configuration or the next sensor configuration from system memory via a direct memory access (DMA) channel.
4. The capacitive sensing device according to claim 3, wherein, The ACSS is also configured to transfer the sensor data to the system memory via the DMA channel after the first scan or the next scan of the frame, so that the processor can process the sensor data when the processor is interrupted.
5. The capacitive sensing device according to claim 1, wherein, The ACSS includes local memory configured by the processor prior to the start frame event to store sensor configurations for the plurality of scans for the frame, and wherein, in order to load the first sensor configuration or the next sensor configuration without intervention from the processor, the ACSS is configured to load the first sensor configuration or the next sensor configuration from the local memory.
6. The capacitive sensing device according to claim 1, wherein, The ACSS is also configured as follows: The sensor data is processed to determine whether the wake-up conditions are met; and In response to the wake-up condition, a signal is sent to the processor to process the sensor data in order to determine the interaction on the capacitive touch interface.
7. The capacitive sensing device according to claim 6, wherein, When the ACSS is configured to perform the first scan or the next scan of the frame, the processor is in a low-power mode, and wherein the processor is woken up from the low-power mode when the processor is interrupted by the ACSS to process the sensor data.
8. The capacitive sensing device according to claim 1, wherein, The ACSS is a sensing subsystem configured to simultaneously scan one of a plurality of sensing subsystems of the capacitive touch interface, and the ACSS is further configured to perform the first scan or the next scan of the frame synchronously with the plurality of sensing subsystems.
9. The capacitive sensing device according to claim 8, wherein, In order to perform the first scan or the next scan of the frame synchronously with the plurality of sensing subsystems, the ACSS is configured as follows: In response to the start frame event, the start of the frames for the ACSS and for the plurality of sensing subsystems is synchronized; When the ACSS loads the first sensor configuration or the next sensor configuration, the busy signal is enabled; When the first sensor configuration or the next sensor configuration is loaded, the busy signal is set to invalid; and Before the ACSS is configured to start the first scan or the next scan of the frame for the ACSS in sync with the start of the first scan or the next scan of the frame for the plurality of sensing subsystems, the busy signal is waited for to indicate a consensus that all sensing subsystems in the plurality of sensing subsystems are ready.
10. The capacitive sensing device according to claim 9, wherein, In order to synchronize the start of the frames used for the ACSS and for the multiple sensing subsystems, the ACSS is configured as follows: Receive the start frame event from the processor, which is the main subsystem; In response to the start frame event, a frame start signal is generated; and The frame start signal is distributed to the plurality of sensing subsystems to synchronize the start of the frame of the plurality of sensing subsystems as slave subsystems with the start of the frame of the ACSS of the master subsystem.
11. A method for operating an autonomous capacitive sensing subsystem (ACSS) of a capacitive sensing device, comprising: The start frame event is received by the ACSS; Upon receiving the start frame event, without intervention from the processor of the capacitive sensing device, the ACSS loads the first sensor configuration for the first scan of the capacitive touch interface in a frame that includes multiple scans. The ACSS uses the first sensor configuration to perform the first scan of the capacitive touch interface to receive sensor data; The ACSS determines whether there is an additional scan of the frame to be executed; In response to determining an additional scan of the frame to be performed, without intervention from the processor, the ACSS loads a next sensor configuration for the next scan of the frame, and uses the next sensor configuration to perform the next scan of the capacitive touch interface; as well as In response to determining that there is no additional scan of the frame to be executed, the ACSS signals the processor to process the sensor data.
12. The method of claim 11, further comprising: Without the intervention of the processor, the ACSS repeatedly loads the next sensor configuration for the next scan of the frame, and the next scan is repeatedly executed using the next sensor configuration until there is no longer a scan of the frame to be executed.
13. The method according to claim 11, wherein, Loading the first sensor configuration or the next sensor configuration by the ACSS without intervention from the processor includes: The ACSS loads the first sensor configuration or the next sensor configuration from the system memory via a direct memory access (DMA) channel.
14. The method of claim 13, further comprising: After the first scan or the next scan of the frame, the ACSS transfers the sensor data to the system memory via the DMA channel for the processor to process the sensor data when the processor is interrupted.
15. The method of claim 11, further comprising: Prior to the start frame event, the ACSS stores the sensor configurations for the plurality of scans used in the frame in local memory. Furthermore, the loading of the first sensor configuration or the next sensor configuration by the ACSS without the intervention of the processor includes: The ACSS loads the first sensor configuration or the next sensor configuration from the local memory.
16. The method of claim 11, further comprising: The ACSS processes the sensor data to determine whether the wake-up conditions are met; as well as In response to the wake-up condition, the ACSS signals the processor to process the sensor data to determine the interaction on the capacitive touch interface.
17. The method according to claim 11, wherein, The ACSS is one of a plurality of sensing subsystems configured to simultaneously scan the capacitive touch interface, and the method further includes: The first scan or the next scan of the frame is performed synchronously by the ACSS and the plurality of sensing subsystems.
18. The method according to claim 17, wherein, The execution of the first scan or the next scan of the frame synchronously by the ACSS and the plurality of sensing subsystems includes: In response to the start frame event, the start of the frames for the ACSS and for the plurality of sensing subsystems is synchronized; When loading the first sensor configuration or the next sensor configuration, the ACSS will enable the busy signal; When the first sensor configuration or the next sensor configuration is loaded, the ACSS invalidates the busy signal; and Before the first scan or the next scan of the frame for the ACSS begins to be executed synchronously with the commencement of the first scan or the next scan of the frame for the plurality of sensing subsystems, the ACSS waits for the busy signal to indicate that all sensing subsystems in the plurality of sensing subsystems are ready.
19. The method according to claim 18, wherein, Synchronizing the start of the frames for the ACSS and for the plurality of sensing subsystems includes: The ACSS receives the start frame event from the processor, which is the main subsystem; In response to the start frame event, a frame start signal is generated; and The frame start signal is distributed to the plurality of sensing subsystems to synchronize the start of the frame of the plurality of sensing subsystems as slave subsystems with the start of the frame of the ACSS of the master subsystem.
20. A capacitive sensing system, comprising: processor; A capacitive touch interface that includes multiple capacitive sensors; An autonomous capacitive sensing subsystem (ACSS) is configured to: Receive start frame event; Upon receiving the start frame event, without intervention from the processor, a first sensor configuration for the first scan of the capacitive touch interface in a frame comprising multiple scans is loaded. The first sensor configuration is used to perform the first scan of the plurality of capacitive sensors of the capacitive touch interface to receive sensor data; Determine if there is an additional scan of the frame to be executed; In response to determining an additional scan of the frame to be performed, without intervention from the processor, a next sensor configuration for the next scan of the frame is loaded, and the next scan of the plurality of capacitive sensors of the capacitive touch interface is performed using the next sensor configuration; and In response to determining that there is no additional scan of the frame to be executed, the processor is signaled to process the sensor data.
Citation Information
Patent Citations
Automated capacitive touch scan
CN102187298A
Channel scan logic
US20080162997A1