External controller for an implantable medical device with dual microcontrollers for improved graphics rendering

An improved external controller with dual microcontrollers useable with an implantable medical device is disclosed. The external controller comprises a low speed (low frequency) microcontroller and a high speed (high frequency) microcontroller. The low speed microcontroller receives telemetry data from the medical device, converts data into graphical commands, and transmits commands to the high speed microcontroller. The high speed microcontroller interprets the graphical commands, retrieves images indicative of the commands from a storage device, and renders the images onto a display screen. The high speed microcontroller may also process more complicated data sent from the low speed microcontroller, and return the results to the low speed microcontroller to allow it to form the graphics command for the high speed microcontroller to execute.

FIELD OF THE INVENTION

The present invention relates to an external controller for an implantable medical device having two microcontrollers and particularly useful in controlling a high resolution display on the external controller.

BACKGROUND

Implantable stimulation devices are devices that generate and deliver electrical stimuli to body nerves and tissues for the therapy of various biological disorders, such as pacemakers to treat cardiac arrhythmia, defibrillators to treat cardiac fibrillation, cochlear stimulators to treat deafness, retinal stimulators to treat blindness, muscle stimulators to produce coordinated limb movement, spinal cord stimulators to treat chronic pain, cortical and deep brain stimulators to treat motor and psychological disorders, and other neural stimulators to treat urinary incontinence, sleep apnea, shoulder sublaxation, etc. The present invention may find applicability in all such applications, although the description that follows will generally focus on the use of the invention within a Spinal Cord Stimulation (SCS) system, such as that disclosed in U.S. Pat. No. 6,516,227, which is incorporated herein by reference in its entirety.

Spinal cord stimulation is a well-accepted clinical method for reducing pain in certain populations of patients. As shown inFIGS. 1A and 1B, a SCS system typically includes an Implantable Pulse Generator (IPG)100, which includes a biocompatible case30formed of titanium for example. The case30typically holds the circuitry and power source or battery necessary for the IPG to function, although IPGs can also be powered via external RF energy and without a battery. The IPG100is coupled to electrodes106via one or more electrode leads (two such leads102and104are shown), such that the electrodes106form an electrode array110. The electrodes106are carried on a flexible body108, which also houses the individual signal wires112and114coupled to each electrode. In the illustrated embodiment, there are eight electrodes on lead102, labeled E1-E8, and eight electrodes on lead104, labeled E9-E16, although the number of leads and electrodes is application specific and therefore can vary.

Portions of an IPG system are shown inFIG. 2in cross section, and include the IPG100and an external controller (remote control)210. The IPG100typically includes an electronic substrate assembly14including a printed circuit board (PCB)16, along with various electronic components20, such as microcontrollers, integrated circuits, and capacitors mounted to the PCB16. Two coils are generally present in the IPG100: a telemetry coil13used to transmit/receive data to/from the external controller210; and a charging coil18for charging or recharging the IPG's power source or battery26using an external charger (not shown). The telemetry coil13can be mounted within the header connector36as shown, or can be included within the case30.

As just noted, an external controller210, such as a hand-held programmer or a clinician's programmer, is used to wirelessly send data to and receive data from the IPG100. For example, the external controller210can send programming data to the IPG100to set the therapy the IPG100will provide to the patient. Also, the external controller210can act as a receiver of data from the IPG100, such as various data reporting on the IPG's status.

The communication of data to and from the external controller210occurs via magnetic inductive coupling. When data is to be sent from the external controller210to the IPG100for example, coil17is energized with an alternating current (AC). Such energizing of the coil17to transfer data can occur using a Frequency Shift Keying (FSK) protocol for example, such as disclosed in U.S. patent application Ser. No. 11/780,369, filed Jul. 19, 2007, which is incorporated herein by reference in its entirety. Energizing the coil17induces an electromagnetic field, which in turn induces a current in the IPG's telemetry coil13, which current can then be demodulated to recover the original data. Communication from the IPG100to the external controller210occurs in essentially the same manner.

A front view of an external controller210is illustrated inFIG. 3. As shown, the external controller typically comprises a user interface, which includes various input buttons250and a display440. The user interface may comprise other audible or tactile aspects as well. Using the user interface, the patient can perform various functions. For example, the user can adjust stimulation parameters using the buttons250, which button presses can cause changes on a gauge on the display440, such as the increase or decrease of stimulation power. Or, the display440can indicate status information with or without the pressing of buttons250, such as the status of the battery26(FIG. 2) in the IPG100. Further details concerning the structure and functionality of an external controller can be found in U.S. patent application Ser. No. 11/935,111, filed Nov. 5, 2007, with which the reader is assumed familiar.

As external controllers210and IPG100become more advanced, the inventors have noticed that it is advantageous to provide a richer user interface to the patient, such as a higher resolution, color display. For example, patients can currently use their external controllers210to steer current between electrodes to find a stimulation therapy that is most beneficial, such as Occurs using Boston Scientific's i-Sculpt™ technology. See http://www.chrisamichaels.com/assets/precplus.pdf, a copy of which is filed with this application. But current steering is difficult using the microcontrollers and displays present in traditional external controllers, which typically use a monochrome liquid crystal display that is relatively simple to drive and does not require significant computing resources. Larger, higher resolution displays would better enable current steering and other system functionality, but this requires additional computing resources, which resources are difficult to provide using the microcontrollers present in previous external controllers. This disclosure provides a solution.

DETAILED DESCRIPTION

The description that follows relates to use of the invention within a spinal cord stimulation (SCS) system. However, the invention is not so limited. Rather, the invention may be used with any type of implantable medical device system that could benefit from an improved external controller for an implanted medical device. For example, the present invention may be used as part of a system employing an implantable sensor, an implantable drug pump, a pacemaker, a defibrillator, a cochlear stimulator, a retinal stimulator, a stimulator configured to produce coordinated limb movement, a cortical and deep brain stimulator, or in any other neural stimulator configured to treat any of a variety of conditions.

An improved external controller with dual microcontrollers useable with an implantable medical device is disclosed. The external controller comprises a low speed (low frequency) microcontroller and a high speed (high frequency) microcontroller. The low speed microcontroller receives telemetry data from the medical device via a telemetry unit, converts data into graphical commands, and transmits commands to the high speed microcontroller. The high speed microcontroller interprets the graphical commands, retrieves images indicative of the commands from a storage device, and renders the screen and images onto a display screen. The high speed microcontroller may also process more complicated data sent from the low speed microcontroller, and return the results to the low speed microcontroller to allow it to form the graphics command for the high speed microcontroller to execute. The result allows for the implementation of higher quality graphics in the external controller, and a richer patient experience with the external controller.

One embodiment of the improved external controller400is illustrated in block diagram form inFIG. 4. The external controller400comprises two microcontrollers: a low speed microcontroller410and a high speed microcontroller420, which will be discussed in detail below. The external controller400comprises a telemetry unit405which wirelessly communicates with the IPG100. The external controller400also comprises a storage device430to store preloaded data, such as image files as discussed further below. The external controller400also provides a user interface to the patient in the form of a display440and various input buttons250(FIG. 3). From this user interface, the patient can perform a number of tasks, such as telemetering data (such as a new therapy program) from the external controller400to the IPG100, monitoring at the external controller400various forms of status feedback from the IPG100, etc. Typically such user input (e.g., from buttons250) arrives at the low speed microcontroller410, which acts as the master of the two microcontrollers410and420, as explained further below.

In one embodiment, the external controller400always acts as the initiator of telemetry with the IPG100. In this embodiment, the user uses the user interface to wake up the external controller400from a power down or “sleep” condition, and uses the user interface (e.g., buttons250) to initiate such communications, such as querying the status of the IPG's battery. However, this is not strictly necessary in al useful embodiments. Instead, the external controller400can initiate communications with the IPG100without user intervention, or the IPG100can telemeter data (or at least attempt to telemeter data) to the external controller400on its own according to a schedule or when it receives data considered important.

The display440optimally displays both text and graphics to convey necessary information to the patient such as menu options; stimulation settings; IPG battery status; external controller battery status; stimulation status (i.e., on or off); charging status (on or off), etc. The display440may comprise a color display such as a color super twisted nematic (CSTN) or thin-film transistor (TFT) LCDs. The display440may further comprise an organic light-emitting diode (OLED) display. OLED displays are available in monochrome, grayscale (typically 4-bit), color (usually two or three colors), or full-color (8-bit to 32-bit color). As noted earlier, the complexity of the display440provides the primary motivation for the use of the dual microcontrollers410and420.

Storage device430is used to store persistent data, such as image files which can be rendered on the display440, as will be discussed further below. Such image files may be loaded into the storage device430during manufacturing of the external controller400. The software block450generally contains the operating software for the low speed microcontroller410, while software block455generally contains the operating software for the high speed microcontroller420. Either of software blocks450or455may comprise a portion of the firmware of their respective microcontrollers, or may be connected thereto. Typically, both the storage device430and the software blocks450and455could comprise flash EEPROM memory, which provides for non-volatile storage, but which can be erased should updates to the operating software or the image files be required during or after manufacture. Alternatively, storage device430and software blocks450and455can be implemented in ROM microcode. Storage device430may be serially connected to the high speed microcontroller420.

The low speed microcontroller410is suited for basic data processing in the external controller400. The low speed microcontroller410has low power consumption due to its relatively low operating frequency (e.g., 6 MHz), has low electromagnetic emissions, and is relatively small in size. In one embodiment, a Texas Instruments MSP430 series microcontroller is used as a low speed microcontroller410. The low speed microcontroller410handles telemetry and typical data processing in the external controller400, which (compared to a modern-day personal computer for example) can occur relatively slowly.

The high speed microcontroller420, by contrast, operates at higher frequencies (e.g., 48 MHz), and is therefore better adapted for performing functions requiring significant processing, such as heavy-computation, floating-point operations, or faster data streaming. In one embodiment, an Atmel ARM microcontroller is used as the high speed microcontroller420.

As shown inFIG. 4, the external controller400can send and receive telemetry data to and from the IPG100at the low speed microcontroller410via the telemetry unit405. Telemetry unit405includes transceiver circuitry, including modulation circuitry for encoding data for transmission and demodulation circuitry for decoding received data. As noted earlier, the external controller400can send programming data to the IPG100to set the therapy the IPG100will provide to the patient. The external controller400can also act as a receiver of data from the IPG100, such as various data reporting on the IPG's status, which can be displayed on the display screen440for example.

As shown inFIG. 4, the low speed microcontroller410communicates with the high speed microcontroller420via a data bus425. A separate control bus427for sending commands from the low speed410to the high speed420microcontroller is also shown. In this regard, the low speed microcontroller410acts as the “master” to the high speed microcontroller420, which acts as the “slave” because it generally operates pursuant to the commands it is given by the low speed microcontroller410. The data bus425, the command bus427, or both can comprise a serial bus.

As noted above, the external controller400receives telemetry data from the IPG100at the low speed microcontroller410via the telemetry unit405, such as the capacity of the IPG100's battery, which information is to be sent to the display440. To facilitate this operation, the low speed microcontroller410converts the received telemetry data into graphics commands to be executed by the high speed microcontroller420. A graphic command comprises a set of instructions of how to draw or update a screen, and such graphics commands can be formatted in accordance with a graphic command protocol. Of course, not all data transmitted from the IPG100to the external controller400will comprise data ultimately destined for the display440, and in such instances graphical command formatting is unnecessary. Moreover, not all imagery on the display440will result from data telemetered from the IPG100, although displaying telemetered data will be emphasized in the example that follows.

The graphic command protocol used in the external controller400uses a library of indexed screens, which each screen or index corresponding to a particular look of the screen at any given time during operation of the external controller400. For example, index 0 may comprise the “main menu” screen, which may present the user a variety of selections, while index 1 may comprise the “stimulation screen.” The user may move between these screens by making a selection using the user interface: for example, using buttons250, he may move from the main menu screen (index 0) to the stimulation screen (index 1). However, this is not strictly required, as the external controller400can also automatically move between screens (indices) as necessary to show the user various information of importance.

Each index defines a layout for the display440, and corresponds to set of graphics to be displayed on the display440and their locations. An example “stimulation screen” display with index 1 is shown inFIG. 5A, which includes graphics for the status of the external controller's battery506, the IPG's battery504, the level of simulation502, the level of stimulation written in text as a percentage of maximum503, a program graphic510, and a menu graphic512. The program graphic510contains a particular program number (‘1’ as shown) as well as a textual description of that program (“morning”), which denotes that this program ‘1’ contains settings typically used by the patient in the morning. Of course, the program number, and its settings, can be changed by the user using the user interface.

Some of these graphics displayed for a particular screen index can include attributes that will vary the graphic displayed. For example, the IPG battery gauge504is based on the current capacity of the IPG battery, which can range from 0 to 100%. This capacity attribute is reflected in the gauge504as a number of solid bars (four bars each comprising 25% of capacity) as is typical. The level of stimulation gauge502is similar and constitutes a number of bars to indicate the current stimulation level as a percentage of maximum. Additionally, gauge503displays this attribute textually (e.g., 40%). Some of these attributes will result from changes made by the user, while other will result from data telemetered from the IPG100. For example, IPG battery capacity as reflected by gauge504will result from data telemetered from the IPG100, while stimulation level as reflected by gauges502and503will result from user input via buttons250on the external controller's user interface.

The low speed microcontroller410will know based on the data it is receiving (either from the IPG100via telemetry, or the user via the user interface) what screen index, or particular graphic in that screen index, is implicated. For example, telemetry data will be accompanied by header information identifying the telemetered data. The low speed microcontroller410will then pass that index and any attributes (Ax) (e.g., IPG battery capacity) to the high speed microcontroller420via the control bus427, as shown inFIG. 5B. As noted earlier, each screen index corresponds to a plurality of image files corresponding to the graphics that constitute a given index, and these image files and locations are stored in the storage device430as shown. For example, image file “Image3.gph” may comprise the image file for the IPG battery gauge504, and “Loc3” its location on the display440, while “Image4.gph” may comprise the image file for the stimulation gauge502, and Loc4 its location on the display.

When a new index is passed from the high speed microcontroller420to the storage device430, the corresponding image files and locations are retrieved, again as shown inFIG. 5B. The high speed microcontroller420can then process these and render the appropriate graphics on the display440using its rendering engine422. To the extent the graphic is modified by an attribute, such as the IPG battery capacity, the rendering engine422will consider the attribute, and modify the rendered image accordingly. For example, if the IPG battery capacity is very low (say 25%), the rendering engine will consider that attribute and cause only one of the four bars in the gauge504to be rendered solid. Additionally, the rendering engine422may also change the other aspects of the rendered image to change depending on attribute. For example, the gauge504may be rendered in a different color (red), or may be made to flash, if the IPG battery capacity is critically low. The rendering engine422may also update the displayed image as attributes change over time. For example, should the rendering engine422see that the IPG battery capacity is decreasing, it will adjust the rendered graphic for the gauge504accordingly.

Because of the high speed microcontroller420's processing speed, the graphics can be rendered on the display seemingly instantaneously from the user's perspective. By contrast, were the low speed microcontroller410to perform such rendering on its own, its slow speed would make for a frustrating user experience, as the user would have to wait an undue length of time while the image was slowly rastered across the screen. Moreover, if the low speed microcontroller410were to perform the graphics rendering, it may become “bogged down” handling the required data to the point of neglect of other systems functions (e.g., telemetry). Fast graphics processing as enabled by external controller400allows current steering (such as iSculpt™ current steering technology as mentioned earlier) to be smoothly implemented. For example, the position of the electrodes will be shown on the display440, and the user can then use buttons250to move or “steer” current between the electrodes to optimize his or her stimulation therapy.

FIG. 6summarizes the technique as discussed so far in flow chart form. The external controller400receives telemetry data from the implantable device, or user input from the user interface, at the low speed microcontroller410(step630). The low speed microcontroller410then converts the received data into commands in accordance with a command protocol (step640). The commands are then transmitted from the low speed microcontroller410to the high speed microcontroller420via the control bus427(step650). Once the high speed microcontroller420receives the commands, it interprets the commands, and retrieves the corresponding image files from the storage device430(step660). The high speed microcontroller420then renders the images on the display screen440(block670).

Certain data sent from the IPG100may require significant processing at the external controller400before it can be rendered on the display440. For example, certain information received from the IPG100can be complicated, such as information regarding the relative positioning of the electrodes as implanted in the patient. Such positioning information can be used to draw an image on the display440of the electrode leads102and104(FIG. 1A), which can allow the patient to understand whether such leads have moved into improper positions. Such positing information usually includes various resistance measurements taken between the various different electrodes in the leads, and because of the multivariable nature of the data, significant processing is required to interpret such resistance values into positions renderable on the display440. The techniques of calculating electrode positions are disclosed in U.S. patent application Ser. No. 11/096,483, filed Apr. 1, 2005 and Ser. No. 11/938,490, filed Nov. 12, 2007, with which the reader is assumed familiar. As one might expect, the IPG100is not well suited for processing such resistance values, because processing capability in the IPG100is limited. Instead, the resistance values are telemetered from the IPG100to the external controller400for processing. The low speed microcontroller410is also not well suited for processing such data, because the speed and processing power of such microcontroller is limited.

Therefore, in another embodiment of the technique, data received at the low speed microcontroller410is assessed to determine whether it requires further processing prior to command generation and rendering on the display440. If so, i.e., if the telemetered data is relatively complicated and requires significant processing prior to rendering onto the display440, such as with the resistance values discussed above, such data is sent by the low speed microcontroller410to the high speed microcontroller420for such processing, which processed data is then sent back to the low speed microcontroller410to be converted into graphical commands. By contrast, if the received data is relatively simple and is ready to be displayed to the patient with only minimal processing, such as IPG battery status, the low speed microcontroller410processes the data pursuant to the flow ofFIG. 6discussed above.

The process700for this embodiment is illustrated inFIG. 7. As before, telemetered data or user input is assessed by the low speed microcontroller410at step710to determine whether further data processing is required prior to graphics rendering. Because the low speed microcontroller410knows the various types of data it receives from the IPG100, such assessment can merely involve identifying the type of data received. If further data processing is not needed, the process continues to steps already discussed with respect toFIG. 6. That is, the data is converted to a graphical command (640); transmitted to the high speed microcontroller420(650); used to retrieve images at the high speed microcontroller420(660); and rendered on the display440by the high speed microcontroller420(670).

However, if the data requires further processing at step710, the low speed microcontroller410then transmits at least a portion of the data to the high speed microcontroller420along the data bus425(step720). Those portions of the data transmitted to the high speed microcontroller420will logically comprise those requiring significant processing, such as mathematical analysis, as would be the case for the resistance values discussed earlier. By contrast, other portions of received data not requiring processing can simply be held in memory at the low speed microcontroller410pending completion of processing of the remainder at the high speed microcontroller420.

The data transmitted to the high speed microcontroller420is then processed (step730), and transmitted back to the low speed microcontroller410via the data bus (step740). At this point, it can be combined with any received data held at the low speed microcontroller410and converted to a graphics command (640); transmitted to the high speed microcontroller420(650); used to retrieve images at the high speed microcontroller420(660); and rendered on the display440(670), as described above with respect toFIG. 6. In the resistance value example discussed earlier, location data would comprise attributes accompanying the graphics command at step640.

The improved external controller400with dual microcontrollers provides several advantages. With the addition of the high speed microcontroller420and the improved high-resolution color display440, the external controller400can provide richer user options and feedback to a patient. Moreover, the dual microcontrollers also provide parallel processing capability, allowing the high speed microcontroller420to update graphics on the display440while permitting the low speed microcontroller410to perform other tasks, such as telemetry and other system functions. Additionally, the low speed microcontroller410is preferred for running the telemetry functions, as it lower operating frequency is at less risk to interfere with telemetry.

It should be understood that the “microcontrollers” referred to in this disclosure can comprise microprocessors or other logic devices (e.g., FPGAs) as well, and are preferably implemented as discrete integrated circuits.

It should be understood that a graphics command used to render an image on the display may in an actual implementation comprises a plurality of graphics commands. Therefore, a graphics command should be interpreted either as a single command, or as a string of graphics commands.