The present invention relates to drivers for linear and rotary vibrators of electronic devices.
Electronic devices such as smart phones and tablets have become popular and ubiquitous. Manufacturers of such devices are adding more and more features to these devices, and they are often equipped with powerful processors, significant memory, and open operating systems, which allow many developers to add different applications. Popular applications provide functions such as calling, emailing, texting, image acquisition, image display, music and video playback, location determination (e.g., GPS), and internet browsing functions, among others. Further, such devices often include various user input and output components for instructing operation of the devices and for perceiving information from the devices, respectively. For example, many electronic devices are equipped with linear and rotary vibrators, which provide functions such as ringer vibration and haptic feedback. Particularly, a rotary vibrator, such as a vibrator actuated by an eccentric rotary motor (ERM), is commonly used for ringer vibration, for providing haptic feedback, and/or for performing other functions. Also, a linear vibrator, such as a vibrator actuated by a linear resonant actuator (LRA), commonly provides for ringer vibration and/or haptic feedback, including haptic feedback for pressing a key on a keypad displayed on a touch screen.
Although each of ERMs and LRAs can perform a variety of functions, the two types of vibrators have different performance characteristics, which may or may not be desirable based on product requirements. Thus it is often the case that, when electronic devices of a given type are being manufactured, on some occasions it will be desirable to implement an ERM in the electronic device but on other occasions it will be desirable to include a LRA in the electronic device. That said, each type of vibrator usually requires its own driver circuit. Consequently, for electronic devices that can have either a rotary vibrator or a linear vibrator, it is typically required that two separate circuits be available to allow for implementation in each respective electronic device the particular type of vibrator that is desired for that electronic device. This can be expensive, can in some cases require redundant circuitry, and/or can limit the amount of space available for other components of an electronic device. The latter point is especially a concern for smart phones. In addition, the signals or waveforms required to drive the vibrators can be complicated to generate, and require complex software for that purpose. Often there is a need for different processors with different interfaces in order to generate the different types of signals or waveforms required to operate the different types of vibrators.
Thus, it would be desirable to provide electronic devices, and methods performed by electronic devices, that address one or more of these (and possibly other) issues associated with implementing vibrators of different types in electronic devices.
In at least one embodiment, the present disclosure relates to a system for driving a vibrator in an electronic device. The system includes an integrated circuit having one or more input terminals, one or more output terminals by which the integrated circuit is configured to be coupled to the vibrator, a vibrator driver amplifier circuit coupled at least indirectly to the one or more output terminals, and one or more additional circuit components coupled at least indirectly between the one or more input terminals and the vibrator driver circuit. The system further includes at least one processing portion for providing one or more input signals to the one or more of the input terminals of the integrated circuit. The integrated circuit is configured to provide one or more control signals via the one or more output terminals for receipt by the vibrator, based at least in part upon the one or more input signals. Also, the system is configurable such that the one or more control signals to be provided will include one or more first signals if the vibrator is a first vibrator device of a first type, and such that the one or more control signals to be provided include one or more second signals if the vibrator is a second vibrator device of a second type that is different from the first type.
In at least one additional embodiment, the present disclosure relates to an electronic device that includes a vibrator selected from the group consisting of a rotary vibrator and a linear vibrator, and a plurality of processing portions. The plurality of processing portions include an integrated circuit having one or more input terminals, one or more output terminals by which the integrated circuit is at least indirectly coupled to the vibrator, a vibrator driver amplifier circuit coupled at least indirectly to the one or more output terminals, and one or more additional circuit components coupled at least indirectly between the one or more input terminals and the vibrator driver amplifier circuit. Also, the plurality of processing portions additionally include at least one further processing portion for providing one or more input signals to the one or more of the input terminals of the integrated circuit. The plurality of processing portions and the integrated circuit are configurable so as to enable the integrated circuit to provide either a first set of control signals or a second set of control signals via the one or more output terminals for receipt by the vibrator, the first set of control signals being suitable for driving the vibrator if the vibrator is the rotary vibrator and the second set of control signals being suitable for driving the vibrator if the vibrator is the linear vibrator.
In at least one further embodiment, the present disclosure relates to a method of controlling operation of a vibrator in an electronic device. The method includes providing an integrated circuit within the electronic device that includes a vibrator driver amplifier circuit, and determining whether the vibrator is of a first type or of a second type. The method also includes receiving one or more input signals at the integrated circuit, providing one or more intermediate signals to the vibrator driver amplifier circuit, the one or more intermediate signals being based at least indirectly upon the one or more input signals, and amplifying the one or more intermediate signals by way of the vibrator driver amplifier circuit to produce one or more amplified signals. The method further includes outputting one or more control signals that either are respectively the one or more amplified signals or are based at least indirectly upon the one or more amplified signals, for receipt by the vibrator, whereby the controlling of the operation of the vibrator is achieved, and the controlling is particularly suited to reflect whether the vibrator is of the first type or the second type.
Disclosed herein are example vibrator drivers and methods performed at least in part by some of the vibrator drivers (and, in some cases, also by associated components), which in at least some embodiments address concerns associated with having a separate respective circuit for each type of vibrator found in an electronic device. In particular, in at least some embodiments, the vibrator drivers disclosed herein can each individually drive (without requiring another driver) two vibrators of two different types. For example, at least one of the vibrator drivers can individually drive either a rotary vibrator such as an eccentric rotary motor (ERM) vibrator or a linear vibrator such as a linear resonant actuator (LRA) vibrator, depending upon which type of vibrator happens to be implemented in the electronic device and coupled to the vibrator driver. Additionally, in at least some embodiments, a configurable logic block or logic state machine of some of the drivers can generate a pulse-width modulation (PWM) waveform suitable for exciting one of the vibrators instead of employing a separate signal processing component, such as a microprocessor, for the purpose of generating the PWM waveform. Also, in at least some embodiments, the use of such devices simplifies software requirements of a respective electronic device having one of the vibrator drivers. Further, in at least some embodiments, a simple on-off controller facilitates control of some of the vibrator drivers rather than requiring PWM waveforms to be inputted at inputs of the vibrator drivers.
In at least some embodiments, the input terminals and output terminals, respectively, of the vibrator drivers are digital inputs and digital outputs, respectively. Input signals received at the digital inputs particularly are able to logically map to respective programmable target voltages available from an array of target voltages at the vibrator drivers. In at least some such embodiments, the input terminals of the vibrator drivers are general purpose input/outputs (GPIOs), which allows the vibrator drivers to be compatible with other devices that employ GPIO(s), such as many other control devices, whether these devices are integrated circuits or other forms of electrical circuitry. Additionally, in some embodiments, the use of multiple GPIOs facilitates selecting different target voltages over time, which generates different wave patterns that a PWM converter converts to a PWM waveform. In at least some case, this allows for time varying PWM waveforms to be achieved.
Further, the use of multiple GPIO inputs also in at least some embodiments allows for an input multiplexer selector to choose one particular logic device or processor to actually drive the inputs for the vibrator driver (in other words, at one given time, the vibrator driver can base its operation upon signal(s) from one processing device but; at another given time, the vibrator driver can base its operation upon signal(s) from another processing device). This conversion and the selection of the target voltages can all occur within one of the vibrator drivers, which correspondingly simplifies the requirements of the respective electronic device in terms of the software needed and operated (e.g., by other processing device(s) of the electronic device) for the purpose of driving vibrators. Further with respect to simplifying software requirements, the vibrator drivers can use and/or include a timeout function that prevents an overvoltage or excess power condition at an output of one of the drivers.
In at least some embodiments or circumstances, the vibrator drivers are outputting programmable target differential voltages that various vibrators and features of such vibrators require for desired operation. Also, or alternatively, in at least some embodiments or circumstances, the various vibrators and their features are driven by various waveforms and sequences generated by selecting different target voltages over time. For example, the vibrator drivers can incorporate a state machine that can generate one of the various waveforms and sequences. The state machine does such by generating one or more voltage levels, where the state machine sustains each of the levels for a programmable duration of time. Furthermore, a state machine of one of the vibrator drivers facilitates generating a first higher amplitude waveform, followed by a final steady state waveform, and then a second higher amplitude waveform. This preceding pattern can enhance the tactile feedback of a respective vibrator. Additionally, a state machine of one of the vibrator drivers can generate a chirp waveform (which can be linear chirp waveform) commonly required by linear vibrators. Further, in some embodiments, other internal components of the vibrator drivers or respective electrical devices can generate desired waveforms. For example, a microprocessor can generate and control a digital waveform being inputted into one of the vibrator drivers.
Referring particularly to
In the present embodiment, the electronic device 102 also includes a movement sensing assembly, which in
As discussed in further detail below, the electronic device 102 among other things also includes a vibrator device (or simply vibrator) 112, which depending upon the embodiment or implementation can take the form of for example, either an ERM vibrator or a LRA vibrator. As shown, the vibrator 112 is mounted internally within the electronic device 102 (as represented by the vibrator being shown in phantom), and the vibrator 112 is particularly driven by a vibrator driver circuit (or simply driver) 116 that in turn is in communication (via one or more internal communication links 232) with one or more processing portions 204 as described in further detail with respect to
Although in the present embodiment the electronic device 102 includes only the single vibrator 112, in other embodiments it is possible that the electronic device 102 will include more than one vibrator, where the multiple vibrators can be several of the same type of vibrator (for example, several ERM vibrators or several LRA vibrators) or of several different types. For example, in some other embodiments the electronic device 102 will include both one of the ERM vibrators and one of the LRA vibrators. As described above, it is intended that the vibrator driver 116 will drive only one vibrator at a time. Thus, in such embodiments where multiple vibrators are present, it is further envisioned that multiple ones of the vibrator driver 116 would respectively be present and configured accordingly to drive the different respective vibrators.
Nevertheless, in other embodiments, it is alternatively possible that multiple vibrators of the same or different types could be driven by the same vibrator driver. In some such embodiments, such an arrangement can be achieved by connecting a selector, multiplexer, or multiplexer-type circuit (e.g., switches or relays and enable lines) between the vibrator driver and the various vibrator drivers, controlling the selector/multiplexer/multiplexer-type circuit so that at different respective times the different respective vibrator drivers are coupled to (in communication with) the vibrator driver (but such that multiple ones of the vibrators are not simultaneously coupled to the vibrator driver), and further operating the vibrator driver in an appropriate manner at the different respective times so that appropriate control signals are provided to the respective vibrators when the respective vibrators are coupled to (in communication with) the vibrator driver. Regardless of whether one vibrator driver or multiple vibrator drivers are employed in any given embodiment, the operation of such driver(s) can be controlled by the one or more processing portions 204 that are coupled to the driver(s).
Referring to
More particularly with respect to the processing portions 204, depending upon the embodiment these can include one or more processing devices that each can take any of a variety of different forms (e.g., a microprocessor, microcomputer, application-specific integrated circuit, and/or the like). In the present embodiment, the one or more other processing devices or circuits particularly include a first digital processor (shown as a central processing unit or “CPU” #1) 234 and a second digital processor (shown in
As for the memory 206, this can encompass one or more memory devices of any of a variety of forms (e.g., read-only memory, random access memory, static random access memory, dynamic random access memory, non-volatile FLASH memory, etc.), and can be used by the processor 204 to store and retrieve data. It should be appreciated that (although not shown in
More particularly, each operating system includes executable code, also known as device drivers, that controls basic functions of the electronic device, such as interaction among the various internal components such as those encompassed by 208 and 210, communication with external devices via the wireless transceivers 202 and/or the component interface 212, and storage and retrieval of applications and data to and from the memory 206. Each application includes executable code that utilizes an operating system to provide more specific functionality for the communication devices, such as file system service and handling of protected and unprotected data stored in the memory 206. Although many such programs govern standard or required functionality of the electronic device 102, in many cases the programs include applications governing optional or specialized functionality, which can be provided in some cases by third party vendors unrelated to the electronic device manufacturer. Finally, with respect to informational data, an operating system or programs for performing functions of the electronic device 102 can reference and/or manipulate the non-executable code or information. Such informational data can include, for example, data that is preprogrammed upon the electronic devices 102 during manufacture, or any of a variety of types of information that is uploaded to, downloaded from, or otherwise accessed at servers or other devices with which the electronic device 102 are in communication during their ongoing operation.
With respect to each of operating systems, applications, and informational data, it should be appreciated that such data can arrive at the electronic device in any of a variety of manners. For example, embodiments encompassed herein can include computer program code containing instructions embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, solid-state drives or any other computer-readable storage medium that are installed in, implemented in relation to, or in communication with the electronic device 102. Indeed, in addition to being preprogrammed (e.g., at a location at which the electronic device 102 is manufactured), or provided on memory device(s) of various types, program code can be loaded into the electronic device 102 (and subsequently executed) by way of transmission over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation.
It should be appreciated, notwithstanding any particular description provided herein, developers can program the electronic device 102 such that the processing portions 204 and memory 206 interact with the other components of the electronic device to perform any of a variety of functions, including some of the methods described herein. Although not specifically shown in
Regarding the wireless transceivers 202, in the present embodiment these can include both a cellular transceiver 203 and a wireless local area network (WLAN) transceiver 205. Each of the wireless transceivers 202 utilizes a wireless technology for communication, such as cellular-based communication technologies including analog communications (using AMPS), digital communications (using CDMA, TDMA, GSM, iDEN, GPRS, EDGE, etc.), and next generation communications (using UMTS, WCDMA, LTE, IEEE 802.16, etc.) or variants thereof, or peer-to-peer or ad hoc communication technologies such as HomeRF, Bluetooth and IEEE 802.11(a, b, g or n), or other wireless LAN communication technologies.
Example operation of the wireless transceivers 202 in conjunction with others of the internal components of the electronic device 102 can take a variety of forms and can include, for example, operation in which, upon reception of wireless signals, the internal components detect communication signals and the transceiver 202 demodulates the communication signals to recover incoming information, such as voice and/or data, transmitted by the wireless signals. After receiving the incoming information from the transceivers 202, the processing portions 204 (e.g., the first digital processor 234) format the incoming information for the one or more output components 208. Likewise, for transmission of wireless signals, the processing portions 204 format outgoing information, which may or may not be activated by the input components 210, and convey the outgoing information to one or more of the wireless transceivers 202 for modulation as communication signals. The wireless transceivers 202 convey the modulated signals to a remote device, such as a cell tower or an access point (not shown).
The output components 208 can include a variety of visual, audio, and/or mechanical outputs. For example, the output components 208 can include one or more visual output components 216 such as the display screen 106 of the touch screen 108. The one or more audio output components 218 can include a speaker, alarm, and/or buzzer; and the one or more mechanical output components 220 can include, among other things, the vibrator 112. As discussed above, the vibrator 112 can take a variety of forms including, for example, that of a rotary vibrator (e.g., an ERM vibrator) or a linear vibrator (e.g., a LRA vibrator), and the number and type(s) of vibrator(s) that are present can vary depending upon the embodiment. Further as shown, the output components 208 and particularly the mechanical output components 220 are further shown to specifically include the vibrator driver 116. As shown, it is the vibrator driver 116 that is particularly in communication with other internal components of the electronic device 102 such as the digital processors 234, 236 of the processing portions 204 via the communication link(s) 232, and the vibrator driver based at least in part upon such communications in turn controls operation of the vibrator 112.
The input components 210 can include one or more visual input components 222 such as an optical sensor of a camera, one or more audio input components 224 such as a microphone, and one or more mechanical input components 226 such as the touch detection surface 104 of the touch screen 108 and the buttons 111, as well as (in other embodiments) other device(s) such as a keyboard, keypad, mouse, and/or joystick. Actions that can actuate one or more of the input components 210 can include, in addition to simply applying pressure by way of a finger or a stylus to one or more of the input components, other actions, for example, powering on, opening, unlocking, moving, and/or operating the electronic device 102.
Lastly, the sensors 228 of the electronic device 102 can include both proximity sensors 229 and other sensors 231, such as an accelerometer, a gyroscope, or any other sensor that can provide pertinent information, such as to identify a current location or orientation of the device. Although the sensors 228 and input components 210 are described as encompassing particular specific devices in the present embodiment, it should be appreciated that, depending upon the circumstance or embodiment, input component(s) can be considered sensor(s) and vice-versa.
Turning to
As additionally shown in
In the present embodiment of
More particularly, in the present embodiment, an input signal waveform (or multiple waveforms) for the vibrator driver 116 is received by one or more of the first, second, and/or third input terminals 303, 304, and/or 305, respectively. In the present embodiment, the input signals can take the form of direct current (DC) signals and/or time-varying digital waveforms that at any given time are indicative of (or take on) either high (e.g., “1”) or low (e.g., “0”) values. Further in this regard, in the present embodiment, the first and second input terminals 303 and 304 are particularly coupled to, and receive input signals from, the first digital signal processor 234, while the third input terminal 305 is coupled to, and receives input signals from, the second digital signal processor 236. As for the fourth input terminal 306, in the present embodiment this terminal is capable of receiving a different microcontroller (“uC”) signal input directly received from another microcontroller, which (although not shown) can actually be integrated on the same integrated circuit (IC) as the vibrator driver 116, and which can also be considered as being among the processing portions 204 of the electronic device 102.
Notwithstanding the particular arrangement shown in
With respect to the multiplexer 308, in the present embodiment the multiplexer is a four-to-one (4:1) multiplexer having four input ports that are respectively coupled first, second, third, and fourth input terminals 303, 304, 305, and 306 (indeed, the input ports of the multiplexer and input terminals of the vibrator driver 116 can be considered one and the same structures). The multiplexer 308 additionally includes an output port 309 that communicates a selected one of the input signal waveforms communicated via a selected one (or more) of the input terminals 303, 304, 305, and 306. Selection among the input terminals 303, 304, 305, and 306 can (and typically will) vary over time during operation of the vibrator driver. That is, depending on the mode of the electronic device 102, the multiplexer 308 is configured so that specific ones of the input terminals are selected at respective given times. Selection among the signals provided at the input terminals 303, 304, 305, and 306 occurs in accordance with operation of a selector register 307 (shown in the present embodiment to be referred to as a “VIB_IN_SEL[1:0]” register) of the multiplexer 308, which in this embodiment is a serial peripheral interface (SPI) register. The selector register 307 is connected to, and provides selection signals to, a selector input port 302 of the multiplexer 308.
In the present embodiment, the first multiplexer 308 is configured to allow for selection of only one of the input terminals 303, 304, 305, 306 at any respective given time, where the selected one of the input terminals can change during different times (but also the selected input terminal can remain the same during successive time periods as well). That said, in alternate embodiments it is possible that the vibrator driver 116 can allow for selection of multiple input terminals at one time (and/or selection of a comparison between multiple input terminals, or a logical combination of input signals on these terminals), and thus the selection of one or more inputs can initiate or control the functionality of the vibrator driver 116. That is, although in some embodiments only one input terminal is selected at any given time by the first multiplexer 308, alternatively, any given number of input terminals (e.g., more than one of the input terminals 303, 304, 305, and 306) can be selected at any given time. Additionally, in some embodiments, initiation of the functionality of the vibrator driver 116 begins with the selector register 307 being set to a first binary number.
Still referring to
In the present embodiment, the output signal (or waveform) communicated from the output port 309 of the first multiplexer 308 to the selector input port 315 of the second multiplexer 310 can represent either a logic value of “0” or a logic value of “1” (low or high value, respectively) based upon the values provided at the selected one of the input terminals 303, 304, 305, and 306. When the output signal takes on the logic value of “0”, this results in the selection of the first target voltage V0 by the second multiplexer 310, such that the target voltage V0 is then provided at an output port 318 of the second multiplexer. Alternatively, when that output signal received at the selector input port 315 takes on the logic value of “1”, this results in the selection of the second target voltage V1 by the second multiplexer 310, such that the target voltage V1 is then provided at an output port 318 of the second multiplexer. It should further be appreciated that, although the waveform provided to the selector input port 315 takes on values of “0” or “1”, the values V0 and V1 need not be values of “0” and “1” but rather can be set to any of a variety of discrete levels representative of a voltage to be output. More particularly, in the present embodiment, the first and second target voltages V0 and V1 respectively are programmable via respective first and second target voltage registers 313 and 314 (shown in the present embodiment as having “VIB_LEVEL0[6:0]” and “VIB_LEVEL1[6:0]” values, respectively), which again in the present embodiment are SPI registers. It should be noted that, although the various registers described herein are described in at least some cases as storing particular numbers of bits, these are only intended to be examples and can be varied depending upon the embodiment. For example, although the voltage registers 313 and 314 are shown as being 6-bit registers, in other embodiments these registers can be 8-bit registers or other types of registers.
Although not shown in
Further as shown in
More particularly, the overall output formed by the difference between the two output signals coming from the output ports 331, 333 of the PWM converter 320 is a discrete waveform having signals that are appropriate for causing the amplifier 330 to generate and output desired voltage signals at first and second output ports 336 and 337, respectively, of the amplifier 330, which are coupled to and used to drive the vibrator 112. The first and second output ports 336 and 337 respectively in the present embodiment are power amplifier output ports capable of supplying sufficient current to drive the vibrator (albeit the output ports can take other forms as well depending upon the embodiment). More particularly, given receipt of appropriate signals from the output ports 331, 333 of the PWM converter 320, the amplifier 330 generates at the output ports 336, 337 voltages varying between the supply rail voltages of the amplifier, such that the average value over time will be the first target voltage V1 and the second target voltage V0.
As already discussed above, in the present embodiment as indicated by solid lines, the vibrator 112 is particularly shown to be the ERM vibrator 114. However, also as already discussed, the vibrator driver 116 is configurable so that the vibrator driver can be not only configured and operated to drive the ERM vibrator 114, but also can be configured and operated to drive at least one other type of vibrator as well. Thus, in this example as illustrated by
It should further be noted that the output signals provided via the output ports 336, 337 are amplified versions of the output signals provided at the output ports 331, 333, such that an overall output signal constituted by the difference (e.g., the voltage difference) between the signals at the output ports 336, 337 is an amplified version of the overall output signal constituted by the difference between the signals at the output ports 331, 333 of the PWM converter 320. As already noted, that in the present embodiment the amplifier 330 is controlled so that the average output signal from the amplifier provided at the output ports 336, 337 is the voltage V1 (at some times) and the voltage V0 (at other times). Also as shown, the amplifier 330 further includes additional input ports 335 and 338, which also are supply input terminals of the vibrator driver 116 by way of which the amplifier 330 (and thus the vibrator driver) are coupled to a power source V and to ground, respectively. The amplifier 330 is a hardware driver that generates amplified signals suitable for driving the vibrator 112, while the signals provided by the PWM converter 320 at the output ports 331, 333 (as well as the other signals communicated to or within the vibrator driver 116, other than with respect to the input ports 335 and 338) can be standard low-power signals such as, for example, complementary metal oxide semiconductor (CMOS) signals. Alternatively, the signal received at the input port 321 of the PWM converter 320 can be a low-power signal while the signals provided at the output ports 331, 333 of the PWM converter can be higher-power signals. Although in the present example embodiment, the PWM converter 320 provides the two differential output signals at the two output ports 331, 333, in other embodiments other circuit(s) can be employed including, for example, a single-ended amplifier with only a single output. Also, it should be appreciated that the particular values of the target voltages V1 and V0 (and particularly the first target voltage V1 relative to the second target voltage V0) can vary widely depending upon the embodiment. For example, in one embodiment, the first and second target voltages V1 and V0 respectively generated by the first and second voltage generators 311 and 312, respectively (which directly or indirectly correspond to register values from the target voltage registers 313, 314) can be two's complement numbers that are representative of the voltages and in steps of any of a variety of sizes (for example, steps of 91.81 mV), where the voltage numbers are independent of one another (in alternate embodiments, the register values can also be in other formats including, for example, a unipolar format, a binary coded decimal or BCD format, a one's complement format, etc.).
Notwithstanding the example embodiment provided in
Although similar in these respects, the vibrator driver 616 of
Further as shown, selection operation of the multiplexer 610 is governed by signal(s) received at a selector input port 615 thereof, as provided form an output port 609 of an input selection and logic map 608. As shown, the input selection and logic map 608 of the vibrator driver 616 of
In addition to the embodiments discussed above, the present disclosure is intended to encompass further embodiments as well. For example, while the amplifier 330 (output amplifier) in the present example is a Class D amplifier, it can also in some embodiments be any of a variety of other types of amplifiers that are switch-mode amplifiers or even other types of amplifiers. Also, in some embodiments, other components can be employed instead of the PWM converter 320 including for example other signal converters including for example other discrete-level converters in which one or more target voltage input signals (e.g., target voltages such as V0 and V1 discussed above) are input and converted into signals suitable for driving directly or indirectly (e.g., via an amplifier such as the amplifier 330) a vibrator such as the ERM or LRA vibrators. In at least some circumstances, particular selections of amplifiers are complementary to particularly selections of signal converters. For example, a voltage digital-to-analog converter (DAC) can be employed as a signal converter (e.g., in place of the PWM converter 320) in combination with a linear amplifier (as the output amplifier corresponding to the amplifier 330) or, also for example, a DAC can be employed as a signal converter in combination with a class AB amplifier employed as the amplifier.
Turning to
As shown, upon starting, the method 400 begins at a step 402 at which the selector register 307 is programmed (more particularly, the values of the VIB_IN_SEL[1:0] SPI bits are set) to output a selector signal to the selector input port 302 that selects one of the first, second, third, and fourth input terminals 303, 304, 305, and 306 of the vibrator driver 116 to be the source of the input signal that will govern further operation of the vibrator driver. More particularly, this selection determines which of the signals provided to the input terminals 303, 304, 305, and 306 will be accepted by the first multiplexer 308 and used as the output at the output port 309 of the first multiplexer. The step 402 shows that the driving input “GPIOx” is selected, which is intended to indicate that any of the first input terminal 303 (“GPIO1”), second input terminal 304 (“GPIO2”), third input terminal 305 (“GPIO3”), or fourth input terminal 306 (“GPIO4”) can be selected in this regard (in this example, by specifying the values of 00, 01, 10, or 11 as indicated in Table 1). For purposes of the present example, it can be assumed that the first input terminal 303 is selected in one circumstance.
Next, at a step 404, additionally the target voltage registers 313 and 314 are respectively programmed (more particularly, the VIB_IN_SEL1[0:6] and VIB_IN_SEL0[0:6] SPI bits of those respective registers are set). The programming of the first and second voltage target registers 313 and 314 respectively determines the voltages V1 and V0 that are input at the respective input ports 316 and 317 of the second multiplexer 310 by the first and second voltage generators 311 and 312, respectively, which ultimately determines the particular voltages output at the output terminals 336 and 337 (or the voltage difference between those output terminals) of the amplifier 330 and provided to the vibrator 112. The programming of the first target voltage register 313 particularly is performed so as to produce the desired average differential voltage when operating in ERM mode and so as to produce the desired short term average voltage when operating LRA mode, across the output terminals 336 and 337. The programming of the second target voltage register 314 particularly is performed so as to produce zero (0) volts when operating in ERM mode and so as to produce a voltage that is the negative of the first target voltage when operating in LRA mode, across the output terminals 336 and 337. With these settings, the PWM converter 320 operating as a PWM waveform driver will generate an average differential voltage across the output terminals 336 and 337 equal to the value programmed in the first target voltage register 313 (that is, the value specified as VIB_LEVEL1[6:0], which is V1). Although the exact waveform will also contain PWM frequency components (e.g., in the 50-200 kHz range) depending upon the PWM frequency that is used, these do not perturb the behavior of the vibrator 112 (regardless of whether the vibrator is the ERM vibrator 114 or the LRA vibrator 115) when being driven.
Following, the step 404, the method either proceeds directly to a step 405 or, alternatively (optionally, depending upon the embodiment), performs a timeout step 406 before then proceeding on to the step 405. For convenience, discussion of the timeout step 406 is deferred to a later portion of this disclosure below. With respect to the step 405, at this step a further register value (VIB_EN) is set that determines whether the vibrator functionality is to be effected, that is, whether there is (or will be) present a vibrator such as the vibrator 112 to be driven by the output of the amplifier 330. That is, to enable the entire vibrator driver function, the SPI bit VIB_EN must be set to one (1) (assuming it was initially zero (0)), and this is true regardless of the type of vibrator driver that is being implemented (for example, this is true regardless of whether the ERM vibrator 114 or the LRA vibrator 115 is being implemented).
Following the step 405, at a step 410 the method 400 then proceeds by generating an appropriate signal (or waveform) for the selected ERM vibrator 112 or LRA vibrator 114. This generating is performed by the components of the vibrator driver 116 (e.g., by the first and second multiplexers 308 and 310, the PWM converter 320, and the amplifier 330) based upon the input signals received at the input port(s) selected by the selector register 307 in accordance with the programming performed at the step 402, and in accordance with the V1 and V0 values provided by the generators 311 and 312 in accordance with the values of the registers 313314 set at the step 404. For example, if (as previously assumed) the selector register 307 is set, at the step 402, to specify that the first multiplexer 308 should select the signals received at the first input port 303 (“GPIO1”) as provided by the first digital processor 234 as its selected input, then those signals will govern the output signal communicated from the output port 309 to the selector input port 315 of the second multiplexer 310. Consequently, the PWM converter 320 will generate output signals at the output ports 331, 333 based upon the V1 and V0 values provided by the generators 311, 312, in accordance with the settings of the registers 313, 314 established at the step 404, as controlled by the output signal received at the selector input port 315. The output signals of the PWM converter 320 directly control the output signals provided to the vibrator 112 (in this case, the ERM vibrator 114 or LRA vibrator 115 depending upon which has been implemented) via the output ports 336, 337.
It should be appreciated that the exact signals output by the vibrator driver 116 and received by the vibrator 112 are determined based upon one or more of the processing portions 204 other than the vibrator driver itself. Thus, the performing of the step 410 by the vibrator driver 116 is accompanied by various steps (or substeps) 412-426 that are performed by those other processing portions, such as the first or second digital processors 234, 236. Although all of the steps 402-410 described above can be considered as steps or substeps performed by the vibrator driver 116 itself, the steps 412-426 are performed by one or more of the processing portions 204 and not the vibrator driver (again, for example, the first or second digital processors 234, 236).
More particularly, in the present embodiment, operation of the vibrator driver 116 related to the generating of the waveform (signals) for the vibrator 112 begins with the input signal received at the selected input terminal (e.g., the first input terminal 303 or “GPIO1”) being set at zero by the processing portion providing that input signal (e.g., the first digital processor 234). Consistent with such a setting, the vibrator 112 (regardless of whether it is the ERM vibrator 114 or LRA vibrator 115 that is present) is not being actuated at that time. Subsequently, the operation varies depending upon whether it is the ERM vibrator 114 that is the vibrator 112 that is present and being actuated or the LRA vibrator 115 that is present and being actuated, as represented by a step 414. If it is the ERM vibrator 114 that is present and being actuated, then the process advances from the step 414 to a step 416, at which point the value of GPIOx is changed from a value of “0” to “1” (in this example, assuming that the first input terminal 303 or “GPIO1” was specified by the selector register 307, then GPIO1 is changed from “0” to “1”). Upon the completion of the step 416, the vibrator driver 116 generates the output signals at the output terminals 336, 337 so as to control operation of the ERM vibrator 114 based upon the particular signals received at the selected input terminal (again, in this case, the first input terminal 303 or “GPIO1”). Typically, this would result in the ERM being presented with a constant DC voltage (time averaged), e.g., +2.0V, for several 10 s or 100 s of msec. Finally, when the governing controller (e.g., the first digital processor 234) or associated governing software that is providing the input signals to the selected input terminal (in this example, GPIO1) determines that the duration of vibration of the ERM vibrator 114 has been met, then the process finishes at the step 418, at which the value of the further register (VIB_EN) previously set at the step 405 is reset from “1” (high) to “0” (low) or, in a second alternative, the GPIO input currently selected by the multiplexer 308 and provided to the multiplexer 310 (or selected by the input selection and logic map 608 and provided to the multiplexer 610) is changed to a logic 0, or, in a third alternative, a value of the register 313 (VIB_LEVEL1) set previously at the step 404 is reset so as to equal a value representing zero (0) volts. Any of these changes can be made at the direction of the governing controller (e.g., the first digital processor 234) or associated governing software and, upon any of these changes being made, the actuation of the ERM vibrator 114 stops. As an alternate stopping mechanism for the ERM, a negative DC voltage can be presented across the ERM terminals for a short period of time such as tens of msecs, to provide a quicker stop of the ERM vibrator. This negative voltage can be generated by programming the register 314 to a value representing a negative voltage, then having the digital level at the selector input port 315 changed to 0. After this negative voltage is applied, then step 418 can be performed.
Alternatively, if it is the LRA vibrator 115 that is being actuated, then the process advances from the step 414 to a step 422, at which the governing controller (e.g., the first digital processor 234) changes the value of the input signal provided to the selected input terminal (e.g., the first input terminal 303 or “GPIO1”) from “0” to “1”. The changing of this value causes a positive amplitude waveform portion to be generated an output by the amplifier 330 of the vibrator driver 116 at the output terminals 336, 337. The step 422 is followed by a step 423 at which a variable time delay of a known duration occurs. Then, at the step 424, upon the governing controller that the duration of the positive amplitude waveform portion has been sufficiently long, the governing controller again toggles the value of the input signal provided to the selected input terminal (again, in this example, GPIO1) back to the zero value. This results in a negative amplitude waveform portion begin generated at the output terminals 336, 337 of the vibrator driver 116, which is a waveform portion that is the negative of the waveform portion applied during the step 422. Following performance of the step 424, at a step 425 an additional variable time delay of a known duration occurs. The time delays of the steps 423 and 425 can potentially be, but need not be, the same, and can each be varied depending upon the embodiment or operational circumstance.
Following the time delay of the step 425, at the next step 426, the governing controller then determines whether the toggling action should be repeated. For as long as this is determined to be desirable, the governing controller then continues to execute the steps 422 and 424, at a rate that emulates a variable frequency square wave swept over a frequency range specified for the LRA vibrator 114 (e.g., by a vendor thereof). For example, the waveform can be swept from 165 to 185 Hz during a 200 millisecond interval. Also, the sweep can be repeated if the vibration is to last longer. However, when the governing controller (again, e.g., the first digital processor 234) determines that operation of the LRA vibrator 114 should cease, the process stops re-executing the steps 422 and 424 and instead ends following the last performing of the step 426.
As already noted, in at least some embodiments the method of the flow chart 400 not only includes the steps already described but also includes the optional step 406, which is performed subsequent to the step 404 and prior to the step 405 (further, in alternate embodiments, the step 406 can be performed prior to the step 404 or prior to the step 402). In this regard, in addition to the previously-described registers of the vibrator driver 116, in some embodiments one or more additional registers shown in Table 1 can assist in controlling the duration of driving the vibrator driver 112 (regardless of whether it is the ERM vibrator 114 or the LRA vibrator 115 that is implemented) by timing out the vibrator driver 116. Use of these registers, by way of the step 406, can be particularly advantageous where a running application, or the operating system, inadvertently locks up the electronic device 102 at a time when at least one of the vibrator 112 is running, such that the low level vibrator driver code running in 204 fails to terminate the vibrator driving waveform, as would normally occur. In the absence of timing-out functionality, such a lock-up occurrence (or possibly some other malfunction of the electronic device 102 in terms of controlling the vibrators or otherwise) can cause the vibrator 112 to operate for an excessive duration of time, which can be disadvantageous for a variety of reasons, including the possibility of physically damaging or overheating the vibrator. By contrast, if such timing-out functionality is present and activated, such an excessive duration of operation of the vibrators and corresponding disadvantages can be avoided or minimized.
As shown in
By appropriately setting the VIB_TIMEOUT_PERIOD value, the vibrator driver 116 is able to perform a programmable timeout function that can halt the vibrator driver operation (and thus halt ongoing operation and movement of the vibrator 112, regardless of whether it is the ERM vibrator 114 or the LRA vibrator 115) even if any or more of the input terminals 303-306 continue to receive input signal(s) that otherwise would continue to cause actuation of the vibrator(s). More particularly, as also shown in
Although not required in all embodiments, in the present embodiment of
Although
Further, it should be appreciated that, depending upon the embodiment or circumstance, one or more of the steps of the flow chart 400 can be performed repeatedly. For example, the values of the programmable target voltages set at the step 404 can be repeatedly selected or modified over time so as to select or modify the waveforms output by the vibrator driver. Thus, driving the vibrator(s) with multiple waveforms and/or sequences can simply be achieved through selecting/reselecting the desired target voltages over time. Also, the process can be modified in other manners. For example, in an alternate embodiment, to achieve actuation of the ERM vibrator 115, the selected input terminal (e.g., the first input terminal 303 or “GPIO1”) can start with a value of one (1) and then, to kick off the waveform, the value of VIB_EN can then at that time be set to one (1) (assuming it was initially 0). Both in such embodiments, as well as in the embodiment already discussed above with respect to
In addition to the functionality described above, a variety of other embodiments and implementations are also possible. For example, some further embodiments of the vibrator driver 116 can perform a method to quick start the LRA vibrator 115 (or possibly other linear vibrators). This method includes producing a high amplitude waveform for a particular duration (e.g., 3 Volts peak-to-peak for 10 to 20 milliseconds), and then reverting to a normal steady state waveform (this is particularly acceptable if a high amplitude portion does not exceed a certain length of time, e.g., in microseconds, as specified by the LRA vendor). An integrated circuit can implement this functionality, which can allow for removing registers related to the timeout function. In at least some embodiments, such functionality can be partly or fully automated. Additionally, some embodiments of the vibrator driver 116 can include features for controlling a chirp waveform, commonly required to activate an LRA vibrator. This chirp waveform can be software or hardware-controlled.
Also, although the example processes are particularly directed toward embodiments of the electronic device 102 in which the vibrator driver 116 is configured to drive a single vibrator constituting the vibrator 112 that happens to be implemented on the electronic device, which has been selected from a variety of different possible selectable options of vibrator such as the ERM vibrator 114 or LRA vibrator 115 particularly discussed above, still additional processes or modified versions of the above-described processes can be performed when the electronic device 102 includes more than one vibrator that are to be driven by the same vibrator driver. For example, in one embodiment in which there is both the ERM vibrator 114 and the LRA vibrator 115 present in the same electronic device, and the two vibrators are coupled to the vibrator driver 116 by way of a multiplexer-type circuit as discussed above, the step 414 at which it is determined whether the ERM vibrator or LRA vibrator is being actuated includes a selection substep in which the multiplexer-type circuit is controlled to couple either the ERM vibrator or the LRA vibrator to the vibrator driver 116.
It should also be appreciated that the process of
Additionally, at a third preliminary step, the memory 206 is programmed with one or more software programs that can be ultimately performed on the processing portions 204 and that are particularly suited for causing the processing portions 204 to provide appropriate signals to the vibrator driver 116 for controlling operation of that one of the ERM vibrator or LRA vibrator that has been implemented on the electronic device 102 as the vibrator 112. Additionally, at a fourth preliminary step, the processing portions 204 (e.g., one or both of the digital processors 234, 236) begin operation in accordance with the software program(s) stored on the memory 206 during the third preliminary step, such that appropriate signals can be provided to the vibrator driver 116 to allow for controlling of the ERM vibrator or LRA vibrator that is implemented on the electronic device as the vibrator 112. Following these preliminary steps, the steps of the flow chart 400 shown in
Further, at least some of the various functions described above and described herein can be enabled or facilitated using a waveform state machine taught by the Table 2 below. Table 2 particularly shows that various (e.g., N) different vibrator drive waveforms can be preset, each with a different period and/or for a different duration; and in at least some embodiments, each field of the below Table 2 is set prior to enabling the vibrator driver 116 (that is, prior to setting the VIB_EN value discussed above to “1” to start the waveform). Each field can be considered a distinct register of the vibrator driver 116, and can be set in any of a number of manners including, for example, by one or more of the processing portions 204 (e.g., the first or second digital processors 234, 236). For example, one or more of the registers can be set by way of the fourth input terminal 306 (the microcontroller control signal input) by selection of that input (e.g., by appropriate setting of the VIB_IN_SEL value discussed above). In other embodiments, the state machine can be implemented by way of operation of one or more of the processing portions 204, such as an on-chip microcontroller or microprocessor.
With respect to
Upon reaching the step 512, the vibrator driver 116 sets a field (or register of the vibrator driver 116) VIBRATOR_DURATIONi to a duration of time (e.g., 12 milliseconds) for each of i=0 to 20, and also sets a field (or register) VIBRATOR_DURATION—21 to a value that communicates ending the chirp waveform (e.g., $00, which implies waveform halt). Finally, at a step 514, the vibrator driver 116 begins generating (and outputting) the chirp waveform, in this example when a VIB_EN field (or register) is set to the logic value of “1”. That is, upon the step 514 occurring, the vibrator driver 116 operates to generate the selected chirp waveform. It does so by sequentially moving through the Table 2 entries that were actually programmed, as described above, and outputting each ith waveform for the amplitude, duration and frequency indicated by the VIBRATOR_LEVEL_i, VIBRATOR_PERIOD_i, and VIBRATOR_DURATION_i values, where i can range from 1 to N.
Notwithstanding the above discussion, it should be appreciated that the above-described values for each of the fields (register) employed in setting and enabling the chirp waveform in accordance with
Referring to
The disclosure of the vibrator driver 116 up to this point has focused on the components of vibrator driver and the methods performed by the driver without describing in detail the signals received by and generated within or by the vibrator driver 116. The exact signals that can be provided/generated in this regard can vary widely depending upon the embodiment, operational circumstance, and type(s) and numbers of vibrators being actuated by the vibrator driver. Nevertheless,
With respect to
More particularly, the primary waveform 702 is depicted that can be inputted into one of the inputs 303-306 (e.g., to one of the GPIOs) for controlling the ERM vibrator 122 (or possibly other rotary vibrators). As depicted, when the primary waveform 702 is high or “on” (e.g., has a value of “1”) during a duration 703, the vibrator driver 116 actuates the ERM driver 112; otherwise, the ERM driver is not being actuated to vibrate. More particularly as shown, when the primary waveform 702 is high, the first and second multiplexers 308 and 310 operate so that the second multiplexer outputs the first target voltage V1; otherwise the second multiplexer generates the second target voltage V0 that is typically zero volts. Also depicted is the secondary waveform 704, which is a constant duty cycle waveform having the form of a square wave or a waveform similar to a square wave, and which the amplifier 330 outputs in response to receiving indirectly (via the PWM converter 320) the output from the second multiplexer 310 as a result of the input of the primary waveform 302 to the vibrator driver 116. As already discussed, the output of the PWM converter 320 is provided to the amplifier 330, which amplifies those signals for output at the output terminals 336, 337. Lastly, the third (tertiary) waveform 706 represents an average signal level from the vibrator driver 116, as output by (across) the output terminals 336 and 337 and provided to the ERM vibrator 112. The average signal level during a duration 705 corresponding to the duration 703 is that the first target voltage V1. In view of this discussion, it should be appreciated that both the duty cycle and the amplitude of the waveform 704 influence the waveform 706. Also, the operation of the amplifier 330 often will introduce an additional gain boosting the signal so that the waveform 704 (and the corresponding waveform 706) has a larger amplitude than the output from the PWM converter 320 that is provided to the amplifier 330 for generating that waveform 704 (and the corresponding waveform 706).
Turning to
More particularly, the two primary waveforms 801 and 802 (differing from the primary waveform 702 of
Additionally
Further, a third waveform 820 shown in
Referring next to
More particularly, the further primary waveform 902 that can be inputted into (received at) one of the input terminals 303-306 (e.g., the first input terminal 303) for controlling the LRA vibrator 114 (and/or possibly other linear vibrators) is shown. In this example, the primary waveform 902 causes activation of the LRA vibrator 114 by a fixed frequency signal corresponding to a resonant frequency of the LRA vibrator. As shown, the primary waveform 902 includes a period 911 during which it oscillates between high voltage values 903 and zero voltage values 907, and the subsequently during a period 913 is at a zero voltage (or “OFF”) level. In such an embodiment, when the primary waveform 902 is at a high voltage 903, it is intended that the vibrator driver 116 will generate the first target voltage, and when the primary waveform is at a low voltage (e.g., a zero voltage), it is intended that the vibrator driver will generate the second target voltage that is typically the opposite (e.g., negative) of the first target voltage. Further, when the first waveform 902 is at a steady state of zero volts during the period 913, as opposed to varying during the period 911, the vibrator driver 116 deactivates the linear vibrator 344.
Further in this regard,
Lastly, the third waveform 906 is also depicted in
Finally, referring to
More particularly in this example, the primary waveform 1002 is a chirp waveform that can be inputted into one of the input terminals 303-306 for controlling the LRA 114. As shown, the primary waveform 1002 activates the LRA vibrator 114 by a frequency sweep that covers a range of potential resonant frequencies of the LRA vibrator. That is, during a period 1011 the primary waveform experiences a succession of pulses 1003 of ever decreasing length in time, during which time the LRA vibrator 114 is actuated. In other embodiments, the succession of pulses can take other forms including, for example, a succession of pulses of ever increasing length. In the present embodiment, the frequency sweep is linear, although this also can vary depending upon the embodiment. Further, when the primary waveform 1002 takes on a value of zero volts during a period 1013, deactivation of the LRA vibrator 114 occurs.
Further in this regard,
Finally, the third waveform 1006 represents an average signal level from the vibrator driver 116 as output by the amplifier 330. During a period 1005, which corresponds to the period 1011 during which the primary waveform 1002 is oscillating (and that also corresponds to when the oscillating pulsing is occurring the secondary waveform 1004), the short term average signal level represented by the third waveform 1006 is variable. More particularly, during the period 1005, the short term average signal level varies between a nonzero positive voltage (V1) and a nonzero negative voltage (V0), with the voltage V1 level being attained at times substantially corresponding to the times when the pulses 1003 of the primary waveform 1002 are occurring, and with the voltage V0 level being attained at times in between those pulses 1003 (when the primary voltage 1003 is at a zero voltage level). Following the period 1005 (as well as prior to the period 1005), the average output takes on the zero voltage level (in between V1 and V0) such that the LRA vibrator 114 is deactivated.
In view of the above, it should be appreciated that, in at least some embodiments, one or more of a variety of advantages can be achieved by employing systems and methods such as those discussed above. For example, through the implementation of a vibrator driver circuit such as the vibrator driver 116, it is possible to drive either rotary or linear vibrators (or both) using a single driver circuit. Also for example, such a vibrator driver circuit can include appropriate pulse-width-modulated (PWM) generation components/functionality from a microprocessor or other system processing portions to a hardware amplifier circuit (or to a circuit that also contains amplification circuitry), thus simplifying software requirements for other processing portions. Additionally for example, operation can be achieved by providing signal(s) merely to standard GPIO terminals, allowing for basic GPIO control, a capability supported by (and/or otherwise consistent with) many if not most digital integrated circuits.
Also for example, in at least some embodiments, programmable target voltages are employed by the vibrator driver circuit that support many vibration drive features in a simple manner. Driving vibrator(s) by way of multiple waveforms and sequences thus becomes a simple matter of selecting desired target voltages over time. Further for example, in at least some embodiments the incorporation of a timeout mechanism in the vibration driver circuit allows for avoiding of the actuation of vibrator(s) for excessively-long periods of time, and correspondingly thus avoid any overvoltage condition in the hardware amplifier that might accompany such actuation, and this can be accomplished without relying upon software control or external filtering components. Additionally, in at least some embodiments, a state machine can be employed by which generation of a multiplicity of vibrator driver levels (each with a programmable duration, after which actuation/operation ceases) can be accomplished. Such a state machine can be used to generate quick start higher amplitude waveforms followed by a final steady state value, and/or to generate a full chirp waveform commonly utilized by linear vibrators. Also, in at least some embodiments, the vibration driver circuit that is used can be coupled to an on-chip microcontroller that controls input waveform logic 0 and I levels that are provided to the vibrator driver circuit and, as a consequence, makes it possible for the vibration driver circuit to generate a waveform that is in accordance with a programmable waveform programmed at the microcontroller.
It is specifically intended that the present invention not be limited to the embodiments and illustrations contained herein, but include modified forms of those embodiments, including portions of the embodiments and combinations of elements of different embodiments as come within the scope of the following claims.