Multi-chip camera controller system with inter-chip communication
A system for using actuators to control an image sensor and/or lens based on sensor data received from position sensors and position information for the image sensor and/or lens received from a host processor includes a primary camera controller device, at least one secondary camera controller device, and at least one communication link connecting the primary camera controller device and the secondary camera controller device. The primary camera controller device processes the received sensor data and the received position information to generate control data, sends a secondary portion of the control data to the secondary camera controller device via the communication link, and drives a primary portion of the control data to the actuators. The secondary camera controller device drives the received secondary portion of the control data to the actuators concurrently with the primary camera controller device driving the primary portion of the control data to the actuators.
Latest Cirrus Logic, Inc. Patents:
- Driver circuitry
- Splice-point determined zero-crossing management in audio amplifiers
- Force sensing systems
- Multi-processor system with dynamically selectable multi-stage firmware image sequencing and distributed processing system thereof
- Compensating for current splitting errors in a measurement system
This application is a continuation-in-part of U.S. Non-Provisional application Ser. No. 17/320,528, filed May 14, 2021, which claims priority based on U.S. Provisional Application, Ser. No. 63/024,735, filed May 14, 2020 and claims priority based on U.S. Provisional Application Ser. No. 63/186,022, filed May 7, 2021, each of which is hereby incorporated by reference in its entirety, and this application claims priority based on U.S. Provisional Application Ser. No. 63/186,022, filed May 7, 2021.
BACKGROUNDCamera controllers are used to control and drive a camera (e.g., camera lenses and parts), and such controllers and cameras are used in applications such as smart phones, tablets, and computers. Such a controller or device needs to obtain and process data from the camera lenses and parts. The accurate and efficient delivery and management of data (e.g., datastreams and sub-streams) between the camera controllers and the camera are very important. An example of the delivery and management of such data is provided by U.S. patent application Ser. No. 16/522,580 entitled “FLEXIBLE LATENCY-MINIMIZED DELIVERY AND MANAGEMENT OF DISPARATE-RATE DATA STREAMS AND SUB-STREAMS FOR PROCESSING” filed on 25 Jul. 2018 to inventors James McFarland, Nariankadu Hemkumar, Sachin Deo, and Younes Djadi (hereafter referred to as the “580 Patent Application”), published as U.S. Patent Application Publication 2021/0029319 on Jan. 28, 2021. The 580 Patent Application is hereby incorporated by reference in its entirety.
SUMMARYEmbodiments of the present disclosure describe a communication link connecting two or more devices in a camera controller system. The camera controller system includes two or more camera controller devices that receive sensor data from sensors and that control actuators, e.g., voice coil motors. The camera controller system also includes a communication link connecting the primary device to the secondary devices. The communication link may operate in half-duplex mode or full-duplex mode. A host processor is in communication with the camera controller system. A camera module may include the camera controller system, an image sensor, the actuators that position the image sensor, and the sensors that sense position data of the image sensor.
The communication link supports synchronous and time critical operation. The communication link may include a clockless interface that includes a single wire in a half-duplex configuration, or two wires in a full-duplex configuration. The communication link transfers voice coil motor (VCM) data and sensor data between the primary and secondary devices. The communication link transfers control and status information from the primary device to the secondary device. The communication link transfers sensor data and status information from the secondary device to the primary device. The communication link enables the primary device to access memories and registers of the secondary device. The communication link may detect a single bit error in idle and active modes. The data transfer on the communication link is triggered by the host processor in an open loop mode or by the device digital signal processor (DSP) frame in a closed loop mode. The communication link may be used to synchronize sensor data capture and VCM driver data application between the primary and secondary devices. On the transmit side, a flush byte (e.g., 0xFF) may be appended at the end of a packet to indicate to the receiver the completion of packet transmission. On the receive side, the receiver state machine resynchronizes upon detection of a parity error, which may happen when the flush byte is detected or if a bit flips due to an external noise source. The secondary device DSP frame may be synchronized to the primary device DSP frame.
Embodiments of the present disclosure may be extended to more than two devices.
In one embodiment, the present disclosure provides a system for using actuators to control an image sensor and/or lens based on sensor data received from position sensors and based on position information for the image sensor and/or lens received from a host processor. The system includes a primary camera controller device, at least one secondary camera controller device, and at least one communication link connecting the primary camera controller device and the at least one secondary camera controller device. The primary camera controller device is configured to process the received sensor data and the received position information to generate control data, send a secondary portion of the control data to the secondary camera controller device via the communication link, and drive a primary portion of the control data to the actuators. The secondary camera controller device is configured to drive the received secondary portion of the control data to the actuators concurrently with the primary camera controller device driving the primary portion of the control data to the actuators.
In another embodiment, the present disclosure provides a method for using actuators to control an image sensor and/or lens based on sensor data received from position sensors and based on position information for the image sensor and/or lens received from a host processor. The method includes processing, by a primary camera controller device, the received sensor data and the received position information to generate control data. The method also includes sending, by the primary camera controller device, a secondary portion of the control data to at least one secondary camera controller device via at least one communication link connecting the primary camera controller device and the at least one secondary camera controller device. The method also includes driving, by the primary camera controller device, a primary portion of the control data to the actuators. The method also includes driving, by the secondary camera controller device, the received secondary portion of the control data to the actuators concurrently with the primary camera controller device driving the primary portion of the control data to the actuators.
The description below sets forth example embodiments according to this disclosure. Further example embodiments and implementations will be apparent to those having ordinary skill in the art. Further, those having ordinary skill in the art will recognize that various equivalent techniques may be applied in lieu of, or in conjunction with, the embodiments discussed below, and all such equivalents should be deemed as being encompassed by the present disclosure.
In certain camera control systems, there is a need to extend one or more voice coil motor (VCM) driver outputs using a secondary device 107 of
A viable option for extending the VCM output driver channels beyond the number of supported channels on a single device, including but not limited to a camera controller, is to connect two devices (e.g., two camera controllers) in primary/secondary configuration communicating VCM codes 113 of
The primary/secondary output skew is defined to be the time duration between VCM code(s) application on the primary and secondary devices. The desire is to minimize the output skew between the primary device and the secondary device, as well as to minimize the VCM code application latency post processing on both the primary and secondary devices. In addition, it is highly desirable to have VCM code transmission (from the primary device) and reception (on the secondary device) to be non-blocking (neither entity is required to wait on the other for transmission and/or reception). Finally, the method and system should be efficient to minimally impact processing capabilities on the primary device and/or the secondary device.
The system 100 and method shown in
The system and method below provide four (4) VCM outputs: two (2) OIS (Optical Image Stabilization)+one (1) AF (Auto-Focus) on the primary device, and one (1) AF on the secondary device. The AF VCM output driver on the secondary device duplicates AF VCM output driver on the primary device. The specific realization of the method described below allows for synchronized update of both the primary and secondary AF VCM driver outputs in both open-loop and closed-loop modes of operation with an output skew of less than 20 μs. The same system may also be devised to provide two (2) OIS VCM outputs on the primary device and two (2) AF VCM outputs on the secondary device. In general, many configurations are possible including swapping of OIS and AF VCM outputs on the primary and secondary devices as described above.
An example embodiment of the present disclosure is provided and organized in detail as follows: software framework, VCM Code packet structure to ensure basic minimum integrity, UART Transmit driver on the primary device, UART Receive driver on the secondary device and run-time execution context of UART communication in open-loop and closed-loop modes of operation and mode switching thereof.
Software Framework
Firmware driver framework on the primary device and the secondary device is outlined in the diagram shown as
VCM Packet Structure
Each eleven (11)-bit AF VCM current DAC (IDAC) code is sent over a UART packet. A two (2)-byte packet structure 301 to ensure basic integrity of sequence, data, and packet is shown in
UART Receive Driver
The application of VCM code on the secondary device is done entirely in UART Receive ISR (Interrupt Service Routine)-UART_RX_ISR-context. As soon as a complete VCM packet is received on the secondary device (blocks 401 through 407), VCM code is extracted from the packet after it passes a basic integrity check (blocks 411 through 417). The extracted VCM code is applied to the open-loop DAC register on the secondary device for immediate effect (block 409 and blocks 419 and 423). This process on the secondary device is shown in the flow-chart of
UART Transmit Driver
Unlike the secondary device, which applies the VCM code immediately upon receipt, the primary device precisely times the application of the VCM code to coordinate the timing of the application and keeps the primary/secondary skew to a minimum. The handling of the VCM code on the primary device depends on the system state—(a) open-loop mode and (b) closed-loop mode.
Open-Loop
In the open-loop mode, the primary device receives the open-loop DAC code from the host processor over an I2C interface. In the absence of full-duplex UART communication, the primary/secondary synchronization is achieved by the primary device deferring and precisely delaying the application of received open-loop code until after initiating the transmission of open-loop code to the secondary device over UART. On the primary device, indication of the secondary device receiving the VCM Code packet is acknowledged via UART_TX_ISR which triggers upon completion of the UART transmission. The flow-chart shown in
As shown in the above flow-chart of
Closed-Loop
In the closed-loop mode of operation (block 701), there is a fixed but programmable cadence of application of closed-loop DAC codes to the output driver with respect to each instance of the control-loop. Each instance of the control loop computes the closed-loop VCM codes (blocks 703 and 705) based on the sensor inputs and host position command. However, the application of the closed-loop VCM codes to the output driver is hardware assisted and takes place after a programmable delay from the start of each control loop instance. In order to synchronize the application of VCM codes between the primary device and the secondary device, the primary device uses the Event Timer capability of the hardware. Event Timer produces an event/interrupt at a programmable delay with respect to an external trigger. In this case, the commencement of each instance of the control loop starts the count-down of the Event Timer. The programmable delay between the commencement of each instance of control-loop and the event on the primary device is programmed such that the event is triggered just enough before the hardware pick-up of closed-loop DAC code to both facilitate the transmission (blocks 707 and 709) and to account for the time to transmit the VCM code packet and its application on the secondary device to approximately coincide with the hardware pickup on the primary device. Handling of transmission of VCM code in Event_Timer_ISR is depicted in the flow-chart of
Run-Time Execution Context
The run-time execution flow for the open-loop and closed-loop system states is depicted in
At initialization of the primary device, the primary device is programmed with three timer values. First, a control loop timer is programmed with a delay shown in
Prior to the control loop IRQ, ADC inputs received from the camera VCMs (or other inputs from other devices in alternate embodiments) have settled and are available for use by the primary device firmware to calculate DAC codes for the control loop iteration that is about to start. Before the event timer expires, i.e., before the event timer IRQ triggers, the firmware of the primary device calculates DAC codes based on the settled ADC inputs for transmission to the secondary device. Additionally, before the hardware pickup timer expires, the firmware of the primary device calculates DAC codes based on the settled ADC inputs for application by the pickup hardware to the outputs of the primary device.
In response to the event timer IRQ, the primary device transmits the DAC codes to the secondary device over the communication link according to the operation shown in
As described above, the difference between the hardware pickup timer delay (J) and the event timer delay (K) is chosen to accomplish a couple of competing goals. One goal is to reduce the output skew (N), based on the primary device firmware delay plus transmission time (L) and the secondary device firmware delay (M). Another goal is to provide the firmware of the primary device sufficient time to calculate the secondary and primary DAC codes before the event timer triggers and the hardware pickup timer triggers, respectively. Advantageously, the values of J and K are programmable and therefore are effectively “knobs” that may be adjusted to tune the system 100 to meet the need of the application, e.g., camera control.
As described above, each of the primary and secondary devices may be separately configured to operate in either open loop mode or in closed loop mode. However, in the embodiments described, the secondary device is always configured to operate in the open loop mode. When the primary device is configured in the closed loop mode, the host processor sends information to the primary device (e.g., via the I2C interface), e.g., camera position information. The primary device then determines the current values that need to be output to the VCM's (via DAC codes) to cause the camera to reach and stay at the position specified by the host processor. Whereas, when the primary device is configured in open loop mode, the host processor directly specifies the current values (or the DAC codes that determine the current values), and the primary device simply applies its portion of the DAC codes and transmits the other portion to the secondary device. In other words, in open loop mode, it is the responsibility of the host processor to get the camera to the desired position without the primary device knowing the position, whereas in closed loop mode it is the responsibility of the primary device to get and keep the camera at the position commanded by the host processor. Furthermore, in open loop mode, the primary device immediately applies the DAC codes received from the host processor to generate the output current; whereas, in closed loop mode, the primary device waits to apply the DAC codes that it calculates to generate the output current until the hardware pickup timer triggers, which is periodic and programmable. For example, when the device in which the system 100 is included (e.g., phone with a camera) is started up (e.g., powered on or reset), the host processor of the phone may configure the primary device in open-loop mode to send DAC codes that coarsely position the lens of the camera, e.g., to a default position. Later, the host processor may receive more information (e.g., based on user input) about where the lens needs to be positioned and configures the primary device in closed-loop mode and sends the position to the primary device, in response to which the primary device positions the camera lens more finely and maintains the quality of the position of the camera lens.
Advantageously, the primary and secondary devices work together to appear to the host processor as a single operating entity whose outputs are synchronized. In one embodiment, the secondary device may inform the primary device in the event of a packet integrity failure so that the primary device may retransmit the packet. Additionally, the primary device may notify the host processor of such a failure and retransmission. Further advantageously, the system may be configured in multiple configurations with respect to the multiple outputs provided by the primary/secondary device combination. For example, embodiments are described above in which each of the primary and secondary devices has three outputs. One embodiment is described above in which VCM that controls an Optical Image Stabilization (OIS) subsystem of the camera are driven by two outputs of the primary device, and VCM that control an Auto-Focus (AF) subsystem of the camera are driven by one output of the primary device and by one output of the secondary device. Another embodiment is described above in which the OIS subsystem is driven by two outputs of the primary device and the AF subsystem is driven by two outputs of the secondary device. However, the system may be configured in other combinations according to other embodiments to meet the needs of the application. For example, in one embodiment, there may be separate OIS-X and OIS-Y subsystems, in addition to an AF subsystem. Additionally, the system may be configured in different dimensions to accommodate operation of different subsystems in different modes. For example, the primary device may be configured in closed loop mode for one or more of the subsystems and configured in open loop mode for one or more of the remaining subsystems. Advantageously, the embodiments described herein provide a system in which the primary/secondary device combination appears to the host processor as a single device having N total available outputs when in fact each of the primary and secondary devices individually includes less outputs than the N total outputs. This configuration is advantageous because it alleviates the need for a re-design of the device to provide the needed N total outputs within a single device, which could involve significant investment both in terms of time and cost. Furthermore, in the case that the device is already pin-limited, a re-design may not be possible or may be possible only at the cost of a sacrifice in other features of the device.
As described above, in one embodiment, the Event Timer duration is programmed as an amount of time that begins to run after the Control Loop IRQ event occurs. In an alternate embodiment, the Event Timer duration may be programmed as an amount of time leading up to the hardware pickup, i.e., relative to the hardware pickup rather than relative to the Control Loop IRQ. That is, the Event Timer IRQ occurs the programmed amount of time before the hardware pickup occurs. However, because of the transitive property and the fact that the hardware pickup timer is relative to the Control Loop IRQ, according to the alternate embodiment, the Event Timer IRQ is still effectively specified relative to the Control Loop IRQ event.
Although embodiments have been described for use in controlling a camera, more particularly voice coil motors of a camera, other embodiments are contemplated in which the primary/secondary device combination is used to control other types of devices. Finally, although embodiments are described in which a single secondary device is employed to expand the output capability of the system, other embodiments are contemplated in which an additional secondary device (or multiple additional secondary devices) may be in communication with the primary device—via another communication link between the primary device and the additional secondary device or via a communication link shared by the primary device and the multiple secondary devices—such that the primary device transmits updated values to the additional secondary device and the additional secondary device responsively applies the received updated values on its outputs.
As described above, modern camera controllers may require multiple sensors and voice coil motors (VCM), or other types of actuators, for optical image stabilization (OIS) and auto focus (AF). For a complex system, it may be advantageous to use multiple camera controller devices instead of a single device. Using multiple devices may offer the following advantages. First, multiple devices may increase power drive, since a single device may not have enough output drivers to drive the required power into the voice coil motors. Second, multiple devices enable a modular design since more devices can be added as needed to increase the number of output driver channels, increase the number of sensor channels, and increase the overall signal processing. Third, multiple devices may simplify the programming model by having the host communicate only with the primary device, in mission mode, which in turn communicates with the secondary devices.
Each of the primary camera controller device 105 and the secondary camera controller device 107 includes a digital signal processor (DSP), a communication link transmit pad (shown in
The primary camera controller device 105 is a first package (e.g., integrated circuit, or chip), and the secondary camera controller device 107 is a second package (e.g., integrated circuit, or chip), and the two devices are coupled together by the communication link 103 by which they communicate with one another in the various ways described herein. Advantageously, the communication link 103 enables the tasks of sensing and controlling the image sensor and/or lens 137 to be distributed between the primary camera controller device 105 and the secondary camera controller devices 107. Although embodiments are described with respect to
The primary and secondary device processing may be configured by the host processor to do one of the following. In a first configuration, sensors are enabled on the primary device only, and the sensor/loop processing is performed only on the primary device. In a second configuration, the sensors are enabled on both the primary and secondary devices, and the sensor/loop processing is performed only on the primary device. In a third configuration, the sensors are enabled on both the primary and secondary devices, and the sensor/loop processing is performed on both the primary and secondary devices.
In the first configuration, motion sensors are enabled on the primary device only. Primary sensor processing is done on the primary device. Control loop processing is done on the primary device. Primary and secondary VCM codes are generated on the primary device. In one embodiment, secondary health sensing (e.g., temperature and voltage) is done on the secondary device.
In each of the three configurations, there are two communication modes: initialization mode and mission mode. In initialization communication mode, at startup, the host processor initializes and configures the primary and secondary devices through the control port of
There are two modes of operation: open loop mode and closed loop mode. In the open loop mode, the primary and secondary VCM code values are directly controlled by the host. The host enables open loop mode on the primary device. The host periodically writes the primary and secondary DAC codes to the primary device. The primary device sends the secondary VCM data packet to the secondary device, which may contain the following information: a digital-to-analog converter (DAC) code, a status request byte, and a frame termination byte, or flush byte (e.g., with a value of 0xFF). After a fixed delay to match the communication link latency, the primary device applies the primary DAC codes to the primary device. When the 0xFF frame termination byte is received by the secondary device, the secondary device checks for errors and, if no errors are detected, the secondary device applies the DAC code data to its output drivers. When requested by the host, the primary device sends a status request as part of the DAC code packet to the secondary device. When requested by the primary device, the secondary device responds back with device and link status information, which may include device status (device warnings, errors), device temperature and voltage measurements, and communication link status. A timeout error may be generated if the primary device does not receive the secondary response within the timeout period.
As stated above, there are two configurations (second and third configurations) in which the camera sensors are enabled on the primary and secondary devices. In the second configuration, all loop processing is done on the primary device. In the third configuration, primary loop processing is done on the primary device, and secondary loop processing is done on the secondary device. When the camera sensors are enabled on the secondary device (and the primary device), the secondary DSP frame is synchronized to the primary DSP frame to minimize the latency between the VCM data updates on the two devices.
Embodiments of communication link configurations will now be described. There are two communication link configurations. The communication link between the primary and secondary devices may be configurated in a half-duplex configuration or in a full-duplex configuration.
In a half-duplex configuration, a single wire is used as the communication link for data transmission between the primary and secondary devices, as shown in
In a full-duplex configuration, two UART links are used, which enables higher transmission bandwidth at the expense of an additional physical connection between the primary and secondary devices. The primary transmit (TX) is connected to the secondary receive (RX). The primary RX is connected to the secondary TX. Since the primary and secondary devices drive separate wires, there is no need to switch between transmit and receive modes, and there is no possibility for bus contention. The primary and secondary UART TX are always enabled. The primary device sets a timeout error flag if the primary device does not receive a response from the secondary device.
To accomplish link health monitoring, the primary device periodically requests status information from the secondary device, which may include device status (device warnings, errors), communication link status (e.g., parity errors or packet sequence errors), and device temperature and voltage measurements. The secondary device checks for parity errors on received data, checks for packet sequence errors, and checks for an 0xFF byte at the end of a packet.
The primary device may make the following status information available to the host: secondary-to-primary timeout error indicator, a secondary-to-primary parity error indicator, a packet sequence error indicator, a status sequence counter, and a packet error counter. The primary device sets the secondary-to-primary timeout error indicator to a true value if a timeout has occurred waiting for a packet from the secondary device. The primary device sets the secondary-to-primary parity error indicator to a true value when the primary device detects a parity error in a received packet from the secondary device. The primary device sets the packet sequence error indicator to a true value if the secondary device sets the Packet Sequence Error bit in the Secondary Status and ACK packet. The status sequence counter is a count of valid status packets received by the primary device from the secondary device. The packet error counter is a count of missed secondary-to-primary packets (e.g., packets for which a timeout occurred), dropped secondary-to-primary packets (e.g., packets for which a parity error was detected), and NACK status packets.
In one embodiment, the inter-chip communication protocol used by the communication link for data transmission is a UART protocol. Information is sent using UART data bytes framed to comprise: a start bit, 7 data bits transmitted least significant bit (LSB) first, an odd parity bit, and a stop bit, as shown in the example embodiment of
Embodiments of a packet structure used on the communication link will now be described. In the primary device to secondary device packet structure, all packets start with a header byte that specifies the type of packet, as shown in the example embodiment of
Sensor data packets are normally used when sensors are enabled on the secondary device. Sensor data may be sent from the primary device to the secondary device (e.g., in the third configuration) and from the secondary device to the primary device (e.g., in the second and third configurations). Primary sensor data may be sent from the primary device to the secondary device, e.g., via the primary to secondary (P2S) sensor data packet shown in the example embodiment of
A secondary device status packet may be sent by the secondary device to the primary device when STAT_REQ in the P2S sensor data packet is set to a true value by the primary device. In one embodiment, the primary device may request the status packet every Nth frame, where N is configurable by the host. In one embodiment, the secondary status packet (also referred to as an ACK packet) has three bytes, an example of which is shown in
In one embodiment, the host processor may configure and control the secondary camera controller device by “tunneling” through the primary camera controller device to the secondary camera controller device. The host processor may accomplish the tunneling as follows. The host processor may send a command to the primary camera controller device to write a register/memory of the secondary camera controller device; in response, the primary camera controller device sends one or more register/memory write packets to the secondary camera controller device based on the command received from the host processor. Additionally, the host processor may send a command to the primary camera controller device to read a register/memory of the secondary camera controller device; in response, the primary camera controller device sends one or more register/memory read packets to the secondary camera controller device based on the command received from the host processor; the primary camera controller device receives from the secondary camera controller device the data in register/memory and returns the received data to the host processor.
Although embodiments have been described for use in controlling actuators that are voice coil motors of a camera, other embodiments are contemplated in which the primary/secondary device combination is used to control other types of actuators, e.g., stepper motors, piezo-electric motors, and the system may be viewed as an expression of a servo loop for performing the various functions described above. Additionally, various types of sensors may be employed to provide the sensor data, e.g., Hall sensors or other type of magnetic sensors may provide position data, and various temperature detection devices may be employed to provide temperature data. Finally, although embodiments are described in which the communication link may be a UART type communication link, other embodiments are contemplated in which other types of communication links between the primary camera controller device and the secondary camera controller devices are used, such as a point-to-point RS232 asynchronous serial link, a multi-drop RS485 asynchronous serial link, an Inter-Integrated Circuit (I2C) multi-drop synchronous link, an Serial Peripheral Interface (SPI) multi-drop synchronous link, an Ethernet link, a Universal Serial Bus (USB) link, an High-Definition Multi-Media Interface (HDMI) link, and a Fiber Channel link.
It should be understood—especially by those having ordinary skill in the art with the benefit of this disclosure—that the various operations described herein, particularly in connection with the figures, may be implemented by other circuitry or other hardware components. The order in which each operation of a given method is performed may be changed, and various elements of the systems illustrated herein may be added, reordered, combined, omitted, modified, etc. It is intended that this disclosure embrace all such modifications and changes and, accordingly, the above description should be regarded in an illustrative rather than a restrictive sense.
Similarly, although this disclosure makes reference to specific embodiments, certain modifications and changes can be made to those embodiments without departing from the scope and coverage of this disclosure. Moreover, any benefits, advantages, or solutions to problems that are described herein with regard to specific embodiments are not intended to be construed as a critical, required, or essential feature or element.
Further embodiments, likewise, with the benefit of this disclosure, will be apparent to those having ordinary skill in the art, and such embodiments should be deemed as being encompassed herein.
For example, communication of (synchronized) updates between primary device and secondary device may be through a variety of communication types, such as full-duplex communication or half-duplex communication. Such communication may support robustness of data transport, additional configurations, additional sensors and/or additional processing on the secondary device and the communicating by the secondary device of such information that at least includes the health of the secondary device and/or other status or information relevant to the primary device.
Various “labels” may precede nouns or noun phrases in this disclosure. Unless context provides otherwise, different labels used for a feature (e.g., “first circuit,” “second circuit,” “particular circuit,” “given circuit,” etc.) refer to different instances of the feature. Additionally, the labels “first,” “second,” and “third” when applied to a feature do not imply any type of ordering (e.g., spatial, temporal, logical, etc.), unless stated otherwise.
Finally, software can cause or configure the function, fabrication and/or description of the apparatus and methods described herein. This can be accomplished using general programming languages (e.g., C, C++), hardware description languages (HDL) including Verilog HDL, VHDL, and so on, or other available programs. Such software can be disposed in any known non-transitory computer-readable medium, such as magnetic tape, semiconductor, magnetic disk, or optical disc (e.g., CD-ROM, DVD-ROM, etc.), a network, wire line or another communications medium, having instructions stored thereon that are capable of causing or configuring the apparatus and methods described herein.
Claims
1. A system for using actuators to control an image sensor and/or lens based on sensor data received from position sensors and based on position information for the image sensor and/or lens received from a host processor, comprising:
- a primary camera controller device;
- at least one secondary camera controller device; and
- at least one communication link connecting the primary camera controller device and the at least one secondary camera controller device;
- wherein the primary camera controller device is configured to: process the received sensor data and the received position information to generate control data; send a secondary portion of the control data to the secondary camera controller device via the communication link; and drive a primary portion of the control data to the actuators; and
- wherein the secondary camera controller device is configured to drive the received secondary portion of the control data to the actuators concurrently with the primary camera controller device driving the primary portion of the control data to the actuators.
2. The system of claim 1,
- wherein the secondary camera controller device is further configured to: receive secondary sensor data from the position sensors; and send the received secondary sensor data to the primary camera controller device via the communication link; and
- wherein the primary camera controller device is further configured to: process the received primary and secondary sensor data and the received position information to generate the control data.
3. The system of claim 1,
- wherein each of the primary and secondary camera controller devices includes a respective transmit pad that drives the communication link; and
- wherein each of the primary and secondary camera controller devices is configured to: monitor the respective transmit pad for contention caused when the primary and secondary camera controller devices concurrently drive the respective transmit pad in a half-duplex mode; and disable the transmit pad in response to detecting the contention.
4. The system of claim 3,
- wherein each of the primary and secondary camera controller devices is configured to monitor the respective transmit pad for contention by comparing an input signal received on the transmit pad from the other camera controller device with a looped-back version of an output signal driven on the transmit pad by the respective camera controller device.
5. The system of claim 1,
- wherein each of the primary and secondary camera controller devices is configured to disable the communication link in response to detecting an over temperature condition or an expiration of a watch dog timer with respect to the communication link.
6. The system of claim 1,
- wherein the primary camera controller device is configured to periodically request status information from the secondary camera controller device via the communication link comprising one or more of: status of the secondary camera controller device; status of the communication link; and temperature and/or voltage measurements of the secondary camera controller device.
7. The system of claim 1,
- wherein the secondary camera controller device is configured to check for one or more of: a parity error on data received from the primary camera controller device; and a packet sequence error on packets received from the primary camera controller device.
8. The system of claim 1,
- wherein the primary camera controller device is configured to report to the host processor that a packet expected from the secondary camera controller device timed out.
9. The system of claim 1,
- wherein the primary camera controller device is configured to report to the host processor that a packet received from the secondary camera controller device has a parity error.
10. The system of claim 1,
- wherein the primary camera controller device is configured to report to the host processor that the secondary camera controller device indicated a packet sequence error with respect to packets sent by the primary camera controller device to the secondary camera controller device.
11. The system of claim 1,
- wherein the primary camera controller device is configured to report to the host processor a count of valid status packets received from the secondary camera controller device.
12. The system of claim 1,
- wherein the primary camera controller device is configured to report to the host processor a count of: missed packets from the secondary camera controller device to the primary camera controller device; dropped packets from the secondary camera controller device to the primary camera controller device; and negative acknowledgement (NACK) status packets.
13. A method for using actuators to control an image sensor and/or lens based on sensor data received from position sensors and based on position information for the image sensor and/or lens received from a host processor, comprising:
- processing, by a primary camera controller device, the received sensor data and the received position information to generate control data;
- sending, by the primary camera controller device, a secondary portion of the control data to at least one secondary camera controller device via at least one communication link connecting the primary camera controller device and the at least one secondary camera controller device;
- driving, by the primary camera controller device, a primary portion of the control data to the actuators; and
- driving, by the secondary camera controller device, the received secondary portion of the control data to the actuators concurrently with the primary camera controller device driving the primary portion of the control data to the actuators.
14. The method of claim 13, further comprising:
- receiving, by the secondary camera controller device, secondary sensor data from the position sensors;
- sending, by the secondary camera controller device, the received secondary sensor data to the primary camera controller device via the communication link; and
- processing, by the primary camera controller device, the received primary and secondary sensor data and the received position information to generate the control data.
15. The method of claim 13, further comprising:
- wherein each of the primary and secondary camera controller devices includes a respective transmit pad that drives the communication link; and
- by each of the primary and secondary camera controller devices: monitoring the respective transmit pad for contention caused when the primary and secondary camera controller devices concurrently drive the respective transmit pad in a half-duplex mode; and disabling the transmit pad in response to detecting the contention.
16. The method of claim 15,
- wherein said monitoring the respective transmit pad for contention comprises: comparing an input signal received on the transmit pad from the other camera controller device with a looped-back version of an output signal driven on the transmit pad by the respective camera controller device.
17. The method of claim 13, further comprising:
- by each of the primary and secondary camera controller devices: disabling the communication link in response to detecting an over temperature condition or an expiration of a watch dog timer with respect to the communication link.
18. The method of claim 13, further comprising:
- periodically requesting, by the primary camera controller device, status information from the secondary camera controller device via the communication link comprising one or more of: status of the secondary camera controller device; status of the communication link; and temperature and/or voltage measurements of the secondary camera controller device.
19. The method of claim 13, further comprising:
- checking, by the secondary camera controller device, for one or more of: a parity error on data received from the primary camera controller device; and a packet sequence error on packets received from the primary camera controller device.
20. The method of claim 13, further comprising:
- reporting, by the primary camera controller device, to the host processor that a packet expected from the secondary camera controller device timed out.
21. The method of claim 13, further comprising:
- reporting, by the primary camera controller device, to the host processor that a packet received from the secondary camera controller device has a parity error.
22. The method of claim 13, further comprising:
- reporting, by the primary camera controller device, to the host processor that the secondary camera controller device indicated a packet sequence error with respect to packets sent by the primary camera controller device to the secondary camera controller device.
23. The method of claim 13, further comprising:
- reporting, by the primary camera controller device, to the host processor a count of valid status packets received from the secondary camera controller device.
24. The method of claim 13, further comprising:
- reporting, by the primary camera controller device, to the host processor a count of: missed packets from the secondary camera controller device to the primary camera controller device; dropped packets from the secondary camera controller device to the primary camera controller device; and negative acknowledgement (NACK) status packets.
4599719 | July 8, 1986 | Breen et al. |
7358809 | April 15, 2008 | Elder |
9735736 | August 15, 2017 | Kusuda |
9859907 | January 2, 2018 | Li |
9876518 | January 23, 2018 | Kim et al. |
10382687 | August 13, 2019 | Patel |
10396724 | August 27, 2019 | Daigle et al. |
11228291 | January 18, 2022 | Kusuda |
11412141 | August 9, 2022 | Kim |
11621683 | April 4, 2023 | Xu et al. |
20060016966 | January 26, 2006 | Hughes |
20070050582 | March 1, 2007 | Mangione-Smith |
20080240301 | October 2, 2008 | Mandal et al. |
20100019842 | January 28, 2010 | Larson et al. |
20100290769 | November 18, 2010 | Nasiri |
20110063146 | March 17, 2011 | Matthews et al. |
20120063756 | March 15, 2012 | Kang |
20120096290 | April 19, 2012 | Shkolnikov et al. |
20140077873 | March 20, 2014 | Motz et al. |
20140079098 | March 20, 2014 | Harjani et al. |
20140225591 | August 14, 2014 | Knierim et al. |
20150134862 | May 14, 2015 | Sthoeger et al. |
20150319365 | November 5, 2015 | Lloyd et al. |
20180076780 | March 15, 2018 | Wang et al. |
20180270424 | September 20, 2018 | Li |
20200120283 | April 16, 2020 | Min |
20200307832 | October 1, 2020 | Wichowski et al. |
20200393529 | December 17, 2020 | Larson et al. |
20210029319 | January 28, 2021 | McFarland et al. |
20210096389 | April 1, 2021 | Kim |
20210143835 | May 13, 2021 | Gonzalez et al. |
20210305955 | September 30, 2021 | Ozalevli |
20210321039 | October 14, 2021 | Kim et al. |
20210356843 | November 18, 2021 | Deo et al. |
20220190789 | June 16, 2022 | Zanbaghi et al. |
20220190794 | June 16, 2022 | Schneider et al. |
20230117027 | April 20, 2023 | Fang et al. |
20230209189 | June 29, 2023 | Feng |
- Ray, Sourja et al. “A 13-b Linear, 40-MS/s Pipelined ADS with Self-Configured Capacitor Matching.” IEEE Journal of Solid-State Circuits, vol. 42, No. 3, Mar. 2007. pp. 463-474.
Type: Grant
Filed: May 5, 2022
Date of Patent: May 7, 2024
Patent Publication Number: 20220329725
Assignee: Cirrus Logic, Inc. (Austin, TX)
Inventors: Younes Djadi (Austin, TX), Nariankadu D. Hemkumar (Austin, TX), Sachin Deo (Austin, TX), Daniel T. Bogard (Austin, TX), Nathan Daniel Pozniak Buchanan (Austin, TX), Eric B. Smith (Austin, TX)
Primary Examiner: Abdelaaziz Tissire
Application Number: 17/737,615
International Classification: H04N 23/661 (20230101); G01D 5/14 (20060101); G03B 13/36 (20210101); H04N 23/60 (20230101); H04N 23/66 (20230101);