English
Language : 

MC33927 Datasheet, PDF (35/44 Pages) Freescale Semiconductor, Inc – Three-Phase Field Effect Transistor Pre-Driver
FUNCTIONAL DEVICE OPERATION
LOGIC COMMANDS AND REGISTERS
IC Initialization
Here is a possible flow to initialize the IC and its software environment.
1. Apply power (VBAT) to module
1.1. This doesn’t wake-up the IC because VPUMP isn’t powered. VBAT current will be low because it will only be leakage
and the small hold off bias current.
2. Power-up VPUMP
2.1. No changes will occur until RST rises
3. Remove RST (EN1 and EN2 are still low)
3.1. As the module powers up, RST will rise, allowing the IC to power-up. The charge pump will start, and VPWR and VLS
will stabilize.
3.2. VDD will rise as the internal regulator charges the external reservoir capacitor and the IC will come out of reset.
3.3. Initialize interrupt handler for MCU
3.4. Interrupt will occur because of the RESET (Interrupt processing will occur here)
4. Initialize registers
4.1. Initialize MASK register by sending 0010 xxxx or 0011 xxxx to mask out unwanted interrupts.
4.2. Send MODE command with desired bits, and also the Lock bit. e.g. 01000001. This prevents further mode changes.
5. Bring EN1 & EN2 high
5.1. This fully enables the IC
MAIN LOOP
1. While (forever)
1.1. Send SPI messages (except NULL1-3), read results
1.2. If sending NULL1-3 messages, use a semaphore to detect interrupts
1.2.1. Set Semaphore flag in RAM
1.2.2. Send NULL1-3
1.2.3. Send NULL0, read SR1-3
1.2.4. If Semaphore is still set, then result is good, else go to 1.2.1 (because an interrupt has gotten in the way)
1.2.5. Clear semaphore
2. END
Interrupt Handler
When an interrupt occurs, the general procedure is to send NULL0 and NULL1 commands to determine what happened, take
corrective action (if needed), clear the fault and return.
Because the return value from a SPI command is actually returned in the subsequent message, main-loop software that tries
to read SR1, SR2 or SR3, may experience an interrupt between sending the SPI command and the subsequent read. Thus if
these registers are to be read, special care must be taken in the software to ensure that the correct results are being interpreted.
1. Interrupt Service Routine:
1.1. Disable further interrupts from 33927
1.2. Clear semaphore in 1.2.1 of Main loop. This indicates to the main loop that an interrupt occurred and that the return
value it gets may not be as expected.
1.3. Send NULL0 Command. Ignore return value, since this will have been associated with some unknown previous
command
1.4. Send NULL0 Command. The return value will be SR0 from the previous NULL0 command
2. Process Bits in SR0 and correct any faults
3. Send CLINT0 command to clear known (i.e. processed faults from SR0) faults 0:3
4. Send CLINT1 command to clear processed faults 4:7. Note, the return SR0 register from this command is actually read in
the main routine.
5. Re-enable interrupts from the 33927
6. Return
Analog Integrated Circuit Device Data
Freescale Semiconductor
33927
35