Integrated Mixed-Signal Solutions PRODUCT DATA SHEET STMP35xx D-Major™Audio System on Chip with USB 2.0, LCD, Voice Record and Battery Charger Third Generation Audio Decoder Version 1.08 June 17, 2005 Host Processor (Optional) 90 FM Tuner 94 98 102 106 Rechargeable Battery LED/LCD Screen SDRAM Hi-Speed USB Microphone Voice Record Flash Memory Headphones Buttons/Switches CD Pickup Hard Drive OFFICIAL PRODUCT DOCUMENTATION 6/17/05 5-35xx-D1-1.08-061705 Copyright © 2004 SigmaTel, Inc. All rights reserved. SigmaTel, Inc. makes no warranty for the use of its products, assumes no responsibility for any errors which may appear in this document, and makes no commitment to update the information contained herein. SigmaTel reserves the right to change or discontinue this product at any time, without notice. There are no express or implied licenses granted hereunder to design or fabricate any integrated circuits based on information in this document. The following are trademarks of SigmaTel, Inc., and may be used to identify SigmaTel products only: SigmaTel, the SigmaTel Logo, C Major, D Major and Go-Chip. Other products and company names contained herein may be trademarks of their respective owners. OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 1. TABLE OF CONTENTS 1. TABLE OF CONTENTS ..................................................................................................................... 2 2. PRODUCT OVERVIEW ..................................................................................................................... 3 3. CHARACTERISTICS/SPECIFICATIONS ........................................................................................ 21 4. DSP CORE ....................................................................................................................................... 25 5. ON-CHIP MEMORY SUBSYSTEM .................................................................................................. 30 6. CHIP WIDE PROGRAMMABLE CONTROL REGISTERS ............................................................. 38 7. INTERRUPT SUBSYSTEM .............................................................................................................. 49 8. USB CONTROLLER ........................................................................................................................ 60 9. INTEGRATED USB 2.0 PHY (HS,FS) ............................................................................................. 79 10. PARALLEL EXTERNAL MEMORY CONTROLLER (EMC) ....................................................... 103 11. GENERAL PURPOSE FLASH CONTROLLER .......................................................................... 118 12. FLASH ECC ACCELERATOR .................................................................................................... 134 13. FILTER COPROCESSOR (FILCO) ............................................................................................. 154 14. PULSE WIDTH MODULATOR (PWM) CONTROLLER .............................................................. 185 15. I2C INTERFACE ........................................................................................................................... 196 16. ENHANCED SPI INTERFACE ..................................................................................................... 209 17. SPI INTERFACE .......................................................................................................................... 217 18. TIMERS ........................................................................................................................................ 220 19. SDRAM INTERFACE ................................................................................................................... 227 20. SWIZZLE ...................................................................................................................................... 239 21. REAL-TIME CLOCK/ALARM/WATCHDOG RESET & PERSISTENT BITS .............................. 247 22. I2S SERIAL AUDIO INTERFACE ................................................................................................ 258 23. GENERAL PURPOSE INPUT/OUTPUT (GPIO) ......................................................................... 265 24. DAC .............................................................................................................................................. 276 25. ADC .............................................................................................................................................. 286 26. MIXER .......................................................................................................................................... 297 27. HEADPHONE DRIVER ................................................................................................................ 310 28. LOW RESOLUTION ADC ............................................................................................................ 315 29. BOOT MODES ............................................................................................................................. 329 30. DC-DC CONVERTER .................................................................................................................. 339 31. PIN DESCRIPTION ..................................................................................................................... 377 32. PACKAGE DRAWINGS ............................................................................................................... 389 33. STMP35XX FAMILY MEMBER PART NUMBERS & ORDERING INFORMATION ................... 391 34. INDEX OF REGISTERS ............................................................................................................... 393 ADDITIONAL SUPPORT Additional product and company information can be obtained by going to the SigmaTel website at:www.sigmatel.com. Additional product and design information is available for authorized customers at: extranet.sigmatel.com 2 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 2. PRODUCT OVERVIEW 2.1. Features • • • • • • • • • • • 5-35xx-D1-1.08-061705 Decodes MP3 and WMA and is upgradeable to other digital music formats Supports WMA Digital Rights Management (DRM) and other security schemes Includes on-chip read only unique ID for digital rights management algorithms USB High Speed Device Interface (up to 480Mb/s transfers) • Enables file transfer and firmware upgrade using USB Mass Storage Class • Both Windows and Macintosh drivers available • Integrated USB High Speed PHY • Direct connection to USB 5V power for operation and battery charging 96K Words (288K Bytes) of on-chip RAM Hardware support for flexible external storage options • NAND Flash, MMC, Secure Digital, SmartMedia, CompactFlash • Five byte address support for new 1Gb/die (128KB block) NAND Flash • MLC NAND Flash support • 1.8V NAND Interface Support • 16 bit wide NAND support • Hardware accelerated ECC off-loads DSP bit error correction • SDRAM • ATA/IDE Hard Disk digital devices. Optimized for very long battery life • 50 hours of operation on a single AA battery • Flexible, efficient on-chip DC-DC converter • Flexible battery configurations, including 1xAA, 1xAAA, 2xAA, 2xAAA, LiIon • Pulse frequency modulation mode for low standby power • Energy saving dynamic power management • Typical off current is 250µA (crystal oscillator & real time clock only) • More than 1 year battery life in “off” mode on one AA Alkaline battery • Integrated battery charger for LiIon and NiMH • Battery temperature sensor support for safest charging protocols • Real time clock with alarm function wakes up from powerdown/standby modes High quality integrated audio mixed signal sub-system • <0.05% THD direct drive headphone amplifier – Eliminates DC blocking capacitors – Including anti-pop and short-circuit protection • High performance 18-bit Σ∆ technology stereo D/A and A/D converters • Full analog mixer configuration • Line-in to Headphone/Line-out SNR >90 dB • Two analog line-level inputs: Line1 In (stereo), Line2 In (stereo, 144-pin package) • Mic(mono) input with integrated pre-amp and microphone biasing circuit • Volume control GPIO, button I/O controls, and LCD/LED Display Compatible Interface Pulse Width Modulators for EL backlights Integrated 75MHz DSP with Filter Coprocessor for power optimization • Optimized for audio applications • Field upgradeable firmware 3 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip • • • • • STMP35xx Block Diagram 90 LED/LCD Buttons/ Switches E.L. Backlight MMC/SD Card I2C Peripherals SmartMedia CompactFlash NOR Flash NAND Flash MLC Flash SDRAM I/OPurpose Pin Multiplexer General Input/Output Hard Drive InterruptControl, Control,Timers, Timers,Bit Interrupt Bit Manipulation Unit, Manipulation Unit, RTC, Trace Trace Unit Debug Unit,Debug Reed-Solomon USB 2.0 USB Device I2S & CD I2S CDation Synchroniz Synchronization Interface Memory Bus Peripheral Bus Filter & ECC USB engines FM in USB PHY (HSUSB & FS) STMP35xx Σ Pulse Width SPI Interface DAC DAC 24-bit DSP DSP I2C I2C Interface Interface Headphones Cap-less Direct Drive ADC ADC Flash/IDE EMC Interface SDRAM SDRAM Interface Interface 106 Amp DAC GPIO Interface I2C Interface SPI SPI Interface Interface 102 FM Radio Line in CDInterface Control IDE Interface 98 Microphone Mic in USB High Speed USB Full Speed 94 HeadphoneAmplifier Amplifier Headphone 2.2. • Integrated Development Environment, SDK, and debugger • Application and support libraries • Bass and Treble control; configurable multiple band EQ control • Voice record in ADPCM format (upgradable to other formats) FM tuner input and control support Optional interface to a host chip/processor for cell phone & PDA applications, etc. Application notes, reference schematics, sample PCB layouts are available. Offered in 100-pin TQFP, and 144-pin fpBGA packages Backward pin and firmware compatible with STMP3410 Te mpe ra ture On-Chip On-Chip ROM ROM 16K 8K x 24bits On-Chip On-Chip RAM RAM 96K 96K xx 24bits 24bits Low DCDC Resolution Converter ADC x3 Low Battery Resoluti Charger on ADC RTC, ALARM, PLL PLL, xtal XTAL DCDC DCDC Converter Converter Rechargable Battery 5V Input Crystal Figure 1. Chip Block Diagram Pin 1 Pin A1 10 mm 14 mm 10 mm 14 mm 100-pin TQFP 144-pin fpBGA For additional package measurements, please see 32. “PACKAGE DRAWINGS” on page 389. Figure 2. Chip Package Photos 4 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 2.3. Description SigmaTel's STMP35xx is a third generation single-chip highly-integrated digital music system solution for devices such as digital audio players, PDAs, voice recorders, MP3encode recorders, and cell phones. It includes a high performance DSP, 288KBytes of on-chip SRAM, and a USB 2.0 interface (including High speed 480Mb/second transfers) for downloading music and uploading voice and MP3 recordings. The chip also includes a mixer, DAC, ADC and provides interfaces to IDE Hard Drives, CD-DSPs, Flash memory, LCD/LEDs, button & switch inputs, headphone driver, FM tuner input & controls and a microphone. The chip’s highly programmable architecture supports MP3, WMA, and other digital audio standards. WMA digital rights management and other security schemes are also supported. For devices like PDAs and cell phones, the STMP35xx can act as a slave chip to a host chip/processor. The DAC includes a headphone driver to directly drive low impedance headphones. The ADC includes inputs for both microphone and analog audio in to support voice recording & FM radio integration and MP3 encode features. SigmaTel's proprietary Sigma-Delta (Σ∆) technology achieves a DAC SNR in excess of 90 dB for high-quality audio playback. The STMP35xx has low power consumption to allow long battery life and includes an efficient flexible on-chip DC-DC converter that allows many different battery configurations, including 1xAA, 1xAAA, 2xAA, 2xAAA and LiIon. The chip includes an integrated intelligent charger for NiMH and LiIon batteries. In addition, the single-chip design and low pin count enables very small digital audio devices to be designed. 2.3.1. DSP Core The on-chip DSP core is modeled exactly after the Motorola DSP56004. It supports the identical instruction set, registers, addressing modes, etc., as the DSP56000 family of digital signal processors. Figure 3 shows a high level view of the DSP core. This architecture is highly optimized for battery operated audio applications. Its 24bit intrinsic data size provides sufficient precision for high quality audio algorithms while minimizing the number of register and data path signals that must be toggled for any operation. The term “WORD”, as used in this data sheet, refers to a 24-bit unit of storage unless otherwise noted. The functionality that defines the on-chip DSP, is the memory map, interrupt processing, and peripherals it offers. The integrated DSP comprises three execution units, an interrupt controller and a debug interface. It connects to the rest of the STMP35xx chip via three memory busses, a set of interrupt input signals and various reset and clock inputs. It implements a 3 memory space Harvard architecture, simultaneously referencing an X data element, a Y data element and a program element. These references are conveyed over the program or “P” bus, the X bus and the Y bus. Each bus comprises a 24 bit wide data path and a 16 bit address bus. Program accessible I/O registers reside in the top 4K word addresses on the X-bus. The DSP architecture has special programmed I/O support for the top 64 words of this space but SigmaTel has extended this space to the top 4K words, i.e. addresses $F000 through $FFFF, inclusive. The DSP Core also implements the OnCE debugger that is the norm for this DSP architecture. The OnCE interface connects to an external debugger over four I/O signal pins on the STMP35xx. Using an industry standard instruction set architecture and debugger interface for the integrated DSP means that development tools and debuggers are in the highly evolved and stable portion of their life cycle. In addition, it means that system devel- 5-35xx-D1-1.08-061705 5 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip DSP Core Program Address Generator To/from P space Address to X space Address Generation Unit Debug Interface R0 R1 N0 N1 M0 M1 R2 N2 M2 R3 N3 M3 R4 R5 N4 N5 M4 M5 R6 N6 M6 R7 N7 M7 ProgramDecoder Address to Y space DATA ALU X0 Instruction Latch Y0 X1 Data to/from X space Y1 x Decoder & State Machines + Registered Control A Bit Manipulation Unit Data to/from Y space B Interrupt Controller Interrupts Figure 3. DSP Core at a Glance opers with experience developing on this DSP can be found. The SigmaTel software developers kit (SDK) provides an excellent integrated development environment with an assembler, C compiler, debugger and other requisite tools. 2.3.2. On-chip RAM and ROM The STMP35xx includes 96K words of on-chip RAM. This amounts to 2.25Mbits of on-chip SRAM in six 16K Word blocks. The RAM is split into two 48K word banks with one bank attached to the X bus and one attached to the Y bus. The P bus is Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM Figure 4. 6 x 16K Word On-chip SRAM Blocks connected to both RAM banks so that program space can be allocated from the same two banks that hold X and Y data values. An adjustable switching mechanism 6 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip is provided so that a portion of the X bus RAM or Y bus RAM can be allocated to the P bus in units of 8K words from 0K to the full 64K words. A typical application will allocate a portion of the X bus RAM and another portion of the Y bus RAM to the P bus. In normal operation, this switching mechanism will present a contiguous block of RAM beginning at location zero in the P bus address space, or P:$0000 as it is written in assembler syntax Suppose we allocate 24K Words from the X bus RAM to the P bus and another 24K Words from the Y bus RAM to the P Bus. This gives us 24K Words of X RAM, 24K Words of Y RAM and 48K Words of P RAM for our application. All 96K Words of onchip SRAM are allocated, as shown in Figure 5. P Address Space X Address Space Y Address Space $FFFF PIO Regs. on-chip ROM $C000 No SRAM $6000 $5FFF 24K Words X RAM 48K Words Physical SRAM $BFFF $BFFF 24K Words from Y RAM 24K Words from X RAM No SRAM 48K Words Physical SRAM $F000 $5FFF 24K Words Y RAM $0000 Figure 5. On-Chip RAM Allocation Example The STMP35xx contains an on-chip 16K Word ROM which holds the Bootstrap code. At power-on time, the first instruction executed by the DSP comes from this ROM. Power-on reset causes the on-chip ROM to be placed at P:$0000. The reset interrupt vector is located at P:$0000, thus the first instructions executed come from this ROM. Software in this ROM offers a large number of BOOT configuration options, including manufacturing boot modes for “burn-in” and “tester” operation. Other boot modes are responsible for loading application code from off-chip into the on-chip RAM. Off chip sources for application bootstrapping include: • External NAND FLASH • Host (PC) controlled bootstrapping using USB, 5-35xx-D1-1.08-061705 7 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip • Host (PC) controlled bootstrapping using I2C slave. • I2C Master transfers from serial EEPROM Once the on-chip boot code has loaded the application code into on-chip RAM, it can relocate the 16K Word on-chip ROM to the very top of the P address space, see Figure 5. “On-Chip RAM Allocation Example” on page 7. The on-chip ROM can be disabled entirely so that all 64K words of P space is available for on-chip RAM. The on-chip boot code includes a firmware recovery mode. If the device fails to boot from NAND flash, for example, the device will boot from a PC host connected to its USB port. This firmware recovery mode can be invoked at anytime by holding the PSWITCH or “play” button for at least five seconds during power up. The on-chip RAM serves as one end of all DMA transfers, e.g either the source or destination. Every SRAM block has three potential accessors: P-BUS, DMA-BUS, and its respective X-BUS or Y-BUS. A number of the integrated peripheral controllers use a distributed DMA implementation to transfer data to or from on-chip SRAM. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS External Flash/IDE External SDRAM USB FLASH ECC CD D/A A/D Trace Buffer Filter Coproc. Figure 6. On-Chip RAM & Distributed DMA In this distributed DMA architecture, all of the peripheral controllers that use DMA share a common DMA address and data bus path to and from on-chip RAM. Each peripheral controller implements its own address generator. Address generation can be highly sequential as in the case of the D/A converter or fairly random as in the case of the USB controller. Thus each device that uses the distributed DMA will have at least one base address register (HW_xxxBAR) and various address modifying registers. Most of the distributed DMA devices implement some form of circular buffering in their addressing modes. There is a centralized arbiter that selects which of the distributed DMA peripheral controllers has access to the DMA bus on any given clock cycle. 8 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip With a DSP core clock of 65MHz, a single block of on-chip RAM can provide 65MHz times 3 bytes or 195 MByte/second of bandwidth. There are four 24 bit data busses connected to the on-chip SRAM blocks. Furthermore, each SRAM block is single ported and has its own independent address and data busses. Thanks to the arbitration logic in this memory subsystem, all four busses (P, X, Y, DMA) can be made to cycle on every clock. Thus the peak bandwidth available from the on-chip RAM is four times 195 MByte/second or 780 MByte/second. Of course, there are times when more than one data bus needs to transfer into or out of the same SRAM block. When conflicts occur, the arbiter will “stall” the DSP for one (or more) clock(s) to resolve the conflict. The reader should not be surprised to see devices like A/D or D/A converters using DMA transfers. Some readers may be surprised to learn that external FLASH and external SDRAM are only accessible via the DMA. The external memories are not mapped into the “load/store” space of the DSP’s instruction set. 2.3.3. Power Subsystem The STMP35xx contains a sophisticated power subsystem including two integrated DC to DC converters to produce a very cost effective product with flexible battery configurations. In addition, it contains power monitoring circuits for battery brownout detection as well as system overload brownout detection. The chip also contains detection circuits for battery installation and removal. It manages power state changes caused by battery changes or from monitoring the on/off power switch circuit. The chip has two programmable integrated DC-DC converters that can be used to provide power for the device as well as the entire application. The converters can be configured to operate from standard battery chemistries in the range of 0.9-4.2 volts including alkaline cells, NiMH, LiIon etc. These converters use off chip reactive components (L/C) in a pulse width or frequency modulated DC to DC converter. The DC to DC converter circuit consists of the off-chip reactive components, an integrated controller and integrated low resistance FET switches. The DC-DC converter #1, as shown in Figure 7, has one n-channel FET and three independently controlled p-channel FETs generating three independent channels of separately controlled voltages. For the case shown, the battery is a single AA alkaline battery in the range 0.9 to 1.5 volts. DC-DC converter #1 is used to “boost” this input voltage to 3.3 volts for use in driving the I/O VDD rail and two separate 1.8 volt sources for driving the analog VDD rail and the digital VDD rail. This case is shown in the first row of Table 1, “Flexible Battery Configurations,” on page 11. Other rows show different configurations supported by the DC to DC converters. For example, when the battery chemistry provides an input voltage that is higher than that desired for the I/O rail, digital rail or analog rail, then the DC to DC converters can operate in “buck” mode which provides a regulated output that is lower than its input. One obvious use for the DCDC converter is in boosting the output of a nearly depleted alkaline battery delivering 0.9 volts up to the regulated 3.3 volt I/O rail voltage and the regulated 1.8 volt digital and core rails. The DCDC converter can also be used to lower the voltage of a 4.2 volt LiIon battery down to the 1.8V digital core and analog rails. Table 1, “Flexible Battery Configurations,” on page 11 shows various battery configurations that can be supported.1 1.Note VddA3 == VddHP, VddA4== VddPLL. The analog power pair formerly known, in the STMP3410, as VddA2 and VssA2 have been redefined for the STMP35xx as Vdd5V and LRADC2. 5-35xx-D1-1.08-061705 9 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip In addition, the DCDC converter can regulate these voltages to lower the standard core and I/O values to extend the battery life. Recall that energy consumed in a CMOS AC circuit is proportional to V2 so this reduction can be quite significant. These program controlled reductions in operating voltage are used in various SigmaTel software applications to provide very long battery life products. The STMP35xx also contains a silicon speed sensor so that each device can tailor its operating voltage to the minimum required for safe operation as constrained by its individual silicon process parameters and junction temperature. The DC to DC converters control the power up sequence of the device and hold the rest of the chip in reset until the power supplies have stabilized at the correct voltages. The power up sequence begins when the battery is connected to the BATT pin. As shown in Figure 7, the crystal oscillator will begin running as soon as the battery is connected and the pswitch is asserted. The crystal oscillator and the real time clock (RTC) can be programmed to continue to operate even when the player is in the off state. The crystal oscillator and RTC are the only drains on the battery in the off state and designed for very small energy consumption. The RTC module includes an alarm function that can be used to “wake-up” the DC to DC converters which will then wake up the rest of the system. VddIO 1/2/3*/4* VddD 1/2/3 VddA 1/2/3 NC DCDC_VddIO DCDC_VddD DCDC_VddA* battery battery Low Resolution ADC BATT DC-DC #1 Control System (boost mode) DCDC_Batt DCDC_Gnd Regulator VddXTAL=BATT DSP_RESET VddXTAL NC DCDC2_Vout* RTC DC-DC #2 Control System medium V (2 Alkaline/NimH) or hi V LiIon Applications XTAL OSC DCDC_mod0* DCDC_mod1* Power Button DCDC2_Gnd* DCDC_mod2 Pswitch NC DCDC2_Batt* * only available on 144-pin package NC NC NC Figure 7. Lowest Cost 1xAA 100-pin Configuration1 The power down sequence is also controlled by the DC to DC converters. When a power down event is detected, they return the player to the power off state. In the power off state with non-LiIon chemistries, the I/O Vdd rail is connected to the Battery and the internal VddD and VddA rails are pulled down to ground to minimize 10 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip leakage currents. For LiIon mode, the I/O Vdd rail is connected to ground instead of connecting to BATT. In addition to the various voltage detectors, a power up or power down event can be signaled by the special power switch circuitry in the DC to DC converters. A simple resistor network and momentary contact push button switch is sufficient for player on/off control. There is a special three channel low resolution A/D converter on-chip to help with battery based applications. One channel is dedicated to measuring the voltage on the BATT pin and is used to monitor the battery condition to estimate its remaining life. All low resolution channel also have digital trip point comparator functions that can be used to generate interrupts to the DSP. The trip point can be programmatically set at one of 512 levels for battery brown out detection on the Battery LRADC or for threshold detection on the other two LRADCs. NOTE: ONLY the battery can be connected directly to the BATT pin for correct operation of the device, thus the battery channel of the low resolution A/D converter is not available for any other purpose. The second and third low resolution A/D converters are uncommitted and available for application use. An optional current source can be enabled to either the second or third LRADC pin to support external temperature sensors with minimal external components. In addition, the DC to DC converters have comparators to monitor their output voltages. They can report “brownout” conditions resulting from over drawing their power capabilities. These conditions are reported either on a normal interrupt level or as a non-maskable interrupt (NMI). The device contains an integrated PLL which is referenced to the 24.0MHz crystal oscillator. It can generate clock sources from 39.6MHz to 120.0MHz in steps of 1.2MHz. It includes a post divide stage for the digital clock from a divide by one to a divide by 2048. With the PLL turned off and the post divider set to 2048, one can achieve a low power 11.7KHz operating point. POWER SOURCE 1 Alkaline or 1 NiMH (0.9V-1.5V) VDD I/O DCDC1 DCDC_VddIO Boost 3.3V 1 Alkaline or 1 NiMH (0.9V-1.5V) DCDC1 DCDC_VddIO Boost 3.3V LiIon, (3.0-3.6V) 2 Alkaline or 2 NiMH (1.8V-3.0V) LiIon (3.3V-4.2V) 5-35xx-D1-1.08-061705 VDD D DCDC1 DCDC_VddD Boost 1.8V DCDC1 DCDC_VddD Boost 1.8V lowest cost (shared passives & 100-pin) LiIon Battery DCDC1 Buck 1.8V DCDC2 DCDC1 Boost Buck 3.3V 1.8v DCDC2 DCDC1 Buck Buck 3.3V 1.8V Table 1. Flexible Battery Configurations VDD A DCDC1 DCDC_VddA Boost 1.8V better noise floor (144-pin) DCDC1 DCDC_VddD Boost 1.8V DCDC1 Buck 1.8V DCDC1 Buck 1.8V DCDC1 Buck 1.8V 11 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip There is an integrated watchdog reset timer available for automatic recovery from catastrophic software errors. If programmed by software, this circuit will generate a reset sequence if its timer is ever allowed to reach zero. Normally functioning software will reload the watchdog count before expiration of the count. The maximum delay until a watchdog reset is greater than four hours. 2.3.4. Battery Charger The STMP35xx integrates support for LiIon charging protocols in USB or AC line attached environments. When the 5 V source is detected on the VDD5V pin the power management system automatically reconfigures to use the integrated linear regulators to supply the core and I/O rails. Software can then enable the integrated current source to provide battery charge current, as shown by the bold path in Figure 8. The variable current sources tappers of the charge current as it approaches the maximum LiIon battery voltage. Software can then take over to control the final “topping-off” algorithm, as desired. USB Vbus 5v Line 5V input >4.35V battery VddIO 1/2/3*/4* 5V detect VDD5V V Sense battery BATT LRADC1 Linear Reg. VddD 1/2/3 VddA 1/2/3 NC NC DCDC_VddIO DCDC_VddD DCDC_VddA* Linear linear charger controller Charge Current Path 3 Channel Low Resolution ADC DC-DC #1 Control System (boost mode) DCDC_Batt DCDC_Gnd LRADC2 Regulator Tem p. VddXTAL=BATT DSP_RESET VddXTAL battery disabled during linear battery charge DCDC2_Vout* RTC DC-DC #2 Control System XTAL OSC DCDC2_Batt* DCDC_mod0* DCDC_mod2 DCDC_mod1* DCDC2_Gnd* * only available on 144-pin packages MODE = 000, for LiIon, both converters in buck mode Figure 8. Integrated LiIon Battery Charger 2.3.5. USB Interface The chip includes a Universal Serial Bus (USB) version 2.0 controller and integrated UTMI PHY. The STMP35xx device interface can be attached to USB 2.0 hosts and 12 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip hubs running in the USB 2.0 High Speed mode at 480Mbit/second. It can be attached to USB 2.0 Full Speed interfaces at 12Mbit/second. Of course, the USB 2.0 Full Speed mode allows the STMP35xx to attach to USB 1.1 compliant hosts and hubs. The USB interface is used to download digital music data or program code into external memory and to upload voice recordings or MP3 encoded recordings from external memory to the PC. Program updates can also be loaded into the flash memory area using the USB interface. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS USB System Programmable Registers USB DMA Interface Bus Interface USB Controller Programmable Registers USB Config State Machine End Point Info End Point Controller Protocol Layer ARC USB 2.0 Device Controller Serial Interface Engine PHY Regs. USB Xcvr 480MHz PLL Integrated USB 2.0 PHY External USB 2.0 UTMI PHY Figure 9. USB Interface Block Diagram The Universal Serial Bus (USB) is a cable bus that supports data exchange between a host computer and a wide range of simultaneously accessible peripherals. The attached peripherals share USB bandwidth through a host-scheduled, 5-35xx-D1-1.08-061705 13 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip token based protocol. The bus allows peripherals to be attached, configured, used and detached while the host and other peripherals are in operation. The USB subsystem is designed to make efficient use of system resources within the SMTP35xx. It contains a random access DMA engine that reduces the interrupt load on the DSP and reduces the total bus bandwidth that must be dedicated to servicing the eight on-chip physical endpoints It is a dynamically configured port which can support up to 6 general use physical endpoints and 8 logical endpoints, each of which may be configured for bulk, interrupt or isochronous transfers. The USB configuration information is read from onchip memory via the USB controller’s DMA. Figure 9 shows a block diagram of the USB controller. This device makes extensive use of the DMA to read and write the multiple buffers associated with all of the endpoints that it can have open at one time 2.3.6. External Memory Interfaces. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS EMC Programmable Registers EMC NAND Flash/ SmartMedia State Machine EMC DMA Engine EMC Compact Flash State Machine Figure 10. External Memory Controller The chip includes an external memory controller that has two major functional modes: SmartMedia/NAND and CompactFlash. The SmartMedia/NAND flash interface provides a state machine that provides all of the logic necessary to perform DMA functions between on-chip RAM and the flash. The CompactFlash interface supports the CompactFlash Memory mode. This mode can be used to communicate with standard CompactFlash (CF) devices such as CF Flash and the IBM MicroDrive. The CF Memory mode can be used to communicate with standard ATA/ATAPI devices like CD-ROM and hard drives 14 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The external memory controller can be described as three fairly independent devices in one: a SmartMedia/NAND flash interface based on the STMP3410 flash controller, a CompactFlash/NOR flash/IDE interface, and a new general purpose flash state machine that can support the new 1Gb/die NAND flash devices with 128KByte block erase modes. These interfaces share the same device pins, some registers and the DMA engine. The interfaces use memory mapped registers to setup and control the transactions. Data is always sent through DMA – there are no data registers that correspond to the interface data bus. Transactions are always started with a kick bit. The interface sets up the control lines and transfers data to/from the internal RAM. Once the transaction is complete the interface signals the DSP with either a polled flag or an interrupt. 2.3.7. Hardware Acceleration for ECC for Robust External Storage The forward error correction module is used to provide STMP35xx applications with a reliable interface to various storage media, especially storage media that would otherwise have unacceptable bit error rates. The ECC module comprises two different error correcting code processors: • 1-bit correcting Samsung SSFDC (Hamming-code) encoder/decoder. • 4-symbol correcting (9-bits/symbol) Reed-Solomon encoder/decoder. The 1-bit hamming code is defined by Samsung for use with all SSSFDC compliant NAND flash memories. This code is capable of correcting a single incorrect bit over the block for which the ECC is valid (256 bytes per page). The purpose of the Reed-Solomon decoder is to process a coded block (data block followed by “parity” check data) to determine if there is an error and, if there are errors, where they are located and how to correct them. The purpose of the ReedSolomon encoder is to read a block of 503-symbols from RAM, calculate and append 8-parity symbols to form a 512-symbol RS-codeword. The Hamming code error corrector is strong enough to detect two bits in error in 256 bytes and to correct 1-bit/256 byte errors. Both of these error correction encoder/decoders use DMA transfers to move data to and from on-chip RAM completely in parallel with the DSP performing other useful work. 2.3.8. Mixed Signal Audio Subsystem The STMP35xx contains an integrated high quality mixed signal audio subsystem, including high quality sigma delta D/A and A/D converters. The D/A is of course the mainstay of the Audio Decoder/Player product application while the A/D is used for Voice Record and MP3 Encode applications. The chip includes a low noise headphone driver that allows it to directly drive low impedance (8Ω or 16Ω) headphones. The direct drive, or “cap-less” mode removes the need for large expensive DC blocking capacitors in the headphone circuit. The headphone power amplifier can detect headphone shorts and report them via the DSP interrupt system. A digitally programmable master volume control allows user control of the headphone volume. Annoying clicks and pops are eliminated by zero crossing updates in the volume/mute circuits and by headphone driver startup and shutdown circuits. There is an integrated analog mixer that drives the master volume control programmable gain amplifier. The chip provides for two stereo line level inputs and a mono microphone input. The microphone circuit has a mono to stereo programmable gain 5-35xx-D1-1.08-061705 15 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip pre-amp and an optional microphone bias generator. The line inputs have programmable gain/attenuation and balance capability. The integrated sigma delta DAC has a programmable gain/attenuation analog amplifier. The programmable gain/attenuation stage outputs from all three stereo inputs and from the DAC are mixed together to drive the master volume control. There is an analog mux in front of the ADC that can select any of the three input sources or the mixer output. The selected source is then sent to the ADC Gain stage and from there to the ADC. The mixer can be independently powered down. In this configuration, the mixer is bypassed so that the DAC can still play audio through the headphone driver saving power consumption and improving the SNR and THD performance. Line 1 In Gain LINEIN Mixer Master Volume Mic In Gain MICIN + FM In Gain OUTPUT Headphone Driver FMIN DAC Gain FROM DAC DMA DAC EN CLK ADC Input Mux ADC GAIN LINEIN FMIN MICIN TO ADC DMA ADC Mic Bias CLK EN Figure 11. Mixed Signal Audio Elements 2.3.9. Filter Coprocessor A filter coprocessor has been added to the STMP35xx to reduce the DSP load associated with filter calculations. Additional enhancements in the ADC and DAC buffer management have greatly reduced the DSP work load as compared with STMP3410 based applications. The concomitant reduction in DSP overhead yields more available MIPS for more intensive software applications or allows the reduction in clock frequency/voltage and thereby dramatically extends the battery life. The filter coprocessor is a DMA based engine that overlaps execution with the DSP. 2.3.10. IDE/ATA Hard Drive Interface The external memory controller interface supports the attachment of an ATA/IDE hard drive device. This is particularly useful for one inch 2GByte hard drive and 2.5 inch 10GByte hard drive MP3 players. Hard drive and external SDRAM configurations are supported in the same application, i.e. large blocks of hard drive data can be copied to SDRAM leaving the hard drive unused for most of the MP3 play time. 2.3.11. SDRAM Interface The STMP35xx contains an SDRAM controller that can be used to connect external SDRAM memory chips. The controller is designed to work with 8 bit wide memory 16 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip systems. It supports SDRAM products from the 64Mbit, 128Mbit and 256MBit JEDEC families. SDRAM memory systems as small as 8MBytes can be configured. SDRAM memory subsystem are useful for applications that include CD-ROM or IDE hard drives. 2.3.12. Serial Peripheral Control Interface and I2C The chip contains a four wire SPI bus. It can act as a master for this bus to control other chips in the system, such as EEPROMs. It can also act as a slave on this bus to allow a host processor to communicate with the STMP35xx. The STMP35xx includes an enhanced SPI interface that provides DMA transfer support. In addition, the chip contains a two wire SMB/I2C bus interface. It can act as either a slave or master on the SMB interface. 2.3.13. LCD/LED and GPIO The STMP35xx contains 85 GPIO pins in the 144-pin package. Most digital pins that are available for specific functions, e.g. SDRAM interface are also available as GPIO pins if they are not otherwise used in a particular application. Most LCD and LED displays can be directly controlled from the GPIO interface. 2.3.14. PULSE WIDTH MODULATOR (PWM) CONTROLLER The STMP35xx contains four PWM output controllers that can be used in place of GPIO pins. Applications include LED brightness control and high voltage generators for electroluminescent lamp (E.L.) display back lights. Independent output control of each phase allows zero, one or hi-Z to be independently selected for the active and inactive phases. Individual outputs can be run in lock step with guaranteed nonoverlapping portions for differential drive applications. The controller does not use the DMA. Initial values of Period, Active, and Inactive widths are set for each desired channel. The outputs are selected by phase and then the desired PWM channels are simultaneously enabled. This effectively launches the PWM outputs to autonomously drive their loads without further DSP intervention. Each PWM channel has a dedicated internal 12 bit counter which increments once for each divided clock period presented from the clock divider. The internal counter resets when it reaches the value stored in the channel control registers. The Active flip flop is set to one when the internal counter reaches the value stored in a register. It remains high until the internal counter exceeds the value stored in another register. These two value define the starting and ending points for the logically “active” portion of the waveform. The actual state on the output for each phase, e.g. active or inactive, is completely controlled by the active and inactive state values in the channel control registers and can be: HIGH, LOW, or TRI-STATE. 5-35xx-D1-1.08-061705 17 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 2.4. STMP35xx Family Members The STMP35xx is available in a number of ordering options whose function content is represented in Figure 12, also see 33. “STMP35xx FAMILY MEMBER PART NUMBERS & ORDERING INFORMATION” on page 391.. STMP3501 STMP3502† STMP3505 STMP3506‡ STMP3510 STMP3520‡ MP3 MP3 WMA, WMA w/DRM WMA, WMA w/DRM ‡ MP3 Encode ‡ MP3 Encode LED/LCD Interface LED/LCD Interface EL Backlight EL Backlight USB Mass Storage USB Mass Storage RTC [Janus DRM] RTC [Janus DRM] Voice Record Voice Record FM Tuner FM Tuner Headphone Amp & Driver Headphone Amp & Driver 50 Hour 50 Hour Battery Life Battery Life 1xAA, 1xAAA Batt. 1,2xAA, 1,2xAAA, LiIon batteries 1,2xAA, 1,2xAAA, LiIon batteries USB 2.0 (Full Speed) USB 2.0 (Full Speed) High-Speed USB 2.0 SLC, MLC NAND SLC, MLC NAND SLC, MLC NAND 100-pin TQFP 100-pin TQFP 100-pin TQFP 144-pin BGA 144-pin BGA MP3 WMA LED/LCD Interface USB Mass Storage Voice Record †FM Tuner Headphone Amp & Driver 20-25 Hour Battery Life STMP3550 STMP3560‡ MP3 WMA, WMA w/DRM ‡MP3 Encode LED/LCD Interface EL Backlight USB Mass Storage SDRAM Interface RTC [Janus DRM] Voice Record FM Tuner Headphone Amp & Driver 50 Hour Battery Life 1,2xAA, 1,2xAAA, LiIon batteries High-Speed USB 2.0 Battery Charging SLC, MLC NAND 100-pin TQFP 144-pin BGA Figure 12. STMP35xx Family Members 18 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 2.5. Signal Pin Sharing Among Various Application Configurations EMC NAND & SmartMedia #2 #1 EMC CompactFlash memory & ATA/IDE #2 #1 SDRAM #1 #1 CapLess Mode Headphone Line In 1 #3 Table 2. Pin Sharing Constraints by Subsystem Line In 1) CapLess Mode Headphone SDRAM EMC CompactFlash Memory & ATA/IDE EMC NAND & SmartMedia A large number of the chips I/.O pins are shared between various functions. The exact conflicts can be found in Table 492, “Pin Definition Table,” on page 377. #3 NOTES: #1: The EMC and SDRAM interfaces share a number of pins, including address and data busses. While precluding exactly simultaneous accesses, careful attention to chip selects and controller programing allows them to be used within the same application, e.g. reading CompactFlash in IDE mode and writing SDRAM for HDD MP3 player applications. Recommendation: use driver level mutual exclusion semaphores. #2: Within the EMC devices, conflicts can occur between shared pins in the NAND/SmartMedia interface and the CompactFlash interface. Use driver level mutual exclusion semaphores. #3: Capless headphone mode common amplifier output shares a pin with the analog line 1 Right input. In addition, the headphone common mode sense input shares a pin with analog line 1 Left input. Only one of these uses can be designed into a specific application. 2.6. Additional Documentation Additional documentation and information is available from SigmaTel, including an extensive software development kit (SDK), application notes, reference schematics, sample PCB board layouts, sample bill of materials, etc. It is specifically recommended that the reader refer to the peripheral device include files from the SDK. These files provide constant declarations for address offsets to the registers defined in the following sections. Note that the name of each programmable register defined in this data sheet corresponds to a C language #define or assembly language equate of the exact same name. In addition, these files contain 5-35xx-D1-1.08-061705 19 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip declarations that allow symbolic access to the individual bit fields within these registers. User programs can include all of these peripheral include files by simply including the file hw_equ.inc into their assembly files and hw_equ.h into their C files. 20 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 3. CHARACTERISTICS/SPECIFICATIONS 3.1. Absolute Maximum Ratings PARAMETER MIN MAX UNITS Storage temperature Battery Pin (BATT) DCDCMODE 000, 001, 010,011 Battery Pin (BATT) DCDCMODE 101,111 5 Volt Source Pin (VDD5V) PSWITCH DCDCMODE 101,111 PSWITCH DCDCMODE 000,001,010,011(Note 1). Analog supply voltage (VddA1, 2, VddHP, VddPLL) Digital supply voltage (VddD1, 2, 3) I/O Supply (VddIO1, 2, 3, 4) DCDC converter #1 (DCDC_VddD) DCDC converter #1 (DCDC_VddA) DCDC converter #1 (DCDC_VddIO) DCDCMODE 000, 011 DCDC converter #1 (DCDC_VddIO) all other DCDCMODEs DCDC converter #1 (DCDC_Batt) -40 -0.3 -0.3 -0.3 -0.3 -0.3 Digital Supply -0.3 -0.3 -0.3 -0.3 -0.3 -0.3 -0.3 125 4.242 1.98 5.25 VddIO BATT 1.98 Analog Supply 3.63 VddD Rail VddA Rail 4.242 3.6 max (VddIO, BATT) 4.242 3.6 BATT °C V V V V V V V V V V V V V VDDIO+0.3 V VDDD+0.3 V 3.6 V VDDA+0.3 V DCDC converter #2 (DCDC2_Vout) DCDCMODE 000 -0.3 DCDC converter #2 (DCDC2_Vout) all other DCDCMODEs -0.3 Input voltage on any DCDC_mod input pin relative to ground -0.3 (DCDCMODE) (Note 2) Input voltage on any digital I/0 pin relative to ground (DIO3) -0.3 (Note 3) Input voltage on any digital I/O pin in 1.8V mode relative to -0.3 ground (DIO18) (Note 2) Input voltage on USB D+, D- pins relative to ground (USBIO) -0.3 (Note 3) Input voltage on any analog pin relative to ground (AIO) -0.3 (Note 3) Table 3. Absolute Maximum Ratings Note: V V V 1. Pin sets for DCDCMODE, DIO3, DIO18, and AIO are defined in the pin list, see Table 492. “Pin Definition 2. 3. Table” on page 377. The maximum voltage limit on the PSWITCH pin can be achieved in DCDCMODE 000, 001, 010, and 011 by connecting the power switch to battery. A 20kohm resistor is placed between the switch and the PSWITCH pin to limit the current into the pin. In DCDCMODE 111 and 101, the power switch is tied to VDDIO and a 20kohm resistor is placed between the switch and the PSWITCH pin to limit the current into the pin. The ESD protection diode limits the input voltage to an acceptable level as long as a 20kohm resistor is placed in series with PSWITCH pin to limit the current. Contact SigmaTel for extended temperature range options. In most systems designs, battery and display specifications will limit the operating range to well within these specifications. 5-35xx-D1-1.08-061705 21 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 3.2. Recommended Operating Conditions PARAMETER MIN TYP Ambient operating temperature (Note 3) -10 Digital core supply voltage – VddD1, VddD2, VddD3 (Note 4) 1.35 Specification dependent on DSP frequency Digital I/O supply voltage – VddIO1, VddIO2 2.9 3.0 Analog supply voltage – VddA(VddA1, VddA2, VddA3) for Digital player type applications where the mixer is powered down. Supply Specification dependent on maximum output power Analog supply voltage – VddA(VddA1, VddA2, VddA3) for FM 1.45 or Voice Record type applications which utilize the mixer. Specification dependent on maximum output power Battery startup input voltage in 1xAA or 1xAAA mode 0.9 Full Scale Input Voltage: Line Inputs (Note 5) 0.6 Mic Input With 20 dB boost 0.06 Without 20 dB boost 0.6 Max Undistorted Full Scale Output Voltage with 16Ω load: Headphone/Line Outputs (VddA = 1.8 V) (Note 6) 0.54 Headphone/Line Outputs (VddA = 1.38 V) (Note 6) 0.41 0.42 Crosstalk between output channels (16Ω loads at 1Khz) -75 THD+N (16Ω headphone at 1 Khz) except STMP3501/3502 -70 (Note 10) THD+N (10KΩ load at 1 Khz) -87 THD+N (16Ω headphone at 1 Khz) for STMP3501/3502 -64 Analog line input resistance (Note 7) 25 Microphone input resistance 100 Analog output resistance DAC SNR Idle Channel (Note 8) 96 DAC -60dB dynamic range (Note 8) 92 94 ADC SNR Idle Channel (Note 8) 90 ADC -60dB dynamic range (Note 8) 90 Line SNR (Note 8) except STMP3501/3502 92 94 Line SNR (Note 8) for STMP3501/3502 87 89 Standby Current (Note 9) 150 Table 4. Recommended Operating Conditions Note: 22 MAX 70 Analog Supply 3.6 1.98 UNITS °C V 1.98 V - V - Vrms Vrms -66 Vrms Vrms dB dB <1 - 250 V V dB dB kΩ kΩ Ω dB dB dB dB dB dB uA 4. Recommended operating voltages for DCLK can be found in Table 5 In all cases, design must allow for board and bypass design variations. 5. At 1.38VddA max input is 0.45Vrms 6. Undistorted is considered to be THD+N < -64dB with a 1kHz 0dB sine wave. 7. Input resistance changes with volume setting: 10KΩ at +12dB, 25KΩ at 0dB, 50KΩ at -34.5dB 8. Measured “A weighted” over a 20 Hz to a 20 kHz bandwidth, relative to full scale output voltage (1.8V) 9. The chip consumes current when in the “OFF” mode to keep the crystal oscillator and the real time clock running. With a typical 2850mAh AA battery, the standby current would take more than 1 year to drain the battery fully. It also is possible to design a system that disables the crystal oscillator and real time clock to achieve a much lower OFF current. 10. The BGA package reduces THD performance by approximately 4dB. 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The following table can be used to select a proper setting for VddD and VddD brownout voltages based on standard analysis of worst case design and characterization data. MAX DCLK TARGET 75.6MHz 69.6MHz 64.8MHz 60.0MHz 48.0MHz 39.6MHz Min. VddD HW_DCDC_VDDD_ VOLTAGE_LEVEL Corresponding HW_DCDC_VDDD_ VddD BROWNOUT_LEVEL Brownout Voltage 1.92 V 11100 1.85 V 11010 1.82 V 11001 1.76 V 10111 1.73 V 10110 1.66 V 10100 1.63 V 10011 1.54 V 10000 1.4 V 01100 1.34 V 01010 1.37 V 01011 1.28 V 01000 Table 5. Recommended Operating Conditions for specific dclk targets . 5-35xx-D1-1.08-061705 23 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 3.3. DC Characteristics PARAMETER MIN Power Dissipation, VddD = 1.37 V, VddA = 1.37 V, VddIO = 3.05 V DCDC mode = 2-Channel Boost, DCLK = 36 MHz on PLL, USB off, Application = MP3 Play, minimum power configuration selected. ViH (DIO3) - Input high voltage for DIO3 digital I/O pin set, in 2.0 3.3 Volt mode. VIL (DIO3) - Input low voltage for DIO3 digital I/O pin set in 3.3 Volt mode. VIH (DIO18) - Input high voltage for DIO18 digital I/O pin set in 0.7*VddD 1.8 Volt mode. VIL (DIO18) - Input low voltage for DIO18 digital I/O pin set in 1.8 Volt mode. VOH (DIO3) - Output high voltage for DIO3 digital I/O pin set in 0.8*VddIO 3.3 Volt mode, 4mA mode. VOH (DIO3) - Output high voltage for DIO3 digital I/O pin set in 0.8*VddIO 3.3 Volt mode, 8mA mode. VOL (DIO3) - Output low voltage for DIO3 digital I/O pin set in 3.3 Volt mode. VOH (DIO18) - Output high voltage for DIO18 digital I/O pin VddD - 0.4 set in 1.8 Volt mode. VOL (DIO18) - Output low voltage for DIO18 digital I/O pin set in 1.8 Volt mode. Table 6. DC Characteristics 3.4. TYP 80 MAX UNITS mW V 0.8 V V 0.3*VddD V V V 0.4 V V 0.4 V Restrictions on Approved Usage of SigmaTel Parts SigmaTel Products are not designed or intended for use in life support appliances, or systems where malfunction of a SigmaTel product can reasonably be expected to result in personal injury or death nor are they intended for use in any application where malfunction of a SigmaTel product can reasonably be expected to result in environmental or other subsequent damage. 24 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 4. DSP CORE The on-chip DSP core is modeled exactly after the Motorola DSP56004. It supports the identical instruction set, registers, addressing modes, etc., as the DSP56000 family of digital signal processors. Figure 13 shows the DSP architecture.The DSP core is a general-purpose 24-bit DSP especially suited to high fidelity digital audio applications for very low power/energy environments. ON-CHIP PROGRAM RAM/ROM ON-CHIP Y RAM ON-CHIP X RAM XAB ADDRESS GENERATION UNIT YAB PAB OnCE Debugger Interface Peripherals XDB YDB Data Bus Switch PDB GDB PROGRAM Interrupt Controller PROGRAM DECODE CONTROLLER PROGRAM ADDRESS GENERATOR DATA ALU 24 x 24 +56 --> 56-bit MAC Two 56 bit Accumulators Mode GPIO bits IVL[6:0],IRQA, IRQB, NMI RESET Figure 13. DSP Architecture 5-35xx-D1-1.08-061705 25 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The central components are: • Data Busses (XD,YD,PD) • Address Busses (XA,YA,PA) • Data Arithmetic Logic Unit (Data ALU) • Address Generation Unit (AGU) • Program Control Unit (PCU) • On-Chip Program ROM • On-Chip X,Y,P RAM • On-Chip Emulation circuitry The DSP is organized around the registers of three independent execution units: the PCU, the AGU and the data ALU. Data movement between the execution units occurs over four bidirectional 24-bit busses: the X data bus (XDB), the Y data bus (YDB), the program data bus (PDB) and the global data bus (GDB). Certain instructions treat the X and Y data buses as one 48-bit data by concatenating them. Data transfers between the data ALU and the X data memory or Y data memory occur over the XDB and YDB respectively. The bus structure supports general register-to-register, register-to-memory, and memory-to-register data movement. It can transfer up to two 24-bit words or one 56bit word in the same instruction cycle. Transfers between busses occur in the internal bus switch. The internal bus switch, which is similar to a switch matrix, can connect any two internal busses without adding pipeline delays. Thus greatly simplifying the programming model. The bit manipulation unit is located in the bus switch so that it can access each memory space. The bit manipulation unit performs bit operations on memory locations, address registers, control registers and data registers over the XDB, YDB and GDB. The data ALU performs all of the arithmetic and logical operations on data operands. It consists of four 24 bit input registers, two 48-bit accumulators and two 8-bit accumulator extension registers, an accumulator shifter, two data bus shifter/limiter circuits, and a parallel single cycle, non-pipelined multiply-accumulator (MAC) unit. The address generation unit (AGU) performs all of the address storage and address generation computations necessary to indirectly address data operands in memory. It operates in parallel with other DSP resources to minimize address generation overhead and keep the supply of data operands fed to the data ALU. The AGU has two identical address arithmetic units that can generate two 16-bit addresses every instruction cycle. Each of the arithmetic units can perform one of three types of address arithmetic: linear, modulo and reverse-carry. The program control unit performs instruction prefetch, instruction decode, hardware DO loop control, and interrupt/exception processing. It consists of three components: the program address generator, the program decode controller, and the program interrupt controller. It contains a 15-level by 32 bit system stack memory and the following directly addressable registers: the program counter (PC), loop address (LA), loop counter (LC), status register (SR), and the operating mode register (OMR). The DSP core responds to 7 interrupt vector level inputs (IVL[6:0], two peripheral interrupts (IRQA, IRQB) and a non-maskable interrupt (NMI). 26 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 4.1. Operating Mode Register The organization of the operating mode register is shown below. The operating mode register determines chip configuration including boot modes, and memory configuration. The HW_OMR is a core register that is accessible by special DSP instructions. It therefore has no address. HW_OMR BITS LABEL RW RESET 23:8 7 6 RSRVD R 0 RSRVD R 0 SD RW 0 5 4 RSRVD R 0 MC RW GP0 3:2 1 RSRVD R 0 MB RW GP1 0 MA RW 1 SPECIAL DEFINITION Reserved – Must be written with 0. Reserved – Must be written with 0. Stop Delay – This bit is exported from the core as an output. It can be used when waking up from the STOP low power standby mode. If this bit is set, then when an IRQA interrupt occurs to wake up the core from the STOP state, the clock control circuitry will wait a time period (e.g. 65536 clock cycles) before allowing the clocks back in to the DSP core. This can be used, for example, to restabilize a PLL clock oscillator. If this bit has a zero value, then the clocks will be allowed back into the core immediately after the occurrence of the IRQA interrupt, thus implementing a “warm boot” from the STOP low power standby state. Reserved – Must be written with 0. Operating Mode C – This bit is used to configure the boot mode for the STMP35xx. When the hardware reset is active, this bit samples the state of GP0 pin. Once the boot code executes, it can check the state of this bit in order to make decisions about what type of boot mode to perform. Reserved – Must be written with 0. Operating Mode B – This bit is used to configure the boot mode for theSTMP35xx. When the hardware reset is active, this bit samples the state of the GP1 pin. Once the boot code executes, it can check the state of this bit in order to make decisions about what type of boot mode to perform. Operating Mode A – This bit is used to choose between Boot ROM and Program Memory for instruction fetches and read accesses. When this bit is set, as it is after hardware reset, the Boot ROM space is activated and any fetches or read accesses to the P: space will refer to the on-chip ROM. When this bit is a zero, the Program RAM Memory space is enabled instead of the Boot ROM memory space and any fetch or read access to P: space will refer to the on-chip RAM. Writes to P: space always access the program RAM regardless of the state of the MA bit. It is not possible to write to the program ROM. This bit affects ROM access in region P:$0000 through P:$3FFF. Accesses to the high mapped region of ROM, P:$C000 through P:$FFFF is controlled by HW_RAM_ROM_CFG_PROMIE. Table 7. Operating Mode Register Description 4.2. General Debug Register The HW_GDBR Register is also mapped into the X Peripheral I/O space. This register is used as a gateway between the DSP and the Debug port. For instance, when displaying the states of the internal registers and memory of the DSP core, the DSP moves the data to this register and the data is then shifted out the OnCE_DSO pin. The HW_GDBR register operation is controlled automatically by the emulator and the debug circuitry within the core. An added feature of the Debug Unit is that the emulator cannot access the debug unit unless a write to the HW_GDBR Register is executed by the DSP (normally in the boot code). 5-35xx-D1-1.08-061705 27 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_GDBR 2 3 2 2 2 1 X:$FFFC 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 VALUE Table 8. HW_GDBR BITS LABEL RW RESET DEFINITION 23:0 VALUE RW 0 Value to be read by the debugger or debugger value to be read by a DSP instruction from the debugger. Table 9. General Debug Register (GDBR) 4.3. OnCE (On-Chip Emulator) Debug Interface The DSP on-chip emulation (OnCE) circuitry provides a sophisticated debugging tool that allows simple, inexpensive, and speed independent access to the processor’s internal registers, memories and peripherals. OnCE provides software engineers with access to the internal state including the addresses of the last five instructions and provides the ability to modify that state, and single step the processor. OnCE capabilities are accessed through a four pin interface 1. Debug Serial input (OnCE_DSI) 2. Debug Serial Clock (OnCE_DSK) 3. Debug Serial Output (OnCE_DSO) 4. Debug Request Input (OnCE_DRN) The OnCE controller and serial interface consists of the following blocks: OnCE command register, bit counter, OnCE decoder and the status/control register. For a block diagram, see Figure 14. “OnCE Interface Block Diagram” on page 28. OnCE_DSI OnCE COMMAND REGISTER OnCE_DSK ISBKPT ISDR ISTRACE OnCE DECODER bit 7 Bit Counter bit 23 OnCE_DRN ISSWDBG Status and Control Register REG READ REG WRITE OnCE_DSO Figure 14. OnCE Interface Block Diagram 28 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The OnCE Command Register is an 8 bit shift register that receives the serial data from the OnCE_DSI pin. It holds the 8 bit commands to be used as input for the OnCE controller. OnCE Command Register BITS LABEL RW RESET DEFINITION 7 RW RW The read/write bit specifies the direction of the data transfer. For zero, write the data associated with the command into the register specified in the RS field. For one, read the data contained in the register specified in the RS field. 6 GO RW If the GO bit is set, the chip will execute the instruction which resides in the PIL register. To execute the instruction, the processor leaves the debug mode, and the status is reflected on the OS0,OS1 pins. The processor will return to the debug mode immediately after executing the instruction. 5 EX RW If the Exit Command bit is set, the processor will leave the debug mode and resume normal operation. The Exit command is executed only if the Go command was issued and the operation is a write to OPDBR or a read/write to” No Register Selected”. 4:0 RS RW Register Select field Table 10. OnCE Command Register The Register Select field (RS[4:0]) selects one of 32 OnCE debug registers to be read or written. RS[4:0] 00000 00001 00010 00011 0010X 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 101XX 11XX0 11111 REGISTER SELECTED OnCE Status and Control Register Memory Breakpoint register Reserved Trace Counter Reserved Memory Upper Limit Memory Lower Limit GDB Register NOTE: this register can be read or written by the DSP instructions PDB Register PAB Register for Fetch PIL register, next instruction from debugger comes from here Clear Memory Breakpoint Counter Reserved Clear Trace Counter Reserved Reserved Program Address Bus FIFO and Increment Counter Reserved PAB Register for Decode Reserved Reserved No Register Selected Table 11. OnCE Register Selects 5-35xx-D1-1.08-061705 29 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 5. ON-CHIP MEMORY SUBSYSTEM The chip includes 96 kwords of on-chip RAM (96k x 24 bits = 2.25 Mbits) that is used for program and data storage, and 16K words of on-chip ROM (16K x 24 bits = 384kbits) that is used for the code that boots the device (see Section 20 for more details on boot modes and the contents of the on-chip ROM). The on-chip ROM is mapped at the address range P:$0000-$3FFF at reset, it can also be configured to be mapped at address range P:$CFFF-$FFFF, or it can be disabled. The on-chip RAM is organized into two banks of 48K words each, called PXRAM and PYRAM. PXRAM can be mapped into the DSP P memory space, starting at P:$0000, or into the DSP X memory space, starting at X:$0000. PYRAM can be mapped into the DSP P memory space, starting immediately after the end of the PXRAM memory, or into the DSP Y memory space, starting at Y:$0000. Both PXRAM and PYRAM memory can be allocated to the DSP P, X or Y memory spaces in 8K word increments, from a minimum of 0K words to all available memory. The memory configuration is controlled by the PX & PY Memory Configuration registers documented below. There are no hardware safeguards against improper programming of these registers. It is possible to allocate less than all of the on-chip RAM, unallocated memory will then be invisible to the DSP. PXRAM Configuration Register HW_PXCFG 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 PXXSIZE 2 3 X:$FFE8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 PXPSIZE 5.1. Table 12. HW_PXCFG BITS LABEL 23:14 13:8 RSRVD PXXSIZE R RW RW 0 011000 RESET 7:6 5:0 RSRVD PXPSIZE R RW 0 011000 DEFINITION Reserved – Must be written with 0. Number of kwords of PXRAM that is mapped in the DSP X memory space. Initialize 24KW to X RAM. This six bit field represents 1K increments of RAM. It must be allocated in 8K word chunks. Reserved – Must be written with 0. Number of kwords of PXRAM that is mapped in the DSP P memory space. Initialize 24KW to Y RAM. This six bit field represents 1K increments of RAM. It must be allocated in 8K word chunks. Table 13. PXRAM Configuration Register Description 30 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip PYRAM Configuration Register HW_PYCFG 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 PYYSIZE 2 3 X:$FFE9 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 PYPSIZE 5.2. Table 14. HW_PYCFG BITS LABEL RW RESET 23:14 13:8 RSRVD PYYSIZE R RW 0 011000 7:6 5:0 RSRVD PYPSIZE R RW 0 011000 DEFINITION Reserved – Must be written with 0. Number of kwords of PYRAM that is mapped in the DSP Y memory space. Initialized to 24KW Y RAM.This six bit field represents 1K increments of RAM. It must be allocated in 8K word chunks. Reserved – Must be written with 0. Number of kwords of PYRAM that is mapped in the DSP P memory space. Initialized to 24KW to P RAM. This six bit field represents 1K increments of RAM. It must be allocated in 8K word chunks. Table 15. PYRAM Configuration Register Description The PXRAM bank is accessible to DSP P space accesses, DSP X space accesses, and DMA accesses. The PYRAM bank is accessible to DSP P space accesses, DSP Y space accesses, and DMA accesses. PXRAM & PYRAM are made up of 3 physical blocks of 16K words each for a total of 48K words each. Since the allocation of on-chip RAM to DSP P space, X space, & Y space is in 8K Word increments, it is possible for a single physical memory block in the PXRAM bank to be accessed by the DSP P, DSP X, and DMA busses at the same time, similarly for the PYRAM bank. When this happens, the memory interface control logic steals one or more clock cycles from the DSP to allow all of the accesses to complete in separate clock cycles. In case of conflict, DMA accesses take priority over DSP accesses, and DSP program accesses take priority over DSP data accesses. It is possible to eliminate cycle steals because of DSP P space and DSP X or Y conflicts by allocating PXRAM & PYRAM in increments of 16K words, this means that each physical memory block is allocated to DSP P, X or Y space. It is not possible to eliminate the cycle steal that happens because a DMA access conflicts with a DSP access to memory. In order to allow the programmer to monitor total number of cycle steals are happening, the contents of the Cycle Steal Count Register (HW_CYCSTLCNT) will increment whenever a cycle is stolen for a memory access conflict. Figure 15 below shows an example of how the PXRAM and PYRAM memory banks can be allocated. In this example, PXRAM is allocated as 24K words P, & 5-35xx-D1-1.08-061705 31 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 24K words X, and PYRAM is allocated as 24K words P, & 24K words Y, for a total of 48K words of P, 24K words of X, and 24K words of Y. PYMEM PXMEM X:$0000 physical:$BFFF Y:$0000 8 kwords per instance Y:$1FFF Y:$2000 X:$1FFF X:$2000 24 kwords X memory from PXRAM 8 kwords per instance Y:$3FFF Y:$4000 X:$3FFF X:$4000 X:$5FFF P:$5FFF 24kwords Y memory from PYRAM 48 kwords total per memory bank 8 kwords per instance Y:$5FFF P:$BFFF 8 kwords per instance P:$A000 P:$4000 8 kwords per instance 24 kwords P memory from PXRAM 24 kwords P memory from PYRAM P:$8000 P:$2000 8 kwords per instance P:$0000 physical:$0000 P:$6000 Figure 15. On-Chip RAM Organization When the memory is configured as shown in Figure 15, the DSP’s view of the memory map will be as shown below in Figure 16. The DSP P address space has 48K words of RAM as shown in the range P:$0000 to P:$BFFF. If the ROM is enabled then it appears in the DSP P address space at P:$C000 to P:$FFFF. The DSP X space has 24K words of RAM at X:$0000 to X:$5FFF, likewise the DSP Y space has 24K words of RAM at Y:$0000 to Y:$5FFF. The address ranges X:$6000 to X:$EFFF, and Y:$6000 to Y:$FFFF are not populated with any memory. The address range P:$C000 to P:$FFFF is unpopulated if the ROM is not enabled. The address range X:$F000 to X:$FFFF is reserved for on-chip peripherals. In the above example memory configuration, it is possible for cycle steals to happen because of either DSP access conflicts, or because of DMA access conflicts. The areas in the memory map where DSP access conflicts can occur are cross hatched in Figure 16. If the DSP attempts to access an address in the range P:$4000 to P:$5FFF at the same time as an address in the range X:$4000 to X:$5FFF, a stall cycle will occur. If the DSP attempts to access an address in the range P:$A000 to 32 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip P:$BFFF at the same time as an address in the range Y:$4000 to Y:$5FFF, a stall cycle will also occur. DSP P space DSP Y space DSP X Space X:$FFFF peripherals X:$F000 P:$FFFF Y:$FFFF 16 kwords from PROM P:$C000 P:$BFFF not populated not populated P:$A000 P:$9FFF 24 kwords from PYMEM 64 kwords total P:$8000 P:$7FFF P:$6000 P:$5FFF X:$6000 X:$5FFF Y:$6000 Y:$5FFF P:$4000 P:$3FFF X:$4000 X:$3FFF Y:$4000 Y:$3FFF 24 kwords from PXMEM 24 kwords from PXMEM 24 kwords from PYMEM P:$2000 P:$1FFF X:$2000 X:$1FFF Y:$2000 Y:$1FFF P:$0000 X:$0000 Y:$0000 Figure 16. DSP Memory MAP It is possible to reallocate on-chip RAM at any time, however doing so is dangerous and should be done carefully. In particular, the DSP P space memory that is allocated from the PYMEM memory bank will move within the P address space if the allocation of PXRAM memory is changed. 5.3. On-Chip ROM When the chip comes out of reset, the OMR MODE A bit is set to one, see 4.1. “Operating Mode Register” on page 27. This bit, when set to one, enables the OnChip ROM to be read instead of whatever PXRAM or PYRAM is assigned to the first 16KW of the P address space, i.e. P:$0000 through P:$3FFF. For the default PXRAM/PYRAM allocation described above, the cross hatched region of Figure 17 shows the 16KW of PXRAM space that are overlaid by ROM. Whenever a P space access is made in the range P:$0000 through P:$3FFF, AND OMR_MODE_A =1 AND a read cycle is performed, then ROM data is presented to the DSP P-bus. If mode A is not set then reads in this range access the allocated PXRAM data. Whenever a P-bus write cycle is performed within this address range it is always directed 5-35xx-D1-1.08-061705 33 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip to PXRAM. Thus at power on time, Instructions and P-space read data are read from the On-Chip ROM while P-space write data is written to the PXRAM. OMR_MODE_A =0 & READ & HW_RAM_ROM_CFG_ROMIE =1 DSP P space DSP Y space DSP X Space P:$FFFF Y:$FFFF X:$FFFF peripherals X:$F000 16 kwords from PROM P:$C000 P:$BFFF not populated not populated P:$A000 P:$9FFF 24 kwords from PYMEM 64 kwords total P:$8000 P:$7FFF P:$6000 P:$5FFF P:$4000 P:$3FFF 24 kwords from PXMEM P:$3FFF X:$6000 X:$5FFF Y:$6000 Y:$5FFF X:$4000 X:$3FFF Y:$4000 Y:$3FFF 24 kwords from PXMEM 24 kwords from PYMEM P:$2000 P:$1FFF 16KW ROM X:$2000 X:$1FFF Y:$2000 Y:$1FFF P:$0000 P:$0000 X:$0000 Y:$0000 OMR_MODE_A =0 | WRITE OMR_MODE_A =1 & READ Figure 17. DSP Memory MAP with On-Chip ROM The boot strap code, which begins execution in the on-chip ROM takes advantage of these mode settings as follows: The boot code reads the new program code in from the NAND Flash, or other source. It copies the data, as described in the boot mode section below, to the appropriate memory locations. If a block is copied to Pspace in the range P:$0000 through P:$3FFF then it is written to PXRAM as if the ROM were not there. When the boot load is complete, the DSP software must turn off the ROM and begin execution of the loaded code. All code loaded by the ROM Boot begins execution at location P:$0000 after the ROM is turned off. The ROM boot loader calls a routine to copy the program and branch to P:$0000, as follow: jsr (R5) ; call the boot copy program bclr #0,HW_OMR ; turn off the ROM jmp $0 ; begin execution at the first location in RAM 34 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Recall that the DSP is pipelined and that the reset of the OMR bit happens when the bclr instruction reaches the execute stage. By that time, the jmp $0 has already been fetched into the pipeline and will fetch a RAM location instead of a ROM location for its next instruction. 5.4. On-Chip Memory Configuration Register 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 PXRAMCT PROMIE 1 7 PYRAMCT 1 8 PROMCT 1 9 RAMRM 2 0 RAMAWT 2 1 ROM_CLK_EN 2 2 PXRAM_CLK_EN 2 3 PYRAM_CLK_EN HW_RAM_ROM_CFG X:$FFED Table 16. HW_RAM_ROM_CFG BITS LABEL RW RESET DEFINITION 23:22 RSRVD R 0 Reserved – Must be written with 0. 21 PYRAM_CLK_EN RW 1 PYRAM Clock Enable – This bit enables or disables the clock to the PYRAM array. This clock must be turned on for normal operation. 0 Disable clock for the PYRAM array 1 Enable clock for the PYRAM array 20 PXRAM_CLK_EN RW 1 PXRAM Clock Enable – This bit enables or disables the clock to the PXRAM array. This clock must be turned on for normal operation. 0 Disable clock for the PXRAM array 1 Enable clock for the PXRAM array 19 ROM_CLK_EN RW 1 PROM Clock Enable – This bit enables or disables the clock to the on-chip ROM. This clock should be turned off to save power if the ROM is not being used. It must be turned on for the correct operation of the on-chip ROM. 0 Disable clock for the on-chip ROM 1 Enable clock for the on-chip ROM 18 PROMIE RW 1 PROM Image Enable – After reset, the on-chip ROM is located at the address range P:$0000-$3FFF. Once the bootloader in the ROM clears the MODEA bit in the Operating Mode Register (HW_OMR), this address range reverts to onchip RAM. This mode bit enables the contents of the ROM to be viewed at the address range P:$C000-$FFFF, irrespective of the state of the MODEA bit of the Operating Mode Register. Since this address range can also be used by onchip RAM, it is necessary to be able to disable the ROM in this address range. 0 Disable P:$C000-$FFFF image for on-chip ROM 1 Enable P:$C000-$FFFF image for on-chip ROM NOTE: This bit does not affect ROM accesses in the lower region of P: space between P:$0000 and P:3FFF which is controlled solely by HW_OMR_MA. 17 RSRVD R 0 Reserved – Must be written with 0. 16 RAMAWT RW 0 RAM AWT Mode – This register is used to select the asynchronous write through (AWT) mode for the on-chip RAM. This is a test mode that should not be used in normal operation. 0 Disable AWT mode 1 Enable AWT mode Table 17. On-Chip Memory Configuration Register Description 5-35xx-D1-1.08-061705 35 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 15:12 RAMRM 11:8 PROMCT 7:4 PYRAMCT 3:0 PXRAMCT RW RESET DEFINITION RW 0000 RAM Read Margin – This register is used to optimize the read performance of all of the on-chip RAM. The optimum value of this register will be determined by SigmaTel, and should not be modified. RW 1000 PROM clock tune – This register is used to optimize the placement of the clock to the on-chip ROM. The optimum value of this register will be determined by SigmaTel, and should not be modified. RW 1000 PYRAM Clock Tune – This register is used to optimize the placement of the clock to the PYRAM block. The optimum value of this register will be determined by SigmaTel, and should not be modified. RW 1000 PXRAM Clock Tune – This register is used to optimize the placement of the clock to the PXRAM block. The optimum value of this register will be determined by SigmaTel, and should not be modified. Table 17. On-Chip Memory Configuration Register Description (Continued) 5.5. PXRAM0 Repair Register HW_PXRAM0_RPR BITS 23:0 LABEL REPAIR RW RW X:$F5A3 RESET $000000 DEFINITION Repair register, each bit controls a 2:1 mux on the input and output of the PXRAM0 array. If the bit is set to one, then the corresponding bit in the array is substituted by the next higher significant bit in the array. When set to zero, there is a 1:1 correspondence between the control bit position and the array bit position. This register controls the data bus for the 16K Word SRAM bank covering X:$8000 through X:$BFFF. Table 18. PXRAM0 Repair Register Description 5.6. PXRAM1 Repair Register HW_PXRAM1_RPR BITS 23:0 LABEL REPAIR RW RW X:$F5A4 RESET $000000 DEFINITION Repair register, each bit controls a 2:1 mux on the input and output of the PXRAM1 array. If the bit is set to one, then the corresponding bit in the array is substituted by the next higher significant bit in the array. When set to zero, there is a 1:1 correspondence between the control bit position and the array bit position. This register controls the data bus for the 16K Word SRAM bank covering X:$4000 through X:$7FFF. Table 19. PXRAM1 Repair Register Description 5.7. PXRAM2 Repair Register HW_PXRAM2_RPR BITS 23:0 LABEL REPAIR RW RW RESET $000000 X:$F5A5 DEFINITION Repair register, each bit controls a 2:1 mux on the input and output of the PXRAM2 array. If the bit is set to one, then the corresponding bit in the array is substituted by the next higher significant bit in the array. When set to zero, there is a 1:1 correspondence between the control bit position and the array bit position. This register controls the data bus for the 16K Word SRAM bank covering X:$0000 through X:$3FFF. Table 20. PXRAM2 Repair Register Description 36 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 5.8. PYRAM0 Repair Register HW_PYRAM0_RPR BITS 23:0 LABEL REPAIR RW RW X:$F5A6 RESET $000000 DEFINITION Repair register, each bit controls a 2:1 mux on the input and output of the PYRAM0 array. If the bit is set to one, then the corresponding bit in the array is substituted by the next higher significant bit in the array. When set to zero, there is a 1:1 correspondence between the control bit position and the array bit position. This register controls the data bus for the 16K Word SRAM bank covering Y:$8000 through Y:$BFFF. Table 21. PYRAM0 Repair Register Description 5.9. PYRAM1 Repair Register HW_PYRAM1_RPR BITS 23:0 LABEL REPAIR RW RW X:$F5A7 RESET $000000 DEFINITION Repair register, each bit controls a 2:1 mux on the input and output of the PYRAM1 array. If the bit is set to one, then the corresponding bit in the array is substituted by the next higher significant bit in the array. When set to zero, there is a 1:1 correspondence between the control bit position and the array bit position. This register controls the data bus for the 16K Word SRAM bank covering Y:$4000 through Y:$7FFF. Table 22. PYRAM1 Repair Register Description 5.10. PYRAM2 Repair Register HW_PYRAM2_RPR BITS 23:0 LABEL REPAIR RW RW RESET $000000 X:$F5A8 DEFINITION Repair register, each bit controls a 2:1 mux on the input and output of the PYRAM0 array. If the bit is set to one, then the corresponding bit in the array is substituted by the next higher significant bit in the array. When set to zero, there is a 1:1 correspondence between the control bit position and the array bit position. This register controls the data bus for the 16K Word SRAM bank covering Y:$0000 through Y:$3FFF. Table 23. PYRAM2 Repair Register Description 5-35xx-D1-1.08-061705 37 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 6. CHIP WIDE PROGRAMMABLE CONTROL REGISTERS 6.1. Revision Register The Revision Register reports the Device ID and revision to the software. In addition, it shows the strap state of the DCDCMODE[2:0] bits. This register is read only. The organization of the Revision Register is shown below. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 RMN 2 2 RMJ 2 3 X:$FA02 DCDCMODE HW_REVR Table 24. HW_REVR BITS LABEL RW RESET 23:8 RMJ R $3500 7:5 DCDCMODE R 4:0 RMN R depends on DCDC_mod pin strapping depends on silicon revision DEFINITION Revision Major ID – This is the device part number in binary coded decimal: STMP35xx $3500 DCDCMODE[2:0] pin state, see 30. “DC-DC CONVERTER” on page 339. Revision Minor ID – Device revision number $00 TA1 revision Table 25. Revision Register Description 38 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 6.2. Reset Control Register The organization of the Reset Control Register is shown below. 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 STKLVL 1 6 SRST 1 7 IRQA SOVFLEN 1 8 IRQB IRQB2NMI 1 9 NMI 2 0 SUNFLLVL 2 1 SUNFLEN 2 2 SOVFLLVL 2 3 SUNFL X:$FA01 SOVFL HW_RCR Table 26. HW_RCR BITS LABEL RW RESET 23 SOVFL R 0 22 SUNFL R 0 21 IRQB2NMI RW 0 20 SOVFLEN RW 0 19:16 SOVFLLVL RW 1111 15 SUNFLEN RW 0 14:11 SUNFLLVL RW 0000 10 NMI R 1 DEFINITION Stack Overflow Status Bit – This bit indicates that the current stack depth is equal to or greater than the value of the SOVFLLVL Stack Overflow Interrupt Level field. This is set or cleared independently of the SOVFLEN Stack Overflow Interrupt Enable field. In other words, once set this bit can only be cleared by fixing the stack overflow event by removing words from the stack. Stack Underflow Status Bit – This bit indicates that the current stack depth is equal to or less than the value of the SUNFLLVL Stack Underflow Interrupt Level field. This is set or cleared independently of the SUNFLEN Stack Underflow Interrupt Enable field. In other words, once set this bit can only be cleared by fixing the stack underflow event by adding words to the stack. Redirect battery+VddD+VddIO Brownout Interrupt to NMI 0 battery+VddD+VddIO brownout interrupt on IRQB only 1 battery+VddD+VddIO brownout interrupt on IRQB & NMI (see brownout Figure 132 for details) Stack Overflow Interrupt Enable 0 Stack overflow interrupt disabled 1 Stack overflow interrupt enabled Stack Overflow Interrupt Level Stack Underflow Interrupt enable 0 Stack underflow interrupt disabled 1 Stack underflow interrupt enabled Stack Underflow Interrupt Level NMI Interrupt – An NMI interrupt will be generated by a stack over-/underflow event. If the IRQB2NMI control bit above is set, an NMI interrupt will also be generated when a brownout event is detected. This bit will be cleared by hardware when a DSP hardware stack over- or underflow is detected. A falling edge on this bit causes an NMI interrupt in the DSP. 0 Stack over-/underflow (or brownout if the IRQB2NMI bit is set) detected 1 No Stack over-/underflow (or brownout if the IRQB2NMI bit is set) detected Table 27. Reset Control Register Description 5-35xx-D1-1.08-061705 39 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 9 IRQB R 1 8 IRQA R 1 7:4 SRST RW 0000 3:0 STKLVL R 0000 DEFINITION IRQB Interrupt – An IRQB interrupt will be generated when a brownout event is detected. This bit will be cleared by hardware to indicate that a brownout event has been detected. 0 Brownout detected 1 No brownout detected IRQA Interrupt – An IRQA interrupt will be generated when a headphone short is detected. This bit will be cleared by hardware to indicate that a headphone short event has been detected. 0 Headphone short detected 1 No headphone short detected Software Reset – Writing 1101 will cause a full chip hardware reset, writing any other value will have no effect. NOTE: This soft reset generates a “digital wide” reset condition. As a result, it will return the DCDC converter digital registers to their default states. This will result in an immediate change in the DCDC conversion loop. Software should use the normal DCDC voltage change algorithm to restore the DCDC state to its default state before issuing this soft reset. Failure to properly change the DCDC state can lead to unstable DCDC converter operation. Stack Level – The current position of the DSP hardware stack. Table 27. Reset Control Register Description (Continued) Note that when the IRQB2NMI bit is set, the ISR that services the NMI will need to do a few special things. When this bit is set, if both interrupts happen at the same time, only one NMI will be received. Also, if one interrupt occurs while the other is being serviced, a new NMI interrupt will not be triggered. The NMI routine will need to check each possible NMI event and take appropriate action to clear the interrupt event, and then recheck that all NMI interrupt sources are clear before returning. If the NMI ISR returns with a NMI interrupt event still pending, that event (and all subsequent NMI interrupts) will be lost. Finally, the NMI ISR needs to be able to deal with the case where no interrupt event is pending when the ISR checks it, since the latency of the NMI interrupt is several cycles long, and the stack over-/underflow could have been cleared by the time that the NMI runs. In fact, this is guaranteed to happen in the case of the stack underflow interrupt, as the very fact of calling the NMI will push items onto the stack. 6.3. Hardware Profiling Support Two clock counters are implemented to allow accurate code profiling and cycle counting. The HW_DCLKCNTL & HW_DCLKCNTU registers together form a 48 bit counter that will increment once per clock cycle. There is no hardware support for reading and writing these registers atomically. It is possible to read the lower register before it wraps around, and then read the upper register after it has been wrapped around, and get an erroneous value. Various software techniques can be used to avoid this problem. The HW_DCLKCNTL & HW_DCLKCNTU registers will increment every clock cycle, including cycles that the DSP doesn’t see because they are stolen for DMA accesses or because of an access conflict in the on-chip RAMs. The HW_CYCSTLCNT register counts these cycles, and if you want to calculate the number of cycles actually seen by the DSP during a period of time, you must subtract the number of stolen clock cycles by referring to this register. 40 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 6.3.1. DCLK Count Lower Register HW_DCLKCNTL 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 HW_DCLKCNTL 2 3 X:$FFEA Table 28. HW_DCLKCNTL BITS 23:0 LABEL RW RESET HW_DCLKCNTL RW 0 DEFINITION DCLK Counter Lower – This counter will increment once per DSP clock cycle. Table 29. DCLK Count Lower Register Description 6.3.2. DCLK Count Upper Register HW_DCLKCNTU 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 HW_DCLKCNTU 2 3 X:$FFEB Table 30. HW_DCLKCNTU BITS 23:0 LABEL RW RESET HW_DCLKCNTU RW 0 DEFINITION DCLK Counter Upper – This counter will increment every time that the HW_DCLKCNTL counter overflows. Table 31. DCLK Count Upper Register Description 5-35xx-D1-1.08-061705 41 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 6.3.3. Cycle Steal Count Register HW_CYCSTLCNT 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 HW_CYCSTLCNT 2 3 X:$FFEC Table 32. HW_CYCSTLCNT BITS 23:0 LABEL RW RESET HW_CYCSTLCNT RW 0 DEFINITION Cycle Steal Counter – This counter will increment every time a cycle is stolen from the DSP for DMA or because of an access conflict in the RAMs Table 33. Cycle Steal Count Register Description 6.4. Clock Control Register C rysta l O sc 24 .0 M H z C rysta l ÷2 0 PW DN P LL E N φ P D IV D D IV _ MSB: D D IV SYSTEM PLL φ P LL C LK D IV S E L 1 U S B 2 .0 P LL P L LP W D V C O P o st D ivider P L LC K D IV C T L 2 P LLP W D C P 3 DCLK CKSRC P LL_S O U R C E _ S E L 3 R T C & A larm (D igital C lock) D A C D IV C lo ck to D A C D A C D ivide r ACKEN X T LE N A D C D IV C lo ck to A D C A D C D ivide r PW M R e al T im e C lock 1 U S B P H Y A nalog P LL C ontro l R egister (H W _U S B P H Y P L L ) U S B P H Y A nalog R X C ontrol R eg ister (H W _U S B P H Y R X ) 3 U S B P H Y A nalog P ow er C ontrol R e gister (H W _U S B P H Y P W D ) 2 Figure 18. Clock Control Register (HW_CCR) The Clock Control Register configures the system clock sources, including the Analog clock and PLL. It is also used to shut down system power by turning off the DCDC converter. Note that none of the bits in this register have any effect unless the CLKRST bit (bit [0]) is set to one. 42 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The digital clock can be set to nearly any value between 12 kHz and 77 MHz using the PLL and post divider. The various clock multiplexors shown in Figure 18 are fully synchronous “glitch-free” switches. In order to successfully change a clock multiplexor “switch setting”, the clock inputs to each leg must be operating. In particular to throw the switch controlled by HW_CCR_PLL_SOURCE_SEL, both the system PLL and the USB 2.0 PLL must be operating. In addition, dividers like HW_CCR_DDIV are glitch free upon change. This implies that it takes several clocks to transition to new divider settings. This requires certain rules for changing various controls in the HW_CCR register. 1. HW_CCR_DDIV must not be changed in the same clock change window as either HW_CCR_CKSRC or HW_CCR_PLL_SOURCE_SEL. The clock change window is satisfied with four DSP NOPS. 2. If DDIV is going to a larger value, then change it first followed by CKSRC. If DDIV is going to a smaller value, then change it after CKSRC, again observing clock change window. 3. Changing HW_CCR_PLL_SOURCE_SEL and DDIV have similar constraints. 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CKRST 1 2 LTC 1 3 PLLEN 1 4 XTLEN 1 5 PLL_SOURCE_SEL 1 6 ADCDIV 1 7 CKSRC 1 8 DDIV 1 9 PDIV 2 0 PWDN 2 1 ACKEN 2 2 DACDIV DDIV_MSB 2 3 X:$FA00 LOCK HW_CCR Table 34. HW_CCR BITS LABEL 23 DDIV_MSB 22:20 DACDIV RW RESET DEFINITION RW 0 Extension to digital clock divider, used in conjunction with DDIV field below. RW 000 Analog clock divider for DAC – Changes the clock rate used by the DAC. This is used to scale down the frequencies used in the DAC when using audio sample rates less than the maximum. These are calculated for a 24.0MHz crystal (not 24.576MHz). 000 xtal/4 = 6.0 MHz = 128*Fssc = 128*46.875 kHz 001 xtal/6 = 4.0 MHz = 128*Fssc = 128*31.25 kHz 010 xtal/8 = 3.0 MHz = 128*Fssc = 128*23.4375 kHz 011 xtal/12 = 2.0 MHz = 128*Fssc = 128*15.625 kHz 100 xtal/8 = 3.0 MHz = 128*Fssc = 128*23.4375 kHz 101 xtal/12 = 2.0 MHz = 128*Fssc = 128*15.625 kHz 110 xtal/16 = 1.5 MHz = 128*Fssc = 128*11.71875 kHz 111 xtal/24 = 1.0 MHz = 128*Fssc = 128*7.8125 kHz Table 35. Clock Control Register Description 5-35xx-D1-1.08-061705 43 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 19 LOCK 18 ACKEN 17 PWDN 16:12 PDIV 11:9 DDIV 8 CKSRC RW RESET DEFINITION R PLL lock status 0 PLL not locked 1 PLL locked RW 0 Analog clock enable – The crystal clock runs digital circuitry for the ADC, DAC, PWM and for the TIMERs when in crystal clock mode.This bit enables clocks to the analog circuitry. This bit must be set before using the RTC, Alarm, PWM, Timers, DAC or ADC. In addition to this mode bit, the ADC or DAC power down bits in the Mixer Power Down Control Status Register must not be asserted for the ADC or DAC to operate. 0 Analog clocks disabled 1 Analog clocks enabled RW 0 System power-down 0 No action 1 Power down system Note: bit 9 of HW_MIXTBR must be set low to enable this functionality Note: When the once port is attached, the DCDC converter does not accept a power down signal from the HW_CCR_PWDN bit. Note: HW_CCR_PLLEN must be cleared before using the HW_CCR_PWDN bit functionality. RW 00000 PLL frequency divider – Assuming a 24.0 MHz crystal, the PLL can be programmed in 1.2 MHz steps, from a minimum frequency of 39.6 MHz to a maximum frequency of 76.8 MHz. The reset value is 00000, which yields a PLL frequency of 39.6 MHz. When used in combination with DDIV post-divider, it is possible to reach frequencies below 39.6 MHz with smaller granularities. PLL output frequency = (33 + PDIV) * (Crystal frequency/20) RW 000 Digital clock post-divider – The post divider one cycle to update. It is recommended to change the clock source to be the crystal (via CKSRC) before altering DDIV to limit the maximum frequency the divider will output during the update time. To achieve the minimum power mode, select the crystal as the source for the digital clocks (CKSRC=0), turn off the PLL (PLLEN=0), and set this divider to the maximum divide rate. The digital clock will then be set to 24.0 MHz/2048 = 11.7 kHz. if DDIV_MSB = 0: 000 divide by 1 011 divide by 8 110 divide by 64 001 divide by 2 100 divide by 16 111 divide by 128 010 divide by 4 101 divide by 32 if DDIV_MSB = 1: 000 divide by 256 001 divide by 512 010 divide by 1024 011 divide by 2048 1XX undefined RW 0 Clock source – This bit may only be set from 0 to 1 if the PLL is enabled and locked. The new clock source may not be available to the system until two periods of the crystal clock have elapsed. 0 Digital clock generated from crystal 1 Digital clock generated from PLL Table 35. Clock Control Register Description (Continued) 44 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 7:5 ADCDIV 4 PLL_SOURCE_SEL 3 XTLEN 2 PLLEN 1 LTC 0 CKRST RW RESET DEFINITION RW 000 Analog clock divider for ADC – Changes the clock rate used by the ADC. This is used to scale down the frequencies used in the ADC when using audio sample rates less than the maximum.These are calculated for a 24.0MHz crystal (not 24.576MHz). 000 xtal/4 = 6.0 MHz = 128*Fssc = 128*46.875 kHz 001 xtal/6 = 4.0 MHz = 128*Fssc = 128*31.25 kHz 010 xtal/8 = 3.0 MHz = 128*Fssc = 128*23.4375 kHz 011 xtal/12 = 2.0 MHz = 128*Fssc = 128*15.625 kHz 100 xtal/8 = 3.0 MHz = 128*Fssc = 128*23.4375 kHz 101 xtal/12 = 2.0 MHz = 128*Fssc = 128*15.625 kHz 110 xtal/16 = 1.5 MHz = 128*Fssc = 128*11.71875 kHz 111 xtal/24 = 1.0 MHz = 128*Fssc = 128*7.8125 kHz RW 0 PLL_SOURCE_SEL – This bit selects either the low speed system PLL or the USB 2 PHY high speed PLL as the source for DCLK, see Figure 33. “USB 2.0 PHY PLL Block Diagram” on page 89. 0 select system PLL 1 select USB 2.0 PHY high speed PLL RW 0 Crystal clock enable – The crystal clock runs digital circuitry for the ADC, DAC, PWM and for the TIMERs when in crystal clock mode. This clock should be disabled when all of these blocks are not in use. The crystal clock must enabled for these blocks to function correctly. 0 Crystal clock disabled 1 Crystal clock enabled RW 0 PLL enable 0 PLL disabled 1 PLL enabled RW 0 Lock timer reset – Resets the PLL lock timer. Must be written as 0, then 1 to start the PLL lock timer. RW 0 Clock reset – Must be written with 1 for all writes to this register. If set to 0, the entire clock logic block stays in its reset state. Table 35. Clock Control Register Description (Continued) 5-35xx-D1-1.08-061705 45 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 6.5. Misc./Spare Register The Misc./Spare Register is used for system updates. It is used to detect the state of the analog PSWITCH pin and to configure the I2S pins onto alternate pins. It also indicates when the ONCE port is plugged in and activated. The organization of the Misc./Spare Register is shown below. 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 I2S_SELECT 2 1 SPARE_BITS 2 2 PSWITCH 2 3 X:$FA16 ONCE_MODE HW_SPARER Table 36. HW_SPARER BITS LABEL RW RESET 23:10 RSRVD 10 ONCE_MODE R R 0 0 9 PSWITCH R 8 7:2 RSRVD SPARE_BITS R 0 RW 0 1 0 RSRVD I2S_SELECT R 0 RW 0 DEFINITION Reserved – Must be written with 0. When the once port debugger is attached to the chip several special operating modes are forced, e.g. power down is suppressed, etc. This bit is set to one to indicate when the once port debugger is attached and enabled. It is set to zero for normal operation. PSWITCH status – This bit indicates the state of the PSWITCH pin. Normally, this pin will be a 1 when the power switch is pressed. 0 PSWITCH pin is 0 1 PSWITCH pin is 1 Reserved – Must be written with 0. Spare bits – These bits can be written or read normally but have no function in this revision of the chip. Reserved – Must be written with 0. I2S select – This bit is used to switch the I2S functions onto alternate pins. One setting allows a subset of the I2S functionality to be supported in a 100-pin package, the other setting allows the full I2S functionality but is only supported in a 144-pin package. (see 22.1. “I2S External Pins” on page 258.) 0 Subset of I2S functionality for the 100-pin package 1 Full I2S functionality for the 144-pin package Table 37. Misc./Spare Register Description 46 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 6.6. PIN Control Register Special controls related to the optional low voltage pin mode. Also see 31. “PIN DESCRIPTION” on page 377. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PIN1_8V 2 2 ESD_TEST 2 3 X:$FA30 KEEPER_EN HW_PIN_CTRL Table 38. HW_PIN_CTRL BITS LABEL RW R W RESET 23:13 12 RSRVD ESD_TEST 0 0 11:9 8 RSRVD R 000 KEEPER_EN RW 0 7:0 PIN1_8V DEFINITION Reserved – Must be written with 0. ESD Test Mode – Set to one to deactivate the ESD clamp devices. There is an internal delay of 400 to 600 nSeconds after this bit is set to one until the clamp is deactivated. WARNING: this bit is WRITE ONLY on the STMP35xx TA1-TA4. It will always read as a zero. Reserved – Must be written with 0. Keeper Enable – Each of the 1.8V capable pads have an optional small keeper that can be enabled when this bit is set to one. WARNING: do NOT set KEEPER_EN to one until AFTER PAD1_8V bits have been set to one. 1.8Volt Pin Control – These bits select between 3.3V and 1.8V PAD I/O functions for the 8 pad groups, see Table 40. “Pin Control to PIn Mapping” on page 47. Set these pins to one BEFORE setting KEEPER_EN to one. RW $00 Table 39. Pin Control Register Description 100 TQFP PIN # 144 FPBGA PIN # GPIO PIN # 1 2 3 16 17 18 20 21 23 24 25 26 M2 L2 K4 K7 J7 K8 L9 L10 M11 K10 M12 L11 14 13 12 36 37 38 40 41 53 45 56 54 PIN NAME SPI_MOSI SPI_MISO SPI_SCK CF/RAM A4, SM CE3n CF/RAM A5, SM CE2n CF/RAM A6, SM CE0n CF/RAM A8, SM CLE CF/RAM A9, SM ALE CF OEn, SM REn CF CE0n, SM CE1n CF WAITn, SM READY CF WEn, SM WEn 1.8 V ENABLE BIT HW_PIN_CTRL_PIN1_8V[7] HW_PIN_CTRL_PIN1_8V[7] HW_PIN_CTRL_PIN1_8V[7] HW_PIN_CTRL_PIN1_8V[0] HW_PIN_CTRL_PIN1_8V[1] HW_PIN_CTRL_PIN1_8V[2] HW_PIN_CTRL_PIN1_8V[4] HW_PIN_CTRL_PIN1_8V[4] HW_PIN_CTRL_PIN1_8V[4] HW_PIN_CTRL_PIN1_8V[3] HW_PIN_CTRL_PIN1_8V[4] HW_PIN_CTRL_PIN1_8V[4] Table 40. Pin Control to PIn Mapping 5-35xx-D1-1.08-061705 47 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100 TQFP PIN # 144 FPBGA PIN # GPIO PIN # 27 30 31 32 33 34 35 36 37 - K12 J10 J12 H9 J11 H12 H11 H10 G11 G10 G12 G9 F9 F11 F12 F10 E9 55 24 79 25 78 26 77 27 76 28 75 29 74 30 73 31 72 PIN NAME SM WPn CF/RAM/SM D0 CF/RAM/SM D15 CF/RAM/SM D1 CF/RAM/SM D14 CF/RAM/SM D2 CF/RAM/SM D13 CF/RAM/SM D3 CF/RAM/SM D12 CF/RAM/SM D4 CF/RAM/SM D11 CF/RAM/SM D5 CF/RAM/SM D10 CF/RAM/SM D6 CF/RAM/SM D9 CF/RAM/SM D7 CF/RAM/SM D8 1.8 V ENABLE BIT HW_PIN_CTRL_PIN1_8V[4] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] HW_PIN_CTRL_PIN1_8V[5] HW_PIN_CTRL_PIN1_8V[6] Table 40. Pin Control to PIn Mapping (Continued) 48 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 7. INTERRUPT SUBSYSTEM 7.1. Interrupt Priority Register The DSP core has seven main interrupt lines, IVL[6:0]. This register is used to enable each line and set its priority. Some peripherals connect directly to this interrupt bus, but most interrupt sources go through the Interrupt collector, which multiplexes many interrupt sources onto 4 interrupts of these 7 interrupt lines. If an interrupt with a higher priority level occurs while the DSP core is servicing another interrupt, the higher priority interrupt will preempt the lower priority interrupt. If the new interrupt is of the same or lower priority level, then it will not preempt the interrupt that is currently being serviced. HW_IPR BITS LABEL RW RESET 23:22 L6P 21:20 L5P 19:18 L4P 17:16 L3P 15:14 L2P 13:12 L1P 11:10 L0P RW 0 RW 0 RW 0 RW 0 RW 0 RW 0 RW 0 9:6 5 RSRVD R 0 IRQBT RW 0 4:3 IRQBP RW 0 2 IRQAT RW 0 1:0 IRQAP RW 0 X:$FFFF DEFINITION Interrupt line 6 priority level 00 Disabled 01 Priority Level 0 (lowest priority level) Interrupt line 5 priority level – SPI 00 Disabled 01 Priority Level 0 (lowest priority level) Interrupt line 4 priority level – I2C 00 Disabled 01 Priority Level 0 (lowest priority level) Interrupt line 3 priority level 00 Disabled 01 Priority Level 0 (lowest priority level) Interrupt line 2 priority level 00 Disabled 01 Priority Level 0 (lowest priority level) Interrupt line 1 priority level 00 Disabled 01 Priority Level 0 (lowest priority level) Interrupt line 0 priority level – I2S 00 Disabled 01 Priority Level 0 (lowest priority level) Reserved – Must be written with 0. IRQB Type 0 Level 1 Negative Edge IRQB Priority Level 00 Disable 01 Enable IRQA Type 0 Level 1 Negative Edge IRQA Priority Level 00 Disable 01 Enable 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Priority Level 1 11 Priority Level 2 (highest priority level) 10 Enable 11 Enable 10 Enable 11 Enable Table 41. Interrupt Priority Register Description 5-35xx-D1-1.08-061705 49 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 7.2. Interrupt Collector The DSP core provides seven interrupt lines, IVL[6:0], for individual interrupt requests. The peripheral interrupt count exceeds the seven interrupt request lines, so the Interrupt Collector (ICOLL) muxes all sources to the seven lines. Three of the seven interrupt lines are reserved for certain peripherals, so the ICOLL steers 36 interrupt sources to four of the interrupt request lines: IVL[6,3,2,1]. Within an individual interrupt request line, the ICOLL offers an 8-level priority for each of it is interrupt sources, although preemption of a lower priority interrupt by a higher priority is not supported. If preemption is required, the interrupt source that needs to preempt must be routed to a higher priority interrupt request line. 0 7 INT Sources 0 HW_ICLPRIOR0R (Priority Register) HW_ICLSTEER0R (Steering Register) 8 0 . . . 23 HW_ICLENABLE0R (Enable Register) 15 IVL1 IVL4 IVL5 23 HW_ICLENABLE1R (Enable Register) IVL0 12 HW_ICLSTEER1R (Steering Register) 16 24 . . . 30 IVL3 IVL6 11 HW_ICLPRIOR1R (Priority Register) IVL2 HW_ICLPRIOR2R (Priority Register) 30 HW_ICLPRIOR3R (Priority Register) DSP IRQA IRQB NMI 23 24 24 HW_IPR (Enable and Priority Control Register) HW_ICLSTEER2R (Steering Register) 30 Figure 19. Interrupt Collector Diagram Interrupt response time is dependent on the interrupt priority. The minimum interrupt time is as follows: • 2 clock cycles for interrupt to appear at DSP. • 2 clock cycles to respond and get vector to execute interrupt service routine. 50 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 7.2.1. Interrupt Sources Table 42 shows all the interrupt sources. INTERRUPT SOURCE SRC DAC Refill 0 DAC Underflow 1 ADC Refill 2 ADC Overflow 3 GP Flash Done 4 EMC-CompactFlash Card IRQ 5 EMC-SmartMedia/NAND Timeout 6 EMC-SmartMedia/NAND Interface 7 Invalid Programming EMC-CompactFlash No Card 8 EMC-CompactFlash Status Change 9 GPIO0 10 GPIO1 11 GPIO2 12 Timer0 13 Timer1 14 Timer2 15 Timer3 16 GPIO3 17 SDRAM 18 CDI 19 Vdd5V Connected 20 USB Controller 21 USB Wakeup 22 Vdd5V Disconnected 23 ESPI 24 FILCO 25 LRADC1 26 RTC Alarm 27 LRADC2 28 Flash ECC 29 30 CDSync Interrupt 31 CDSync Exception 32 CD-RS Interrupt 33 I2C Rx Ready I2C Rx Overflow I2C Tx Empty I2C Tx Underflow SPI Complete I2S Rx Overflow I2S Tx Underflow I2S Rx Ready I2S Tx Empty IRQA - Headphone Short IRQB - Battery LRADC NMI - IVL BIT # 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 VECTOR $003C $003E $0042 $0044 $006E $0070 $0072 $0074 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 6,3,2,1 4 4 4 4 5 0 0 0 0 IRQA IRQB NMI $0076 $0078 $0024 $0020 $0022 $0026 $0028 $002A $0048 $004A $004C $007E $0050 $0052 $0054 $0056 $0058 $005A $005C $005E $0060 $0062 $0066 $0068 $006A $0030 $0032 $0034 $0036 $000E $0016 $0012 $0014 $0010 $0008 $000A $001E DESCRIPTION DAC request to fill DAC FIFO buffer DAC FIFO buffer underflow ADC request to empty ADC FIFO buffer ADC FIFO buffer overflow Flash transaction complete CompactFlash card interrupt SmartMedia/NAND card WAIT timeout Bad programming of SmartMedia/NAND interface CompactFlash card remove/absence CompactFlash card status change GPIO module 0 interrupt GPIO module 1 interrupt GPIO module 2 interrupt Timer module 0 interrupt Timer module 1 interrupt Timer module 2 interrupt Timer module 3 interrupt GPIO module 3 interrupt SDRAM interrupt CDI interface interrupt Vdd5V Connected(Vdd5V > VddIO+0.5V) USB Controller Interrupt USB Wakeup (Resume from Suspend) Vdd5V pin disconnected from 5V ESPI (enhanced SPI) Filter Coprocessor Low Resolution ADC Real Time Clock Alarm Low Resolution ADC #2 Hardware ECC accelerator for ECC reserved CD synchronizer/formatter interrupt CD synchronizer/formatter exception Reed-Solomon error corrector interrupt I2C receiver data ready I2C receiver data overflow I2C transmitter data empty I2C transmitter data underflow SPI transfer complete I2S receiver data overflow I2S transmitter data underflow I2S receiver data ready I2S transmitter data empty Headphone Short Battery Brown Out Non-Maskable Interrupt Table 42. Interrupt Sources 5-35xx-D1-1.08-061705 51 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 7.2.2. Interrupt Vectors Table 43 below shows the interrupt vectors used for each possible interrupt source. ADDRESS P:$0000 P:$0002 P:$0004 P:$0006 P:$0008 P:$000A P:$000C P:$000E P:$0010 P:$0012 P:$0014 P:$0016 P:$0018 P:$001A P:$001C P:$001E P:$0020 P:$0022 P:$0024 P:$0026 P:$0028 P:$002A P:$002C P:$002E P:$0030 P:$0032 P:$0034 P:$0036 P:$0038 P:$003A P:$003C P:$003E 7.2.3. INTERRUPT SOURCE Hardware Reset Stack Error Unused (formerly Trace) SWI IRQA/Headphone Short Detect IRQB/Battery Brownout Detect SPI Complete I2S Tx Data Empty I2S Tx Underflow I2S Rx Data Full I2S Rx Overflow NMI GPIO 1 GPIO 2 GPIO 0 Timer 0 Timer 1 Timer 2 I2C Rx Data Ready I2C Rx Overflow ADDRESS P:$0040 P:$0042 P:$0044 P:$0046 P:$0048 P:$004A P:$004C P:$004E P:$0050 P:$0052 P:$0054 P:$0056 P:$0058 P:$005A P:$005C P:$005E P:$0060 P:$0062 P:$0064 P:$0066 P:$0068 P:$006A P:$006C P:$006E P:$0070 P:$0072 INTERRUPT SOURCE ADC Full ADC Overflow Timer 3 GPIO3 SDRAM Vdd5V Pin Connected to 5V USB Controller USB Wakeup (Resume) Vdd5V Pin Disconnected ESPI (enhanced SPI) FILCO (filter coprocessor) Low Resolution ADC 1 RTC Alarm Low Resolution ADC 2 Flash ECC Accelerator CDSync Interrupt CDSync Exception CD-RS Interrupt GPFlash Done EMC-CompactFlash Card IRQ EMC-SmartMedia/NAND Timeout I2C Tx Data Empty P:$0074 EMC-SmartMedia/NAND Invalid Programming I2C Tx Underflow P:$0076 EMC-CompactFlash No Card Invalid DSP instruction P:$0078 EMC-CompactFlash Status Change P:$007A DAC Empty P:$007C DAC Underflow P:$007E CDI Interrupt Table 43. Interrupt Vector Map Interrupt Collector Registers 7.2.3.1. ICOLL Enable 0 Register The enable registers provide bits to enable/disable interrupts for each source. Each enable corresponds to a specific interrupt source listed in Table 42. A 1 enables the relevant interrupt, a 0 disables the relevant interrupt. 52 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_ICLENABLE0R BITS LABEL 23:0 SEN23:SEN0 X:$F300 RW RESET RW 0 DEFINITION 0 Disables this interrupt 1 Enables this interrupt Table 44. ICOLL Enable 0 Register Description 7.2.3.2. ICOLL Enable 1 Register The enable registers provide bits to enable/disable interrupts for each source. Each enable corresponds to a specific interrupt source listed in Table 42. A 1 enables the relevant interrupt, a 0 disables the relevant interrupt. HW_ICLENABLE1R BITS LABEL 23:10 RSRVD 9:0 SEN33:SEN24 X:$F301 RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 0 Disables this interrupt 1 Enables this interrupt Table 45. ICOLL Enable 1 Register Description 7.2.3.3. ICOLL Status 0 Register The status registers reflect the interrupt state of each source. Each enable corresponds to a specific interrupt source listed in Table 42. A 1 indicates an active interrupt, a 0 indicates an inactive interrupt. This register is read only. HW_ICLSTATUS0R BITS LABEL 23:0 SST23:SST0 X:$F302 RW RESET R DEFINITION 0 Interrupt is not active 1 Interrupt is active Table 46. ICOLL Status 0 Register Description 7.2.3.4. ICOLL Status 1 Register The status registers reflect the interrupt state of each source. Each enable corresponds to a specific interrupt source listed in Table 42. A 1 indicates an active interrupt, a 0 indicates an inactive interrupt. This register is read only. HW_ICLSTATUS1R BITS LABEL 23:10 RSRVD 9:0 SST33:SST24 X:$F303 RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 0 Interrupt is not active 1 Interrupt is active Table 47. ICOLL Status 1 Register Description 7.2.3.5. ICOLL Priority 0 Register The priority registers set the priority for each source. Each enable corresponds to a specific interrupt source listed in Table 42. Lowest priority is 111 and highest is 000. 5-35xx-D1-1.08-061705 53 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_ICLPRIOR0R BITS 23:21 20:18 17:15 14:12 11:9 8:6 5:3 2:0 LABEL S7P S6P S5P S4P S3P S2P S1P S0P RW RW RW RW RW RW RW RW RW RESET Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown X:$F304 DEFINITION Priority level for interrupt source 0 000 Highest priority level . . . 111 Lowest priority level Table 48. ICOLL Priority 0 Register Description 7.2.3.6. ICOLL Priority 1 Register The priority registers set the priority for each source. Each enable corresponds to a specific interrupt source listed in Table 42. Lowest priority is 111 and highest is 000. HW_ICLPRIOR1R BITS 23:21 20:18 17:15 14:12 11:9 8:6 5:3 2:0 LABEL S15P S14P S13P S12P S11P S10P S9P S8P RW RW RW RW RW RW RW RW RW X:$F305 RESET DEFINITION Unknown Priority level for interrupt source 1 000 Highest priority level Unknown . Unknown . Unknown . Unknown 111 Lowest priority level Unknown Unknown Unknown Table 49. ICOLL Priority 1 Register Description 7.2.3.7. ICOLL Priority 2 Register The priority registers set the priority for each source. Each enable corresponds to a specific interrupt source listed in Table 42. Lowest priority is 111 and highest is 000. HW_ICLPRIOR2R BITS 23:21 20:18 17:15 14:12 11:9 8:6 5:3 2:0 LABEL S23P S22P S21P S20P S19P S18P S17P S16P RW RW RW RW RW RW RW RW RW X:$F306 RESET DEFINITION Unknown Priority level for interrupt source 2 000 Highest priority level Unknown . Unknown . Unknown . Unknown 111 Lowest priority level Unknown Unknown Unknown Table 50. ICOLL Priority 2 Register Description 7.2.3.8. ICOLL Priority 3 Register The priority registers set the priority for each source. Each enable corresponds to a specific interrupt source listed in Table 42. Lowest priority is 111 and highest is 000. 54 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_ICLPRIOR3R BITS 23:21 20:18 17:15 14:12 11:9 8:6 5:3 2:0 LABEL S31P S30P S29P S28P S27P S26P S25P S24P RW RW RW RW RW RW RW RW RW X:$F307 RESET DEFINITION Unknown Priority level for interrupt source 3 000 Highest priority level Unknown . Unknown . Unknown . Unknown 111 Lowest priority level Unknown Unknown Unknown Table 51. ICOLL Priority 3 Register Description 7.2.3.9. ICOLL Priority 4 Register The priority registers set the priority for each source. Each enable corresponds to a specific interrupt source listed in Table 42. Lowest priority is 111 and highest is 000. HW_ICLPRIOR4R BITS 23:6 5:3 2:0 LABEL RSRVD S33P S32P RW R RW RW X:$F311 RESET DEFINITION 0 Reserved – Must be written with 0. Unknown Priority level for interrupt source 4 000 Highest priority level Unknown . . . 111 Lowest priority level Table 52. ICOLL Priority 4 Register Description 7.2.3.10. ICOLL Steering 0 Register The steering registers are used to steer a given source to a given IVL as follows: SETTING 00 01 10 11 IVL 1 2 3 6 Each steering value corresponds to a specific interrupt source listed in Table 42. HW_ICLSTEER0R BITS 23:22 21:20 19:18 17:16 15:14 13:12 11:10 9:8 7:6 5:4 LABEL S11S S10S S9S S8S S7S S6S S5S S4S S3S S2S 5-35xx-D1-1.08-061705 RW RW RW RW RW RW RW RW RW RW RW RESET X:$F308 DEFINITION Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Table 53. ICOLL Steering 0 Register Description 55 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS 3:2 1:0 56 LABEL S1S S0S RW RW RW RESET DEFINITION Unknown Unknown Table 53. ICOLL Steering 0 Register Description 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 7.2.3.11. ICOLL Steering 1 Register The steering registers are used to steer a given source to a given IVL as follows: SETTING 00 01 10 11 IVL 1 2 3 6 Each steering value corresponds to a specific interrupt source listed in Table 42. HW_ICLSTEER1R BITS 23:22 21:20 19:18 17:16 15:14 13:12 11:10 9:8 7:6 5:4 3:2 1:0 LABEL S23S S22S S21S S20S S19S S18S S17S S16S S15S S14S S13S S12S RW X:$F309 RESET RW RW RW RW RW RW RW RW RW RW RW RW DEFINITION Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Table 54. ICOLL Steering 1 Register Description 7.2.3.12. ICOLL Steering 2 Register The steering registers are used to steer a given source to a given IVL as follows: SETTING 00 01 10 11 IVL 1 2 3 6 Each steering value corresponds to a specific interrupt source listed in Table 42. HW_ICLSTEER2R BITS 23:20 19:18 17:16 15:14 13:12 11:10 9:8 7:6 5:4 3:2 1:0 LABEL RSRVD S33S S32S S31S S30S S29S S28S S27S S26S S25S S24S RW R RW RW RW RW RW RW RW RW RW RW RESET X:$F30A DEFINITION Reserved – Must be written with 0. Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Table 55. ICOLL Steering 2 Register Description 5-35xx-D1-1.08-061705 57 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 7.2.4. Interrupt Collector Debug Registers 7.2.4.1. ICOLL Debug Force 0 Register The debug force value registers will force an interrupt for a given source. The enable registers enable the forcing mechanism. Each enable corresponds to a specific interrupt source listed in Table 42. HW_ICLFORCE0R BITS 23:0 LABEL S23FV:S0FV X:$F30B RW RESET DEFINITION RW 0 Table 56. ICOLL Force Value 0 Register Description 7.2.4.2. ICOLL Debug Force 1 Register The debug force value registers will force an interrupt for a given source. The enable registers enable the forcing mechanism. Each enable corresponds to a specific interrupt source listed in Table 42. HW_ICLFORCE1R BITS LABEL 23:10 RSRVD 9:0 S33FV:S24FV X:$F30C RW RESET R 0 DEFINITION Reserved – Must be written with 0. Table 57. ICOLL Force Value 1 Register Description 7.2.4.3. ICOLL Force Enable 0 Register To generate a forced interrupt you have to write a 1 into the relevant position in both the force and force enable registers. Writing a 1 to the force enable register will block any interrupts from the normal interrupt source for the relevant bit. Each force bit corresponds to a specific interrupt source listed in Table 42. HW_ICLFENABLE0R X:$F30D BITS LABEL 23:0 S23FE:S0FE RW RESET DEFINITION RW 0 Table 58. ICOLL Force Enable 0 Register Description 7.2.4.4. ICOLL Force Enable 1 Register To generate a forced interrupt you have to write a 1 into the relevant position in both the force and force enable registers. Writing a 1 to the force enable register will block any interrupts from the normal interrupt source for the relevant bit. Each force bit corresponds to a specific interrupt source listed in Table 42. HW_ICLFENABLE1R X:$F30E BITS LABEL 23:10 RSRVD 9:0 S33FE:S24FE RW RESET R 0 RW 0 DEFINITION Reserved – Must be written with 0. Table 59. ICOLL Force Enable 1 Registers Description 7.2.5. 58 ICOLL Observation Registers (HW_ICLOBSV0R/1R) 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The observation registers make visible the state of the interrupt request vector that the ICOLL is sending out on IVL[6:0] and the winning (prioritized) interrupt vectors for destinations A, B, C, and D. A IVL1 B IVL2 C IVL3 D IVL6 Each observation bit corresponds to a specific interrupt source listed in Table 42. This register is read only and is primarily for debug purposes. 7.2.5.1. Interrupt Collector Observe 0 Register HW_ICLOBSVZ0R BITS 23:21 20:14 13:7 6:0 LABEL RSRVD IVB IVA REQ X:$F30F RW RESET DEFINITION R 0 Reserved – Must be written with 0. R R R Table 60. ICOLL Observe 0 Register Description 7.2.5.2. Interrupt Collector Observe 1 Register HW_ICLOBSVZ1R BITS 23:14 13:7 6:0 LABEL RSRVD IVD IVC X:$F310 RW RESET DEFINITION R 0 Reserved – Must be written with 0. R R Table 61. ICOLL Observe 1 Register Description 5-35xx-D1-1.08-061705 59 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 8. USB CONTROLLER The STMP35xx includes a Universal Serial Bus (USB) version 2.0 device controller. The USB controller is used to download digital music data or program code into external memory and to upload voice recordings from memory to the PC. Program updates can also be loaded into the flash memory area using the USB interface. The reader should refer to the USB Implementer’s Forum website www.usb.org for detailed specifications and information on the USB protocol, timing and electrical characteristics. The USB 2.0 controller comprises both a programmed I/O (PIO) interface and a DMA interface, see Figure 9. “USB Interface Block Diagram” on page 13. Both of these interfaces, as implemented in the ARC High Speed USB core, are designed to meet a VSI Alliance Basic Virtual Component Interface BVCI, see www.vsi.org. The BVCI used by the USB controller has a target (PIO) and initiator (DMA) data bus of 32-bits. In addition, the initiator address bus is also 32 bits wide. In integrating this core into the STMP35xx, the 24 bit nature of the DSP is mapped onto the 32 bit nature of the BVCI by a SigmaTel developed USB interface block. In addition, the STMP35xx only makes use of a 16 bit subset of the BVCI initiator’s 32 bit address. For the following discussion, the USB interface block is broken into a target mapping function and an initiator mapping function. A third portion of the USB interface block maps the ARC core USB controller to the UTMI PHY interface. see Figure 20. “USB 2.0 Device Controller” on page 61. 8.1. USB Programmed I/O (PIO) Target Interface The programmed I/O interface uses three 24 bit registers, HW_USBARCACCESS, HW_USBARCDATALOW, and HW_USBARCDATAHIGH. A hardware state machine then translates PIO requests from the DSP into target bus cycles for the ARC USB 2.0 Device Controller core. see Figure 21. “USB 2.0 PIO Target Interface” on page 62. To write data to a register in the USB device controller, software first loads the DATAHIGH and DATALOW registers with the upper and lower 16 bit parts of the 32 bit data to be written. It then loads the ARC access register, HW_USBARCACCESS, fields with the address, the Read/Write bit and sets the Kick bit to one. Setting the Kick bit starts the state machine which transfers the 32 bit data into a USB controller PIO register. All transfers to and from the USB controller are exactly 32 bits wide. The Kick bit will remain set until the state machine finishes the target write cycle. While the Kick bit is high, software must not modify any field in the HW_USBARCACCESS, HW_USBARCDATALOW, or HW_USBARCDATAHIGH registers. Fortunately the maximum number of cycles the Kick bit can be high is 18 DCLKs. As long as the software path length is guaranteed to be at least this long until the next PIO operation is initiated, software does not have to poll the kick bit. In order to read a PIO register from the USB controller, software loads the ARC access register, HW_USBARCACCESS, fields with the address, the Read/Write bit 60 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip and sets the Kick bit to one. The Read/Write bit is set to one for reads and zero for writes. DMA-BUS X-BUS USB System Programmable Registers USB DMA Interface USB PIO Interface VSIA BVCI Target Bus Programmed I/O Target Inteface SigmaTel USB Interface Block VSIA BVCI Initiator Bus DMA Engine ! ! ! Bus Interface Endpoint Priming state machine Data Movement Dual Port RAM Controller ! ! ! Bus Interface Control & Status Interrupts ! ! Virtual FIFO channels DMA Contexts On-Chip Dual Port Synchronous SRAM Protocol Engine ARC USB 2.0 Device Controller ! ! ! Interval Timers Error Handling CRC Handling ! ! Asynchronous clock domain crossing Transceiver Interface Logic Port Controller USB UTMI Interface PHY Regs. 480MHz PLL USB Xcvr Integrated USB 2.0 PHY External USB 2.0 UTMI PHY Figure 20. USB 2.0 Device Controller The target bus and the intitiator busses emanating from the USB Device Controller do not share any resources in common. Thus no arbitration or other startup delay is encounter in performing PIO operations to/from the USB Device Controller. 5-35xx-D1-1.08-061705 61 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_USBARCACCESS:KICK State Machine t_data_r[31:0] 31 0 HW_USBARCDATAHIGH: DATA 15 0 HW_USBARCDATALOW: DATA 15 31 0 15 HW_USBARCACCESS: ADD 0 t_cmd,t_cmdack, etc. HW_USBARCACCESS:RWB 0 t_data_w[31:0] t_address[8:0] ARC USB 2.0 Device Controller Figure 21. USB 2.0 PIO Target Interface C versions of generalized PIO read and PIO write routines are given below, see Figure 22. “USB 2.0 PIO Target Interface Sample Code” on page 62. These routines are provided to facilitate understanding. Actual software uses tightly coded assembly routines to manipulate the USB Controller’s programmable registers. //This function unpacks the 48-bit double word into two 16-bit words and writes // it back to the ARC register void _reentrant write_usb_reg(USHORT usRegAdd, DWORD dwData) { HW_USBARCDATALOW.B.DATA = (WORD)(dwData & (WORD)(HW_USBARCDATALOW_DATA_SETMASK)); HW_USBARCDATAHIGH.B.DATA = (WORD)((dwData >> 16) & (DWORD)(HW_USBARCDATAHIGH_DATA_SETMASK)); usRegAdd &= (USHORT)HW_USBARCACCESS_ADD_SETMASK; HW_USBARCACCESS.B.ADD = usRegAdd; HW_USBARCACCESS.B.RWB = 0; HW_USBARCACCESS.B.KICK = 1; } // This function reads the ARC 32-bit register and packs it in a 48-bit double word // Use this function in combination with write_usb_reg() to read-modify-write // an ARC register void _reentrant read_usb_reg(USHORT usRegAdd, DWORD * dwData) { usRegAdd &= HW_USBARCACCESS_ADD_SETMASK; HW_USBARCACCESS.B.ADD = usRegAdd; HW_USBARCACCESS.B.RWB = 1; HW_USBARCACCESS.B.KICK = 1; while(HW_USBARCACCESS.B.KICK); // wait for state machine *dwData = (DWORD)(HW_USBARCDATALOW.B.DATA & HW_USBARCDATALOW_DATA_SETMASK); *dwData |= (DWORD)(HW_USBARCDATAHIGH.B.DATA << 16); } Figure 22. USB 2.0 PIO Target Interface Sample Code 62 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 8.2. USB DMA Interface Most software interactions with the USB device controller occur with data or control structures that have been DMA transferred to the on-chip RAM. time order of payload bytes on USB wire 23 0 P L H D 0 O K G C N J F B M I E A i_wdata[31:0] from USB Controller N K H E B P M J G D A ARC & DSP Addresses Align 31 O L I F C N K H E B P O ML J I GF DC A - ARC & DSP Addresses do NOT Align A B C D E F GH I J K L MN OP Contents of on-chip RAM Figure 23. USB 2.0 32 bit to 24 bit Packing Example The USB DMA interface has to handle data transfers to and from a 32 bit interface to the ARC USB Device Controller. It has to map these data transfers to and from a 24-bit on-chip RAM DMA bus. Figure 23, above shows one example of a stream of bytes coming across the USB cable, being DMAed across the 32-bit BVCI initiator bus and from there being packed into the 24 bit wide on-chip memory. The DMA interface data flow that performs this packing is shown below, see Figure 24. “USB 2.0 DMA Data Flow” on page 64. From these figures one sees that all DMA address pointers are referenced to the 32 bit data bus world of the ARC USB DMA engine. When the data lands in on-chip RAM or is taken from on-chip RAM, then software has to access it with full knowledge of how the USB DMA transferred the bytes. The figure above shows that depending on where the starting address for the data is assigned in the ARC address space determines how the data aligns with 24 bit DSP RAM. In particular, one divides the ARC byte address by three to obtain a 24 bit word address in the DSP RAM. The remainder of this division determines the alignment in the DSP RAM. A remainder of zero implies a perfectly aligned transfer point. A remainder of one yields the alignment shown in the lower right hand portion of Figure 23. Software must be constantly aware of this alignment and must deal with it as it arises. 5-35xx-D1-1.08-061705 63 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip For example, the eight end points implemented in the USB Device controller require 16 Queue Head structures to be accessed by the DMA from on-chip RAM. Each queue head is 64 bytes long or 21 remainder 1 DSP words in length. The remainder of one causes the alignment each successive queue head to shift by one byte. ram_dma_db[23:0] usb2_ram_dma_db[23:0] DMA Bus Interface to/from on-chip RAM 0 [RPTR] [RPTR+1] [RPTR+2] [RPTR+3] [WPTR] [WPTR+1] [WPTR+2] 32-bit USB to RAM [WPTR+3] 24-bit RAM to USB USB to 24-bit RAM RAM to 32-bit USB 1 byte wide multi-tap FIFO 15 7 0 Interface to BVCI Initiator in USB Controller i_rdata{31:0] i_rdata{31:0] USB Controller Initiator & DMA Figure 24. USB 2.0 DMA Data Flow The general strategy used by software is have pack and unpack routines to access data structures shared with the USB controller, i.e. queue heads, transfer descriptors. In addition, software uses pack and unpack routines to access the packet headers, etc. 8.3. ERRATA: USB DMA WRITE BUFFER ERROR AFFECTING ADJACENT SRAM There is an error in the DMA write command processing for certain combinations of USB Device Core 32-bit address pointers and 24-bit SRAM buffer targets. When the Device core generates a 32-bit address with byte enables set to modify less than 3 bytes on the first transfer to a buffer, then a NULL read modify write (RMW) cycle is generated for the 24-bit SRAM word immediately ahead of the targeted USB DMA Buffer. This NULL RMW cycle reads the word, does no modification and then writes it back out. This normally have no effect on the SRAM location accessed by the read modify write cycle, UNLESS, another DMA device such as the hardware ECC tries to perform a DMA write to the same word. If the ECC write occurs between the time the USB interface has done the read portion of the RMW cycle and the time it does the write back portion of the RMW then the data written by the ECC will be over writ- 64 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip ten by the USB with the location’s original contents. This will leave the SRAM in state it was in BEFORE the hardware ECC wrote its result value. To circumvent this problem in software, do not place SRAM write buffers for other DMA devices such that they end immediately before any USB buffer or descriptor or queue head. This will keep the other DMA from intermittently having its last word written being destroyed by this USB interface error. 8.4. USB UTMI Interface The SigmaTel developed UTMI interface logic allows multiplexing between the integrated USB 2.0 High Speed PHY and an off-chip UTMI compliant USB 2.0 PHY, see Figure 28. “USB 2.0 PHY at the System on Chip Level” on page 79. The HW_USBCSR_UTMI_EXT bit selects the external PHY when set to one. 8.5. USB Device Controller Core The USB Device Controller is an instantiation of the ARC VUSBHS-DEV High Speed USB Device Controller Core. This proprietary core, the intellectual property it represents and the copyrighted documentation for the core are the property of ARC International. For detailed information about the device controller core, the reader is referred to the appropriate ARC documentation. The core synthesized as a device controller only and implements eight endpoints, including endpoint zero. 8.6. USB Controller Flowcharts 5-35xx-D1-1.08-061705 65 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip turn on the USB Plugged In detector. Check_USB_Plugged_In() Set HW_USBCSR_PLUGGEDIN_EN=1 Check for 5V input NO HW_USBCSR_ VDD5VSENSE == 1 Wait for light pull-ups to settle NO 1 mSecond Expired ? YES NO HW_USBCSR_ PLUGGED_IN == 1 YES Turn off plugged in detector Set HW_USBCSR_PLUGGEDIN_EN=0 Set HW_USBCSR_USBEN=1 Turn on USB Device Controller Clocks Set HW_USBCSR_ARCCONNECT=1 RETURN NOT_CONNECTED RETURN CONNECTED ARC Core has a Virtual Plugged In Indicator Plugged In Detector Remains ON Figure 25. USB 2.0 Check_USB_Plugged_In Flowchart 66 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Called with or without 5V InitVDD5VAtStartup turn on the USB Plugged In detector. Set HW_USBCSR_PLUGGEDIN_EN=1 Preferred Automatic Power down on 5V disconnect Turn off current limit HW_USB_PWR_CHARGE_DISABLE_ILIMIT=1 Enable (optional) 5V Disconnect IRQ $0056 This mode is typically not used. Check for 5V input from USB or Wall YES HW_USBCSR_ VDD5VSENSE == 1 Enable 5V Connect IRQ $0050 NO HW_USBCSR_VDD5VDISCXIE=1 HW_USBCSR_VDD5VCXIE=1 HW_USB_PWR_CHARGE_PWDN_ON_IOBRNOUT =1 HW_PERSIST_CFG_AUTO_RESTART =1 HW_PERSIST_CFG_UPDATE = 0 STOP HW_PERSIST_CFG_UPDATE = 1 call USB Connect Check USB Cable Connected? Enable Auto Restart Update Persistant Bits: note UPDATE bit normally left high, taken low on same cycle as data setup to persistent regs, raised high to update in registers. NO Start Regular App Inform App that wall current is available for charging. YES Start USB Connect Sequence STOP STOP Figure 26. USB 2.0 InitializeVDD5VSense Flowchart 5-35xx-D1-1.08-061705 67 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip $0050 $0056 VDD5V_CONN_ISR Enable 5V Disconnect IRQ $0056 HW_USBCSR_VDD5VDISCXIE=1 HW_USBCSR_VDD5VCXIE=0 Disable Conn IRQ Opitonal Automatic Power down on 5V disconnect VDD5V_DISCONN_ISR If HW_USB_PWR_CHARGE_PWDN_ON_IOBRNOUT is set then this interrupt routine will never be entered, since the DCDC converter will power down before it can run. If not set, DSP can execute for a few hundred nanoseconds before the core fails due to low voltage. HW_CCR_PWDN = 1 Enable Auto Restart HW_USB_PWR_CHARGE_PWDN_ON_IOBRNOUT =1 HW_PERSIST_CFG_AUTO_RESTART =1 HW_PERSIST_CFG_UPDATE = 0 HW_PERSIST_CFG_UPDATE = 1 STOP Force Power Down Update Persistant Bits: note UPDATE bit normally left high, taken low on same cycle as data setup to persistent regs, raised high to update in registers. call USB Connect Check USB Cable Connected? NO YES Stop Current App & Start USB Connect Sequence STOP Inform App that wall current is available for charging. STOP Figure 27. USB 2.0 VDD5V Conn, Disconn ISR Flowchart 8.7. USB Interface Registers The following subsections describe the programmable registers of the SigmaTel USB Interface Block. 8.7.1. USB Control Status Register This register handles the overall configuration and control of the USB interface. It provides specific interrupt status and interrupt enables for interrupt events arising from the USB Controller as well as interrupts arising from monitoring the 5V sense comparator and the cable plugged in monitoring circuit in the integrated PHY. 68 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 USBEN 1 0 WAKEUPIE 1 1 WAKEUPIRQ 1 2 VDD5VCXIE 1 3 VDD5VCXIRQ 1 4 VDD5VDISCXIRQ 1 5 CLKOFF 1 6 VDD5VDISCXIE 1 7 SUSP 1 8 SUSPF 1 9 UTMI_EXT 2 0 ARCCONNECT HOSTDISCONNECT 2 1 PLUGGED_IN 2 2 X:$F200 PLUGGEDIN_EN 2 3 VDD5VSENSE HW_USBCSR Table 62. HW_USBCSR BITS LABEL 23 VDD5VSENSE 22 HOSTDISCONNECT 21:14 RSRVD 13 PLUGGED_IN 12 PLUGGEDIN_EN 11 ARC_CONNECT 10 UTMI_EXT 9 SUSPF 8 SUSP RW RESET DEFINITION R 0 USB 5Volt Vdd5V Sense State – This read only bit returns a one when the VDD5V pin is more than one Vt above the VDDIO voltage. This situation indicates that a 5V power source either from a wall transformer or from the USB VBUS has been connected to the STMP35xx. It returns a zero otherwise, refer to the power charger, see Section 30.5.11. on page 367 R 0 Host Disconnect – This disconnect signal reports the state of the Hub Disconnect detector in the integrated PHY. R 0 Reserved – Must be written with 0. R 0 Cable Plugged In – This read only bit returns a zero when the integrated PHY’s plugged-in detector reports that both DP and DN are high. This can only occur when the cable is unplugged and the 200KΩ integrated pull-ups are enabled onto DP and DN. This detector is powered down at reset. Power control is located in bit HW_USBCSR_PLUGGEDIN_EN and must be turned on for at least 1mSecond prior to relying on the state of this bit. RW 0 USB plugged-in detector Enable – Set this bit to one to power up the plugged in detector and to switch in the two 200KΩ pull-up resistors. RW 0 ARC Connect – The ARC core has an input that is designed to be hooked up to a VBUS Sensor to tell it when to go to powered state. In this implementation, the DSP detects this situation using the VDD5VSENSE bit above. The DSP therefore virtualizes this indication by controlling the ARCCONNECT bit. When the DSP sets this bit to one, the ARC core moves its internal state machine from the “detached” state to the “powered” state. RW 0 UTMI EXTERNAL Interface Enable – When set to one, this bit causes the external USB 2.0 PHY to be selected instead of the integrated PHY. Set this bit to zero for normal operation. RW 0 Force USB Suspend mode – This bit controls a mux which determines the drive source for the utmi_suspendm signal. When set to one, the mux select the SUSP bit below as the source for driving utmi_suspendm. Set this bit to zero for normal operation. RW 0 USB Suspend – This bit provides direct programmable control of the utmi_suspendm signal when enabled by the SUSPF bit above. Table 63. USB Control Status Register Description 5-35xx-D1-1.08-061705 69 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 7 CLKOFF 6 VDD5VDISCXIE 5 VDD5VDISCXIRQ 4 VDD5VCXIE 3 VDD5VCXIRQ 2 WAKEUPIE 1 WAKEUPIRQ 0 USBEN RW RESET DEFINITION RW 1 USB clock off – When set to one, clocks to the USB module will be set to zero. Set CLKOFF to zero for normal operation of the USB interface. RW 0 USB 5V Vdd5V pin Disconnect Interrupt Enable– When this bit is set to one, then VDD5VDISCXIRQ below will cause an interrupt at vector $0056 when it is set to one. RW 0 USB 5V Vdd5V Disconnect Interrupt – This bit is set to one whenever a falling edge is detected on the VDD5SENSE comparator. This bit can be reset by writing a one directly to it. RW 0 USB 5V Vdd5V Connect Interrupt Enable– When this bit is set to one, then VDD5VCXIRQ below will cause an interrupt at vector $0050 when it is set to one. RW 0 USB 5V Vdd5V Connect Interrupt – This bit is set to one whenever a rising edge is detected on the VDD5SENSE comparator. This bit can be reset by writing a one directly to it. RW 0 Wakeup Interrupt Enable – When this bit is set to one, then WAKEUPIRQ below will cause an interrupt at vector $0054 when it is set to one. RW 0 Wakeup Interrupt – This bit is set to one whenever the synchronized versions of utmi_linestate indicate a K-state on the line, i.e linestate[0] == DP ==0 & linestate[1] == DN ==1. This bit can be reset by writing a one directly to it. Activity on. NOTE: this interrupt bit monitors the raw state of the USB signals and will continue to be set as transitions occur on the USB. Software should reset WAKEUPIE and then clear WAKEUPIRQ as soon as this interrupt is detected. RW 0 USB Enable Bit – The USBEN bit enables the USB port. This bit must be set before any other USB registers are written to. Table 63. USB Control Status Register Description (Continued) 8.7.2. USB DMA Offset Register All ARC core DMA addresses have an offset added to them. This addition takes place after the 32-bit ARC byte address is divided by three to obtain a DSP 24-bit word address. USB DMA buffers can be placed in any one of the three processor memory spaces (P,X,Y). 2 2 2 1 2 0 1 9 1 8 1 7 1 6 MEM 2 3 X:$F201 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADD HW_USBDMAOFF Table 64. HW_USBDMAOFF 70 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:18 RSRVD 17:16 MEM 15:0 RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 MEM – Selects the memory space (P,X or Y) to which or from which all DMA transfers occur. RW 0 USB DMA ADDRESS OFFSET – All DMA addresses generated in the USB controller have this 16 bit offset added to them, after the division by 3. ADD Table 65. USB DMA Offset Address Register Description 8.7.3. USB ARC ACCESS This register is used in programmed I/O (PIO) access to ARC core internal registers, see 8.1. “USB Programmed I/O (PIO) Target Interface” on page 60. HW_USBARCACCESS X:$F202 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADD 2 2 RWB KICK 2 3 Table 66. HW_USBARCACCESS BITS 23 KICK LABEL 22:17 RSRVD 16 RWB 15:9 8:0 RSRVD ADD RW RESET DEFINITION RW 0 KICK – This bit is set to a one to initiate either a read or write programmed I/O cycle to the ARC Core BVCI bus target. This bit will be automatically reset when the transfer is complete. Software must not read or modify the data or address registers until the KICK bit has been reset by hardware. R 0 Reserved – Must be written with 0. RW 0 Read Write Bit – This bit determines whether a programmed I/O cycle to the ARC core will be a read or a write transfer. When this bit is a one, an ARC core PIO register will be read into the data registers. When this bit is a zero, the data registers will be written to an ARC core PIO register. RWB = 1 =READ RWB = 0 =WRITE R 0 Reserved – Must be written with 0. RW 0 ARC Register Address – The ARC core target interface receives ADD[8:0] as an address for its internal programmed I/O registers. Table 67. USB ARC Access Register Description 8.7.4. USB ARC Data Low Register All programmed I/O data transfers to and from the ARC core’s internal registers are 32 bits wide. This register holds the lower order 16 data bits for such transfers, see 8.1. “USB Programmed I/O (PIO) Target Interface” on page 60. 5-35xx-D1-1.08-061705 71 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_USBARCDATALOW X:$F203 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DATA 2 3 Table 68. HW_USBARCDATALOW BITS LABEL 23:16 RSRVD 15:0 DATA RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 DATA – The lower 16 bits of a data read/write operation to an ARC internal register. Table 69. USB ARC Data Low Register Description 8.7.5. USB ARC Data High Register All programmed I/O data transfers to and from the ARC core’s internal registers are 32 bits wide. This register holds the higher order 16 data bits for such transfers, see 8.1. “USB Programmed I/O (PIO) Target Interface” on page 60. HW_USBARCDATAHIGH X:$F204 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DATA 2 3 Table 70. HW_USBARCDATAHIGH BITS LABEL 23:16 RSRVD 15:0 DATA RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 DATA – The higher 16 bits of a data read/write operation to an ARC internal register. Table 71. USB ARC Data High Register Description 72 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 8.7.6. USB UTMI Test Control Status Register HW_USBUTCSR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 UTMI_XFER_SIZE UTMI_TEST_ENABLE 2 3 X:$F205 Table 72. HW_USBUTCSR BITS LABEL 23:9 RSRVD 8 UTMI_TEST_ENABLE 7:0 UTMI_XFER_SIZE RW R RW RW RESET DEFINITION 0 Reserved – Must be written with 0. 0 UTMI TEST ENABLE – 0 UTMI TRANSFER SIZE – Load this field with the number of DMA transfers to make during UTMI loop back test mode. Table 73. USB UTMI Test Control Status Register Description 8.7.7. USB UTMI1 Register HW_USBUTMI1 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 UNUSED 2 3 X:$F206 Table 74. HW_USBUTMI1 LABEL 20:16 RSRVD 15:0 UNUSED RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 UNUSED Bit – This field is currently unused in the design. Table 75. USB UTMI1 Register Description 5-35xx-D1-1.08-061705 73 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 8.7.8. USB UTMI2 Register HW_USBUTMI2 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 UNUSED 2 3 X:$F207 Table 76. HW_USBUTMI2 BITS LABEL 20:16 RSRVD 15:0 UNUSED RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0 UNUSED Bit – This field is currently unused in the design. Table 77. USB UTMI2 Register Description 74 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 8.7.9. USB UTMI Sense Register This register provides hardware debug and design verification access to various signals on the internal UTMI interface. 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 UTMI_DATABUS16_8 1 1 UTMI_DATAOE 1 2 UTMI_RXERROR 1 3 UTMI_RXVALID 1 4 UTMI_RXACTIVE 1 5 UTMI_RXVALIDH 1 6 UTMI_TXVALID 1 7 UTMI_TXREADY 1 8 UTMI_TXVALIDH 1 9 UTMI_OPMODE 2 0 UTMI_LINESTATE 2 1 UTMI_TERM_SELECT 2 2 UTMI_RESET 2 3 UTMI_XCVR_SELECT HW_USBUTMISENSE X:$F208 Table 78. HW_USBUTMISENSE BITS 20:16 15 14 13 12:11 10:9 8 7 6 5 4 3 2 1 0 LABEL RW RESET DEFINITION R Reserved – Must be written with 0. R UTMI Reset Signal – T R UTMI High Speed Transceiver Select – T R UTMI High Speed Terminator Select – T R UTMI Linestate[1:0] – T R UTMI Opmode[1:0] – T R UTMI Transmit Valid High – T R UTMI Transmit Valid Low – T R UTMI Transmit Ready – T R UTMI Receive Valid High – T R UTMI Receive Valid low – T R UTMI Receive Active – R UTMI Receive Error – R UTMI Data Output Enable – R UTMI Data Bus 16 or 8 – The USBEN bit enables the USB port. This bit must be set before any other USB registers are written to. RSRVD UTMI_RESET UTMI_XCVR_SELECT UTMI_TERM_SELECT UTMI_LINESTATE UTMI_OPMODE UTMI_TXVALIDH UTMI_TXVALID UTMI_TXREADY UTMI_RXVALIDH UTMI_RXVALID UTMI_RXACTIVE UTMI_RXERROR UTMI_DATAOE UTMI_DATABUS16_8 Table 79. USB UTMI Sense Register Description 8.7.10. USB Read Test Register HW_USBREADTEST X:$F209 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TESTVALUE Table 80. HW_USBREADTEST 5-35xx-D1-1.08-061705 75 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 15:0 LABEL TESTVALUE RW RESET R $ABCDEF DEFINITION Read Only Test Value – This field always reads back the same constant value $ABCDEF Table 81. USB UTMI1 Register Description 8.7.11. USB State Machine Sense Register This register provides hardware debug and design verification access to various state machines in the ARC core interface. HW_USBSTATEMACHINES X:$F20A 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CMD_STATE 2 1 IRESP_STATE 2 2 DMA_STATE 2 3 Table 82. HW_USBSTATEMACHINES BITS 20:18 17:12 11 10:8 7:5 4:0 LABEL RSRVD DMA_STATE RSRVD IRESP_STATE RSRVD CMD_STATE RW RESET DEFINITION R Reserved – Must be written with 0. R DMA State Machine State R Reserved – Must be written with 0. R Interrupt Response State Machine State R Reserved – Must be written with 0. R PIO Command State Machine State Table 83. USB State Machine Sense Register Description 8.7.12. USB ARC Unused Signals Sense Register This register provides hardware debug and design verification access to various unused signals of the ARC core. HW_USBARCUNUSED X:$F20B 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PHILIPS_SIGS 2 2 SERIAL_SIGS 2 3 Table 84. HW_USBARCUNUSED 76 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 20:11 RSRVD 10:5 SERIAL_SIGS 4:0 PHILIPS_SIGS RW RESET DEFINITION R Reserved – Must be written with 0. R Unconnected Serial PHY Interface Signals R Unconnected Philips PHY Interface Signals Table 85. USB ARC UNUSED Signal Sense Register Description 8.7.13. USB Laser Fuse Sense Register This register provides hardware debug and design verification access to various unused signals of the ARC core. HW_USBLASERFUSE X:$F20C 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ARC_UNCONNECTED 2 2 LASER_FUSE 2 3 Table 86. HW_USBSTATEMACHINES BITS LABEL 20:11 RSRVD 21:20 LASER_FUSE RW RESET DEFINITION R Reserved – Must be written with 0. R USB Laser Fuse – When LASER_FUSE[1] is a one, then the USB controller core is limited to Full Speed operation only. When LASER_FUSE[0] is a one, then the USB controller clock is gated off and the function is not available. 19:15 RSRVD R Reserved – Must be written with 0. 14:0 ARC_UNCONNECTED R Various Unconnected Signals from ARC USB 2.0 Table 87. USB State Machine Sense Register Description 8.8. Known Chip Defects with USB Device 8.8.1. Clear Quest Entry STMP00004471 All revisions of the chip are known to have a defect in which the USB device controller incorrectly handles short packets that are multiples of 128 bytes. Simulations revealed a bug in the USB gasket for OUT transfers. The bug can corrupt the end of the data buffer. It occurs when the Host sends out a short packet that is multiple of 128 Bytes. During this scenario the USB core does writes that are voided (byte enable == all zero), which were an undefined capability and thus the 5-35xx-D1-1.08-061705 77 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip gasket did not apply a proper response. This does not affect Mass Storage applications because data transfers are 512 Bytes and SCSI commands are <16 Bytes. 78 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DOCUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9. INTEGRATED USB 2.0 PHY (HS,FS) DCLK DSP X-Bus External USB 2.0 UTMI PHY DMA (P,X,Y) USB 2.0 CONTROLLER On-Chip RAM Bus Interface The STMP35xx contains an integrated USB 2.0 PHY macro-cell capable of connecting to PC host systems at the USB Full Speed (FS) rate of 12Mbits/Second or at the USB 2.0 High Speed (HS) rate of 480Mbits/Second. The integrated PHY provides a standard UTMI interface. This allows the STMP35xx to alternatively connect to an external UTMI compliant USB 2.0 PHY chip. DSP UTMI Digital System PLL Crystal Oscillator High Speed PLL (480MHz) Digital RX Analog RX/TX DP Digital TX DN Integrated USB 2.0 PHY (UTMI macro cell) Figure 28. USB 2.0 PHY at the System on Chip Level The following subsections describe the external interfaces, internal interfaces, major blocks, and programable registers that comprise the integrated USB 2.0 PHY. 9.1. External Signals DP,DN – These pins connect directly to a USB device connector. Precision Calibration Resistor. This pin connects a 620Ω +/- 1% resistor to ground. The key on chip resistors, i.e. the 45Ω high speed termination resistor and the 1500Ω pull up resistor contain digitally controlled trimming and calibration circuits to match their impedance to the external precision resistor for USB 2.0 specification compliance. 5-35xx-D1-1.08-061705 79 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9.2. UTMI Internal Signals utmi_clk – Used to clock receive and transmit data to and from the USB controller. The internal UTMI interface is 16 bits wide resulting in a 30MHz UTMI_CLK sourced by the PHY. This clock can either be derived from a divide by sixteen off of the USB 2.0 PHY PLL or can be divided by two from DCLK. see Figure 33. “USB 2.0 PHY PLL Block Diagram” on page 89. utmi_reset – From chip wide master reset distribution. utmi_xcvr_select – Selects between the High Speed and Full Speed transceivers (0 = High Speed, 1 = Full Speed). utmi_term_select – Selects between High Speed and Full Speed terminations. (0 = High Speed Termination, 1 = Full Speed Termination). utmi_suspend – Not implemented in the internal UTMI interface. The availability of PHY control registers that are directly accessible by DSP instructions obviates the need for this signal. utmi_line_state[1:0] – These signals directly reflect the current state of the single ended receivers (DP and DN) in the PHY. DN LS[1] DP LS[0] UTMI_LINE_STATE[1:0] 0 0 00 = SE0, single ended zero 0 1 1 1 0 1 01 = ‘j’ State 10 = ‘K’ State 11 = SE1, single ended one Table 88. USB PHY line_state[1:0]l utmi_op_mode[1:0] – These input signals tell the PHY whether to encode and decode transmissions with bit stuffing and NRZI or to simply pass the data straight through. OP_MODE UTMI_OP_MODE[1:0] 00 Normal operation 01 10 11 Non-driving Disable bit stuffing and NRZI encoding Reserved Table 89. USB PHY op_ode[1:0]l utmi_tx_data[15:0] – These PHY inputs convey the transmit data from the USB controller to the PHY. utmi_tx_valid – This signal indicates when tx_data[7:0] has a valid data output byte. utmi_tx_validh – This signal indicates when tx_data[15:0] has a valid data output byte. utmi_tx_ready – The USB controller uses this signal in conjunction with the current state of tx_valid to determine when a data cycle has been accepted into the PHY serializer. When utmi_tx_rdy and utmi_tx_valid are both asserted at the rising edge of utmi_clk then a new data word should be presented by the USB controller to the PHY. 80 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip utmi_rx_data[16:0] – These signals convey the received data from the PHY to the USB controller. utmi_rx_valid – When high, this signal tells the USB controller that utmi_rx_data[7:0] contains a valid byte of data. utmi_rx_validh – When high, this signal tells utmi_rx_data[15:8] contains a valid byte of data. the USB controller that utmi_rx_active – Indicates that the USB PHY receive machine has detected SYNC and is active. utmi_rx_error – Zero indicates no error detected. One indicates that a receive error has been detected. usb_plugged_in_detect – Digital output from the receiver’s analog plugged-in detector circuit. This signal is captured within the USB controller and made available from there to the DSP. 9.3. UTMI and Digital Circuits The UTMI provides a 16 bit interface to the USB Controller. This interface is clocked at 30MHz. There are four parts to the UTMI/Digital circuits block. The UTMI block, the Digital Transmitter, the Digital Receiver and the Programmable Registers block. 9.3.1. UTMI Block This block handles the line_state bits, reset buffering, suspend distribution, transceiver speed selection, and transceiver termination selection. The PLL supplies a 60MHz signal to all of the digital logic. The UTMI block does a final divide by two to develop the 30MHz clock used in the interface. 9.3.2. Digital Transmitter Block The digital transmitter block receives the 16 bit transmit data from the USB controller, and handles the tx_valid, tx_validh and tx_ready handshake. In addition, it contains the transmit serializer which converts the 16 bit parallel words at 30MHz to a single bit stream at 480Mbit for High Speed or 12Mbit for Full Speed. It does this while implementing the bit stuffing algorithm and the NRZI encoder that are used to remove the DC component from the serial bit stream. The output of this encoder is sent to the Full Speed (FS) or High Speed (HS) drivers in the analog transceiver section’s transmitter block. 9.3.3. Digital Receiver Block The digital receiver block receives the raw serial bit stream either from the HS differential transceiver or from the FS differential transceiver. The HS input goes to a very fast DLL which uses one of eight identically spaced phases of the 480MHz clock to pick a sample point. As the phase of the USB host transmitter shifts relative to the local PLL, the receiver section’s HS DLL tracks these changes to give a reliable sample of the incoming 480Mbit/Second bit stream. Since this sample point shifts relative to the PLL phase used by the digital logic, a rate matching elastic buffer is provided to cross this clock domain boundary. Once the bit stream is in the local clock domain, an NRZI decoder and Bit Unstuffer restores the original payload data bit stream and passes it to a de-serializer and holding register. The Receive state machine handles the rx_valid, rx_validh and handshake with the USB controller. The handshake is not interlocked in that there is no rx_ready signal coming from the controller. The controller must take each 16 bit value as presented by the PHY. The 5-35xx-D1-1.08-061705 81 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Receive state machine provides an rx_active signal to the controller that indicates when it is inside a valid packet (SYNC detected, etc.). 9.3.4. Programmable Registers Block The PHY contains four 24 bit programmable registers that are read and written via the DSP’s X bus, see 9.7. “Programmable Registers” on page 93. 9.4. Analog Transceiver The analog transceiver section comprises an analog receiver and an analog transmitter, see Figure 29 below. Transmitter RPU Enable HS Current Source Enable VDDIO (3.3V) HS Drive Enable HS Data Drive FS Driver Output Enable 1500Ω FS DataDrive Assert SE0 FS Edge Mode Select test, calibration, & discrete powerdown contols DP HS Differential RCVR DN Squelch USB Cable FS Differential RCVR HS_Disconnect_Detect USB_Plugged_In_Detect Single Ended Detector SE_DP Single Ended Detector SE_DM Receiver Figure 29. USB 2.0 PHY Analog Transceiver Block Diagram 82 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9.4.1. Analog Receiver The analog receiver comprises five differential receivers and two single ended receivers, described below. 9.4.1.1. HS Differential Receiver The high speed differential receiver is both a differential analog receiver and threshold comparator. Its output is a one if the differential signal is greater than a 0V threshold. Its output is zero otherwise. Its purpose is to discriminate the +/- 400mV differential voltage resulting from the high speed drivers current flow into the dual 45Ω terminations found on each leg of the differential pair. The envelope or squelch detector, below, ensures that the differential signal has sufficient magnitude to be valid. The HS differential receiver tolerates up to 500mV of common mode offset. 9.4.1.2. Squelch Detector The squelch detector is a differential analog receiver and threshold comparator. Its output is a one if the differential magnitude is less than a nominal 100mV threshold. Its output is zero otherwise. Its purpose is to invalidate the HS differential receiver when the incoming signal is simply to low to receive reliably. 9.4.1.3. FS Differential Receiver The full speed differential receiver is both a differential analog receiver and threshold comparator. The crossover voltage falls between 1.3V and 2.0V. Its output is a one when the DP line is above the crossover point and the DN line is below the crossover point. 9.4.1.4. HS Disconnect detector This Host side function is not used in STMP35xx applications but is included to make a complete UTMI macro-cell. It is a differential analog receiver and threshold comparator. Its output is a one if the differential magnitude is greater than a nominal 575mV threshold. Its output is zero otherwise. 9.4.1.5. USB Plugged-In Detector The USB Plugged-In detector looks for both DP and DN to be high. There is a pair of large on-chip pull-up resistors (200KΩ) that hold both DP and DN high when the USB cable not attached. The USB Plugged-In detector signals a zero in this case. The host/hub interface that is upstream from the STMP35xx contains a 15KΩ pulldown resistor that easily over-rides the 200KΩ pull-up. When plugged in, at least one signal in the pair will be low which will force the Plugged-In detector’s output high. 9.4.1.6. Single Ended DP Receiver The single ended DP receiver output is high whenever the DP input is above its nominal 1.8V threshold. 9.4.1.7. Single Ended DN Receiver The single ended DN receiver output is high whenever the DN input is above its nominal 1.8V threshold. 5-35xx-D1-1.08-061705 83 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9.4.2. Analog Transmitter The analog transmitter comprises two differential drivers, one for high speed signaling and one for full speed signalling. It also contains the switchable1500Ω pull up resistor. 9.4.2.1. Switchable High Speed 45Ω Termination Resistors High speed current mode differential signalling requires good 90Ω differential termination at each end of the USB cable. This results from switching in 45Ω terminating resistors from each signal line to ground at each end of the cable. Since each signal is parallel terminated with 45Ω at each end, each driver sees a 22.5Ω load. This is much too low of a load impedance for full speed signalling levels hence the need for switchable high speed terminating resistors. Switchable trimming resistors are provided to tune the actual termination resistance of each device, see Figure 30. “USB 2.0 PHY Transmitter Block Diagram” on page 85. The HW_USBPHYTX_TXCAL45DP bit field, for example, allows one of 16 trimming resistor values to be placed in parallel with the 45Ω terminator on the DP signal. The calibration operation is described below, see 9.4.2.5. “Resistor Calibration Mode” on page 86. 9.4.2.2. Full Speed Differential Driver The full speed differential drivers are essentially “open drain” low impedance pull down devices which are switched in a differential mode for full speed signalling, i.e. either one or the other device is turned on to signal the “J” state or the “K” state. These drivers are both turned on, simultaneously, for high speed signalling. This has the effect of switching in both 45Ω terminating resistors. The tx_fs_hiz signal originates in the digital transmitter section. The hs_term signal which also controls these drivers comes from the UTMI. 9.4.2.3. High Speed Differential Driver The high speed differential driver receives a 17.78mA current from the constant current source and essentially steers it down either the DP signal or the DN signal or alternatively to ground. This current will produce approximately a 400mV drop across the 22.5Ω termination seen by the driver when it is steered onto one of the signal lines. The approximately 17.78mA current source is referenced back to the integrated voltage band gap circuit. The Iref, IBias and V to I circuits are shared with the integrated battery charger. 9.4.2.4. Switchable 1500Ω DP Pull up resistor The STMP35xx contains a switchable 1500Ω pull-up resistor on the DP signal. This resistor is switched on to tell the Host/Hub controller that a full speed capable device is on the USB cable, powered on, and ready. This resistor is switched off at power on reset so the host doesn’t recognize a USB device until DSP software enables the announcement of a full speed device. This pull-up also includes 16 switchable parallel trimming resistors, see HW_USBPHYTX_TXCAL1500. 84 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip To Battery Charger REF_RES Vbg Ibias Iref force disconn V to I HW_USBPHYTPWD: TXPWDVBG, TXPWDV2I, TXPWDIBIAS hs_term 17.78mA 620Ω +/- 1% 1500ΩPU & Calibration HW_USBPHYTX: TXCAL1500, TXENCAL1500 HW_USBPHYPWD: TXDISCON1500 Current Steering current switch current switch data_p,hs_xcvr data_n,hs_xcvr DP USB Cable DN 45Ω 45Ω HW_USBPHYTX: TXCAL45DN HW_USBPHYTX: TXENCAL45DP,DN FS DRVR Calibration Comparator HW_USBPHYTX: TXCAL45DP FS DRVR data_p,data_n, fs_hiz, hs_term HW_USBPHYTX: TXCOMPOUT HW_USBPHYTX: TXENCAL45DP, TXENCAL45DN, TXENCAL1500, TXCALIBRATE HW_USBPHYTX:TXHSXCVR HW_USBPHYTX:TXHSTERM ~utmi_hsterm hs_term ~utmi_hsxcvr hs_xcvr HW_USBPHYRX:XCVRTERMSELECTEN HW_USBPHYTX:TXFSHIZ ~phy_tx_fs_hiz fs_hiz HW_USBPHYRX:TXFSHIZEN Figure 30. USB 2.0 PHY Transmitter Block Diagram 5-35xx-D1-1.08-061705 85 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The following table summarizes the response of the PHY analog transmitter to various states of UTMI input and key transmit/receive state machine states. UTMI OPMODE 00=Normal 01=NoDrive 10=NoNRZI NoBitStuff 11= Invalid UTMI TERM UTMI XCVR T/R FUNCTION 45 Ω HIZ 0 0 X HS 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 1 0 1 0 T R R T X T R X X X X FS FS CHIRP CHIRP DISCONNECT HS HS FS CHIRP DISCONNECT HS 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 0 1 T R R T X T R X X X FS FS CHIRP CHIRP DISCONNECT HS HS FS CHIRP DISCONNECT 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1500Ω HIZ SUSPEND POR 1 Table 90. USB PHY Terminator States 9.4.2.5. Resistor Calibration Mode The analog transmitter section includes a calibration comparator that can monitor the DP or DN voltage as desired. Setting HW_USBPHYTX_ENCAL45DP selects the DP signal. The comparator output is visible in HW_USBPHYTX_TXCOMPOUT. To calibrate the 45Ω DP terminator, first set the field HW_USBPHYTX_TXCAL45DP to all ones ($F). The flowchart of Figure 31, below, shows how to search for the proper trimming resistor to calibrate the DP terminator. Essentially one first puts the chip into termination resistor calibration mode for the DP terminator. One starts with the largest value of trimming select, i.e. all ones. One has to make several precise minimum delay calculations to allow the mixed signal components to stabilize. The comparator output is sampled and then checked. If the comparator has not tripped, then one reduces the value of the trimming select field and tries again. This repeats until the trip point is reached. While this flowchart shows how to calibrate the DP terminator, calibration of the DN terminator is accomplished in a similar manner, substituting *DN bit fields for *DP backfields. Calibrating the 1500Ω pull-up is done in a similar manner. The flow chart of Figure 32 shows how to accomplish this task. 86 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip START Set TXPWDVBG=0. Set TXPWDV2I=0. Set TXPWDIBIAS=0. Set TXPWDFS=0. Set TXPWDCOMP=0. Set TXCAL45DP=1111. Set TXENCAL45DP=1. FLOWCHART FOR CALIBRATING THE 45-OHM HIGH SPEED TERMINATION RESISTOR. Allow 1.5us (forty-five 30MHz cycles) for analog circuitry to stabilize. Set TXCALIBRATE=1. Allow 1us (thirty 30MHz cycles) for analog circuitry to stabilize. Set TXCALIBRATE=0. Decrement TXCAL45DP. NO NO TXCOMP0UT == 1? TXCAL45DP == 0000? YES YES Set TXENCAL45DP=0. Set TXPWD bits for normal operation. STOP Figure 31. 45Ω Calibration Flow Chart 5-35xx-D1-1.08-061705 87 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip START Set TXPWDVBG=0. Set TXPWDV2I=1. Set Battery Charge and Temperature Sensor PWDs = 1. Set TXPWDIBIAS=0. Set TXPWDFS=0. Set TXPWDCOMP=0. FLOWCHART FOR CALIBRATING THE 1500-OHM RESISTOR. Set TXCAL1500=1111. Set TXENCAL1500=1. Allow 500ns (fifteen 30MHz cycles) for analog circuitry to stabilize. Set TXCALIBRATE=1. Allow 100ns (three 30MHz cycles) for analog circuitry to stabilize. Decrement TXCAL1500. Set TXCALIBRATE=0. NO TXCOMP0UT == 1? YES NO TXCAL1500 == 0000? YES Set TXENCAL1500=0. Set TXPWD bits for normal operation. STOP Figure 32. 1500Ω pull up resistor Calibration Flow 88 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9.5. USB 2.0 PHY 480MHz PLL The STMP35xx includes a 480MHz PLL to clock the high speed transceiver. This PLL can also be used for generating the system wide DCLK. In addition, it can be left powered down and the system wide DCLK can be used to drive 60MHz into the Full Speed PHY to operate the USB. HW_CCR:CKSRC DCLK HW_CCR: PLL_SOURCE_SEL System PLL Block HW_CCR:PDIV,DDIV dclk_u 24MHz HW_USBPHYRX: PLLCKDIVCTL HW_USBPHYPLL: PLLCLKDIVSEL 8 2 Phase/Freq Det. HW_USBPHYPLL: FSCKSOURCESEL 30MHz UTMI CLK 60MHz FS XCVR CLK VCO 480MHz Phase 2 480MHz Phase 2Z HW_USBPHYPLL: PLLCPNSEL USB 2.0 PHY PLL Phase Followers Charge Pump 480MHz Phase 3 480MHz Phase 3Z 480MHz Phase 4 480MHz Phase 4Z 480MHz Phase 1 480MHz Phase 1Z Figure 33. USB 2.0 PHY PLL Block Diagram 9.5.1. 480MHz VCO and Phase Followers The heart of the PLL is the VCO which can operate from 120MHz to 720MHz. The VCO frequency is determined by the output of the charge pump, in standard fashion. The VCO produces a 480MHz clock and its exact out of phase component. In the design, these are identified as vco_clk2 and vco_clk2z. In addition, three 5-35xx-D1-1.08-061705 89 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip phase followers are included to produce a precise eight phase clock at 480MHz. These eight phases are used in the high speed digital receiver to operate the DLL that tracks the incoming 480Mbit/second USB receive digital stream. vco_clk2 is also used as a single phase 480MHz digital clock for various clock dividers and other circuits. The VCO and various of its phase followers can be selectively powered down to reduce the overall energy requirements of the STMP35xx. 9.5.2. PFD and Charge Pump The phase/frequency detector (PFD) and charge pump (CP) are used to lock the VCO to the reference oscillator. For the STMP35xx the reference is the integrated crystal oscillator. The most common reference crystal frequencies are 24MHz and 20MHz. Selective power down and control of the PFD, the CP and various loop filter parameters can be controlled in HW_USBPLL. The charge pump gain (current) should be adjusted for different feedback settings, see HW_USBPLL_PLLCPNSEL. 9.5.3. Feedback Divider The feedback divider is connected to dived the VCO frequency by one of several constant dividers. The loop goal is to lock to 480MHz from several different reference frequencies. If a 24MHz crystal is used with a divide by 20, then the loop will stabilize to 480MHz. Similarly if a 20MHz crystal is used with a divide by 24, then the loop will stabilize again at 480MHz. With a 20MHz crystal and a divide by 6 the loop will stabilize to 120MHz. Of course the charge pump gain must be set appropriately. The feedback divider is programmed in HW_USBPLL_PLLCLKDIVSEL. 9.5.4. DCLK_U Generation The high speed PLL supplies a post divider output of the VCO that can be used to drive the DCLK chip wide clock net. The divider value is set in HW_USBRX_PLLCKDIVCTL which defaults to a divide by eight. With the VCO locked to 480MHz, this produces a 60MHz clock which is driven out on the signal dclk_u. Dclk_u is wired to the system PLL where a 2:1 mux selects either the system PLL or the high speed PLL to drive DCLK. The HW_CCR_PLLSOURCESEL bit selects the desired PLL. Of course, the HW_CCR_CKSRC bit selects either the crystal oscillator or the selected PLL to drive the DCLK clock net. 9.5.5. 60MHz Full Speed USB PHY Clock Generation A fixed divide by eight post divider is included to generate 60MHz from a 480MHz VCO. This clock is used within the full speed USB transceiver. It is also further divided by two to produce the 30MHz clock used in the UTMI interface for the integrated USB 2.0 PHY. For test purposes, the chip wide DCLK can be selected instead of this high speed PLL version of the 60MHz signal, see HW_USBPHYPLL_FSCKSOURCESEL. 90 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9.6. Integrated USB 2.0 PHY Initialization Flow Charts Turn USB Device Controller Clocks Set HW_USBCSR_USBEN=1 Only Start the PHY when 5V sensed NO HW_USBCSR_ VDD5VSENSE == 1 5V power is present so turn on the USB Plugged In detector. Set HW_SPARER_USB_PLUGGEDIN_EN=1 NO Only Start the PHY when cable is plugged in HW_USBCSR_ PLUGGED_IN == 1 YES Flow chart for starting Internal PHY START_INT_PHY if not already done Set HW_CCR_CLKRST = 1 system PLL must be on for mux change Set HW_CCR_PLL_EN = 1 force all PLL regs to default state Set HW_USBPHYPWD = $80000000 Set HW_USBPHYPWD = $00000000 Set HW_USBPHYRX.PLLLOCKED = 0 turn off powerdown bits that were just forced to a default of one. Write zero to PLLLOCKED bit to start PLL lock sequence. At the end of this sequence, PHY will be on. NO Wait for PLL Lock Sequence Completion HW_USBPHYRX_ PLLLOCKED == 1 Set HW_CCR_CKSRC = 1 Set HW_CCR_PLL_SOURCE_SEL = 1 Set HW_CCR_PLL_EN = 0 Switch to PHY PLL source for DCLK PHY STARTED, now start the ARC USB Device Controller YES STOP Figure 34. USB 2.0 PHY PLL START_PHY Flow Chart 5-35xx-D1-1.08-061705 91 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip ARC IRQ Only suspend the phy when the ARC knows it is OK within the USB protocol. To Other ARC ISR NO Arc Suspend Interrupt? YES Flow chart for Suspending the Internal PHY START_INT_PHY Switch back to XTAL DCLK Set HW_CCR_PLLEN = 0 start PHY PLL lock sequence to switch PHY internals back to DCLK Set HW_USBPHYRX_PLLLOCKED = 0 Set HW_USBPHYPWD = $7FFFDF Power down PHY Bit 23 -> do not establish defautlts, this preserves calibration info Bit 5 TXDISCON1500 =0 -> keep ARC in charge of pull up Call SHUTDOWN_ARC Set HW_USBCSR_WAKEUPIE =1 Wake Up for Resume Call OTHER_LOW_POWER_SETTINGS STOP PHY powered down, ARC powered down, other low power clocking, etc in effect Figure 35. USB 2.0 PHY PLL Suspend Flowchart 92 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 9.7. Programmable Registers The USB 2.0 Integrated PHY contains four registers that are directly programmable from the DSP, as follows: USB PHY Analog Power Control 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 TXDISCON1500 RXPWDDISCONDET 1 4 PLLPWDCP RXPWDENV 1 5 PLLPWDVCO 1 6 TXPWDFS 1 7 TXPWDIBIAS 1 8 TXPWDV2I 1 9 TXPWDVBG 2 0 RXPWD1PT1 PWDIBIAS 2 1 RXPWDDIFF 2 2 X:$F210 RXPWDRX 2 3 REGRESET HW_USBPHYPWD TXPWDCOMP 9.7.1. 0 4 0 3 0 2 0 1 0 0 Table 91. HW_USBPHYPWD BITS LABEL RW RESET 23 REGRESET RW 0 22 PWDIBIAS RW 1 21 20 RSRVD RXPWDRX R 0 RW 1 19 RXPWDDIFF RW 1 18 RXPWD1PT1 RW 1 17 RXPWDENV RW 1 16 RXPWDDISCONDET RW 1 15 14 RSRVD TXPWDCOMP R 0 RW 1 13 TXPWDVBG RW 1 DEFINITION Writing a one to this bit resets the Analog Control register to its default (reset) state. This bit always reads a Zero. Powers down the bias generation circuit for the USB 2.0 PHY. This should be set only when all of the other power down bits (PWD) for the USB PHY are set to zero. This bit must be set to zero (low) during battery charge operation. RESERVED -- must be written with zero. Set to one to power down the entire USB PHY receiver block except for the full speed differential receiver. Set to zero for normal operation. Set to one to power down the USB PHY high speed differential receiver. Set to zero for normal operation. Set to one to power down the USB 1.1 style full speed differential receiver. Set to zero for normal operation. Set to one to power down the USB 2.0 PHY receiver envelope detector (squelch signal). Set to zero for normal operation. Set to one to power down the USB 2.0 PHY receiver disconnect detector. Set to zero for normal operation. RESERVED -- must be written with zero. Set to one to power down the USB 2.0 PHY transmit calibration comparator. Set to zero during calibration and set to one after calibration is complete. Set to one to power down the USB 2.0 PHY transmit voltage band gap buffer amp as well as the V-to-I converter and the current mirror. Note these circuits are shared with the battery charge circuit, setting this bit to one will not power down these circuits unless the corresponding bit in the battery charger is also set for power down, see 30.5.11. “Power Charger Register” on page 367. Set to zero for normal operation and for calibration. Table 92. USB PHY Analog Power Control 5-35xx-D1-1.08-061705 93 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 12 TXPWDV2I RW 1 11 TXPWDIBIAS RW 1 10 TXPWDFS RW 1 9:8 7 RSRVD PLLPWDCP R 00 RW 1 6 PLLPWDVCO RW 1 5 TXDISCON1500 RW 0 4:0 RSRVD R 00000 DEFINITION Set to one to power down the USB 2.0 PHY transmit V-to-I converter and current mirror.Note these circuits are shared with the battery charge circuit, see 30.5.11. “Power Charger Register” on page 367. Setting this bit to one will not power down these circuits unless the corresponding bit in the battery charger is also set for power down. Set to zero for normal operation and for calibration. Set to one to power down the USB 2.0 PHY current bias block for the transmitter. This bit should only be set when the USB is in suspend mode. This effectively powers down the entire USB transmit path. Note these circuits are shared with the battery charge circuit, see 30.5.11. “Power Charger Register” on page 367. Setting this bit to one will not power down these circuits unless the corresponding bit in the battery charger is also set for power down. Set to zero for normal operation and for calibration. Set to one to power down the USB 2.0 PHY full speed drivers. This turns off the current starvation sources and puts the drivers into a Hi-Z output. RESERVED -- must be written with zero. Set to one to power down the USB 2.0 PHY charge pump in the PLL. Should be used in conjunction with PLLPWDVCO to completely power down the PLL. Set to zero for normal operation. Set to one to power down the USB 2.0 PHY VCO in the PLL. This bit only powers down the VCO section, use in conjunction with PLLPWDCP. Set to zero for normal operation. Set to zero to connect the integrated 1500Ω pull up resistor tied to the DPLUS USB pad. This defaults to “disconnected” to allow the DSP and USB controller to perform the appropriate initialization before connecting to the USB DPLUS & DMINUS. RESERVED -- must be written with zero. Table 92. USB PHY Analog Power Control 94 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip USB PHY Analog Transmit Control 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TXCAL1500 1 6 TXENCAL1500 1 7 TXHSXCVR 1 8 TXCALIBRATE TXENCAL45DP 1 9 TXCAL45DN TXFSHIZ 2 0 TXENCAL45DN 2 1 TXSKEW 2 2 X:$F211 TXCAL_45DP 2 3 TXCOMPOUT HW_USBPHYTX TXHSTERM 9.7.2. Table 93. HW_USBPHYTX BITS LABEL RW RESET 23 TXCOMPOUT RW 0 22 TXFSHIZ RW 1 21 TXENCAL45DP RW 0 20 RSVRD 19:16 TXCAL45DP R 0 RW 0110 15 RW 0 TXSKEW DEFINITION The calibration comparator output is latched to this bit. This bit should be erased for every new calibration. This bit can set to zero or set to one by a normal write from the DSP. In addition, it is loaded with the state of the calibration comparator’s output whenever HW_USBPHT_TXCALIBRATE is set to one. It continuously copies the comparator to this bit as long TXCALIBRATE is set to one, i.e. when TXCALIBRATE is one, writing to this bit has no effect. Set to zero to tri-state the full speed driver. The actual tristate control is muxed between the normal source coming from the PHY transmitter logic and this bit. The mux is controlled by HW_USBPHYRX_TXFSHIZEN. Set to one for normal operation. Set to one for the time you wish to compare the 45Ω DP termination resistor to the reference resistor. This bit should be set to one each time a new value of HW_USBPHYTX_TXCAL45DP is set in order to compare the resulting resistance. NOTE: only one of the following bits can be set to one for any calibration operation: HW_USBPHYTX_TXENCAL1500, HW_USBPHYTX_TXCAL45DN & HW_USBPHYTX_TXENCAL45P. Set to zero when DP calibration is completed. The result of a comparison can be seen in HW_USBPHYTX_TXCOMPOUT. RESERVED -- must be written with zero. Decode to select a 45Ω resistance for the DP output pin. 0000= Maximum resistance. Resistance is centered by design at 0110. Perform calibration routine by initially setting to 1111 and counting down until the comparator trips. Test mode bit to skew the transmit signal in order to test the receiver sensitivity. Table 94. USB PHY Analog Transmit Control 5-35xx-D1-1.08-061705 95 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 14 TXHSTERM RW 0 13 TXENCAL45DN RW 0 12 11:8 RSVRD TXCAL45DN R 0 RW 0110 7 TXCALIBRATE RW 0 6 TXHSXCVR RW 0 5 TXENCAL1500 RW 0 4 3:0 RSVRD TXCAL1500 R 0 RW 1000 DEFINITION Set to one to connect the high speed 45Ω terminations. This forces both of the FS drivers to zero so that the 45Ω resistors are connected between DP/DN and ground. It also disconnects the 1500Ω resistor from VDD so that the pull-up is not there. When first communicating with a hub, the PHY needs to be in Full Speed mode, i.e. leaving this bit at zero. Only after the proper high speed handshaking should this bit be set to one. When the PHY enters Suspend mode, this bit needs to revert to zero so that Full Speed terminations are re-established. 0-> full speed termination, 1 --> high speed termination. This bit is muxed with the inverse of UTMI_TERM. The mux is controlled by HW_USBRX_TERMSELECTEN. Set to one for the time you wish to compare the 45Ω DN termination resistor to the reference resistor. This bit should be set to one each time a new value of HW_USBTX_TXCAL45DN is set in order to compare the resulting resistance. NOTE: only one of the following bits can be set to one for any calibration operation: HW_USBTX_TXENCAL1500, HW_USBPYTX_TXCAL45DN & HW_USBPHYTX_TXENCAL45P. Set to zero when DN calibration is completed. The result of a comparison can be seen in HW_USBPHYTX_TXCOMPOUT. RESERVED -- must be written with zero. Decode to select a 45Ω resistance for the DN output pin. 0000= Maximum resistance. Resistance is centered by design at 0110. Perform calibration routine by initially setting to 1111 and counting down until the comparator trips. Set to one to effect calibration of any of the three precision resistances and set back to zero to read the result of calibration in HW_USBPHYTX_TXCOMPOUT. When set to one, it causes the calibration comparator output to continuously update the state of HW_USBPHYTX_TXCOMPOUT. Set to zero for normal operation. NOTE: only one of the following bits can be set to one for any calibration operation: HW_USBTX_TXENCAL1500, HW_USBPYTX_TXCAL45DN & HW_USBPHYTX_TXENCAL45P. Set to one to enable the high speed transceiver. This enables the data lines to control the current steer block. Set to zero for full speed operation. This bit is muxed with the inverse of UTMI_XCVR_SELECT. The mux is controlled by HW_USBRX_XCVRSELECTEN. Set to one for the time you wish to compare the 1500Ω RPU resistor to the reference resistor. This bit should be set to one each time a new value of HW_USBTX_TXCAL1500 is set in order to compare the resulting resistance. NOTE: only one of the following bits can be set to one for any calibration operation: HW_USBTX_TXENCAL1500, HW_USBPYTX_TXCAL45DN & HW_USBPHYTX_TXENCAL45P. Set to zero when RPU calibration is completed. The result of a comparison can be seen in HW_USBPHYTX_TXCOMPOUT. RESERVED -- must be written with zero. Decoded to select a 1500Ω resistance for the RPU Output. 0000= Maximum resistance. Resistance is centered by design at 1000. Perform calibration routine by initially setting to 1111 and counting down until the comparator trips. Table 94. USB PHY Analog Transmit Control 9.7.3. 96 USB PHY Analog PLL Control 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip PLLPFDRST 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PLLV2ISEL PLLCPSHORTLFR 1 8 PLLCPDBLIP PLLVCOKSTART 1 9 PLLVCOCLK2 2 0 PLLVCOCLK24 2 1 PLLCPNSEL 2 2 X:$F212 PLLCLKDIVSEL 2 3 PLLCLKDIVRSTZ HW_USBPHYPLL Table 95. HW_USBPHYPLL BITS LABEL RW RESET 23 PLLCLKDIVRSTZ RW 1 22 PLLVCOKSTART RW 0 21 PLLCPSHORTLFR RW 0 20 PLLPFDRST RW 0 19:16 RSVRD 15:12 PLLCLKDIVSEL R 0000 RW 0000 DEFINITION This bit should normally be set to one. It can be momentarily set to zero and then back to one to provide a pulse to load the clock divider bits whenever HW_USBPHPLL_PLLCLKDIVSEL is changed. DCLK should always be switch back to the 24MHz crystal oscillator source before changing the PLL frequency. This test bit is provided for the very unlikely event that the VCO does not start oscillation. This theoretically possible but highly unlikely event can only happen in a noiseless system-- an unlikely scenario. This bit is normally set to zero. To kick start the VCO, perform a zero to one transition on this bit followed by a one to zero transition. This normally low test mode bit is used to short the charge pump resistor for a highly under-damped response. Set to one to short the resistor. The resistor should only be shorted in test mode. This bit can be used to reset the PFD. This bit is set to zero for normal operation. To reset the PFD, perform a zero to one transition on this bit followed by a one to zero transition. This transition is not needed for normal operation. RESERVED -- must be written with zero. The PLLCLKDIVSEL bit-field is used to select the PLL feedback divide ratios. See Table 97, “PLL Clock Divider Values,” on page 99 for recommend values for 24MHz and 20MHz crystals. 0000 DIV20 0001 DIV24 0010 DIV30 0011 DIV16 0100 DIV12 0101 DIV10 0110 DIV8 0111 DIV6 1XXX reserved, do not use Table 96. USB PHY Analog PLL Control 5-35xx-D1-1.08-061705 97 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 11:8 PLLCPNSEL RW 0000 7 PLLVCOCLK24 RW 0 6 PLLVCOCLK2 RW 0 5 PLLCPDBLIP RW 0 4 3:0 RSVRD PLLV2ISEL R 0 RW 0000 DEFINITION These bits are set in conjunctions with the HW_USBPHYPLL_PLLCLKDIVSEL bits to maintain a constant loop filter damping factor for the different divide ratios. They can also be used independently to speed up or slow down the activity of the PLL. Recommended settings are found in Table 97, “PLL Clock Divider Values,” on page 99. 0000 ip current (default) 0001 ip current 0010 1.50 * ip current 0011 0.75 * ip current 0100 0.50 * ip current 0101 0.50 * ip current 0110 0.40 * ip current 0111 0.40 * ip current 1XXX reserved do not use Set to one to disable four of the eight phases of PLL clock output, i.e. turn off vco_clk1, vco_clk1z, vco_clk3, and vco_clk3z. Only vco_clk2, vco_clk2z, vco_clk4, and vco_clk4z remain enabled when this bit is set. Disabling these clock phases when they are not needed can save approximately 1mA. Set to zero to enable all eight phases out of the PLL. Note this bit overlaps with PLLVCOCLK2 in disabling these phases. Set to one to disable six of the eight phases of PLL clock output, i.e. turn off vco_clk1, vco_clk1z, vco_clk3, vco_clk3z, vco_clk4, and vco_clk4z. Only vco_clk2 and vco_clk2z remain enabled when this bit is set to one. vco_clk2 is also used as the digital clock for the 480MHz digital clock domain and the various digital clock domains resulting from divisions of the 480MHz oscillator. Disabling these clock phases when they are not needed can save approximately 1.5mA. Set to zero to enable driving all phases out of the PLL. Note: this bit overlaps with PLLVCOCLK24 in disabling some phases. Setting this bit provides useful power reductions when the high speed PLL is used to drive DCLK in applications that do not use the USB. Set this bit to one to double the charge pump current to speed up lock time. It can be used in conjunction with HW_USBPHYPLL_PLLCPNSEL to change the loop performance. At start up time it can be set to one to shorten the lock time. During normal operation, this be should be set to zero for lowest overall tracking jitter. RESERVED -- must be written with zero. These bits can be used to extend the frequency range of the PLL. 0000 Nominal frequency range (default) 0001 Lower the useful frequency range 0010 Lowest useful frequency range 0011 Highest useful frequency range 01XX Reserved, do not use 1XXXf Reserved, do not use Table 96. USB PHY Analog PLL Control . 9.7.4. 98 USB PHY Analog Receive Control 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip PLLCLKDIVSEL DIVIDE R 0000 0001 0010 0011 0100 0101 0110 0111 1XXX FREQUENCY FOR 24MHZ CRYSTAL OSCILLATOR FREQUENCY FOR 20MHZ CRYSTAL OSCILLATOR PLLCPNSEL 480MHz 576MHz 720MHz 384MHz 288MHz 240MHz 192MHz 144MHz unused 400MHz 480MHz 600MHz 320MHz 240MHz 200MHz 160MHz 120MHz unused 0000,0001 0000,0001 0010 0011 0100 0101 0110 0111 DIV20 DIV24 DIV30 DIV16 DIV12 DIV10 DIV8 DIV6 unused Table 97. PLL Clock Divider Values 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ENVADJ HOSTMODETEST 1 7 DISCONADJ FSCKSOURCESEL 1 8 DEBUGMODE REGRXDBYPASS 1 9 PLLLKTIMECTL 2 0 TXFSHIZEN 2 1 XCVRTERMSELECTEN 2 2 X:$F213 PLLCKDIVCTL 2 3 PLLLOCKED HW_USBPHYRX Table 98. HW_USBPHYRX BITS LABEL 23 PLLLOCKED 22 REGRXDBYPASS RW RESET DEFINITION R PLL This bit is set whenever the PLL achieves its lock state, i.e. LOCK whenever the PLL lock counter counts down to zero. This is STATE determined by design and from characterization to be a maximum time period. The PLL includes a lock counter to time this period. The initial value of the lock counter is taken from the HW_USBPHYRX_PLLLKTIMECTL bit field. What is written to this bit is indirectly related to what is read. W N/A Software must write a zero to this bit position to initiate a new PLL lock count. After powering up the USB PHY or changing the PLL feedback divider, software must write a zero to this bit to restart the lock count. WARNING: To modify other bits in this register without initiating a PLL lock cycle, software must write a ONE to this bit position. RW 0 Set this bit to one to use the output of the DP single ended receiver in place of the full speed differential receiver. This test mode is intended for lab use only. For normal operation, set this bit to zero. Table 99. USB PHY Analog RX Control 5-35xx-D1-1.08-061705 99 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 21 FSCKSOURCESEL RW 0 20 HOSTMODETECT RW 0 19:16 PLLCKDIVCTL RW 0111 15 TXFSHIZEN RW 0 14 XCVRTERMSELECTEN RW 0 DEFINITION The UTMI interface of the PHY and the digital full speed transceiver receive a 60MHz clock from the PHY’s PLL, see Figure 33. “USB 2.0 PHY PLL Block Diagram” on page 89. The source of this clock is either a divide by eight from the 480MHz PLL or from the chip wide DCLK. The FSCKSOURCESEL bit selects the 480MHz divided by eight or the DCLK as the source. Set this bit to zero to use the 480MHz PLL divided by eight to drive the Full Speed transceiver and the divide by two that generates the UTMI clock. Set this bit to one to use the chip wide DCLK to drive the Full Speed transceiver and the divide by two that generates the UTMI clock. Set this bit to one to put the USB 2.0 PHY into host mode. This mode is not supported in the STMP35xx, however the functionality is built into the PHY and will be characterized for subsequent product use of the USB 2.0 PHY in host mode. Set this bit to zero for normal operation. The USB 2.0 PHY PLL can be used as the clock generator to drive DCLK for the entire chip. These bits select the divide ratio used for driving DCLK. The USB 2.0 PHY PLL frequency is adjusted using HW_USBPHYPLL_PLLCLKDIVSEL. For some of the values of PLLCKDIVCTL, the PLL must be running at 120MHz maximum frequency, these values are marked with a †. 0000 DIV1† (PLL freakiness ≤ 120MHz pass through) 0001 DIV2† (PLL freakiness ≤ 120MHz) 0010 DIV3† (PLL freakiness ≤ 120MHz) 0011 DIV4 (480MHz ÷ 4 = 120MHz = DCLK) 0100 DIV5 (480MHz ÷ 5 = 96MHz = DCLK) 0101 DIV6 (480MHz ÷ 6 = 80MHz = DCLK) 0110 DIV7 (480MHz ÷ 7 = 68.57MHz = DCLK) = DCLK) 0111 DIV8 (480MHz ÷ 8 = 60MHz 1000 DIV9 (480MHz ÷ 9 = 53.33MHz = DCLK) 1001 DIV10 (480MHz ÷ 10 = 48MHz = DCLK) 1010 DIV11 (480MHz ÷ 11 = 43.64MHz = DCLK) 1011 DIV12 (480MHz ÷ 12 = 40MHz = DCLK) 11XX reserved, do not use This bit is set to one to override the normal control by the PHY transmitter of the full speed driver’s Hi Z control signal. Set to zero for normal operation, i.e. controlled by the PHY transmitter. This bit is set to one to override the normal control by the ARC core of the xcvr_select and the term_select signals. Set to zero for normal operation. Table 99. USB PHY Analog RX Control 100 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 13:12 PLLLKTIMECTL RW 10 11:8 DEBUGMODE RW 0000 7:4 DISCONADJ RW 0000 These bits determine the number of clocks counted by the lock timer before it reports the locked condition in HW_USBPHYRX_PLLLOCKED. The maximum lock time across temperature and process variations is 90 µseconds with register default settings. Lock is defined here as stabilizing within 1% of final frequency. This field selects a 10-bit, 11-bit, 12-bit or 13-bit counter. The clock input to this counter comes from the PLL reference clock source, i.e. the crystal oscillator. For a 24MHz crystal, the lock times selected are as follows: 00 1024 clocks or 42.67 µS 01 2048 clocks or 85.33 µS 10 4096 clocks or 170.67 µS 11 8192 clocks or 341.33 µS These bits are used for debug only. These bits must be set to zero for normal operation. 0000 Normal operation. 0001 HS DLL bypass 0010 HS elastic buffer bypass 0011 Sync detect count reduction 0100 511 test pattern generation and detection 01XX undefined 1XXX undefined This bit field adjusts the trip point for the disconnect detector. RW 0000 FIELD TRIP LEVEL VOLTAGE 0000 0.57500 volts 0001 0.56875 volts 0010 0.58125 volts 0011 0.58750 volts 01XX reserved, do not use 1XXX reserved, do not use This bit field adjusts the trip point for the envelope detector. 3:0 ENVADJ FIELD TRIP 0000 0.10000 0001 0.10625 0010 0.11225 0011 0.12500 LEVEL VOLTAGE volts volts volts volts Table 99. USB PHY Analog RX Control The HW_USBPHYRX_PLLCKDIVCTL bit field selects the divide ratio used to generate DCLK when the USB 2.0 PHY PLL is used to drive DCLK to the entire chip. The PHY PLL is of course adjustable and must be set to less than 120MHz for several of the DIVCTL settings. The following table shows the DCLK values available when the PLL is set at 480MHz and when it is set at 120MHz. The divider value DIV1 should only be used in test modes. 5-35xx-D1-1.08-061705 101 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip PLLCKDIVCTL DIVIDE BY DCLK FREQUENCY FOR 480MHZ USB 2.0 PHY PLL DCLK FREQUENCY FOR 120MHZ USB 2.0 PHY PLL 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 11XX DIV1 DIV2 DIV3 DIV4 DIV5 DIV6 DIV7 DIV8 DIV9 DIV10 DIV11 DIV12 unused N/A N/A N/A 120MHz 96MHz 80MHz 68.57MHz 60MHz 53.33MHz 48MHz 43.64MHz 40MHz unused 120MHz 60MHz 40MHz 30MHz 24MHz 20MHz 17.1MHz 15MHz 13.33MHz 12MHz 10.9MHz 10MHz unused reset Table 100. PLL Clock Divider Values 102 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 10. PARALLEL EXTERNAL MEMORY CONTROLLER (EMC) The chip includes an external memory controller that has two major functional modes: SmartMedia/NAND and CompactFlash. The SmartMedia/NAND flash interface provides a state machine that provides all of the logic necessary to perform DMA functions between on-chip RAM and the flash. The CompactFlash interface supports CompactFlash Memory mode. This mode can be used to communicate with standard CompactFlash (CF) devices such as CF Flash and the IBM MicroDrive. The CF Memory mode can be used to communicate with standard ATA/ATAPI devices like CD-ROM and hard drives. This documentation will detail the configuration and operation of the external memory interface. It will discuss the standard use of the interface for flash applications. Additional information about other specific applications (CD-ROM, DRAM, NOR Flash, etc.) will be available in future application notes. 10.1. EMC Overview The external memory controller has several major features: • DMA data transfers allow minimal CPU overhead • 32-bit SmartMedia/NAND addressing supports future devices up to 4Gbyte • Multiple device support with four SmartMedia/NAND and two CF chip selects • Configured timing can be set to support various devices The external memory controller can be described as two fairly independent devices in one: a SmartMedia/NAND flash interface and a CompactFlash/NOR flash/IDE interface. Both interfaces share the same device pins, some registers and the DMA engine. Both interfaces uses memory mapped registers to setup and control the transactions. Data is always sent through the DMA – there are no data registers that correspond to the interface data bus. Transactions are always started with a kick bit. The interface sets up the control lines and transfers data to/from the internal RAM. Once the transaction is complete the interface signals the DSP with either a polled flag or an interrupt. The kick bit, polling bit and interrupt configurations are all contained in the registers. 5-35xx-D1-1.08-061705 103 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 10.1.1. EMC External Pins The EMC supports several different modes of operation, and the pins used in each mode overlap substantially. The following table shows how the pins relate to each other. SMARTMEDIA/NAND PIN NAME SM_D15 - SM_D8 SM_D7 - SM_D0 SM_WEn SM_REn * SM_ALE SM_CLE SM_SEn SM_CE0n SM_CE2n SM_CE3n * * * * SM_CE1n * * * * * * * SM_WPn * * SM_READY CF+/COMPACTFLASH PIN NAME, MEMORY MODE CF_D15 - CF_D8 CF_D7 - CF_D0 CF_WEn CF_OEn CF-A23 - CF_A10 CF_A9 CF_A8 CF_A7 CF_A6 CF_A5 CF_A4 CF_A3 CF_A2 CF_A1 CF_A0 CF_CE0n CF_CE1n * * CF_WPn CF_REGn CF_RESETn CF_BVD1/IREQ * CF_READY CF_CDn CF_WAITn Table 101. Mapping of pins to CF+/CompactFlash and SmartMedia/NAND Card/Device Pins Note: Pins marked with (*) are not used by the module and are available for use in GPIO mode. See the GPIO module documentation for more information. General Use of the External Memory Interface The external memory interface has some functions that are shared between both the SmartMedia/NAND and the CompactFlash modes. In particular, common registers control the functions that communicate with the DSP such as the DMA and transaction start/done functions. Each of the memory interfaces also have their own registers that set up their specific parameters. This section will focus on the common registers. 10.1.2. 104 Common Flash Registers 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Flash Control Register 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 KICK 1 9 RW 2 0 TCIE 2 1 IRQP 2 2 SRST 2 3 X:$F000 MMD HW_FLCR NB 10.1.2.1. Table 102. HW_FLCR BITS LABEL RW RESET 23:22 RSRVD R 0 21 SRST RW 0 20:19 RSRVD R 0 18:6 NB RW $001 5:4 MMD R 0 3 IRQP RW 0 2 1 0 TCIE RW KICK RW 0 RW 0 RW 0 DEFINITION Reserved – Must be written with 0. Flash module software reset – This bit is itself reset by a hardware reset only; a software reset does not clear the bit. Reserved – Must be written with 0. Number of bytes to transfer External interface type 00 SmartMedia/NAND 10 Reserved 01 CompactFlash 11 Reserved Reading a one indicates a pending interrupt; writing back a one de-asserts the interrupt; writing zero has no effect. Setting this bit enables the transaction-complete interrupt. Setting this bit initiates an external memory transfer is a read; otherwise it is a write. Setting this bit initiates an external memory transfer; it automatically clears when the transfer completes. Table 103. Flash Control Register Description The Flash Control Register sets up basic operating parameters. After the transaction has been set up in all of the appropriate registers (transaction type, timing, address, etc.) the software triggers the kick bit. This will initiate the transaction. The status bit will indicate when the transaction has been completed. The DSP can either poll the status bit or the register can be configured to send an interrupt on transaction completion. The Flash Start Address Low and High Registers determine the addresses of both the internal XRAM, YRAM and PRAM and the external device. Multiple cycle transactions (reading/writing multiple bytes sequentially) will pack/unpack data from the DSP XRAM, YRAM and PRAM’s 24-bit words into the external device’s 8-bit interface. The LSB is packed/unpacked first. Each byte is packed with its MSB at bit 7, 15, or 23 for bytes 1, 2 or 3. The address bus’s behavior depends on the specific external device type. SmartMedia/NAND devices don’t use the address bus. They are externally selected with chip select lines (CE0-3) and internally with multi-byte accesses over the I/O lines (see more in the SmartMedia/NAND section, below). CompactFlash devices may use the Address pins in Memory or I/O mode or with a combination of control pins (CE0, CE1, CF_A0, A1, A2) in IDE Mode. In all cases the mode configuration registers determine how the target device is addressed. 5-35xx-D1-1.08-061705 105 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Flash Control 2 Register 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 RA 2 2 CKGT 2 3 X:$F004 ASEL HW_FLCR2 NDMA 10.1.2.2. 0 0 Table 104. HW_FLCR2 BITS 23:7 6 5 4 3 2 LABEL RSRVD CKGT RSRVD NDMA RSRVD RA RW RW RW R RW R RW RESET 0 0 10 0 00 0 1:0 ASEL RW 00 DEFINITION Reserved – Must be written with 0. Turns clocks to Flash module off. Reserved – Must be written with 0. Inverts data from the Flash to the system. Reserved – Must be written with 0. Right align 16-bit word data from bits from 15:0. The MSByte will be zeroed. This is only associated with CompactFlash16-bit data mode in the CFControl register bit 23. If the Right align bit is not set then the CompactFlash 16-bit data mode will ‘pack’ the word data into the 24-bit memory. NOTE: The left align mode of the STMP3410 is not supported in the STMP35xx. Memory space to use for DMA transfers 00 X space 10 P space 01 Y space 11 Reserved Table 105. Flash Control 2 Register Description The Flash Control 2 Register sets up additional operating parameters. 10.1.2.3. Flash Start Address Low Register HW_FLSALR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 XA 2 3 X:$F001 Table 106. HW_FLSALR BITS LABEL RW RESET 23:0 XA DEFINITION Lower 24 bits of external memory starting address Table 107. Flash Start Address Low Register Description 106 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 10.1.2.4. Flash Start Address High Register HW_FLSAHR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 XA 2 3 X:$F002 Table 108. HW_FLSAHR BITS LABEL RW 23:8 7:0 DA XA R R DEFINITION Starting address for DMA transfer. Upper 8 bits of external memory starting address Table 109. Flash Start Address High Register Description 10.2. External Memory Interface with SmartMedia/NAND Flash Devices The external memory interface will commonly be used with SmartMedia/NAND flash devices. SmartMedia are small removable cards that contain one or two NAND Flash devices. Alternatively, the system designer can use non-removable NAND flash chips. Both devices use the same pins. The SmartMedia/NAND electrical interface uses an 8-bit data/address bus and 8 control lines. Multiple devices share the same bus, with chip selects used for selection. 10.2.1. SmartMedia/NAND Pins • SM_D0 - SM_D7: 8-bit I/O interface. This bus is used to send addresses (multiple bytes required to send a complete address), data and commands to the SmartMedia/NAND device. Data, device ID and status information are received from the Flash over this bus. • SM_WEn: Write Enable. This active low output is used to indicate a write cycle to the Flash. The external memory interface will write to the bus during a WE~ cycle. • SM_REn: Read Enable. This active low output indicates a read cycle to the Flash. The flash device writes to the bus during a RE~ cycle. • SM_ALE: Address Latch Enable. This active high output indicates that the data on the I/O bus is part of an address. The chip outputs one byte of a Flash memory address during this cycle. • SM_CLE: Command Latch Enable. This active high output indicates that the data on the I/O bus is a flash command. The chip outputs a SmartMedia/NAND command during this cycle. See the data sheet for your SmartMedia/NAND device for more information on the valid commands. • SM_SEn: Spare Enable Select. This active low output is used to indicate that the ECC data should be sent with a regular 512 Byte Flash Block. This command is not typically used since the ECC should always be used. It is recommended that the SE~ line be tied to ground (asserted) to ensure that the spare area is always used. • SM_CE0n – SM_CE3n: Chip Enable Lines. Active low outputs that select each SmartMedia or NAND Flash. Connect one to each of the flash devices. • SM_WPn: Write Protect. This active low output is used prevent accidental data corruption during non-write cycles. 5-35xx-D1-1.08-061705 107 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip • SM_READY: Ready/ Busy~. This active low input indicates that the flash device is busy. No new transactions to any devices should occur unless this line is not asserted. The Ready/Busy~ line uses open-drain drivers and requires an external pull-up resistor. All SmartMedia/NAND Flash devices busy pins should be connected to this pin. The basic unit of access of a SmartMedia/NAND device is the 8 bit byte. All bytes must be written in complete 528 byte “pages”. A “block” is made up of 32 pages. A 64MByte NAND Flash has 4096 blocks, see Figure 36. “NAND Flash Device Block Diagram” on page 109. When an address is sent to a NAND Flash it is sent in three or four bytes depending on the size of the device. CYCLE ADDR 0 ADDR 1 ADDR 2 ADDR 3 I/O 7 A7 A16 A24 0 I/O 6 A6 A15 A23 0 I/O 5 A5 A14 A22 0 I/O 4 A4 A13 A21 0 I/O 3 A3 A12 A20 0 I/O 2 A2 A11 A19 0 I/O 1 A1 A10 A18 0 I/O 0 A0 A9 A17 A25 Table 110. SmartMedia/NAND Device Address Bytes Transfers to and from a NAND Flash device are made in packets, starting with a control byte which may be followed by one, three or four bytes of address. The command and address portion can be followed by up to 528 bytes of data for a read or program (write) command, see Figure 37. “NAND Flash Device Command & Data Sequences” on page 110. When a NAND Flash contains more than 32MBytes of storage the optional four address byte format has to be used. Pay careful attention to the device address bit mapping in Table 110, “SmartMedia/NAND Device Address Bytes,” on page 108. There is no address bit 8. This reflects the growth of page sizes from 256 bytes to 512 bytes as NAND flash technology evolved. Three read commands are provided to allow starting at offsets of zero bytes, 256 bytes or 512 bytes into a 528 byte page. The reader is cautioned to pay careful attention to the mapping of Flash Start Address Low and High register bits to the four address bytes. Recall the “missing” address bit 8 in the NAND device’s interpretation of these address bytes. CYCLE ADDR 0 ADDR 1 ADDR 2 ADDR 3 I/O 7 AL7 AL15 AL23 AH7 I/O 6 AL6 AL14 AL22 AH6 I/O 5 AL5 AL13 AL21 AH5 I/O 4 AL4 AL12 AL20 AH4 I/O 3 AL3 AL11 AL19 AH3 I/O 2 AL2 AL10 AL18 AH2 I/O 1 AL1 AL9 AL17 AH1 I/O 0 AL0 AL8 AL16 AH0 Table 111. Flash Address Low/High mapping to SmartMedia/NAND 108 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip sense amps & I/Os sm_ad[0] 512 sm_ad[7] 16 } 32 pages = 1 block 528 byte page Figure 36. NAND Flash Device Block Diagram The EMC NAND FLASH controller supports six initial commands (iCMD) and two packet ending commands (eCMD) as shown in the figure below. Initial commands include: • The RESET command initializes the NAND flash internal state machine to idle. • The Read Status command is useful to tell when a page has been programmed or a block has been erased. • The Read Data command is used to fetch a page of data from the Flash. One should generally fetch all 528 bytes and apply any error correction stored in the extra 16 bytes to the 512 real data bytes. • The Program Data command writes 528 data bytes to a page in the NAND Flash. • Each device has a built in vendor ID and device ID that can be read from the device with a READ ID command. Ending commands include: The AUTO ERASE START command $60. The AUTO PAGE PROGRAM command $10. The appropriate ending command is automatically sent by hardware at the end of the program sequence and the erase block commands. 5-35xx-D1-1.08-061705 109 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip reset iCMD Read Status iCMD D Block Erase iCMD A1 A2 A3 eCMD required for devices larger than 32MB Read Data iCMD A0 A1 A2 A3 D0 D1 Program Data iCMD A0 A1 A2 A3 D0 D1 Read ID iCMD A D data byte from ROM D1 byte from DSP3410 Figure 37. NAND Flash Device Command & Data Sequences As the above figure shows, all packets sent to the NAND device start with a command byte followed by the appropriate number of address bytes. Either data bytes are then sent to the device or data./status/ID bytes are received from the device. Note the first address byte sent on the Block Erase command is Address Byte 1. All timing references in the NAND Flash controller are based on DCLK. Since DCLK is quite variable, the timing parameters must be recalculated and reloaded whenever the frequency of DCLK changes. For a timing references, see Figure 38. “NAND Flash Write Timing” on page 111. 110 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip sm_cle tRWSU tRWH tWPW tWPW sm_wen tWPW tRWH tRWSU sm_ale tRWH tRWSU tRWSU tRWH+tRWSU read cmd sm_d[7:0] $00 AL[7:0] AL[15:8] Figure 38. NAND Flash Write Timing . sm_cle sm_ale tRWSU tRWH tRPW tRPW sm_ren tRPW tRWSU tRWH tRWSU tRWH tRWSU tRWH+tRWSU sm_d[7:0] data byte 0 dat byte 1 data byte 2 Figure 39. NAND Flash Read Timing 5-35xx-D1-1.08-061705 111 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip SmartMedia/NAND Registers SmartMedia/NAND Control Register 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CS 1 8 SE 1 9 WP 2 0 SIZE 2 1 ICMD 2 2 TOIE 2 3 X:$F010 BPIE HW_FLSMCR TOIRQ 10.2.2.1. BPIRQ 10.2.2. Table 112. HW_FLSMCR BITS LABEL RW RESET 23:17 RSRVD R 16 BPIRQ R DEFINITION 0 0 Reserved – Must be written with 0. Bad programming interrupt pending – Reading a one indicates a pending interrupt; writing back a one de-asserts the interrupt; writing zero has no effect. 15 TOIRQ RW 0 Timeout interrupt pending – Reading a one indicates a pending interrupt; writing back a one de-asserts the interrupt; writing zero has no effect. 14 BPIE RW 0 Bad Programming interrupt enable – Generate BPIRQ if SmartMedia/NAND interface is kicked with bad programming. 13 TOIE RW 0 SmartMedia/NAND Timeout interrupt enable 12:5 ICMD R $FF Initial standard SmartMedia/NAND command for transaction $FF Card Reset $70 Card Status Register Read $60 Card Block Erase. Second command byte is always $D0. $00 Read/Program Data. Start address is in first 256 bytes of 528-byte page. $01 Read/Program Data. Start address is in second 256 bytes of 528-byte page. $50 Read/Program Data. Start address is in redundant area (last 16-bytes of page). $90 Car ID Read 4 SIZE R 0 Target SmartMedia/NAND device size 0 <= 32 MBytes 1 > 32 MBytes 3 WP RW 0 Write Protect – Controls the output of the SM_WPn pin (active-low) 0 Assert -WP pin 1 De-assert -WP pin 2 SE RW 0 -SE pin control – Allows the spare (redundant) area (last 16 bytes of page) to be skipped. 0 assert -SE pin. Redundant area enabled. 1 de-assert -SE pin. Redundant area disabled. 1:0 CS R 0 External Chip Select 00 Select Chip 0 01 Select Chip 1 10 Select Chip 2 11 Select Chip 3 Note: The SmartMedia/NAND interface's state machine logic makes a number of checks on the legitimacy of DSP programming before allowing the master state machine out of its IDLE state. If these checks fail, the state machine remains IDLE, the BPIRQ gets set and the transaction is considered done (Kick bit in the HW_FLSMCR register is de-asserted). Optionally, a bad-programming interrupt can be enabled by setting the BPIE bit. Table 113. SmartMedia/NAND Control Register Description 112 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The SmartMedia/NAND Control Register configures the interface and determines the type of transaction. The SmartMedia/NAND portion of the interface was designed to very closely interface to external Flash device. The interface knows how to set the appropriate control and data bits at a device command level. Operations like Reset, accesses to the Status Register and data operations are automatically processed by the interface. The user code just needs to set up some basic timing and device information and make a high level request. SmartMedia/NAND Timer 1 Register 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 TWPW 2 2 TRWH 2 3 X:$F011 0 7 0 6 0 5 0 4 0 3 0 6 0 5 0 4 0 3 0 2 0 1 0 0 0 1 0 0 TRWSU HW_FLSMTMR1R TRPW 10.2.2.2. Table 114. HW_FLSMTMR1R BITS 23:22 21:17 16:11 10:5 4:0 LABEL RSRVD TRWH TWPW TRPW TRWSU RW R RW RW RW RW RESET 0 00010 000110 000110 00010 DEFINITION Reserved – Must be written with 0. Read/Write Pulse Hold in terms of dclks Write Pulse Width in terms of dclks Read Pulse Width in terms of dclks Read/Write Strobe Setup in terms of dclks Table 115. SmartMedia/NAND Timer 1 Register Description SmartMedia/NAND Timer 2 Register HW_FLSMTMR2R 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 TWTO 2 3 X:$F012 0 2 TWT 10.2.2.3. Table 116. HW_FLSMTMR2R BITS LABEL RW RESET 23:6 TWTO RW $001E8 5:0 TWT RW 010000 DEFINITION Delay before timing out on RDY pin in terms of dclks Delay before examining RDY pin in terms of (dclks x 1024) Table 117. SmartMedia/NAND Timer 2 Register Description 5-35xx-D1-1.08-061705 113 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The SmartMedia/NAND timing registers default to conservative settings on reset. TIMING PARAMETER Trwh Twpw Trpw Trwsu Twto Twait DEFAULT IN DCLK CYCLES TIME @ 48MHZ (21NS CYCLE) 2 42ns 6 125ns 6 125ns 2 42ns 488 * 1024 10.5ms 16 336ns Table 118. SmartMedia/NAND Timing Specifications SAMSUNG SPEC 40ns 80ns 80ns 30ns 4ms 200ns The firmware designer can change the timing to accommodate higher performance or newer flash devices, and should check that the timing values are acceptable if the dclk clock frequency is changed. 10.3. External Memory Interface in CompactFlash Mode Some applications will require an interface to either a CompactFlash device such as a standard CF memory card or IBM Microdrive. Other applications will interface to a standard IDE/ATAPI device like a CD-ROM or hard disk. The system designer may also want to interface to an external SDRAM, DRAM or NOR Flash for bulk data storage. All of these are possible with the CompactFlash mode of the external Memory Interface and, occasionally, some external glue logic like a CPLD. This interface mode differs significantly from the SmartMedia/NAND mode in that it doesn’t have the intelligence to closely control any device family at a high level. All of the control pins must be configured at the register level. High-level command state machines are implemented in software rather than the memory interface. This requires additional system software development. The benefit is significantly increased flexibility. The CompactFlash mode covers a large number of interfaces. 10.3.1. CompactFlash Modes The STMP35xx supports the 8 bit CompactFlash (CF) Memory Mode in the 100-pin package. In the 144-pin fpBGA, the STMP35xx supports 16 bit CompactFlash (CF) Memory Mode The CompactFlash (CF) Memory mode can be used to connect hard disk drives and CD-ROM drives. 114 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip CompactFlash Registers CompactFlash Control Register 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 WP 0 8 CDP 0 9 SM 1 0 XATTR 1 1 CRST 1 2 RI 1 3 XWT 1 4 IFCE 1 5 ISCE 1 6 INCE 1 7 IFCS 1 8 ISCS 1 9 INCS 2 0 CS DASP 2 1 X:$F008 CRE 2 2 VS 2 3 MODE16 HW_FLCFCR CFAI 10.3.2.1. XDDI 10.3.2. Table 119. HW_FLCFCR BITS 23 22 21:20 19 LABEL MODE16 DASP VS CRE RW RW R R RW 18:17 CS 16 XDDI 15:14 CFAI RW R RW RESET 0 unknown unknown EMC5600_ CARDRSTEN_OUT 00 unknown 10 13 INCS RW 0 12 ISCS RW 0 11 IFCS RW 0 10 9 INCE ISCE RW RW 0 0 8 IFCE RW 0 7 RI R unknown 6 XWT R unknown 5 CRST RW 4 XATTR RW EMC5600_ CARDRST_OUT 0 DESCRIPTION CompactFlash data bus is 16-bits DASP pin of the CompactFlash card, if connected. VS2, VS1 voltage sense inputs (if connected) Output enable for RESET/-RESET pin Active-high versions of outgoing -CE2,-CE1/-CS1,CS0 chip selects Incoming -PDIAGN/-STSCHG pin, sampled into dclk domain Multi-byte transfer card address increment/toggle 00 next A10-A0 same as previous 01 next A10-A0 equal to previous plus one 10 next A10-A0 equal to previous plus two (CIS) 11 next A10-A0 equal to previous, but A0 toggles Reading a one indicates a pending interrupt; writing back a one deasserts the interrupt; writing zero has no effect Reading a one indicates a pending interrupt; writing back a one deasserts the interrupt; writing zero has no effect Reading a one indicates a pending interrupt; writing back a one deasserts the interrupt; writing zero has no effect Setting this bit enables the card absence/removal interrupt Setting this bit asserts an interrupt based on the -PDIAGN/-STSCHG pin of the CompactFlash card going low in any PC Card Mode Setting this bit passes on a card-based interrupt from the RDY/BSY/-IREQ/INTRQ pin of the CompactFlash card. The interrupt occurs if the input pin transitions (either direction) in any PC Card socket mode (Memory, I/O, True IDE) RDY/-BSY/-IREQ/INTRQ pin of the CompactFlash card, sampled into dclk domain -WAIT active-low card pin of the CompactFlash card, sampled into dclk domain 0 wait/card is busy 1 card/data is available Output value to RESET/-RESET pin of the CompactFlash card. Active-high in Memory or I/O Mode; Active-low in True IDE Mode. 0 Access to Attribute Memory or I/O space 1 Access to Common Memory Table 120. CompactFlash Control Register Description 5-35xx-D1-1.08-061705 115 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 3:2 SM RW RESET RW 2'b00 1 0 RW R CDP WP DESCRIPTION Card access mode 00 PC Card Memory Mode 01 reserved 10 reserved 11 reserved Card Detect pin (-CD1) pull-up enable/disable Write Protect (WP) pin of CompactFlash card, sampled into dclk domain EMC5600_PUP unknown Table 120. CompactFlash Control Register Description (Continued) CompactFlash Timer1 Register 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 TWPW 2 2 TRWH 2 3 X:$F009 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TRWSU HW_FLCFTMR1R TRPW 10.3.2.2. Table 121. HW_FLCTMR1R BITS LABEL RW RESET 23:19 TRWH RW 00001 18:12 TWPW 11:5 TRPW 4:0 TRWSU RW RW RW 0001010 0001010 00001 DESCRIPTION Hold time for -CE, An, -REG pins of the CompactFlash card, relative to -WE, RE, -IOWR or -IORD de-asserting, in dclk cycles -WE, -IOWR pins of the CompactFlash card pulse width, in dclk cycles -OE, -IORD pins of the CompactFlash card pulse width, in dclk cycles Read or write pin of the CompactFlash card setup time, in dclk cycles Table 122. CompactFlash Timer1 Register Description CompactFlash Timer2 Register 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TWW 2 2 TRAQ 2 3 X:$F00A TWTO HW_FLCFTMR2R THW 10.3.2.3. Table 123. HW_FLCFTMR2R BITS LABEL RW RESET DESCRIPTION 23:19 TRAQ RW 000101 18:14 THW RW 00001 13:4 3:0 RW RW $0C8 0100 Delay between -OE/-IORD de-assertion and EMC interface re-acquiring the data bus, in dclk cycles Hold time between -WAIT de-asserting and read or write strobe (-OE, -WE, etc.) deasserting, dclk cycles Timeout waiting for card-imposed wait (-WAIT low) period, in dclk cycles Wait-for-wait time, in dclk cycles. Time for -WAIT to assert, from -OE/ -WE/-IOWR/IORD assertion edge. TWTO TWW Table 124. CompactFlash Timer2 Register Description 116 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 10.4. Known Chip Defects with EMC Device 10.4.1. Clear Quest Entry STMP00004728 The Left Align mode feature of the STMP3410 was removed from the STMP35xx design. This CQ Entry was closed as a works as designed entry. However, several users have discovered empirically instead of from the documentation. 5-35xx-D1-1.08-061705 117 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 11. GENERAL PURPOSE FLASH CONTROLLER The General Purpose Flash Interface controller (GP Flash) is a DSP configurable interface to external NAND Flash. This highly configurable and flexible interface can attach to and utilize most readily available NAND Flash devices, including the newer large block erase 1Gbit per die devices. The GP Flash is a DMA device that can autonomously transfer NAND Flash pages to or from on-chip RAM as shown in Figure 40. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS GPFLASH Programmable Registers GPFLASH DMA Engine General Purpose Flash State Machine NAND Flash/ SmartMedia Figure 40. General Purpose Flash Controller The GP Flash interface provides automatic timing control for the critical data read and write access signal lines. The interface automatically maintains proper CLE and ALE setup and hold time as well as proper read/write strobe to data setup and hold times making automatic transfers via DMA practical. see Figure 41. “GP Flash Command/Address/Write Data Timing” on page 119. Also see Figure 42. “GP Flash Read Timing” on page 119. These diagrams show the fundamental constraints maintained by the interface controller. In addition, it shows the programmable registers and bit fields that control the various critical times in the NAND Flash cycle. The GP Flash DMA will transfer the data to/form the system X/Y/P memory. The external data bus can be configured to be 8-bit or 16-bit access. 118 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_GPFLASH_TIMING1R SM_CLE SM_ALE SM_CE0n SM_REN TSU THOLD SM_WEN TDS TDH SM_D[7:0] SM_D[15:8] HW_GPFLASH_TIMING2R no command or address Figure 41. GP Flash Command/Address/Write Data Timing HW_GPFLASH_TIMING1R SM_CLE SM_ALE SM_CE0n SM_WEN HW_GPFLASH_TIMING2R TSU THOLD SM_REN TDS TDH TDS from flash device SM_D[7:0] SM_D[15:8] TDS Data Capture TDS Figure 42. GP Flash Read Timing Every transfer over the external Flash data bus travels over the DMA bus to or from the on-chip RAM. This includes the address bytes and it includes the command byte or bytes sent with CLE asserted. The GPFlash interface controller separates the three phases of Flash device access into three separate DMA transactions, one for the command byte, one for the address bytes and a third one for moving the actual data bytes to or from the device. Thus one must “kick-off” a DMA transaction to send the read command byte itself and another DMA to send the address bytes for the read. see Figure 43. “GP Flash Command Timing” on page 120. 5-35xx-D1-1.08-061705 119 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip There are two sets of setup and hold control counters. One set is for maintaining setup and hold constraints on the command latch enable (CLE)/address latch enable (ALE). A second set of counters is for managing constraints for the data transfer setup and hold time. The ALE/CLE setup and hold times are controlled in HW_GPFLASH_TIMING1R while the data setup and hold times are controlled in HW_GPFLASH_TIMING2R. HW_GPFLASH_TIMING1R_THOLD KICK SM_CE0n SM_CLE TSU TH TDS TDS SM_WEN TDH TDS TDH TSU SM_ALE read cmd SM_D[7:0] $00 AL[7:0] AL[15:8] Figure 43. GP Flash Command Timing The kick bit in HW_GPFLASHCSR0R is used to kick off a DMA transfer. Bits in the CSR0R and CSR1R registers permit the definition of a command transfer, an address transfer or a data read or write transfer. All are initiated or kicked-off by setting the KICK bit. Software monitors the state of the KICK bit either by polling or by waiting on a transfer done interrupt. Figure 43 shows the KICK bit being set by software for the command transfer phase and being reset by hardware at the completion of the single byte command transfer. It shows the KICK bit being set again to transfer the address bytes. Of course, the HW_GPFLASHCSR0R_XFER_TYPE bits were changed from COMMAND to ADDRESS, and the HW_GPFLASH_DMA_ADDR_DMA_ADD field was set to point to the first address byte before this second “kick” was performed. In addition, the HW_GPFLASH_XFER_SIZE_NUM_BYTES field was changed from one to four or whatever was appropriate for the device being read. We see that even to send a single command byte, CSR0, CSR1, have to be setup, the NUM_BYTES field has to be set to one, the DMA_ADD field must point to an onchip RAM byte containing the proper command and a DMA must be kicked-off. Figure 44 shows a complete transaction consisting of a one byte command DMA transfer, a two byte address DMA transfer and a two byte data read DMA transfer. Many NAND Flash devices expect the chip enable to remain low during all three phases, as in Figure 44. The GP Flash state machines respond to the HW_GPFLASH_CSR0R_CEB_CTRL bit by leaving the selected chip enable pin in the state indicated by this bit at the end of a DMA transfer. Figure 44 shows the effect of leaving this bit low for the command and address DMA transfers but setting it before the data read DMA transfer. Thus it ends up high (device disabled) after the complete three phase transaction. CEB is brought high after its hold time constraint is met, as specified in HW_GPFLASH_TIMER1R_THOLD. More than one data phase DMA transaction can be used while keeping the flash device selected. 120 5-35xx-D1-1.08-061705 5-35xx-D1-1.08-061705 SM_D[15:8] SM_D[7:0] SM_ALE $00 read cmd TDS TH TSU TDH AL[7:0] TDS TDH AL[10:9] TDS ADDRESS AL[18:11] Figure 44. GP Flash Command, Address and Read Data Operations TSU COMMAND AL[26:19] read data read data read data read data DATA PRODUCT SM_WEN SM_CLE SM_CE0n KICK OFF ICI AL DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 121 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 11.1. Fractional Word Writes Whenever a write to on-chip RAM ends at a non-word boundary then a fractional word write occurs. This can arise from setting HW_GPFLASH_CSR1_START_ BYTE to start transferring either to the Intermediate or most significant byte (byte one or byte two) while setting HW_GPFLASH_XFERSIZER to an even word size, i.e. byte count is a multiple of three. It can also arise from setting HW_GPFLASH_CSR1_START_BYTE to start transferring with the least significant byte (byte zero is the aligned case) while setting HW_GPFLASH_XFERSIZER to a value that is not evenly divisible by three. In either of these cases, the last word of the transfer is only partially filled from the GP FLASH, see Figure 45. A read-modify-write cycle is performed by the GP FLASH hardware for the last word so that the one or two bytes that are not targeted by the GP FLASH transfer remain unmodified in on-chip RAM. Similarly for a partial first word write, i.e. with an unaligned start byte, a read-modify-write cycle is performed to maintain the values of the untargeted bytes. Byte from GPFLASH MSB (BYTE 2) ISB (BYTE 1) LSB (BYTE 0) GPFLASH Hardware performs read-modify-write to keep original values here Figure 45. GP Flash First or Last Partial Word Transfer 11.2. Programming Example There are certain settings that must be made when the GP FLASH module is first initialized. The initialization flow chart provides an example of such an initialization sequence, see Figure 46. “GP Flash Example Initialization Flowchart” on page 123. First, clocks are turned on and software reset is removed to enable the use of the GP Flash. Next the timing control bit fields are initialized. The NAND Flash device specification should be consulted to determine the timing specifications for the device in absolute time, i.e. nano-seconds. Next these parameters must be converted to DCLK cycle counts by dividing each timing specification by the period of the intended DCLK frequency. The ceiling of this number must be used for minimum specifications. The resulting integer value is then loaded into the appropriate bit field. 122 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip GPLASH Init Turn on clocks, remove reset HW_GPFLASH_CSR0R_CLK_DISABLE = 0 HW_GPFLASH_CSR0R_SOFT_RESET = 0 Initialize Timing Values based on DCLK frequency HW_GPFLASH_TIMING1R_TSU = ? HW_GPFLASH_TIMING1R_HOLD = ? HW_GPFLASH_TIMING2R_TDS = ? HW_GPFLASH_TIMING2R_TDH = ? HW_GPFLAS_TIMINGBUSYR_TWTO = ? enable writes at device HW_GPFLASH_CSR1R_WP0 = 0 HW_GPFLASH_CSR1R_MUX = 1 use GPFLASH not EMC STOP Figure 46. GP Flash Example Initialization Flowchart Consider the full transfer timing diagram shown above, see Figure 44. “GP Flash Command, Address and Read Data Operations” on page 121. The flowchart of Figure 47 outlines a function designed to generate this sequence and read a page of data bytes from a NAND Flash device and write them into a buffer in on-chip RAM. Note that the one-byte read command is read from a location in on-chip RAM via DMA and written to the NAND Flash device with the command latch enable (CLE) signal asserted. As shown in the flowchart, three separate transfers are “kicked-off” to effect reading data bytes from a NAND Flash page. The four byte NAND Flash address is read from a buffer in on-chip RAM and written to the device. For this transfer, the CLE signal has been negated and the address latch enable signal (ALE) is asserted. The ALE/CLE setup and hold timings are automatically guaranteed by the hardware. Finally, the device is configured for a data read transfer, depositing the NAND Flash data into a buffer in on-chip RAM. The example provided in the flowchart of Figure 47 uses polling to determine when the GP FLASH hardware has completed a transfer that was initiated by setting the KICK bit. While this method functions correctly, it wastes significant time in busy waiting using polling. It is much better to use the transfer done (XFERDONE) interrupt to monitor completion of each phase of the transaction, see Figure 48. “GP Flash Send Command using XFERDONE Interrupt” on page 125. This flowchart shows only the command byte transfer. Address and data transfers using XFERDONE interrupts are implemented in a similar manner. Notice that the ISR will have to have a small amount of state information to determine what action to take on a completion interrupt, e.g. after a command transfer, initiate the address transfer, etc. 5-35xx-D1-1.08-061705 123 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Run GPFlash Init First GPFLASH Example Read send cmd & addr in 8 bit mode HW_GPFLASH_CSR1R_MODE16 =0 HW_GPFLASH_CSR1R_CEB = n HW_GPFLASH_CSR1R_START_BYTE = ? HW_GPFLASH_CSR1R_MEM = 10 select one device's chip enable select starting byte alignment get cmd/addr bytes from P-MEM Write transfer for command byte HW_GPFLASH_CSR0R_RW = 0 HW_GPFLASH_CSR0R_CEB_CTRL = 0 HW_GPFLASH_CSR0R_XFER_TYPE = 00 Leave chip enable low after cmd Select COMMAND transfer point to 1 byte cmd in on-chip RAM HW_GPFLASH_DMA_ADDR_DMA_ADD = #>cmd_read HW_GPFLASH_XFER_SIZE = 1 HW_GPFLASH_CSR0R_KICK = 1 YES Kick off 1 byte CMD xfer Wait for Transfer Complete KICK == 1? point DMA at 4 byte address in P-Mem, Set xfer type to ADDR, and size to 4 bytes NO HW_GPFLASH_CSR1R_START_BYTE = 0 HW_GPFLASH_CSR0R_XFER_TYPE = 01 HW_GPFLASH_DMA_ADDR_DMA_ADD = #>addr HW_GPFLASH_XFER_SIZE = 4 HW_GPFLASH_CSR0R_KICK = 1 YES 1 byte Kick off 4 byte ADDR xfer Wait for Transfer Complete KICK == 1? 16-bit READ DATA TRANSFER NO HW_GPFLASH_CSR0R_XFER_TYPE = 11 HW_GPFLASH_CSR0R_RW =1 HW_GPFLASH_CSR0R_MODE16 = 1 HW_GPFLASH_CSR0R_CEB_CTRL = 1 HW_GPFLASH_CSR1R_MEM = 0 HW_GPFLASH_CSR1R_START_BYTE = ? HW_GPFLASH_DMA_ADDR_DMA_ADD = #>buffer HW_GPFLASH_XFER_SIZE = n HW_GPFLASH_CSR0R_KICK = 1 return chip enable high, after transfer complete point to read data buffer transfer size Kick off DATA read transfer YES Wait for Transfer Complete KICK == 1? NO STOP Figure 47. GP Flash Read Data Example Flowchart 124 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Run GPFlash Init First Uses xfer done interrutpt GPFLASH_send_cmd set up GPFLASH xferdone interrupt vector ($006E) HW_GPFLASH_CSR0R_INT_XFERDONE_STATUS = 1 HW_GPFLASH_CSR0R_INT_XFERDONE_ENA = 1 Clear any previous IRQ Enable XFER DONE IRQ send cmd & addr in 8 bit mode HW_GPFLASH_CSR1R_MODE16 =0 HW_GPFLASH_CSR1R_CEB = n HW_GPFLASH_CSR1R_START_BYTE = ? HW_GPFLASH_CSR1R_MEM = 10 select one device's chip enable select starting byte alignment get cmd/addr bytes from P-MEM Write transfer for command byte HW_GPFLASH_CSR0R_RW = 0 HW_GPFLASH_CSR0R_CEB_CTRL = 0 HW_GPFLASH_CSR0R_XFER_TYPE = 00 Leave chip enable low after cmd Select COMMAND transfer point to 1 byte cmd in on-chip RAM HW_GPFLASH_DMA_ADDR_DMA_ADD = #>cmd_read HW_GPFLASH_XFER_SIZE = 1 HW_GPFLASH_CSR0R_KICK = 1 STOP 1 byte Kick off 1 byte CMD xfer Return and wait for XFERDONE interrupt Figure 48. GP Flash Send Command using XFERDONE Interrupt 11.3. Monitoring the NAND Flash Ready/Busy Signal The GP FLASH module contains several circuits to aid in monitoring the relatively long interval transitions of the NAND Flash device’s Ready/Busy signal. This includes an interrupt that can monitor either the rising or falling edge of the busy signal and a TWTO timer that can be set to generate a timeout interrupt if the Flash device hangs and never completes a block erase, etc. The busy interrupt monitoring interrupt should only be scheduled after a command that will report its availability via the R/B signal long after the command is started. WARNING: not all NAND Flash devices have reliable busy signaling. For some devices, only read status polling from a timer interrupt schedule is practical. 5-35xx-D1-1.08-061705 125 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 11.4. GP FLASH Programmable Registers All GP Flash interface controller programmable registers exist in the DSP’s X memory space as shown below. 11.4.1. General Purpose Flash Control Status Register 0 This register provides control of the General Purpose Flash Controller. 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 KICK 0 9 RW 1 0 INT_XFERDONE_ENA 1 1 INT_XFERDONE_STATUS 1 2 BUSY_INT_TYPE 1 3 BUSY_TIMEOUT_EDGE 1 4 BUSY_INT_ENA 1 5 BUSY_INT_STATUS 1 6 BUSY_TIMEOUT_INT_ENA 1 7 CEB_CTRL 1 8 SOFT_RESET 1 9 CLK_DISABLE 2 0 XFER_TYPE 2 1 SPARE 2 2 EXT_BUSY_VAL 2 3 BUSY_TIMEOUT_INT_STAT HW_GPFLASH_CSR0R X:$F0C0 Table 125. HW_GPFLASH_CSR0R BITS LABEL 23:21 RSRVD 20 EXT_BUSY_VAL 19:18 SPARE 17:16 XFER_TYPE 15 14 RSRVD BUSY_TIMEOUT_INT_STAT 13 CLK_DISABLE RW R R RW RESET DEFINITION 000 Reserved – Must be written with 0. 0 This read only bit samples the state of the external busy pin. 00 These bits, while present in the register, are currently unconnected in the design and are reserved as patch gates. RW 00 The GP FLASH breaks up the normal transaction flow to the FLASH into one transaction for sending the command, one transaction for sending any address bytes and one or more commands for transferring read or write data. This field determines which type of transaction is being “kicked off”. 00 = command 01 = address 10 = data 11 = reserved R 0 Reserved – Must be written with 0. RW 0 Reading a one indicates a pending busy completion TIMED OUT instead of completing normally. This is a sticky bit which is cleared by writing back a one in this bit position. Writing zero has no effect. This bit is ANDed with BUSY_TIMEOUT_IN_ENA to generate a BUSY_TIMEOUT_IRQ. BUSY_TIMEOUT_IRQ is ORed with BUSY_INT_IRQ to generate the GPFLASH busy interrupt on source 6 and vector $0072. RW 1 When this bit is set to one, the GP FLASH controller clocks are gated off to reduce power. Table 126. GP FLASH Command/Status Register 0 Description 126 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 12 CEB_CTRL 11 SOFT_RESET 10 BUSY_INT_STATUS 9 BUSY_TIMEOUT_INT_ENA 8 BUSY_INT_ENA 7:6 BUSY_TIMEOUT_EDGE 5:4 BUSY_INT_TYPE 3 INT_XFERDONE_STATUS 2 1 INT_XFERDONE_ENA RW 0 KICK RW RESET DEFINITION RW 1 Setting the chip enable control bit to one allows the chip enable to return to the high state at the end of a transfer. Setting this bit to zero will cause the chip enable to remain low after a transfer. Keeping it low allows multiple DMA transactions to look like a single contiguous transfer to the NAND FLASH device. RW 0 Writing a one to this bit position forces a reset to most of the counters and state machines in the General Purpose Flash Controller. This bit must be reset to zero by software for normal operation of the GP FLASH. Programmable registers are NOT returned to their default state by SOFT_RESET. RW 0 Reading a one indicates a pending busy completion or busy timeout interrupt has occurred. This is a sticky bit which is cleared by writing back a one in this bit position. Writing zero has no effect. This bit is ANDed with BUSY_IN_ENA to generate a BUSY_IRQ. BUSY_IRQ is ORed with BUSY_TIMEOUT_IRQ to generate the GP FLASH busy interrupt on source 6 and vector $0072. RW 0 Setting this bit to one enables the busy timeout state machine and counter. If the trailing edge of busy is not detected then BUSY_TIMEOUT_INT_STAT is set. RW 0 Setting this bit to one enables a busy interrupt in BUSY_INT_STATUS RW 00 This field selects the edge behavior of the busy time out interrupt state machine. The 13 bit internal timer counter is reloaded from TXTO at the leading edge. The timer counts down the width of the busy pulse. If the trailing edge is seen then the timeout is suppressed. If the internal timer times out then the BUSY_TIMEOUT_INT_STAT bit is set. The leading/trailing edged definition depends on the polarity of the busy signal. 00 = Reload timer on both edges 01 = Reload timer on rising edges, trailing is falling. 10 = Reload timer on falling edge, trailing is rising (NAND). 11 = Test mode RW 00 This field selects the edge behavior of the busy interrupt, as follows: 00 = trigger interrupt on both edges 01 = trigger interrupt on rising edge only 10 = trigger interrupt on falling edge only 11 = undefined behavior RW 0 Reading a one indicates a pending transfer complete interrupt has occurred. This is a sticky bit which is cleared by writing back a one in this bit position. Writing zero has no effect. RW 0 Setting this bit to one enables the transfer-complete interrupt. RW 0 Setting this bit to one indicates that the external memory transfer is a read; otherwise it is a write. RW 0 Setting this bit to one initiates an external memory transfer; it automatically clears when the transfer completes. It can be polled by software to detect transfer completion or more typically, HW_GPFLASH_CSR0R_INT_XFERDONE_STATUS interrupt can be used to detect this condition. Table 126. GP FLASH Command/Status Register 0 Description (Continued) 5-35xx-D1-1.08-061705 127 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 11.4.2. General Purpose Flash Control Status Register 1 This register provides control of the General Purpose Flash Controller. 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 MEM 1 6 START_BYTE 1 7 CEB 1 8 WP0 1 9 WP1 2 0 MODE16 2 1 MUX 2 2 SPARE_AREA_EN 2 3 WP_CTL HW_GPFLASH_CSR1 X:$F0C1 Table 127. HW_GPFLASH_CSR1 BITS LABEL 23:20 RSRVD 19 WP_CTL 18 SPARE_AREA_EN 17 MUX 16 MODE16 15:14 RSRVD 13 WP1 12 WP0 11:10 RSRVD RW RESET DEFINITION R 0000 Reserved – Must be written with 0. RW 0 This bit controls a multiplexor that selects the source for the SPI MOSI output pin. In order to use the WP1 write protect signal, this bit must be set to one. Setting it to zero returns control of the MOSI driver to the SPI. RW 1 The spare area enable pin is essentially a GPIO pin that is intended to drive the SA input pin on NAND FLASH devices that provide this option. It drives SDRAM Address pin 8 when the GP Flash controls the external memory interface pins. RW 0 GP Flash pins are shared with a number of other integrated interface controllers. This bit controls a multiplexor that selects between the GP Flash controller and the External Memory Controller (EMC), as follows: 0 = HW_GPFLASH_MUX_EMC_ACCESS 1 = HW_GPFLASH_MUX_GPFLASH_ACCESS RW 0 The GPFLASH controller supports either eight or sixteen bit Flash devices. Set this pin to one for 16 bit devices. 0 = HW_GPFLASH_8BIT_ACCESS 1 = HW_GPFLASH_16BIT_ACCESS R 00 Reserved – Must be written with 0. 0 The write protect 1 bit is essentially a GPIO pin that is intended to connect to the write protect pin of a second NAND Flash device. This pin is shared with the MOSI pin, see WP_CTL. 0 The write protect 0 bit is essentially a GPIO pin, it is intended to connect to the write protect pin on the NAND Flash. R 00 Reserved – Must be written with 0. Table 128. GP FLASH Command/Status Register 1 Description 128 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS 9:8 CEB LABEL 7:6 5:4 RSRVD START_BYTE 3:2 1:0 RSRVD MEM RW RESET DEFINITION RW 00 The interface allows access to four external NAND Flash devices. The chip enable selector field is decoded to pick one of the four external chip enable pins. Only the selected pin will be driven to zero. 00 = CE0 01 = CE1 10 = CE2 11 = CE3 R 00 Reserved – Must be written with 0. 00 This field the byte alignment of the starting byte 00 = HW_GPFLASH_START_BYTE_LSB 01 = HW_GPFLASH_START_BYTE_ISB 10 = HW_GPFLASH_START_BYTE_MSB 11 = reserved, undefined behavior R 00 Reserved – Must be written with 0. 00 This field defines the DSP memory space used for DMA transfers as follows: 00 = X Memory HW_GPFLASH_USE_X_MEMORY 01 = Y Memory HW_GPFLASH_USE_Y_MEMORY 10 = P Memory HW_GPFLASH_USE_P_MEMORY 11 = reserved, undefined behavior Table 128. GP FLASH Command/Status Register 1 Description (Continued) 11.4.3. General Purpose Flash DMA Address Register This register holds the DMA address used by the General Purpose Flash Controller to access on-chip RAM. HW_GPFLASH_DMA_ADDR X:$F0C2 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DMA_ADD 2 3 Table 129. HW_GPFLASH_DMA_ADDR BITS LABEL 23:16 RSRVD 15:0 DMA_ADD RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $0000 Begin the DMA transfer at this on-chip RAM address in the address space specified in HW_GPFLASH_CSR0R_MEM. Table 130. GP FLASH DMA Address Register Description 11.4.4. General Purpose Flash DMA Transfer Size Register This register holds the transfer count for DMA transactions kicked off for the General Purpose Flash Controller. 5-35xx-D1-1.08-061705 129 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_GPFLASH_XFER_SIZE X:$F0C3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 NUM_BYTES 2 3 Table 131. HW_GPFLASH_XFER_SIZE BITS LABEL 23:13 RSRVD 12:0 NUM_BYTES RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $001 This field contains the number of bytes to be transferred by the GP Flash controller, when “kicked”. Table 132. GP FLASH DMA Transfer Size Register Description 11.4.5. General Purpose Flash Timing 1 Register This register holds part of the timing values for specifying read or write cycles to or from an external NAND Flash when using the General Purpose Flash Controller. HW_GPFLASH_TIMING1 X:$F0C4 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TSU 2 2 THOLD 2 3 Table 133. HW_GPFLASH_TIMING1 BITS LABEL 23:13 RSRVD 12:8 THOLD 7:5 4:0 RSRVD TSU RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $01 After the last byte of command, address or data is transferred, the CLE or ALE signals are returned to zero, if they were set. The CLE/ALE hold time constrained is guaranteed by the GPFlash state machines counting THOLD DCLKs before releasing the ALE or CLE signals. THOLD can not be set to zero. R 00 Reserved – Must be written with 0. RW $00 Immediately after a transfer is kicked off, CSR0R is examined and the CLE/ALE signals are set as required for the transfer. The GPFlash then counts TSU DCLKs before allowing the first read or write enable (REN/WEN) pulse. Table 134. GP FLASH Timing 1 Register Description 130 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 11.4.6. General Purpose Flash Timing 2 Register This register holds part of the timing values for specifying read or write cycles to or from an external NAND Flash when using the General Purpose Flash Controller. The GPFlash state machines drive the write enable signal low at the same time they drive new data onto the eight or sixteen bit data bus. Setup time for the flash device is guaranteed by holding the write enable low for a sufficient number of DCLKs. Flash device hold time is guaranteed after the write enable is returned to one by keeping the data bus value stable for a sufficient number of DCLKs. These counts are specified in the HW_GPFLASH_TIMING2R register. In addition, setup time for read data arriving back to the STMP35xx and its necessary hold time is also controlled in this register, see Figure 42. “GP Flash Read Timing” on page 119. HW_GPFLASH_TIMING2 X:$F0C5 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TDS 2 2 TDH 2 3 Table 135. HW_GPFLASH_TIMING2 BITS LABEL 23:14 RSRVD 13:8 TDH 7:6 5:0 RSRVD TDS RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 01 Number of DCLKS to hold off starting another write or read enable low sequence. In the case of writes, this keeps the data bus stable, as driven to the flash device. In the case of reads, this keeps the device driving the same data to the STMP35xx until its hold time is satisfied. TDH can not be set to a value of zero. R 00 Reserved – Must be written with 0. RW 01 Number of DCLKs to hold the write enable or read enable low. Can not be set to zero. Table 136. GP FLASH Timing 2 Register Description 11.4.7. General Purpose Flash TIMING BUSY Register This register holds part of the timing values for the General Purpose Flash Controller. Flash devices have a signal called ready/not busy that indicates when the device is busy erasing a block of NAND Flash, when it is programming new values into the NAND Flash array and in some cases, when it is reading the next page of data from the NAND Flash array. There are two ways to determine when the flash device is finished, i.e. no longer busy. One is to perform a device status read command. This is most reliable method across all flash devices. The second method is to monitor the state of the ready/not-busy line. The flash devices have open drain drivers with pull-ups on these signals so that not-BUSY can be wire ORed between all the devices. After the device is commanded to erase a block, the not-BUSY signal will be pulled low. When the block erase is complete, the flash device releases its driver and the signal is pulled up to indicate “READY” for the next operation. The STMP35xx has an interrupt based monitor circuit for this ready/not-busy signal. The not-busy signal is synchronized into the GP Flash interface controller and then both edges are detected. The HW_GPFLASH_CSR0R_BUSY_INT_STATUS bit indi- 5-35xx-D1-1.08-061705 131 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip cates the arrival of an edge on the ready/not-busy signal. This bit is “sticky”, so once it is set software must write a one to it to reset it. The HW_GPFLASH_CSR0R_BUSY_INT_TYPE field tells the busy monitor circuit which edge it should monitor. Thus software can choose to be interrupted when the device first goes busy or when it leaves the busy state. Not all devices report busy in robust manner, by design. In addition, broken devices may also fail to either go into the busy state or return from it or to even mark these transitions on the ready/notbusy signal. As a result, the busy monitor circuit includes a time out counter that will ultimately interrupt if the DSP on the BUSY interrupt, even if the device failed to do so. The number of DCLKs to wait for the device to go from busy to not busy is specified in the TWTO field below. It tracks the time from the fall of the not-busy signal. The field HW_GPFLASH_CSR0R_BUSY_TIMEOUT_EDGE can be used to start timing on the opposite edge. HW_GPFLASH_TIMINGBUSY X:$F0C6 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TWTO 2 3 Table 137. HW_GPFLASH_TIMINGBUSY BITS LABEL 23:18 RSRVD 17:0 TWTO RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $00001 Number of DCLKs to wait from the falling edge of ready/not-busy until a time-out should be reported. Table 138. GP FLASH Timing BUSY Register Description 132 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 11.4.8. General Purpose Flash Debug Register This register provides a read only path to view various state machines in the General Purpose Flash Controller. HW_GPFLASH_DEBUG X:$F0C7 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 RD_WR_STATE 2 1 DMA_STATE 2 2 CMD_STATE 2 3 Table 139. HW_GPFLASH_DEBUG BITS 23:11 10:8 7:4 3:0 LABEL RSRVD CMD_STATE DMA_STATE RD_WR_STATE RW RESET DEFINITION R $0000 Reserved – Must be written with 0. R Read only view of the Command State Machine R Read only view of the DMA State Machine R Read only view of the Read/Write State Machine. Table 140. GP FLASH Debug Register Description 11.4.9. General Purpose Flash Busy Timeout Counter Register This register provides a read only path to view the current value in the Busy Timeout Counter. This counter is preloaded from the HW_GPFLASH_TIMINGBUSYR register. It decrements to zero whenever HW_GPFLASH_CSR0R_BUSY_INT_ENA is set to one and the leading edge of the busy pulse has been encountered. If the trailing edge of the busy pulse is detected then the counter is reloaded form HW_GPFLASH_TIMINGBUSYR and no timeout will be reported. HW_GPFLASH_TWTOCNT X:$F0C8 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 COUNTER 2 3 Table 141. HW_GPFLASH_TWTOCNT BITS LABEL 23:18 RSRVD 17:0 COUNTER RW RESET DEFINITION R $0000 Reserved – Must be written with 0. R $00001 Read only view of the Busy Timeout Counter Table 142. GP FLASH Busy Timeout Counter Register Description 5-35xx-D1-1.08-061705 133 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12. FLASH ECC ACCELERATOR The FLASH ECC Accelerator provides a forward error correction function for improving the reliability of various storage media that can be attached to the STMP35xx. Modern high density NAND Flash devices, for example, presume the existence of forward error correction algorithms. This allows much higher yield and therefore lower cost storage devices by allowing some soft or hard bit errors within the bits of a flash page. The FLASH ECC block comprises two forward error correction algorithms, one based on the Samsung SSFDC hamming code algorithm for single bit error correction and a second, more robust, algorithm for multi-bit error correction Reed-Solomon block codes, see Figure 49. Having a DMA based hardware accelerator for this function allows the DSP to focus on more signal processing algorithms for enhanced functionality or to operate at lower clock frequencies and voltages for improved battery life. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS FLASH ECC Programmable Registers FLASH ECC DMA Engine Reed-Solomon ECC Engine Syndrome Calculation Key Equation Solver SSFDC Hamming ECC Engine 1-bit Hamming Encoder 1-bit Hamming Decoder Chien Search Forney Evaluator Figure 49. FLASH ECC ACCELERATOR ENGINES The 1-bit hamming ECC algorithm, as defined by Samsung, is for use with all SSFDC compliant NAND Flash memories. The error coding is capable of correcting a single bit in error over a 256 byte (2048 bit) data block. It generates a 3 byte parity field which is stored in the spare area at the end of a flash page. The Reed-Solomon algorithm is capable of correcting up to 4 9-bit symbols in a 512 byte block. Thus up to 36 bits in error can be corrected in a 512 byte block, provided they are clustered 134 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip within no more than four 9 bit symbols. This algorithm generates 9 bytes (8 symbols) of error code or parity (sometimes called syndromes) per 512 byte block. The parity bytes are stored in the spare area at the end of each NAND Flash page. The Reed-Solomon algorithm takes a significantly larger number of cycles to correct an error than the SSFDC Hamming algorithm but can correct more errors per page. In either case, the DSP is not directly involved in checking for the errors nor is it directly involved in correcting errors that may be found. 12.1. Reed-Solomon ECC Accelerator Consider the case where there is a 512 byte data block located in the on-chip RAM that needs to be written to a NAND Flash device. Further, assume that a 9 byte Reed-Solomon parity field is to be written into the 16 byte spare area of the 528 byte NAND Flash page. 528 byte NAND Flash Page HW_ECC_BLKSTRTADDR_ADDR HW_ECC_BLKSTRTINDEX_INDEX 16 Byte Spare Area 512 Byte Data Area DATA 455 1/9 Data Symbols (9-bit) 47 8/9 Zero Pad Symbols 8 Parity Symbols 503 Symbol Polynomial Dividend 511 Symbol Reed-Solomon Block Code Galois Field Polynomial Divider HW_ECC_PARSTRTADDR_ADDR HW_ECC_PARSTRINDEX_INDEX 512 Byte Data Area DATA 8 Parity Symbol Remainder 16 Byte Spare Area 9 Byte Parity Figure 50. FLASH ECC Reed-Solomon Block Coding- Encoder 5-35xx-D1-1.08-061705 135 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Assume that the GPFLASH module will be used to write the resultant 521 bytes of data and parity from on-chip memory to the NAND Flash device. The FLASH ECC module HW_ECC_BLKSTRTADDR register is used to point to the data block in onchip RAM, see Figure 50. “FLASH ECC Reed-Solomon Block Coding- Encoder” on page 135. The Reed-Solomon (RS) algorithm uses 9 bit symbols. Thus a 512 byte data block encompasses 455 1/9 symbols. As the data is read from on-chip RAM, the hardware appends 47 8/9 zero pad symbols to form the basic 511 symbol RS block. This block is treated as a large polynomial and is divided by the hardware using the mathematics of Galois Fields1. The hardware retains the 8 symbol (72 bits or 9 bytes) remainder from this division which it then stores as the parity for the block. The parity is stored into on-chip RAM at the address specified in HW_ECC_PARSTRTADDR. The GPFLASH DMA can then be started to copy the 521 bytes to the NAND Flash device. Of course, both units can be fully overlapped. Note that there is an HW_ECC_BLKSTRTINDEX register and an HW_ECC_PARSTRTINDEX register which allows the data symbols and parity symbols to start on arbitrary bit boundaries within a 24 bit on-chip RAM word. The RS encoder flowchart shows the detailed steps involved in programming and using the FLASH ECC’s Reed-Solomon encoder, see Figure 51. “FLASH ECC Reed-Solomon Encode Flowchart” on page 137. To use the encoder, one must first turn off the module wide soft reset bit. One then programs the control status register 0 to select the Reed-Solomon encode algorithm, to remove the encoder reset, to enable an interrupt to signal completion of the encode stage, and to specify the DMA wait cycle count. Since the FLASH ECC is a memory to memory DMA device, its DMA utilization is nominally limited only by the encoder’s demand for data. This natural limit may utilize too much DMA bus bandwidth over its command time. As a result, the HW_ECC_CSR0_DMAWAIT bit field can specify additional wait cycles to insert between the DMA cycle requests to reduce the FLASH ECC’s short term utilization. The block start address/index values are next set to point to the data block in onchip RAM that is to be encoded. The parity start address/index values are set to point to the on-chip RAM buffer that will hold the nine generated bytes until they are written to Flash. Any previous Done Interrupt status is cleared by writing a one to the interrupt bit and the KICK bit is set to one. Software can then poll the KICK bit waiting for it to return to zero, however, this typically takes hundreds of clock cycles. To get full overlap of the DSP and the FLASH ECC module, one uses the “done” interrupt which vectors to $0062, source bit 29. When this interrupt is received, the GPFLASH module can be scheduled to write the entire page to the NAND Flash device. 1.Oliver Pretzel, “Error-Correction Codes and Finite Fields,” Oxford Univ. Press, 1992 ISBN 0-19-269067-1. 136 5-35xx-D1-1.08-061705 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip FLASH ECC ENCODE HW _ECC_CSR0_SFTRST = 0 HW _ECC_CSR0_ECCSEL = 2 HW _ECC_CSR0_DMAW AIT = n HW _ECC_CSR0_DONEINTEN =1 HW _ECC_RSCFG_ENCSFTRST = 0 HW _ECC_RSCFG_BLOCKSIZE = 456 HW _ECC_RSCFG_BYTEN = (((# data bytes)*8 % 9) !=0) # wait states between DMA transfers NOT "even" bit boundary Data block read from here HW _ECC_BLKSTRTADDR_ADDR = word address of data block HW _ECC_BLKSTRINDEX_INDEX = starting bit in word parity results written here HW _ECC_PARSTRTADDR_ADDR = word address of parity block HW _ECC_PARSTRINDEX_INDEX = starting bit in word force interrupt bit to zero HW _ECC_CSR1_DONEINT = 1 HW _ECC_CSR0_KICK = 1 YES HW _ECC_CSR0_ KICK==1 wait for Reed-Solomon Encode or return and wait for done interrupt NO STOP FLASH ECC DONEINT clear DONEINT HW _ECC_CSR1_DONEINT = 1 STOP Figure 51. FLASH ECC Reed-Solomon Encode Flowchart 5-35xx-D1-1.08-061705 137 OFF ICI AL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip When a page is read from NAND Flash, its RS parity must be checked and if correctable errors are found they must be corrected. This decoding process can also be fully overlapped with DSP execution, see Figure 52. “FLASH ECC ReedSolomon Block Coding- Decoding Phase 1” on page 138. Notice that in this case, both the block start/index registers and the parity start/index registers point into the on-chip RAM buffers where bytes were read from the NAND Flash device. The decoder can be initialized to read the data block, append the zero pad and perform the polynomial division, this time with the supplied parity bytes. If the resulting division yields a zero remainder then no errors are present and the FLASH ECC block can immediately report via its “done” interrupt. If the remainder was non-zero then it further examines the syndrome bytes to correct any errors that may be present, if possible. 528 byte NAND Flash Page HW_ECC_BLKSTRTADDR_ADDR HW_ECC_BLKSTRTINDEX_INDEX HW_ECC_PARSTRTADDR_ADDR HW_ECC_PARSTRINDEX_INDEX 16 Byte Spare Area 512 Byte Data Area 9 Byte Parity DATA 455 1/9 Data Symbols (9-bit) 47 8/9 Zero Pad Symbols 8 Parity Symbols 503 Symbol Polynomial Dividend 511 Symbol Reed-Solomon Block Code 8 SYNDROMES 8 Parity Symbol Remainder Galois Field Polynomial Divider OK == 0? Y N ERROR! Figure 52. FLASH ECC Reed-Solomon Block Coding- Decoding Phase 1 The RS decoder processes the 511 symbol block code in three phases. Not all of the phases may be necessary, for example when no errors are found or when uncorrectable errors are found. The three phases are: 138 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 1. Syndrome Calculation Phase (SC): This is the process of reading in all of the symbols of the block and continuously dividing by the generator polynomial for the field. The eight syndromes are calculated as the remainder of this division and must examined, as described above. This phase takes approximately 700 cycles for a 512 byte data block, with no planned DMA wait states added. 2. Key Equation Solver Phase (KES): Once the eight syndromes have been calculated, a set of eight linear equations in eight unknowns is formed. The process of solving these equations and selecting from the numerous possible solutions constitutes the KES phase. The partial solution is obtained by dividing a polynomial based on the syndromes by a Euclidian polynomial. This division, again using the mathematics of Galois Fields, yields two polynomials, the Error Evaluator (EE) polynomial and the Error Locator (EL) polynomial. The EE polynomial is the remainder of this division and is zero if an uncorrectable, i.e nonsolvable case exists. The hardware terminates with an uncorrectable error in this case. This phase takes up to 560 DCLKs, with no planned DMA wait states added. 3. Chien Search and Forney Evaluator Phase (EVAL): This phase takes the EEand EL polynomials from the KES phase and uses Chien’s algorithm for finding the locations of the errors based on the EE-polynomial. The method basically involves substituting all 512 9-bit symbols into the EE-polynomial. All non-zero results of these substitutions represent the locations of the various errors. Another GF division is performed at this point to determine the error value or the correction to apply at the symbol in error location. This phase consumes approximately 550 DCLKs, with no planned DMA wait states added. The EVAL phase terminates either with an uncorrectable error interrupt or simply a “done” interrupt. Done is reported in either case. The flowchart shows that the initialization of the decoder is quite similar to that for the encoder, see Figure 53. “FLASH ECC Reed-Solomon Decode Flowchart” on page 140. Basic differences are setting ECCSEL to 3 for RS decode and turning off the decoder soft reset instead of the encoder soft reset. There are a few critical differences, however, first one also enables the uncorrectable error interrupt. In addition one sets the auto correct bit in the RS configuration register. This setting is important because the FLASH ECC module state machines have several stall states, notably at each phase boundary. If the autocorrect bit is not set and errors are detected then the decoder will stall at the end of the SC phase, set the ErrInt bit and wait for it to be cleared. A similar stall occurs at the end of the KES phase. Finally, within the EVAL phase, it will stall as each error location is computed so that the location can be verified. For normal operation, these stalls are bypassed by setting the autocorrect bit. Finally, one should note that the data buffer pointed to by the block start address/index registers and the parity buffer pointed to by the parity start address/index registers will be read for the purposes of detecting and locating errors and will be written to correct up to four symbols in error. Note that correctable errors in the parity storage will be modified as needed. The kick operation and done interrupt ISR invocation work as in the encoder case. Note that for the decoder, the ISR must monitor the uncorrectable error status bit to determine that a good data buffer resulted from the decode operation. If uncorrectable errors occurred, it is up to software to determine how to deal with a bad block. One strategy might be to re-read the data from NAND Flash in the hope that enough soft errors will have been removed to make correction successful on a second pass. 5-35xx-D1-1.08-061705 139 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip FLASH EC C D EC O D E H W _EC C _C SR 0_SFT R ST = 0 H W _EC C _C SR 0_EC C SEL = 3 H W _EC C _C SR 0_D M AW AIT = n H W _EC C _C SR 0_U N C O R R IN T EN = 1 H W _EC C _C SR 0_D O N EIN T EN =1 H W _EC C _C SR 0_AU T O C O R R = 1 H W _EC C _R SC FG _D EC SFT R ST = 0 H W _EC C _R SC FG _BLO C KSIZE = 456H W _EC C _R SC FG _BYT EN = (((# data bytes)*8 % 9) ! =0) # wait states between D M A transfers N O T "even" bit boundary D ata block read from here and possibly corrected here H W _EC C _BLKST R T AD D R _AD D R = word address of data block H W _EC C _BLKST R IN D EX_IN D EX = starting bit in word H W _EC C _PAR ST R T AD D R _AD D R = word address of parity block parity bytes read from here and possibly corrected here H W _EC C _PAR ST R IN D EX_IN D EX = starting bit in word FLASH EC C D O N EIN T H W _EC C _C SR 1_U N C O R R IN T = 1 H W _EC C _C SR 1_D O N EIN T = 1 force interrupt bits to zero clear D O N EIN T H W _EC C _C SR 0_KIC K = 1 H W _EC C _C SR 1 _D O N EIN T = 1 YES H W _EC C _C SR 1_ U N C O R R IN T ==1 wait for R eed-Solom on D ecode or return and wait for done or uncorrectable error interrupt H W _EC C _C SR 0_ KIC K==1 NO ST O P ST O P clear U N C O R R IN T H W _EC C _C SR 1_U N C O R R IN T = 1 D eal with U ncorrectable Page from Flash ST O P Figure 53. FLASH ECC Reed-Solomon Decode Flowchart 140 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.2. SSFDC Hamming ECC Accelerator Consider the case where a 1Gbit large block NAND Flash device is attached to the STMP35xx. These devices have pages with 2048 bytes of data and 64 bytes of spare area. The Hamming code accelerator is designed to work on exactly 256 byte blocks. Therefore, one must treat the NAND Flash page as eight 256 byte blocks, computing eight separate three byte parity codes to cover the entire NAND Flash page as shown in Figure 54. This figure shows the computation of one 256 byte block parity out of the eight blocks needed. 2112 byte NAND Flash Page HW_ECC_BLKSTRTADDR_ADDR HW_ECC_BLKSTRTINDEX_INDEX HW_ECC_PARSTRTADDR_ADDR HW_ECC_PARSTRINDEX_INDEX 64 byte spare 2048 Byte Data Area 256 byte Data 256 byte Data 256 byte Data 256 byte Data 3 Byte Parity 256 Byte Data Block 22 bit parity Generator 3 Byte Parity Figure 54. FLASH ECC SSFDC Encode Operation As in the Reed-Solomon case, the HW_ECC_BLKSTRTADDR and HW_ECC_BLKSTRTINDEX registers are set to point to the beginning of the desired data block in on-chip RAM. The parity start address and index registers are set to point to the three byte buffer in on-chip RAM that will receive the generated parity bytes. When started, the DMA will fetch all 256 bytes from on-chip RAM and accumulate the appropriate 22 bit Hamming code for this fixed block size. The DMA will then write these bytes to the on-chip RAM. Assume that the GPFLASH module will be used to write the results to the NAND Flash device in an overlapped fashion. While several options exists, the best compromise between buffer size and organization is to combine two 256 byte blocks as a unit and generate 6 bytes of parity. These can then be written to NAND Flash as a 512 byte data block followed immediately by a 16 byte spare area into which 6 bytes of parity are copied. With this scheme good overlap is established between the GPFLASH module and the ECC module while using only 2 X 518 byte buffers. 5-35xx-D1-1.08-061705 141 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The encoder flow chart for the SSFDC looks similar to and behaves like the ReedSolomon encoder. The differences are that the ECCSEL is set to zero for SSFDC encode and the SSFDC soft reset bit is turned off in the HW_ECC_SSFDCCFG register. FLASH ECC SSFDC ENCODE HW_ECC_CSR0_SFTRST = 0 HW_ECC_CSR0_ECCSEL = 0 HW_ECC_CSR0_DMAWAIT = n HW_ECC_CSR0_DONEINTEN =1 # wait states between DMA transfers HW_ECC_SSFDCCFG_SFTRST=0 Data block read from here HW_ECC_BLKSTRTADDR_ADDR = word address of data block HW_ECC_BLKSTRINDEX_INDEX = starting bit in word parity results written here HW_ECC_PARSTRTADDR_ADDR = word address of parity block HW_ECC_PARSTRINDEX_INDEX = starting bit in word HW_ECC_CSR1_DONEINT = 1 force interrupt bit to zero HW_ECC_CSR0_KICK = 1 YES HW_ECC_CSR0_ KICK==1 wait for SSFDC Hamming Encode or return and wait for done interrupt NO STOP FLASH ECC DONEINT clear DONEINT HW_ECC_CSR1_DONEINT = 1 STOP start next block or start GPFLASH Figure 55. FLASH ECC SSFDC Encode Flowchart The ECC module knows that it will write three bytes of parity instead of nine. The other difference is that software will set up the block start address and parity start address for 256 byte buffers instead of 512 byte as in the Reed-Solomon case. The ECC module takes 266 dclks to encode a 256 byte block. When a page is read from NAND Flash, its SSFDC hamming code parity must also be read from the NAND Flash device. Each 256 byte block must be checked for errors and if a correctable error is found it must be corrected, either in the 256 byte 142 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip data portion or the 3 byte parity portion. This decoding process can also be fully overlapped with the NAND Flash transfers, as shown in Figure 56. 2112 byte NAND Flash Page HW_ECC_BLKSTRTADDR_ADDR HW_ECC_BLKSTRTINDEX_INDEX HW_ECC_PARSTRTADDR_ADDR HW_ECC_PARSTRINDEX_INDEX 64 byte spare 2048 Byte Data Area 256 byte Data 256 byte Data 256 byte Data 256 Byte Data Block 256 byte Data 3 Byte Parity 3 Byte Parity 22 bit parity Generate & single bit error correct Figure 56. FLASH ECC SSFDC Decode Operation Notice that in this case, the block start and the parity start address/index registers are set to point into the on-chip RAM buffers which received the bytes from the NAND Flash device. The decoder reads the data bytes and computes a new 22 bit parity value. It then reads the stored parity bytes and computes an error syndrome value by XORing the two parity values. If all 22 bits of this error syndrome are zero then no errors are present. Otherwise the bits are examined to determine whether a single bit is in error. If not then an uncorrectable error interrupt is generated and further processing is terminated. For a single bit error, if the auto correct bit is set then the bit is corrected and a done interrupt is generated. The decoder takes approximately 266 DCLKs to complete, with or without error correction, provided no DMA WAIT cycles were added. The SSFDC decoder flow chart of Figure 57 is very similar to the Reed-Solomon decoder flow chart. The major difference is setting the ECC SEL field to one for SSFDC decode. In addition, the SSFDC configuration register soft reset bit is reset. 5-35xx-D1-1.08-061705 143 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip FLASH ECC DECODE HW_ECC_CSR0_SFTRST = 0 HW_ECC_CSR0_ECCSEL = 1 HW_ECC_CSR0_DMAWAIT = n HW_ECC_CSR0_UNCORRINTEN = 1 HW_ECC_CSR0_DONEINTEN =1 HW_ECC_CSR0_AUTOCORR = 1 # wait states between DMA transfers Data block read from here and possibly corrected here HW_ECC_SSFDCCFG_SFTRST=0 HW_ECC_BLKSTRTADDR_ADDR = word address of data block HW_ECC_BLKSTRINDEX_INDEX = starting bit in word HW_ECC_PARSTRTADDR_ADDR = word address of parity block parity bytes read from here and possibly corrected here HW_ECC_PARSTRINDEX_INDEX = starting bit in word FLASH ECC DONEINT HW_ECC_CSR1_UNCORRINT = 1 HW_ECC_CSR1_DONEINT = 1 force interrupt bits to zero clear DONEINT HW_ECC_CSR0_KICK = 1 HW_ECC_CSR1 _DONEINT = 1 YES HW_ECC_CSR1_ UNCORRINT==1 wait for SSFDC Hamming Decode or return and wait for done or uncorrectable error interrupt HW_ECC_CSR0_ KICK==1 YES NO NO STOP STOP clear UNCORRINT HW_ECC_CSR1_UNCORRINT = 1 STOP Deal with Uncorrectable Page from Flash Figure 57. FLASH ECC SSFDC Decode Flowchart 144 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3. FLASH ECC Programmable Registers The following registers are available for DSP programmer access and control of the FLASH ECC accelerator. 12.3.1. Flash ECC Control/Status Register 0 This register provides overall control of the FLASH ECC accelerator for transaction and interrupts. 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ECCKICK 1 6 AUTOCORR 1 7 DONEINTEN 1 8 KESINTEN 1 9 CORRINTEN 2 0 UNCORRINTEN 2 1 ERRINTEN 2 2 ECCSEL SFTRST 2 3 X:$F780 DMAWAIT HW_ECC_CSR0 Table 143. HW_ECC_CSR0 BITS LABEL 23 SFTRST 22:18 RSRVD 17:16 ECCSEL 15:12 DMAWAIT 11:9 8 RSRVD ERRINTEN 7 UNCORRINTEN 6 CORRINTEN 5 KESINTEN 4 DONEINTEN 3:2 1 0 RSRVD AUTOCORR ECCKICK RW RESET DEFINITION RW 1 Set to one for software reset and low-power mode. Set to zero for normal operation. R $0 Reserved – Must be written with 0. RW 00 Select and enable desired ECC mode; 00 = HW_ECC_SSFDC_ENCODE 01 = HW_ECC_SSFDC_DECODE 10 = HW_ECC_RS_ENCODE 11 = HW_ECC_RS_DECODE RW 0000 DMA Wait States - Specifies the number of cycles the ECC DMA will wait between consecutive memory cycle requests. R $0 Reserved – Must be written with 0. RW 0 Error Interrupt Enable - Set to one to enable the ECC to generate an interrupt when errors are detected in the current codeword. RW 0 Set the uncorrectable interrupt enable bit to one to enable the ECC to generate an interrupt when an uncorrectable error situation is found and that further processing is not possible. RW 0 Set the correctable interrupt enable bit to one to enable the generation of interrupts when a set of correctable errors is found. The interrupt (and stall if AUTOCORR is not set) is generated before initiating the corrections. RW 0 Set the key equation interrupt enable bit to one to enable the generation of an interrupt once KES processing is complete. RW 0 Set the done interrupt enable bit to one to enable the generation of interrupts when processing is complete. R $0 Reserved – Must be written with 0. RW 0 Allow the ECC to automatically correct any correctable errors. RW 0 Set to one to start processing the currently configured block. This bit will automatically reset to zero when processing is complete. Table 144. FLASH ECC Control/Status Register 0 Description 5-35xx-D1-1.08-061705 145 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3.2. Flash ECC RS Configuration Register This register provides configuration control for the various phases of the ReedSolomon encoder/decoder. 2 1 2 0 DECSFTRST RSCFGERR BYTEEN 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SYMBOLSIZE 2 2 X:$F782 BLOCKSIZE 2 3 ENCSFTRST HW_ECC_RSCFG Table 145. HW_ECC_RSCFG BITS LABEL 23 ENCSFTRST 22 DECSFTRST 21 RSCFGERR 20 BYTEEN 19:13 RSRVD 12:4 BLOCKSIZE 3:0 SYMBOLSIZE RW RESET DEFINITION RW 1 Software reset and low-power mode for the RS-Encoder. Must be set to zero for normal operation of the encoder. RW 1 Software reset and low-power mode for the RS-Decoder. Must be set to zero for normal operation of the decoder. R 0 When the RS configuration error bit reads back a value of one, it indicates that an invalid combination of block size and symbol size has been written to the BLOCKSIZE field. RW 1 The RS encode/decode engine works on 9-bit symbols. The DMA behavior must be different if the last symbol perfectly aligns with the last word boundary. Let N equal the number of data bytes to transfer, if ((N*8)%9) is not zero then set BYTEEN to one. R 0 Reserved – Must be written with 0. RW $1C8 The RS algorithm always implements a block code of 511 RS symbols, however, the programmer can choose to compute a 9 byte parity value for a source block smaller than 512 bytes. If 256 bytes are chosen, for example, then set this field to 228. The hardware will simply increase the number of zero pad bytes as appropriate. R $9 This read only value indicates the symbol size for which the hardware was designed. Table 146. FLASH RS Configuration Register Description 146 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3.3. Flash ECC Control/Status Register 1 This register provides a continuation of control bits for the FLASH ECC module. 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 DONEINT 1 8 KESINT 1 9 CORRINT 2 0 UNCORRINT 2 1 ERRINT 2 2 ECCERROR 2 3 X:$F781 ECCEXCEPTION HW_ECC_CSR1 0 3 0 2 0 1 0 0 Table 147. HW_ECC_CSR1 BITS LABEL 23:19 RSRVD 18:16 ECCERRORS 15:12 ECCEXCEPTION 11:9 8 RSRVD ERRINT 7 UNCORRINT 6 CORRINT 5 KESINT 4 DONEINT 3:0 RSRVD RW RESET DEFINITION R 0 Reserved – Must be written with 0. R $0 Number of errors detected/corrected. See ECCEXCEPTION field for details on uncorrectable errors. R 0000 Reason for termination of algorithm or uncorrectable error: 0: no exceptions 1: RS --> degree of “lambda” exceeds 4 2: RS --> “lambda” == all zeroes 4: RS --> degree of “lambda”!= number of roots of “lambda”, i.e. duplicate roots indicated. 8: SSFDC --> More than 1 Error. R 0 Reserved – Must be written with 0. RW 0 When set to one, the error interrupt status bit indicates that the current block contains errors and further processing is needed to determine correctability. This indicates that the syndrome computation is complete and the result is non-zero, i.e. indicating errors are present. Write a one to this bit to clear it. RW 0 When set to one, the uncorrectable error interrupt status bit indicates that uncorrectable errors have been detected in the most recently processed block. If this interrupt is enabled, processing will stop until this bit is cleared. Write a one to this bit to clear it. RW 0 When set to one, the Correctable errors interrupt status bit indicates that a correctable error has been detected. Processing will stop when this bit is set until it is cleared. It will become valid each time the Chien Search module finds an error location. This can happen no more than 4 times per block. Write a one to this bit to clear it. RW 0 When set to one, the Key Equation Solver interrupt status bit indicates that the KES module has completed processing and a solution is available. Write a one to this bit to clear it. RW 0 When set to one, the done interrupt status bit indicates that the current block has been processed and all errors are identified and corrected. Write a one to this bit clear it. R 0 Reserved – Must be written with 0. Table 148. FLASH ECC Control/Status Register 1 Description 5-35xx-D1-1.08-061705 147 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3.4. Flash ECC SSFDC ECC Configuration Register This register provides configuration control for the SSFDC encoder and decoder. HW_ECC_SSFDCCFG X:$F783 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SYM;BOLSIZE 2 1 BLOCKSIZE 2 2 SFTRST 2 3 Table 149. HW_ECC_SSFDCCFG BITS LABEL 23 SFTRST RW RESET DEFINITION RW 1 Software reset and low-power mode for SSFDC. Common reset for both encode and decode functions. R 0 Reserved – Must be written with 0. R $100 Only block size 256 ($100) is supported. R $8 Only symbols size 8 is supported. 22:13 RSRVD 12:4 BLOCKSIZE 3:0 SYMBOLSIZE Table 150. FLASH ECC SSFDC Configuration Register Description 12.3.5. Flash ECC Block Start Address Register This register provides a pointer into on-chip RAM to the first byte of the data block. HW_ECC_BLKSTRTADDR X:$F784 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADDR 2 3 Table 151. HW_ECC_BLKSTRTADDR • BITS LABEL 23:16 RSRVD 15:0 ADDR RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $0000 Start address for the data block. Table 152. FLASH Block Start Address Register Description 148 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3.6. Flash ECC Block Start Index Register This register provides the starting bit offset into the first 24 bit word pointed to by HW_ECC_BLKSTRTADDR. This register also specifies the memory space that contains the data block. HW_ECC_BLKSTRTINDEX X:$F785 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 INDEX MEMSPACE 2 3 Table 153. HW_ECC_BLKSTRTINDEX BITS LABEL 23:10 RSRVD 9:8 MEMSPACE 7:5 4:0 RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 00 Memory space in which the data block is stored. 00 = X-Memory 01 = Y-Memory 10 = P-Memory R 0 Reserved – Must be written with 0. RW 00000 Bit index into the 24-bit memory word where the 1st symbol occurs in the data block. RSRVD INDEX Table 154. FLASH ECC Block Start Index Register Description 12.3.7. Flash ECC Parity Start Address Register This register provides a pointer into on-chip RAM for the buffer containing the parity bytes. HW_ECC_PARSTRTADDR X:$F786 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADDR 2 3 Table 155. HW_ECC_PARSTRTADDR BITS LABEL 23:16 RSRVD 15:0 ADDR RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $000 Start address for the parity storage buffer. Table 156. FLASH ECC Parity Start Address Register Description 12.3.8. 5-35xx-D1-1.08-061705 Flash ECC Parity Start Index Register 149 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip This register provides the starting bit offset into the first 24 bit word pointed to by HW_ECC_PARSTRTADDR. This register also specifies the memory space that contains the parity storage block. HW_ECC_PARSTRTINDEX X:$F787 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 0 1 0 0 INDEX MEMSPACE 2 3 Table 157. HW_ECC_PARSTRTINDEX BITS LABEL 23:10 RSRVD 9:8 MEMSPACE 7:5 4:0 RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 00 Memory space in which the parity is stored. 00 = X-Memory 01 = Y-Memory 10 = P-Memory R 0 Reserved – Must be written with 0. RW 00000 Bit index into the 24-bit memory word where the 1st symbol occurs in the data block. RSRVD INDEX Table 158. FLASH ECC Parity Start Index Register Description 12.3.9. Flash ECC Error Location Address Register This register provides a read only view of the location of an error. HW_ECC_LOCADDR X:$F788 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 ADDR 2 3 Table 159. HW_ECC_LOCADDR BITS LABEL 23:16 RSRVD 15:0 ADDR RW RESET DEFINITION R 0 Reserved – Must be written with 0. R $0000 Word address of the error. This field is only valid while the Corrint status bit is set. Table 160. FLASH ECC Error Location Address Register Description 150 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3.10. Flash ECC Error Location Index Register This register provides a read only view of the memory space indicator and bit index for the error that is currently being reported. HW_ECC_LOCINDEX X:$F789 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 INDEX 2 2 MEMSPACE 2 3 Table 161. HW_ECC_LOCINDEX BITS LABEL 23:10 RSRVD 9:8 MEMSPACE 7:5 4:0 RSRVD INDEX RW RESET DEFINITION R 0 Reserved – Must be written with 0. R 00 Memory space for the error. This field is only valid while the Corrint status bit is set. 00 = X-Memory 01 = Y-Memory 10 = P-Memory R 0 Reserved – Must be written with 0. R 0000 Contains the bit index into the 24-bit memory word where the 1st bit of the erroneous symbol occurs. This can either be a 9-bit RS symbol or a 1-bit SSFDC symbol. This field is only valid while the Corrint status bit is set. Table 162. FLASH ECC Error Location Index Register Description 5-35xx-D1-1.08-061705 151 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 12.3.11. Flash ECC Error Value Register This register provides a read only view of the ECC error value to be used to correct a symbol in error. 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 BLOCKLOC 2 3 X:$F78A 0 5 0 4 0 3 0 2 0 1 0 0 ERRORVALUE HW_ECC_ERRVAL Table 163. HW_ECC_ERRVAL BITS LABEL 23:21 RSRVD 20:12 BLOCKLOC 11:9 8:0 RSRVD ERRORVALUE RW RESET DEFINITION R 0 Reserved – Must be written with 0. R $000 Block location of an Error Value. Provides the location within the data block or parity block where the error is located. To be used in of Search/Replace function of Chien search module. This field is only valid when the Corrint field is set. R 0 Reserved – Must be written with 0. R $000 The Error Value is the 9-bit value to be XORed with the existing data at the Error Location. For SSFDC data, only the LSB should be used to correct the single-bit error. This field is only valid when the Corrint field is set. Table 164. FLASH ECC Error Value Register Description 12.4. Known Chip Defects with ECC block 12.4.1. Clear Quest Entry STMP00004063 All revisions of the chip are known to incorrectly handle the erased block case. The software ECC code for an erased block of Flash memory doesn't match the code that the HWECC block calculates for the same block. In the C program there is a final inversion of the ECC code that is not being done in our HW engine. There is a software workaround proposed by CV as follows: The 3500 hardware SSFDC ECC needs a couple of extra operations to get it to match the standard software SSFDC ECC algorithm: 1) Do the 3500 hardware ECC generation 2) Clear ecc bits 16 and 17. 3) Invert all 24 ecc bits. To do the 3500 SSFDC ECC correction requires the following: 152 1) Invert all 24 ecc bits 2) Set ecc bits 16 and 17 3) Do the 3500 hardware ECC correction 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 4) Clear ecc bits 16 and 17 5) Invert all 24 ecc bits Users might not need to do steps 2 and 4 as bits 16 and 17 are constant and are not used to do error correction. 5-35xx-D1-1.08-061705 153 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13. FILTER COPROCESSOR (FILCO) Previous generations of the D-MajorTM family used a significant amount of processor time to perform basic FIR filtering. The DAC output flow requires a 2:1 interpolating FIR filter on the stereo pairs to upsample the audio, see Section 24. “DAC” on page 276. The ADC flow requires an 8:1 decimating FIR filter on the stereo pairs to downsample the audio stream and to derive the appropriate quantization, see Section 25. “ADC” on page 286. In addition, a multi-band equalizer utilizes a number of bi-quadratic IIR filters to adjust the various bands. All of these activities made extensive use of the DSP’s multiply accumulate features. The STMP35xx filter coprocessor (FILCO) is used to off load significant amount of very standard signal processing operations from the DSP. The reduction in DSP overhead yields more available MIPS for additional software. This reduction in DSP workload can also be used to lower the DCLK and in some cases reduce operating voltages to greatly extend battery life. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS FILCO Programmable Registers FILCO DMA Engine & Control Accumulators (8x56) + Coefficient RegFile (8x24) 56-bit 24x24 MAC Sample RegFile (6x24) Figure 58. Filter Coprocessor (FILCO) Figure 58 shows the high level block diagram for the FILCO. The FILCO is essentially a MAC engine that is directly fed from a DMA engine. To perform a simple 8tap FIR, for example, the DMA is pointed at a 44.1KHz stereo sample buffer to be FIR low pass filtered. These samples are fetched via DMA cycles into the 24 bit wide Sample Register File. The eight coefficients are fetched into the coefficient register file, as needed. The accumulator register file holds the intermediate summa154 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip tions for the multiply accumulates that are occurring for both the left channel output samples and the right channel output samples, as shown in Figure 59, below. HW_FILCO_WCNT HW_FILCO_CBAR HW_FILCO_SBAR HW_FILCO_TAPCNT HW_FILCO_SMR Coeff0 Coeff1 Coeff2 Coeff3 Coeff4 Coeff5 Coeff6 Coeff7 # Coeff HW_FILCO_DBAR HW_FILCO_DMR # samples in buffer ACCUMULATORS MAC SAMPLE REGFILE COEFF. REGFILE DMA Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 # Out Samples in Buffer # Out Samples to Process Figure 59. FILCO FIR EXAMPLE In setting up this simple example, we set HW_FILCO_DBAR to point to the stereo input buffer and set the HW_FILCO_DMR modulo register to the number of words (not word pairs) in the input buffer. We set the HW_FILCO_CBAR base address register to point the buffer containing the eight coefficients to be used for this filter and we set HW_FILCO_TAPCNT tap count register to a value of eight. Next we set the HW_FILCO_SBAR output sample base address register to point to the circular buffer to receive the filtered output. We set the HW_FILCO_SMR sample modulo register to the number of words in the output buffer. Next we set the HW_FILCO_WCNT word count register to the number of output sample words to produce for the next DMA KICK. Notice that we can schedule much fewer words than the entire output circular buffer for each DMA KICK, (technically we could also schedule more). Once these basics are completed along with other more detailed 5-35xx-D1-1.08-061705 155 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip control register settings we can KICK the DMA and cause the FIR output samples to be computed without further DSP involvement. As the FILCO processes this operation, it reads a set of 8 left channel inputs and multiply accumulates them with their corresponding coefficients to produce the first left output sample. It then reads eight right channel samples and performs the coefficient MACs to produce the first right output sample. This process goes on until all the desired output samples have been generated at which time the KICK bit is reset and an interrupt is generated to the DSP. See the discussion below which describes the FILCOS use of all six sample registers, all eight coefficient registers and all eight accumulator registers to make this process much more parallel and efficient. In essence, the FILCO can sustain a rate of one MAC per DCLK indefinitely without saturating the DMA bus (it uses approximately 66% of the bus bandwidth at full speed). DSP applications rarely exceed 25% MAC utilizations over long time periods. Thus a significantly more powerful signal processing capability is available for a few specific algorithms, namely FIR and bi-quadratic IIR stereo filters. 13.1. FIR FILTER MODE Typical DSPs are Harvard architectures with multiple memory banks, e.g. the 56K DSP has a P memory for instructions and X and Y memory for simultaneous access to coefficients and samples. For normal multiply accumulate instructions, the DSP simultaneously reads the next sample and coefficient values from X and Y memories. It then performs a 24 bit by 24 bit multiply and adds the result to a 56 bit accumulator. This allows the 56K DSP to execute a MAC every clock. For the specific algorithms supported by the FILCO, very simple but effective data reuse strategies exist. Consider the basic equation of an FIR filter as it would be executed for one FILCO KICK as shown here. ∀j, ( j ∈ { 0… ( S – 1 ) } ), Accumulator j= T–1 ∑ ai + j × ci (for left channel) i=0 ∀j, ( j ∈ { 0… ( S – 1 ) } ), Accumulator j= T–1 ∑ bi + j × ci (for right channel) i=0 In these equations, T is the number of taps and S is the number of output samples to be computed for a single FILCO KICK. If one examines the partial computation in the middle of processing a pair of FIRs, one for each stereo channel, one sees the computations depicted in Figure 60. Thus the opportunity exists to compute four separate output sample results for the left channel and another four separate output sample results for the right channel. Each of these partial results is accumulated in one of the eight accumulators in the accumulator register file. From Figure 60, we see that each left input sample is fetched once and used four times, each right input sample is fetched once and used four times and each coefficient is used 8 times for each fetch, for a sustained utilization of 1/4 + 1/4 + 1/8 or 63%. It takes 24 multiplies to compute the partial filter of figure 60 during this time 12 coefficient and samples are fetched so that the utilization ends up being 12/24 or approximately 50% of the DMA bus. This is a steady state number for long filters; for startup and rundown, the FILCO will use closer to 100% of the DMA bus utilization for short periods. The HW_FILCO_CSR_DMADLY value can be used to throttle the DMA utilization of the 156 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip FILCO. This field indicates the number of additional DCLKs to wait before asserting a DMA request to the on-chip RAM. Because the FILCO is running eight separate FIR filter computations at once, there is a four deep pipeline running for each channel. As a result, three words of zero must be appended to the end of the coefficient array for FIR filters (plus three more for FIR decimation mode). These zero words pad out the run down of the four deep pipeline., Accumulator0 += an * cm + an+1 * cm+1 + an+2 * cm+2 Accumulator1 += an * cm+1 + an+1 * cm+2 + an+2 * cm+3 Accumulator2 += an * cm+2 + an+1 * cm+3 + an+2 * cm+4 Accumulator3 += an * cm+3 + an+1 * cm+4 + an+2 * cm+5 Accumulator4 += bn * cm + bn+1 * cm+1 + bn+2 * cm+2 Accumulator5 += bn * cm+1 + bn+1 * cm+2 + bn+2 * cm+3 Accumulator6 += bn * cm+2 + bn+1 * cm+3 + bn+2 * cm+4 Accumulator7 += bn * cm+3 + bn+1 * cm+4 + bn+2 * cm+5 Figure 60. FILCO FIR Mode DMA Fetch Re-use The FILCO performs 24-bit by 24-bit, parallel, twos-complement fractional multiples. The “fixed point” for the fractional number occurs between the sign bit and the first data bit, i.e. between bit 23 and bit 22 with the sign bit located in bit 23. The result of the multiply is a 47-bit twos-complement fractional value to which a zero is appended on the right to make a 48-bit number before accumulation. The most negative number that can be represented in 24 bit fractional representation is -1.0 while the most positive is approximately +0.999998 which is ((2^23)-1)/(2^23), i.e. just less than +1.0. Multiplying two numbers whose value is -1.0 should yield a value of +1.0 but this value is not representable in 24-bit twos-complement fractional numbers. An overflow occurs in this case and the result is -1.0. This overflow is neither detected nor corrected in the FILCO. Users should avoid FIR filters whose coefficient sets contain the number -1.0. If this coefficient is used in an FIR filter, then the user should insure that no corresponding sample with a value of -1.0 will be seen. When the output sample is extracted from the accumulator, the DMA pulls bits 47 down through bit 24 to write to on-chip RAM as the 24 bit FIR result. For a fractional number representation, this has the effect of discarding precision without changing the magnitude. For example, a 48 bit twos-complement fractional number with a value of +0.5 becomes a 24-bit twos-complement fractional number with a value of +0.5. The accumulator value is saturated so that the 24 bit result has the most positive number substituted for any value that is larger or the most negative number is substituted for any value that is smaller. Otherwise convergent rounding is used on the accumulator value to produce the 24-bit result. The HW_FILCO_SAT_SAT bit-field is an 8-bit field with a sticky bit for each of the eight accumulators. Anytime a saturation correction is applied to a specific accumulator value to store it to on-chip RAM during an FIR operation, then its correspond- 5-35xx-D1-1.08-061705 157 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip ing SAT bit is set. Once software has examined a saturation status bit, it can be cleared by writing a one to it. The FILCO module includes a completion interrupt to notify software that a kicked off operation is complete. To facilitate context switching, a currently running filter can be “unkicked” so that it will quiesce to a safe state even before its word count reaches zero. Consider a simple FIR with 10 taps whose data reference patterns can be seen in Figure 61, below. For this FIR, all ten coefficients are accessed from the coefficient register file, sequentially one after the other. For the “mth” output sample, whose basis is shown starting at left sample Left0, all of the left samples from Left0 through Left 9, inclusive, are read and multiplied by their corresponding coefficient. HW_FILCO_CBAR smaller address larger address Coeff0 Coeff1 Coeff2 Coeff3 Coeff4 Coeff5 Coeff6 Coeff7 Coeff8 Coeff9 zero pad zero pad zero pad newer older pad with three words of zero HW_FILCO_DBAR smaller address older basis for left output sample m samplen+1 samplen+2 samplen+3 samplen+4 samplen+9 larger address Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 samplen samplen+1 samplen+2 basis for left output sample m+1 samplen samplen+9 newer HW_FILCO_CSR_FIRMODE = 00 Figure 61. FILCO Normal FIR Mode For output sample m+1, the basis begins at the next left sample after Left0 or Left1. So the coefficient vector is multiplied by a basis vector that slides along the sample 158 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip stream, moving one sample down the input sample stream for each filter output sample. This sample reference pattern results when the HW_FILCO_CSR_FIRMODE bit field is set to a value of 00, for the 1:1 or normal FIR mode 13.1.1. FIR Decimation Filter When the HW_FILCO_CSR_FIRMODE bit field is set to 10 then it enables the 2:1 decimation mode. In this mode, FIR filter calculations for each output sample are made, as in the normal case, except that the filter basis slides down the input sample buffer differently, see Figure 62. “FILCO FIR Decimation Mode” on page 159. In this mode, after sample m has been computed with a basis that began at sample Left0, the sample m+1 basis is fetched beginning at sample Left2. Notice that sample Left1 was “skipped” and never used as the first sample of any basis. Thus the 2:1 decimation mode produces one output sample for every two input samples. smaller address larger address smaller address samplen basis for left output sample m samplen+1 samplen+2 samplen+3 samplen+4 samplen+10 larger address Coeff0 Coeff1 Coeff2 Coeff3 Coeff4 Coeff5 Coeff6 Coeff7 Coeff8 Coeff9 Coeff10 zero pad zero pad zero pad zero pad zero pad zero pad Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 HW _FILCO_CSR_FIRMODE = 10 newer older pad with six words of zero HW _FILCO_DBAR older SKIPPED samplen samplen+1 samplen+2 basis for left output sample m+1 HW _FILCO_CBAR samplen+10 newer Figure 62. FILCO FIR Decimation Mode 5-35xx-D1-1.08-061705 159 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.1.2. FIR Interpolation Filter When the HW_FILCO_CSR_FIRMODE bit field is set to 01 then it enables the 1:2 interpolation mode. In this mode, FIR filter calculations for each output sample are made, as in the normal case, except that the filter basis slides down the input sample buffer differently, see Figure 63. “FILCO FIR Interpolation Mode” on page 160. HW_FILCO_CBAR Exact Phase n Exact Phase n+1 Exact Phase n+2 Exact Phase n+3 Exact Phase n+10 larger address newer Even Coeff0 Odd Coeff0 Even Coeff1 Odd Coeff1 Even Coeff2 Odd Coeff2 Even Coeff3 Odd Coeff3 Even Coeff4 Odd Coeff4 Even Coeff5 Odd Coeff5 Even Coeff6 Odd Coeff6 Even Coeff7 Odd Coeff7 Even Coeff8 Odd Coeff8 Even Coeff9 Odd Coeff9 Even Coeff10 Odd Coeff10 zero pad zero pad zero pad Interp.Phase n Interp.Phase n+1 Interp.Phase n+2 Interp.Phase n+3 Interp.Phase n+2 older pad with three words of zero HW_FILCO_DBAR smaller address samplen+1 samplen+2 samplen+3 samplen+4 samplen+10 larger address Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 HW_FILCO_CSR_FIRMODE = 01 older samplen samplen+1 samplen+2 basis for left output sample m+2 and m+3 basis for left output sample m and m+1 samplen Polyphase Filter Coefficients for left output sample m+1, m+3 Polyphase Filter Coefficients for left output sample m, m+2 smaller address samplen+10 newer Figure 63. FILCO FIR Interpolation Mode This setting enables a special polyphase filter mode in which the same basis is read twice and convolved with two separate sets of coefficients, an even set and an odd 160 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip set. For the case shown in Figure 63, output sample m is computed using the input sample basis starting at sample Left 0. EvenCoeff 0, 1, 2, etc. is used to compute output sample m. To compute output sample m+1, the same input sample basis starting at sample Left0 is read and convolved with the Odd coefficients, starting with OddCoeff0, 1, 2, etc. To compute output sample m+2, the basis is stepped so that it starts at input sample Left1 which is then convolved with the Even coefficients. Finally the same input sample basis, beginning with input sample Left1 is used to generate output sample m+3. Pay careful attention to the four output samples shown in Figure 63, noting which coefficient sets and which input sample basis are used for each one. 13.2. Bi-Quadratic IIR Filter Cascade Mode FILCO supports Bi-Quadratic IIR filter modes for both additive and subtractive graphic equalizer implementations. The basic bi-quad filter is shown in Figure 64. The bi-quad mode is selected by setting HW_FILCO_CSR_FILCOSEL to one. For this example, we set HW_FILCO_CSR_IIRMODE to zero for cascade mode. This filter uses exactly five user supplied coefficients, a1, a2, b0, b1 and b2. These are pointed to by the HW_FILCO_CBAR coefficient base address register. Since exactly five coefficients are used every time, FILCO ignores any value that may be in the HW_FILCO_TAPCNT register at the time a bi-quad filter is “KICKed” off. The bi-quad inner loop scale factor is controlled by HW_FILCO_CSR_IIRSCALE and can be set to multiply by either 1.0 or 2.0, recall that neither of these values could have been represented in a 24-bit twos complement fractional number. The bi-quad filter processes interleaved stereo sample streams so there are two biquad filters running at the same time with both filters using the same coefficient sets. Figure 64 and the following discussion focuses only on the left channel but right channel filtering is identical. HW_FILCO_DBAR points to the input sample data buffer and HW_FILCO_DMR specifies its modulo size in words as it did for FIR filters. For every left sample taken from the input buffer, one sample is produced and written to the output buffer. The output buffer is pointed to by HW_FILCO_SBAR and its modulo size is given in HW_FILCO_SMR as it was for FIR filters. The HW_FILCO_WCNT register specifies the number of samples to compute for each kick, as id did for the FIR case. Finally notice that each bi-quad output value has a final gain multiplier applied to it before it is written to the output sample buffer. Various zero crossing decisions and gain value substitutions can be automatically handled by FILCO, see Section 13.4. “IIR Mode Zero Crossing Detector and Gain Substitution” on page 165. As with the FIR filter, 56 bit accumulator values are saturated and/or rounded before storing to the output buffer. In addition, feed back values derived from the accumulator are also saturated and rounded before being used in subsequent multiplications. Also as in the FIR case, multiplication of -1.0 by -1.0 is neither detected nor saturated to +1.0 and will supply -1.0 to the accumulation. FILCO is used to processes sub-buffers of long continuous streams of samples. When the available samples have been processed then FILCO must have its context switched to a new filter segment. When switching to or from an IIR filter then the accumulated state of the filter must saved and restored. Figure 65 shows the seven registers that must be saved and restored at an IIR context switch. When an IIR filter is first started, these registered should be loaded with zeroes. 5-35xx-D1-1.08-061705 161 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_FILCO_CSR_IIRSCALE b0 HW_FILCO_IIRGAIN_IIRGAIN 1 or 2 Σ Left(n+2) OutL(n+1) a1 b1 OutL(n) Left(n+1) b2 a2 OutL(n-1) Left(n) HW_FILCO_DBAR HW_FILCO_SBAR Left0 Right0 Left1 Right1 Left2 Right2 Left n Right n Left n+1 Right n+1 Left n+2 Right n+2 Left n+3 Right n+3 Left n+4 Right n+4 HW_FILCO_CBAR b0 a1 b1 a2 b2 samplen+3 HW_FILCO_CSR_IIRMODE = 0 Left0 Right0 Left1 Right1 Left2 Right2 Left n Right n Left n+1 Right n+1 Left n+2 Right n+2 Left n+3 Right n+3 Left n+4 Right n+4 HW_FILCO_CSR_FILCOSEL = 1 Figure 64. FILCO BIQUAD IIR Cascade Filter 162 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_FILCO_CSR_IIRSCALE b0 HW_FILCO_IIRGAIN_IIRGAIN 1 or 2 Σ Left(n+2) OutL(n+1) Zero Crossing Detect a1 b1 OutL(n) Left(n+1) b2 a2 OutL(n-1) Left(n) HW_FILCO_CTXT_S0,1 HW_FILCO_CTXT_SW HW_FILCO_CTXT_A0,1 HW_FILCO_CTXT_S2,3 HW_FILCO_CTXT_WP HW_FILCO_CTXT_A2,3 HW_FILCO_CTXT_S4,5 HW_FILCO_CSR_IIRMODE = 0 HW_FILCO_CSR_FILCOSEL = 1 Figure 65. Context Switching an IIR Filter Figure 66 shows the construction of a K band subtractive mode graphics equalizer. With a subtractive mode equalizer, a single buffer is used for multiple passes of each stage/band of the equalizer. Each time the bi-quad filter is run to process a band, both HW_FILCO_DBAR and HW_FILCO_SBAR are set to point the same circular buffer. HW_FILCO_DMR and HW_FILCO_SMR are both set to the size of the buffer. The filter coefficients are set for the first band and the filter is kicked off. The filter coefficients for this case are set for notch filtering, i.e. potentially reducing the amplitude of any frequency components within its passband. Out-of-band frequency components are essentially unmodified. Thus, frequency components within the band are effectively “subtracted” from the composite signal. This is counter intuitive to what is displayed on the user interface of a graphic equalizer but an effective implementation technique. For the final filter/channel bank run for the equalizer, one 5-35xx-D1-1.08-061705 163 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip can choose to point the results back in to the same buffer for in-place computation or one can use this filter operation to also copy the result to another circular buffer. X(0) ... X(0) Y(n) Bi-Quad #k X(n) Bi-Quad #2 X(n) Bi-Quad #1 X(n) X(0) in-place in single buffer Y(0) Final Result Buffer Figure 66. FILCO BiQuad Cascade EQ Application 13.3. Bi-Quadratic IIR Filter Parallel Mode The K-band additive graphic equalizer model shown in Figure 67 uses a different and more intuitively pleasing strategy. In this case, each filter is set as a bandpass filter so that the frequency components outside of its passband are strongly suppressed while the components lying inside its passband are copied to the output buffer where the components from all banks are superpositioned with the summation operator. This form of the equalizer is used when all bands are computed in parallel and results are simultaneously available from all filter banks. Thanks to the associativity of the addition operation, the STMP35xx implements a final addition stage, see Figure 68. “FILCO BIQUAD IIR Parallel Filter” on page 166. In this parallel mode, each filter bank is run as a separate kick. For a five bank equalizer there are five separate filters to run and each runs to completion before the next one is started. In parallel mode, just as a filter output sample is computed, it is added to the value in the output sample array. Thus the superposition of all filter banks is formed in the output buffer where all filter results for a given sample are added together. To simplify the number of operations, set the HW_FILCO_CSR_IIRMODE to cascade (zero) for the first filter bank and then set it to parallel (one) for all subsequent filters. 164 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip G1 X(n) Y(n) Bi-Quad #0, parallel G2 Bi-Quad #1, parallel G3 Σ Bi-Quad #2, parallel ... X(0) GK Bi-Quad #N, parallel Y(0) Feed Forward Final Result Buffer Figure 67. FILCO BiQuad Parallel EQ Application Setting up for the parallel mode bi-quad filter of Figure 68 is essentially the same as setting up the cascade case, except for setting HW_FILCO_CSR_IIRMODE to one. Of course different final gain values are indicated for HW_FILCO_IIRGAIN_IIRGAIN. The coefficients are computed for a very different filter shape, namely bandpass filters instead of notch filters. Note that no additional zero padding words are required for the IIR filter modes as opposed to the FIR modes. The addition of the current output buffer value to the freshly computed IIR output is performed with overflow detection, saturation and convergent rounding. 13.4. IIR Mode Zero Crossing Detector and Gain Substitution FILCO contains two zero crossing detect status bits, one for the left channel and one for the right channel. These bits are cleared at the time an IIR filter operation is kicked off. These bits can be seen in: HW_FILCO_ZC_STATUS_ZERO_CROSS_DETECT_STATUS. When a bit is set it indicates that a zero crossing detect was enabled for the corresponding channel, and the zero crossing has been detected within that filter run. Once the status bit is set then the 24-bit zero crossing gain from register HW_FILCO_ZC_GAIN is substituted for the value in HW_FILCO_IIRGAIN in the biquad filter loop. Thus one can implement a mute function by setting a very low gain value in the zero crossing gain register. When the zero crossing is detected, then the filter output is essentially muted while the signal is in the vicinity of its zero crossing. Zero crossing are detected at the output of the Bi-Quad IIR before the gain is multiplied. Thus one 5-35xx-D1-1.08-061705 165 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip can use the zero crossing detector to go from play to mute and also from mute to play. HW_FILCO_CSR_IIRSCALE b0 1 or 2 Σ Left(n+2) HW_FILCO_IIRGAIN_IIRGAIN OutL(n+1) a1 b1 OutL(n) Left(n+1) b2 a2 OutL(n-1) Left(n) HW_FILCO_SBAR Left0 Right0 Left1 Right1 Left2 Right2 HW_FILCO_DBAR Left0 Right0 Left1 Right1 Left2 Right2 Left n Right n Left n+1 Right n+1 Left n+2 Right n+2 Left n+3 Right n+3 Left n+4 Right n+4 Σ HW_FILCO_CBAR b0 a1 b1 a2 b2 Left n Right n Left n+1 Right n+1 Left n+2 Right n+2 Left n+3 Right n+3 Left n+4 Right n+4 samplen+3 HW_FILCO_CSR_IIRMODE = 1 HW_FILCO_CSR_FILCOSEL = 1 Figure 68. FILCO BIQUAD IIR Parallel Filter 166 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5. FILCO Programmable Registers The following registers are available for DSP programmer access and control of the FILCO Filter Coprocessor. 13.5.1. FILCO Control/Status Register This register provides overall control of the filter coprocessor for transactions and interrupts. 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DMAOUT 1 7 DMASAMP 1 8 DMACOEF 1 9 IIRMODE 2 0 FILCOSEL 2 1 IIRSCALE 2 2 DMADLY CLKGT 2 3 X:$FC00 FIRMODE HW_FILCO_CSR Table 165. HW_FILCO_CSR BITS 23 CLKGT LABEL 22:20 RSRVD 19:16 DMADLY 15:14 FIRMODE 13 IIRSCALE 12 IIRMODE 11 FILCOSEL 10:8 7:6 RSRVD DMACOEF 5:4 DMASAMP RW RESET DEFINITION RW 0 Clock Gate for the Filco functions 1 = Clocks enabled 0 = Clocks gated off WARNING: this the inverse of most other STMP3500 blocks. R 000 Reserved – Must be written with 0. RW $0 Delay each DMA request by a number of clocks $0 = 1 clock delay ... $F = 16 clock delays. RW 00 FIR Mode filter type 00 = FIR 1:1 normal mode 01 = FIR 1:2 interpolation mode 10 = FIR 2:1 decimation mode RW 0 IIR final scale mode 0 = Multiply IIR filter result by 1x 1 = Multiply IIR filter result by 2x RW 0 IIR Mode 0 = Cascade 1 = Parallel (add to output buffer) RW 0 Filter Type: 0 = FIR 1 = IIR R $0 Reserved – Must be written with 0. RW 00 00 - DMA input coefficients from on-chip XRAM 01 - DMA input coefficients from on-chip YRAM 10 - DMA input coefficients from on-chip PRAM 11- Reserved RW 00 00 - DMA input samples from on-chip XRAM 01 - DMA input samples from on-chip YRAM 10 - DMA input samples from on-chip PRAM 11- Reserved Table 166. FILCO Control/Status Register Description 5-35xx-D1-1.08-061705 167 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 3:2 DMAOUT 1:0 RW RESET DEFINITION RW 00 00 - DMA into on-chip XRAM 01 - DMA Into on-chip YRAM 10 - DMA into on-chip PRAM 11- Reserved R $0 Reserved – Must be written with 0. RSRVD Table 166. FILCO Control/Status Register Description (Continued) 13.5.2. FILCO SAT Register This register provides a debug view of the saturation state of each of the eight accumulators. HW_FILCO_SAT 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAT 2 3 X:$FC01 Table 167. HW_FILCO_SAT BITS LABEL 23:8 RSRVD 7:0 SAT RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $00 Overflow status for each accumulator.These bits will be set if an accumulator store referenced an accumulator with an overflow (out range condition). Once these sticky bits are set they will remain set unto cleared. Set to one to clear these bits. Table 168. FILCO Accumulator Status Register Description 13.5.3. FILCO Coefficient Base Address Register This register provides a pointer to the array of coefficients to be used for the current filter. HW_FILCO_CBAR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CBAR 2 3 X:$FC02 Table 169. HW_FILCO_CBAR BITS LABEL 23:16 RSRVD 15:0 CBAR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $0000 Address Location of first coefficient.These bits work in conjunction with HW_FILCO_CSR_DMACOEF bit field which determines the source on-chip RAM. Table 170. FILCO Coefficient Base Address Register Description 168 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.4. FILCO TAP COUNT Register This register contains the number of coefficients in an FIR filter. Remember that either three or six words of zero padding must be appended to the end of the coefficient array, however, they should be included in the tap count value stored here. In addition, this register contains the number of even or odd phase taps for a 1:2 interpolating FIR filter, not the sum of the two. Finally, all bi-quad IIR filters have exactly five coefficients and therefore ignore any value written to this register. HW_FILCO_TAPCNT X:$FC03 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CMR 2 3 Table 171. HW_FILCO_TAPCNT BITS LABEL 23:8 RSRVD 7:0 CMR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $00 Size of filter, i.e. number of coefficients (256 taps). This field is ignored for IIR registers which always have exactly five coefficients. Table 172. FILCO Coefficient Modulo Register Description 13.5.5. FILCO FIR Coefficient Current Position Register This register provides a diagnostic view of the offset to add to the CBAR to find the address from which the current coefficient will be fetched. HW_FILCO_CCPR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CCPR 2 3 X:$FC04 Table 173. HW_FILCO_CCPR BITS LABEL 23:13 RSRVD 12:0 CCPR RW RESET DEFINITION R $0 Reserved – Must be written with 0. R $0000 Current offset from coefficient base address. Table 174. FILCO Coefficient Current Position Register Description 5-35xx-D1-1.08-061705 169 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.6. FILCO Spare Register This register provides bits that can read or written from DSP software for use in generating metal mask patches to the silicon. HW_FILCO_SPARE 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SPARE 2 3 X:$FC05 Table 175. HW_FILCO_SPARE BITS 23:0 SPARE LABEL RW RESET RW $000000 DEFINITION Spare bits for patch gates Table 176. FILCO SPARE Register Description 13.5.7. FILCO Interrupt Configuration Register This register holds the completion interrupt status bit and the completion interrupt enable for the FILCO. 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 IRQ 2 3 X:$FC0B IRQEN HW_FILCO_INTR Table 177. HW_FILCO_INTR BITS LABEL 23:2 RSRVD 1 IRQ 0 IRQEN RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW 0 FILCO interrupt is a status bit indicating a completion interrupt has been generated. IRQ occurs when the filter has finished processing a buffer, i.e. WORDCOUNT = 0. RW 0 FILCO interrupt enable. Set to one to enable interrupt generation whenever IRQ is a one. Table 178. FILCO Interrupt Configuration Register Description 170 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.8. FILCO Kick Register This register provides access to the bits that control kicking off a transaction as well as stopping that transaction. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 KICK 2 2 PAUSE 2 3 X:$FC0C UNKICK HW_FILCO_KICK Table 179. HW_FILCO_KICK BITS 23:21 PAUSE 20:2 1 RSRVD UNKICK 0 KICK LABEL RW RESET DEFINITION RW 000 101- Pause the FILCO at any point of the operation. All other values allow normal operation. R $0 Reserved – Must be written with 0. RW 0 Write a one to this bit to temporarily freeze states to allow for processing new samples. When read, a one indicates that the FILCO is busy; a zero indicates that the FILCO is idle. RW 0 Set the KICK bit to one to start the filter process in the FILCO. Kick is automatically cleared when the word count reaches zero. Table 180. FILCO Kick Register Description 13.5.9. FILCO Input Sample (Data) Base Address Register This register contains the base address pointing to the input Data sample buffer. HW_FILCO_DBAR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DBAR 2 3 X:$FC0D Table 181. HW_FILCO_DBAR BITS LABEL 23:16 RSRVD 15:0 DBAR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $0000 Address of the first input sample data word. These bits work in conjunction with HW_FILCO_CSR_DMADATA bit field which determines the source on-chip RAM. Table 182. FILCO Input Sample Data Base Address Register Description 5-35xx-D1-1.08-061705 171 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.10. FILCO Sample Data Buffer Modulo Register This register provides the modulo address for the input sample data circular buffer. This register holds the count of the maximum number words in the buffer. All data references from the sample data buffer fall within the range HW_FILCO_DBAR to HW_FILCO_DBAR plus HW_FILCO_DMR. HW_FILCO_DMR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DMR 2 3 X:$FC0E Table 183. HW_FILCO_DMR BITS LABEL 23:13 RSRVD 12:0 DMR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $000 Size of data input buffer (up to 8192 words) Table 184. FILCO Sample Data Buffer Modulo Register Description 13.5.11. FILCO Sample Count Register FILCO uses base plus index addressing to access samples in the input sample buffer. The 13 bit index is constrained to wrap from the modulo register value back to zero as successive input samples are fetched. There are two sample index register in the FILCO. The first one, called the start index is used to keep track of where the next filter basis will begin. The second one, called the running index, is used to step backward in time, fetching each sample from the filter’s basis. Samples are fetched from locations determined by adding the value in HW_FILCO_DBAR to the running index register. The writes to this register are directed to the start index register. Reads come from the running index register. When FILCO is not in the “KICKED” they should be equal so that saving the read value as part of a context switch will provide the correct value to write to HW_FILCO_DCPR when the context is switched back in. Values written to the HW_FILCO_DCPR will not be visible when read back. Values written to the start index register are copied to the running index register after a kick start. 172 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_FILCO_DCPR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DCPR 2 3 X:$FC0F Table 185. HW_FILCO_DCPR BITS LABEL 23:13 RSRVD 12:0 DCPR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $0001 Current input sample counter. Reads return the value of the running index register. Reads indicate the first sample to be read on the next set of output samples. Reads should only occur while the FILCO is not in the KICKED state or while it is paused. Writes are directed to the start index register. Only odd values can be written to this start index register. Table 186. FILCO Sample Count Register Description 13.5.12. FILCO Output Sample Base Address Register This register holds the base address pointing to the on-chip RAM buffer which will receive the filtered output samples. HW_FILCO_SBAR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SBAR 2 3 X:$FC10 Table 187. HW_FILCO_SBAR BITS LABEL 23:16 RSRVD 15:0 SBAR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $0000 Address of first filtered output sample word. These bits work in conjunction with HW_FILCO_CSR_DMAOUT bit field which determines the destination on-chip RAM. Table 188. FILCO Output Sample Base Address Register Description 5-35xx-D1-1.08-061705 173 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.13. FILCO Output Sample Modulo Register This register provides the modulo size for the output sample circular buffer. HW_FILCO_SMR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SMR 2 3 X:$FC11 Table 189. HW_FILCO_SMR BITS LABEL 23:13 RSRVD 12:0 SMR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $0000 Size of output sample data buffer. Table 190. FILCO Output Sample Modulo Register Description 13.5.14. FILCO Output Sample Current Position Register This register provides a diagnostic and context switch view of the offset to add to the SBAR to find the address to which the next output sample word will be written. HW_FILCO_SCPR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SCPR 2 3 X:$FC12 Table 191. HW_FILCO_SCPR BITS LABEL 23:13 RSRVD 12:0 SCPR RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW $0000 Current output sample pointer. Table 192. FILCO Output Sample Current Position Register Description 13.5.15. FILCO Tail Pointer Register This register provides a read only view of the address of the last input data sample fetched for an FIR filter. HW_FILCO_TPTR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TAIL_PNTR 2 3 X:$FC13 Table 193. HW_FILCO_TPTR 174 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:16 RSRVD 15:0 TAIL_PNTR RW RESET DEFINITION R $0 Reserved – Must be written with 0. R $0000 DMA address (pointer) of last FIR filter sample fetched for current input data sample basis. Table 194. FILCO Tail Pointer Register Description 13.5.16. FILCO Unity Gain Register This register provides a unity gain feed forward path for one or both channels. 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 PER_CHANNEL 2 3 X:$FC17 0 0 UNITY_GAIN HW_FILCO_UGAIN Table 195. HW_FILCO_UGAIN BITS LABEL 23:13 RSRVD 1 PER_CHANNEL 0 UNITY_GAIN RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW 0 Use each channel zero cross detect bit to enable unity gain on a channel by channel basis. RW 0 Force unity gain in IIR mode. Since +1.0 is not representable in a 24-bit twos complement fractional number but is a highly desirable value for the final IIR gain multiplier, this bit provides a way to specify an exact multiply by +1.0. Table 196. FILCO Unity Gain Register Description 5-35xx-D1-1.08-061705 175 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.17. FILCO IIR Gain Register This register provides an overall gain control for the output of an IIR filter step. This is a convenient place to set the attenuation for each equalizer band in a parallel IIR implementation of an equalizer. If the HW_FILCO_UGAIN_UNITY_GAIN bit is set then a value of 1.0 is used in place of this value. If the zero cross detector is in use and a zero crossing has been detected then the HW_FILCO_ZC_GAIN value will be used in place of this registers value to set the final gain of an IIR filter. HW_FILCO_IIRGAIN X:$FC18 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 IIRGAIN 2 3 Table 197. HW_FILCO_IIRGAIN BITS LABEL 23:0 IIRGAIN RW RESET RW $000000 DEFINITION IIR mode volume register, same register as coefficient register 5. Table 198. FILCO IIR Volume Register Description 13.5.18. FILCO Word Count Register This register holds the count of the number of output samples to process (count of individual output sample words, not word pairs). HW_FILCO_WORDCOUNT X:$FC1B 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 WCNT 2 3 Table 199. HW_FILCO_WORDCOUNT BITS LABEL 23:13 RSRVD 12:0 WCNT RW RESET R $0 RW $0000 DEFINITION Reserved – Must be written with 0. Number of single samples to be processed. Table 200. FILCO IIR Volume Register Description 176 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.19. FILCO Zero Cross Status Register (IIRMODE ONLY) This register provides controls for the IIR zero crossing detector mode. HW_FILCO_ZC_STATUSX:$FC1C 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ZERO_CROSS_DETECT_EN 2 2 ZERO_CROSS_DETECT_STATUS 2 3 Table 201. HW_FILCO_ZC_STATUS BITS LABEL 23:4 RSRVD 3:2 ZERO_CROSS_DETECT_STATUS 1:0 ZERO_CROSS_DETECT_EN RW RESET DEFINITION R $0 Reserved – Must be written with 0. RW 00 Zero Cross Detect Status 00 - Zero cross not detected. 01 - even channel detected. 10 - odd channel detected. 11 - both channels detected. RW 00 Zero Cross Detect Enable 00 - Zero cross detect disabled. 01 - right channel, i.e. odd addresses enabled. 10 - left channel, i.e. even addresses enabled. 11 - zero crossing detector enabled for both channels. Table 202. FILCO Zero Cross Status Register Description 5-35xx-D1-1.08-061705 177 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.20. FILCO Zero Cross Gain Setting Register (IIRMODE ONLY) This register provides the gain to be substituted when a channel goes through a zero crossing. HW_FILCO_ZC_GAIN X:$FC1D 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ZCGAIN 2 3 Table 203. HW_FILCO_ZC_GAIN BITS LABEL 23:0 ZCGAIN RW RESET RW $000000 DEFINITION Gain setting to be used once a zero cross is detected. Table 204. FILCO Zero Cross Gain Setting Register Description 178 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.21. FILCO Context Acc0 Register (IIRMODE ONLY) This register provides access to accumulator zero for context switching between IIR sub-buffers. HW_FILCO_CTXT_A0R X:$FC20 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACCUM 2 3 Table 205. HW_FILCO_CTXT_A0R BITS LABEL 23:0 ACCUM RW RESET RW $000000 DEFINITION Accumulator 0, save and restore this register between IIR sub buffers. Initialize to zero for first sub-buffer. Table 206. FILCO Context Acc0 Register Description 13.5.22. FILCO Context Acc1 Register (IIRMODE ONLY) This register provides access to accumulator one for context switching between IIR sub-buffers. HW_FILCO_CTXT_A1R X:$FC21 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACCUM 2 3 Table 207. HW_FILCO_CTXT_A1R BITS LABEL 23:0 ACCUM RW RESET RW $000000 DEFINITION Accumulator 1, save and restore this register between IIR sub buffers. Initialize to zero for first sub-buffer. Table 208. FILCO Context Acc1 Register Description 13.5.23. FILCO Context Acc2 Register (IIRMODE ONLY) This register provides access to accumulator two for context switching between IIR sub-buffers. 5-35xx-D1-1.08-061705 179 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_FILCO_CTXT_A2R X:$FC22 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACCUM 2 3 Table 209. HW_FILCO_CTXT_A2R BITS LABEL 23:0 ACCUM RW RESET RW $000000 DEFINITION Accumulator 2, save and restore this register between IIR sub buffers. Table 210. FILCO Context Acc0 Register Description 13.5.24. FILCO Context Acc3 Register (IIRMODE ONLY) This register provides access to accumulator three for context switching between IIR sub-buffers. HW_FILCO_CTXT_A3R X:$FC23 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACCUM 2 3 Table 211. HW_FILCO_CTXT_A3R BITS LABEL 23:0 ACCUM RW RESET RW $000000 DEFINITION Accumulator 3, save and restore this register between IIR sub buffers. Table 212. FILCO Context Acc3 Register Description 13.5.25. FILCO Switch Register (IIRMODE ONLY) This register provides access to the ping pong switch bit for context switching between IIR sub-buffers. HW_FILCO_ CTXT_SWX:$FC24 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 BIT 2 2 xx 2 3 Table 213. HW_FILCO_CTXT_SW 180 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:1 RSRVD 0 BIT RW RESET R $000000 RW 0 DEFINITION Reserved – Must be written with 0. Ping Pong Switch bit. Save and restore this bit at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 214. FILCO Switch Register Description 13.5.26. FILCO Sample 0 Register (IIRMODE ONLY) This register provides access to sample 0 of the sample register file for context switching between IIR sub-buffers. HW_FILCO_ CTXT_S0X:$FC25 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAMPLE 2 3 Table 215. HW_FILCO_CTXT_S0 BITS LABEL 23:0 SAMPLE RW RESET RW $000000 DEFINITION Sample 0 of the sample register file. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 216. FILCO Sample 0 Register Description 13.5.27. FILCO Sample 1 Register (IIRMODE ONLY) This register provides access to sample 1 of the sample register file for context switching between IIR sub-buffers. HW_FILCO_ CTXT_S1X:$FC26 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAMPLE 2 3 Table 217. HW_FILCO_CTXT_S1 BITS LABEL 23:0 SAMPLE RW RESET RW $000000 DEFINITION Sample 1 of the sample register file. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 218. FILCO Sample Register Description 5-35xx-D1-1.08-061705 181 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 13.5.28. FILCO Sample 2 Register (IIRMODE ONLY) This register provides access to sample 2 of the sample register file for context switching between IIR sub-buffers. HW_FILCO_ CTXT_S2X:$FC27 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAMPLE 2 3 Table 219. HW_FILCO_CTXT_S2 BITS LABEL 23:0 SAMPLE RW RESET RW $000000 DEFINITION Sample 2 of the sample register file. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 220. FILCO Sample 2 Register Description 13.5.29. FILCO Sample 3 Register (IIRMODE ONLY) This register provides access to sample 3 of the sample register file for context switching between IIR sub-buffers. HW_FILCO_ CTXT_S3X:$FC28 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAMPLE 2 3 Table 221. HW_FILCO_CTXT_S3 BITS LABEL 23:0 SAMPLE RW RESET RW $000000 DEFINITION Sample 3 of the sample register file. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 222. FILCO Sample 3 Register Description 13.5.30. FILCO Sample 4 Register (IIRMODE ONLY) This register provides access to sample 4 of the sample register file for context switching between IIR sub-buffers. 182 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_FILCO_ CTXT_S4X:$FC29 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAMPLE 2 3 Table 223. HW_FILCO_CTXT_S4 BITS LABEL 23:0 SAMPLE RW RESET RW $000000 DEFINITION Sample 4 of the sample register file. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 224. FILCO Sample 4 Register Description 13.5.31. FILCO Sample 5 Register (IIRMODE ONLY) This register provides access to sample 5 of the sample register file for context switching between IIR sub-buffers. HW_FILCO_ CTXT_S5X:$FC2A 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SAMPLE 2 3 Table 225. HW_FILCO_CTXT_S5 BITS LABEL 23:0 SAMPLE RW RESET RW $000000 DEFINITION Sample 5 of the sample register file. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 226. FILCO Sample 5 Register Description 13.5.32. FILCO Write Pointer Register (IIRMODE ONLY) This register provides to the write pointer bits for context switching between IIR subbuffers. HW_FILCO_CTXT_WPX:$FC2B 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 WPTR 2 3 Table 227. HW_FILCO_CTXT_WP 5-35xx-D1-1.08-061705 183 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:2 RSRVD 1:0 WPTR RW RESET R $000000 RW $000000 DEFINITION Reserved – Must be written with 0. Holds the write pointer value at the end of a sub-buffer. Save and restore this value at IIR context switches. Initialize it to zero at the beginning of a filter run. Table 228. FILCO Write Pointer Register Description 184 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 14. PULSE WIDTH MODULATOR (PWM) CONTROLLER The STMP35xx contains four PWM output controllers that can be used in place of GPIO pins. Applications include LED brightness control and high voltage generators for electroluminescent lamp (E.L.) display back lights. Independent output control of each phase allows zero, one or hi-Z to be independently selected for the active and inactive phases. Individual outputs can be run in lock step with guaranteed nonoverlapping portions for differential drive applications. 16KWord SRAM Y-BUS P-BUS X-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM Active3,Inactive3 count3 resets at Period3 Divide BY : 16, 64, 256, 1024 Active3 >= Count3 Count3 < Inactive3 Act.,Inact. State0 Period0 PWM Programmable Registers ACT PWM3 GP7 Active2,Inactive2 count2 resets at Period2 PWM2 Active2 >= Count2 Count2 < Inactive2 ACT GP9 Active1,Inactive1 24MHz XTAL Osc. count1 resets at Period1 PWM1 Active1 >= Count1 Count1 < Inactive1 ACT TIO1 Active0,Inactive0 count0 resets at Period0 PWM0 Active0 >= Count0 Count0 < Inactive0 ACT TIO0 Figure 69. Pulse Width Modulation Controller (PWM) Block Diagram Figure 69 shows the block diagram of the PWM controller. The controller does not use the DMA. Initial values of Period, Active, and Inactive widths are set for each desired channel. The outputs are selected by phase and then the desired PWM 5-35xx-D1-1.08-061705 185 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip channels are simultaneously enabled. This effectively launches the PWM outputs to autonomously drive their loads without further DSP intervention. In backlit high voltage applications, a feed forward control can be periodically used to change the count parameters based on LRADC evaluation of the battery state. Feedback control can be provided by assigning one LRADC channel to monitor the integrating capacitor voltage. Care must be taken to protect the LRADC from catastrophic over voltage in this case. For most EL back light applications, open loop control with precision PWM timers based on a stable crystal oscillator is sufficient. Each PWM channel has a dedicated internal 12 bit counter which increments once for each divided clock period presented from the clock divider. The internal counter resets when it reaches the value stored in the channel control registers, e.g. HW_PWM_CH0BR_PERIOD. The Active flip flop is set to one when the internal counter reaches the value stored in HW_PWM_CH0AR_ACTIVE. It remains high until the internal counter exceeds the value stored in HW_PWM_CH0AR_INACTIVE. These two value define the starting and ending points for the logically “active” portion of the waveform. As shown in Figure 70, the actual state on the output for each phase, e.g. active or inactive, is completely controlled by the active and inactive state values in the channel control registers. HW_PWM_CH0AR_ACTIVE HW_PWM_CH0AR_INACTIVE HW_PWM_CH0BR_PERIOD PERIOD INACTIVE ACTIVE ACTIVE_FF PWM0 Output inactive_state[1:0] active_state[1:0] inactive_state[1:0] active_state[1:0] HW_PWM_CH0BR_ACTIVE_STATE HW_PWM_CH0BR_INACTIVE_STATE Figure 70. PWM Output Example The actual values obtainable on the output are shown below, see Figure 72. “PWM Output Driver” on page 187. Notice that one possible state is to turn off the output driver to provide a hi-Z output. This is useful for external circuits that drive E.L. backlights and for direct drive of LEDs. By setting up two channels in lock step and by setting their low and high states to opposite values, one can generate a differential signal pair that alternates between pulling to Vss and floating to Hi-Z. By creating an appropriate offset in the settings of the two channels with the same period and the same enable instant one can generate differential drive pulses with digitally guaranteed non-overlapping intervals suitable for controlling high voltage switches, 186 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip ACTIVE_FF0 600 680 40 40 600 ACTIVE_FF1 640 PWM0 Output hi-Z Vss PWM1 Output digitally guaranteed HW_PWMCH0BR_PERIOD = 1280 HW_PWMCH1BR_PERIOD = 1280 HW_PWMCH0AR_ACTIVE = 0 HW_PWMCH1AR_ACTIVE = 640 HW_PWMCH0AR_INACTIVE = 600 HW_PWMCH1AR_INACTIVE = 1240 HW_PWMCH0BR_ACTIVE_STATE = 10 HW_PWMCH1BR_ACTIVE_STATE = 10 HW_PWMCH0BR_INACTIVE_STATE = 00 HW_PWMCH1BR_INACTIVE_STATE = 00 Figure 71. PWM Differential Output Pair Example In the above example, a differential pair is established using channel zero and channel one. The period is set for 1280 divided clocks for both channels. All active phases are set for 600 divided clocks. There is a 40 divided clock guaranteed offtime between each active phase. Since this is based on a crystal oscillator it is a very stable non-overlapping period. The total period is also a very stable crystal oscillator based time interval. In this example, the active phases are pulled to Vss (ground) while the inactive phases are allowed to float to a hi-Z state. i2s_sdo2_out HW_PWM_CH3R_ACTIVE_STATE[0] 1 PWM3 1 HW_PWM_CH3R_INACTIVE_STATE[0] GP7 I2S_SDO[2] Active FF HW_PWM_CH3R_ACTIVE_STATE[1] 1 1 HW_PWM_CH3R_INACTIVE_STATE[1] i2s_sdo2_oe HW_PWM_CSR_PWM3_EN Figure 72. PWM Output Driver 5-35xx-D1-1.08-061705 187 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Figure 72 shows the generation of the PWM Channel three output. This channel controls the GP7 output pin when HW_PWM_CSR_PWM3_EN is set to one. The output pin can be set to a “ZERO”, a “ONE”, or left to float in the high impedance state. These choices can be independently made for either the active or inactive phase of the output, see Figure 72. “PWM Output Driver” on page 187. 14.1. PWM Programmable Registers The following registers are available for DSP programmer access and control of the PWM controller. 14.1.1. PWM Configuration Register This register provides overall control of the four PWM channels. 1 9 1 8 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 CDIV 1 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PWM0_EN 2 0 PWM1_EN 2 1 PWM2_EN 2 2 MSTR_EN 2 3 X:$FA31 PWM3_EN HW_PWM_CSR Table 229. HW_PWM_CSR BITS LABEL 23 MSTR_EN RW RESET RW 0 22:10 RSRVD 9:8 CDIV R $000 RW 00 7:4 3 RSRVD PWM3_EN R $0 Rw 0 2 PWM2_EN RW 0 DEFINITION Master Enable is set to one to start the clock divider and to enable any PWM channel operation. Reserved – Must be written with 0. Clock divider ratio to apply to crystal clock frequency. 00 = divide by 16 01 = divide by 64 10 = divide by 256 11 = divide by 1024 NOTE: Beginning with revision TA2 of the 3500 (and all subsequent revisions), the crystal clock is used for PWM 0 instead of the output of this clock divider. As a result, PWM 0 can not be set for a pulse frequency less than approximately 6KHz. NOTE: Be sure to set HW_CCR_XTLEN to use the PWM. Reserved – Must be written with 0. Enables PWM Channel 3 to begin cycling when set to one. Setting this bit to one also enables PWM3 onto the output pin in place of the other uses for that pin, see Section 31. “PIN DESCRIPTION” on page 377. Enables PWM Channel 2 to begin cycling when set to one.Setting this bit to one also enables PWM2 onto the output pin in place of the other uses for that pin, see Section 31. “PIN DESCRIPTION” on page 377. Table 230. PWM Configuration and Status Register Description 188 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 1 PWM1_EN RW RESET RW 0 0 RW 0 PWM0_EN DEFINITION Enables PWM Channel 1 to begin cycling when set to one. Setting this bit to one also enables PWM1 onto the output pin in place of the other uses for that pin, see Section 31. “PIN DESCRIPTION” on page 377. Enables PWM Channel 0 to begin cycling when set to one. Setting this bit to one also enables PWM0 onto the output pin in place of the other uses for that pin, see Section 31. “PIN DESCRIPTION” on page 377. Table 230. PWM Configuration and Status Register Description (Continued) 14.1.2. PWM Channel 0 A Register This register controls PWM channel 0. HW_PWM_CH0AR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACTIVE INACTIVE 2 3 X:$FA32 Table 231. HW_PWM_CH0AR BITS LABEL 23:12 INACTIVE RW RESET RW $000 11:0 RW $000 ACTIVE DEFINITION Number of divided xtal clocks to count before resetting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than this value to reset the ACTIVE FF. Number of divided xtal clocks to count before setting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than or equal to this value. If the internal count is greater than or equal then the ACTIVE FF is set to one. Table 232. PWM Channel 0 A Register Description 14.1.3. PWM Channel 0 B Register This register controls PWM channel 0. 5-35xx-D1-1.08-061705 189 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PERIOD 2 2 ACTIVE_STATE 2 3 X:$FA33 INACTIVE_STATE HW_PWM_CH0BR Table 233. HW_PWM_CH0BR BITS LABEL 15:14 ACTIVE_STATE RW RESET RW 00 13:12 IN_ACTIVE_STATE RW 00 11:0 RW $000 PERIOD DEFINITION The logical active state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 The logical inactive state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 Number of divided xtal clocks in entire period of the PWM waveform minus one, i.e. to obtain six clocks in the actual period then set this field to five. Table 234. PWM Channel 0 B Register Description 14.1.4. PWM Channel 1 A Register This register controls PWM channel 1. HW_PWM_CH1AR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACTIVE INACTIVE 2 3 X:$FA34 Table 235. HW_PWM_CH1AR 190 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:12 INACTIVE RW RESET RW $000 11:0 RW $000 ACTIVE DEFINITION Number of divided xtal clocks to count before resetting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than this value to reset the ACTIVE FF. Number of divided xtal clocks to count before setting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than or equal to this value. If the internal count is greater than or equal then the ACTIVE FF is set to one. Table 236. PWM Channel 1 A Register Description 5-35xx-D1-1.08-061705 191 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 14.1.5. PWM Channel 1 B Register This register controls PWM channel 1. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PERIOD 2 2 ACTIVE_STATE 2 3 X:$FA35 INACTIVE_STATE HW_PWM_CH1BR Table 237. HW_PWM_CH1BR BITS LABEL 15:14 ACTIVE_STATE RW RESET RW 00 13:12 IN_ACTIVE_STATE RW 00 11:0 RW $000 PERIOD DEFINITION The logical active state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 The logical inactive state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 Number of divided xtal clocks in entire period of the PWM waveform. Table 238. PWM Channel 1 B Register Description 14.1.6. PWM Channel 2 A Register This register controls PWM channel 2. HW_PWM_CH2AR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACTIVE INACTIVE 2 3 X:$FA36 Table 239. HW_PWM_CH2AR 192 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:12 INACTIVE RW RESET RW $000 11:0 RW $000 ACTIVE DEFINITION Number of divided xtal clocks to count before resetting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than this value to reset the ACTIVE FF. Number of divided xtal clocks to count before setting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than or equal to this value. If the internal count is greater than or equal then the ACTIVE FF is set to one. Table 240. PWM Channel 2 A Register Description 14.1.7. PWM Channel 2 B Register This register controls PWM channel 2. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PERIOD 2 2 ACTIVE_STATE 2 3 X:$FA37 INACTIVE_STATE HW_PWM_CH2BR Table 241. HW_PWM_CH2BR BITS LABEL 15:14 ACTIVE_STATE RW RESET RW 00 13:12 IN_ACTIVE_STATE RW 00 11:0 RW $000 PERIOD DEFINITION The logical active state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 The logical inactive state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 Number of divided xtal clocks in entire period of the PWM waveform. Table 242. PWM Channel 2 B Register Description 5-35xx-D1-1.08-061705 193 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 14.1.8. PWM Channel 3 A Register This register controls PWM channel 3. HW_PWM_CH3AR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ACTIVE INACTIVE 2 3 X:$FA38 Table 243. HW_PWM_CH3AR BITS LABEL 23:12 INACTIVE RW RESET RW $000 11:0 RW $000 ACTIVE DEFINITION Number of divided xtal clocks to count before resetting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than this value to reset the ACTIVE FF. Number of divided xtal clocks to count before setting the ACTIVE flip flop for this channel. The internal count of the channel is compared for greater than or equal to this value. If the internal count is greater than or equal then the ACTIVE FF is set to one. Table 244. PWM Channel 3 A Register Description 14.1.9. PWM Channel 3 B Register This register controls PWM channel 3. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PERIOD 2 2 ACTIVE_STATE 2 3 X:$FA39 INACTIVE_STATE HW_PWM_CH3BR Table 245. HW_PWM_C30BR BITS LABEL 23:16 RSRVD 15:14 ACTIVE_STATE RW RESET R $0 RW 00 DEFINITION Reserved – Must be written with 0. The logical active state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 Table 246. PWM Channel 3 B Register Description 194 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 13:12 IN_ACTIVE_STATE RW RESET RW 00 11:0 RW $000 PERIOD DEFINITION The logical inactive state is mapped to a physical state at the output pins, as follows: 00,01 = hi-Z 10 = 0 11 = 1 Number of divided xtal clocks in entire period of the PWM waveform. Table 246. PWM Channel 3 B Register Description (Continued) 5-35xx-D1-1.08-061705 195 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 15. I2C INTERFACE The I2C is a standard 2 wire serial interface used to connect the chip with peripherals or host controllers. This interface provides a standard speed (up to 100kbps) and high speed (up to 400kbps) I2C connection to multiple devices with the chip acting in either I2C master or I2C slave mode. Typical applications for the I2C bus include: EEPROM, LED/LCD, FM Tuner, Real Time Clock, etc. The I2C port supports multi-master configurations where peripheral devices can send messages without being queried. 15.1. I2C-Specific Implementation • The I2C block can be configured as either a master or slave device. In master mode it generates the clock (I2C_SCL) and initiates transactions on the data line (I2C_SDA). • The I2C block can be configured to pack data into 8, 16 or 24 bit words. Data on the I2C bus is always byte oriented. • The I2C block has a programmable device address for master transactions. It has a fixed seven bit address of $43 = 7’b1000011 for slave transactions. As seen in the eight bit device address byte, this address corresponds to $86 where the least significant bit is the R/W bit. • When the interface is enabled, it immediately goes into slave mode and searches for a start event. It then looks for a match on its hardwired device address. If an STMP35xx master transaction is started, then the slave is forced to remain in its idle state until the master transaction completes. 15.1.1. I2C Interface External Pins I2C_SDA – I2C Serial Data. This pin carries all address and data bits. I2C_SCL – I2C Serial Clock. This pin carries the clock used to time the address & data. Pull-up resistors are required on both of the I2C lines as all of the I2C drivers are open drain (pull-down only). Typically, external 2k-Ohm resistors are used to pull the signals up to VddIO. Note: See Table 498 for I2C pin placement. 196 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip I2C Interface Control/Status Register 0 5 0 4 0 3 0 2 0 1 RIE 0 6 0 0 I2C_EN 0 7 BUSY 0 8 TIE 0 9 ARBLOST 1 0 MODE 1 1 TDE 1 2 RDR 1 3 RWN 1 4 WL 1 5 ROFL 1 6 TREQ 1 7 TUFL 1 8 ACKF 1 9 SUBA 2 0 LWORD 2 1 ROFLCL 2 2 TUFLCL 2 3 X:$FFE7 ONEBYTE HW_I2CCSR BCNT 15.1.2. Table 247. HW_I2CCSR BITS LABEL RW RESET DEFINITION 23:22 RSRVD R 0 Reserved – Must be written with 0. 21 ONEBYTE RW 1 Master One Byte Transfer Mode – When set to one, this bit enables a special one payload byte transfer mode in which the sub address bytes are not generated. This master only mode allows the transmission of a single I2C address byte from HW_I2CDAT[23:16] and one data byte taken from HW_I2CDAT[15:8]. WARNING: There is a defect in all revisions of the silicon that precludes the use of the one byte transfer mode. The SDK has an effective circumvention for one byte devices using GPIO. 20 TUFLCL RW 0 Transmitter Underflow Clear bit – Setting this bit clears both the TDE and TUFL bits. When an underflow condition occurs the correct procedure is to write data to the HW_I2CDATR register and then send a high pulse on the TUFLCL to clear the TUFL bit. The TUFLCL bit must be manually reset by software after setting it to clear the TUFL or TDE bit. 19 ROFLCL RW 0 Receive Overflow Clear Flag – Setting this bit clears both the RDR and ROFL bits. The correct procedure is to read the HW_I2CDATR register followed by a high pulse on the ROFLCL bit. The ROFLCL bit must be manually reset by software after setting it to clear the ROFL or RDR bit. 18 SUBA R 0 Sub Address – This bit is set when the Master is transmitting two bytes of sub address following the slave address byte. 17 LWORD RW 0 Last Word – This bit is set in master mode when the processor has written its last word to the I2C transmit register or upon receiving the second last word. The WL field of this register decides the size of the last block of data received by the master. This bit is cleared when the stop is generated. If a receive overflow condition occurs in the master, at least two bytes must be received before a stop is generated i.e. if the WL field is 0 then the last word bit must not be set on this receive. 16:15 BCNT R 00 Byte Count – These bits hold the number of bytes received by the device in either master or slave mode. BCNT Bytes received 01 1 byte 10 2 bytes 00 3 bytes 14 ACKF RW 0 Acknowledge Failure – When this bit is set, no acknowledge has been returned. 13 TUFL R 0 Transmitter Underflow – An underflow occurs when TDE = 1 and another transfer is triggered copying the contents of the data register into the shift register. Table 248. I2C Interface Control/Status Register Description 5-35xx-D1-1.08-061705 197 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 12 ROFL 11 TREQ RW RESET DEFINITION R 0 Receiver Overflow – An overflow occurs when RDR = 1 and the shift register performs another parallel load of the data register. The shift register is 8 bits wide for the master receiver, 24 bits wide for the slave receiver. Cleared by a read of the HW_I2CDATR register followed by a high pulse on the ROFLCL bit. RW 0 Master Transaction Request – This bit is used to request a transfer with the I2C in master mode. It is pulsed high (bset,bclr) to request the transfer and the mode bit must already be driven for either standard or fast mode. Upon receiving the pulse the I2C master section will generate a start condition and transmit the slave address. 10:9 WL RW 00 8 RWN R 0 7 TDE R 0 6 RDR R 0 5 MODE RW 0 4 TIE RW 0 3 ARBLOST RW 0 2 BUSY R 0 This bit is also used to request a repeated start to the master device. A pulse must be sent, when the processor has written its last word to the I2C transmit register or upon receiving the last word, to generate a repeated start at the end of the subsequent receive or transmit. To request a repeated start immediately after the slave address and two bytes of sub address have been transmitted it is necessary to send a pulse first to start the transfer of the slave address and then another pulse a maximum of ns later to request the repeated start. Word Length – Defines the word length being used by the interface for either I2C master or slave modes. WL Word Length 00 8 bit 10 16 bit 01 24 bit These bits are also used with the LWORD bit so that the device can decide whether the last block of data the master receives is 8, 16 or 24 bits, i.e. wl0, wl1 are set before the transfer and then the LWORD bit is set on the receive of the second last block of data. These bits should not be changed while a transfer is in progress. Read/Not Write – If equal to zero the Master is writing to the Slave, when equal to one the Master is reading from the slave. Transmitter Data Empty – This bit is set when the contents of the transmitter data register are loaded into the shift register. When this bit is set, the processor can write to the Transmit Data register. If transmit interrupts are enabled, when this bit becomes set, an interrupt will be asserted to the processor. Receiver Data Ready – This bit is set when the shift register performs a broadside load to the Receive Data Register. It is cleared by hardware when the processor reads the Receive Data Register. If receive interrupts are enabled, when this bit becomes set, an interrupt will be asserted to the processor. Operating Mode Bit – When set to one, the I2C is in Fast mode (400Kbits/sec.) and when cleared, the I2C is in Standard mode (100 Kbits/sec). There is noise suppression for both modes. If the device is to be a master, the mode must be set or cleared before TREQ (bit 11) becomes active. Transmitter Interrupt Enable – When set, the transmit interrupts are enabled to the processor. Arbitration lost – After every transfer using the master I2C device this bit should be checked to ensure arbitration has not been lost to another master. This bit is cleared by a write to the control/status register. I2C Bus Busy – When this bit is set the I2C bus is busy. It is set after a START condition is detected and remains set until a STOP condition is detected. If there is arbitration on the I2C_SDA line and our device loses, then the busy bit will remain set until our device detects a stop condition from the winning device. Table 248. I2C Interface Control/Status Register Description (Continued) 198 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 1 RIE 0 I2C_EN RW RESET DEFINITION RW 0 RIE Receiver Interrupt – Enable When set, the receive interrupts (Receiver Data Ready and Receiver Overflow) are enabled. Both interrupts are processed by reading data from the I2C data register (HW_I2CDATR). If these interrupts are not processed they will continuously reoccur. RW 0 Peripheral Enable – When set, the I2C receive and transmit channel are enabled. Table 248. I2C Interface Control/Status Register Description (Continued) 5-35xx-D1-1.08-061705 199 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 15.1.3. I2C Data Registers There are two 24-bit Data Registers located at the same address, Receive and Transmit Data Registers. The Receive Data Register contents are read over the data bus if the processor performs a read of the address X:$FFE6. The Transmit Data Register is written to the external data bus if the processor writes to this same address. The Transmit Data Register should be filled before setting the TREQ bit to initiate a transfer. HW_I2CDAT 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DATA 2 3 X:$FFE6 Table 249. HW_I2CDAT BITS LABEL RW 23:0 DATA RW 0 RESET DEFINITION Address/DATA register Table 250. I2C Data Register Description On the first write to the transmit data register, the I2C master transmits HW_I2CDAT[23:16] first. Therefore this byte is always the slave address targeted for a master read or write transaction. When the HW_I2CCSR_ONEBYTE bit is set to one in master mode, then HW_I2CDAT_DATA[23:16] is transmitted followed by HW_I2CDAT_DATA[15:8]. Again, the upper byte holds the slave address. For master read transactions, the target slave address is written to HW_I2CDAT_DATA[23:16] before the read transaction is started with the TREQ bit. 15.1.4. I2C Clock Divider Register The I2C Clock Divider Register controls the division ratio between the system clock (dclk) and the I2C serial clock (I2C_SCL). The value in the FACT field is used to divide the system clock to generate the I2C clock. This clock is further divided by 4 if the MODE bit (bit 5) in the I2C Interface Control/Status register is clear. The I2C clock frequency can be calculated as follows: Fast mode (HW_I2CCSR:MODE = 1): I2C clock = DCLK / (FACT*2 + 3) Slow mode (HW_I2CCSR:MODE = 0):I2C clock = DCLK / (FACT*8 + 22) If the system clock is set to the crystal oscillator with a 24.0 MHz crystal, then the reset value for this register will divide this clock by 550 to give an I2C clock of ~43.6 kHz. During I2C boot modes, the bootrom sets the HW_I2CCSR:MODE bit to switch the I2C block into fast mode — the clock speed in this case will become ~178 kHz. Note that the fastest master on the bus will determine the high period of the clock while the slowest master OR slave determines the low period of the clock. The HW_I2CDIV counter determines the minimum high period as controlled by the STMP35xx when it is in master mode. This counter controls the minimum low period when the STMP35xx is enabled in master mode. In slave mode, the STMP35xx follows the clock timing established by the controlling master. 200 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_I2CDIV 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 FACT 2 3 X:$FFE5 Table 251. HW_I2CDIV BITS 23:9 8:1 0 LABEL RSRVD FACT RSRVD RW RESET DEFINITION R 0 Reserved – Must be written with 0. W 01000010 Clock divider value bits, NOTE This is a write only register. R 0 Reserved – Must be written with 0. Table 252. I2C Clock Divider Register Description 15.1.5. I2C Interrupt Sources The I2C port can be used in either interrupt driven or polled modes. If interrupts are enabled, a level-sensitive interrupt will be signaled to the processor upon one of the following events. ADDRESS P:$0030 P:$0032 P:$0034 P:$0036 BIT 6 12 7 13 Table 253. LABEL INTERRUPT SOURCE 2C Receiver Data Ready RDR I ROFL I2C Receiver Overflow TDE I2C Transmitter Data Empty TUFL I2C Transmitter Underflow I2C Interrupt Address Map The interrupt lines are tied directly to the status bits of the Control/Status Register. Clearing these bits through software will remove the interrupt request. The Receiver Data Ready and Transmitter Data Empty requests are automatically removed via hardware when the Receive Data Register is read or the Transmit Data Register is written respectively. The overflow and underflow error signals need to be cleared through software by writing directly to the status bits of the Control/Status Register. 15.2. I2C Bus Protocol With reference to the clocking scheme shown in the figure below, the I2C interface operates in the following manner: A START condition is defined as a HIGH to LOW transition on the data line while the I2C_SCL line is held HIGH. After this has been transmitted by the Master, the bus is considered busy. The next byte of data transmitted after the start condition contains the address of the slave in the first 7 bits and the eighth bit tells whether the Master is receiving data from the slave or transmitting data to the slave. When an address is sent, each device in the system compares the first seven bits after a start condition with its address. If they match, the device considers itself addressed by the Master. In slave mode, the I2C write address is 86h, its read address is 87h. Data transfer with acknowledge is obligatory. The transmitter must release the I2C_SDA line during the acknowledge pulse. The receiver must then pull the data 5-35xx-D1-1.08-061705 201 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Standard Mode SCL SDA 8 bits 8 bits SLAVE Address & r/w DATA Acknowledge signal START Condition Acknowledge signal STOP Condition Figure 73. I2C data and clock timing line LOW so that it remains stable low during the HIGH period of the acknowledge clock pulse. A receiver which has been addressed is obliged to generate an acknowledge after each byte of data has been received. 15.2.1. Slave Mode Protocol The flow chart for the finite state machine is shown in Figure 74. At device start-up all the registers are reset so that the state is known from that time onward. Once the I2C is enabled the slave will wait to detect a start condition on the I2C_SCL and I2C_SDA lines. Once this is detected the slave will read in 8 bits and check against its own device address which is $86 == 7’b1000011 to see if a master device is trying to start a transfer with our device. If it is our address an acknowledge is sent, otherwise our slave will not acknowledge and will return to state IDLE. Next the RW is checked. If it is a write operation then the two sub address bytes must be received and acknowledged and then the data is received with a check of receive overflow before data is overwritten into the DSP_rx register. If the master is requesting a read operation then the slave must start sending data on the I2C_SDA bus immediately after acknowledging the Slave address and RW bit. After each byte the acknowledge from the master must be checked. When the master has received the last byte it will not send an acknowledge and the slave will return to state IDLE. As long as the slave continues transmitting it must first check whether the DSP_tx register has been fully transmitted and if so request more data. The underflow condition is also checked. Data is now transmitted in byte format. Each data transfer has to contain 8 bits. The number of bytes transferred per transfer is unlimited. Data is transferred with the Most Significant Bit (MSB) first. If a receiver can’t receive another complete byte of data until it has performed some other function, it can hold the clock line, I2C_SCL LOW to force the transmitter into a wait state. Data transfer only continues when the receiver is ready for another byte and releases the clock line. If a slave receiver doesn’t acknowledge the slave address (e.g. it is unable to receive because it is performing some real time function) the data line must be left HIGH by the slave. The Master can then abort the transfer. A LOW to HIGH transition on the I2C_SDA line while the I2C_SCL line is HIGH is defined as a STOP condition. Each data transfer must be terminated by the generation of a STOP condition. 202 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip W ait for start Yes O ur Master TR EQ Receive sub address 0 No Receive slave address No Setup tx data O ur address Send Ack Yes Yes Ack address Yes Rofll rdrx No Read No No Receive 8 bits Yes Transmit 8 bits No 24 bits or start stop Yes No ACK Setup tx data Yes No tdefx No TX reg empty Yes tdefx interrupt req Yes Yes Rdr interrupt req TUFL No Figure 74. I2C Slave Mode Flow Chart 5-35xx-D1-1.08-061705 203 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Tables 254 - 257 show the first 2 bytes of data as a sub-address for purposes of illustration. The sub-address is used to address the memory space inside the device. Table 258 defines each sub-address shown. ST SAD+W SAK SUB SAK SUB SAK DATA SAK SP Table 254. I2C transfer when Master is writing one byte of data to a slave ST SAD+W SAK SUB SAK SUB SAK DATA SAK DATA SAK SP Table 255. I2C transfer when Master is writing multiple bytes to a slave ST SAD+W SAK SUB SAK SUB SR SAD+R SAK DATA NMAK SP Table 256. I2C transfer when Master is receiving one byte of data from a slave ST SAD+W SAK SUB SAK SUB SR SAD+R SAK DATA MAK DATA MAK DATA NMAK SP Table 257. I2C transfer when Master is receiving multiple bytes of data from a slave BIT ST SR SAD SAK SUB DATA SP MAK NMAK DESCRIPTION START condition Repeated START condition Slave address Slave acknowledge Sub address Data STOP condition Master Acknowledge No Master Acknowledge Table 258. I2C Slave and Master mode address definitions 15.2.2. Master Mode Protocol In Master Mode the I2C interface generates the clock and initiates all transfers. 15.2.2.1. Clock Generation 2 The I C clock is generated from the system clock as described above in the register description. If another device pulls the clock low before the I2C block has counted the high period, then the I2C block immediately pulls the clock low as well and starts counting its the low period. Once the low period has been counted the I2C block releases the clock line high but must then check to see if another device stills holds the line low in which case it enters a high wait-state. In this way the I2C_SCL clock is generated with its low period determined by the device with the longest clock low period and its high period determined by the one with the shortest clock high period. 204 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 15.2.2.2. Master Mode Operation The finite state machine for master mode operation is shown in Figure 75 and Figure 76. Figure 75 shows the start condition and transmission of the slave address and two sub address bytes. Figure 76 shows the read and write states. Tables 259 - 262 show examples of Master Mode I2C transactions. Table 258 defines each sub-address shown. The following read after write transactions are performed using the restart technique described in the description of HW_I2CCSR_TREG. ST SAD+W SAK SUB SAK SUB SAK DATA SAK SP Table 259. I2C transfer when the interface as master is transmitting one byte of data ST SAD+R SAK DATA MAK DATA MAK DATA NMAK SP Table 260. I2C transfer when the interface as master is >1 byte of data from slave ST SAD+W SAK SUB SAK SUB SAK SR SAD+R SAK DATA NMAK SP Table 261. I2C transfer when Master is receiving one byte of data from slave internal sub-address ST SAD+W SAK SUB SAK SUB SAK SR SAD+R SAK DATA MAK DATA MAK DATA NMAK SP Table 262. I2C transfer when Master is receiving >1 byte of data from slave internal sub-address To receive data bytes from non-EEPROM devices that do not require the two subaddress bytes, perform an isolated read without using the read after write restart technique. Make sure that the HW_I2CCSR_ONEBYTE bit is a zero and the following read transactions occur:: ST SAD+R SAK DATA MAK SP Table 263. I2C transfer “FM Tuner” read of one byte. ST SAD+R SAK DATA MAK DATA MAK DATA Table 264. I 2C NMAK SP transfer “FM Tuner” read of three bytes. 15.2.2.3. Special One Byte Master Mode Transmission There is a special “one byte mode” which is enabled when the HW_I2CCSR_ONEBYTE bit equals one. In this mode, a start condition is transmitted, followed by the device address byte followed by a single byte of write data. This sequence always ends with a stop condition. ST SAD+W SAK DATA SAK SP Table 265. I2C transfer when the interface as master is transmitting special ONEBYTE mode The following C code is used to send a one byte transmission: // Power up the I2C bus pins HW_GP0PWR.B.B16 = 1; HW_GP0PWR.B.B17 = 1; // Load the data register with 1 byte of address[23:16] = 0xC0, // 1 byte data [15:8] = 0x55 and 1 byte of don’t care [7:0] HW_I2CDAT.U = 0xC05500; // Enable I2C HW_I2CCSR.B.I2C_EN = 1; 5-35xx-D1-1.08-061705 205 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip // Set word length to 16 bits (1 addr byte & 1 data byte) HW_I2CCSR.B.WL = 2; // Set the last word bit HW_I2CCSR.B.LWORD = 1; // Enable special one byte functionality HW_I2CCSR.B.ONEBYTE = 1; // Start the transaction HW_I2CCSR.B.TREQ = 1; HW_I2CCSR.B.TREQ = 0; // Wait for busy to clear while(HW_I2CCSR.B.BUSY == 1); // a frame with one byte of address and one byte of data was just sent READ STATES Read WRITE STATES Receive 8 bits Enable tx data No 8 bits tx trans_en <= 1 Check last_word rec_count Transmit 8 bits 8 bits Decide on ack Yes Check ack last_word No Yes Ack received NMACK NMACK End ack Check tx reg ROFL One byte left No STOP STATE Yes ROFL No No SETUP TX STATE Yes No rdrx last_word tdef <= 1 STOP STATE Figure 76. I2C Master Mode Flow Chart – Read and Write States 206 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Wait for dspt i2c_sda_en=1 stop condition i2c_sda_en=0 start condition Setup stop Suba byte 0 Yes suba 0 just transmitted No Setup address Setup TX TX addr/suba Underflow 8 bits tx No No Yes Yes stop_clk <= 1 Chk ack No ACK Yes ONEBYTE && (ADDR+SUBA0) && WL1=1 WRITE STATES Yes No rep_start rep_start /last_word last_word No Chk read or write Write No slave addr just transmitted Yes Read or Write Read READ STATES Figure 75. I2C Master Mode Flow Chart Start condition and transmission of slave address and two sub address bytes or special device address plus one byte mode (HW_I2CCSR_ONEBYTE =1). 15.3. Known Chip Defects with I2C 15.3.1. Clear Quest Entry STMP00003940 All revisions of the chip are known to have a defect in which the I2C one byte feature fails for back-to-back writes. If the I2C block writes back-to-back to a slave in ONE_BYTE mode, only the first transfer actually sends out the data byte. The frame for the first transfer looks correct and stops correctly. All subsequent transfers (until 5-35xx-D1-1.08-061705 207 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip chip reset) look as follows: start; send address; stop. The frames look correct except that the data byte is missing. The workarounds for past I2C bugs are ineffective. Disabling and re-enabling ONE_BYTE and the I2C block itself have no effect. The software workaround available in SDK for the FM Tuner suffices for other one byte devices. 15.3.2. Clear Quest Entry STMP00002736 All revisions of the chip are known to have a defect in which the I2C gets confused if reset while still busy. In the ROM code, there is a section that waits for the port to be no longer busy after the last word is read in the boot process. Then it writes a 0 to the I2C control register, which should reset it. What is actually happening is that the I2C peripheral goes into a bad state when the 0 is written. It seems to work okay when a delay is added between when it is no longer "busy" and when the 0 can be written to the CSR. But, as this is ROM code, there's no potential for adding the delay. It was found, that the peripheral can be reset by: Set TREQ Bit Clear TREQ Bit Set Enable bit Clear ACKF Bit 208 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 16. ENHANCED SPI INTERFACE The SPI is a standard 4-pin Serial Peripheral Interface for inter-IC control and communication. It interfaces on one side to the SPI bus and on the other has a standard register data and interrupt interface. Although an SPI system can be configured as a master or a slave device, the STMP35xx only supports a master interface via the eSPI. During an SPI transfer, data is shifted out and shifted in (transmitted and received) simultaneously. The SPI_SCK line synchronizes the shifting and sampling of the information. It is an output when the SPI is configured as a master and an input when the SPI is configured as a slave. Selection of an individual slave SPI device is performed on the slave select line and slave devices that are not selected do not interfere with the SPI buses. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS ESPI Programmable Registers match ESPI DMA Engine & Control X MISO MOSI SCLK shift_in[7:0] shift_out[7:0] Byte Processor Clock Generation Figure 77. Enhanced SPI Block Diagram 5-35xx-D1-1.08-061705 209 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 16.1. SPI Pins SPI_MISO – Master In/Slave Out. Serial input in master mode and output in slave mode. SPI_MOSI – Master Out/Slave In. Serial output in master mode and input in slave mode. SPI_SCK – Serial Clock. Bit clock output in master mode and input in slave mode. SPI_SSn – Slave Select. Selects SPI CS0 in master mode, chip select input in slave mode. In master mode the SPI_SSn pin is controlled via software through the GPIO module. In slave mode the pin is in SPI mode and connects directly to the SPI module. Note: See Table 502 for SPI pin placements. espi_init HW_ESPI_CSR_SFTRST = 0 HW_ESPI_CSR_MPSPSEL = 0 HW_ESPI_CSR_DMAWAIT = n # wait states between DMA transfers send/receive MSB first HW_ESPI_CNFG_MSB_FIRST = 1 HW_ESPI_CNFG_ESPI_EN = 1 HW_ESPI_CLKCNTRL_CLKDIV = [2:255] HW_ESPI_CLKCNTRL_CLKPOL = [0:1] HW_ESPI_CLKCNTRL_CLKPHA = [0:1] ESPI controls pins set clock divider Set clock polarity & phase STOP Figure 78. Enhanced SPI Common Initialization Sequence 210 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip espi_dma_read call espi_init first Set number of words HW_ESPI_CNFG_XFER_SIZE = [0:65535] HW_ESPI_CNFG_READ_RAM = 1 HW_ESPI_CNFG_SS = [0:1] HW_ESPI_ADDR_ADDR = [0:65535] HW_ESPI_INDEX_MEM_SPACE = [0:2] HW_ESPI_INDEX_BYTE = [0:2] HW_ESPI_CSR_DONE_INT = 1 HW_ESPI_CSR_DONE_INTEN = 1 HW_ESPI_CSR_KICK = 1 YES HW_ESPI_CSR_ KICK==1 Set for READ from on-chip RAM Set ESPI Slave Select point to source buffer Select memory space Set starting bytre position Clear previous done int Use done interrupts Kick off a DMA read to SPI wait for ESPI read DMA or return and wait for done interrupt NO STOP Figure 79. Enhanced SPI DMA Read Flowchart 5-35xx-D1-1.08-061705 211 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip espi_dma_write call espi_init first Set number of words HW_ESPI_CNFG_XFER_SIZE = [0:65535] HW_ESPI_CNFG_READ_RAM = 0 HW_ESPI_CNFG_SS = [0:1] Set ESPI Slave Select HW_ESPI_ADDR_ADDR = [0:65535] point to destination buffer Set for write to on-chip RAM Select memory space Set starting byte position HW_ESPI_INDEX_MEM_SPACE = [0:2] HW_ESPI_INDEX_BYTE = [0:2] Clear previous done int HW_ESPI_CSR_DONE_INT = 1 Use done interrupts HW_ESPI_CSR_DONE_INTEN = 1 HW_ESPI_CSR_KICK = 1 YES Kick off a DMA write to SPI wait for ESPI write DMA or return and wait for done interrupt HW_ESPI_CSR_ KICK==1 NO STOP Figure 80. Enhanced SPI DMA Write Flowchart 16.2. Enhanced SPI Programmable Registers The following registers are available for DSP programmer access and control of the enhanced SPI controller. 16.2.1. ESPI Configuration and Status Register This register provides overall control and status information for the ESPI, including interrupt control and DMA overhead control. 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 KICK 1 8 DONE_INT 1 9 PIOMATCH_INT 2 0 DONE_INTEN 2 1 PIOMATCH_INTEN 2 2 MPSPSEL SFTRST 2 3 X:$FF00 DMAWAIT HW_ESPI_CSR Table 266. HW_ESPI_CSR 212 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23 SFTRST 22 RSRVD 21:20 MPSPSEL RW RESET RW 1 R 0 RW 00 19:16 15:12 11:10 9 8 7:6 5 RSRVD DMAWAIT RSRVD PIOMATCH_INTEN DONE_INTEN RSRVD PIOMATCH_INT R RW R RW RW R RW 4 DONE_INT RW 0 3:1 0 RSRVD KICK R 000 RW 0 0000 0000 00 0 0 00 0 DEFINITION Software Reset Reserved – Must be written with 0. Mode Select bits. In the current design these bits have no effect. Reserved – Must be written with 0. Number dclk wait states to insert between DMA requests. Reserved – Must be written with 0. PIO Match Interrupt Enable. Done Interrupt Enable. Reserved – Must be written with 0. When SPI_MODE == MATCH and PIO Read Register matches received data then this interrupt status bit will be set to one. Writing a one to this bit will clear it. When the SPI interface has completed transfer that was kicked off then this bit is set to one. Writing a one to this sticky bit will clear it. Reserved – Must be written with 0. Set to one to process the command that has been established in the various HW_ESPI registers. Table 267. ESPI Configuration and Status Register Description 16.2.2. ESPI Configuration Register 1 This register provides configuration and control specific to an ESPI transfer. 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ESPI_EN 1 9 READ_RAM 2 0 SS 2 1 XFER_SIZE 2 2 SPI_MODE 2 3 X:$FF01 MSB_FIRST HW_ESPI_CNFG Table 268. HW_ESPI_CNFG BITS LABEL 23:20 SPI_MODE RW RESET RW $0 19:4 XFER_SIZE RW $0200 3 MSB_FIRST RW 1 DEFINITION 00 = DMA Mode, ESPI will transmit entire buffer. 01 = PIO Mode, ESPI will transmit each byte written to PIO DATA register. 10 = PIO Match Mode, ESPI continuously transmits byte in PIO register until received data matches PIO_MATCH register. 011,1XX = reserved Number of bytes to transfer when the KICK bit is set in DMA or PIO MATCH mode. Transmit serial data from the Most Significant Bit (MSB) first when this bit is set to one. Transfer LSB first when this bit is set to zero. Table 269. ESPI Configuration Register Description 5-35xx-D1-1.08-061705 213 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 2 SS RW RESET RW 0 1 READ_RAM RW 0 0 ESPI_EN RW 0 DEFINITION Slave Select pin is controlled by HW_ESPI_SPICNFG_SS when HW_ESPI_SPICNFG_ESPI_EN is a one. Set to one to “read” from on-chip RAM and write to the slave SPI device. Set to zero to transfer from the external SPI device TO the on-chip RAM buffer. Same directions relative to SPI device apply for the PIO case. Set to one to enable ESPI Control of chip pins instead of older SPI device interface. Table 269. ESPI Configuration Register Description (Continued) 16.2.3. ESPI Clock Control Register This register controls the SPI clock signal frequency, phase and idle polarity. 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CLKPOL 2 2 CLKDIV 2 3 CLKPHA HW_ESPI_CLKCNTRL X:$FF02 Table 270. HW_ESPI_CLKCNTRL BITS LABEL 23:12 RSRVD 11:4 CLKDIV RW RESET R 00 RW $02 3:2 1 RSRVD CLKPOL R 00 RW 0 0 CLKPHA RW 0 DEFINITION Reserved – Must be written with 0. DCLK divider for SPI-clock. Maximum frequency is dclk/2, minimum frequency is dclk/256. Set to 0 or 1 to disable. Reserved – Must be written with 0. Defines the idle state of the clock. 1: clock idle at logic high voltage 0: clock idle at logic low voltage In conjunction with CLKPOL, determines the edge on which data is transmitted. Table 271. SPI Clock Control Register Description 16.2.4. ESPI Programmed I/O Data Register This register provides PIO read and write access to the serial port. HW_ESPI_PIODATA X:$FF03 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 MATCH 2 1 IN 2 2 OUT 2 3 Table 272. HW_ESPI_PIODATA 214 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS 23:16 OUT LABEL RW RESET RW $00 15:8 IN R $00 7:0 MATCH RW $00 DEFINITION Data to output on the SPI interface during a PIO transfer or during a PIO_MATCH mode transfer. Received data from the SPI interface can be read here. Valid only while in PIO-Mode and DONE_INT is set to one. Data used to compare against input from slave to generate interrupts. Table 273. ESPI Programmed I/O Data Register Description 16.2.5. ESPI DMA Address Register This register holds the DMA starting address. HW_ESPI_ADDR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADDR 2 3 X:$FF04 Table 274. HW_ESPI_ADDR BITS LABEL 23:16 RSRVD 15:0 ADDR RW RESET R 00 RW $0000 DEFINITION Reserved – Must be written with 0. Address location of the first data word to be transferred by the DMA. Table 275. ESPI DMA Address Register Description 16.2.6. ESPI DMA Index Register This register holds the memory space selector and starting byte number for DMA transfers. 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 MEM_SPACE 2 3 X:$FF05 0 3 0 2 0 1 0 0 OFFSET HW_ESPI_INDEX Table 276. HW_ESPI_INDEX 5-35xx-D1-1.08-061705 215 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:6 RSRVD 5:4 MEM_SPACE RW RESET R $00000 RW 00 3:2 1:0 R 00 RW 00 RSRVD OFFSET DEFINITION Reserved – Must be written with 0. Memory space in which the data-block is located 00 = X-Memory 01 = Y-Memory 10 = P-Memory 11 = reserved Reserved – Must be written with 0. Byte index into 24-bit on-chip RAM word where the first SPI byte will be written or read. This bitfield provides byte level addressability to DMA transfers targeted at the 24 bit wide on-chip RAM. It specifies the starting byte within the first word addressed by the DMA. Table 277. ESPI DMA Index Register Description 216 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 17. SPI INTERFACE The SPI is a standard 4-pin Serial Peripheral Interface for inter-IC control and communication. It interfaces on one side to the SPI bus and on the other has a standard register data and interrupt interface. The SPI system can be configured as a master or a slave device. During an SPI transfer, data is shifted out and shifted in (transmitted and received) simultaneously. The SPI_SCK line synchronizes the shifting and sampling of the information. It is an output when the SPI is configured as a master and an input when the SPI is configured as a slave. Selection of an individual slave SPI device is performed on the slave select line and slave devices that are not selected do not interfere with the SPI buses. 17.1. SPI Pins SPI_MISO – Master In/Slave Out. Serial input in master mode and output in slave mode. SPI_MOSI – Master Out/Slave In. Serial output in master mode and input in slave mode. SPI_SCK – Serial Clock. Bit clock output in master mode and input in slave mode. SPI_SSn – Slave Select. Selects SPI CS0 in master mode, chip select input in slave mode. In master mode the SPI_SSn pin is controlled via software through the GPIO module. In slave mode the pin is in SPI mode and connects directly to the SPI module. Note: See Table 502 for SPI pin placements. 17.2. SPI Registers 17.2.1. SPI Control Register HW_SPCSR BITS LABEL RW RESET X:$FFF9 DEFINITION 23:16 RSRVD R 0 Reserved – Must be written with 0. 15:8 DIV RW 00001010 Divide factor bits – These bits are used to control the frequency of the SPI serial clock with relation to the device clock. The number must be an even number. These bits must be set before the SPE or MSTR bits i.e. before the SPI is configured into master mode. Note: When the DIV field is written to, if the value written is less than the current value in the internal counter register, then the counter will continue to increment to its maximum value, thereby causing a single very long clock cycle. The new DIV value will then not take effect until the next SPI clock. 7 MODF RW 0 Mode fault flag – Mode fault occurs if the SPI system is configured as a master and the SPI_SSn input line goes to active low. This happens if a second SPI device becomes a master and selects this device as if it were a slave. Reading the HW_SPCSR with MODF set automatically clears the MODF flag. Note: This condition should never exist since the SPI_SSn line is not used as an input in master mode. 6 WCOL RW 0 Write Collision Error Flag – The WCOL Flag is set if the HW_SPDR is written before the end of transfer is signaled. WCOL is cleared by reading the HW_SPCSR with WCOL set, followed by an access of the HW_SPDR. Table 278. SPI Control Register Description 5-35xx-D1-1.08-061705 217 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 5 SPIF RW 0 4 CPHA RW 0 3 CPOL RW 0 2 SPIE RW 0 1 MSTR RW 0 0 SPE RW 0 DEFINITION SPI Transfer Complete Flag – The SPIF Flag is set to a one at the end of an SPI transfer. SPIF is cleared by an access of the HW_SPDR or by a write to the HW_SPDR register. The definition of an end of transfer depends on who is the master and who is the slave. Clock Phase Select – Note: There must be a delay of 1/2 the clock period of SCLK, after a toggle of CPHA or CPOL, before there is a write to the HW_SPDR. This is to prevent glitches on the SCLK. Clock Polarity Select – 0 Active high clocks selected; SCLK idles low. 1 Active low clocks selected; SCLK idles high. Note: The SPI_SSn line must be de-asserted and reasserted for a change in the CPOL bit. SPI interrupts enabled – When the SPIE bit is set SPI Interrupts are enabled and triggered when the SPIF bit is set. Master/Slave Select – When the MSTR bit is set the SPI is configured as a master and when 0 a slave. SPI System Enable – When SPE is set the SPI system is enabled and, when cleared, disabled. Table 278. SPI Control Register Description (Continued) 17.2.2. SPI Data Register The SPI interface runs in PIO mode only. Its 8-bit data register is mapped to the X data address space. Writes to the lower byte of this register are shifted out SPI_MOSI in Master Mode and SPI_MISO in slave mode. This register is read on the transaction completion to retrieve the incoming data from SPI_MISO in master mode and SPI_MOSI in slave mode. HW_SPDR BITS 23:8 7:0 LABEL RW X:$FFFA RESET DEFINITION RSRVD R 0 Reserved – Must be written with 0. SPIDATA RW 00000000 Table 279. SPI Data Register Description 17.3. Transferring Data over SPI 17.3.1. Master Mode In master mode the SPI block must generate the SPI_SCK and send appropriate data/commands to the slave device(s). 17.3.1.1. Clock Generation The clock is the main chip digital clock divided by the divide factor (see above). Out of reset the SPI_SCK is 24.0/10 ~= 2.4 MHz. The CPOL (clock polarity) and CPHA (clock phase) bits of the HW_SPCSR are used to select any of the four combinations of serial clock. These bits must be the same for both the master and slave SPI devices. The clock polarity bit, selects either an active high or active low clock but does not affect transfer format. The clock phase bit selects the transfer format. See Figure 81. 218 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip SPI_SSn SPI_SCK CPOL=0, CPHA=0 SPI_SCK CPOL=0, CPHA=1 SPI_SCK CPOL=1, CPHA=0 SPI_SCK CPOL=1, CPHA=1 SPI_MISO SPI_MOSI MSB 6 5 4 3 2 1 LSB Internal Strobe for Data Capture Figure 81. SPI signal timing, including the various SCLK phases 17.3.1.2. Slave Selects in Master Mode Multiple peripheral slave devices can be accessed by the chip, using GPIO pins as chip selects. The chip select pins must be configured as GPIO outputs by the onchip DSP. The system code should contain a setup routine that sets each chip select to non-asserted (high). Before any peripheral is accessed its chip select must be asserted (low). The chip select should be de-asserted again before another peripheral is accessed. The SPI_SSn pin should not be in a low state while the SPI is used or a mode fault will occur. 17.3.2. Slave Mode In slave mode the master device (another chip) generates the clock and slave select for the SPI block. The SPI block will only receive and transmit data on the SPI_MISO and SPI_MOSI lines when the SPI_SSn input is asserted low. In this mode the SPI_SSn line is controlled by the SPI peripheral block. To initialize the SPI into slave mode, the SPI interrupts are enabled (SPIE=1) and the Master Mode is left off (MSTR=0). The clock polarity is set and finally the system is enabled (SPE=1). The master device should start sending a slave select, clock pulses data. After each byte of data is transferred the SPI will interrupt the processor to receive the incoming data and send a new transmit byte. 5-35xx-D1-1.08-061705 219 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 18. TIMERS Four timers are implemented, TIO0-TIO3. Two are connected to off-chip pins (TIO0, TIO1) and the others are used for on-chip functions only. The timers are independently configured through PIO mode registers mapped to the X memory space at base address X:$F100, X:$F140, X:$F180, and X:$F1C0. All timers are identical (except for external connections) and provide the function shown in Figure. Y-BUS P-BUS X-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM Timer I/O = = 0, etc. 24 bit Count Timer Out running count mode controller up, down, load, copy Timer In dclk_by_2 Divide by 2 tick Divide by 4 16 64 24MHz XTAL Osc. either PLL Figure 82. One of Four Timers 18.1. Using the Timer Modules 18.1.1. General Programming Guidelines If you are re-starting a timer from scratch, all relevant fields of the Timer Count and Timer Control registers should be re-programmed. 220 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The Timer Interrupt Service Routine resets the TimerStatus bit in the Control Register below. The timer will wait until it has expired to assert the interrupt. Otherwise, the Timer Interrupt Service Routine would run continuously. Throughout the time when an interrupt occurs, the internal, software-invisible running counter within the module, continues to run (otherwise the timer events will not occur at periodic intervals). Thus, if an interrupt is not serviced in a timely fashion, it can become lost - i.e., it merges with another interrupt event before the handler can get to it. In the default timer clock mode, the timer counts time in terms of DSP clocks. Since the DSP clock frequency can change based on system activity, this means that the delays in the timer will adjust accordingly. To allow the timers to operate independently of the DSP clock speed, use one of the crystal clock modes controlled by the TimerMode field of the Timer Control register. Note, that when using one of the crystal clock modes, the DSP clock must still be running at a minimum of twice the clock source rate for correct operation. This means that the DSP clock must be running at a speed of at least crystal clock divided by 2 (or 12 MHz when using a 24.0 MHz crystal) when in crystal clock/4 mode. Similarly DSP clock must run at a speed of at least crystal clock/8 (3.0 MHz) when in crystal clock/16 mode, and must run at a speed of at least crystal clock/32 (750kHz) when in crystal clock/64 mode. 5-35xx-D1-1.08-061705 221 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 18.1.2. Software-Visible Programmable I/O (PIO) Register All register reserved fields should be written with zeroes. 18.1.2.1. Timer Control Register This is the module's control and status register. Note that the timer can be enabled (TimerEnable bit) and configured in the same PIO write to this register 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TIMER_ENABLE 1 8 TIMER_INT_ENABLE 1 9 INVERT 2 0 TIMER_CONTROL 2 1 TIMER_MODE 2 2 CLKGT 2 3 X:$F100 X:$F140 X:$F180 X:$F1C0 TIMER_STATUS HW_TMR0CSR HW_TMR1CSR HW_TMR2CSR HW_TMR3CSR Table 280. HW_TMR*CSR BITS 23 LABEL RW RESET CLKGT RW 0 22:10 RSRVD 9:8 TIMER_MODE R 0 RW 00 7 TIMER_STATUS R 0 6 RSRVD R 0 DEFINITION Clock gate – Used to disable the clocks to the timer module to conserve power when the timer is not in use. Must be set to 0 before writing to any other timer registers. 0 Clocks not gated, i.e. normal operation 1 Clocks are gated, i.e. clocks disabled. Reserved – Must be written with 0. Timer clock mode 00 - Clock source = DSP clock/2 01 - Clock source = crystal clock/4 (requires a DSP clock of at least crystal clock /2) 10 - Clock source = crystal clock/16 (requires a DSP clock of at least crystal clock /8) 11 - Clock source = crystal clock/64 (requires a DSP clock of at least crystal clock /32) NOTE: Be sure to set HW_CCR_XTLEN to use the timers in crystal clock modes. Timer status notification The TimerStatus bit is set to one in different ways depending on the value in TIMER_CONTROL field. See the sections below which describe the conditions that set the TIMER_STATUS bit to one. The TIMER_STATUS bit is reset to zero as a side effect of reading this register. Reserved – Must be written with 0. Table 281. Timer Control Register Description 222 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 5:3 TIMER_CONTROL RW 000 2 1 Invert TIMER_INT_EN RW 0 RW 0 DEFINITION Timer Control (mode) 000 internal clock, downcount, no output 001 internal clock, downcount, output pulse 010 internal clock, downcount, output toggle 011 (reserved) 100 internal clock, external pulse width measurement 101 internal clock, external period measurement 110 external clock, upcount 111 external clock, downcount Edge/level inversion selection Timer interrupt enable Note: 1. The Interrupt must also be enabled in the Interrupt Collector. 2. 0 TIMER_ENABLE HW_CCR XTLEN must be set to one for some timer modes. 3. Set HW_TMR*CSR_TIMER_CONTROL and HW_TMR*CSR_MODE before enable interrupts. Timer enable RW 0 Table 281. Timer Control Register Description (Continued) 18.1.2.2. Timer Count Register This register is used both to program initial count values and to monitor ongoing counts, depending on the timer mode. HW_TMR0CNTR HW_TMR1CNTR HW_TMR2CNTR HW_TMR3CNTR 2 3 2 2 2 1 2 0 1 9 X:$F101 X:$F141 X:$F181 X:$F1C1 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 COUNT Table 282. HW_TMR*CNTR BITS LABEL RW RESET 23:0 COUNT RW not reset DEFINITION Count value expressed as the number of periods specified by the TimerMode field of the HW_TMR0CSR/HW_TMR1CSR/HW_TMR2CSR/HW_TMR3CSR registers. WARNING: these register are not reset to a known value. Table 283. Timer Count Register Description 18.1.3. Timer Modes 18.1.3.1. Internal Clock Decrement, No Output Clock (TimerControl = 000) With the timer enabled (TimerEnable = 1), the running counter is loaded with the value contained in the Count register. The running counter is decremented every two system clock cycles (dclk/2). During the dclk cycle following the cycle when the run- 5-35xx-D1-1.08-061705 223 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip ning counter decrements to zero, the TimerStatus bit is set and the module asserts an interrupt (tio_interrupt output) if the TimerIntEnable field is one. Upon reaching zero, the running counter is automatically reloaded with the value from the Count register and the process is repeated until the timer is disabled (TimerEnable = 0). 18.1.3.2. Internal Clock Decrement, Output Pulse (TimerControl = 001) This mode is a super-set of the Internal Clock, No Output mode (TimerControl = 000). In addition to its functionality, this mode causes the TIO pin to be pulsed by the timer. The duration of the pulse is two dclk cycles. The pulse begins in the dclk cycle after the running counter has reached zero. The Invert bit determines the polarity of the output pulse. If Invert is zero, the TIO pulses high for two cycles; if Invert is one, TIO pulses low for two cycles. 18.1.3.3. Internal Clock, Output Toggle (TimerControl = 010) This mode is a super-set of the Internal Clock, No Output mode (TimerControl = 000). In addition to its functionality, this mode causes the TIO pin to be toggled by the timer. When the chip is reset or when the timer is disabled (TimerEnable zero), the state of the TIO output is identical to the Invert programming field. A toggle of the TIO output occurs off the dclk rising edge after the running counter has reached zero. 18.1.3.4. External Pulse Width Measurement (TimerControl = 100) Pulse Width kick input clr_running_cnt inc_running copy_running_cnt Figure 83. Pulse Width Measurement Mode In this mode the timer samples an external event/clock on the TIO pin. The internal sampling clock runs at half the internal clock frequency, or dclk/2. This mode mea- 224 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip sures the duration of high or low pulses on TIO, in terms of dclk/2 periods. If the Invert bit in the TimerControl register is zero, a TIO-high pulse is measured. If the Invert bit is set, TIO's low phase is measured. When the timer is enabled, the running counter is held at zero until a leading timing edge is detected on TIO. Thus if the timer is enabled in the during TIO's active phase, no counting begins (this eliminates start-up run counts). At the count-terminating edge of TIO, the running count value is transferred to the Count PIO register, the TimerStatus bit is set, the running count register internal to the timer is cleared and an interrupt is optionally asserted (if the interrupt enable is set). The running count register re-starts on the next leading edge of TIO. Note that this and the following modes should only be used on the externally accessible timers, TIO0 and TIO1. 18.1.3.5. External Period Measurement (TimerControl = 101) In this mode the timer samples an external event/clock on the TIO pin. The internal sampling clock runs at half the internal clock frequency, or dclk/2. This mode measures the period TIO, in dclk/2 periods. The user programs an initial count value in the Count PIO register. When the timer is enabled, this count value is transferred to the timer's running count register. The running count register runs continuously, as long as the timer is enabled, overflowing to zero without event. At each significant edge of TIO (rising edge if the Invert bit is zero; falling edge otherwise), the running count is written to the count register, the TimerStatus bit in the Control register is set and the timer will optionally interrupt (if the TimerIntEnable bit is set). The user program can read successive values in the Count register to get a running count of TIO's clock period, in dclk/2 clock cycles. A user program must discard the first count value, since, unlike the pulse width mode, the timer is enabled at an arbitrary point in the TIO clock cycle. 18.1.3.6. External Clock Increment (TimerControl = 110) In this mode, the timer counts external clock cycles. When the timer is enabled (TimerEnable = 1), the one's complement of the value in the Count register is transferred to the running count register. The running counter is will increment by transitions on the relevant TIO0 or TIO1 pin. If the Invert bit is zero, the running count register increments on 0-to-1 transitions of the TIO0 or TIO1 pin; otherwise it increments on 1-to-0 transitions. At each update of the running count register, the software-visible Count register is also updated. The running counter counts continuously through its overflow condition (all ones to all zeroes). At the transition after the running counter has reached zero, the TimerStatus bit is set; and if interrupts are enabled, an interrupt is asserted. 18.1.3.7. External Clock Decrement (TimerControl = 111) In this mode, the timer counts external clock cycles. When the timer is enabled (TimerEnable = 1), the value in the Count register is transferred to the running count register. The running counter is decremented by transitions on the relevant TIO0 or TIO1 pin. If the Invert bit is zero, the running count register decrements on 0-to-1 transitions of the relevant TIO0 or TIO1 pin; otherwise it decrements on 1-to-0 transitions. On the transition after the running count register has reached zero, the Tim- 5-35xx-D1-1.08-061705 225 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip erStatus bit is set, the tio_interrupt is asserted (if the TimerIntEnable bit is set) and the running count register is re-loaded with the value from the Count register. 18.1.4. AC Timing Considerations When a timer module counts off an external clock, its running counter increments every other dclk cycle. Design reuse methodology forces an external clock (TIO) sampling scheme whereby the external clock is sampled into the dclk domain and its edges are then detected. This combination of Nyquist and dclk/2 counting means that the external clock must run at most one fourth as fast as the system clock, or at <=dclk/4 frequency. In practice, the external clock frequency needs to be even lower than this because of the timer interrupt service or polling overhead. For instance if the timer is placed in a mode to measure the pulse width of an external clock or event, the period of such events must be long enough to give the interrupt handler enough time to read the timer's Count register and record the sampled count. 226 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 19. SDRAM INTERFACE The SDRAM interface is a DSP configurable interface to external SDRAM. The interface will connect to various combinations of SDRAMs. The addressing scheme provided by the interface will allow connections to 64 Mbit, 128 Mbit, 256 Mbit, or 512Mbit SDRAMs. The data connection allows only 8-bit transfers. The rate of data transfers and all SDRAM activities is programmable from a divide by one to fifteen of the system clock. The SDRAM timing specifications are also programmable based on this rate. Read or write accesses to SDRAM data can be done through linear or modulo addressing of the system addresses and linear addressing of the SDRAM addresses. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 8KWord SRAM 16KWord SRAM 8KWord SRAM 16KWord SRAM DMA-BUS SDRAM Programmable Registers SDRAM DMA Engine sdram_we sdram_cas sdram_ras sdram_dqm[0] sdram_data[7:0] sdram_clk sdram_cke, ckb sdram_bank[1:0] sdram_addr[13:0] SDRAM Controller x8 SDRAM Figure 84. SDRAM Interface Internally the SDRAM interface will transfer data to/from the system X/Y/P memory (aka system memory) only via DMA and is accessible in a linear or modulo address mode. Data transfers can be programmable to various combinations of data packing and unpacking to/from system memory. 5-35xx-D1-1.08-061705 227 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip In 8-bit transfers of SDRAM data to/from system memory (24-bit bus), the interface is programmable to pack the data into 3-byte words, 2-byte words, or 1-byte words during reads from SDRAM and is programmable to unpack with the same capability as during writes to SDRAM. Transferring 2-byte words into system memory can be programmed to be left aligned or right aligned to the 24-bit memory. When left aligned the least significant byte is zeroed and when right aligned the most significant byte can be zeroed or sign extended. Transferring 1-byte words into a 24-bit system memory will result in the data residing in the most significant byte and other two bytes will be zeroed. The interface can be programmed to pick the byte to start transferring data to/from system memory. Writes to SDRAM can be configured to read from the system memory in a Big Endian or Little Endian (default) pattern. sdram_clk sdram_cke sdram_ras sdram_cas sdram_we sdram_cs sdram_addr[13:0] sdram_bank[1:0] sdram_dqm[0] sdram_data[7:0] DESCRIPTION Inverted system clock to SDRAM SDRAM clock enable to SDRAM SDRAM row address strobe SDRAM column address strobe SDRAM write enable SDRAM chip select SDRAM multiplexed column and row addresses SDRAM bank selection code SDRAM data mask SDRAM data byte for 8 bit interface, lower data byte for 16 bit interface. Table 284. SDRAM External Signal Pins The SDRAM controller state machine generates one of six cycle types • Row Precharge is used to deactivate the open row in a particular bank or the open row in all banks. The SDRAM controller precharges all banks at the same time. The banks will be available after a precharge interval tRP. The controller drives sdram_addr[10] to a one during the precharge command to force all banks to precharge at once. Once a bank is precharge, it is in an idle state and must be activated before it can be read or written. • Row Activate is used to open (or activate) a row in a particular bank for subsequent read or write access. Sdram_bank[1:0] select the bank to be activated while the sdram_addr[13:11] and sdram_addr[9:0] select the row to be activated or opened. This row remains open for accesses until a precharge command is issued to that bank. A precharge command must be issued before opening a row in the same bank. Since the SDRAM controller works with all banks at once, it precharges all banks then opens the same row in each bank for access. • Row Refresh causes the SDRAM to read a row from its DRAM array and write it back to make up for any charge leakage in the DRAM cells. This is really an auto refresh command so the address and bank address busses are don’t cares for this cycle. It must be issued to each row in the SDRAM within a refresh period. The SDRAM chip keeps track of the address but the controller has to schedule it. Since the controller runs on the system DCLK which is quite variable, users must be careful to program the controller to keep the SDRAM refresh cycles within the manufacturers specifications. • The Load Mode Register command is issued once after reset to place the SDRAM in the proper CAS latency mode, etc. For the STMP35xx, the value 228 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip written to the SDRAM mode register is fixed at $0027 which specifies sequential full page burst mode with a CAS latency of two. • Column Read commands are used by the DMA engine to load data from the SDRAM to the on-chip system RAM. The SDRAM controller reads up to an entire row across all accessed banks with strictly sequential column read commands. • Column Write commands are used by the DMA engine to copy data from the onchip system RAM to the SDRAM. The SDRAM controller writes up to an entire row across all accessed banks with strictly sequential column write commands. The SDRAM controller works on all four banks of an SDRAM chip at a time. It precharges all of them for every transfer and activates all of them for every transfer. It then goes into a page size burst read or write transferring data across all four banks. This is true for 64Mb, 128Mb and 256Mb SDRAM. The following figure shows this effect for the 64Mbit SDRAM case. If two 8 bit wide SDRAMs are attached then the common bank size grows from 2048 byte “pages” to 4096 byte “pages”. SDRAM controller prechareges, and activates all banks to the same row for each transfer. SDRAM BANK 0 SDRAM BANK 1 SDRAM BANK 2 SDRAM BANK 3 4096 rows x 512 byte column 4096 rows x 512 byte column 4096 rows x 512 byte column 4096 rows x 512 byte column sense amps sense amps sense amps sense amps Column Mux for 64Mbit by 8 SDRAMs, the SDRAM controller reads and writes 2048 bytes as a single row Figure 85. SDRAM accesses all banks as a group All flip flops int the SDRAM controller are clocked off of DCLK, the same clock used for DMA and DSP functions. The clock sent off-chip to the SDRAM itself can be divided down from the DCLK. In the discussion that follows, we will use sdram_clk for the clock signal sent off chip. Refer to the four bit DIV field in Table 286, “SDRAM Control Status Register Description,” on page 230 below. This field selects the number of DCLKs to count for one full sdram_clk cycle. The duty cycle is 50/50 for even cycles and has one additional DCLK in the down phase for odd cycles. All time events in the SDRAM controller are synchronized to the DCLK state where sdram_clk has just gone high. The sdram_clk is inverted as it is driven off chip so that the SDRAM sees a clock that is exactly out of phase with the sdram_clk used within the SDRAM controller. The controller has 16 bit refresh and initialization and a four bit shared delay counter used to guarantee the various timing parameters of and SDRAM. Both of these counters are clocked by DCLK but count the rising edge of the sdram_clk. In the discussion of the various timing register fields below, these two counters are used to implement the required programmable delays for each parameter. All SDRAM specifications give their required timing parameters in terms of nano/micro seconds. All timing parameter fields in the SDRAM controller are given in terms of divided DCLK counts. The DCLK period 5-35xx-D1-1.08-061705 229 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip depends on the settings in the clock control register, Table 35, “Clock Control Register Description,” on page 43. Obviously, if the SDRAM is used with more than one setting of the DCLK frequency in an application then SDRAM timing parameter bit fields will have to be modified. Commands given to the SDRAM chips are encoded on the three interface signals sdram_ras, sdram_cas, and sdram_we. On any rising edge of the SDRAM chips clock, it captures these 3 lines and decodes them. When a read command is encoded, the data is available a fixed number of clocks later, depending on how the SDRAM’s mode register is set. For the STMP35xx, the mode register is always loaded with a CAS latency of two which tells the SDRAM to return data on the second rising edge after a read command. Many of the timing parameters specified in the SDRAM timing registers set the minimum time between various commands. SDRAM No-op commands are used to fill the gaps and keep all the timing within specification. sdram_clk command NOP PRE REF ACT READ sdram_addr row row col sdram_bank bank bank bank all banks tRP tRFC tRCD Figure 86. SDRAM Programmable Timing Parameters 19.1. SDRAM Interface Programmable Registers SDRAM Control Status Register 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 IE 1 2 SDRAMEN 1 3 RNW 1 4 LM 1 5 KICK 1 6 ISAT 1 7 PWDN 1 8 SBYTE MULTI 1 9 MEM SIGN 2 0 BIGE 2 1 X:$F900 ASIZE 2 2 DIV 2 3 SDRAM HW_SDRAM_CSR UNKICK 19.1.1. Table 285. HW_SDRAM_CSR BITS LABEL RW RESET 23 22 SIGN SDRAM RW 0 RW 0 21 MULTI RW 0 20:17 DIV RW 0001 DEFINITION Sign Extend bit for SDRAM right align reads. External bus muxing control – SDRAM address, control, and data buses are shared with the EMC5600. Setting this signal allows the SDRAM to have control. Default is EMC control. Multiple external SDRAM mode – This gives up control of the CSB signal after initialization so that it can be controlled by the GPIO’s when there is multiple SDRAMs. Clock Divide – Allows clock to SDRAM to be divisible from 1 to 15 of system clock. Table 286. SDRAM Control Status Register Description 230 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS 16 LABEL RW RESET UKICK RW 0 15:13 ASIZE RW 0 DEFINITION Unkick – Writing a one will cleanly stop the current transfer. A transfer halted by Unkick will not interrupt the DSP. After the current transfer stops successfully Unkick will clear. Align and Connection size – Controls how bytes or 2-byte words are read or written into system memory. During write to the system memory the byte data can packed onto the 24-bit bus as 3 bytes or 2 bytes or 1 byte. Packing 3 bytes will default starting at the least significant byte. Packing 2 bytes can have two options: left aligned or right aligned. Left aligned will result in the least significant byte assigned equal to zero. The default starting byte is the middle byte (byte 1). Right aligned will result in the most significant bytes assigned a sign extension of bit[15] of the data if the sign extend bit the HW_SDRAM_CSR is set else the most significant bytes will be zeroed. The default starting byte is the least significant byte (byte 0). Packing 1 byte will place the data at the most significant byte of the bus and the lower two bytes will be zeroed. During read from the system memory, data written to the SDRAM will be taken in the same placement as previously described and the zeroed and sign extended data will not be transferred to the SDRAM. For 2-byte words (or 16-bit connection to SDRAM data bus) there is the two options of left aligned or right aligned. For left aligned write to system memory the data will occupy the two most significant bytes of the bus while the least significant byte will be zeroed. For right aligned write to system memory the data will occupy the two least significant bytes of the bus while the most significant byte will have the option of sign extending bit[15] or zeroing. For reads from system memory the word data transferred to the 16-bit SDRAM data bus will have the same alignment mentioned above. The zeroed and sign extended data will not be transferred to the SDRAM. Bit ASIZE2 will be used to differentiate between 8-bit or 16-bit data connection to SDRAM. 12 BIGE RW 0 11:10 MEM RW 00 9:8 RW 00 SBYTE ASIZE[2:0] = 000 8-bit connection, pack 3 bytes onto system bus (DEFAULT). ASIZE[2:0] = 001 8-bit connection, pack 2 bytes onto system bus with left alignment. ASIZE[2:0] = 010 8-bit connection, pack 2 bytes onto system bus with right alignment. ASIZE[2:0] = 011 8-bit connection, pack 1 byte onto system bus. ASIZE[2:0] =100 16-bit connection, pack 2 bytes onto system with left alignment. ASIZE[2:0] = 101 16-bit connection, pack 2 bytes onto system with right alignment. Note: ASIZE[2] will differentiate between 8-bit or 16-bit connection. Big Endian – Controls data is read from system memory and written to SDRAM memory. In big endian mode the most significant byte is transferred first, followed byte the next most significant bytes. Little Endian is the DEFAULT and the least significant byte is transferred first, followed byte the next least significant byte. Only is valid for 2 or 3 byte transfers. Memory select – Chooses X/Y/P memory to write or read data. MEM = 00 X memory MEM = 01 Y memory MEM = 10 P memory Start Byte – Start read or write transfer on bytes 0 or 1 or 2. These control bits are closely tied to the Align and Connection Size (ASIZE) control bits. If ASIZE = 0 start byte can be 0,1,2 If ASIZE = 1 start byte can be 1,2 If ASIZE = 2 start byte can be 0,1 If ASIZE = 3 start byte can 2 If ASIZE = 4 start byte can 1 If ASIZE = 5 start byte can 0 Table 286. SDRAM Control Status Register Description (Continued) 5-35xx-D1-1.08-061705 231 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 7 6 RSRVD PWDN RW 0 RW 0 5 ISTAT RW 0 4 LM RW 0 3 KICK RW 0 2 RNW RW 0 1 0 IE RW 0 SDRAMEN RW 0 DEFINITION Reserved. Powerdown – Will set the SDRAM into self refresh mode then shut off clocks to the SDRAM and this interface. Interrupt Status – Reading a one indicates pending interrupt, writing back a one will clear interrupt and writing a zero has no effect. Load Mode – loads value of LOAD MODE register into Mode register of SDRAM. After the SDRAMMODE value is loaded into SDRAM LM will clear. Kick writing one will start transfer – After successful completion kick will clear and interrupt the DSP. Read not write – writing one will read data from SDRAM to system memory, writing zero will write data to SDRAM from system memory Interrupt Enable SDRAM Enable Bit – The SDRAM bit enables the SDRAM port. This bit must be set after the DIV bits are set and any other SDRAM registers are written to. This allows the divided clocks to the SDRAM to stabilize. Table 286. SDRAM Control Status Register Description (Continued) 19.1.2. SDRAM Type Register HW_SDRAM_TYPE configures the interface to handle the SDRAM types. The different SDRAM configuration differ from each other by the number of address bits used during column and row commands. This interface can access 64 Mb, 128 Mb, and 256 Mb SDRAM or larger SDRAMs with 8 bit data busses. 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 ROW 2 3 X:$F90F 0 3 0 2 0 1 0 0 COLUMN HW_SDRAM_TYPE Table 287. HW_SDRAM_TYPE BITS LABEL 23:6 RSRVD 5:4 ROW RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW 0000 This field specifies the number of address bits in the Row Address 00 - ROW_WIDTH_11_0 twelve bit row address [11:0] 01 - ROW_WIDTH_12_0 thirteen bit row address [12:0] 10 - ROW_WIDTH_13_0 fourteen bit row address [13:0] 11 - reserved Table 288. SDRAM Mode Register Description 232 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 3 RSRVD 2:0 COLUMN RW RESET DEFINITION RW g Reserved – Must be written with 0. RW 0001 This field specifies the number of address bits in the Column Address 0000 - COL_WIDTH_7_0 eight bit column address [7:0] 0001 - COL_WIDTH_8_0 nine bit column address [8:0] 0010 - COL_WIDTH_9_0 ten bit column address [9:0] 0011 - COL_WIDTH_10_0 eleven bit column address [10:0] 0100 - COL_WIDTH_11_0 twelve bit column address [11:0] 0101 - COL_WIDTH_12_0 thirteen bit column address [12:0] 011x - reserved NOTE: column address bit 10 is not used as an address bit in any JEDEC SDRAM. Table 288. SDRAM Mode Register Description The SDRAM controller multiplexes the 29 bit SDRAM address onto the 14 bit multiplexed row/column address bus and the 2-bit bank address bus differently depending on the type of SDRAM that is connected to the STMP35xx. For example, a 64Mbit SDRAM has a different number of column address bits than a 16Mbit SDRAM. The controller must adjust the address mapping appropriately. For the 64MBit “By 8” SDRAM there are 9 column address bits. So SDRAM address bits [8:0] are muxed out as column addresses. The controller selects SDRAM address bits [10:9] to drive out the sdram_bank[1:0] signals in this case, finally SDRAM address bits [25:11] are muxed out as row address bits on sdram_addr[13:0]. Thus one selects ROW_WIDTH_11_0 and COL_WIDTH_8_0 for a 64Mbit SDRAM. SDRAM TYPE 2 8 2 7 2 6 2 5 2 4 00,000 00,001 01,001 10,010 10,101 unused unused unused unused 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 row[11:0] row[11:0] row[12:0] row[13:0] row[13:0] bank 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 bank column[7:0] bank column[8:0] bank column[8:0] bank column[9:0] column[12:0] Table 289. 29 Bit SDRAM Address Mapping to ROW/COLUMN For a 16Mbit SDRAM, one loads the type register with ROW_WIDTH_11_0 and COL_WIDTH_7_0, as shown in the table above. The largest SDRAM that could be supported by the STMP35xx is 4Gbit (2^29 addressable locations, 8 bits wide). One obtains this mode by setting the type register to ROW_WIDTH_13_0 and COL_WIDTH_12_0. Complicating all this muxing is the JDEC decision to reserve column address bit 10 to indicate auto precharge for the last cycle on a page. This leaves a hole in the mux patterns as seen on the external pins. A thirteen bit column address (COL_WIDTH_12_0) uses all fourteen bits of the multiplexed row/column address, skipping over bit ten on the multiplexed address bus. To set these fields, look at the SDRAM you have selected and determine the number of bits in its column address and row address and set the type register field based on these values. Note that some configurations may define more address bits than are actually used in the ROW address. To connect a 128Mbit “By 8” Micron MT48LC16M8A2 SDRAM to the STMP35xx, use ROW_WIDTH_11_0 and COL_WIDTH_9_0. To connect a 64 Mbit “By 8” Micron MT48LC8M8A2 to the STMP35xx, use ROW_WIDTH_11_0 and 5-35xx-D1-1.08-061705 233 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip COL_WIDTH_8_0. NOTE: the STMP35xx only supports SDRAMs with exactly four banks, thus two bank SDRAMS such as the 16Mbit “By 8” Micron MT48LC2M8A2 are not supported. 19.1.3. SDRAM Address Pointer 1 Register This register holds the lower 24 bits of the 29 bit SDRAM address. The column address bits which are multiplexed out during CAS cycles always come from this register. Similarly, the bank address bits always come from this register. The interface will select the appropriate portion of the row address from this register during RAS cycles. At the end of a transfer, an incremented address will be placed in this register. HW_SDRAM_ADDR1 X:$F901 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADDR_LOW Table 290. HW_SDRAM_ADDR1 BITS 23:0 LABEL RW RESET ADDR_LOW RW 0 DEFINITION Bits 23 through 0 of the 29 bit SDRAM address. Table 291. SDRAM Address Pointer 1 Register Description 19.1.4. SDRAM Address Pointer 2 Register This register holds the upper 5 bits of the 29 bit SDRAM address. The interface will select the appropriate portion of the row address from this register during RAS cycles. At the end of a transfer, an incremented address will be placed in this register. HW_SDRAM_ADDR2 X:$F902 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADDR_HIGH 2 3 Table 292. HW_SDRAM_ADDR2 BITS 23:5 4:0 234 LABEL RSRVD ADDR_HIGH RW RESET DEFINITION R 0 Reserved – Must be written with 0. RW $00 Bits 28 through 24 of the 29 bit SDRAM address. Table 293. SDRAM Address Pointer 2 Register Description 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 19.1.5. SDRAM System Address Pointer Register SDRAM system address contains the system memory address. This is used with the MEM field of the HW_SDRAM_CSR register to choose reading/writing from X/Y/P memories. At the end of a transfer, the next address will be placed in this register. HW_SDRAM_SYSADDR X:$F903 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ADDR Table 294. HW_SDRAM_SYSADDR BITS LABEL RW RESET DEFINITION 23:16 RSRVD R 0 Reserved – Must be written with 0. 15:0 ADDR RW 0 DMA transfer address in on-chip SRAM. Table 295. SDRAM System Address Pointer Register1 Description 19.1.6. SDRAM Size Register SDRAM size register contains the number of transfers to/from system memory from/to the SDRAM. HW_SDRAM_SIZE 2 3 2 2 2 1 2 0 1 9 1 8 X:$F904 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SIZE Table 296. HW_SDRAM_SIZE BITS LABEL RW RESET DEFINITION 23:18 RSRVD R 0 Reserved – Must be written with 0. 17:0 SIZE RW 0 Number of transfers to make, i.e. number of bytes. Table 297. SDRAM Size Register Description 19.1.7. SDRAM Timer 1 Register SDRAM timer register programs the delays as specified in the SDRAM specifications in relation to the number of cycles of SDRAM clocks. SDRAM clock is a divided version of system clock. HW_SDRAM_TIMER1 programs the number of SDRAM clock cycles for the initialization delay for SDRAM, delay from a precharge command to the next command (tRP), and delay from refresh command to the next command (tRFC). HW_SDRAM_TIMER1 X:$F905 2 3 2 2 2 1 TRFC 2 0 1 9 1 8 1 7 TRP 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 INIT Table 298. HW_SDRAM_TIMER1 5-35xx-D1-1.08-061705 235 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 23:20 TRFC RW 6/$6 Refresh to next command – Value should be greater or equal to 70ns/(SDRAM period). 19:16 TRP RW 2/$2 Precharge to next command – Value should be greater or equal to 20ns/(SDRAM period). 15:0 INIT RW 15000/$ Initialization of SDRAM from when SDRAM enable is activated in 3A98 HW_SDRAM_CSR[0]. Value should be greater or equal to 200us/(SDRAM period). Table 299. SDRAM Timer 1 Register Description The value in the INIT field is used to delay the initialization sequence after the controller is enabled (SDRAMEN bit in the HW_SDRAM_CSR) until all voltages are stabilized and the SDRAM clock has been running long enough to take the SDRAM chip(s) through their initialization sequence. The inti sequence includes precharge all banks to their idle state issuing an autorefresh cycle and then loading the mode register. For most SDRAMs, this is specified as 200us. If we assume for the moment that the DCLK is derived directly from the 24.0MHz crystal oscillator and that the DIV field is set to 8 then we can calculate the value as follows: The period of the sdram_clk is running at 1/8th the DCLK so it is running at 3.0MHz with a period of 333.3ns. In this case a count of 600 is required to comply. Had the sdram_clk been running at the DCLK (41.6ns), we set this field to 200us divided by 41.6ns or 4807.69. We round this value up to 4808 and load it into the INIT field. 19.1.8. SDRAM Timer 2 Register SDRAM timer register programs the delays as specified in the SDRAM specifications in relation to the number of cycles of SDRAM clocks. HW_SDRAM_TIMER2 programs the number of cycles in between the row and bank activate (ACTIVE) command to the next command (tRCD), the number of cycles in between each refresh commands (tREF/4096), and the number of cycles in between exiting low power mode SELF REFRESH to the next ACTIVE command (tXSR). HW_SDRAM_TIMER2 X:$F906 2 3 2 2 2 1 2 0 1 9 1 8 1 7 TRCD 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 TREF 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TXSR Table 300. HW_SDRAM_TIMER2 BITS LABEL RW RESET DEFINITION 23:20 RSRVD R 0 19:16 TRCD RW 2/$2 15:4 TREF 3:0 TXSR Reserved – Must be written with 0. ACTIVE to next command – Value should be greater or equal to 20ns/(system period). RW 375/$117 Refresh interval – Within SDRAM spec the refresh interval for 4096 rows is 64ms thus a refresh must be done every 15us (64ms/4096). Thus this value should be less than or equal to 15us/(system period). RW 6/$6 Exiting self refresh mode to next command – Value should be greater or equal to 80ns/(system period). Table 301. SDRAM Timer 2 Register Description For TRCD, see Figure 86. “SDRAM Programmable Timing Parameters” on page 230. 236 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip TXSR is specified from the time the SDRAM chip has been given its clock enable and sdram_clk has been restarted before it can accept a new command. See the SDRAM manufactures specifications for this value. 19.1.9. System Memory Modulo Base Address Register HW_SDRAM_BAR programs the base address for system modulo access. The companion register is the DSP modulo register HW_SDRAM_MR. Once the system access matches the address created by adding the HW_SDRAM_BAR and HW_SDRAM_MR it returns to the HW_SDRAM_BAR address for the next access. HW_SDRAM_BAR 2 3 2 2 2 1 2 0 1 9 1 8 X:$F907 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 BAR Table 302. HW_SDRAM_BAR BITS LABEL RW RESET 23:16 RSRVD R 0 15:0 BAR RW 0 DEFINITION Reserved – Must be written with 0. Table 303. SDRAM System Memory Modulo Base Address Register Description 19.1.10. System Memory Modulo Register HW_SDRAM_MR programs the modulo offset for system modulo access. The companion register is the DSP modulo base address register HW_SDRAM_BAR. The offset value is added to the HW_SDRAM_BAR to the determine the limits of the modulo buffer. HW_SDRAM_MR 2 3 2 2 2 1 2 0 1 9 X:$F908 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 MOD Table 304. HW_SDRAM_MR BITS LABEL RW RESET DEFINITION 23:16 RSRVD R 0 Reserved – Must be written with 0. 15:0 MOD RW $00FFFF Modulo offset 1-FFFE – If 0000 or FFFF is programmed system access will be linear. Table 305. SDRAM System Memory Modulo Register Description 5-35xx-D1-1.08-061705 237 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 19.1.11. SDRAM Transfer Count Register HW_SDRAM_CNT holds the value of the number of transfers to or from the SDRAM at the end of the transfer. (READ ONLY) HW_SDRAM_CNT 2 3 2 2 2 1 2 0 1 9 1 8 X:$F90D 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 COUNT Table 306. HW_SDRAM_CNT BITS LABEL RW RESET DEFINITION 23:16 RSRVD R 0 Reserved – Must be written with 0. 15:0 COUNT R 0 Number of transfers completed. Table 307. SDRAM Transfer Count Register Description 19.1.12. SDRAM Mode Register HW_SDRAM_MODE holds the value of the Mode register to be programmed into the SDRAM during initialization. This register is to accommodate future SDRAM capabilities but is defaulted to a sequential full page burst mode with a CAS latency of two. HW_SDRAM_MODE X:$F90E 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 VALUE Table 308. HW_SDRAM_MODE BITS LABEL RW RESET DEFINITION 23:14 RSRVD R 0 Reserved – Must be written with 0. 13:0 VALUE R $0027 Holds the value to be place into the Mode Register of the SDRAM. Defaults to sequential full page burst mode with a CAS latency of 2 Table 309. SDRAM Mode Register Description 238 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 20. SWIZZLE The SWIZZLE block is a DSP configurable module that is used to manipulate programmed I/O data or data within memory. One or two immediate words can be programmed into the module for manipulation. The resulting data can be read, after various manipulations have been performed, in the SWIZZLE registers. SWIZZLE features include Endianess, bit reversing, returning only specific bytes or words with the data sign extended or zeroed, barrel shifting left or right, and division by the fixed integer 3. The SWIZZLE block also can be used to manipulate data within X/Y/P memory. Data can be changed in place or changed then moved to a different memory location. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM SWIZZLE Programmable Registers SWIZZLE DMA Engine USING DMA USING PIO DMA-BUS swizzle block bit manipulation logic Figure 87. Swizzle PIO & DMA data flows For DMA operation, a memory to memory move paradigm is used, with a source address pointer, a destination address pointer and a transfer size. Once kicked, the source stream is read, the specified manipulations are performed and the resultant data is written back to on-chip RAM. In addition to the data manipulations available in previous generations of the SWIZZLE block, a divide by the fixed integer 3 is available. This division is only available as a DSP PIO operation. 5-35xx-D1-1.08-061705 239 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 20.1. SWIZZLE Registers 20.1.1. SWIZZLE Control and Status Register 1 SWIZZLE CSR1 controls the basic function of the module and the DSP programmable manipulation. 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 LA 1 7 EN 1 8 LNR 1 9 SIGN 2 0 SHIFT 2 1 MEM 2 2 CLK_OFF 2 3 NEWADD HW_SWIZZLE_CS1R X:$F380 Table 310. HW_SWIZZLE_CS1R BITS LABEL RW RESET 23:11 RSRVD R 0 10 NEWADD RW 0 9 CLK_OFF RW 0 8 MEM RW 0 7:4 SHIFT RW 0000 3 SIGN RW 0 2 LNR RW 0 1 LA RW 0 0 EN RW 0 DEFINITION Reserved – Must be written with 0. Place data into new memory location – If this bit is cleared, the value in the HW_SWIZZLEDESTADDRR register is ignored. 0 Manipulate data in memory without moving it 1 Manipulate data in memory and put it in a new location Turn clocks off – Clocks must be turned on before any other registers can be accessed. 0 SWIZZLE clocks turned on 1 SWIZZLE clocks turned off Manipulate data in memory – The SWIZZLE block can be used to manipulate data written into the HW_SWIZZLEDATAR0 & HW_SWIZZLEDATA2R registers, or can be used to manipulate blocks of data in on-chip memory. If this bit is clear, then the data in the HW_SWIZZLESOURCER, HW_SWIZZLEDESTADDRR, & HW_SWIZZLESIZER registers are ignored. 0 Manipulate data in registers 1 Manipulate data in memory Barrel Shift from 0 to 15 – This field can be used for 16 bit shifts, however it is recommend that all new programs use the new shift value in HW_SWIZZLE_SIZER_NEW_SHIFT. Sign extend data of pass_lsB,isB,msB modes 0 Data is not sign-extended 1 Data is sign-extended Left barrel shift – Used in conjunction with the SHIFT field of this register. 0 Barrel shift to the right 1 Barrel shift to the left Left Align data of pass_LSB, ISB, MSB modes – Default is the data is right aligned with the 24-bit memory bus. SWIZZLE enable Table 311. SWIZZLE Control and Status Register 1 Description 240 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 20.1.2. SWIZZLE Control and Status Register 2 SWIZZLE CSR2 is the rest of the controls to manipulate data in memory. 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 KICK 1 2 SASEL 1 3 DESASEL 1 4 BIGE 1 5 BITREV 1 6 PLSB 1 7 PISB 1 8 PMSB 1 9 P16I 2 0 BS_EN 2 1 SBYTEDEST 2 2 UNKICK 2 3 P16L HW_SWIZZLE_CS2R X:$F381 Table 312. HW_SWIZZLE_CS2R BITS LABEL 23:16 RSRVD 15 UNKICK RW RESET R 0 RW 0 14:13 SBYTEDEST RW 00 12 BS_EN RW 0 11 P16I RW 0 10 P16L RW 0 9 PMSB RW 0 8 PISB RW 0 7 PLSB RW 0 6 BITREV RW 0 5 BIGE RW 0 DEFINITION Reserved – Must be written with 0. Will halt memory swizzling – Will return to zero after successful halt. Address of the next SWIZZLE will be located in HW_SWIZZLESOURCER and HW_SWIZZLEDESTADDRR Start Byte of Destination – When the destination is a different location. SBYTEDEST can be used to place the word starting at an offset byte of the destination. SBYTEDEST = 00 will place the word starting at the LSByte, SBYTEDEST = 01 will place the word starting at the ISByte, and SBYTEDEST = 10 will place the word starting at the MSBYTE of the destination. Barrel shift enable – In memory swizzling mode this used in conjunction CSR1 SHIFT bits. Pass Intermediate Significant word enable – In memory SWIZZLE mode this will take the input word and only return the most significant and middle byte. Used in conjunction with SIGN bit of CSR1. Pass Least Significant word enable – In memory SWIZZLE mode this will take the input word and only return the middle and least significant byte. Used in conjunction with SIGN bit of CSR1. Pass Most Significant byte enable – In memory SWIZZLE mode this will take the input word and only return the most significant byte. The end location will have this byte in the least significant byte position of the 24-bit word. Used in conjunction with the SIGN bit of the CSR1. Pass Intermediate byte enable – In memory SWIZZLE mode this will take the input word and only return the middle byte. The end location will have this byte in the least significant byte position of the 24-bit word. Used in conjunction with the SIGN bit of the CSR1. Pass Least Significant byte enable – In memory SWIZZLE mode this will take the input word and only return the least significant byte. The end location will have this byte in the least significant byte position of the 24-bit word. Used in conjunction with the SIGN bit of the CSR1. Bit Reversed enable – In memory SWIZZLE mode this will take the input word and 24-bit reverse data to the resulting location. Big Endian enable – In memory SWIZZLE mode this will take the input word and change to Big Endian word. Table 313. SWIZZLE Control and Status Register 2 Description 5-35xx-D1-1.08-061705 241 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 4:3 DESASEL RW 00 2:1 SASEL RW 00 0 KICK RW 0 DEFINITION Destination Memory select – Chooses X/Y/P memory to write or read data. 00 X space 01 Y space 10 P space 11 Reserved Source Memory select – Chooses X/Y/P memory to write or read data. 00 X space 01 Y space 10 P space 11 Reserved Kick bit – Writing one will start transfer. After successful completion kick will clear. Table 313. SWIZZLE Control and Status Register 2 Description (Continued) 20.1.3. SWIZZLE Transfer Size Number of words to be swizzled. This register also contains the new shift amount field. HW_SWIZZLE_SIZER X:$F382 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 SIZE NEW_SHIFT 2 3 Table 314. HW_SWIZZLE_SIZER BITS LABEL RW RESET 23:21 RSRVD R 000 20:16 NW_SHIFT RW $00 15:0 SIZE RW $0000 DEFINITION Reserved – Must be written with 0. This five bit field can specify shift amounts up to 24 bits. The old shift field in HW_SWIZZLE_CS1R_SHIFT is used when this field is set to zero. When NEW_SHIFT is non-zero then it over-rides any value in the old shift field. Number of words of memory to be manipulated by the SWIZZLE module. Table 315. SWIZZLE Transfer Size Description 20.1.4. SWIZZLE Source Address Register Source address for memory manipulation mode. Used in conjunction with CSR1 Memory mode enable. HW_SWIZZLE_SOURCER X:$F383 BITS LABEL RW RESET 23:16 RSRVD R 0 15:0 ADD RW $0000 DEFINITION Reserved – Must be written with 0. Source address of the data in memory to be manipulated by the SWIZZLE module. Table 316. SWIZZLE Source Address Register Description 20.1.5. 242 SWIZZLE DATA1 Register 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip DSP programmed data to be swizzled and placed on output SWIZZLE registers HW_SWIZZLE_DATA1R X:$F384 BITS LABEL RW RESET 23:0 DAT DEFINITION RW $000000 Table 317. SWIZZLE DATA1 Register Description 20.1.6. SWIZZLE DATA2 Register DSP programmed data to be swizzled and placed on output SWIZZLE registers. This is used only for resulting data for the HW_SWIZZLEPASSMSWR register. HW_SWIZZLE_DATA2R X:$F385 BITS LABEL RW RESET 23:0 DAT DEFINITION RW $000000 Table 318. SWIZZLE DATA2 Register Description 20.1.7. SWIZZLE Destination Address Register SWIZZLE destination address in memory mode. HW_SWIZZLE_DESTADDRR X:$F386 BITS LABEL RW RESET 23:16 RSVD 15:0 ADR DEFINITION R 0 RW $0000 Reserved Destination address for memory based SWIZZLE operations. Table 319. SWIZZLE Destination Address Register Description 20.1.8. SWIZZLE Big Endian Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. HW_SWIZZLE_BIGENDIANR X:$F387 BITS LABEL RW RESET 23:0 DAT DEFINITION R Table 320. SWIZZLE Big Endian Register Description 20.1.9. SWIZZLE Bit Reversed Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. HW_SWIZZLE_BITREVR X:$F388 BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 321. SWIZZLE Bit Reversed Register Description 20.1.10. SWIZZLE Pass Least Significant Byte Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. 5-35xx-D1-1.08-061705 243 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_SWIZZLE_PASSLSBR X:$F389 BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 322. SWIZZLE Pass Least Significant Byte Register Description 20.1.11. SWIZZLE Pass Intermediate Significant Byte Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. HW_SWIZZLE_PASSISBR X:$F38A BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 323. SWIZZLE Pass Intermediate Significant Byte Register Description 20.1.12. SWIZZLE Pass Most Significant Byte Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. HW_SWIZZLE_PASSMSBR X:$F38B BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 324. SWIZZLE Pass Most Significant Byte Register Description 20.1.13. SWIZZLE Pass Least Significant Word Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. HW_SWIZZLE_PASSLSWR X:$F38C BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 325. SWIZZLE Pass Least Significant Word Register Description 20.1.14. SWIZZLE Pass Intermediate Significant Word Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R. HW_SWIZZLE_PASSISWR X:$F38D BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 326. SWIZZLE Pass Intermediate Significant Word Register Description 20.1.15. SWIZZLE Pass Most Significant Word Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with the memmode of the HW_SWIZZLECS1R and the HW_SWIZZLEDATA2R register. 244 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_SWIZZLE_PASSMSWR X:$F38E BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 327. SWIZZLE Pass Most Significant Word Register Description 20.1.16. SWIZZLE Barrel Shift Register Results of data programed into the HW_SWIZZLEDATA1R register. Used in conjunction with SHIFT field of the HW_SWIZZLECS1R register. HW_SWIZZLE_BARRELR X:$F38F BITS LABEL RW RESET 23:0 DAT R DEFINITION $000000 Table 328. SWIZZLE Barrel Shift Register Description 20.1.17. SWIZZLE DIV3 Lower Register Lower 24 bits of swizzle results from divide by three. HW_SWIZZLE_DIV3L X:$F390 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 DIV3_LOWER Table 329. HW_SWIZZLE_DIV3L BITS 23:0 LABEL DIV3_LOWER RW RESET R 000 DEFINITION Lower 24 bit result of dividing the 32 bit value in data reg 2 concatenated with data reg 1 by the fixed integer 3. Table 330. SWIZZLE Transfer Size Description 20.1.18. SWIZZLE DIV3 Upper Register Remainder and upper 8 bits of swizzle results from divide by three. HW_SWIZZLE_DIV3U X:$F391 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 DIV3_UPPER 2 2 REMAINDER 2 3 Table 331. HW_SWIZZLE_SIZER 5-35xx-D1-1.08-061705 245 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 23:22 RSRVD R 000 21:20 REMAINDER RW $00 19:8 7:0 DEFINITION Reserved – Must be written with 0. Two-bit remainder resulting from dividing the 32 bit value in data reg 2 concatenated with data reg 1 by the fixed integer 3. Reserved – Must be written with 0. Upper 8 bit result of dividing the 32 bit value in data reg 2 concatenated with data reg 1 by the fixed integer 3. RSRVD R $000 DIV3_UPPER RW $00 Table 332. SWIZZLE Transfer Size Description The dividend for the fixed integer divide by three swizzle operation comes from the concatenation of Data Register 2 with Data Register 1, as shown in Table 333. 3 1 3 0 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 DATA_REG_2[7:0] 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 0 1 0 DATA_REG_1[23:0] Table 333. SWIZZLE 32 bit divide by fixed integer 3 20.2. SWIZZLE Data Manipulation Examples The following example shows how the SWIZZLE block can be used in a programmed I/O application. Data written to the Swizzle data registers and to the control and status registers causes nine different views of the source data to be readable through the various pass register views, the big endian register view, and the barrel shifter view. Data can also be modified in on-chip RAM in similar ways by setting up the SWIZZLE DMA registers. Example 1 Setting these register values HW_SWIZZLEDATA1R HW_SWIZZLEDATA2R HW_SWIZZLECS1R Yields these register values HW_SWIZZLEBIGENDIANR HW_SWIZZLEBITREVR HW_SWIZZLEPASSLSBR HW_SWIZZLEPASSISBR HW_SWIZZLEPASSMSBR HW_SWIZZLEPASSLSWR HW_SWIZZLEPASSISWR HW_SWIZZLEPASSMSWR HW_SWIZZLEBARRELR C 2 0 D 3 0 Example 2 A 0 0 B 1 0 E 4 0 F 5 1 A 0 0 E F 0 0 0 0 0 0 A F C D A 7 B 3 D 0 0 0 E 0 0 0 C 0 0 0 A 0 C D E 0 A B C 0 4 5 A B C D E No sign extension No barrel shift B 5 F D B F D B F E F F F F F F 0 F B 1 0 C 2 0 D 3 0 E 4 4 F 5 9 F C B A B 7 B 3 D 5 F F F E F F F F C D F F F A B F C D E F F A B C D 0 4 5 A B A B C D E Sign extension on Barrel shift to the right by 4 bits Table 334. SWIZZLE Data Manipulations Examples 246 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21. REAL-TIME CLOCK/ALARM/WATCHDOG RESET & PERSISTENT BITS These features share a common source of one millisecond time pulses and utilize persistent storage when the chip is in its powered down state. The one-millisecond time base is derived from the 24.0MHz crystal oscillator, even during chip power down states. The crystal oscillator power net is the only circuit powered up during these chip-wide power-down states. 16KWord SRAM Y-BUS P-BUS X-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM RTC/WD/ALARM/PERSIST I/O copy controller 24 bit Shadow Persistent 1 24 bit Master Persistent 1 24 bit Shadow Persistent 0 24 bit Master Persistent 0 16 bit Shadow Divider 16 bit Master Divider 48 bit Alarm Shadow 48 bit Alarm Master == 48 bit RTC Shadow Counter 24 bit Watchdog Counter Alarm Event 48 bit RTC Master Counter 1KHz variable divider 375KHz fixed divide by 64 24MHz XTAL Osc. Crystal Power & Clock Domain Figure 88. RTC, Watchdog, Alarm, Persistent Bits 5-35xx-D1-1.08-061705 247 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip As a result, the real time clock count, alarm functions and persistent bit storage are kept in the crystal oscillator clock and power domain. Shadow versions of these values are maintained in the DSP’s power and dclk clock domain when the chip is in a power-up state. When the chip transitions from power-off to power-on, the master values are copied to shadow values by the copy controller. Whenever software writes to a shadow register then the copy controller copies the new value into the master register. Some of the persistent bits are used to control features which can continue to operate after power-down, such as the milli-second counter and the alarm function. Other persistent bits are available to store application state information over power downs. NOTE: the term power-down, as used refers to a state in which the DCDC converter and various parts of the crystal power domain are still powered-up but the rest of the chip is powered-down. If the battery is removed, then the persistent bits, the alarm value and the milli-second counter value will be lost. Immediately after reset it can take several hundred clocks for the copy controller to complete the copy process from the analog domain to the digital domain. Software can not rely on the contents of the milliseconds counter, alarm or persistent bits until this copy is complete. Therefore, software must wait until all bits in the HW_RTCCSR_STALE_REGS field have been reset to zero by the copy controller before reading the initial state of these values. HW_CCR_XTLEN must be set to one before using the RTC rtc_first_init call during initialization HW_RTC_CSR_SOFT_RESET = 0; return rtc_second_init remove soft reset, this releses the copy controller. call at some point in initialization, after copy controller has had time to complete. wait for copy controller to complete. NO HW_RTC_CSR_ STALE_REGS == 0 YES copy controller is finished, so it's safe to write to divider. HW_RTC_DIVIDE_DIVIDEND = 375; return (24.0MHz /64)/375 = 1KHz Figure 89. RTC initialization sequence Before writing a new value to a shadow register, software must first confirm that the corresponding bit of HW_RTCCSR_NEW_REGS is a zero. This will insure that a value previously written to the register has been completely handled by the copy state machine. Failure to obey this constraint could cause a newer updated value to be lost. 248 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip rtc_write2master how to write any master register on analog side. Do not call until after rtc_second_init. TestValue = HW_RTC_CSR_NEW_REGS & WHICH_REG; extract corresponding bit NO TestValue == 0 YES wait for previous write to this register to complete HW_RTC_DIVIDE = 375; return write new value to shadow which will be automatically copied to analog side. Use this same technique for milliseconds, alarm, or persistent registers Figure 90. RTC Writing to a Master Register from DSP 21.1. Real Time Clock The real-time clock is a DSP-accessible, continuously running 48-bit counter that increments every millisecond. A 48-bit millisecond counter has enough resolution to count up to 8896 years with millisecond accuracy. The RTC will continue to count time as long as a voltage is applied to the BATT pin, irrespective of whether the rest of the chip is powered up. Reset has no effect on the RTC registers. This hardware assumes a 24.0 MHz crystal is being used. If a different speed crystal is used, then the times measured by this block should be scaled up or down according to the crystal speed or the crystal oscillator divider should be changed. Note that the hardware contains a fixed divide by 64 that generates the clock to the RTC. For a 24MHz crystal this produces a 375KHz clock for use in the analog portion of the RTC hardware. A variable divider specified in HW_RTC_DIVIDE_DIVIDEND register determines how much to further divide this value to obtain a 1millisecond increment signal for the RTC master milliseconds, shadow milliseconds counter and the watchdog timer. Warning, the default value of this divider register is not correct and must be changed at first power on. For consistency across applications, it is recommended that the milli-second timer should be referenced to January 1, 1980 at a 48-bit value of zero (same epoch reference as PC) in applications that use it as a time-of-day clock. The register-set is composed of two 24-bit registers which must be read in a specific order to prevent inconsistencies between the upper and lower words. Re-read the upper word a second time (after reading the lower word) and compare to insure consistency. The upper data word (24-bits) must be written before the lower data-word (24-bits). Consistency is protected for writes. Writing to the upper word freezes the shadow counter until a corresponding write to the lower word occurs. 5-35xx-D1-1.08-061705 249 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21.2. Watchdog Reset Registers The watchdog reset is a DSP configurable device. Programmed by software to generate a chip wide RESET after HW_RTC_WATCHDOG milliseconds, the module will generate this reset if software does not re-write this register before this time elapses. The watchdog timer decrements once for every tick of the 1KHz clock generated by HW_RTC_DIVIDE_DIVIDEND, see Figure 88. “RTC, Watchdog, Alarm, Persistent Bits” on page 247. The WATCHDOG TIMER is initially disabled and set to count 16,777,215 milliseconds before generating a watchdog reset. 21.3. Alarm Clock The alarm clock function allows an application to specify a future instant at which the chip should be “awakened”, i.e. if powered down it can be powered up and the DSP can be interrupted. The alarm clock setting is a DSP-accessible, 48-bit value that is continuously matched against the 48-bit milli-second counter. When the two values are equal, an alarm event is triggered. Persistent bits indicate whether an alarm event should power-up the chip from its powered down state. In addition to or instead of powering up the chip, the alarm event can also cause a DSP interrupt. 21.4. Real Time Clock Programmable Registers This section describes the programmable registers of the real time clock, including the watch dog registers, alarm registers and persistent registers. 21.4.1. RTC Control and Status Register Contains the control and status bits for the RTC. 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ALARM_EN 1 8 ALARM_INT 1 9 WATCHDOG_EN 2 0 STALE_REGS 2 1 CLKTUNE 2 2 FORCED_UPDATE SOFT_RESET 2 3 X:$F500 NEW_REGS HW_RTC_CSR Table 335. HW_RTC_CSR BITS 23 LABEL SOFT_RESET 22:21 RSRVD 20 FORCE_UPDATE 19:17 RSRVD RW RESET RESET DEFINITION 1 2 RW 1 1 Set to zero to remove the soft reset and allow normal operation. R 000 000 Reserved – Must be written with 0. RW 0 0 Set to one to force an update of all digital shadow registers. R 000 000 Reserved – Must be written with 0. Table 336. RTC Control and Status Register Description 250 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 16:12 NEW_REGS 11:9 CLKTUNE 8:4 STALE_REGS 3 2 RSRVD WATCHDOG_EN 1 ALARM_INT 0 ALARM_EN RW RESET RESET DEFINITION 1 2 R $00 $00 These read only bits indicate that more current data has been written to a shadow register and that a write to the persistent area is pending. 1xxxx = persistent register 1 is newer x1xxx = persistent register 0 is newer xx1xx = alarm count is newer xxx1x = milli-seconds count is newer xxxx1 = crystal divide register is newer R 000 000 Each bit is connected to a delay line tap, setting the MSB bypasses the other two switches, etc. The following skew adjustments are approximate. Contact SigmaTel before setting any of these bits. 000 -2.3ns 001 -729ps 01X -97ps 1XX +831ps R $1F $00 These read only bits indicate that more current data is available in the persistent area. An update of the shadow register will be required before accurate data can be obtained. 1xxxx = persistent register 1 is stale x1xxx = persistent register 0 is stale xx1xx = alarm count is stale xxx1x = milli-seconds count is stale xxxx1 = crystal divide register is stale R 0 0 Reserved – Must be written with 0. RW Set to one to enable the watch dog timer function. If the watch dog timer then counts down to zero, a chip wide reset will be issued. RW 0 0 The alarm interrupt bit is set to one if the alarm goes off on the analog side. Write a one to this bit position to clear the interrupt bit. When this bit is set to one and ALARM_EN is set to one then interrupt 27 is signaled on vector $005E. RW 0 0 Set this bit to one to enable an alarm interrupt if the alarm “buzzes”. Table 336. RTC Control and Status Register Description 5-35xx-D1-1.08-061705 251 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21.4.2. RTC Milli-Seconds 0 Register Contains the lower data word (24 bits) of the RTC millisecond count HW_RTC_MSECONDS0 X:$F501 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 RTC Table 337. HW_RTC_MSECONDS0 BITS LABEL RW RESET DEFINITION 23:0 RTC RW 0 Bits [23:0] of the RTC millisecond counter – This field initializes to a random value, and continues to count millisecond as long as the battery power is applied and the crystal oscillator is powered up, regardless of whether the rest of the chip is powered up or down. This register is a shadow of the master counter maintained in the crystal clock/power domain. The master counter continues to count as long as battery power is applied and the crystal oscillator is powered up. When power is restored to the rest of the chip and the chip wide reset is removed, then the master value is copied over to the shadow. At every milli-second tick thereafter, both counters increment by one in their respective clock domains. NOTE: writes to HW_RTC_MSECONDS1 freeze the shadow counter until a corresponding write to HW_RTC_MSECONS0 occurs. WARNING: on STMP3501/3502, the milliseconds counter is cleared at every power up state transition, causing a loss of the “real-time” epoch normally held in this counter. Table 338. RTC Milli-Seconds 0 Register Description 21.4.3. RTC Milli-Seconds 1 Register Contains the upper data word (24 bits) of the RTC millisecond count HW_RTC_MSECONDS1 X:$F502 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 RTC Table 339. HW_RTC_MSECONDS1 BITS LABEL RW RESET DEFINITION 23:0 RTC RW 0 Bits [47:24] of the RTC millisecond counter – This field initializes to a random value, and continues to count millisecond as long as the battery power is applied and the crystal oscillator is powered up, regardless of whether the rest of the chip is powered up or down. This register is a shadow of the master counter maintained in the crystal clock/power domain. The master counter continues to count as long as battery power is applied and the crystal oscillator is powered up. When power is restored to the rest of the chip and the chip wide reset is removed, then the master value is copied over to the shadow. At every milli-second tick thereafter, both counters increment by one in their respective clock domains. NOTE: writes to HW_RTC_MSECONDS1 freeze the shadow counter until a corresponding write to HW_RTC_MSECONS0 occurs. Table 340. RTC Milli-Seconds 1Register Description 252 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21.4.4. Watchdog Reset Count Register This register contains the 24-bit delay (expressed in milliseconds) after which the watchdog timer will reset the device when the watchdog timer is enabled. The watch dog timer count value is not shadowed. After a power-up it is always reset to $FFFFFF and the enable is set to zero. HW_RTC_WATCHDOG X:$F503 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 WATCHDOG Table 341. HW_RTC_WATCHDOG BITS LABEL 23:0 WATCHDOG RW RESET RW $FFFFFF DEFINITION The number of milliseconds before a watchdog reset is initiated – This counter only decrements when the watchdog timer is enabled. Table 342. Watchdog Reset Count Register Description 21.4.5. RTC Divider Register This register contains the dividend which is used to divide the analog domain clock to obtain a one milli-second “tick” for use in the real time clock milli-second counter and the watch dog timer. The RTC contains a fixed divide by 64 ahead of HW_RTC_DIVIDE_DIVIDEND. For a 24.0MHz crystal, this yields a 375KHz clock. Setting HW_RTC_DIVIDE_DIVIDEND to decimal 375 ($177) yields a 1KHz tick. 375KHz = 24.0MHz / 64 1KHz = (24.0MHz / 64) / 375 HW_RTC_DIVIDE 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DIVIDEND 2 3 X:$F506 Table 343. HW_RTC_DIVIDE BITS 23:16 15:0 LABEL RW RESET DEFINITION RSRVD R 0 Reserved – Must be written with 0. DIVIDEND RW $5DC0 375KHz divider. WARNING: default value is wrong for all applications. Set this to $0177 for a 24.0MHz oscillator. Table 344. Watchdog Reset Enable Register Description 5-35xx-D1-1.08-061705 253 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21.4.6. RTC Alarm 0 Register Contains the lower data word (24 bits) of the Alarm millisecond value. HW_RTC_ALARM0 2 3 2 2 2 1 2 0 1 9 1 8 X:$F504 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ALARM0 Table 345. HW_RTC_ALARM0 BITS LABEL 23:0 ALARM0 RW RESET DEFINITION RW 0 Bits [23:0] of the RTC alarm value – This register is a shadow of the master alarm value maintained in the crystal clock/power domain. The master alarm value retains its value as long as battery power is applied. When power is restored to the rest of the chip and the chip wide reset is removed, then the master alarm value is copied over to the shadow. At every milli-second tick thereafter, the master alarm value is compared against the master milli-second counter. If there is an exact match between all 48 bits of the master milli-second counter and all 48 bits of the master alarm value then the alarm event occurs. When a new value is written to the shadow register it is copied to the master alarm value register. Always write the upper bits (ALARM1) first. Table 346. RTC Alarm 0 Register Description 21.4.7. RTC Alarm 1 Register Contains the upper data word (24 bits) of the Alarm millisecond value. HW_RTC_ALARM1 2 3 2 2 2 1 2 0 1 9 1 8 X:$F505 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ALARM1 Table 347. HW_RTC_ALARM1 BITS LABEL 23:0 ALARM1 RW RESET DEFINITION RW 0 Bits [47:24] of the RTC alarm value – This register is a shadow of the master alarm value maintained in the crystal clock/power domain. The master alarm value retains its value as long as battery power is applied. When power is restored to the rest of the chip and the chip wide reset is removed, then the master alarm value is copied over to the shadow. At every milli-second tick thereafter, the master alarm value is compared against the master milli-second counter. If there is an exact match between all 48 bits of the master milli-second counter and all 48 bits of the master alarm value then the alarm event occurs. When a new value is written to the shadow register it is copied to the master alarm value register. Always write the upper bits (ALARM1) first. Table 348. RTC Alarm10 Register Description 254 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21.4.8. RTC Persistent Register 0 This register contains the 24 persistent bits of Persistent Register 0. These bits retain their value through the various power phase of the DCDC converter controller. As long as the battery is not removed, they retain their state. 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 ALARM_EN 2 0 ALARM_WAKE_EN 2 1 ALARM_WAKE 2 2 PERSISTENT 2 3 XTAL_PDN HW_RTC_PERSISTENT0 X:$F507 Table 349. HW_RTC_PERSISTENT0 BITS LABEL 23:4 PERISTENT 3 XTAL_PDN 2 ALARM_WAKE RW RESET RESET DEFINITION 1 2 RW 0 0 Additional Persistent Bits. These bits retain their value as long as the battery remains connected. RW 0 1 XTAL Power Down. Default state upon first power-up is to turn off the crystal oscillator during subsequent power down states of the DCDC converters. This bit affects the state of the crystal oscillator when the chip is placed in its various powerdown states. During power up modes and entrance to such states the crystal oscillator is automatically restarted. The crystal power down bit, when set to one, removes the last vestige of AC power when the chip is powered down. The power switch and the DC circuits that monitor it are sufficient to restart the chip. The alarm function can not be used when the crystal is powered down. NOTE: HW_DCDC_PERSIST_SLEEP_XTAL_ENABLE must also be set to zero put the crystal to sleep. WARNING: powerdown of the crystal also causes a reset of the persistent bits to their default state. RW 0 0 This bit is set to one whenever the ALARM causes a wake up event. It can be reset by software by writing a zero directly to the bit. If this bit is not reset before a subsequent power down, then the part will immediately power up again as if a new alarm had happened. Table 350. RTC Persistent Register 0 Description 5-35xx-D1-1.08-061705 255 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 1 ALARM_WAKE_EN 0 ALARM_EN RW RESET RESET DEFINITION 1 2 RW 0 0 Set to one to wake up the chip from a power down state upon the arrival of the alarm event. The alarm event must be enabled by ALARM_EN and the crystal oscillator must not be in its powered down state. RW 0 0 Set to one to enable the alarm clock function. The alarm event will occur whether the chip is in the powered-on or powered-off state. In the powered off state, it will wake up the chip and return it to a powered-on state, iff the ALARM_WAKE bit is also set to one. The 48 bit alarm register is compared to the 48 bit milli-second counter, if an exact match occurs, and the ALARM_EN bit is set to one then an alarm event is triggered. Table 350. RTC Persistent Register 0 Description 256 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 21.4.9. RTC Persistent Register 1 This register contains the 24 persistent bits of Persistent Register 1. These bits retain their value through the various power phases of the DCDC converter controller. As long as the battery is not removed, they retain their state. HW_RTC_PERSISTENT1 X:$F508 2 3 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PERSISTENT Table 351. HW_RTC_PERSISTENT1 BITS LABEL RW RESET DEFINITION 23:0 PERSISTENT RW 000000 Additional Persistent Bits. These bits retain their value as long as the battery remains connected, even if the chip is in one of its powered down states. Table 352. RTC Persistent Register 1 Description 5-35xx-D1-1.08-061705 257 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 22. I2S SERIAL AUDIO INTERFACE The chip includes a standard 3-channel I2S Serial Audio Interface (SAI). This allows the chip to receive data from an external host or A/D or transmit data to an external D/A. The chip must be configured as slave device on the I2S bus. Data can be transferred between the DSP core and the SAI by polling status flags or by servicing interrupts. X Peripheral Data Bus (xdb_per) RCS TCS TO xdb_per Status 0 Control 23 RX2 Shift Register Status Receiver Controler Status Status SDI1 Status SDI0 SCKR LRCKR SDO2 TO xdb_per 23 0 TX1 Data RegisterR TX1 Data RegisterL Transmitter 23 0 Controler Control TX1 Shift Register TO xdb_per 23 0 RX0 Data RegisterL RX0 Data RegisterR 0 Control 23 RX0 Shift Register TX2 Data RegisterR TX2 Data RegisterL 0 Control 23 TX2 Shift Register SDI2 TO xdb_per 23 0 RX1 Data RegisterL RX1 Data RegisterR 0 Control 23 RX1 Shift Register Status FROM xdb_per 23 0 RX2 Data RegisterL RX2 Data RegisterR SDO1 TO xdb_per 23 0 TX0 Data RegisterR TX0 Data RegisterL 0 Control 23 TX0 Shift Register SDO0 SCKT LRCKT Figure 91. I2S Block Diagram 22.1. I2S External Pins Pin # Name I2S_BCLK I2S_WCLK I2S_DataI0 I2S_DataI1 I2S_DataI2 I2S_DataO0 I2S_DataO1 I2S_DataO2 Description Input, I2S serial bit clock Input, I2S left/right word clock Input, I2S input data 0 Input, I2S input data 1 Input, I2S input data 2 Output, I2S output data 0 Output, I2S output data 1 Output, I2S output data 2 I2S_SELECT=0 91/G3 92/H3 95/J1 94/H2 93/H4 90/G4 89/F3 88/F4 I2S_SELECT=1 NA/K3 NA/K1 NA/J2 94/H2 93/H4 90/G4 89/F3 88/F4 Note: The I2S_Select bit of the HW_SPARER register shown on page 46, controls the pinout of these pins. 258 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 22.2. I2S Receive and Transmit Registers 22.2.1. Receivers The SAI contains three 2-channel receivers. These receivers shift serial data from the I2S_DataIx pins using the bit and word clocks. It fills the data register (SAIRX0,1,2R) until the word clock or RCS word length indicate that the word has ended. The next word is placed in the other receiver channel. After both words have been clocked into the data registers the Read Data Ready (RDR) Flag is set. The DSP should read the data registers and clear the RDR flag before the next word is ready to move from the shift register to the data register. The DSP can either poll the RDR flag or receive an interrupt if the RXIE Bit is set. Both channels of the read data registers are muxed into the same DSP address. The first read will retrieve the data from the left channel data register. The second will retrieve the right channel data. Subsequent reads will alternately retrieve the left and right channel data. 22.2.1.1. I2S Receive Status Control Register This register is used both to program initial count values and to monitor ongoing counts, depending on the timer mode. 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 REN0 1 1 REN1 1 2 REN2 1 3 RMME 1 4 RWL 1 5 RDIR 1 6 RLRS 1 7 RCKP 1 8 RREL 1 9 RXIE 2 0 RDWJ 2 1 RDR 2 2 ROFCL 2 3 X:$FFF0 ROFL HW_SAIR_CSR Table 353. HW_SAIR_CSR BITS LABEL RW RESET DEFINITION 23:17 RSRVD R 0 Reserved – Must be written with 0. 16 ROFCL RW 0 Receiver Data Overflow Clear – When this bit is set by the DSP both the ROFL and RDR flags are cleared. This bit is implemented as a one-shot and always reads a zero. Note: if ROFL is cleared in the last instruction of an Interrupt Service Routine triggered by this bit, then the Interrupt will be executed twice. 15 RDR R 0 Receiver Data Ready Flag – Indicates that both left and right data words have been received. This bit is cleared when both left and right data are read from the receiver data registers of all enabled receivers, or by writing a one to the ROFCL bit. 14 ROFL R 0 Receiver Data Overflow – Indicates that an overflow condition was detected. This condition occurs when the RDR Flag is set and a new data word is transferred from the shift register to the receiver data register. Writing a one to the ROFCL bit clears this bit. 13 RSRVD R 0 Reserved – Must be written with 0. 12 RXIE RW 0 Receiver Interrupt Enable for DSP – Interrupt enable for DSP. Table 354. I2S Receive Status Control Register Description 5-35xx-D1-1.08-061705 259 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 11 RDWJ RW 0 Receiver Data Word Justification – Determines which portion of the 24-bit portion of the received 32-bit word will be transferred from the shift register to the data register when programmed to receive 32 bit words. 0 The first 24 bits received are transferred to the data register. 1 The last 24 bits received are transferred to the data register. When the receiver is programmed to receive 24 or 16 bit words this bit functions as follows: 0 Means that either the SCKR bit-counter (when it reaches 16 or 24) or a LRCKR transition, whichever comes first, can transfer data to the data registers. 1 Means that a LRCKR transition only will terminate the transfer and the last 16 or 24 bits received before the LRCKR transition gets transferred to the data registers. 10 RREL RW 0 Receiver Relative Timing – Determines the relative timing of the LRCKR signal as referred to the serial data inputs. 0 The transition of LRCKR occurs together with the first bit data. 1 The transition of LRCKR occurs one SCKR earlier (I2S format). 9 RCKP RW 0 Receiver Clock Polarity – Defines the polarity of the receiver clock. 1 Positive Clock Polarity. Means the LRCKR and SDI lines change synchronously with the positive edge of the clock, and are considered valid during negative transitions. 0 Negative Clock Polarity. Means the LRCKR and SDI lines change synchronously with the negative edge of the clock, and are considered valid during positive transitions 8 RLRS RW 0 Receiver Left Right Selection – Defines the polarity of the LRCKR. 0 If LRCKR = 0 then Left Word, if LRCKR = 1 then Right Word. 1 If LRCKR = 0 then Right Word, if LRCKR = 1 then Left Word. 7 RDIR RW 0 Receiver Data Shift Direction – Determines the shift direction of the received data. 0 MSB First 1 LSB First. 6:5 RWL RW 0 Receiver World Length Control – Selects the length of the data word being received by the SAI. 00 16 Bits 01 24 Bits 10 32 Bits 11 Reserved. 4 RSRVD R 0 Reserved – Must be written with 0. 3 RMME RW 0 Receiver master mode enable 1 Receiver in master mode. 0 Receiver in slave mode. Enable Master Mode for the receiver. i.e. Enables use of the Transmitter clocks from the PLL to shift in data. A `1' in this bit configures the receiver into Master Mode. 2 REN2 RW 0 Receiver Enable – Enable bit for Receiver channel 2. 1 REN1 RW 0 Receiver Enable – Enable bit for Receiver channel 1. 0 REN0 RW 0 Receiver Enable – Enable bit for Receiver channel 0. Table 354. I2S Receive Status Control Register Description (Continued) 22.2.1.2. I2S Receive Status DataI0 Register HW_SAIRX0R BITS 23:0 LABEL X:$FFF1 RW RESET RECEIVE0 RW 0 DEFINITION Data received from I2S_DATAI0 Table 355. I2S Receive Status DataI0 Register Description 260 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 22.2.1.3. I2S Receive Status DataI1 Register HW_SAIRX1R BITS 23:0 LABEL X:$FFF2 RW RESET RECEIVE1 RW 0 DEFINITION Data received from I2S_DATAI1 Table 356. I2S Receive Status DataI1 Register Description 22.2.1.4. I2S Receive Status DataI2 Register HW_SAIRX2R BITS 23:0 LABEL X:$FFF3 RW RESET RECEIVE2 RW 0 DEFINITION Data received from I2S_DATAI2 Table 357. I2S Receive StatusDataI2 Register Description 22.2.1.5. Handling Different Word Lengths It is possible that an external SAI and the chip’s SAI could be programmed to different size word lengths. The normal case is handled by terminating (performing a parallel load of the data register) the transfer when a LRCKR transition occurs. However, when the chip’s SAI is programmed to receive 16 bit words and the external SAI is programmed to transmit 24 bit words (for example) the parallel load should occur as soon as the 16 bits are serially shifted in. This implies that a bit counter must be used to terminate the transfer. Another case would be when the external SAI is programmed to transmit fewer bits than the chip’s SAI is programmed to receive. For example, if the external SAI is programmed to transmit 16 bits and the chip’s SAI is programmed to receive 24 bits the transfer should be terminated by the LRCKR. 22.2.2. Transmitters Each I2S channel has a transmitter. The transmitter serially outputs data from the left/right data registers (SAITX0,1,2R). Each I2S channel can carry two data streams (i.e. audio channels). The data can be arranged in 16, 24 or 32 bit words. The chip’s I2S transmitters must operate in slave mode (clocks generated by the master). The transmit data must be loaded into the transmit registers by the DSP before the master begins clocking. After the master clock copies the second word into the transmit shift register it sets the Transmit Data Empty (TDE) flag to signal the DSP for more data. The Transmit Status/Control Register (TCS) configures the I2S transmitters. The left and right channel transmit registers also share the same DSP memory. The first word write will go to the left channel data register. The second will go to the right. Subsequent rights will alternate between left and right data registers. 22.2.2.1. I2S Transmit Status Control Register This register is used both to program initial count values and to monitor ongoing counts, depending on the timer mode. 5-35xx-D1-1.08-061705 261 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TEN0 1 1 TEN1 1 2 TEN2 1 3 TMME 1 4 TWL 1 5 TDIR 1 6 TLRS 1 7 TCKP 1 8 TREL 1 9 TXIE 2 0 TDWE 2 1 TDE 2 2 TUFL 2 3 X:$FFF5 TUFCL HW_SAITCSR Table 358. HW_SAITCSR BITS LABEL RW RESET DEFINITION 23:17 RSRVD R 0 Reserved – Must be written with 0. 16 TUFCL RW 0 Transmitter Data Underflow Clear – When this bit is set by the DSP both the TUFL and TDE flags are cleared. This bit is implemented as a one-shot and always reads a zero. 15 TDE R 0 14 TUFL R 0 13 12 11 RSRVD R 0 TXIE RW 0 TDWE RW 0 10 TREL RW 0 9 TCKP RW 0 8 TLRS RW 0 7 TDIR RW 0 Note: if TUFL is cleared in the last instruction of an Interrupt Service Routine triggered by this bit, then the Interrupt will be executed twice. Transmitter Data Empty Flag – Indicates that both left and right data words have been down loaded to the shift register. This bit is cleared by writing a one to the TUFCL bit (as explained above). Transmitter Data Underflow – Indicates that an underflow condition was detected. This condition occurs if all the transmit data registers are not written to in time (i.e. TDE is still set when the transmitter loads the shift register with new Left Data, implying that old data is re-transmitted.) This bit is cleared by writing a one to the TUFCL bit. Reserved – Must be written with 0. Transmitter Interrupt Enable for DSP – Interrupt enable for DSP. Transmitter Data Word Expansion – Determines the way that the 24-bit data word to be transmitted is expanded to 32 bits during transmission. 0 The last bit is transmitted 8 times AFTER transmitting the 24-bit data word from the transmit data register. 1 The first bit is transmitted eight times BEFORE transmitting the 24-bit data word from the transmit data register is transmitted eight times. Transmitter Relative Timing – Determines the relative timing of the LRCKT signal as referred to the serial data inputs. 0 The transition of LRCKT occurs together with the first bit data. 1 The transition of LRCKT occurs one SCKT earlier (I 2 S format). Transmitter Clock Polarity – Defines the polarity of the Transmitter clock. 1 Positive Clock Polarity. Means the LRCKT and SDO lines change synchronously with the positive edge of the clock, and are considered valid during negative transitions. 0 Negative Clock Polarity. Means the LRCKT and SDO lines change synchronously with the negative edge of the clock, and are considered valid during positive transitions Transmitter Left Right Selection – Defines the polarity of the LRCKT. 0 If LRCKT = 0 then Left Word, if LRCKT = 1 then Right Word. 1 If LRCKT = 0 then Right Word, if LRCKT = 1 then Left Word. Transmitter Data Shift Direction – Determines the shift direction of the transmitted data. 0 MSB First 1 LSB First. Table 359. I2S Transmit Status Control Register Description 262 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 6:5 TWL RW 00 Transmitter World Length Control – Selects the length of the data word being transmitted by the SAI. 00 16 Bits 01 24 Bits 10 32 Bits 11 Reserved. 4 RSRVD R 0 Reserved – Must be written with 0. 3 TMME RW 0 Transmitter master mode enable – Reserved, must be set to 0. 2 TEN2 RW 0 Transmitter Enable – Enable bit for Transmitter channel 2. 1 TEN1 RW 0 Transmitter Enable – Enable bit for Transmitter channel 1. 0 TEN0 RW 0 Transmitter Enable – Enable bit for Transmitter channel 0. Table 359. I2S Transmit Status Control Register Description (Continued) 22.2.2.2. I2S Transmit Status DataO0 Register HW_SAITX0R BITS 23:0 LABEL TRANSMIT0 X:$FFF6 RW RESET RW 0 DEFINITION Data to be sent I2S_DataO0 – Most significant bit is sent first. 16 bit transfer data should be placed at most significant bytes (bits 23:16) Table 360. I2S Transmit Status DataI0 Register Description 22.2.2.3. I2S Transmit Status DataO1 Register HW_SAITX1R BITS 23:0 LABEL TRANSMIT1 X:$FFF7 RW RESET RW 0 DEFINITION Data to be sent I2S_DataO1 – Most significant bit is sent first. 16 bit transfer data should be placed at most significant bytes (bits 23:16) Table 361. I2S Transmit Status DataI1 Register Description 22.2.2.4. Transmit Status I2S DataO2 Register HW_SAITX2R BITS 23:0 LABEL TRANSMIT2 RW RESET RW 0 X:$FFF8 DEFINITION Data to be sent I2S_DataO2 – Most significant bit is sent first. 16 bit transfer data should be placed at most significant bytes (bits 23:16) Table 362. I2S Transmit Status DataI2 Register Description 22.2.3. Timing Figure 92 shows the SAI timings for both the RDR and TDE flags. Internal flags allow some leeway in reading and writing the data registers as shown on the diagrams. The incoming and outgoing data is shifted in/out through a buffer shift register. This gives a full LRCKR half-period to service the RDR interrupt and read the left word received before it is overwritten by the next left word received. The right word will not be overwritten until the following LRCKR transition. Similarly for transmit there is a half-period of LRCKT from TDE being enabled to service the interrupt and write the next left/right pair to be transmitted. 22.2.4. Setting SAI Mode To enable the pins into SAI mode, set the I2S_SELECT field of the HW_SPARER register. Unless over-ridden by the GPIO, etc., the I2S interface is always available. The I2S_SELECT bit, when set to one, invokes an alternate pin-out mode for channel 0 input in the larger 144-pin fpBGA package. 5-35xx-D1-1.08-061705 263 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip LRCKT Left Right Left Right TDE Internal Flag is set when left data is written to all enabled transmitters. If this internal flag is set then right data must be written to data registers before the next falling edge of LRCKT. LRCKR Left TDE is cleared when right data is written to all enabled transmitters Right Left Right RDR Internal Flag is set when left data is read from all enabled receivers. If this internal flag is set then right data must be read from data registers before the next rising edge of LRCKR. RDR is cleared when right data is read from all enabled transmitters Figure 92. I2S Receive and Transmit Data Timing 22.2.5. Interrupts The SAI interrupt vectors are located at the addresses shown in Table 363: PRIORITY Receiver Overflow Transmitter Underflow Receiver Data Ready Transmitter Data Empty PROGRAM ADDRESS P:$0016 P:$0012 P:$0014 P:$0010 Table 363. SAI interrupts and Priorities 22.3. Known Chip Defects with SAI 22.3.1. Clear Quest Entry STMP00003941 All revisions of the chip are known to incorrectly handle overflow and underflow error reporting for the SAI block. When the RX data is not read in time, causing an overflow condition the chip does not generate an Rx Overflow interrupt. Instead it generates two RxReady interrupts back-to back. When TX data is not written in a timely manner, causing an underflow condition, the chip does not generate a TX Underflow interrupt. Instead it generates TX Empty interrupts repeatedly until cleared by software. 264 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23. GENERAL PURPOSE INPUT/OUTPUT (GPIO) The chip contains several GPIO modules. These modules provide flexible software control of each pin. Each digital pin can either be controlled by a hardware interface (SPI, Flash, etc.) or by a GPIO module. Every digital pin on the chip except for TESTMODE, ONCE_DRN, ONCE_DSI, ONCE_DSO and ONCE_DSK can be used as a GPIO pin. The GPIO configuration registers control the pin connection (GPIO or normal interface) and the pin function (if it is in GPIO mode). The GPIO configuration is independent for all of the pins. For example, the SmartMedia/NAND SM_CE3n pin can be configured as a GPIO pin while the other SmartMedia/NAND pins are connected to the Flash interface. If a pin is switched to be a GPIO, then the internal module connected to that pin will see a logic 0 on that pin, irrespective of the actual status of that pin. The GPIO module is the only means of communicating with devices that don’t use one of the chip’s hardware interfaces. For example, LED’s, buttons and other peripherals will require software that uses pins in GPIO mode. The pins are also used in GPIO mode for functions such as Key Scan, Backlights, SmartMedia card insert, etc. 23.1. GPIO Interface There are four GPIO Pin Registers (4 banks) on the chip used to configure digital pins as GPIO or their designated function: GPIO0, GPIO1, GPIO2 and GPIO3 (See Section 23.2.12. on page 273 for details). The following registers exist within each of these four banks to configure the chips digital pins. Some pins only exist in the 144-pin package options - the registers that control these pins exist but perform no useful function on the 100-pin devices. GPIO Output Enable HW_GPxDOER OE# Power HW_GPxPWR PERIPH_DOE Assigned Hardware Function Output Enable Drive Strength (4 or 8mA) HW_GPx8MAR HW_GPxENR GPIO Output PAD HW_GPxDOR PERIPH_DO Assigned Hardware Function Output GPIO Input HW_GPxDIR PERIPH_DI Assigned Hardware Function Input OUTPUT INPUT Gate Keeper (20-30uA Drive Strength). Note that GPIOs require 47k (or smaller) pull-ups or pull-downs to overdrive Gate Keepers. HW_GPxPWR AND gate ensures a deterministic input value Figure 93. GPIO PAD Diagram 5-35xx-D1-1.08-061705 265 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BEGIN HW_GPxPWR Turns pins ON/OFF. Pins must be turned on irrespective of whether the pin is configured as a GPIO or not. Set to 1 to power up the pin, which can then be used as a GPIO input, a GPIO output, or for assigned hardware functionality (SPI, Flash, etc.). Set to 0 to power down and tri-state the pin. HW_GPx8MAR Sets Drive Strength for output pins. Note that drive strength may be set regardless of whether the pin is used as a GPIO output or as an assigned hardware ouput. HW_GPxENR Enable/Disable pins as GPIOs. Set to 1 to use the pin as a GPIO. Set to 0 to use the assigned hardware functionality (SPI, Flash, etc.) GPIO INPUT GPIO OUTPUT Set output value for GPIO pin Output Enable. Set to 1 to drive out the value in HW_GPxDOR. Set to 0 to use the pin as an input or to tri-state the pin HW_GPxDOR HW_GPxDOER GPIO INPUT w/o Interrupt Output Enable. Set to 0 to use the pin as an input. GPIO INPUT with Interrupt HW_GPxDOER END HW_GPxILVLR Set interrupt level/edge sensitivity HW_GPxIPOLR Set interrupt polarity HW_GPxIPENR Select GPIO pins that can generate an interrupt HW_GPxIENR HW_GPxDIR Enable interrupt Read the current value on the pin input END Figure 94. GPIO Setup Flow Chart 266 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip . 1 dsp_data[b] HW_GPxISTATb DSP write to GPIOx edge HW_GPxISTATb from other 23 bits GPIOxIRQ to DSP FALL RISE HW_GPxIPENRb LOW HIGH HW_GPxISTATb HW_GPxILVLb HW_GPxIENRb level DIRb HW_GPxIPOLRb pin GPxBb sync HW_GPxDIRb POLRb Figure 95. GPIO Interrupt Generation 5-35xx-D1-1.08-061705 267 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23.2. GPIO Registers 23.2.1. GPIO Enable Register This register enables most of the digital pins on the chip to be GPIOs or perform assigned functionality (I2C, SPI, etc.). HW_GP0ENR HW_GP1ENR HW_GP2ENR HW_GP3ENR X:$F400 X:$F410 X:$F420 X:$F430 BIT LABEL RW RESET DESCRIPTION 23:0 EN RW 0 Module Enable bits – These pins reset to 0. 0 Pin configured to perform assigned function 1 Pin configured as GPIO Table 364. GPIO Enable Register Description 23.2.2. GPIO Data Out Register This register allows GPIO to send data out on a pin-by-pin basis. Always set this register before GPIO Data Out Enable because as soon as the enable bit is set, the current data on the pin is sent out. HW_GP0DOR HW_GP1DOR HW_GP2DOR HW_GP3DOR X:$F401 X:$F411 X:$F421 X:$F431 BIT LABEL RW RESET DESCRIPTION 23:0 DO RW 0 Output bits if GPIO is set in GPIO Enable and the GPIO Output Enable bit is set. Table 365. GPIO Data Out Register Description 23.2.3. GPIO Data In Register This register allows GPIO to input data on a pin-by-pin basis. HW_GP0DIR HW_GP1DIR HW_GP2DIR HW_GP3DIR X:$F402 X:$F412 X:$F422 X:$F432 BIT LABEL RW RESET DESCRIPTION 23:0 DI R 0 Input bits if pin is in GPIO Mode and set as an input. Table 366. GPIO Data In Register Description 23.2.4. GPIO Data Out Enable Register This register allows GPIO to enable data output on a pin-by-pin basis. HW_GP0DOER HW_GP1DOER HW_GP2DOER HW_GP3DOER X:$F403 X:$F413 X:$F423 X:$F433 BIT LABEL RW RESET 23:0 DOE RW 0 Output enable bits 0 Input / Tri-State 1 Output DESCRIPTION Table 367. GPIO Data Out Enable Register Description 268 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23.2.5. GPIO Interrupt Pin Enable Register This register allows GPIO to define specific pins to be interrupt pins. HW_GP0IPENR HW_GP1IPENR HW_GP2IPENR HW_GP3IPENR X:$F404 X:$F414 X:$F424 X:$F434 BIT LABEL RW RESET 23:0 IPEN RW 0 DESCRIPTION Interrupt enable bits 0 Corresponding pin is not interrupt pin 1 Corresponding pin is an interrupt pin Table 368. GPIO Interrupt Pin Enable Register Description 23.2.6. GPIO Interrupt Enable Register This register allows GPIO pins to enable specific interrupts to assert a DSP interrupt. Note that this register distinguishes between polling and interrupt driven routines. If a particular pin functions as an interrupt pin (as defined by GPIO Interrupt Pin Enable register), it's assertion will be reported in the interrupt status register but the interrupt signal to DSP will not be asserted if GPIO Interrupt Enable bit is also not asserted. Once an interrupt has been received in the interrupt collector and it has been determined that it is GPIO bank 0, 1, 2, or 3, then this register is used to determine which pin asserted the interrupt. See Table 372 for Interrupt Options. HW_GP0IENR HW_GP1IENR HW_GP2IENR HW_GP3IENR X:$F405 X:$F415 X:$F425 X:$F435 BIT LABEL RW RESET 23:0 EN RW 0 DESCRIPTION Interrupt enable bits 0 Interrupt Disable 1 Interrupt Enable Table 369. GPIO Interrupt Enable Register Description 23.2.7. GPIO Interrupt Level Register This register allows GPIO to define specific pins to be level or edge sensitive if they are enabled in GPIO Interrupt Enable register. See Table 372 for Interrupt Options. HW_GP0ILVLR HW_GP1ILVLR HW_GP2ILVLR HW_GP3ILVLR X:$F406 X:$F416 X:$F426 X:$F436 BIT LABEL RW RESET 23:0 ILVL RW 0 Interrupt level bits 0 Edge Sensitive 1 Level Sensitive DESCRIPTION Table 370. GPIO Interrupt Level Register Description 5-35xx-D1-1.08-061705 269 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23.2.8. GPIO Interrupt Polarity Register This register allows GPIO to define specific pins to Active High/Low or Positive/Negative edge interrupt based on programming of corresponding bit in GPIO Interrupt Enable and GPIO Interrupt Level register. See Table 372 for Interrupt Options. HW_GP0IPOLR HW_GP1IPOLR HW_GP2IPOLR HW_GP3IPOLR X:$F407 X:$F417 X:$F427 X:$F437 BIT LABEL RW RESET DESCRIPTION 23:0 IPOL RW 0 Interrupt Polarity bits 0 Active low level / falling edge 1 Active high level / rising edge Table 371. GPIO Interrupt Polarity Register Description HW_GPXIENR (INT ENABLE) 0 1 1 1 1 HW_GPXILVLR (INT LEVEL) X 1 1 0 0 HW_GPXIPOLR (INT POLARITY) X 0 1 0 1 DESCRIPTION Disable Interrupt Pin Functionality Active Low Interrupt Active High Interrupt Falling Edge Interrupt Rising Edge Interrupt Table 372. GPIO Interrupt Options Table 23.2.9. GPIO Interrupt Status Register This register allows GPIO grammed as an interrupt interrupt to DSP. HW_GP0ISTATR HW_GP1ISTATR HW_GP2ISTATR HW_GP3ISTATR to monitor and clear interrupts if corresponding bit is propin. Combination of interrupt status and enables assert X:$F408 X:$F418 X:$F428 X:$F438 BIT LABEL RW RESET DESCRIPTION 23:0 ISTAT RW 0 Interrupt status bits – Reading 1 indicates a pending interrupt. The bits in interrupt status register are set irrespective of Interrupt Enable bits. To clear an interrupt, set the proper bit to 1. This method of clearing is needed for both edge and level interrupts, see Figure 95. Table 373. GPIO Interrupt Status Register Description 23.2.10. GPIO Pin Power Register This register controls whether each pin is powered up irrespective of whether one pin is configured as a GPIO pin or not. When a pin is powered down its input will read as 0 irrespective of the voltage on the pin. Similarly, a pin that is powered down will always be high impedance (i.e. tristated) even if the pin is configured as an output. All pins are powered down after a chip reset. HW_GP0PWR X:$F409 HW_GP1PWR X:$F419 HW_GP2PWR X:$F429 HW_GP3PWR X:$F439 270 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BIT LABEL RW RESET 23:0 PWR RW 0 5-35xx-D1-1.08-061705 DESCRIPTION 0 Pin is powered down (reset value) 1 Pin is powered up (i.e. active) Table 374. GPIO Pin Power Register Description 271 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23.2.11. GPIO Pin Drive Strength Register This register controls the output drive strengths of groups of pins, when the pins are configured as outputs. Note that unlike other GPIO registers, each pin does not get its own control bit. Instead pins are assigned in groups of 8 to an individual control bit. Each group of pins can be configured as 4mA drivers, or 8mA drivers. The required setting will depend on the application, but in general it is recommended that as many pins as possible are configured in 4mA mode. Doing so will increase the number of simultaneously pins that can be supported without adverse effects on the rest of the system, and will reduce the momentary peak load on the DCDC converters, and will reduce EMI emissions. A conservative limit on the maximum number of simultaneously switching output pins for the chip would be 24 4mA pins, or 12 8mA pins, or an equivalent combination of 4mA and 8mA pins. It is possible to save some power by gating the clocks in the GPIO modules, this functionality is controlled by the CLKGATE field of the GPIO Pin Drive Strength register. When the clocks are gated, the DSP will no longer be able to write to any of the GPIO control registers, except for this one. When the clocks are gated, GPIO interrupts will continue to be generated, and the DSP will have full read access to all registers, including the GPIO Data Input registers. The DSP will need to clear the CLKGATE bit before it can change the value of pin configured as a GPIO output. HW_GP08MAR HW_GP18MAR HW_GP28MAR HW_GP38MAR X:$F40A X:$F41A X:$F42A X:$F43A BIT LABEL RW RESET 23 CLKGATE RW 0 22:4 RSRVD 2 PDS2 R RW 0 0 1 PDS1 RW 0 0 PDS0 RW 0 272 DESCRIPTION 0 Clocks not gated 1 Clocks gated Reserved – Must be written with 0. Controls bits [23:15] 0 4 mA driver 1 8 mA driver Controls bits [16:8] 0 4 mA driver 1 8 mA driver Controls bits [7:0] 0 4 mA driver 1 8 mA driver Table 375. GPIO Pin Drive Strength Register Description 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23.2.12. GPIO Register Pin Assignments 23.2.12.1. GPIO0 (Bank 0) GPIO0 BIT LABEL 23:20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Note: RSRVD GP0B19 GP0B18 GP0B17 GP0B16 GP0B15 GP0B14 GP0B13 GP0B12 GP0B11 GP0B10 GP0B9 GP0B8 GP0B7 GP0B6 GP0B5 GP0B4 GP0B3 GP0B2 GP0B1 GP0B0 X:$F400–$F40A PIN NAME (NOTE 1) DESCRIPTION Reserved – Must be written with 0. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. GP19 GP18 GP17 GP16 GP15 GP14 GP13 GP12 GP11 GP10 GP9 GP8 GP7 GP6 GP5 GP4 GP3 GP2 GP1 GP0 1. Please see Table 497. “General Purpose Input/Output Pins” on page 384. Table 376. GPIO0 Pin Register (Bank 0) Description 23.2.12.2. GPIO1 (Bank 1) GPIO1 BIT 23 22 21 20 19 18 17 16 15 14 13 12 11 10 LABEL GP1B23 GP1B22 GP1B21 GP1B20 GP1B19 GP1B18 GP1B17 GP1B16 GP1B15 GP1B14 GP1B13 GP1B12 GP1B11 GP1B10 PIN NAME (NOTE 1) GP47 GP46 GP45 GP44 GP43 GP42 GP41 GP40 GP39 GP38 GP37 GP36 GP35 GP34 X:$F410–$F41A DESCRIPTION This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. Table 377. GPIO1 Pin Register (Bank 1) Description 5-35xx-D1-1.08-061705 273 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BIT LABEL PIN NAME (NOTE 1) DESCRIPTION 9 GP1B9 GP33 This pin is available in all packages. 8 GP1B8 GP32 This pin is available in all packages. 7 GP1B7 GP31 This pin is available in all packages. 6 GP1B6 GP30 This pin is available in all packages. 5 GP1B5 GP29 This pin is available in all packages. 4 GP1B4 GP28 This pin is available in all packages. 3 GP1B3 GP27 This pin is available in all packages. 2 GP1B2 GP26 This pin is available in all packages. 1 GP1B1 GP25 This pin is available in all packages. 0 GP1B0 GP24 This pin is available in all packages. Note: 1. Please see Table 497. “General Purpose Input/Output Pins” on page 384. Table 377. GPIO1 Pin Register (Bank 1) Description (Continued) 23.2.12.3. GPIO2 (Bank 2) GPIO2 BIT 23 22 21 20 19 18 17 16 15 14 13 12:9 8 7 6 5 4 3 2 1 0 Note: LABEL RSRVD GP2B22 GP2B21 GP2B20 GP2B19 GP2B18 GP2B17 GP2B16 GP2B15 GP2B14 GP2B13 RSRVD GP2B8 GP2B7 GP2B6 GP2B5 GP2B4 GP2B3 GP2B2 GP2B1 GP2B0 PIN NAME (NOTE 1) GP70 GP69 GP68 GP67 GP66 GP65 GP64 GP63 GP62 GP61 GP56 GP55 GP54 GP53 GP52 GP51 GP50 GP49 GP48 X:$F420 – $F42A DESCRIPTION Reserved – Must be written with 0. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. This pin is only available in 144-pin packages. Reserved – Must be written with 0. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. This pin is available in all packages. 1. Please see Table 497. “General Purpose Input/Output Pins” on page 384. Table 378. GPIO2 Pin Register (Bank 2) Description 274 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 23.2.12.4. GPIO3 (Bank 3) GPIO3 BIT LABEL 23:22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Note: RSRVD GP3B21 GP3B20 GP3B19 GP3B18 GP3B17 GP3B16 GP3B15 GP3B14 GP3B13 GP3B12 GP3B11 GP3B10 GP3B9 GP3B8 GP3B7 GP3B6 GP3B5 GP3B4 GP3B3 GP3B2 GP3B1 GP3B0 PIN NAME (NOTE 1) GP93 GP92 GP91 GP90 GP89 GP88 GP87 GP86 GP85 GP84 GP83 GP82 GP81 GP80 GP79 GP78 GP77 GP76 GP75 GP74 GP73 GP72 X:$F430 – $F43A DESCRIPTION Reserved – Must be written with 0. This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages This pin is only available in 144-pin packages 1. Please see Table 497. “General Purpose Input/Output Pins” on page 384.. Table 379. GPIO2 Pin Register (Bank 3) Description 5-35xx-D1-1.08-061705 275 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 24. DAC The DAC behaves as a DMA device, outputting data from a modulo (circular) buffer in X/Y/P memory specified by software configuration. Software configuration begins by programming the DAC Base Address Register (HW_DACBAR), the DAC Modulo Register (HW_DACMR), and the DAC Current Position Register (HW_DACCPR) to specify the base address and modulo of the buffer to be used by the DAC as well as the current position in the DAC buffer. Next, the buffer is filled by software. The sample rate of the DAC may be specified in the DAC Sample Rate Register (HW_DACSRR). The sample rate of the DAC can be adjusted with fine resolution using this register. The number of samples available is specified in the DAC Word Count Register (HW_DACWCR). The interrupt threshold word count is specified in the DAC interrupt control Register (HW_DACICR). Finally, transmit is enabled, and the DAC begins to output data. As each DSP word is processed, the DAC Word Count Register (HW_DACWCR) is decremented and the DAC Current Position Register (HW_DACCPR) is incremented. When the word count decrements to the value in the interrupt control register, an interrupt will occur if interrupts have been enabled in the DAC Control Status Register (HW_DACCSR). Software is then responsible for writing to HW_DACWCR register indicating more data is available. If the HW_DACWCR is not updated before the last sample in the buffer is needed by the DAC, an exception will occur, and a DAC underflow interrupt will be generated. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS DAC Programmable Registers DAC DMA Engine stereo Sigma Delta D/A Converter Figure 96. Stereo Sigma Delta D/A and DMA DAC data in stored in X/Y/P memory with the left channel sample in the lowest address, followed by the corresponding right channel sample in the next memory location. The DAC data should always consist of an even number of samples to allow left and right channels, it is not possible to play mono data unless the mono samples are each repeated twice in memory, once for the left channel and once for the right channel. The data is stored as 24 bit 2’s compliment values, where the full scale value depends on the programming of the sample rate converter. The DAC 276 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip expects data samples that already have been 2x over-sampled by code in the DSP, i.e. to play 44.1k sample/sec data, there should be 44.1k * 2 = 88.2k samples/sec per channel in the buffer in on-chip memory. Filco/DSP Write Pointer HW_DACBAR_BAR HW_DACMR_MR # Out Samples to transmit MP3 Decoder 1:2 Interpolation in DSP or FILCO 44.1KHz Samples Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 # Empty Samples # Out Samples to transmit Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 Max # Samples in Buffer HW_DACCPR_CPR HW_DACWCR_WCR == DSP Interrupt HW_DACICR_ICR Figure 97. Stereo Sigma Delta D/A DMA Buffer Registers A producer/consumer double buffer mechanism can be defined by setting HW_DACICR_ICR to half the size of HW_DACMR_MR. This will let the DAC consume half the buffer before the next DAC interrupt is generated. Before the DAC can be turned on and used, the crystal clock used by the DAC and mixer must be enabled using the ACKEN bit of the Clock Control Register (HW_CCR). Also the DAC and Mixer analog circuitry must be powered up using the PR1 & PR2 bits of the Mixer Powerdown Control/Status Register (HW_MIXPWRDNR). 5-35xx-D1-1.08-061705 277 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 24.1. DAC Registers 24.1.1. DAC Base Address Register The DAC Base Address Register is used to specify the base address of the modulo buffer used by the DAC port. The buffer’s base address must zero the k LSBs, where 2k >= HW_DACMR. HW_DACBAR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 BAR 2 3 X:$F805 Table 380. HW_DACBAR BIT LABEL RW RESET 23:16 RSRVD R 15:0 BAR RW 0 0 DESCRIPTION Reserved – Must be written with 0. Base address for the DAC output sample buffer in memory. Table 381. DAC Base Address Register Description 24.1.2. DAC Modulo Register The DAC Modulo Register specifies the modulus of the DAC buffer. The modulus is specified in the same manner as the Mn modulo registers of the Address Generation Unit of the DSP core. For example, writing $000001 to the HW_DACMR indicates a modulo buffer of size $000002. HW_DACMR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 MR 2 3 X:$F804 Table 382. HW_DACMR BIT LABEL RW RESET 23:10 RSRVD R 9:0 MR RW 0 0 DESCRIPTION Reserved – Must be written with 0. Modulo (i.e. size) of the DAC output sample buffer in memory. Table 383. DAC Modulo Register Description 24.1.3. DAC Current Position Register The DAC Current Position Register indicates the address offset from the address specified in the HW_DACBAR DAC Base Address Register where the DAC will read the next output sample. 278 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_DACCPR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CPR 2 3 X:$F803 Table 384. HW_DACCPR BIT LABEL RW RESET 23:10 RSRVD R 9:0 CPR RW 0 0 DESCRIPTION Reserved – Must be written with 0. Current read position of the DAC output sample buffer in memory. Table 385. DAC Current Position Register Description 24.1.4. DAC Word Count Register The DAC Word Count Register specifies the number of words remaining in the onchip memory buffer to be output. Software should fill the memory buffer with sample data, then program the HW_DACWCR to indicate the number of words available to the DAC to be output. For each sample output, the HW_DACWCR is decremented twice, one each for the left and right samples. When the HW_DACWCR_WCR == HW_DACICR_IPT, a transmit interrupt is generated. If the HW_DACWCR_WCR reaches zero and is not updated before the DAC requires another sample (i.e., under-run), then and exception occurs (HW_DACCSR_TXEXC is set). The hardware avoids the race condition between the DMA decrementing HW_DACWCR_WCR and software attempting to indicate the addition of more samples to the DAC buffer. When the DAC is not enabled (HW_DACCSR_TXEN==0), then writes to HW_DACWCR_WCR directly replace the current contents. When the DAC is enabled (HW_DACCSR_TXEN==1), then writes to HW_DACWCR_WCR add to the current contents of HW_DACWCR_WCR, as follows: HW_DACWCR_WCR = HW_DACWCR_WCR + DSP_WRITE_VALUE If the DMA attempts to decrement the word count on the same cycle that the DSP attempts to write to it then the new value becomes: HW_DACWCR_WCR = HW_DACWCR_WCR + DSP_WRITE_VALUE -1 This register counts words in memory, not samples. Since the DAC operates on stereo data, the number of words will be twice the number of samples. HW_DACWCR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 WCR 2 3 X:$F802 Table 386. HW_DACWCR 5-35xx-D1-1.08-061705 279 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BIT LABEL RW RESET 23:10 RSRVD R 9:0 WCR RW DESCRIPTION 0 0 Reserved – Must be written with 0. Number of DAC samples remaining until a DAC interrupt will be generated. Table 387. DAC Word Count Register Description 24.1.5. DAC INTERRUPT CONTROL REGISTER The DAC interrupt control register specifies the number of samples remaining in the DAC output buffer at which to trigger an interrupt. This allows the interrupt to be generated well ahead of a completely empty buffer. HW_DACICR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 IPT 2 3 X:$F806 Table 388. HW_DACICR BIT LABEL RW RESET 23:10 RSRVD R 9:0 IPT RW DESCRIPTION 0 0 Reserved – Must be written with 0. DAC interrupt will be generated on the sample when HW_DACWCR_WCR == HW_DACICR_IPT. Since this register initializes to zero, the default behavior is the same as for the STMP3410 where an interrupt is generated on the sample when HW_DACWCR_WCR reaches zero. Table 389. DAC Interrupt Control Register Description 24.1.6. DAC Sample Rate Register The DAC Sample Rate Register is programmed to specify the sample rate of the DAC. HW_DACSRR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SR 2 3 X:$F801 Table 390. HW_DACSRR BIT LABEL RW RESET 23 RSRVD R 22:0 SR RW 0 0 DESCRIPTION Reserved – Must be written with 0. Sample Rate to use for DAC playback. Table 391. DAC Sample Rate Register Description Most readers can use the values in Table 392 and simply skip the rest of the detailed discussion in this section. The following table contains the required value of the HW_DACSRR register for various common sample rates. If the crystal is changed from the normal 24.0 MHz rate, the FanalogDAC frequency will change, and the HW_DACSRR register must be changed to compensate. Values for both 24.0MHz 280 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip and 24.576MHz are given in the table. The table assumes HW_CCR_DACDIV is set to zero to cause the crystal clock to be divided by four (FanalogDAC = 6.0MHz). . 24.0 MHZ SAMPLE RATE 24.576 MHZ HW_DACSRR_SR HW_DACSRR_SR VALUE VALUE FsampleDAC 48,000 Hz 44,100 Hz 32,000 Hz 24,000 Hz 22,050 Hz 16,000 Hz 12,000 Hz 11,025 Hz 8,000 Hz $06D000 $0780DF $0AB800 $0EA000 $1001BE $167000 $1E4000 $21037C $2DE000 $070000 $07B51E $0B0000 $0F0000 $106A3B $170000 $1F0000 $21D476 $5F0000 Table 392. Values for the HW_DACSRR registers For any of the desired sample rates, the value of the HW_DACSRR register is calculated according to the following formula: OSRDAC = (65536 * 8* FanalogDAC) / (128 * FsampleDAC) = (4096 * FanalogDAC) / FsampleDAC If computed with the above explicit operator precedence, the resulting over sample rate (OSRDAC) will be a 24 bit scaled fixed point representation of the desired decimation rate. In order to load the HW_DACSRR_SR field, we need to account for the interpolator’s pos_zero comparison. To do this, we subtract one from the whole number portion of the OSRDAC. We load the SR bit field with: HW_DACSRR_SR = (OSRDAC - $010000) The value stored in the HW_DACSRR is interpreted as a 24 bit unsigned value. WARNING: The computation of the scaled fixed point OSRDAC value has an intermediate result precision of 35 bits before the division. Long Long (64-bit) C variables should be used to avoid errors due to loss of precision. These are static values that are hard coded into applications for the nine sample rates of interest. Results should be rounded not truncated. NOTE: While the OSR calculation, above, uses the desired sample rate, the buffer must actually contain audio samples at twice this sample rate. Therefore to play a 44.1KHz audio stream through the DAC, one must present an 88.2KHz sample rate interpolated version of the original samples in the buffer that will be fetched by the DAC’s DMA, see Figure 97. “Stereo Sigma Delta D/A DMA Buffer Registers” on page 277. Thus a 2:1 interpolation algorithm must have been run on the 44.1KHz stream before it can be passed to the DMA. This algorithm can run either in DSP software or in the Filter coprocessor, see Section 13. “FILTER COPROCESSOR (FILCO)” on page 154. The 1-bit sigma delta D/A converter is always sampled on a submultiple of the 24.0MHz crystal oscillator frequency as specified in the HW_CCR_DACDIV register, see Figure 98. “Stereo Sigma Delta D/A Converter” on page 282. This divider generates sample strobes at FanalogDAC where the divisors available come 5-35xx-D1-1.08-061705 281 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip from the set {4,6,8,12,16,24}. With HW_CCR_DACDIV set to zero, to divide by 4, FanalogDAC becomes 6.0MHz for a 24.0 MHz crystal. The sample strobe derived from this divider is used to interpolate the 1 bit D/A values. The 1-bit sigma delta modulator is effectively running at FanalogDAC. As shown in Figure 98, the 24 bit 2x sample rate D/A values are extracted from on-chip RAM via the DMA. They are filtered to band limit the audio stream. This filter runs on xtal_clk but filters samples at the source sample rate which is slower than the output D/A sample. In the process, this filter performs a fixed 1:8 interpolation or up-sample of the already 2X up-sampled input stream. Thus the output of the 1:8 fixed interpolation filter is running at 16X FsampleDAC. A single 24 bit sample at the output of the fixed filter is further interpolated up to the 1-bit D/A rate. The variable rate sample, hold and interpolate block performs this function. 16 x FsampleDAC Handshake Right Channel from DMA 1:8 Fixed interp. Filter Sample Hold & Interpolate Sigma dac_rsamp Delta Modulator 1-Bit analog D/A R Handshake Left Channel from DMA 1:8 Fixed interp. Filter Sample Hold & Interpolate Sigma Delta Modulator 1-Bit analog D/A L HW_CCR_DACDIV handshake 2 x FsampleDAC ÷DA_DIV dac_lsamp samp_strobe FanalogDAC 24.0MHz XTAL_CLK XTAL OSC position_reg[31:0] HW_DACSRR_SR 24'hFF0000 1 + 1 31 samp_strobe 16 15 Position Reg whole # fraction pos_zero= (position_reg[23:16] == 8'h00) frac[15:0] pos_zero variable rate interpolator Figure 98. Stereo Sigma Delta D/A Converter It stalls the filter pipeline and DMA source, using the handshake lines that connect with the previous filter stage to supply samples at the correct over-sample ratio. The 1-bit DAC runs at the fixed sample rate of FanalogDAC while the DMA fetches samples in burst at irregular intervals to maintain the required input to the modulator. In this case, the 1-bit D/A is running at 136.054 times the desired sample rate of 44.1KHz or 6MHz. The sample hold and interpolate block accepts a new sample from the filter at a 44.1KHz times 2 times 8 or 705.6KHz. It passes interpolated samples to the modulator at a 6.0MHz rate. The sample, hold and interpolate block passes a source sample from the fixed 1:8 interpolation filter to the sigma delta modulator corresponding to every 8.503 FanalogDAC samples. Recall that this is a 282 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip variable rate interpolation stage which changes for every Over Sample Rate (OSR) setting in use. If the desired sample rate FsampleDAC= 44.1KHz, for example, the sample hold and interpolate block will accept samples from fixed interpolation filter at 705.6KHz, i.e. 16 times the desired sample rate. There is a handshake pair (request/ack) between the variable rate sample hold and interpolate block and the fixed interpolating filter block. This hand shake is used to pace the samples from the filter and DMA buffer to 88.2KHz (2x the desired 44.1KHz) rate. An interpolation filter routine was used within the DSP to generate the 88.2KHz sample stream from the 44.1KHz source. Of course, this is not all the sample rates of interest! There are the members of the 48KHz family, whose members satisfy the property: 24.576MHz = Q*FsampleDAC. These sample rates include 48KHz, 32KHz, 24KHz, 16KHz, and 12KHz. There are also the members of the 44.1KHz family, whose members satisfy the property: 16.9344MHz = Q*FsampleADC where Q comes from the set of integers. These sample rates include 44.1KHz, 22.05KHz and 11.025KHz. Since 24.0MHz and 16.9344MHz are relatively prime, members of the 44.1KHz family are related to the 24.0MHz source clock by the relationship 24.0MHz=P*FsampleADC, where P is a rational number. The D/A converter block includes a variable rate or rational interpolator as shown in Figure 98 to accommodate these sample rates. Rational numbers in the DAC are approximated with a scaled fixed point 24 bit value. In this case, the decimal point falls between bit 15 and bit 16. Therefore the lower two bytes hold the fractional part while the upper byte holds the whole number portion of the scaled fixed point. The position register uses this scaled fixed point representation for the number of 1-bit samples to be interpolated (generated) to find the next sample to be sent to the sigma delta modulator. Whenever the whole number part (viz. bits 23:16) are zero, then the next DMA sample is consumed. For playback at 44.1KHz, we have to set the interpolator to generate 67.027 new interpolated samples between every DMA sample. To accomplish this we load HW_DACSRR_SR with a value of $0780DF in the 24 bit scaled fixed point representation or 7.503 decimal. Referring to the bottom of Figure 98, at reset the position register is loaded with zero so the pos_zero boolean is true. Thus the value $0780DF will be continuously added to the position_reg. After the first addition, pos_zero is no longer true so the value $FF0000 is added to the position-reg. This is effectively a value of minus 1 in the whole number portion resulting in a position register value of $0680DF (6.503). Thus seven 1-bit samples will be generated. At the eighth sample, the DAC will consume the next 24-bit value from the fixed 1:8 filter. Since the upper part of the position register is once again zero, the $0780DF is added to it. The lower 16-bits still contain $00DF so the new position register is $781BE or 7.507decimal. After enough samples are fetched, the fractional part summation will overflow into an integral sample increase causing an additional interpolation cycle. Thus the fractional part of the rational interpolator periodically corrects the diffused interpolation error and corrects for it. Note: Although the DAC can operate at a maximum sampe rate of 48 kHz, the digital filter is limited to 44.1 kHz when both the DAC and ADC are operationg. Sampling above 44.1 kHz may result in an elevated noise floor when the ADV and DAC are operating simultaneously. 5-35xx-D1-1.08-061705 283 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip DAC Control Status Register 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TXEN 1 5 TXIEN 1 6 TXI 1 7 LPBK 1 8 TXEXC 1 9 DMASEL 2 0 DAC_HPPOP 2 1 LVUP 2 2 CLKGT 2 3 X:$F800 RVUP HW_DACCSR VUP 24.1.7. Table 393. HW_DACCSR BITS 23 LABEL CLKGT 22:11 RSRVD 10 VUP RW RESET RW 0 R R 0 0 R 0 9 RVUP 8 LVUP 7 DAC_HPPOP_EN RW 0 6:5 DMASEL RW 00 4 LPBK RW 0 3 TXEXC RW 0 2 TXI RW 0 DEFINITION Clock gate – Used to disable the clocks to the DAC module to conserve power when the DAC is not in use. Must be set to 0 before writing to any other DAC registers. 0Clocks not gated 1Clocks are gated off Reserved – Must be written with 0. Volume Update Pending on Either Channel– This bit is set one if a volume update is pending, i.e. waiting for zero crossing, on either the left or right channels or both. Volume Update Pending on Right Channel– This bit is set one if a volume update is pending, i.e. waiting for zero crossing, on the right channel. Volume Update Pending on Left Channel– This bit is set one if a volume update is pending, i.e. waiting for zero crossing, on the left channel. DAC POP Suppressor Enable – Set this bit to one to enable the pop suppression algorithm. Set this bit to zero to disable the pop suppressor and cause the DAC to mimic the STMP3410 behavior. The pop suppressor works by sending a continuous alternating zero and one stream of samples (101010101010) whenever the DAC is disabled (HW_DACCSR_TXEN =0). Memory space to use for DMA transfers 00 - X space 01 - Y space 10 - P space 11 - Reserved Loopback – When set, the LPBK bit connects the ADC single bit data from the ADC analog circuitry directly to the DAC analog circuitry to perform an analog loopback test without utilizing the DSP core. Transmit Exception – The TXEXC bit is a status bit indicating a transmit exception has occurred. A transmit exception occurs when the DAC needs to read a sample but the HW_DACWCR is zero indicating no samples are available. The TXEXC bit is cleared by writing a 0 to this location. Transmit Interrupt – The TXI bit is a status bit indicating a transmit interrupt has occurred. The TXI bit is cleared by writing a 0 to this location. The Transmit Interrupt can also be cleared by writing to the HW_DACWCR register. Table 394. DAC Control Status Register Description 284 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 1 TXIEN RW 0 0 TXEN RW 0 DEFINITION Transmit Interrupt Enable – The TXIEN bit enables interrupt generation for this port. When the HW_DACWCR reaches zero, an interrupt is generated. Transmit Enable – Setting the TXEN bit causes the DAC Port to begin outputting samples from the modulo buffer specified by the HW_DACBAR, HW_DACMR, and HW_DACWCR. When TXEN is cleared, the TXI and TXEXC bits are cleared. No other DAC registers are cleared. Table 394. DAC Control Status Register Description (Continued) 5-35xx-D1-1.08-061705 285 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 25. ADC The ADC behaves as a DMA device which places data in a modulo (circular) buffer in X/Y/P memory specified by software configuration. Software configuration begins by programming the ADC Base Address Register (HW_ADCBAR), the ADC Modulo Register (HW_ADCMR), and the ADC Current Position Register (HW_ADCCPR) to specify the base address and modulo of the buffer to be used by the ADC as well as the current position in the ADC buffer. The sample rate of the ADC must be specified in the ADC Sample Rate Register (HW_ADCSRR). The number of available sample entries are specified in the ADC Word Count Register (HW_ADCWCR). The ADC interrupt threshold word count is specified in the ADC Interrupt Control Register (HW_ADCICR). At this point sample capture is enabled and the ADC begins to input stereo data. As each DSP word is input, the HW_ADCWCR is decremented and the ADC Current Position Register (HW_ADCCPR) is incremented. When the word count decrements to the value in the HW_ADCICR_IPT, an interrupt will occur if interrupts have been enabled in the ADC Control Status Register (HW_ADCCSR). Software is then responsible for writing to HW_ADCWCR register indicating space for more data is available. If the HW_ADCWCR is not updated before the last free sample location needs to be written to on-chip RAM by the ADC, an exception will occur and an ADC overflow interrupt will be generated. Y-BUS X-BUS P-BUS DSP CORE 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM 16KWord SRAM DMA-BUS ADC Programmable Registers ADC DMA Engine stereo Sigma Delta A/D Converter Figure 99. Stereo Sigma Delta A/D and DMA ADC data is stored in X/Y/P memory with the left channel sample in the lowest address, followed by the corresponding right channel sample in the next memory location. The ADC data always consists of an even number of words to allow left and right channels, it is not possible to record mono data unless the stereo data is recorded and one of the channels is thrown away by the DSP software. The data is stored as 24 bit 2’s compliment values, where the full scale value depends on the programming of the sample rate converter. The ADC generates data samples that are 8x over-sampled, and that need to be decimated to the base rate by code in the DSP. For example, to record 44.1k sample/sec data, the ADC will generate 44.1k * 8 286 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip = 352.8k samples/sec per channel in memory, which must be filtered and decimated down to 44.1k samples/sec by code executing on the DSP or by utilizing three 2:1 decimation stages in the Filter Coprocessor. WARNING: While the ADC is designed to produce 8X over sampled streams relative to the desired sample rate, these are 8X over sampled at a lower precision. DSP filtering should always filter and decimate not just decimate the result. HW_ADCWCR_WCR DSP Interrupt == HW_ADCICR_ICR HW_ADCBAR_BAR HW_ADCMR_MR # of Samples from ADC # Empty Samples # of Samples from ADC Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 44.1KHz Samples Max # Samples in Buffer 8:1 Decimation in DSP or FILCO Left0 Right0 Left1 Right1 Left2 Right2 Left3 Right3 Left4 Right4 Left5 Right5 Left6 Right6 Left7 Right7 Left8 Right8 Left9 Right9 Left10 Right10 Left11 Right11 HW_ADCCPR_CPR Filco/DSP Read Pointer Figure 100. Stereo Sigma Delta A/D and DMA Buffers A producer/consumer double buffer mechanism can be defined by setting HW_ADCICR_IPT to half the size of HW_ADCWCR_WCR. The ADC can then fill half the buffer before generating an interrupt. Figure 100 shows that ADC utilizes a circular buffer whose base address is specified in HW_ADCBAR_BAR. The total number of words in the circular is specified in HW_ADCMR_MR. The word that will next by written with a new ADC sample value is pointed to by the current position register, HW_ADCCPR_CPR. The decimation software or the FILCO has a read pointer that points to the next sample to be read. The difference in these two positions corresponds to the total number of unused locations in the buffer. The software is responsible for notifying the ADC of the number of words it or FILCO have read 5-35xx-D1-1.08-061705 287 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip from the buffer. It does this by writing the number consumed to HW_ADCWCR_WCR. The ADC adds the write value to its internal word count. The total word count maintained by the ADC represents the number of unfilled locations available. If that size falls to zero an overflow is reported on the next sample captured. As that word count falls below the HW_ADCICR_IPT then an interrupt is generated, notifying software that more samples are available in the buffer. ADC write addresses are generated by logically ORing the BAR and current position registers together. Therefore the BAR must be aligned with next larger power of two than the modulo value. The modulo value does not have to be a power of two. Before the ADC can be turned on and used, the crystal clock used by the ADC must be enabled using the ACKEN bit of the HW_CCR Clock Control register. Also the ADC analog circuitry must be powered up using the PR0 bit of the HW_MIXPWRDNR Mixer Powerdown Control/Status register. The value in HW_CCR_ADCDIV may have to be modified for some sample rates and crystal frequency combinations. 25.1. ADC Registers 25.1.1. ADC Base Address Register The HW_ADCBAR is used to specify the base address of the modulo buffer used by the ADC. The buffer’s base address must zero the k LSBs, where 2k >= HW_ADCMR. HW_ADCBAR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 BAR 2 3 X:$FB05 Table 395. HW_ADCBAR BIT LABEL RW RESET DESCRIPTION 23:16 RSRVD R 0 Reserved – Must be written with 0. 15:0 BAR RW 0 Base address for the ADC input sample buffer in memory. Table 396. ADC Base Address Register Description 25.1.2. ADC Modulo Register The ADC Modulo Register specifies the modulus of the ADC buffer. The modulus specified in the same manner as the Mn modulo registers of the Address Generation Unit. For example, writing $0001 to the HW_ADCMR_MR indicates a modulo buffer of size $0002. HW_ADCMR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 MR 2 3 X:$FB04 Table 397. HW_ADCMR 288 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BIT LABEL RW RESET DESCRIPTION 23:10 RSRVD R 0 Reserved – Must be written with 0. 9:0 MR RW 0 Modulo (i.e. size) of the ADC input sample buffer in memory. Table 398. ADC Modulo Register Description 25.1.3. ADC Current Position Register The ADC Current Position Register indicates the address offset from the address specified by the ADC Base Address Register (HW_ADCBAR_BAR) where the ADC will write the next output sample. HW_ADCCPR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 CPR 2 3 X:$FB03 Table 399. HW_ADCCPR BIT LABEL RW RESET DESCRIPTION 23:10 RSRVD R 0 Reserved – Must be written with 0. 9:0 CPR RW 0 Current write position of the ADC input sample buffer in memory. Table 400. ADC Current Position Register Description 25.1.4. ADC Word Count Register The ADC Word Count Register specifies the number of words that are available in the circular buffer to hold new samples. Software should allocate a memory buffer to hold the sample data, then program the HW_ADCWCR_WCR to indicate the number of words available to the ADC to hold the samples being captured. For each sample captured, the HW_ADCWCR_WCR is decremented twice, once each for the left and right samples. When the HW_ADCWCR_WCR == HW_ADCICR_IPT, a transmit interrupt is generated. If the HW_ADCWCR_WCR reaches zero before the ADC needs to write another sample to on-chip RAM (i.e., overrun), then an exception occurs (HW_ADCCSR_TXEXC is set). The hardware avoids the race condition between the DMA decrementing HW_ADCWCR_WCR and software attempting to indicate the availability of more sample space by writing to HW_ADCWCR_WCR. When the ADC is not enabled (HW_ADCCSR_TXEN == 0) then writes to the HW_ADCWCR_WCR replace the current contents. When the ADC is enabled, (HW_ADCCSR_TXEN = 1) then writes to the HW_ADCWCR_WCR register add to the current contents as follows: HW_ADCWCR_WCR = HW_ADCWCR_WCR + DSP_WRITE_VALUE If the DMA attempts to decrement the word count on the same cycle that the DSP attempts to write to it, then the new value becomes: HW_ADCWCR_WCR = HW_ADCWCR_WCR + DSP_WRITE_VALUE - 1 This register counts words in memory, not samples. Since the ADC operates on stereo data, the number of words will be twice the number of samples. 5-35xx-D1-1.08-061705 289 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_ADCWCR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 WCR 2 3 X:$FB02 Table 401. HW_ADCWCR BIT LABEL RW RESET 23:10 RSRVD R 9:0 WCR RW DESCRIPTION 0 0 Reserved – Must be written with 0. Number of ADC samples remaining until an ADC interrupt will be generated. Table 402. ADC Word Count Register Description 25.1.5. ADC INTERRUPT CONTROL REGISTER The ADC interrupt control register specifies the number of empty sample entries remaining in the ADC input buffer at which to trigger an interrupt. This allows the interrupt to be generated well ahead of a completely full buffer. HW_ADCICR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 IPT 2 3 X:$FB06 Table 403. HW_ADCICR BIT LABEL RW RESET 23:10 RSRVD R 9:0 IPT RW 0 0 DESCRIPTION Reserved – Must be written with 0. DAC interrupt will be generated on the sample when HW_ADCWCR_WCR == HW_ADCICR_IPT. Since this register initializes to zero, the default behavior is the same as for the STMP3410 where an interrupt is generated on the sample when HW_ADCWCR_WCR reaches zero. Table 404. ADC Interrupt Control Register Description 25.1.6. ADC Sample Rate Register The ADC Sample Rate Register is programmed to specify the sample rate of the ADC. HW_ADCSRR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 SR 2 3 X:$FB01 Table 405. HW_ADCSRR 290 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BIT LABEL RW RESET 23 RSRVD R 22:0 SR RW 0 0 DESCRIPTION Reserved – Must be written with 0. Sample Rate to use for ADC recording. Table 406. ADC Sample Rate Register Description Most readers can simply use the values in Table 407 and skip the following detailed discussion. The following table contains the required value of the HW_ADCSSR_SR register for various common sample rates. If the crystal is changed from the normal 24.0 MHz rate, the Fanalog frequency will change, and the HW_ADCSSR_SR register must be changed to compensate. The table assumes that HW_CCR_ADCDIV is either set to zero, i.e. FanalogADC = 6.0MHz or FanalogADC = 1.0MHz. Optional low pass filter is enabled at HW_ADCCSR_LPF_MODE. Fanalog = 6.0MHz SAMPLE RATE HW_ADCSRR_SR FsampleADC Value SCALE FACTOR with LPF no LPF 48,000 Hz $0EA000 16 128 44,100 Hz $1001BE 13 108 32,000 Hz $167000 7 57 24,000 Hz $1E4000 4 32 22,050 Hz $21037C 3.37 27 16,000 Hz $2DE000 1.77 * 14 1.0 * 8.0 12,000 Hz $3D8000 0.844 * 6.75 11,025 Hz $4306F7 8,000 Hz $5CC000 0.44 * 3.55 * The OSR for these sample rates at Fanalog=6MHz is too high, use Fanalog=1.0MHz to avoid clipping. Table 407. Values for the HW_ADCSRR_SR register at 6.0MHz Fanalog = 1.0MHz SAMPLE RATE HW_ADCSRR_SR SCALE FACTOR FsampleADC Value no LPF with LPF 48,000 Hz 44,100 Hz 32,000 Hz 24,000 Hz 22,050 Hz 16,000 Hz 12,000 Hz 11,025 Hz 8,000 Hz $019AAA $01D59F $02E800 $043555 $04AB3F $06D000 $096AAA $0A567E $0EA000 463 392 206 116 99 52 29 24 13 3704 3136 1648 928 792 416 232 192 104 Table 408. Values for the HW_ADCSRR_SR register at 1.0MHz 5-35xx-D1-1.08-061705 291 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip For any of the desired sample rates, the value of the HW_ADCSSR_SR register is calculated according to the following formula: OSRADC = (65536 * 16 * FanalogADC) / (128 * FsampleADC) = (8192* FanalogADC) / FsampleADC If computed with the above explicit operator precedence, the resulting over sample rate (OSRADC) will be a 24 bit scaled fixed point representation of the desired decimation rate. In order to load the HW_ADCSRR_SR field, we need to account for the decimators pos_zero comparison. To do this, we subtract one from the whole number portion of the OSRADC. We load the SR bit field with: HW_ADCSSR_SR = (OSRADC - $010000) The value stored in the HW_ADCSRR_SR is interpreted as a 24 bit unsigned value. WARNING: The computation of the scaled fixed point OSRADC value has an intermediate result precision of 35 bits before the division. These are static values that are hard coded into applications for the nine sample rates of interest. Long Long (64-bit) C variables should be used to avoid errors due to loss of precision. NOTE: While the OSR calculation, above, uses the desired sample rate, the buffer will actually contain audio samples at 8 times this sample rate. Therefore to record a 44.1KHz audio stream from the ADC, one must accept the 352.8KHz sample stream that is DMAed to on-chip memory. To record it at 44.1KHz, one must run an 8:1 decimation algorithm in the DSP or run three stages of the FILCO’s 2:1 decimation FIR filter, see Figure 100. “Stereo Sigma Delta A/D and DMA Buffers” on page 287. The 1-bit sigma delta A/D converter is always sampled on a submultiple of the 24.0MHz crystal oscillator frequency as specified in the HW_CCR_ADCDIV register, see Figure 101. “Variable Rate A/D Converter” on page 294. This divider generates sample strobes at FanalogADC where the divisors available come from the set {4,6,8,12,16,24}. It is recommended that ADCDIV always be set to 000 so that a 6.0MHz 1-bit A/D sample rate is used. The sample strobe is used to integrate the 1bit A/D values. As shown in Figure 101, these integrated values are filtered and then delivered to the ADC DMA to write into on-chip RAM. Notice that the integrators run continuously while the filters produce samples at the decimated rate. Depending on the decimation or over-sample ratio of the CIC filter engine, the integrators will produce samples of various precisions and scale factors. The filtered values written to RAM are signed 24 bit numbers with the conversion data LSB justified, i.e. down-scaled in the lower end of the 24 bit word. The scale factor column of Table 407, “Values for the HW_ADCSRR_SR register at 6.0MHz,” on page 291 gives the approximate values to multiply the resultant samples to achieve a normalize fixed point scaled fixed point with the fixed point set between the sign bit and the first data bit. If the variable rate decimator is set to decimate by exactly 16, then this setting causes it to produce samples that are 8X over-sampled with respect to the desired frequency (8x16=128 total over-sample rate). A filter and decimation routine in the DSP is then used to produce stereo or mono audio samples at the desired FsampleADC for use in various recording applications. With FanalogADC at 6.0MHz and an oversample rate of exactly 128 gives us an FsampleADC of 46.875KHz. Thus there are no standard audio stream sample rates that are exactly interpolated with a 24.0MHz crystal. 292 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The 48KHz family of sample rates satisfy the property: 24.576MHz = Q*FsampleADC where Q comes from the set of integers. These sample rates include 48KHz, 32KHz, 24KHz, 16KHz, 12KHz and 8KHz. There are also the members of the 44.1KHz family, whose members satisfy the property: 16.9344MHz = Q*FsampleADC where Q comes from the set of integers. These sample rates include 44.1KHz, 22.05KHz and 11.025KHz. Since 24.576KHz and 16.9344MHz are relatively prime to 24.0MHz, members of the 48KHz family and 44.1KHz family are related to the 24.0MHz source clock by the relationship 24.0MHz=P*FsampleADC, where P is a rational number. The A/D block includes a variable rate or rational decimator as shown in Figure 101 to accommodate these sample rates. Rational numbers in the ADC are approximated with a scaled fixed point 24 bit value. In this case, the decimal point falls between bit 15 and bit 16. Therefore the lower two bytes hold the fractional part while the upper byte holds the whole number portion of the scaled fixed point. The position register uses this scaled fixed point representation to hold the number of 1bit samples to be dropped (decimated) to find the next sample at which to produce a filtered multi-bit sigma delta A/D value to send to the DMA. Whenever the whole number part (viz. bits 23:16) are zero, then a sample is produced. For recording at 44.1KHz, we have to set the decimator to skip 17.0068 (P=2500/147) 1-bit samples and produce a filtered multi-bit result. Recall that all 17.0068 1-bit samples are integrated before producing the result. To accomplish this we load HW_ADCSRR_SR with a value of $1001BE or 16 as the whole number portion. Referring to the bottom of Figure 101, at reset the position_reg is loaded with zero so the pos_zero boolean is true. Thus the value $1001BE will be continuously added to the position_reg. After the first addition, pos_zero is no longer true so the value $FF0000 is added to the position-reg. This is effectively a value of minus 1 in the whole number portion so sixteen 1-bit samples will be skipped. On the seventeenth sample, the ADC will produce a 24 bit result and will forward it to the on-chip RAM, via the DMA. Notice that the lower 16 bits of the HW_ADCSRR_SR value will be accumulate into the position register and will eventually overflow into the whole number portion causing an additional sample to be skipped. Note: Although the ADC can operate at a maximum sample rate of 48kHz, the digital filter is limited to 44.1KHz when both teh ASC and DAC are operating. Sampling above 44.1kHz may result in an elevated noise floor when the ADC and DAC are operationg simultaneously. 5-35xx-D1-1.08-061705 293 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip analog_R analog_L 1-Bit A/D rsamp_in 1-Bit A/D lsamp_in +/- 1 Integrator CIC Filter & Interpolators rsamp_out[23:0] +/- 1 Integrator CIC Filter & Interpolators lsamp_out[23:0] HW_CCR_ADC_DIV Variable Rate Decimator AD_DIV table ÷AD_DIV 24.0MHz 6.0MHz sample strobe CIC State Matchine DMA_request XTAL_CLK XTAL OSC position_reg[31:0] HW_ADCSRR_SR 24'hFF0000 1 + samp_strobe 1 31 16 15 Position Reg whole # fraction pos_zero= (position_reg[31:16] == 16'h0000) frac[15:0] pos_zero variable rate decimator Figure 101. Variable Rate A/D Converter As shown in Table 392, “Values for the HW_DACSRR registers,” on page 281, at FsampleADC =44.1KHz, FanalogADC is 6.00MHz so the ratio of these two frequencies is 136.0544. This is the over-sample ratio at which the 1-bit A/D over samples the desired sample rate. Since we have set the decimation rate to 1:17.0068 we will see 352.8KSamples/second in the on-chip buffer or 8X over sample of our desired 44.1KHz sample rate. Either DSP software or the FILCO coprocessor is used to low pass filter and decimate this resultant sample stream to 44.1KHz. The range of values of the samples stored into the on-chip RAM is proportional to the square of the over sample rate (OSR) used in the capture process. The larger the OSR, the longer period the integrators run in the ADC. As result the range of values scene for the same signal wave form captured at the same sample rate but with two different OSR will be different. For example, an 8KHz microphone captured at FADC = 6.0MHz will be 36 times larger than the values resulting from capturing the same source signal at FADC = 1.0MHz. The peak range of values seen in a capture of a signal at 44.1KHz with FanalogADC = 6.0MHz is +/-3200 decimal. The oversimple ratio in this case is OSR= 136.054. We can calculate a magnitude constant, Kfilter for ADC’s filter from this as Kfilter = OSR2/Peak Value = (136.054)2/3200 294 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip = 5.7846. For any OSR in any sample rate, the peak value can be approximated by Valuepeak = OSR2 /Kfilter. In signal processing, one frequently normalizes the range of values to +/-1.0 as seen in a fixed point scaled integer1. For a 24 bit DSP, the fixed point is placed between bit 23 and the sign bit (bit 24) (bit 1 = 20). So the desired maximum excursion is then +/- 223 or +/-8388608, decimal. One can calculate a normalization constant to multiply all incoming samples for each sampling condition from the following equation: ScaleFactor = 223 * Kfilter / OSR2 If the incoming sample stream is multiplied, sample by sample, by ScaleFactor, then normalized +/-1.0 samples result. The reader may wish to reduce the size of ScaleFactor slightly to allow for out or range samples. The STMP35xx implements an optional low pass filter which is applied to the 1-bit sigma delta stream, see HW_ADCCSR_LPFMODE. Selecting the LPF option increases the magnitude of the signal going into the decimation by a factor of eight. As a result, the scale factors are one eighth as large when using the LPF than without the LPF enabled, see Table 407. “Values for the HW_ADCSRR_SR register at 6.0MHz” on page 291. NOTE: Because of the effect of scaling, sample rates at 8KHz, 11.0225KHz, 12KHz, and 16KHz should be performed at Fanalog = 1.0MHz. One can empirically determine the value of Kfilter for a design and then adjust the scale factor table. 1.A normalized two’s complement 24 bit number can not actually express a value of +1.0 without overflowing. 5-35xx-D1-1.08-061705 295 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip ADC Control Status Register 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TXEN 1 9 TXIEN 2 0 TXI 2 1 LPBK 2 2 LPFMODE CLKGT 2 3 X:$FB00 TXEXC HW_ADCCSR DMASEL 25.1.7. Table 409. HW_ADCCSR BITS 23 LABEL CLKGT RW RESET RW 0 22:12 RSRVD R 0 11:8 LPFMODE RW 0000 7 6:5 RSRVD DMASEL R 0 RW 00 4 LPBK RW 0 3 TXEXC RW 0 2 TXI RW 0 1 TXIEN RW 0 0 TXEN RW 0 DEFINITION Clock gate – Used to disable the clocks to the ADC module to conserve power when the ADC is not in use. This bit must be set to 0 before writing to any other ADC registers, and while the ADC is operating. 0Clocks enabled 1Clocks gated off Reserved – Must be written with 0. Low Pass Filter Mode – The ADC implements a hardware low pass filter on the one bit values coming from the 1-bit sigma delta A/D converter. This field controls the low pass filter mode for both the left and the right channel. 0000 - Low pass filtering disabled (3410 compatibility mode) 1111 - input data summed across 16 samples, then divide by 16 Other LPFMODE settings are reserved. Reserved – Must be written with 0. Memory space to use for DMA transfers 00 - X space 01 - Y space 10 - P space 11 - Reserved Loopback – When set, the LPBK bit connects the DAC single bit data output from the DAC digital circuitry directly to the ADC digital circuitry to perform a digital loopback test without utilizing the analog circuitry. Transmit Exception – The TXEXC bit is a status bit indicating a transmit exception has occurred. A transmit exception occurs when the ADC needs to write a sample but the HW_ADCWCR is zero indicating no room is available in the module buffer.The TXEXC bit is cleared by writing a 0 to this location. Transmit Interrupt – The TXI bit is a status bit indicating a transmit interrupt has occurred. This register can also be cleared by writing to the HW_ADCWCR register. The TXI bit is cleared by writing a 0 to this location. Transmit Interrupt Enable – This bit enables interrupt generation for the ADC. When the HW_ADCWCR register reaches zero, an interrupt is generated. Transmit Enable – Setting the TXEN bit causes the ADC Port to begin outputting samples into the modulo buffer specified by the HW_ADCBAR, HW_ADCMR, and HW_ADCWCR registers. When TXEN is cleared, the TXI and TXEXC bits are cleared. No other ADC registers are cleared. Table 410. ADC Control Status Register Description 296 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 26. MIXER 26.1. Mixer Address Registers ADDRESS DESCRIPTION X:$FA03 X:$FA04 X:$FA05 X:$FA06 X:$FA07 X:$FA08 X:$FA09 X:$FA0A X:$FA0B X:$FA1C Codec/mixer test register Mixer master volume register Mixer Microphone in volume register Mixer Line In volume register Mixer FM In volume register Mixer DAC In volume register Mixer Record Select register Analog ADC gain register Mixer Power down/control stat register Mixer Test Register Table 411. Mixer Address Registers 26.2. Mixer Block Diagram The analog level of the signals mixed throughout the chip can be controlled through registers. The block diagram is shown in Figure 103. The microphone channel is a mono source, so its signal is available on both the left and right channels. HW_MIXLINE1INVR LINEIN HW_MIXMICINV HW_MIXMASTERVR MICIN + HW_MIXLINE2INVR OUTPUT HW_HPCTRL FMIN HW_MIXDACINVR FROM DAC BUFFER DAC CLK EN HW_DACCSR[0] HW_DACSRR CLK CRYSTAL HW_CCR[22:20] HW_CCR[3] HW_CCR[18] HW_MIXRECSELR HW_MIXADCGAINR LINEIN FMIN ADC MICIN CLK CLK CRYSTAL HW_CCR[7:5] HW_CCR[18] HW_ADCSRR TO ADC BUFFER EN HW_ADCCSR[0] HW_CCR[3] Figure 102. Mixer Flow Diagram Note that when the mixer is powered down (using the PR2 field of the HW_MIXPWRDNR register), the DAC can still play audio through the headphone amplifier to the output. This mode has the dual advantage of saving the power 5-35xx-D1-1.08-061705 297 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip consumption of the analog mixer, as well as eliminating the mixer as a source of SNR or THD loss. LINEIN LINEIN MICIN MIC+20dB bits of MICIN reg LINEIN MICIN Headphone (HPH) + FMIN FMIN MICIN Headphone (HPH) Output Output FMIN Master Volume Stage (MASTERV) DACIN DACIN MIC+20dB bits of MICIN reg MICIN DACIN ADC Mux. (RECSELECT) Master Volume Stage (MASTERV) DACIN ADC Mux. (RECSELECT) ADC In ADCGAIN ADC In ADCGAIN (PR2 = 0) (PR2 = 1) Mixer Powered Up Mixer Powered Down Figure 103. Mixer Block Diagram 26.3. Mixer Programming Model The various mixer control registers are summarized below. 26.3.1. Mixer Master Volume Register The ML field adjusts the level for the left channel master output, while the MR field adjusts the level for the right channel master output. Each increment of the ML/MR fields represents 2.0dB1 of attenuation of the master volume output on the mixer. The Mute bit will silence the output regardless of the current settings of the ML/MR bits. HW_MIXMASTERVR X:$FA04 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 MR 2 1 ML 2 2 MUTE 2 3 Table 412. HW_MIXMASTERVR 1.The master volume level at a value of ML or MR=00010 on the STMP35xx corresponds to the same level as a value of ML or MR=00000 on the STMP3410. NOTE: dB levels are approximate values at each code point. 298 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 23:16 RSRVD R 0 15 MUTE RW 1 14:13 12:8 7:5 4:0 RSRVD ML RSRVD MR R RW R RW 0 00010 0 00010 DEFINITION Reserved – Must be written with 0. Mixer Master mute control 0 unmuted 1 muted Reserved – Must be written with 0. Mixer Master volume control for left channel Reserved – Must be written with 0. Mixer Master volume control for right channel Table 413. Mixer Master Volume Register Description MUTE ML/MR LEVEL 0 0 1 0 0000 1 1111 X XXXX +6.0 dB -56 dB -infinity Table 414. Mixer Master Volume Register values 26.3.2. Analog Mixer Volume Registers This section refers to the MicIn, Line-In, Line-In 2 (also know as FM-In), and DAC registers listed below. The GL fields adjust the gain for the left channel of the analog input, while the GR fields adjust the gain for the right channel of the analog input. For the MicIn, there is only one channel adjusted by the GN field, although the results of this volume stage are available on both channels of the mixer. Each increment of the GL/GR/GN fields represents -1.5 dB of adjustment in the gain level. All analog mixer inputs have a mute bit which will silence this analog input regardless of the settings of the GL/GR/GN bits. The MicIn additionally has a 20 dB boost bit which provides a fixed 20 dB boost to the microphone signal when set. Unlike the master volume, each analog mixer input has the ability to apply gain or attenuation to the analog signal. MUTE 0 0 0 1 GL/GR/GN 0 0000 0 1000 1 1111 X XXXX LEVEL +12 dB 0 dB -34.5 dB -infinity Table 415. Mixer Volume Register values Mixer Microphone-In Volume Register 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 MUTE 2 3 X:$FA05 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 GN HW_MIXMICINVR 20DB 26.3.2.1. Table 416. HW_MIXMICINVR 5-35xx-D1-1.08-061705 299 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS 23:16 15 14:7 6 LABEL RSRVD MUTE RSRVD 20DB RW R RW R RW RESET 0 1 0 0 5 4:0 RSRVD R 0 GN RW 01000 DEFINITION Reserved – Must be written with 0. Mixer Microphone In mute Reserved – Must be written with 0. Mixer Microphone In boost 0 no boost 1 20 dB boost Reserved – Must be written with 0. Mixer Microphone-In volume Table 417. Mixer Microphone-In Volume Register Description The external microphone needs a bias voltage to enable it to operate. This bias voltage can be generated externally using discrete components as shown in Figure 104, or if either the LRADC1 or LRADC2 pins are available, one of them can be used to supply a bias voltage from an on-chip generator, as shown in Figure 105. To enable the generation of the microphone bias voltage on pin LRADC1 or LRADC2, the two MICBIAS bits in the HW_MIXTBR need to be written with required values for desired internal resistor selection. To select either pin LRADC1 or LRADC2 as mic bias source, write the MIC_BIAS bit (SDK bit name is MIC_BIAS_OUT_SEL) in register HW_MIXTBR as follows: 0 for pin LRADC1, 1 for pin LRADC2. MIC 0.1µF Microphone 2.2k VddIO 2.2k 0.1µF 10µF Figure 104. External Microphone Bias Generation 300 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 0.1µF Microphone 2.2K MIC HW_MIXTBR_MICBIAS_OUT_SEL LRADC1 (opt.) LRADC2 (opt.) HW_MIXTBR_ MICBIAS 10µF 2k 4k 8k 2.0V Figure 105. Internal Microphone Bias Generation Mixer Line-In Volume Register 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 MUTE 2 3 X:$FA06 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 GR HW_MIXLINE1INVR GL 26.3.2.2. Table 418. HW_MIXLINE1INVR BITS 23:16 15 14:13 12:8 7:5 4:0 LABEL RSRVD MUTE RSRVD GL RSRVD GR RW R RW R RW R RW RESET 0 1 0 01000 0 01000 DEFINITION Reserved – Must be written with 0. Mixer Line-In mute Reserved – Must be written with 0. Mixer Line-In left channel volume Reserved – Must be written with 0. Mixer Line-In right channel volume Table 419. Mixer Line-In Volume Register Description 26.3.2.3. Mixer Line-In 2 Volume Register Line-In 2 is also know as FM-In, although nothing about this input restricts it to only be used with an FM source, it can also be used with other sources. This input channel is only available in 144-pin package versions of the chip. 5-35xx-D1-1.08-061705 301 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 6 0 5 0 4 0 3 GL MUTE 2 3 X:$FA07 0 2 0 1 0 0 0 1 0 0 0 1 0 0 GR HW_MIXLINE2INVR Table 420. HW_MIXLINE2INVR BITS LABEL RW RESET 23:16 15 14:13 12:8 7:5 4:0 RSRVD MUTE RSRVD GL RSRVD GR R RW R RW R RW 0 1 0 01000 0 01000 DEFINITION Reserved – Must be written with 0. Mixer Line-in 2 mute Reserved – Must be written with 0. Mixer Line-in 2 left channel volume Reserved – Must be written with 0. Mixer Line-in 2 right channel volume Table 421. Mixer Line-in 2 Volume Register Description Mixer DAC In Volume Register HW_MIXDACINVR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 GL MUTE 2 3 X:$FA08 0 2 GR 26.3.2.4. Table 422. HW_MIXDACINVR BITS LABEL RW RESET 23:16 15 14:13 12:8 7:5 4:0 RSRVD MUTE RSRVD GL RSRVD GR R RW R RW R RW 0 1 0 01000 0 01000 DEFINITION Reserved – Must be written with 0. Mixer DAC mute – This bit is only valid when PR2 in HW_MIXPWRDNR = 0. Reserved – Must be written with 0. Mixer DAC Left channel volume Reserved – Must be written with 0. Mixer DAC Right channel volume Table 423. Mixer DAC In Volume Register Description Mixer Record Select Register HW_MIXRECSELR 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 SL 2 3 X:$FA09 0 6 0 5 0 4 0 3 0 2 SR 26.3.2.5. Table 424. HW_MIXRECSELR 302 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 23:12 10:8 7:3 2:0 RSRVD SL RSRVD SR R RW R RW 0 000 0 000 DEFINITION Reserved – Must be written with 0. Mixer Record Left channel select Reserved – Must be written with 0. Mixer Record Right channel select Table 425. Mixer Record Select Register Description SR RIGHT RECORD SELECT 000 001 010 011 100 101 110 111 SL Mic-in Reserved Reserved Line-in2 (AKA FM-in) Line-in StereoMix Reserved Reserved LEFT RECORD SELECT 000 001 010 011 100 101 110 111 Mic-in Reserved Reserved Line-in2 (AKA FM-in) Line-in StereoMix Reserved Reserved Table 426. Mixer ADC Select Register 26.3.3. Mixer ADC Gain Register The record gain register provides gain only to the analog signal being input into the ADC. The GL field adjusts the left channel, while the GR field adjusts the right channel. Each increment of these fields represents -1.5 dB of gain. The mute bit will silence the input regardless of the settings of the GL/GR fields. HW_MIXADCGAINR X:$FA0A 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 GR 2 1 GL 2 2 MUTE 2 3 Table 427. HW_MIXADCGAINR BITS LABEL RW RESET 23:16 15 14:12 11:8 7:4 3:0 RSRVD MUTE RSRVD GL RSRVD GR R RW R RW R RW 0 1 0 0000 0 0000 DEFINITION Reserved – Must be written with 0. Mixer ADC Gain mute Reserved – Must be written with 0. Mixer ADC Gain left channel Reserved – Must be written with 0. Mixer ADC Gain right channel Table 428. Mixer ADC Gain Register Description 5-35xx-D1-1.08-061705 303 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip MUTE GL/GR LEVEL 0 0 1 1111 0000 XXXX +22.5 dB 0 dB -infinity Table 429. Mixer ADC Gain Register Mixer Power Down Control/Status Register 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 PR0 2 3 X:$FA0B PR1 HW_MIXPWRDNR PR2 26.3.4. 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 Table 430. HW_MIXPWRDNR BITS LABEL RW RESET 23:12 RSRVD R 0 11 PR2 RW 1 10 PR1 RW 1 9 PR0 RW 1 8:0 RSRVD R DEFINITION Reserved – Must be written with 0. Power down analog mixer 0 Analog mixer powered up 1 Analog mixer powered down When the analog mixer is powered down, it is still possible to play audio through the DAC. The reference voltage generator is still powered up, and if the DAC is still powered up and playing audio, the audio is routed directly into the master volume stage, bypassing the analog mixer. Aside from saving power, this mode of operation has the added advantage of providing better SNR/THD performance. Power down DAC analog circuitry 0 DAC & input mux powered up 1 DAC & input mux powered down Power down ADC & input mux analog circuitry 0 ADC & input mux powered up 1 ADC & input mux powered down Reserved – Must be written with 0. 0 Table 431. Mixer Power Down Control/Stat Register Description BIT PR0 PR1 PR2 FUNCTION PCM in ADCs and Input Mux Powerdown PCM out DACs Powerdown Analog Mixer Powerdown (Vref still on) (Please see Figure 103.) Table 432. Mixer Power Down Register 26.3.5. Codec/Mixer Test Register The Codec/Mixer test register contains some bits that control functionality that was designed as options, and that was not expected to be used. It also contains control bits for functions that are available for general use. Please pay careful attention to the notes in each bit field which indicate whether that field is available for general usage. If it is marked unavailable then be certain to only write its reset value when 304 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip modifying other bits in the register. The programmer shouldn’t change the unavailable bit fields in this register without being directed to do so by SigmaTel, as undesired operation may result. The organization of the Codec/Mixer Test register is shown below. ADTHD XBGC XBCO VCOS 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 PLL_ZERO_VT MICBIAS0 0 9 HOLD_GND PWDADC 1 0 ACKI 1 1 ASD2X 1 2 PCPCU 1 3 DCKI 1 4 PCPCD 1 5 PSRN 1 6 MIC_BIAS_OUT_SEL 1 7 FX2 1 8 EZD 1 9 MICBIAS1 2 0 DZCDA DZCMI 2 1 DZCLI 2 2 X:$FA03 DZCFM 2 3 DZCMA HW_MIXTBR 0 0 Table 433. HW_MIXTBR BITS LABEL RW RESET DEFINITION 23 DZCMA RW 0 Enable zero crossing volume update for master volume stage. This bit field is available for general usage. 22 DZCMI RW 0 Enable zero crossing volume update for microphone volume stage. This bit field is available for general usage. 21 DZCLI RW 0 Enable zero crossing volume update for line-in volume stage. This bit field is available for general usage. 20 DZCFM RW 0 Enable zero crossing volume update for line-in 2 (also known as FM-in) volume stage. This bit field is available for general usage. 19 DZCDA RW 0 Enable zero crossing volume update for DAC volume stage – (Use only when mixer is powered up, HW_MIXPWRDNR PR2 = 0. DAC zero crossing volume updates are done digitally when the mixer is powered down, HW_MIXPWRDNR PR2 = 1). This bit field is available for general usage. 18 EZD RW 0 Enable zero crossing detect for the volume stage determined by bits 23-19 – Note that one and only one of the bits 23-19 must be set high for the zero crossing detect to properly function. Also, there is a 10Hz timeout used, so if a zero crossing is not detected within a 10Hz period, the volume is automatically updated. Only one bit in the range 23-19 can be enable at a time for zero crossing detection. This bit field is available for general usage. 17 MICBIAS1 RW 0 SEE MICBIAS field below. WARNING this is a split field with PWDADC in the middle. Table 434. Codec/Mixer Test Register Description 5-35xx-D1-1.08-061705 305 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 16 PWDADC RW 0 Power down ADC right channel – This powers down one ADC channel when the ADC is being used to record only a mono channel. When set, some power will be saved in the analog portion of the ADC. The ADC will still generate stereo data, however only the samples for the left channel will be valid. This bit reserved for use only by SigmaTel, always set it to zero. 17,15 MICBIAS RW 00 Microphone resistor select – Provides an option for reducing board complexity by integrating some bias circuitry for the microphone. This circuit provides a regulated supply connected via a selectable resistor value to the line-in right pin. This allows users to connect the microphone to the LRADC1 or LRADC2 pins and then externally place a capacitor to the microphone input to implement the microphone function. This functionality cannot be used at the same time that the selected LRADC input is needed. See the microphone volume register for a figure detailing the circuit. WARNING this two bit field is split by PWDADC in bit 16. 00 01 Mic bias off 2kohm 10 11 4kohm 8kohm 14 ADTHD RW 0 Turn off ADC dither. This bit is reserved for use only by SigmaTel, always set it to zero. 13 XBGC RW 0 Causes the xtal oscillator to use the band gap bias current, instead of its self-generated bias current. This bit is reserved for use only by SigmaTel, always set it to zero. 12 XBCO RW 0 Turns off xtal internal bias current. This bit is reserved for use only by SigmaTel, always set it to zero. 11 VCOS RW 0 Speed up PLL VCO. This bit is reserved for use only by SigmaTel, always set it to zero. 10 FX2 RW 0 Double frequency reference to the PLL. This bit is reserved for use only by SigmaTel, always set it to zero. 9 PSRN RW 0 Disable fast falling edge power down function of PSWITCH pin. This bit is reserved for use only by SigmaTel, always set it to zero. NOTE: setting this bit to one overrides all other sources of reset to the chip as well. 8 MIC_BIAS RW 0 Enable Mic Bias. This bit controls the mic bias source selection. 0 - mic bias from LRADC1 1 - mic bias from LRADC2 7 DCKI RW 0 Invert DAC clock. This bit is reserved for use only by SigmaTel, always set it to zero. 6 PCPCD RW 0 Decrease PLL charge pump current 2X. This bit is reserved for use only by SigmaTel, always set it to zero. 5 PCPCU RW 0 Increase PLL charge pump current 2X. This bit is reserved for use only by SigmaTel, always set it to zero. 4 ASD2X RW 0 Slow ADC dither. This bit is reserved for use only by SigmaTel, always set it to zero. 3 ACKI RW 0 Invert ADC clock. This bit is reserved for use only by SigmaTel, always set it to zero. Table 434. Codec/Mixer Test Register Description (Continued) 306 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 2 HOLD_GND RW 0 Hold at Ground. This bit can be used to reduce “pops” at startup. It causes the headphone output to be held at ground. 1 PLL_ZERO_VT RW 0 Select Zero Vt Devices. This bit controls the special PLL zero VT mode. 0 - PLL Normal VT 1 - PLL Zero VT 0 RSRVD R 0 Reserved – Must be written with 0. Table 434. Codec/Mixer Test Register Description (Continued) Reference Control Register 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DACVBGVAL 1 6 ADJDAC 1 7 VAGVAL 1 8 ADJV 1 9 ADCREFV 2 0 ADJADC 2 1 PWRDWNS 2 2 LWREF 2 3 X:$FA19 LOW_PWR HW_REF_CTRL BIASC 26.3.6. Table 435. HW_REF_CTRL BITS LABEL RW RESET 23:20 RSRVD 19 LOW_PWR R 0 RW 0 18 LWREF 17:16 BIASC RW 0 RW 0 15 PWRDWNS RW 0 14 ADJADC RW 0 13:10 ADCREFV RW 0 DEFINITION Reserved – Must be written with 0. Lowers power in the band gap amplifier. This mode is useful in USB suspend or standby when absolute band gap accuracy is not critical. lower voltage in 13:10, 8:5, 3:0 by 20% Bias current control 00 nominal 10 -10% 01 -20% 11 +10% These bits control the bias currents sent to all the analog circuits from the band gap generator. Powers down selfbias circuit – The reference uses a self bias circuit during powerup that can be turned off with this bit. However, care must be taken that the DC-DC converter must be using the bandgap-generated current before the selfbias is powered down (bit [15] in $fa14). Adjust ADC reference using bits [13:10], default 1.5V derived from the bandgap ADC reference value 1111 1.600V 1001 1.450V 0100 1.325V 1110 1.575V 1000 1.425V 0011 1.300V 1101 1.550V 0111 1.400V 0010 1.275V 1100 1.525V 0110 1.375V 0001 1.250V 1011 1.500V 0101 1.350V 0000 1.225V 1010 1.475V Table 436. Reference Control Register Description 5-35xx-D1-1.08-061705 307 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 9 ADJV RW 0 8:5 VAGVAL RW 0 4 ADJDAC RW 0 3:0 DACVBGVAL RW 0000 DEFINITION These bits adjust the value of the reference used by the ADC, and can be used to allow acceptable analog performance at low supply voltages. Voltages shown can be lowered 20% lower by setting bit 18. Adjust Vag – Default is a resistor divider from the analog power supply. These bits adjust the value of the analog reference used throughout the codec. This value should be programmed to be near half of the analog target supply voltage. Vag Value 1111 1.000V 1001 0.850V 0100 0.725V 1110 0.975V 1000 0.825V 0011 0.700V 1101 0.950V 0111 0.800V 0010 0.675V 1100 0.925V 0110 0.775V 0001 0.650V 1011 0.900V 0101 0.750V 0000 0.625V 1010 0.875V Voltages shown can be lowered 20% lower by setting bit 18. Adjust DAC reference value – Default is the band gap voltage. These bits adjust the value of the reference used by the d/a converters, and can be used to allow acceptable analog performance at low supply voltages. NOTE: These adjustments also affect the VBG used by the USB 2.0 PHY. If the PHY is transmitting, this bit should be set to zero. DAC Vbg value 1111 1.300V 1001 1.150V 0011 1.000V 1110 1.275V 1000 1.125V 0010 0.975V 1101 1.250V 0111 1.100V 0001 0.950V 1100 1.225V 0110 1.075V 0000 0.925V 1011 1.200V 0101 1.050V 1010 1.175V 0100 1.025V Voltages shown can be lowered 20% lower by setting bit 18. Table 436. Reference Control Register Description (Continued) MIXER TEST REGISTER 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 DAC_CHOP_CLK 2 1 DAC_DISABLE_RTZ 2 2 TMPPWD 2 3 X:$FA1C DAC_MORE_AMP_I HW_MIX_TEST TMP_CFG 26.3.7. Table 437. HW_MIX_TEST 308 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 23:12 RSRVD 12 TMPPWD R 0 RW 1 11:8 TMP_CFG RW 0000 7:6 5 4 RSRVD DAC_MORE_AMP_I DAC_DISABLE_RTZ R 00 RW 0 RW 0 3:2 1:0 RSRVD DAC_CHOP_CLK R 00 RW 00 DEFINITION Reserved – Must be written with 0. Set to one to power down the temperature sensor current source. This current source is only available on LRADC2. Each bit turns on a separate current source and the source currents are additive. 0001 = 20uA 0010 = 40uA 0100 = 80uA 1000 = 160uA 1111 = 300uA NOTE: set HW_USBPHYPWD_PWDIBIAS to zero and set HW_REF_CTRL_LWREF to zero for proper operation. Reserved – Must be written with 0. Set to one to increase the current in the DAC I amplifier Set to one to disable DAC RTZ mode. Set to zero for normal operation with RTZ enabled. Reserved – Must be written with 0. Enable a clock that may improve signal-to-noise performance by chopping the DAC opamp input. 00 - chop clock disabled 01 - 384KHz chop clock 10 - 192KHz chop clock 11 - 96KHz chop clock Table 438. Mixer Test Register Description 5-35xx-D1-1.08-061705 309 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 27. HEADPHONE DRIVER The headphone driver is designed to directly drive low impedance (16 ohm) headphones. It has built in pop-suppression circuits. It can automatically detect a headphone short situation and report it to the DSP via maskable or non-maskable interrupts. The STMP35xx includes a common mode amplifier which can present a headphone common node, eliminating the need for large expensive DC blocking capacitors in the headphone circuit. 27.1. Headphone Control Register The organization of the Headphone Control Register is shown below. 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 TESTIALLUP 1 0 TESTIALLDWN 1 1 TESTI1UP 1 2 POP0 1 3 TESTI1DWNP 1 4 POP1 1 5 POP2 1 6 HPHPWD 1 7 CAPLESS 1 8 CLASSAB 1 9 SHORTMODE_LR 2 0 SHORTMODE_CM SHORT_CM 2 1 X:$FA15 SHORT_LVLADJ 2 2 CHOP_CLK 2 3 _SHORT_LR HW_HPCTRL Table 439. HW_HPCTRL BITS LABEL 23 SHORT_CM 22 SHORT_LR 21:20 CHOP_CLK 19 RSRVD RW RESET DEFINITION R 0 Status of common mode amplifier short detection. 0 = no short detected 1 = short present To clear this interrupt, set HW_HPCTRL_SHORTMODE_CM to 00. This has the effect of resetting the latch and holding it in reset. If HW_HPCTRL_SHORTMODE_CM is changed back to 10 or 11 and the short still exists then interrupts will continue on IRQA, see Figure 108. “Stereo Headphone Common Short Detection & Powerdown Circuit” on page 313. R 0 Status of right/left differential amplifier short detection. 0 = no short detected 1 = short present To clear this interrupt, set HW_HPCTRL_SHORTMODE_LR to 00. This has the effect of resetting the latch and holding it in reset. If HW_HPCTRL_SHORTMODE_LR is changed back to 10 or 11 and the short still exists then interrupts will continue on IRQA. RW 00 Enable a chop clock to improve signal-to-noise performance by chopping the head phone amplifier input. 00 = chop clock disabled 01 = 48KHz chop clock 10 = 96KHz chop clock 11 = 192KHz chop clock R 0 Reserved – Must be written with 0. Table 440. Headphone Control Register Description 310 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 18:16 SHORT_LVLA DJ RW RESET DEFINITION RW 000 Adjusts headphone current short detect trip point 000 = Nominal 001 = Nominal * 0.75 010 = Nominal * 0.5 011 = Nominal * 0.25 100 = Nominal * 1.25 101 = Nominal * 1.5 110 = Nominal * 1.75 111 = Nominal * 2 Increasing trip point current makes the detection less sensitive, while decreasing the trip point current makes it more sensitive. 15:14 SHORTMODE_ RW 00 Headphone Common Amplifier Short Control Mode 00 - SW view direct short, reset latched short, HW pwdn on direct short CM 01 - SW view latched short HW pwdn on latched short 10 - sw view direct short signal, HW pwdn on direct short 11 - sw view direct short signal, HW pwdn disabled The state of the common mode short detector, or its latched version can be seen in HW_HPCTRL_SHORT_CM. 13:12 SHORTMODE_ RW $00 Headphone L/R Short Control Mode 00 - short function held in reset LR 01 - sw view latched short signal, HW pwd on latched signal 10 - sw view latched short signal, HW pwd disabled 11 - sw view direct short signal, HW pwd disabled The state of the left/right mode short detector, or its latched version can be seen in HW_HPCTRL_SHORT_LR. 11 RSRVD R 0 Reserved – Must be written with 0. 10 CAPLESS RW 0 Capless – Set to one to enable the direct drive or “cap-less” headphone mode. Set to zero for conventional operation. 9 CLASSAB RW 0 ClassAB – ClassA mode is intended only for powerup anti-pop. ClassAB mode should be set before a signal is applied. ClassAB mode should be used to drive both a low impedance (e.g. headphone) or high impedance (e.g. linein to another device) load. 8 HPHPWD RW 1 Headphone Powerdown 0 Headphone amplifier powered up 1 Headphone amplifier powered down (reset value) 7 RSRVD R 0 Reserved – Must be written with 0. 6 POP2 RW 0 pop2 5 POP1 RW 0 pop1 4 POP0 RW 0 pop0 hphpwd classab pop2 pop1 pop0 ramp result expected output pop [bit 10] [bit 7] [bit 6] [bit 5] [bit 4] 0 0 0 0 0 1*84uA PMOS source current 1.3mV 0 0 0 0 1 2*84uA PMOS source current 1.3mV 0 0 0 1 0 3*84uA PMOS source current 1.3mV 0 0 1 1 1 8*84uA PMOS source current 1.3mV 1 x 0 0 0 11.0k pull-down resistor 1.3mV 1 x 0 0 1 5.6k pull-down resistor depends on timing 1 x 0 1 0 3.7k pull-down resistor depends on timing 1 x 0 1 1 2.8k pull-down resistor depends on timing 1 x 1 0 0 1.9k pull-down resistor depends on timing 1 x 1 0 1 1.2k pull-down resistor depends on timing 1 x 1 1 0 0.8k pull-down resistor depends on timing 1 x 1 1 1 0.4k pull-down resistor depends on timing Table 440. Headphone Control Register Description (Continued) 5-35xx-D1-1.08-061705 311 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 3 TESTI1DWN 2 TESTI1UP 1 0 RW RESET RW 0 test i1down RW 0 test i1up I1up I1dn 0 0 0 1 1 0 1 1 TESTIALLUP RW 0 test iall up TESTIALLDWN RW 0 test iall down Iallup Ialldown 0 0 0 1 1 0 1 1 DEFINITION Change to 1st stage current nominal -50% +100% +50% Change to 1st stage current nominal -50% +50% -40% Table 440. Headphone Control Register Description (Continued) 27.2. Headphone Driver The STM35xx supports a conventional stereo headphone drive as shown in Figure 106. .01µF 100 Ω 16 Ω 16 Ω 100 Ω 16 Ω Headphones 16 Ω .01µF 220 µF 65 HPR 220 µF 62 HPL Figure 106. Conventional Stereo Headphone Application Circuit In addition, the chip can generate an optional headphone common node circuit for the headphones which eliminates the need for the large and expensive DC blocking capacitors. It also improves the anti-pop performance. These benefits are obtained at a slight increase in power consumptions, i.e. at 30 mV rms output, the resultant increase in power consumption is approximately 2.7 mW. 312 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 16 Ω .01µF .01µF 65 59 HPR 16 Ω .01µF 57 HP_COMMON 16 Ω 16 Ω 100 Ω tie at headphone jack 100 Ω 16 Ω Headphones 62 HP_SENSE HPL Figure 107. Stereo Headphone Application Circuit with Common Node HP AMP Headphone Common HW_CTRL_SHORTMODE_CM != `00' HW_CTRL_SHORTMODE_CM == `01' IRQA SHORT DETECT 0 HW_CTRL_SHORT_CM HW_CTRL_SHORTMODE_CM == `00' 1 Latch S R 0 1 Powerdown Headphone Amp HW_CTRL_SHORTMODE_CM == `01' HW_CTRL_SHORTMODE_CM != `11' Figure 108. Stereo Headphone Common Short Detection & Powerdown Circuit 5-35xx-D1-1.08-061705 313 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HP AMP Headphone Common HW_CTRL_SHORTMODE_LR != `00' HW_CTRL_SHORTMODE_LR == `01' || HW_CTRL_SHORTMODE_LR == `10' SHORT DETECT 0 HW_CTRL_SHORT_LR 1 Latch S HW_CTRL_SHORTMODE_LR == `00' IRQA R HW_CTRL_SHORTMODE_LR != `01' Powerdown Headphone Amp Figure 109. Stereo Headphone L/R Short Detection & Powerdown Circuit 314 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 28. LOW RESOLUTION ADC The low resolution ADC (LRADC) block is used for voltage measurement. Three channels are available. One channel is dedicated to measure the voltage on the BATT pin. The other channels, LRADC1 and LRADC2, measure the voltage on the two application dependent LRADC pins. The battery channel can be used to sense the amount of battery life remaining. The auxiliary channels can be used for a variety of different uses, including a resistor based wired remote control, temperature sensing, etc. The LRADC is accurate to 8 bits of resolution, and samples at a divided rate from the 24.0MHz crystal clock H W _ B A T T _ T H R S H [2 0 :1 2 ] EVENT 1 B A N D G A P 2 .7 V V D D IO H W _ B A T T _ C T R L [1 7 :1 6 ] REF OUT BATT 2 IN H W _ B A T T _ R E S U L T [2 ] LT H W _ B A T T _ R E S U L T [4 ] [8 :0 ] H W _ B A T T _ R E S U L T [0 ] H W _ B A T T _ R E S U L T [1 6 :8 ] ADC OFFSET PW D H W _ B A T T _ C T R L [6 :0 ] EVENT 0 H W _ B A T T _ C T R L [9 ] GT EQ H W _ B A T T _ R E S U L T [3 ] GT EQ H W _ B A T T _ R E S U L T [1 ] LT H W _ B A T T _ R E S U L T [5 ] H W _ B A T T _ C T R L [1 1 ] H W _ B A T T _ T H R S H [8 :0 ] H W _ L R A D C 1 _ T H R S H [2 0 :1 2 ] EVENT 1 B A N D G A P 2 .7 V V D D IO H W _ L R A D C 1 _ C T R L [1 7 :1 6 ] REF OUT LRADC1 2 IN H W _ L R A D C 1 _ R E S U L T [0 ] LT H W _ L R A D C 1 _ R E S U L T [4 ] [8 :0 ] H W _ L R A D C 1 _ R E S U L T [1 6 :8 ] ADC OFFSET PW D H W _ L R A D C 1 _ C T R L [6 :0 ] EVENT 0 H W _ L R A D C 1 _ C T R L [9 ] H W _ L R A D C 1 _ R E S U L T [2 ] GT EQ GT EQ H W _ L R A D C 1 _ R E S U L T [3 ] LT H W _ L R A D C 1 _ R E S U L T [5 ] H W _ L R A D C 1 _ C T R L [1 1 ] H W _ L R A D C 1 _ R E S U L T [1 ] H W _ L R A D C 1 _ T H R S H [8 :0 ] H W _ L R A D C 2 _ T H R S H [2 0 :1 2 ] EVENT 1 B A N D G A P 2 .7 V V D D IO H W _ L R A D C 2 _ C T R L [1 7 :1 6 ] REF OUT LRADC2 2 IN H W _ L R A D C 2 _ C T R L [1 1 ] H W _ L R A D C 2 _ R E S U L T [4 ] H W _ L R A D C 2 _ R E S U L T [1 6 :8 ] ADC OFFSET H W _ L R A D C 2 _ C T R L [6 :0 ] H W _ L R A D C 2 _ R E S U L T [0 ] LT [8 :0 ] PW D EVENT 0 H W _ L R A D C 2 _ C T R L [9 ] H W _ L R A D C 2 _ R E S U L T [2 ] GT EQ GT H W _ L R A D C 2 _ R E S U L T [3 ] EQ H W _ L R A D C 2 _ R E S U L T [1 ] LT H W _ L R A D C 2 _ R E S U L T [5 ] H W _ L R A D C 2 _ T H R S H [8 :0 ] Figure 110. Low Resolution ADC 5-35xx-D1-1.08-061705 315 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip As shown in Figure 110, the LRADC module consists of three essentially identical analog to digital converters. These converters run in the crystal clock domain for sample interval precision. Programmable registers for each of the three converters are declared as HW_BATT_*, HW_LRADC1_* and HW_LRADC2_*. In the discussion below, the battery LRADC (HW_BATT_*) is used to describe the general operation of all three converters. Consider the battery LRADC channel, the converter can take its voltage reference either from the bandgap or I/O voltage rail (VddIO). Thus high voltage LiIon batteries can be monitored with the appropriate settings of HW_BATT_CTRL_REF_VAL. Once an eight bit A/D conversion is made, a seven bit digital offset can be added to it to slide the eight bit value up and down within a nine bit value. Thus the converter presents an eight bit precision result in a nine bit range. The offset can be used to calibrate an LRADC instance if desired. 2.7V (from BG) decoder 256 8 Average 4 Samples 50KΩ UP/DN Counter BATT R-LADDER HW_BATT_CTRL[17:16] VddIO + 50KΩ HW_BATT_CTRL[9] HW_BATT_CTRL[10] HW_BATT_CTRL[6:0] clear + Σ/4 9 LRADC Output digital offset Figure 111. Low Resolution ADC Detail The nine bit result is compared against two independent threshold values, Event Detector 0 and Event Detector 1. Each event detector reports boolean less than, greater than and equal bits which can be seen directly in the result register. These event booleans can be used to trigger DSP interrupts as discussed below. The current value of the LRADC conversion can be read in HW_BATT_RESULT_DATA_OUT. WARNING, the conversion happens in the crystal clock domain while the result register is read by the DSP in the dclk domain. These clock domains are asynchronous when the DSP dclk is derived from a PLL. The clock domain crossing can lead to uncertainty in the correct reading of individual bits when the conversion value 316 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip changes. As a result, software should read this register repeatedly until two successive readings are identical. Figure 111 shows additional detail of the LRADC itself. Notice that the bias resistor at the bottom of the resistive ladder can be bypassed by HW_BATT_CTRL_REF_VAL. This has the effect of shifting the R-Ladder taps down in voltage and making their step sizes larger. When the bias resistor is enabled, one can place a calibration offset into HW_BATT_CTRL_INPUT_OFFSET to account for the voltage dropped across the bias resistor. Also notice that the input voltage can be divided by two by setting HW_BATT_CTRL_INPUT_DIV2 to one. This has the side effect of changing the input resistance from essentially infinite to 100KΩ. The following table summarizes the input ranges and step size resolution for various settings of REF_VAL and INPUT_DIV2. REF_VAL 11 11 10 INPUT_DIV2 1 0 1 INPUT RANGE 2*VDDIO - 0V VDDIO - 0V 5.12V - 0V RESOLUTION VDDIO/128 VDDIO/256 0.020V 10 01 01 00 0 1 0 1 2.56V - 0V 5.2V - 1.256V 2.6V - 0.628V 5.4V - 1.304V 0.010V 00 0 2.7V - 0.652V PROG. OFFSET 0x00 0x00 0x00 BATTERY Quad NiMH (4.8V - 3.6V) LiIon (4.4V - 2.6V) 0x00 This mode is not recommended This mode is not recommended 0.016V 0x51 Double Cell (3.4V - 1.5V) 0.008V 0x51 Single Cell (1.7V - 0.8V) Table 441. LRADC Input Ranges and Resolutions Note: 1. Do not exceed Maximum Pin voltage on any input pin, see Section 3. “CHARACTERISTICS/SPECIFICATIONS” on page 21. WARNING: The pad ESD protection limits maximum voltage on all LRADC inputs. The BATT LRADC is specifically designed to handle higher voltages, but LRADC1 and LRADC2 inputs are limited to 3.3V. Two other controls of interest are HW_BATT_CTRL_CLEAR which holds the up/down counter at zero and HW_BATT_CTRL_PWD which powers down the comparator and the resistive ladder. A linear convergence A/D architecture was selected for cost and power reasons while maintaining sufficient slew rate performance for brownout detection. This allows the DSP enough time to perform a graceful shutdown. To reduce the linear convergence tracking noise, four successive samples are averaged in the hardware to produce the final A/D value that is used by the event detectors. Figure 112 shows the generation of an LRADC interrupt from event detector 0 of the battery LRADC. The interrupt request flip flop can be seen by DSP software in HW_BATT_RESULT_IRQ_EVENT0 (HW_BATT_RESULT[20]). This bit is “sticky” in that once it is set it remains set until cleared by software. The polarity of the event trigger comparison is controlled by HW_BATT_CTRL_POLARITY_EVENT0. The event 0 interrupt is enabled by HW_BATT_CTRL_IRQ_EN_EVENT0. Notice that the equality detector is not available as an interrupt source. 5-35xx-D1-1.08-061705 317 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Because of the four sample averaging, there is a slight hysteresis effect in the event detectors, While the above discussion has focused on the Battery LRADC, the operation of LRADC1 and LRADC2 are essentially the same. WARNING: The interrupt requests (IRQ) to the DSP is generated somewhat differently in the low resolution ADC, as shown in Figure 112. The IRQ comes from the unlatched outputs of the event detectors, not from the latched status bit. The status bit is only a sticky sample of a signal that could come and go many times, i.e. it is possible for the DSP interrupt to be asserted and then removed before the DSP can determine the actual interrupt source. It is also possible for the DSP to be interrupted many times even after the sticky bit is set. EVENT0 GT ADC 1 HW_BATT_RESULT[20] EVENT0 LT EVENT0 EQ IRQ FF X HW_BATT_CTRL[22] HW_BATT_CTRL[20] Event 0 IRQ Figure 112. Low Resolution ADC Interrupt Generation 28.1. Low Resolution ADC Programmable Registers The following programmable registers are available to DSP software for controlling and using the low resolution analog to digital converters. 28.1.1. LRADC Battery Control Register This register controls the overall operation of the battery LRADC. 318 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 INPUT_OFFSET IRQ_EN_EVENT0 1 7 INPUT_DIV2 IRQ_EN_EVENT1 1 8 HALF_CMP_PWR POLARITY_EVENT0 1 9 CLEAR 2 0 PWD 2 1 CLK_DIV 2 2 X:$FA20 REF_VAL 2 3 POLARITY_EVENT1 HW_BATT_CTRL Table 442. HW_BATT_CTRL BITS LABEL 23 POLARITY_EVENT1 RW RESET RW 0 22 POLARITY_EVENT0 RW 0 21 IRQ_EN_EVENT1 RW 0 20 IRQ_EN_EVENT0 RW 0 21:18 RSRVD 17:16 REF_VAL R 00 RW 00$ 15:14 RSRVD 13:12 CLK_DIV R 00 RW 00 11 PWD RW 1 10 CLEAR RW 1 9 INPUT_DIV2 RW 0 8 HALF_CMP_PWR RW 0 DEFINITION Set to one to trigger event 1 interrupts when filtered A/D value is greater than the event 1 threshold. Set to zero for interrupt when the filtered A/D value is less than the event 1 threshold. Set to one to trigger event 0 interrupts when filtered A/D value is greater than the event 0 threshold. Set to zero for interrupt when the filtered A/D value is less than the event 0 threshold. Set to one to enable an interrupt from the event 1 comparator. Set to one to enable an interrupt from the event 0 comparator. Reserved – Must be written with 0. Reference voltage selection, see Table 441. “LRADC Input Ranges and Resolutions” on page 317. These are the primary mode control bits. They affect the range and resolution of the converter. Reserved – Must be written with 0. Clock divider selection. 00 - divide by 4 01 - divide by 8 10 - divide by 16 11 - divide by 32 Set this bit to one to power down the comparator, the RLadder and stop the internal clocks to minimize power consumption. Set to zero for normal operation. Set this bit to one to force the up/down counter to all zeroes. Set to zero for normal operation. Set to one to divide the input voltage by two before applying it to the comparator. The division by two changes the input resistance from essentially infinite to 100KΩ. Set to one to reduce the analog current for low power operation. This is accomplished at the expense of conversion performance. This bit should only be set to one if static measurements are needed. Table 443. LRADC Battery Control Register Description 5-35xx-D1-1.08-061705 319 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 7 RSRVD 6:0 INPUT_OFFSET RW RESET R 0 RW $00 DEFINITION Reserved – Must be written with 0. These bits are added to the final converter output to add a digital offset to the converted value. This may be useful for LRADC calibration and to compensate for additional bias resistor when it is switched into the R-Ladder. Table 443. LRADC Battery Control Register Description (Continued) 320 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 28.1.2. LRADC Battery Threshold Register This register sets the thresholds used by the digital comparators in the battery LRADC. 2 2 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 THRESHOLD_EVENT1 2 3 X:$FA21 0 4 0 3 0 2 0 1 0 0 THRESHOLD_EVENT0 HW_BATT_THRSH Table 444. HW_BATT_THRSH BITS LABEL 23:21 RSRVD 20:12 THRESHOLD_EVENT1 RW RESET R 000 RW $000 11:9 8:0 R 000 RW $000 RSRVD THRESHOLD_EVENT0 DEFINITION Reserved – Must be written with 0. This nine bit field defines the set point for event detector one’s threshold comparator. The nine bit post offset conversion value is compared to this threshold. Reserved – Must be written with 0. This nine bit field defines the set point for event detector zero’s threshold comparator. The nine bit post offset conversion value is compared to this threshold. Table 445. LRADC Battery Threshold Register Description 28.1.3. LRADC Battery Result Register This register controls the interrupts reported by the battery LRADC and provides read only views of the LRADC data value and the results of the event detector threshold comparators. 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 EQ_EVENT1 1 6 EQ_EVENT0 1 7 GT_EVENT1 1 8 LT_EVENT1 1 9 GT_ENVET0 2 0 LT_EVENT0 2 1 X:$FA22 DATA_OUT 2 2 IRQ_EVENT0 2 3 IRQ_EVENT1 HW_BATT_RESULT Table 446. HW_BATT_RESULT 5-35xx-D1-1.08-061705 321 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 23:22 RSRVD 21 IRQ_EVENT1 RW RESET R 00 RW 0 20 RW 0 IRQ_EVENT0 19:17 RSRVD 16:8 DATA_OUT R R 00 $000 7:6 5 RSRVD LT_EVENT0 R R 00 0 4 LT_EVENT1 R 0 3 GT_EVENT0 R 0 2 GT_EVENT1 R 0 1 0 EQ_EVENT0 EQ_EVENT1 R R 0 0 DEFINITION Reserved – Must be written with 0. Interrupt request status for event detector one. This sticky bit is set whenever event detector one’s comparator trips the set point. See HW_BATT_CTRL_POLARITY_EVENT1 and HW_BATT_THRSH_THRESHOLD1. Software clears this bit by writing a one to it. Interrupt request status for event detector zero. This sticky bit is set whenever event detector zero’s comparator trips the set point. See HW_BATT_CTRL_POLARITY_EVENT0 and HW_BATT_THRSH_THRESHOLD0. Software clears this bit by writing a one to it. Reserved – Must be written with 0. The current nine bit value of the BATT LRADC is read here. WARNING: due to clock domain crossings, software must repeatedly read this value until two successive values are read which match bit for bit. Reserved – Must be written with 0. This read only bit indicates the current state of the event detector 0 Less Than result. This read only bit indicates the current state of the event detector 1Less Than result. This read only bit indicates the current state of the event detector 0 Greater Than result. This read only bit indicates the current state of the event detector 1 Greater Than result. The “excluded muddle”. The “excluded muddle”. Table 447. LRADC Battery Result Register Description 322 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 28.1.4. LRADC1 Control Register This register controls the overall operation of LRADC 1. WARNING: The pad ESD protection limits maximum voltage on all LRADC inputs. The BATT LRADC is specifically designed to handle higher voltages, but LRADC1 and LRADC2 inputs are limited to 3.3V. 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 INPUT_OFFSET IRQ_EN_EVENT0 1 7 INPUT_DIV2 IRQ_EN_EVENT1 1 8 HALF_CMP_PWR POLARITY_EVENT0 1 9 CLEAR 2 0 PWD 2 1 CLK_DIV 2 2 REF_VAL 2 3 POLARITY_EVENT1 HW_LRADC1_CTRL X:$FA23 Table 448. HW_LRADC1_CTRL BITS LABEL 23 POLARITY_EVENT1 RW RESET RW 0 22 POLARITY_EVENT0 RW 0 21 IRQ_EN_EVENT1 RW 0 20 IRQ_EN_EVENT0 RW 0 21:18 RSRVD 17:16 REF_VAL R 00 RW 00$ 15:14 RSRVD 13:12 CLK_DIV R 00 RW 00 11 PWD RW 1 10 CLEAR RW 1 DEFINITION Set to one to trigger event 1 interrupts when filtered A/D value is greater than the event 1 threshold. Set to zero for interrupt when the filtered A/D value is less than the event 1 threshold. Set to one to trigger event 0 interrupts when filtered A/D value is greater than the event 0 threshold. Set to zero for interrupt when the filtered A/D value is less than the event 0 threshold. Set to one to enable an interrupt from the event 1 comparator. Set to one to enable an interrupt from the event 0 comparator. Reserved – Must be written with 0. Reference voltage selection, see Table 441. “LRADC Input Ranges and Resolutions” on page 317. These are the primary mode control bits. They affect the range and resolution of the converter. Reserved – Must be written with 0. Clock divider selection. 00 - divide by 4 01 - divide by 8 10 - divide by 16 11 - divide by 32 Set this bit to one to power down the comparator, the RLadder and stop the internal clocks to minimize power consumption. Set to zero for normal operation. Set this bit to one to force the up/down counter to all zeroes. Set to zero for normal operation. Table 449. LRADC 1 Control Register Description 5-35xx-D1-1.08-061705 323 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 9 INPUT_DIV2 RW RESET RW 0 8 HALF_CMP_PWR RW 0 7 6:0 RSRVD INPUT_OFFSET R 0 RW $00 DEFINITION Set to one to divide the input voltage by two before applying it to the comparator. The division by two changes the input resistance from essentially infinite to 100KΩ. Set to one to reduce the analog current for low power operation. This is accomplished at the expense of conversion performance. This bit should only be set to one if static measurements are needed. Reserved – Must be written with 0. These bits are added to the final converter output to add a digital offset to the converted value. This may be useful for LRADC calibration and to compensate for additional bias resistor when it is switched into the R-Ladder. Table 449. LRADC 1 Control Register Description (Continued) 28.1.5. LRADC1 Threshold Register This register sets the thresholds used by the digital comparators in LRADC 1. HW_LRADC1_THRSHX:$FA24 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 THRESHOLD_EVENT0 2 2 THRESHOLD_EVENT1 2 3 Table 450. HW_LRADC1_THRSH BITS LABEL 23:21 RSRVD 20:12 THRESHOLD_EVENT1 RW RESET R 000 RW $000 11:9 8:0 R 000 RW $000 RSRVD THRESHOLD_EVENT0 DEFINITION Reserved – Must be written with 0. This nine bit field defines the set point for event detector one’s threshold comparator. The nine bit post offset conversion value is compared to this threshold. Reserved – Must be written with 0. This nine bit field defines the set point for event detector zero’s threshold comparator. The nine bit post offset conversion value is compared to this threshold. Table 451. LRADC 1 Threshold Register Description 324 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 28.1.6. LRADC1 Result Register This register controls the interrupts reported by LRADC 1 and provides read only views of the LRADC data value and the results of the event detector threshold comparators. 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 EQ_EVENT1 1 6 EQ_EVENT0 1 7 GT_EVENT1 1 8 LT_EVENT1 1 9 GT_ENVET0 2 0 LT_EVENT0 2 1 DATA_OUT 2 2 IRQ_EVENT0 2 3 IRQ_EVENT1 HW_LRADC1_RESULTX:$FA25 Table 452. HW_LRADC1_RESULT BITS LABEL 23:22 RSRVD 21 IRQ_EVENT1 RW RESET R 00 RW 0 20 RW 0 IRQ_EVENT0 19:17 RSRVD 16:8 DATA_OUT R R 00 $000 7:6 5 RSRVD LT_EVENT0 R R 00 0 4 LT_EVENT1 R 0 3 GT_EVENT0 R 0 2 GT_EVENT1 R 0 1 0 EQ_EVENT0 EQ_EVENT1 R R 0 0 DEFINITION Reserved – Must be written with 0. Interrupt request status for event detector one. This sticky bit is set whenever event detector one’s comparator trips the set point. See HW_LRADC1_CTRL_POLARITY_EVENT1 and HW_LRADC1_THRSH_THRESHOLD1. Software clears this bit by writing a one to it. Interrupt request status for event detector zero. This sticky bit is set whenever event detector zero’s comparator trips the set point. See HW_LRADC1_CTRL_POLARITY_EVENT0 and HW_LRADC1_THRSH_THRESHOLD0. Software clears this bit by writing a one to it. Reserved – Must be written with 0. The current nine bit value of the LRADC is read here. WARNING: due to clock domain crossings, software must repeatedly read this value until two successive values are read which match bit for bit. Reserved – Must be written with 0. This read only bit indicates the current state of the event detector 0 Less Than result. This read only bit indicates the current state of the event detector 1Less Than result. This read only bit indicates the current state of the event detector 0 Greater Than result. This read only bit indicates the current state of the event detector 1 Greater Than result. The “excluded muddle”. The “excluded muddle”. Table 453. LRADC 1 Result Register Description 5-35xx-D1-1.08-061705 325 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 28.1.7. LRADC2 Control Register This register controls the overall operation of LRADC 2. WARNING: The pad ESD protection limits maximum voltage on all LRADC inputs. The BATT LRADC is specifically designed to handle higher voltages, but LRADC1 and LRADC2 inputs are limited to 3.3V. 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 INPUT_OFFSET IRQ_EN_EVENT0 1 7 INPUT_DIV2 IRQ_EN_EVENT1 1 8 HALF_CMP_PWR POLARITY_EVENT0 1 9 CLEAR 2 0 PWD 2 1 CLK_DIV 2 2 REF_VAL 2 3 POLARITY_EVENT1 HW_LRADC2_CTRL X:$FA26 Table 454. HW_LRADC2_CTRL BITS LABEL 23 POLARITY_EVENT1 RW RESET RW 0 22 POLARITY_EVENT0 RW 0 21 IRQ_EN_EVENT1 RW 0 20 IRQ_EN_EVENT0 RW 0 21:18 RSRVD 17:16 REF_VAL R 00 RW 00$ 15:14 RSRVD 13:12 CLK_DIV R 00 RW 00 11 PWD RW 1 10 CLEAR RW 1 DEFINITION Set to one to trigger event 1 interrupts when filtered A/D value is greater than the event 1 threshold. Set to zero for interrupt when the filtered A/D value is less than the event 1 threshold. Set to one to trigger event 0 interrupts when filtered A/D value is greater than the event 0 threshold. Set to zero for interrupt when the filtered A/D value is less than the event 0 threshold. Set to one to enable an interrupt from the event 1 comparator. Set to one to enable an interrupt from the event 0 comparator. Reserved – Must be written with 0. Reference voltage selection, see Table 441. “LRADC Input Ranges and Resolutions” on page 317. These are the primary mode control bits. They affect the range and resolution of the converter. Reserved – Must be written with 0. Clock divider selection. 00 - divide by 4 01 - divide by 8 10 - divide by 16 11 - divide by 32 Set this bit to one to power down the comparator, the RLadder and stop the internal clocks to minimize power consumption. Set to zero for normal operation. Set this bit to one to force the up/down counter to all zeroes. Set to zero for normal operation. Table 455. LRADC 2 Control Register Description 326 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 9 INPUT_DIV2 RW RESET RW 0 8 HALF_CMP_PWR RW 0 7 6:0 RSRVD INPUT_OFFSET R 0 RW $00 DEFINITION Set to one to divide the input voltage by two before applying it to the comparator. The division by two changes the input resistance from essentially infinite to 100KΩ. Set to one to reduce the analog current for low power operation. This is accomplished at the expense of conversion performance. This bit should only be set to one if static measurements are needed. Reserved – Must be written with 0. These bits are added to the final converter output to add a digital offset to the converted value. This may be useful for LRADC calibration and to compensate for additional bias resistor when it is switched into the R-Ladder. Table 455. LRADC 2 Control Register Description (Continued) 28.1.8. LRADC2 Threshold Register This register sets the thresholds used by the digital comparators in LRADC 2. HW_LRADC2_THRSHX:$FA27 2 1 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 THRESHOLD_EVENT0 2 2 THRESHOLD_EVENT1 2 3 Table 456. HW_LRADC2_THRSH BITS LABEL 23:21 RSRVD 20:12 THRESHOLD_EVENT1 RW RESET R 000 RW $000 11:9 8:0 R 000 RW $000 RSRVD THRESHOLD_EVENT0 DEFINITION Reserved – Must be written with 0. This nine bit field defines the set point for event detector one’s threshold comparator. The nine bit post offset conversion value is compared to this threshold. Reserved – Must be written with 0. This nine bit field defines the set point for event detector zero’s threshold comparator. The nine bit post offset conversion value is compared to this threshold. Table 457. LRADC 2 Threshold Register Description 5-35xx-D1-1.08-061705 327 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 28.1.9. LRADC2 Result Register This register controls the interrupts reported by LRADC 2 and provides read only views of the LRADC data value and the results of the event detector threshold comparators. 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 EQ_EVENT1 1 6 EQ_EVENT0 1 7 GT_EVENT1 1 8 LT_EVENT1 1 9 GT_ENVET0 2 0 LT_EVENT0 2 1 DATA_OUT 2 2 IRQ_EVENT0 2 3 IRQ_EVENT1 HW_LRADC2_RESULTX:$FA28 Table 458. HW_LRADC2_RESULT BITS LABEL 23:22 RSRVD 21 IRQ_EVENT1 RW RESET R 00 RW 0 20 RW 0 IRQ_EVENT0 19:17 RSRVD 16:8 DATA_OUT R R 00 $000 7:6 5 RSRVD LT_EVENT0 R R 00 0 4 LT_EVENT1 R 0 3 GT_EVENT0 R 0 2 GT_EVENT1 R 0 1 0 EQ_EVENT0 EQ_EVENT1 R R 0 0 DEFINITION Reserved – Must be written with 0. Interrupt request status for event detector one. This sticky bit is set whenever event detector one’s comparator trips the set point. See HW_LRADC2_CTRL_POLARITY_EVENT1 and HW_LRADC2_THRSH_THRESHOLD1. Software clears this bit by writing a one to it. Interrupt request status for event detector zero. This sticky bit is set whenever event detector zero’s comparator trips the set point. See HW_LRADC2_CTRL_POLARITY_EVENT0 and HW_LRADC2_THRSH_THRESHOLD0. Software clears this bit by writing a one to it. Reserved – Must be written with 0. The current nine bit value of the LRADC is read here. WARNING: due to clock domain crossings, software must repeatedly read this value until two successive values are read which match bit for bit. Reserved – Must be written with 0. This read only bit indicates the current state of the event detector 0 Less Than result. This read only bit indicates the current state of the event detector 1 Less Than result. This read only bit indicates the current state of the event detector 0 Greater Than result. This read only bit indicates the current state of the event detector 1 Greater Than result. The “excluded muddle”. The “excluded muddle”. Table 459. LRADC 2 Result Register Description 328 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 29. BOOT MODES 29.1. General Information on Boot Modes The on-chip ROM contains program code that is responsible for loading code from outside the chip into on-chip RAM, and transferring control to that code. The DSP determines which mode to use for booting by examining the signal level on some pins immediately after reset. Table 460 shows the pins used for determining the boot mode 100-PIN TIFFS PIN # 95 84 94 93 92 144-PIN FPBGA PIN # J1 D1 H2 H4 H3 PIN LABEL BOOT FUNCTION GP0 GP8 GP1 GP2 GP3 Set to one to enable POST operation Specifies boot mode bit 0 Specifies boot mode bit 1 Specifies boot mode bit 2 Specifies boot mode bit 3 Table 460. Boot Control Pins NOTE: The Power on self test (POST) must be run in all applications of the STMP35xx. Therefore GP0 (pin 95/J1) must be tied high through a high impedance resistance (47KΩ) on ALL customer boards. These pins can and are used for other functions besides configuring the boot mode; this is achieved by specifying the high or low state on these pins with a high value resistor (typically 47kΩ) pulling the pin either up to VddIO or down to VssIO. During boot mode, these pins are not driven by the chip, and the pull-up/down resistors define the values. Table 461 shows the different boot modes supported. GP0 POST 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 GP3 GP2 GP1 GP8 MODE 3 MODE 2 MODE 1 MODE 0 X X X X 0 0 0 X 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 PORT BOOT MODE INVALID RESERVED NAND 1.8 Volt NAND 1.8 Volt RESERVED SPI RESERVED UTMI USB I2C NAND 3.3 Volt NAND 3.3 Volt I2C SPI Tester Loader Burn In Not Valid for customer use. Reserved for future use NAND with Play recovery NAND with PSWITCH recovery Reserved for future use Master Reserved for future use UTMI Self Test Mode STMP Boot Class - Bulk out Endpoint Slave NAND with Play recovery NAND with PSWITCH recovery Master Slave INTERNAL USE ONLY INTERNAL USE ONLY Table 461. Boot Modes A Power On Self Test (POST) is available during the boot process. This function runs a self-test and repair function on the on-chip RAMs and swaps in spare bits 5-35xx-D1-1.08-061705 329 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip where necessary/possible to repair any defects found. Note that chips shipped by SigmaTel are guaranteed to have no un-repaired defects in the on-chip RAMs, however, they may contain repairable errors. This means that the POST MUST be run as part of the boot process for correct operation of the chip. The POST process takes about 95msec to complete, and is designed to consume as little power as possible. The POST process does not stop on errors, and does not give any indication as to success or failure; the application loaded by the boot loader should assume that the on-chip RAM has been repaired correctly. The POST operation will overwrite any data stored in on-chip RAM, so any data in on-chip RAM will be lost during the boot process. The USB, I2C master & slave, NAND Flash and SPI slave boot modes are intended to be used in applications of the chip; in other words, they are user boot modes. The INTERNAL boot modes are for internal SigmaTel use only. Any changes to the above boot mode table will preserve all of the entries for user boot modes to preserve compatibility for existing designs. During reset, and while the POST process is running, all digital pins on the chip are in tristate mode. Once an individual boot mode starts, the boot mode will enable and configure the pins required for that boot mode. It is the responsibility of the application loaded by the boot ROM to enable & configure all of the pins it requires, the application should do this without making any assumptions about how the pins were configured by the boot ROM. There is one additional implicit boot mode, over and above the boot modes listed in the above table, that is OnCE (On Chip Emulation) boot mode. This boot mode occurs when the external debug hardware pulls the ONCE_DRn pin low during the boot process to trigger the on-chip debugger. When this happens the DSP will execute the first few instructions in the on-chip ROM before stopping and allowing the external debugger to take control. In this circumstance, the actual boot mode selected on the boot pins will have no effect. OnCE boot mode will only be used by developers, however PCB boards should support the OnCE boot mode wherever possible, to enable system debug. 29.2. Bootloader Code Format For the user boot modes, the boot loader expects the code read from the external storage to be organized in a specific format. This format is able to load blocks of data into X, Y, P, or L memory. It is also capable of initializing a block of memory to a specified value. Loading a block of code or data into memory is achieved by first sending a two-word command header, followed by the data. The command header is shown in Table 462. WORD 0 WORD 1 WORD 2-N BITS 23-20 Mc[3:0] BITS 19-16 BITS [15:0] 0000 Address[15:0] 00000000 Length[15:0] Data[23:0] Table 462. Bootloader Command Header + Data For Word 0, the Memory Control bits, Mc[3:0], are used to specify the target memory space for the code that is being loaded, and whether this is a block memory load, or an initialization of a range of addresses to one value. Table 463 specifies the meaning of these bits in more detail. The Address[15:0] field specifies the base address in memory where data is to be written. The Length[15:0] specifies the length of the block of data in memory to be loaded or initialized. When loading into P, X or Y memory, Words 2 through N will 330 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip MC3 MC2 (P) MC1 (X) MC0 (Y) 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 DESCRIPTION Unused Load into Y Memory Load into X Memory Load into L memory (XY memory) Load into P memory Unused Unused Unused Unused Initialize Y memory with data value Initialize X memory with data value Initialize L (i.e. X & Y) memory with data value Initialize P memory with data value Unused Unused Boot load complete, exit and jump to P:$0. Must be a complete Command Header ($F00000 $000000). Table 463. Bootloader Memory Control Bits contain one word of data for each P, X, or Y memory location to be loaded. When loading into L memory, Words 2 through N will contain two words of data for each L memory location to be loaded, words 2, 4, etc., will go into X memory, words 3, 5, etc., will go into Y memory. When initializing P, X, or Y memory, Word 2 will specify the value to be used in initializing memory. When initializing L memory, Words 2 through 3 will specify the value to be used in initializing memory. This data structure allows the initialization of hardware control registers as part of the boot process, this could be achieved by using the above data structure to write directly to a memory mapped hardware register. Most frequently, this is used to write to the HW_PXCFG & HW_PYCFG registers that control the configuration of on-chip RAM. 5-35xx-D1-1.08-061705 331 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 29.3. Encryption The chip expects the code to be loaded by the boot loader to be encrypted. This encryption serves two purposes; it makes it harder for an end user to hack the device, and it includes a check-sum to prevent corrupted code from being used to boot the device. The boot loader will fall back to USB boot mode if the code being loaded fails the check-sum test, this allows a player with corrupted code to be recovered by an end user with the use of a recovery program on their PC. The details of the encryption algorithm are not covered in this document; please contact SigmaTel for more information if needed. The SigmaTel SDK (Software Development Kit) includes everything needed to encrypt code that is to be loaded into the chip. 29.4. Bootloader Examples This section provides a few examples of data delivered to the DSP and how it will be copied into memory. Note that these examples show the data before it is encrypted using the encryption mentioned above. 29.4.1. Boot Example #1 The following example of data presented to the DSP would result in 8 words being loaded into Y memory. $100210 $000008 $000000 $111111 $222222 $333333 $444444 $555555 $666666 $777777 $F00000 $000000 29.4.2. ; load into Y memory starting at Y:$0210 ; load 8 words of data into Y memory ; data word #0, written to Y:$0210 ; data word #1, written to Y:$0211 ; data word #2, written to Y:$0212 ; data word #3, written to Y:$0213 ; data word #4, written to Y:$0214 ; data word #5, written to Y:$0215 ; data word #6, written to Y:$0216 ; data word #7, written to Y:$0217 ; end of boot, execute program ; this word IS required Boot Example #2 The following example of data presented to the DSP would result in 8 contiguous P memory locations being initialized to a specified value. $C00400 $000008 $CCCCCC $F00000 $000000 332 ; initialize P memory starting at P:$0400 ; initialize 8 locations, i.e. P:$0400-$0407 ; initialize with the value $CCCCCC ; end of boot, execute program ; this word IS required 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 29.4.3. Boot Example #3 The following example of data presented to the DSP would result in 11 contiguous L memory (XY memory) locations being initialized to specified values. $300230 $00000B $000001 $000002 $000004 $000008 $000010 $000020 $000040 $000080 $000100 $000200 $000400 $000800 $001000 $002000 $004000 $008000 $010000 $020000 $040000 $080000 $100000 $200000 $F00000 $000000 ; load L memory at address L:$0230 ; load 11 L words ; data word #0 upper, loaded to X:$0230 ; data word #0 lower, loaded to Y:$0230 ; data word #1 upper, loaded to X:$0231 ; data word #1 lower, loaded to Y:$0231 ; data word #2 upper, loaded to X:$0232 ; data word #2 lower, loaded to Y:$0232 ; data word #3 upper, loaded to X:$0233 ; data word #3 lower, loaded to Y:$0233 ; data word #4 upper, loaded to X:$0234 ; data word #4 lower, loaded to Y:$0234 ; data word #5 upper, loaded to X:$0235 ; data word #5 lower, loaded to Y:$0235 ; data word #6 upper, loaded to X:$0236 ; data word #6 lower, loaded to Y:$0236 ; data word #7 upper, loaded to X:$0237 ; data word #7 lower, loaded to Y:$0237 ; data word #8 upper, loaded to X:$0238 ; data word #8 lower, loaded to Y:$0238 ; data word #9 upper, loaded to X:$0239 ; data word #9 lower, loaded to Y:$0239 ; data word #10 upper, loaded to X:$023A ; data word #10 lower, loaded to Y:$023A ; end of boot, execute program ; this word IS required 29.5. Boot Procedure The flow chart in Figure 113 shows the initial boot sequence and Figure 114 shows the subsequent general boot procedure. 29.5.1. USB boot mode The USB boot mode enables the USB interface, attempts to enumerate on the USB bus, and then expects USB Bulk-Out data from the host PC containing the data to be use for booting. This boot mode is intended to be used at the end of the production line for EOL (end of line) tests, and for personalizing the players. Together with a recovery application running on a PC, this mode may also be used by an end user to recover if the code on a player somehow becomes corrupted. One issue with using the USB Boot Class MODE is that the on-chip ROM does not have a unique ID and therefore multiple devices built using the chip may not be connected simultaneously to a single computer. To get around this limitation all software implementations provided by SigmaTel will populate the boot component with a Boot Manager program. The Boot Manager is used to decide whether to load code for a player or for USB. The Boot Manager will check to see if USB is connected and if so 5-35xx-D1-1.08-061705 333 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Power Up p:$0 = jmp p:BootLoader BootLoader Entry Enable OnCE Init Variables Power BootMode up GPIO Pins Enable, Sense, & Disable BootMode GPIO pins BURNIN Mode? Y jmp BURNIN Y jmp TESTERLOADE R N Run POST Y POST Enabled? N TESTERLOADE mode R ? N Execute BootMode Figure 113. Initial Boot Sequence it will load the Device Control Class (DCC) Image, and if not it will load the Player Image. The DCC Image will be specific to a given product hence it may have unique USB IDs and allow multiple devices to co-exist on a computer. In this manner the generic USB Boot Class is completely by-passed. Please refer to the chip Boot Manager document for more details. USB boot mode differs from all the other boot modes in that it leaves the PLL enabled and the DSP running at 68 MHz when done. 334 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Continue Boot Each BootMode is responsible for powering all required pads BootMode == NAND Flash? N BootMode == USB? The UsbInit Routine will wait up to 5 minutes for USB to be connected. BootMode = USB N USB Connected? Y N N Play/PSWITCH Button Pressed > 5s ? Y Y BootMode = USB Generic BootClass N Copy ROM to RAM Y N Set OMR[0] == 0 Run BootMode Init Routine jmp p:RunInit Got CipherKey? Y N Got CheckSum Target? N Y Version Okay? N N Get Command All pads powered for a given BootMode will remain powered Valid Command? N Y Run BootMode Exit Routine y CheckSum Okay? Reboot? Y N jmp p:$0 Execute Command Okay? Figure 114. Boot Procedure 5-35xx-D1-1.08-061705 335 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 29.5.1.1. USB Boot Mode Pin Power USB Boot Mode pins are analog pins and are powered at system startup up. No other digital pins are powered for this boot mode. Note: See Table 506 for USB Interface pin placement. 29.5.2. NAND Flash Boot Mode The NAND Flash boot mode will read boot commands from NAND Flash or SmartMedia flash devices. The Boot Mode Init routine will search up to four NAND/SmartMedia devices and boot from the first device/card that is found with valid boot code. The NAND Flash boot mode searches for and boots from the chip Boot component. Please refer to the chip SmartMedia/NAND Blocks document for more details on components. The search will start with chip select 0 and move on to 1, 2, and 3. If an error is encountered then the device on the next chip select is searched. If desired, the entire code set may reside in the chip Boot component and the Boot Manager and other components may be left out of the system. If all NAND/SmartMedia devices are searched and no valid boot code is found the boot mode is changed to USB, and the part attempts to boot from the USB bus. This situation will most commonly be encountered at the end of a production line where the devices being manufactured will not contain any code. This situation will also be encountered if the code on the NAND/SmartMedia device becomes corrupted for some reason, the end user will be able to reload the code onto the device by using a recovery program on a PC. Finally, the end user can manually force a boot from USB by holding down the Play button (NAND Flash boot mode with play recovery), or power button (NAND Flash boot mode with PSWITCH recovery) for 5 seconds during the boot process. See Figure 114, Boot Procedures, for details. 29.5.2.1. 29.5.3. NAND Flash Boot Mode Pin Power The NAND Flash boot mode will power the following pins:I2C Slave Boot Mode SM_D0 SM_D5 SM_ALE SM_D1 SM_D6 SM_CLE SM_D2 SM_D7 SM_D3 SM_REn SM_CE0n SM_D4 SM_WEn SM_CE1n Note: See Table 496 for SmartMedia/NAND pin placement. SM_CE2n SM_CE3n SM_WPn SM_READY The I2C slave boot mode enables the I2C port as a slave device, and waits for data to be written to the I2C port using the bootloader code format documented above. 29.5.3.1. I2C Slave Boot Mode Pin Power The I2C Slave boot mode will power the following pins: I2C_SCL I2C_SDA Note: See Table 498 for I2C Interface pin placement. 29.5.4. 336 I2C Master Boot Mode 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The I2C master boot mode enables the I2C port as a master device, and then attempts to read data formatted using the bootloader code format documented above from an external I2C device at I2C address $A0. If a standard 24.576 MHz crystal is used, this boot mode will use an I2C clock speed of ~180 kHz. 29.5.4.1. I2C Master Boot Mode Pin Power The I2C Master boot mode will power the following pins: I2C_SCL I2C_SDA Note: See Table 498 for I2C Interface pin placement. 29.5.5. SPI Slave Boot Mode The SPI slave boot mode enables the SPI port as a slave device, and waits for data to be written to the SPI port using the bootloader code format documented above. 29.5.5.1. SPI Slave Boot Mode Pin Power The SPI Slave boot mode will power the following pins: SPI_MOSI SPI_MISO SPI_SCK SPI_SSn Note: See Table 498 for SPI Interface pin placement. 29.5.6. TESTERLOADER Boot Mode This boot mode provides a simple, fast interface to testers for loading test code. This mode is intended for internal SigmaTel use only, and no further documentation is provided here. 29.5.7. BURNIN Boot Mode This boot mode provides a simple way to exercise large portions of the on-chip hardware. Note that the power consumed by the chip will be significantly higher than normal when the part is operating in BURNIN mode. This boot mode is intended for internal SigmaTel use, and no further documentation is provided here. 5-35xx-D1-1.08-061705 337 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 29.5.8. System Recovery Mode This is not an explicit boot mode but is entered in a special case of the two NAND modes. If the chip is booted with MODE = NAND with play recovery and USB is connected, and the Play button is held for 5 seconds the player will automatically go to the USB MODE. This will cause the device to show up as a USB Boot Class device. If a host driver detects this device it may take action to reformat the SmartMedia/NAND. Please refer to Figure 114. 29.6. Memory Maps Various memory maps are employed in the different boot modes. Figure 115 shows the memory map for the USB boot modes and Figure 116 shows the map for all other modes. Shaded areas are available for loading code. $9FFF $9FFF $4FFF $4FFF $4FFF $4FFF $2000 $1FFF USB Boot Code $0000 $01FF $0000 $0200 $1FFF $0200 Boot Params $01FF Boot ROM $0000 $0000 Boot Params $0000 $0000 PRAM XRAM YRAM Figure 115. USB Boot Mode Memory Map PRAM XRAM YRAM Figure 116. All Other Boot Modes Memory Map In USB Boot Class p:$0..1 are available for writing the Reboot vector. All other interrupt vectors must be created by code at run-time. Although the interrupt vector table is available (P:$0000-P:$007F) it is required that all vectors must be created by code at run-time. 338 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30. DC-DC CONVERTER The chip has 2 programmable integrated DC-DC converters that can be used to provide power for the device as well as the entire application, including external NAND flash memories, SDRAM, FM tuner etc. Please use the efficiency curves to determine if the efficiency will be acceptable for high power applications. The converters can be configured to operate from standard battery chemistries in the range of 0.9-3.6 volts including alkaline cells, NiMH, LiIon, etc. If multiple batteries are used, a series configuration is strongly preferred to optimize efficiency and battery life. Also, for applications that do not need integrated power management, the converters can be disabled and external supplies provided. Board layout and external inductor/capacitor quality are critical to maximize analog performance and as well as DC-DC converter efficiency. Users should read and understand SigmaTel's printed circuit board layout application notes for guidance before beginning PCB layout. Further, users should refer to SigmaTel's reference designs for assistance in selecting the inductor and large external decoupling capacitors. 30.1. DC-DC Converter Theory of Operation The DC-DC power conversion and charging circuitry must support a wide range of battery configurations, chemistries, and ultimately input voltages to the BATT pin, from a weak single cell alkaline battery at 0.9 volts to a fully charged LiIon battery at 4.2 volts. In addition, it must operate off of a 5 volt DC input supplied either from the USB’s VBUS or from a DC power source derived from the AC mains. In all of these cases, it must supply a steady reliable 3.3 volts to the I/O rail and 1.8 volts to the core digital power rail and to the analog power rail. In addition to supplying the core 1.8 volt analog and digital sources, the DC-DC converter must supply power to the other chips or devices in the application, e.g. NAND Flash power, SDRAM power, IDE power, etc. The DC-DC converter must also support operating the system at reduced rail voltages for power saving modes. When generating 3.3 volts for the I/O rail from a single alkaline battery, the DC-DC converter must operate in a “boost” mode, as shown in Figure 117, below. In this case, the 0.9 volts applied to the battery pin must be boosted to 3.3V. For boost mode operation, the battery is connected through an inductor to the DCDC_Batt pin. This pin has both a low resistance N-FET and a low resistance P-FET. When the N-FET switches on, it pulls the inductor to ground. When it switches off, the inductor voltage goes quite positive as the field collapses. During this high voltage phase, the P-FET device is switched on to charge the capacitance on the VDD I/O rail. The proportion of the duty cycle that the P-FET device is active determines how much charge is transferred to VDD I/O. The VDD I/O rail has a tapped voltage divider (R-ladder) which is fed to a comparator. The comparator references the band gap voltage (VBG). The comparator effectively indicates whether the VDD I/O rail is above or below the desired voltage. If it is below the desired voltage then the P-FET should be switched on to charge the rail capacitance. If the rail droops to a lower voltage, then the N-FET on-time is increased to increase the inductor field, making more back EMF available for the next P-FET transfer. The DC-DC converter operates with a feedback loop filter to determine the desired duty cycle for the P-FET. The loop is constrained at both positive and negative limits, see 30.5.1. “DCDC1 Control Register 0” on page 353. The HW_DCDC_VDDIO_VOLTAGE_LEVEL bit field allows one of 24 taps to be selected on the VDD I/O voltage divider, allowing a DC range from 2.05 V to 4.03 V. 5-35xx-D1-1.08-061705 339 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Thus one can set a variety of voltage targets for the VDD I/O rail optimizing either energy consumption or performance, as required. The loop filter output can be checked in the HW_SPEED register for design validation purposes. 3.3 Volts VDDIO VDDIO RAIL to rest of the chip DCDC_VDDIO decoder 5 DSP interrupt DCDC_BATT . .24. . Duty Cycle Driver 5 HW_DCDC_VDDIO[12:8] . .24. . P-FET decoder HW_DCDC_VDDIO[4:0] N-FET DCDC_GND LIMIT - + 16 0.9 Volts + 7 BATT + Digital Filter VDDIO Brownout BandGap HW_DCDC_VDDIO[20] to RTC & Crystal HW_SPEED[10:4] HW_DCDC_VDDIO[16] HW_DCDC1_CTRL0 P-FET charges Cap. DCDC MODE = 101 N-FET cuts off current flow, inductor field collapses N-FET "pumps" the inductor Figure 117. DC-DC Converter Boost Theory of Operation There is a second set of taps and a switch matrix on the VDD I/O voltage divider controlled by HW_DCDC_VDDIO_BROWNOUT_LEVEL. This tap is connected to a second VBG referenced comparator which detects under-voltage or brown-out conditions. The comparator results can generate a brown-out alert so that software can take appropriate action, i.e load shedding or graceful power-down as appropriate. The comparator result can be seen in HW_DCDC_VDDIO_BROWNOUT_STATUS. The interrupt is enabled by the HW_DCDC_VDDIO_BROWNOUT_ENABLE bit. A buck mode is provided for dropping the appropriate voltage across the inductor to regulate a higher voltage battery input down to the desired VDD I/O rail. For a fully charged LiIon battery at 4.2 V, one must drop 0.9 volts across the inductor to keep a steady 3.3 V on the I/O rail, see Figure 118. “DC-DC Converter Buck Theory of Operation” on page 341. In this mode, the P-FET switches on to add charge to the VDD I/O 340 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip rail capacitance and to store energy in the inductor field, while the N-FET switches on to remove energy from the inductor field. Again, it is the duty cycle that controls the target voltage. The duty cycle is controlled by a feedback loop that tracks the error between the desired rail voltage and VBG, similar to what we saw in the boost mode loop. 3.3 Volts VDDIO VDDIO RAIL to the rest of the chip DCDC_VDDIO DCDC_BATT decoder . .24. . Duty Cycle Driver 5 HW_DCDC_VDDIO[12:8] . .24. . P-FET decoder HW_DCDC_VDDIO[4:0] 5 N-FET DCDC_GND + LIMIT - + 16 + 7 4.2 Volts BATT Digital Filter VDDIO Brownout IRQ BandGap HW_DCDC_VDDIO[20] To RTC & Crystal HW_SPEED[10:4] HW_DCDC_VDDIO[16] HW_DCDC1_CTRL0 DCDC MODES = 000,001,011 Figure 118. DC-DC Converter Buck Theory of Operation NOTE: the DCDC converter pin names can be misleading in buck mode. For example the pin named “VddIO” is actually connected to the battery while the pin named “DCDC_Batt” is actually connected to the VDD I/O rail. The brownout detection circuitry works in exactly the same way as it does in boost mode. Notice that board level wiring has to change between these two modes. One must determine the desired mode before designing the application board schematic. The above discussion focused on generating a single regulated voltage for a single VDD rail. The STMP35xx has three distinct power planes or rails: 3.3 V VDD I/O rail, 1.8 V VDD rail for the digital core and a 1.8 V VDD rail for the analog circuitry, see 5-35xx-D1-1.08-061705 341 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Table 464. “Power Pin to Power Plane Mapping” on page 342. This table shows which power pins must be attached to which power planes on the application board. The discussion below shows the various ways these power planes can be supplied for the battery chemistry and configuration desired. POWER PLANE PIN NAME 100-PIN 144-PIN DESIGNATION TQFP FPBGA VddIO1 VddIO1 29 G8 VddIO2 VddIO2 96 G5 VddIO3 VddIO3 F7 VddIO4 VddIO4 E7 VddA1 VddA1 73 B2 VddA2 VddPLL 76 B1 VddA3 VddHP 64 D5 VddD1 VddD1 39 E8 VddD2 VddD2 11 H7 VddD3 VddD3 86 F6 Table 464. Power Pin to Power Plane Mapping Figure 119, below, shows all three regulator channels of DC-DC converter #1 running in boost mode. As shown in the figure, there is one N-FET that generates the bulk high voltage, boosted across the inductor. There are three P-FET devices that can be switched on to charge the three separate voltage planes attached to the converter. The DC-DC converter selects one P-FET per cycle to charge one of the VDD rail channels. Each rail has its own voltage divider, comparator, converter feedback loop and duty cycle control. Thus the N-FET will turn on once per cycle and exactly one of the PFETs will be turned on. There is a PFM mode that only enables FET switching to keep the load voltage within a specified tolerance for light load applications, see $HW_DCDCTBR. Figure 119 also shows some additional circuitry related to the DC-DC converter. Notice that the BATT pin is connected to a linear regulator which supplies the crystal oscillator, the real time clock and the portion of the DC-DC converter that must remain on even when the STMP35xx is in a “powered-down” state. Thus these circuits are powered up as soon as the battery is installed and remain powered until the battery is removed or discharged. This power domain is referred to elsewhere in the data sheet as the real time clock or crystal power domain. The power switch (PSWITCH) monitoring circuitry is also powered from the crystal power domain so that it can awaken the DCDC controller. NOTE: it is not necessary for the crystal oscillator and RTC to be enabled and operational before the power switch triggers a power up event. The power switch causes the oscillator to awaken which counts out a delay and awakens the DCDC converter controller to begin to ramp the rail voltages. Thus in the lowest energy consuming powered off state, all clocks are stopped and a DC circuit is waiting for the PSWITCH transition. 342 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx VddD 1/2/3 VddA 1/2/3 DCDC_VddA* 1 2 3* 4* DCDC_VddD VddIO VddIO VddIO VddIO DCDC_VddIO D-Major™Audio System on Chip battery BATT Low Resolution ADC battery DC-DC #1 Control System DCDC_Batt DCDC_Gnd Regulator VddXTAL DSP_RESET RTC * these pins are not available in the 100 pin package. Vbg DCDC_mod0* DCDC_mod2 DCDC_mod1* PSWITCH XTAL OSC Figure 119. DC-DC #1 Converter, 3 output Channels 30.1.1. Defining Battery Configuration The outputs of both DC-DC converters are isolated from the power rails of the chip. Therefore, the connection between the DC-DC converter outputs and the voltage rails of the chip must be done on the PCB. However, the specific PCB connections and battery connections are unique to each battery configuration as described below. The battery configuration of the player is determined by the three mode pins DCDC_mod2, DCDC_mod1, DCDC_mod0. These pins each have an internal 100 kΩ pull-up resistor to the BATT pin (either the battery must always be connected to the BATT pin for the device to power up or the device must have power supplied to its 5 V input pin, VDD5V), so each mode pin is default high. Low value resistors should be added on the board to pull the desired mode pin low. Note that the configuration of these pins cannot be changed dynamically. In 100-pin configurations, only DCDC_mod2 is available on a pin, therefore only modes 111 and 011 can be used in this configuration. Also, the pins of DCDC Converter #2 are not available in a 100-pin configuration. The selection of the three DC-DC mode pins determines whether each of the two DC-DC converters is operating in Buck Mode, Boost Mode, or is powered off. As the 5-35xx-D1-1.08-061705 343 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip following table shows, each converter operates in Boost Mode when its output voltages > battery voltage, and in Buck Mode when output voltage < battery voltage. Table 465 details the decode of the three DC-DC mode select pins: DCDCMODE2:0 POWER SOURCE DCDC CONVERTER #1 DCDC CONVERTER #2 111 1 Alkaline or 1 NiMH 2-channel boost off (0.9V-1.5V) (1.8/3.3 V) 110* reserved reserved reserved 101* 1 Alkaline or 1 NiMH 3-channel boost off (0.9V-1.5V) (1.8/1.8/3.3 V) 100* reserved reserved reserved 011 LiIon, (3.3-4.2V) 1-channel buck (1.8 V) off 010* External supplies off off 001* 2 Alkaline or 2 NiMH 1-channel buck (1.8 V) 1-channel boost (3.3 V) (1.8V-3.0V) 000* LiIon (3.3V-4.2V) 1-channel buck (1.8 V) 1-channel buck (3.3 V) * Only available in 144-pin package Table 465. Decode of the DC-DC Mode Select Pins As Table 465 shows, DC-DC converter #2 is only used to generate the 3.3 V rail when higher voltage battery configurations are selected. Additionally, DC-DC converter #2 has a lower resistance PMOS FET that can perform well in high current applications such as rotating media. In DCDC mode 011, the DC-DC converter only generates the 1.8 V rail, so an external regulator must be used to generate the 3.3 V I/O rail voltage. 30.1.1.1. DC-DC Converter Configuration The two integrated DC-DC converters provide several low resistance FETs for use in power conversion as shown in the following Figure 120: VddIO 1/2/3*/4* VddD 1/2/3 VddA 1/2/3 DCDC_VddD DCDC_VddA* DCDC_VddIO battery BATT Low Resolution ADC DC-DC #1 Control System DCDC_Batt DCDC_Gnd Regulator DSP_RESET VddXTAL DCDC2_Vout* RTC DC-DC #2 Control System XTAL OSC DCDC2_Batt* Vbg DCDC_mod0* DCDC_mod2 DCDC_mod1* PSWITCH DCDC2_Gnd* * only available on 144-pin packages Figure 120. DC-DC Converter Control System 344 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip The configuration of the three DC-DC mode pins described in the previous section determines how these two groups of FETs are switched to provide the desired output voltage values. The FETs can be switched to either create a Buck Mode converter (battery >= output voltage) or Boost Mode converter (battery <= output voltage). These two different operating modes require different connectivity between the battery and inductor on the PCB. The various arrangements are shown in Figures 121 to 126. VddIO 1/2/3*/4* VddD 1/2/3 NC battery VddA NC DCDC_VddD 1/2/3 DCDC_VddA* DCDC_VddIO battery BATT Low Resolution ADC DC-DC #1 Control System VddD DCDC_Batt DCDC_Gnd Regulator VddXTAL = BATT/2 battery VddXTAL RTC DC-DC #2 Control System DCDC2_Vout* VddIO DCDC2_Batt* DCDC2_Gnd* DCDC_mod0* DCDC_mod2 DCDC_mod1* XTAL OSC 30.1.1.2. * only available on 144-pin packages Figure 121. DC-DC Converter Control System (Mode 000) 144-Pin only DCDC1 1 channel buck DCDC2 1 channel buck Power Up Sequence The DC-DC converters control the power up sequence of the device and holds the rest of the chip in reset until after the power up sequence is complete. This is necessary to prevent operation of the DSP and system before stable power supply voltages are present. It is also important the entire application not draw static current during the powerup sequence to guarantee correct startup behavior. High value pull-up and pull-down resistors are acceptable as long as the total current << 1mA. The Power Up sequence begins when the battery is connected to the BATT pin of the device (or a 5 V source is connected to the VDD5V pin). As shown in Figure 120, the BATT pin provides the pull-up on the three DC-DC mode select pins, as well as supplying power to the crystal oscillator and the real-time clock. This means that the crystal oscillator can be running, if desired, whenever a battery is connected to BATT pin. This feature allows the real time clock to operate when the chip is in the off state. The crystal oscillator/RTC is the only power drain on the battery in this state and consumes only a very small amount of power. During this time, the digital (VddD) and analog (VddA) supplies are held at ground, while the VddIO rail is shorted to either the battery (mode111, 101,001) or ground (mode000). This is the off state that continues until the PSWITCH pin is asserted high. 5-35xx-D1-1.08-061705 345 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip VddD 1/2/3 VddIO 1/2/3*/4* NC battery VddA NC DCDC_VddD 1/2/3 DCDC_VddA* DCDC_VddIO battery BATT Low Resolution ADC VddD DC-DC #1 Control System DCDC_Batt DCDC_Gnd Regulator VddXTAL = BATT/2 VddXTAL DCDC2_Vout* RTC DC-DC #2 Control System battery DCDC2_Batt* XTAL OSC DCDC_mod0* DCDC_mod2 DCDC_mod1* DCDC2_Gnd* * only available on 144-pin packages NC Figure 122. DC-DC Converter Control System (Mode 001) 144-Pin only DCDC1 1 channel buck DCDC2 1 channel boost driven externally VddD VddA 1/2/3 1/2/3 VddIO 1/2/3*/4* BATT Low Resolution ADC NC NC NC DCDC_VddD DCDC_VddA* DCDC_VddIO DC-DC #1 Control System NC DCDC_Batt DCDC_Gnd Regulator VddXTAL = BATT/2 VddXTAL NC DCDC2_Vout* RTC DC-DC #2 Control System XTAL OSC DCDC_mod0* DCDC_mod1* DCDC_mod2 DCDC2_Gnd* * only available on 144-pin packages NC 346 NC DCDC2_Batt* Figure 123. DC-DC Converter Control System (Mode 010) 144-Pin only DCDC1 Off DCDC2 Off 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip linear regulator or converter** Batt VddD 1/2/3 VddIO 1/2/3*/4* BATT Low Resolution ADC Batt VddA 1/2/3 DCDC_VddIO DC-DC #1 Control System NC NC DCDC_VddD DCDC_VddA* VddD DCDC_Batt DCDC_Gnd Regulator VddXTAL = BATT/2 VddXTAL NC DCDC2_Vout* RTC DC-DC #2 Control System NC DCDC2_Batt* XTAL OSC DCDC_mod0* DCDC_mod2 DCDC_mod1* DCDC2_Gnd* * only available on 144-pin packages NC NC ** VddIO is powered using a linear regulator or converter. This same power source is connected to the BATT and DCDC_Batt pins. The primary application for this mode is 100 pin devices that use series batteries or high voltage batteries such as LiIon. Figure 124. DC-DC Converter Control System (Mode 011) 100-Pin DCDC1 1 channel buck or 144-Pin DCDC2 Off When the PSWITCH pin is asserted, for at least 100ms, the DC-DC converters are enabled and the device attempts to power up. Depending on the DC-DC mode select pins, one or both of the DC-DC converters begin switching and drive the voltage outputs toward the target values. When both of the DC-DC converters’ control systems sense that the voltage rails have reached their default target values, the DSP reset is de-asserted and the DSP begins executing code. If the power supplies do not reach the target values by the time PSWITCH is de-asserted, then the player returns to the off state. The startup time for the DC-DC converters are dependent on battery voltage, but should be less than 100 milliseconds. The crystal oscillator and RTC/ALARM can optionally remain off to minimize the standby power drain, see HW_DCDC_PERSIST_SLEEP_XTAL_ENABLE. Note that the default state of the crystal oscillator is powered down. There is an integrated 5KΩ resistor that can be switched in between the VDDXTAL pin and the PSWITCH pin. If enabled, see HW_DCDC_PERSIST_AUTORESTART, then the device will immediately go through a power up sequence after power down, as if the PSWITCH had been pressed. 30.1.1.3. Power Down Sequence Power Down is also controlled by the DC-DC converters. When the DC-DC converters detect a power down event, they return the player to the off state described above that holds the internal VddD and VddA supplies at ground, and holds the VddIO rail at ground in DCDC MODE 000; otherwise VddIO is connected to the bat- 5-35xx-D1-1.08-061705 347 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip VddD 1/2/3 VddIO 1/2/3*/4* VddA 1/2/3 DCDC_VddIO DCDC_VddD DCDC_VddA* battery BATT battery Low Resolution ADC DC-DC #1 Control System DCDC_Batt DCDC_Gnd Regulator VddXTAL=BATT VddXTAL NC DCDC2_Vout* RTC NC DCDC2_Batt* DC-DC #2 Control System XTAL OSC DCDC_mod0* DCDC_mod2 DCDC_mod1* DCDC2_Gnd* * only available on 144-pin packages NC NC Figure 125. DC-DC Converter Control System (Mode 101) 144-Pin only DCDC1 3 channel boost DCDC2 Off VddD 1/2/3 VddIO 1/2/3*/4* VddA 1/2/3 DCDC_VddIO DCDC_VddD battery BATT Low Resolution ADC NC DCDC_VddA* battery DC-DC #1 Control System DCDC_Batt DCDC_Gnd Regulator VddXTAL=BATT VddXTAL NC DCDC2_Vout* RTC DC-DC #2 Control System XTAL OSC DCDC_mod0* DCDC_mod1* DCDC_mod2 DCDC2_Gnd* * only available on 144-pin packages NC NC NC 348 NC DCDC2_Batt* Figure 126. DC-DC Converter Control System (Mode 111) 100-Pin DCDC1 2 channel boost or 144-pin DCDC2 Off 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip tery. A Power Down event is triggered by writing a 1 to the Clock Control Register PWDN bit (HW_CCR, bit [17]). A Power Down event can also be triggered by a fast falling edge on the PSWITCH pin. The Power Down via PSWITCH is an edge sensitive event and requires < 15ns falling edge to cause a Power Down to be detected. An external capacitor on PSWITCH can be used to prevent unwanted Power Down events in the final application, but this fast falling edge Power Down mechanism can also be disabled by writing a 1 to the Mixer Test Register PSRN field (HW_MIXTBR_PSRN). 30.1.1.4. Powered Down State While the chip is powered down, the VddA & VddD rails are shorted to ground. The VddIO rail is either shorted to ground (DCDC MODE 000) or to the battery (DCDC MODE 111,101, & 001), or controlled by an external linear regulator (DCDC MODE 011). The following table shows the power down state in each of the DCDC configurations.: DCDC MODE2:0 111 101 011 001 000 DESCRIPTION VDDD & VDDA VDDIO POWER DOWN STATE POWER DOWN STATE 2-channel Boost Shorted to GND Shorted to Battery 3-channel Boost Shorted to GND Shorted to Battery 1-channel Buck Shorted to GND Controlled by an ext. regulator Buck/Boost Shorted to GND Shorted to Battery 2-channel Buck Shorted to GND Shorted to GND Table 466. DCDC Power Supply Powerdown States For the DCDC Boost Modes (modes 101 & 111), the DCDC_VddD & DCDC_VddA pins are shorted to digital ground, which will short the VddA & VddD rails to ground. In the DCDC Buck Modes (modes 000, 001 & 011), the DCDC_Batt pin is shorted to digital ground, which will also short the VddA & VddD rails to ground. In mode 000, the DCDC2_BATT pin is pulled to ground which will short VddIO to ground as well. For the DCDC external supply mode (mode 010), the DCDC_Batt pin is also shorted to digital ground, but since this pin is not connected, it will have no effect on the VddA & VddD rails. For the DCDC Boost Modes (modes 101 & 111), the DCDC_VddIO & DCDC_Batt pins are shorted to each other, which will short the VddIO rail to the battery voltage. For the DCDC Buck Modes, (mode001) the DCDC2_Batt and DCDC2_Vout pins are shorted to each other, which will also short the VddIO rail to the battery. In Mode000 DCDC2_Batt is held at ground, which holds VddIO at ground. In Mode 011 it is assumed that VddIO is supplied by an external linear regulator as long as a battery is present. For the DCDC External Supply Mode (mode 010), the DCDC2_Batt and DCDC2_Vout pins are also shorted to each other, but since these pins are not connected, it will have no effect on the VddIO rail. In all modes, the crystal oscillator and RTC are powered through the BATT pin (unless 5V is present) and are decoupled by a capacitor on the VddXTAL pin. If desired, the crystal oscillator and the RTC can continue to operate when the device is powered down by drawing power from the BATT pin. 30.1.1.5. Reset Sequence A reset event can be triggered by writing the binary value 1101 to the Reset Control Register SRST field (HW_RCR, bits [7:4]). This reset only affects the digital logic, although the digital logic also includes all of the registers that control the analog portions of the chip. The DCDC converters continue to maintain the power supply rails 5-35xx-D1-1.08-061705 349 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip during the reset, although the target voltages for the DCDC converters may change once the digital registers go to their reset values. 30.1.1.6. PSWITCH Recovery Mode Support The Boot loader in the on-chip ROM contains several recovery mode options to allow new firmware to be downloaded to the device from the USB host. One method of invoking the recovery mode is to hold the PSWITCH closed for an extended period of time after power on. Currently, the ROM code looks for the PSWITCH to be held for 5 seconds after power on to force it into recovery mode. When the user first presses the PSWITCH, the rising edge seen on the PSWITCH pin triggers a power up, as described above. Once the ROM code is executing it looks at the Boot Mode pins to determine the type of boot to perform, see Section 29. “BOOT MODES” on page 329. If one of the PSWITCH recovery boot modes is selected then the state of the PSWITCH pin is read from HW_SPARER_PSWITH to determine whether to enter the recovery mode. 30.2. Linear Mode Battery Charger Several new circuits have been added to the STMP35xx to integrate battery charging for LiIon and NiMH batteries from a 5V source connected to the VDD5V pin. The source can come either from the USB’s VBUS or from a transformer. The first new circuit of interest is a five volt presence detector which trips when a voltage on the VDD5V pin exceeds the VDDIO rail by more than 0.6 V. Detection of this condition causes the activation of a linear regulator which drops the supplied 5 V down to 3.3 V. This regulator is tied to the VDD IO rail so it immediately begins to supply power to the rail. A second linear regulator is activated which drops the 3.3 V I/O rail to 1.8 V for the digital core VDD, finally a P-FET shorts the analog and digital core rails together so they both receive current from the linear regulator In addition, the presence of a 5 V source automatically stops the DC-DC converter(s) so that all chip power is supplied from the VDD5V pin. If one sets HW_VDD5V_POWER_CHARGE_BATT_CURRENT to a non-zero value then the variable current shown in Figure 127 provides charging current to a LiIon battery. There is a voltage sensor monitoring the battery voltage which will automatically shut down the current source when the battery voltage reaches 4.1 V (4.2 V with HW_VDD5V_POWER_CHARGE_LI_TYPE set to one). One can programatically monitor the battery voltage using the Battery LRADC, see Section 28.1.1. “LRADC Battery Control Register” on page 318. LRADC2 can be used to monitor a temperature sensor for optimum battery charge profiles. There is an integrated current source for the external temperature sensor which can be enabled by setting HW_MIX_TEST_TMP_CFG to the desired bias current. 30.3. Silicon Speed Sensor The STMP35xx contains two silicon speed sensors to measure the performance characteristics of an individual die at its ambient temperature and process parametrics. Each sensor consists of a ring oscillator and a frequency counter. The ring oscillator runs on the VddD power rail. Therefore its frequency tracks the silicon performance as it changes in response to changes in the DCDC converter target voltage. The crystal oscillator is directly used as the precision time base for measuring the frequency of a ring oscillator. The ring oscillator is normally disabled. There is a seven bit counter connected to the ring oscillator which performs the frequency measurement. When a zero to one transition is detected on 350 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_DCDCTBR_OSC1_START_COUNT, then the counter is reset. The ring oscillator is next enabled for exactly one crystal clock period then disabled. Thus the counter holds the number of cycles the ring oscillator was able to generate during one crystal clock period. The natural frequency of the ring oscillator strongly tracks the silicon process parametrics, i.e. faster silicon processes yield ring oscillators that run faster and thereby yield larger count values. The natural frequency tracks junction temperature effects on silicon speed as well. By taking a quick snapshot of the silicon sensor frequency one can lower the core digital rail voltages to a point more closely approaching the actual performance limit. USB Vbus 5v Line 5V input >4.35V battery VddIO 1/2/3*/4* 5V detect VDD5V VddA 1/2/3 NC NC DCDC_VddIO DCDC_VddD DCDC_VddA* Linear linear charger controller V Sense battery Linear Reg. VddD 1/2/3 Charge Current Path BATT 3 Channel Low Resolution ADC LRADC1 DC-DC #1 Control System (boost mode) DCDC_Batt DCDC_Gnd LRADC2 Regulator Temp. VddXTAL=BATT DSP_RESET VddXTAL disabled during linear battery charge battery DCDC2_Vout* RTC DC-DC #2 Control System XTAL OSC DCDC2_Batt* DCDC_mod0* DCDC_mod2 DCDC_mod1* DCDC2_Gnd* * only available on 144-pin packages MODE = 000, for LiIon, both converters in buck mode Figure 127. DC-DC Converter Linear Converter Theory of Operation The application work load will define a minimum frequency of operation for the DSP and other devices on the DCLK. After device characterization, a calibration curve will be provided for the silicon speed sensor, see 30.6.7. “Clock Speed vs. Voltage” on page 374. Software can then translate this curve into a linear approximation represented by the following table: WARNING: the use of the speed sensor in this fashion is still under investigation by SigmaTel. Such usage by customer is deprecated, i.e. customers should not attempt to use this feature at this time. 5-35xx-D1-1.08-061705 351 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip DESIRED FREQUENCY STARTING VDDD 12KHZ - 35MHZ 35MHZ - 50MHZ 50MHZ - 60MHZ 65MHZ - 70MHZ 75MHZ - 85MHZ 1.65 V (TBD) 1.75 V (TBD) 1.8 V (TBD) 1.8 V (TBD) 1.8 V (TBD) MINIMUM COUNTER VALUE TBD TBD TBD TBD TBD Table 467. Silicon Speed Sensor One heuristic for using the speed sensor is to select the desired new frequency of operation and set the VddD to the appropriate entry in the table. This value is conservative in that after characterization, there will still be sufficient margin that all die from across the process and temperature design will work at that voltage. The software then goes into a slow adaptation loop to track the voltage to the lowest safe point for the process/temperature of each die. At 50ms intervals, the software will read the silicon speed sensor and compare it to the minimum safe value. If it is still above the safe threshold, it will implement a feedback loop filter to gradually lower the voltage to the threshold. As the temperature will change over time, the loop filter will also raise the voltage as required to stay in the safe region for the desired frequency. 30.4. Summary of Major DC-DC Features The unique architecture of the integrated DC-DC converters on the device allows access for many control features via registers. Some of the most commonly used features are described below: 1. Digital adjustment of the voltage rails: The target values of the voltage rails can be adjusted during operation to optimize power consumption and extend battery life. A suggested clock speed vs. voltage curve to allow for the optimum settings to be chosen is included in 30.6.7 “Clock Speed vs. Voltage” on page 374. Note: In most DC-DC operating modes (except mode 101) the analog supply is shorted externally to the digital supply. In these cases analog performance may suffer if the supply voltage is reduced below 1.46 volts or so. If the supply voltage is affecting analog performance, alternate settings for the analog reference voltage and bandgap voltage may provide relief. The control for the analog reference voltages resides in the Reference Control Register (HW_REF_CTRL). 2. Power supply brownout detection: Digital comparators in the DC-DC converters provide immediate input to the DSP via an IRQB or NMI interrupt (controlled by the HW_RCR Reset Control Register) if the supplies drop below the brownout level specified in the HW_DCDC_VDDIO, HW_DCDC_VDDD, HW_DCDC_VDDA Control Registers. This feature is generally used to alert the DSP when the power supplies are reaching dangerously low levels and allow a controlled system shutdown. These comparators may trip on brief transients below the target brownout voltage, so enough margin between the output voltage target and the brownout voltage target must be provided to eliminate false triggers. The magnitude of the difference between the output voltage target and brownout voltage target will depend on system power requirements and board layout, should typically be set to 100 mV. 352 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 3. Battery brownout detection. Another comparator is present outside of the DCDC converters to provide battery brownout information to the DSP via the Reset Control Register (HW_RCR). This feature is intended to provide indication to the DSP of a low battery voltage that requires a controlled system shutdown due to an event such as the battery falling out during application operation. The programming of the battery brownout level is via the Battery Low Resolution ADC Control Register (HW_BATT_CTRL). 4. DC-DC clock rate. The DC-DC converter clock rate can be lowered by 2x, 4x, or 8x from the default value of crystal frequency divided by 16 (1.536 MHz for a 24.576 MHz crystal or 1.5 MHz for a 24.0 MHz crystal). The clock rate can be lowered to reduce power consumption in the DC-DC converter if the corresponding increase in supply transients can be tolerated in the application. See bit 4, 5 in DC-DC Test Bit Register (HW_DCDCTBR). 5. Controlled linear charge current source supplying LiIon or NiMH battery charge current from five volt source. 6. Temperature sensor support for improved battery charge protocols. 7. Optional PFM mode for low load applications, see the DC-DC Test Bit Register (HW_DCDCTBR). 8. Silicon speed sensor to allow the supply voltage to be dynamically adjust to take advantage of silicon speed and temperature variations. 30.5. DC-DC Programmable Registers The DC-DC control registers are used to control DC-DC low-level functionality. It is ill-advised to change these registers from their defaults unless SigmaTel specifically indicates otherwise. 30.5.1. DCDC1 Control Register 0 The organization of the DCDC1 Control Register 0 is shown below. HW_DCDC1_CTRL0 X:$FA0C 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PLVBU 2 1 PLVBO 2 2 NLEV 2 3 Table 468. HW_DCDC1_CTRL0 5-35xx-D1-1.08-061705 353 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 23:21 RSRVD R 0 20:16 NLEV RW 01001 15:13 RSRVD R 000 12:8 PLVBO RW 01000 7:5 4:0 RSRVD R 000 PLVBU RW 10111 DEFINITION Reserved – Must be written with 0. Negative Digital Loop Clip Level – This value represents the negative value at which the digital loop filter clips to prevent illegal values. These five bits represent bits 18:14 of the 20-bit loop filter value. Bit 19 of the negative clip value is set to binary 1, while bits 13:0 are high. Altering the clip value should be done with caution since it may cause the sigma delta output to be non-monotonic. Default decodes to -376832. It is not recommended to increase the NLVL value when the value on the loop filter is equal to NLVL. This case occurs when the battery voltage is greater than the VddD voltage in mode 5 or mode7. Reserved – Must be written with 0. Positive Digital Loop Clip Level in Boost Mode – This value represents the positive value at which the digital loop filter clips to prevent illegal values while operating in boost converter mode. These five bits represent bits 18:14 of the 20-bit loop filter value. Bit 19 of the positive clip is set to binary 0, while bits 13:0 are low. The optimum value of this register depends on the battery voltage and acts effectively to limit the battery current when the load exceeds the capabilities of the converter. Default decodes to 131072. Reserved – Must be written with 0. Positive Digital Loop Clip Level in Buck Mode – This value represents the positive value at which the digital loop filter clips to prevent illegal values while operating in buck converter mode. These five bits represent bits 18:14 of the 20-bit loop filter value. Bit 19 of the positive clip is set to binary 0, while bits13:0 are low. The optimum value of this register depends on the battery voltage and acts effectively to limit the battery current when the load exceeds the capabilities of the converter. Default decodes to 376832. Table 469. DCDC1 Control Register 0 Description 354 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.2. DCDC1 Control Register 1 The organization of the DCDC1 Control Register 1 is shown below. HW_DCDC1_CTRL1 X:$FA0D 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 C 2 1 R 2 2 FFOR 2 3 Table 470. HW_DCDC1_CTRL1 BITS LABEL RW RESET 23:11 RSRVD R 0 10:8 FFOR RW 000 7:4 R RW 1000 DEFINITION Reserved – Must be written with 0. Feed Forward to loop filter value – This two's complement value steps the loop filter value by the amount DDD once on a 000->DDD transition. Thus, this value must be rewritten to 000 every time before use. The feed forward feature is used to help the control loop react under heavy, but well-known, transient loads. Resistor Value – This value represents the R value of the “resistor” in the digital loop filter in the common mode control loop in the DC-DC converter. The reset value of decimal 16384 is chosen in conjunction with the value for bits [3:0], the actual decoupling capacitor, and the clock rate to provide a stable control system. The value will rarely be altered, but conditions may arise in the actual application for which a different value is more optimum. Values range 2048 to 30720 (Only bits 14:11 are shown here, others bits are always 0). Values for NLVL, R, PLVU, and PLVD must satisfy the following restrictions: In modes 111 or 101 only, setting bit 4 improves the ability of the dcdc converter to output a VDD/VDDA voltage that is less than the battery voltage. In other modes, bit 4 has no effect. NLVL – 4R ≥ – 475137 PLVU + 4R ≤ 475136 PLVD + 4R ≤ 475136 3:0 C RW 1000 As of chip revision TA2, and beyond, the LSB of this bit field was commandeered for an additional purpose in addition to its usage above. When the chip is configured for mode 101 or 111, then setting this bit to one allows VDD to be less than the battery voltage by using a PFM mode switching algorithm. Capacitor 1/C Value – This value represents 1/C value of the “capacitor” in the digital loop filter in the common mode control loop in the DC-DC converter. The reset value of decimal 32 is chosen in conjunction with the value for the R field in the DCDC1 Control Register 0 (HW_DCDC1_CTRL0_R), the actual external decoupling capacitor, and the clock rate to provide a stable control system. This value will rarely be altered, but conditions may arise in the actual application for which a different value is more optimum. Values can range between 8 and 120. Table 471. DCDC1 Control Register 1 Description 5-35xx-D1-1.08-061705 355 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.3. DCDC2 Control Register 0 The organization of the DCDC2 Control Register 0 is shown below. HW_DCDC2_CTRL0 X:$FA11 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 PLVBU 2 1 PLVBO 2 2 NLEV 2 3 Table 472. HW_DCDC2_CTRL0 BITS LABEL RW RESET 23:21 RSRVD R 000 20:16 NLEV RW 01001 15:13 RSRVD R 000 12:8 PLVBO RW 01000 7:5 4:0 RSRVD R 000 PLVBU RW 10111 DEFINITION Reserved – Must be written with 0. Negative Digital Loop Clip Level – This value represents the negative value at which the digital loop filter clips to prevent illegal values. These five bits represent bits 18:14 of the 20-bit loop filter value. Bit 19 of the negative clip value is set to binary 1, while bits 13:0 are high. Altering the clip value should be done with caution since it may cause the sigma delta output to be non-monotonic. Default decodes to -376832. Reserved – Must be written with 0. Positive Digital Loop Clip Level in Boost Mode – This value represents the positive value at which the digital loop filter clips to prevent illegal values while operating in boost converter mode. These five bits represent bits 18:14 of the 20-bit loop filter value. Bit 19 of the positive clip is set to binary 0, while bits 13:0 are low. The optimum value of this register depends on the battery voltage and acts effectively to limit the battery current when the load exceeds the capabilities of the converter. Default decodes to 131072. Reserved – Must be written with 0. Positive Digital Loop Clip Level in Buck Mode – This value represents the positive value at which the digital loop filter clips to prevent illegal values while operating in buck converter mode. These five bits represent bits 18:14 of the 20-bit loop filter value. Bit 19 of the positive clip is set to binary 0, while bits 13:0 are low. The optimum value of this register depends on the battery voltage and acts effectively to limit the battery current when the load exceeds the capabilities of the converter. Default decodes to 376832. Table 473. DCDC2 Control Register 0 Description 356 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.4. DCDC2 Control Register 1 The organization of the DCDC2 Control Register 1 is shown below. HW_DCDC2_CTRL1 X:$FA12 2 0 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 C 2 1 R 2 2 FFOR 2 3 Table 474. HW_DCDC2_CTRL1 BITS LABEL RW RESET 23:11 RSRVD R 0 10:8 FFOR RW 000 7:4 R RW 1000 DEFINITION Reserved – Must be written with 0. Feed Forward to loop filter value – This two's complement value steps the loop filter value by the amount DDD once on a 000->DDD transition. Thus, this value must be rewritten to 000 every time before use. The feed forward feature is used to help the control loop react under heavy, but well-known, transient loads. Resistor Value – This value represents the R value of the “resistor” in the digital loop filter in the common mode control loop in the DC-DC converter. The reset value of decimal 4096 is chosen in conjunction with the value for bits [21:15], the actual decoupling capacitor, and the clock rate to provide a stable control system. The value will rarely be altered, but conditions may arise in the actual application for which a different value is more optimum. Values range 256 to 32767 (Only bits 14:8 are shown here, others bits are always 0). Values for NLVL, R, PLVU, and PLVD must satisfy the following restrictions: NLVL – 4R ≥ – 475137 PLVU + 4R ≤ 475136 PLVD + 4R ≤ 475136 3:0 C RW 1000 Capacitor 1/C Value – This value represents 1/C value of the “capacitor” in the digital loop filter in the common mode control loop in the DC-DC converter. The reset value of decimal 64 is chosen in conjunction with the value for HW_DCDC2_CTRL1_R, the actual external decoupling capacitor, and the clock rate to provide a stable control system. This value will rarely be altered, but conditions may arise in the actual application for which a different value is more optimum. Values can range between 8 and 120. Table 475. DCDC2 Control Register 1 Description 5-35xx-D1-1.08-061705 357 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.5. DC-DC VddIO Control Register 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 VOLTAGE_LEVEL 2 0 BROWNOUT_LEVEL 2 1 BROWNOUT_ENABLE 2 2 VDDIO_OK 2 3 BROWNOUT_STATUS The organization of the DC-DC VddIO Control Register is shown below. HW_DCDC_VDDIO X:$FA0E Table 476. HW_DCDC_VDDIO BITS LABEL 23:22 RSRVD 21 VDDIO_OK RW RESET DEFINITION R 0 Reserved – Must be written with 0. R Convergence State 0 converter still converging to new setting 1 converged on new voltage setting 20 BROWNOUT_STATUS R VddIO brownout detect status 0 No brownout detected on VddIO rail 1 Brown out detected on VddIO rail 19:17 RSRVD R 00 Reserved – Must be written with 0. 16 BROWNOUT_ENABLE RW 0 VddIO brownout detect enable 0 VddIO brownout detect disabled 1 VddIO brownout detect enabled 15:13 RSRVD R 00 Reserved – Must be written with 0. 12:8 BROWNOUT_LEVEL RW 01100 On-chip VddIO brownout detect level 11111 4.03 V 10111 3.52 V 01111 3.01 V 00111 2.50 V 11110 3.96 V 10110 3.45 V 01110 2.94 V 00110 2.43 V 11101 3.90 V 10101 3.39 V 01101 2.88 V 00101 2.37 V 11100 3.84 V 10100 3.33 V 01100 2.82 V 00100 2.30 V 11011 3.78 V 10011 3.26 V 01011 2.75 V 00011 2.24 V 11010 3.71 V 10010 3.20 V 01010 2.69 V 00010 2.18 V 11001 3.65 V 10001 3.14 V 01001 2.62 V 00001 2.11 V 11000 3.58 V 10000 3.07 V 01000 2.56 V 00000 2.05 V 7:5 RSRVD R 000 Reserved – Must be written with 0. 4:0 VOLTAGE_LEVEL RW 10000 On-chip VddIO voltage level – The voltage level settings for this field are the same as for the BROWNOUT_LEVEL field above. Default Voltage is 3.07 Volts. Note: BROWNOUT_LEVEL and VOLTAGE_LEVEL represent nominal on-chip voltages. Due to random offsets, board layout, and ohmic drops, the measured voltages on the board will not always measure exactly as the above table decodes. Table 477. DC-DC VddIO Control Register Description 358 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.6. DC-DC VddD Control Register 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 VOLTAGE_LEVEL 2 0 BROWNOUT_LEVEL 2 1 BROWNOUT_ENABLE 2 2 VDDD_OK 2 3 BROWNOUT_STATUS The organization of the DC-DC VddD Control Register is shown below. HW_DCDC_VDDD X:$FA0F Table 478. HW_DCDC_VDDD BITS LABEL 23:22 RSRVD 21 VDDD_OK RW RESET DEFINITION R 0 Reserved – Must be written with 0. R Convergence State 0 converter still converging to new setting 1 converged on new voltage setting 20 BROWNOUT_STATUS R VddD brownout detect status 0 No brownout detected on VddD rail 1 Brown out detected on VddD rail 19:17 RSRVD R 00 Reserved – Must be written with 0. 16 BROWNOUT_ENABLE RW 0 VddD brownout detect enable 0 VddD brownout detect disabled 1 VddD brownout detect enabled 15:13 RSRVD R 00 Reserved – Must be written with 0. 12:8 BROWNOUT_LEVEL RW 10000 On-chip VddD brownout detect level 11111 2.02 V 10111 1.76 V 01111 1.50 V 00XXX RSRVD 11110 1.98 V 10110 1.73 V 01110 1.47 V 11101 1.95 V 10101 1.70 V 01101 1.44 V 11100 1.92 V 10100 1.66 V 01100 1.40 V 11011 1.89 V 10011 1.63 V 01011 1.37 V 11010 1.85 V 10010 1.60 V 01010 1.34 V 11001 1.82 V 10001 1.57 V 01001 1.31 V 11000 1.79 V 10000 1.54 V 01000 1.28 V 7:5 RSRVD R 000 Reserved – Must be written with 0. 4:0 VOLTAGE_LEVEL RW 10110 On-chip VddD voltage level – The voltage level settings for this field are the same as for the BROWNOUT_LEVEL field above. Default Voltage is 1.73 Volts. Note: BROWNOUT_LEVEL and VOLTAGE_LEVEL represent nominal on-chip voltages. Due to random offsets, board layout, and ohmic drops, the measured voltages on the board will not always measure exactly as the above table decodes. Table 479. DC-DC VddD Control Register Description 5-35xx-D1-1.08-061705 359 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.7. DC-DC VddA/Battery Brownout Enable Control Register The organization of the DC-DC VddA Control Register is shown below. 1 9 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 VOLTAGE_LEVEL 2 0 BROWNOUT_LEVEL 2 1 X:$FA10 BROWNOUT_ENABLE 2 2 VDDA_OK 2 3 BROWNOUT_STATUS HW_DCDC_VDDA Table 480. HW_DCDC_VDDA BITS LABEL 23:22 RSRVD 21 VDDA_OK RW RESET DEFINITION R 0 Reserved – Must be written with 0. R Convergence State 0 converter still converging to new setting 1 converged on new voltage setting 20 BROWNOUT_STATUS R VddA brownout detect status 0 No brownout detected on VddA rail 1 Brown out detected on VddA rail 19:17 RSRVD R 00 Reserved – Must be written with 0. 16 BROWNOUT_ENABLE RW 0 VddA brownout detect enable 0 VddA brownout detect disabled 1 VddA brownout detect enabled 15:13 RSRVD R 00 Reserved – Must be written with 0. 12:8 BROWNOUT_LEVEL RW 10000 On-chip VddA brownout detect level 11111 2.02 V 10111 1.76 V 01111 1.50 V 00XXX RSRVD 11110 1.98 V 10110 1.73 V 01110 1.47 V 11101 1.95 V 10101 1.70 V 01101 1.44 V 11100 1.92 V 10100 1.66 V 01100 1.40 V 11011 1.89 V 10011 1.63 V 01011 1.37 V 11010 1.85 V 10010 1.60 V 01010 1.34 V 11001 1.82 V 10001 1.57 V 01001 1.31 V 11000 1.79 V 10000 1.54 V 01000 1.28 V WARNING: The STMP3501/3502 limits the minimum brownout level setting to 1.82 V. 7:5 RSRVD R 000 Reserved – Must be written with 0. 4:0 VOLTAGE_LEVEL RW 10110 On-chip VddA voltage level – The voltage level settings for this field are the same as for the BROWNOUT_LEVEL field above. Default Voltage is 1.73 Volts. WARNING: The STMP3501/3502 should not have its VOLTAGE_LEVEL set below 1.92V. Note: BROWNOUT_LEVEL and VOLTAGE_LEVEL represent nominal on-chip voltages. Due to random offsets, board layout, and ohmic drops, the measured voltages on the board will not always measure exactly as the above table decodes. Table 481. DC-DC VddA Control Register Description 360 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.8. Silicon Speed Sensor Register The organization of the Silicon Speed Sensor Register is shown below. 1 8 1 7 1 6 1 5 1 4 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 OSC1_PWRUP 1 9 OSC1_START_COUNT 2 0 RINGOSC1 2 1 OSC2_PWRUP 2 2 RINGOSC2 2 3 X:$FA13 OSC2_START_COUNT HW_SISPEED Table 482. HW_SISPEED BITS LABEL RW RESET 23 22:16 RSRVD RINGOSC2 R R 0 15:14 13 RSRVD OSC2_START_COUNT R 00 RW 0 12 OSC2_PWRUP RW 0 11 RSRVD R 0000 DEFINITION Reserved – Must be written with 0. If OSC2_PWRUP is set to one then this read only bit field returns the frequency count value from ring oscillator 2. If OSC2_PWRUP is set to zero then it returns the upper bits of DCDC2 converter loop filter Duty Cycle value. Frequency Count – The crystal oscillator is used as a time base to measure the frequency of ring oscillator 2. The measured frequency is returned here. Duty Cycle – Digital loop filter value representing the duty cycle of charging /discharging the inductor. 100000 DC-DC duty cycle at minimum (small charge time/large discharge time) ...... 011111 DC-DC duty cycle at maximum (large charge time/ small discharge time) This value will be limited according to the NLEV and PLBO/PLVBU values set for this DC-DC Converter. Reserved – Must be written with 0. Execute ring oscillator counting on low to high transition of this bit and change meaning of HW_SISPEED_RINGOSC2. Note that OSC2_PWRUP must be set to one to power on the oscillator before counting. Set to one to power up ring oscillator 2 circuitry. Set to zero for low power mode. Reserved – Must be written with 0. Table 483. Silicon Speed Sensor Register Description 5-35xx-D1-1.08-061705 361 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 10:4 RINGOSC1 R 3:2 1 RSRVD OSC1_START_COUNT R 00 RW 0 0 OSC1_PWRUP RW 0 DEFINITION If OSC1_PWRUP is set to one then this read only bit field returns the frequency count value from ring oscillator 1. If OSC1_PWRUP is set to zero then it returns the upper bits of DCDC1 converter loop filter Duty Cycle value. Frequency Count – The crystal oscillator is used as a time base to measure the frequency of ring oscillator 1. The measured frequency is returned here. Duty Cycle – Digital loop filter value representing the duty cycle of charging /discharging the inductor. 100000 DC-DC duty cycle at minimum (small charge time/large discharge time) ...... 011111 DC-DC duty cycle at maximum (large charge time/ small discharge time) This value will be limited according to the NLEV and PLBO/PLVBU values set for this DC-DC Converter. Reserved – Must be written with 0. Execute ring oscillator counting on low to high transition of this bit and change meaning of HW_SISPEED_RINGOSC1. Note that OSC1_PWRUP must be set to one to power on the oscillator before counting. Set to one to power up ring oscillator 1 circuitry. Set to zero for low power mode. Table 483. Silicon Speed Sensor Register Description (Continued) 362 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.9. DC-DC Test Bit Register The organization of the DC-DC Test Bit Register is shown below. 1 3 1 2 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 DCDC1_VDD5V_ACTIVE DCDC1_NOZERO DCDC1_CLK2X DCDC1_CLK4X DCDC1_BAT_ADJ DCDC1_DIS_5BIT 0 3 0 2 0 1 0 0 DCDC1_ADJ_TN 1 4 DCDC1_PFM DCDC2_CLK4X 1 5 DCDC1_STOPCLK DCDC2_CLK2X 1 6 PWRUP_VDDIO_BRNOUT DCDC2_VDD5V_ACTIVE 1 7 DCDC_ANA_LESSI DCDC2_PFM 1 8 DCDC_MORE_CAP 1 9 DCDC_ANA_BGR_BIAS 2 0 DCDC1_NEW_SCHEME 2 1 DCDC2_DIS_5BIT 2 2 X:$FA14 DCDC1_HALF_FETS 2 3 DCDC2_STOPCLK HW_DCDCTBR Table 484. HW_DCDCTBR BITS LABEL 23 DCDC2_STOPCLK 22 DCDC2_PFM 21 DCDC2_VDD5V_ACTIVE 20 DCDC2_CLK2X 19 DCDC2_CLK4X 18 DCDC2_DIS_5BIT 17 DCDC1_HALF_FETS 16 DCDC1_NEW_SCHEME 15 DCDC_ANA_BGR_BIAS 14 DCDC_MORE_CAP 13 DCDC_ANA_LESSI RW RESET DEFINITION RW 0 Set to one to disable the clock to the DCDC2 converter. Only use this when power comes from the VDD5V pin to reach minimum system power or DCDC2 is unused. RW 0 Set to one to enable a pulse skip mode (pulse frequency modulation in DCDC #2) that is useful in very lightly loaded conditions to minimize system power. RW 0 Set to one to force DCDC #2 to remain active, even with 5V attached to the device. This mode may help during the 5V unplug transition back to battery power supplied by the DCDC converter. When 5V is not present and the mode is NOT 101 or 11, this bit prevents pass through behavior when the battery voltage is approximately equal to the output voltage. RW 0 Set to one to slow down the DCDC #2 clock frequency by a factor of 1/2. Can be combined with DCDC2CLK4X. RW 0 Set to one to slow down the DCDC #2 clock frequency by a factor of 1/4. Can be combined with DCDC2CLK2X. RW 0 Set to one to reduce the quantization of DC-DC switching times from 5 bits to 3 bits for DCDC #2. RW 0 Set to one to reduce the size of the FETs by half (disable half of the FETS) for DCDC converter #1. This mode may be useful to minimize total system power in lightly loaded applications. RW 0 Set to one to use the new switching scheme for switching FETS in DCDC converter #1 buck mode. RW 0 Set to one to switch the DCDC analog bias current from the selfbias current to a bandgap derived current. RW 0 Set to one to add additional capacitance to common mode sense node. RW 0 Set to one to reduce the bias current to the DCDC analog. Table 485. DC-DC Test Bit Register Description 5-35xx-D1-1.08-061705 363 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET DEFINITION 12 PWRUP_VDDIO_BRNOUT RW 0 Set to one to enable the VDDIO brownout comparator. NOTE: the VDDD brownout comparator is on by default. 11 DCDC1_STOPCLK RW 0 Set to one to disable the clock to the DCDC1 converter. Only use this when power comes from the 5V pin to reach minimum system power. 10 DCDC1_PFM RW 0 Set to one to enable a pulse skip mode (pulse frequency modulation for DCDC #1) that is useful in very lightly loaded conditions to minimize system power. 9 DCDC1_VDD5V_ACTIVE RW 0 Set to one to force DCDC #1 to remain active, even with 5V attached to the device. This mode may help during the 5V unplug transition back to battery power supplied by the DCDC converter. When 5V is not present and the mode is NOT 101 or 111, this bit prevents pass through behavior when the battery voltage is approximately equal to the output voltage. 8 DCDC1_NOZERO RW 0 Set to one to prevent DCDC converter #1 from a duty cycle of zero. 7 DCDC1_CLK2X RW 0 Set to one to slow down the DCDC #1 clock frequency by a factor of 1/2. Can be combined with DCDC1CLK4X. 6 DCDC1_CLK4X RW 0 Set to one to slow down the DCDC #1 clock frequency by a factor of 1/4. Can be combined with DCDC1CLK2X. 5 DCDC1_BAT_ADJ RW 0 Set to one to use battery LRADC information to scale VDDIO duty cycle in DCDC #1. This is only used in mode 101 or 111. 4 DCDC1_DIS_5BIT RW 0 Set to one to reduce the quantization of DC-DC switching times from 5 bits to 3 bits for DCDC #1. Clearing the DCDC_1_DIS_5BIT forces the DCDC clock to operate at 1.5 Mhz, regardless of the state of the CLK2X and CLK4X bits 3:0 DCDC1_ADJ_TN RW 0000 Constant adjust duty cycle of DCDC #1 VDDIO output in mode 111 or 101. The optimum value for this field is based on VDDD and VDDIO. When VDDIO is set to a typical 3.07 Volts, the following is a suggested setting for DCDC1_ADJ_TN based on VDDD value: VDDD DCDC1_ADJ_TN DCDC1_BATADJ 0xa - 0xb 2 1 0xc - 0xe 1 1 0xf - -x11 0 1 >= x12 0 0 Table 485. DC-DC Test Bit Register Description (Continued) 364 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.10. DC-DC Persistent Bit Register The organization of the DC-DC Persistent Register is shown below. This register has a shadow copy that is in the DCLK clock and DSP power domain. It accessible by the DSP. There is a master copy of this register in the VDDXTAL clock and power domain. The persistent bits control various function states during power down modes of operation. Writing the shadow copy from the DSP does not automatically update the master copy. One must preload the shadow bits with desired values and then toggle the UPDATE bit to copy the values from the shadow version to the master version. 1 1 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 XTAL_BIAS_DOWN0 1 2 0 0 XTAL_TRIM_ENABLE 1 3 XTAL_BIAS_DOWN1 1 4 XTAL_TRIM0 1 5 XTAL_TRIM1 1 6 SLEEP_XTAL_ENABLE 1 7 LOW_BATT_TYPE 1 8 LOW_BATTERY_ENABLE 1 9 AUTO_RESTART 2 0 DELAY_5V_AUTO_RESTART 2 1 UDPATE 2 2 AUTO_RESTART_STAT 2 3 DELAY_5V_AUTO_RESTART_STAT HW_DCDC_PERSIST X:$FA1B Table 486. HW_DCDC_PERSIST BITS LABEL 23:13 RSRVD 12 AUTO_RESTART_STAT 11 10 RW RESET DEFINITION R 0 Reserved – Must be written with 0. R 0 This read only bit shows the state of the AUTO_RESTART bit as it was last copied (by toggling UPDATE) into the master register bit in the XTAL clock and power domain. NOTE: Immediately after power up, AUTO_RESTART_STAT reflects the persistent state, whereas AUTO_RESTART will have just been reset to zero. DELAY_5V_AUTO_RESTART_STAT R 0 This read only bit shows the state of the DELAY_5V_AUTO_RESTART bit as it was last copied (by toggling UPDATE) into the master register bit in the XTAL clock and power domain. NOTE: Immediately after power up, DELAY_5V_AUTO_RESTART_STAT reflects the persistent state, whereas DELAY_5V_AUTO_RESTART will have just been reset to zero. UPDATE RW 0 A zero to one transition on this bit causes the shadow values of the HW_DCDC_PERSIT bits to be copied to the master register in the VDDXTAL clock and power domain. Table 487. DC-DC Persistent Bit Register Description 5-35xx-D1-1.08-061705 365 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL 9 AUTO_RESTART 8 DELAY_5V_AUTO_RESTART 7 LOW_BATT_TYPE 6 LOW_BATTERY_ENABLE 5 SLEEP_XTAL_ENABLE 4 XTAL_TRIM1 3 XTAL_TRIM0 2 1 XTAL_BIAS_DOWN1 XTAL_BIAS_DOWN0 0 XTAL_TRM_ENABLE RW RESET DEFINITION RW 0 Set this bit to one to enable a 5KΩ resistor between the VDDXTAL pin and the PSWITCH pin. When the DCDC converter powers down the chip either because the power down bit was set in HW_CCR or because the 5V source was removed, it waits for the power switch to be pressed. Enabling the 5KΩ resistor over-rides the power switch and makes it behave as if it had just been pressed. RW 0 The DCDC converter uses two primary methods to trigger a DSP restart. The first waits for the power switch to be pressed (or the 5KΩ resistor switched in by AUTO_RESTART). The second trigger is generated when a voltage greater than VDDIO appears on the 5V pin. Customers should not set this bit to one without explicit advice from SigmaTel. RW 0 Set to one to select LiIon specific threshold for low battery detection. Set to zero for other battery chemistries. RW 0 Set to one to enable the low battery detect function. The crystal oscillator and RTC can operate on the VDDXTAL power domain even while the rest of the chip is powered down. Setting this bit to one enables a brownout detector for the VDDXTAL domain so that the RTC and Persistent bits will not be scrambled in an under voltage event. RW 0 Set to one to allow crystal oscillator to remain on during power down state. NOTE: default turns the crystal off. It must be turned on to use the Real Time Clock and Alarm. NOTE: HW_RTC_PERSIST0_XTAL_PDN must also be set to zero to enable crystal oscillator operation during power down states. RW 0 Set to one to add four pF capacitance to XTAL0/XTALI pins. RW 0 Set to one to add four more pF capacitance to XTAL0/XTALI pins. Be sure to turn on XTAL_TRIM1 first. RW 0 Set to one to shrink the crystal current 30%. RW 0 Set to one to shrink the crystal current another 30%. Be sure to turn on XTAL_BIAS_DOWN1 first. RW 0 Set to one to enable a resistor between the crystal capacitors. This allows the caps. added by XTAL_TRIM0 and XTAL_TRIM1 to start at the correct DC level to avoid a clock glitch when adding the caps. Table 487. DC-DC Persistent Bit Register Description (Continued) 366 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.5.11. Power Charger Register This register controls the 5 Volt power source mode. In this mode, the power charger can take power from the 5 Volt input from the USB cable or from a wall transformer for normal operation of the chip. The STMP35xx can optionally supply energy to recharge the battery in 5 Volt power mode. 1 3 1 2 1 1 DISABLE_ILIMIT LI_TYPE 1 0 0 9 0 8 0 7 0 6 0 5 0 4 0 3 0 2 0 1 0 0 BATT_CURRENT 1 4 RES 1 5 PWD 1 6 \ 1 7 PWDN_ON_IOBRNOUT 1 8 DCANA_LP 1 9 TEST_USBREGS 2 0 DRV_BAT 2 1 X:$FA1D SWCHRG_BAT 2 2 BATT_INFO 2 3 VDD5V_PRESENT HW_VDD5V_PWR_CHARGE Table 488. HW_VDD5V_PWR_CHARGE BITS LABEL RW RESET 23:22 RSRVD 21 BATT_INFO R R 0 - 20 R - VDD5V_PRESENT 19:18 RSRVD 17 SWCHRG_BAT R 00 RW 0 16 DRV_BAT RW 0 15 TEST_USBREGS RW 0 14 DCANA_LP RW 0 DEFINITION Reserved – Must be written with 0. This read only test is intended for chip validation and software debug but should not be used in software charging algorithms. This bit is set to one when the linear charger is supplying current to the battery. It is set to zero when the charging current falls below approximately 0.5 mA. This read-only status bit is set to one when the 5V input pin voltage is greater than the VDDIO rail voltage. Reserved – Must be written with 0. Set to one to enable the DCDC converter to supply energy to the NiMH battery using its switching mode for higher efficiency charging. WARNING: This function has been deprecated and is no longer supported. Set this SigmaTel test mode bit to one to connect the VDDD rail to the BATT pin. Set to one to enable the 5V sourced linear regulators. Set to zero for normal operation, wherein the 5V sensor controls the linear regulators. NOTE: this is a SigmaTel only test function. Set to one to power down unused circuitry in the DCDC converter. This is useful for minimizing current in USB standby mode. Table 489. VDD5V Power Charger Register Description 5-35xx-D1-1.08-061705 367 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip BITS LABEL RW RESET 13 PWDN_ON_IOBRNOUT RW 0 12 DISABLE_ILIMIT RW 0 11 LI_TYPE RW 0 10 9 RSRVD RES R 000 RW 0 8 PWD RW 01 7:5 4:0 RSRVD BATT_CURRENT R 000 RW 00000 DEFINITION Reset the system when a brownout event is detected on the VDDIO rail. This will commonly occur when the system which has been drawing current from the USB 5V bus is suddenly unplugged. Set to one to enable system reset on VDDIO brownout detection. WARNING: setting this bit to one enables the linear regulators and shuts down the DCDC converter, even if VDD5V is not connected to a power source. Always check for 5 V presence on VDD5V before setting this bit to one. It is required to clear the PSRN field of MIXTBR register when this functionality is enabled. Set to one to disable In-rush current limiter on the linear charger. Set to zero to enable the current limiter. This circuit is present to meet the USB 2.0 in-rush current specification. Linear Charger LiIon protocol: Set to zero for a 4.2 volt LiIon battery. Set it to one for a 4.1 volt LiIon battery. Reserved – Must be written with 0. When this bit is set to zero the charging current is derived using the accurate off-chip resistor shared with the integrated USB 2.0 PHY. When set to one, an on-chip bias is used. Battery charger powerdown mode, turn off all battery charge current except those needed to avoid over voltage when 5V is sensed. Reserved – Must be written with 0. These bits control the magnitude of the battery charge current. For the linear regulator, these values are: 00000 = OFF 00001 = 10 mA 00010 = 25 mA 00011 = 35 mA 00100 = 50 mA 01000 = 100 mA 10000 = 200 mA 11111 = 385 mA Currents are additive for other combinations. NOTE: set HW_USBPHYPWD_PWDIBIAS to zero and set HW_REF_CTRL_LWREF to zero for proper operation.When switched mode charger is used (NiMH) (HW_VDD5V_PWR_CHARGE_SWCHRG_BAT = 1) then the battery current = (charge current from table above) * 0.8 * (charger efficiency) * VDDIO/Vbattery. WARNING: The switched mode charging function has been deprecated and is no longer supported. Table 489. VDD5V Power Charger Register Description (Continued) Charger current limitations due to power dissipation, electromigration limits and or temperature limits will be determined during chip characterization. 368 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.6. DC-DC Converter Efficiency The following table shows the typical on resistances of the power FETs in both DCDC converters. These are nominal values that include package parasitic resistance in the TQFP package. The fpBGA package has significantly more parasitic resistance than the TQFP, so resistance values may be approximately 100-200 mΩ higher in the fpBGA. DC-DC #1 DC-DC #1 DC-DC #1 DC-DC #1 DC-DC #2 DC-DC #2 NFET PFET connected to VddA PFET connected to VddD PFET connected to VddIO NFET PFET 0.5 Ω 0.7 Ω 0.7 Ω 1.1 Ω 0.5 Ω 0.7 Ω Table 490. Typical Resistance of Power Fets on DC-DC Converters The following graphs show typical efficiency plots vs. the battery voltage for the DCDC converters configured in different modes. These graphs show measurements made with typical devices at room temperature with specific static loads. Therefore, these graphs should not be interpreted as specifications, but as estimates of typical efficiencies under nominal conditions. 30.6.1. DCDC1 Mode111 Efficiency DcDc#1 Dual Boost Mode efficiency curves for various VDD loads, VDD=1.52V (VDDIO pwr = 3mW) 100 "dcdc1_boost_VDD_75mW" using 1:2 "dcdc1_boost_VDD_150mW" using 1:2 "dcdc1_boost_VDD_225mW" using 1:2 "dcdc1_boost_VDD_300mW" using 1:2 "dcdc1_boost_VDD_375mW" using 1:2 95 90 85 80 75 70 1.6 1.5 1.4 1.3 1.2 1.1 1 0.9 Figure 128. Efficiency of DC-DC #1 in mode 111 with VddIO=3mW 5-35xx-D1-1.08-061705 369 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip DcDc#1 Dual Boost Mode efficiency curves for various loads, VDDIO=3.01 (VDD pwr = 75mW) 100 "dcdc1_boost_VDDIO_75mW" using 1:2 "dcdc1_boost_VDDIO_150mW" using 1:2 "dcdc1_boost_VDDIO_225mW" using 1:2 "dcdc1_boost_VDDIO_300mW" using 1:2 95 90 85 80 75 70 1.6 1.5 1.4 1.3 1.2 1.1 1 0.9 Figure 129. Efficiency of DC-DC #1 in mode 111 with VddD load=75mW These two graphs show the efficiency of the DC-DC converter (#1 in mode 111) versus battery voltage for several values of output power. The test conditions for the two graphs are identical except for the load the power is delivered to. Because the power FET that connects the inductor to the DCDC_VDDIO output has a higher resistance than the FET that connects the inductor to the DCDC_VDDD output, the efficiency of the DC-DC converter is improved when the same power is delivered to the low voltage output, VddD, relative to the high voltage output, VddIO. It should be noted that the boost configuration of DC-DC #1 (mode 101 and mode 111) could be the least efficient configurations for two reasons. First, Boost Mode power conversion only transfers power to the load during one phase of the converters charge/discharge cycle. Therefore, conservation of charge requires an inductor current that is higher than the load current, so I2R losses in the power FETs that switch the inductor are increased relative to a Buck Mode configuration where current is transferred to the load during the entire charge/discharge cycle. Secondly, since mode 101 and mode 111 generate multiple outputs using one external inductor, the inductor current must increase to support multiple load currents. Thus, I2R losses are also increased when using the multiple output configurations relative to the configurations that have one inductor per output voltage. Therefore, mode 101 and mode 111 are primarily intended for lower power applications that use a single battery and single inductor to achieve an ultra small form factor. 370 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.6.2. DCDC2 Mode001 Efficiency DcDc#2 Boost Mode efficiency curves for various loads, VDDIO=3.07 100 "dcdc2_boost_75mW" using 1:2 "dcdc2_boost_450mW" using 1:2 "dcdc2_boost_800mW" using 1:2 "dcdc2_boost_1000mW" using 1:2 95 90 85 80 75 70 3 2.8 2.6 2.4 2.2 2 1.8 Figure 130. Efficiency of DC-DC #2 in mode 001 for various current loads This graph shows the efficiency of DC-DC #2 for two values of output power. Since DC-DC #2 has a PFET with less on-resistance than the comparable DC-DC #1 PFET, and this configuration is a single load converter, this mode is preferred for higher power VddIO loads than mode 111 or mode 101. 30.6.3. Max Power Out in Boost Mode For a Boost Mode converter, the power delivered to the load can be estimated using the following equation: 2 V OUT ( V BAT ( 1 – D ) – V OUT ( 1 – D ) ) P OUT = ------------------------------------------------------------------------------------------RP + RL + D ( RN – RP ) In this equation “D” represents the duty cycle of DC-DC converter, Vout represents the output voltage of the converter, Rn and Rp represent the on resistance of the power fets appropriate for the particular DC-DC converter configuration, and Rl represents the on-resistance of the DC-DC inductor. For multiple output modes 111 and 101, this equation is a reasonable approximation if it is assumed that all the power is transferred to one of the loads. This equation leads to the following expression for the duty cycle that gives to the maximum power transferred to the load: D MAX V BAT ( R P – R N ) R P – R N 1 + ------------- × -----------------------V OUT RN = ------------------------------------------------------------------------------RP – RN Substituting Dmax into the equation for Pout gives a maximum power that can be theoretically delivered to the load. Note that this equation was derived using only 5-35xx-D1-1.08-061705 371 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip V=Ldi/dt and conservation of charge, and thus represents a theoretical maximum that neglects many significant sources of loss including frequency dependent core losses, bond wire ringing, switch non-overlap times, etc. From an application point of view, it is probably not desirable to operate the converter at the maximum power output, since I2R losses will also be maximized. Therefore, it is recommended to constrain system power requirements to loads that can be supplied with efficiency ≥ 70% as shown in the graphs in Figures 128 and 130. 30.6.4. DCDC1 Mode011/Mode001/Mode000 Efficiency DcDc#1 Buck Mode efficiency curves for various loads, VDD=1.52V 100 "dcdc1_buck_VDD_75mW" using 1:2 "dcdc1_buck_VDD_150mW" using 1:2 "dcdc1_buck_VDD_225mW" using 1:2 "dcdc1_buck_VDD_300mW" using 1:2 "dcdc1_buck_VDD_375mW" using 1:2 95 90 85 80 75 70 4 3.5 3 2.5 2 Figure 131. Efficiency of DC-DC #1 in mode 011/mode 001/mod000 vs. load current This graph shows the efficiency for DC-DC #1 configured as a single channel buck converter. Since DC-DC #1 is configured identically in modes 011, 001, 000, this graph is applicable in all three modes. The positive slope of the 75mW curve and 150mW curve is due to the fact that the current required for the PMOS driver dominates the loss at these load levels. Since the PMOS driver power is proportional to the battery voltage squared, these losses decrease and the efficiency improves as the battery voltage falls. 372 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.6.5. DCDC2 Mode000 Efficiency DcDc#2 Buck Mode efficiency curves for various loads, VDDIO = 3.01 100 "dcdc2_buck_75mW" using 1:2 "dcdc2_buck_450mW" using 1:2 "dcdc2_buck_800mW" using 1:2 "dcdc2_buck_1000mW" using 1:2 95 90 85 80 75 70 4.2 4 3.8 3.6 3.4 3.2 3 This graph shows the efficiency for DC-DC #2 configured as a single channel buck converter. The positive slope of the 75mW curve is due to the fact that the current required for the PMOS driver dominates the loss at this load levels. Since the PMOS driver power is proportional to the battery voltage squared, these losses decrease and efficiency improves as the battery voltage falls. Also note that the 1000mW curve does not extend below a battery voltage of 3.6V. This is because converter has stopped switching and the PMOS device is in dropout (i.e. on 100% of the duty cycle), and the load voltage is not well regulated. It is not recommended to use the integrated dc-dc converters when load currents and output voltages cause the converter to drop out. 30.6.6. Max Power Out in Buck Mode Unlike the boost case, the maximum output power from a Buck Mode configuration is limited simply by voltage difference between the load and the battery divided by the Pfet on resistance. ( Vbat – Vout ) × Vout P OUT = -----------------------------------------------------Rp + RL Thus a Buck Mode configuration can better supply large currents to the load than Boost Mode configurations. 5-35xx-D1-1.08-061705 373 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.6.7. Clock Speed vs. Voltage The following table can be used to select a proper setting for VddD and VddD brownout voltages based on standard analysis of worst case design and characterization data. MAX DCLK TARGET 75.6MHz 69.6MHz 64.8MHz 60.0MHz 48.0MHz 39.6MHz Min. VddD HW_DCDC_VDDD_ VOLTAGE_LEVEL Corresponding HW_DCDC_VDDD_ VddD BROWNOUT_LEVEL Brownout Voltage 1.92 V 11100 1.85 V 11010 1.82 V 11001 1.76 V 10111 1.73 V 10110 1.66 V 10100 1.63 V 10011 1.54 V 10000 1.4 V 01100 1.34 V 01010 1.37 V 01011 1.28 V 01000 Table 491. Recommended Operating Conditions for specific dclk targets 30.7. System Brownout The chip also contains circuitry to sense when the power requirements of the system are more than the power the DC-DC converters can provide. The entrance into the state of power required > power available is called a brownout event. Detection of a brownout event is important to provide a controlled shutdown and acceptable system behavior in the event of battery falling out, weak battery, short circuit, etc. Typically, these brownout events are low frequency events (<100 kHz) due to the large capacitors on the battery and the supply rails in the application, and the software can shutdown the application in a controlled manner. Figure 132 shows the circuitry available to detect a brownout event: As shown in Figure 132, there are three brownout sources that can be used to interrupt the DSP via a NMI or IRQB. All brownouts are detected with comparators which detect when a crucial system voltages (battery, VddD, VddIO) falls below a software defined target voltage. These brownout detection comparators have a resolution time of approximately 1us. This finite resolution time combined with the internal lowpass filter pole at 1 MHz, limit the frequency range for which a brownout event will be detected. In the audio frequency range, the brownout events will be detected when any instantaneous system voltage falls below the target voltage as defined in the software control of the Voltage Generator blocks. In the 100 kHz frequency range, the comparator resolution time will act to reduce brownout sensitivity, and the instantaneous system voltage will need to fall below the software control value to detect a brownout event. As the frequency continues to increase, this effect continues to worsen and by 500kHz, a brownout event cannot be detected. Thus, it is necessary to decouple the supplies well on the board to filter any high frequency transients that could cause an undetected brownout event. 30.8. Known Chip Defects with Power Management Subsystem 30.8.1. Clear Quest Entry STMP00005058 All revisions of the chip are known to have a defect in which the USB 5V detect line may not transition low when 5V removed while driving heavy loads. This issue is related to applications that perform a hand off between the linear regulators and the switching dcdc converters. The detect circuit that senses 5V is not 374 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_VDD5V_PWR_CHARGE_ PWDN_ON_IOBRNOUT HW_DCDC_VDDIO_ BROWNOUT_LEVEL Comparator resolution time ~1µs HW_DCDC_VDDIO_ BROWNOUT_STATUS STOP DCDC Converter Voltage Generator HW_CCR_PWDN VddD Internal Pole @ ~1MHz HW_DCDC_VDDIO_ BROWNOUT_ENABLE HW_DCDC_VDDD_ BROWNOUT_LEVEL HW_DCDC_VDDD_ BROWNOUT_STATUS stack over/ under flow Voltage Generator NMI to DSP VddIO HW_DCDC_VDDD_ BROWNOUT_ENABLE HW_DCDC_VDDA_ BROWNOUT_LEVEL HW_DCDC_RCR_ IRQB2NMI HW_DCDC_VDDA_ BROWNOUT_STATUS IRQB to DSP Voltage Generator VddA HW_IPR_IRQBP[0] HW_DCDC_VDDA_ BROWNOUT_ENABLE LRADC_BATT_EVENT_0_1_IRQ Figure 132. Brownout Event Detect Available Circuitry present detects when 5V is less than a Vt above VDDIO. Unfortunately, when the VDDIO linear regulator is sourcing fairly large currents then dropout voltage of the linear regulator is greater than a Vt. This means that the 5v detect circuit will not sense that 5v is removed. Therefore, dc-dc hand off applications the software should sense when a VDDIO brownout occurs instead of when a 5v unplug is detected. 30.8.2. Clear Quest Entry STMP00004681 All revisions of the chip are known to have a latch up issue in DCDC #1 with a LiIon battery that will cause the battery voltage to momentarily drop and thus cause the VDD voltage to drop. The latchup issue appears to be in a floating well with the battery charger. The pin inductance initiates current into the substrate which will create an SCR path to the VDD5V pin. The SCR is only active for a brief time and will not cause destructive currents to flow. There is a software work around. Changing the speed of the DCDC #1 clock to 6MHz will reduce the ripple of the inductor current 4X, and thus reduce the voltage transient caused by the pin inductance. Testing shows that this completely eliminates the problem for VDD loads of at least 200mA. Customers must also follow layout guidelines to place decoupling capacitors close to the dcdc1_vddio pin. 5-35xx-D1-1.08-061705 375 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 30.8.3. Clear Quest Entry STMP00004530 All revisions of the chip are known to have a defect in which the chip will reset at high LiIon battery voltages and low core voltage when 5V is connected. This is only an issue for applications that want a invisible transfer between the switching dc-dc converter and integrated linear regulators. This problem should be invisible to customers. The software that implements to transfer between dc-dc converters and linear regulators contains the necessary code to eliminate this issue. 30.8.4. Clear Quest Entry STMP00004413 All revisions of the chip are known to have a defect in which the switch logic of the dcdc converter that allows a large current to flow through these switches when the battery voltage is a Vt above VDDIO. The only case in which this should be a problem is LiIon. All capacitors should be removed from the dcdc_vddd and dcdc_vdda pins when operating in buck mode. These outputs should be left floating in non-alkaline/NiMH modes. 30.8.5. Clear Quest Entry STMP00004201 All revisions of the chip are known to have a defect in which an analog mux that switches the xtal/rtc current from the battery to a power source created from the VDD5V input. This leakage current is in the 200uA range, and will decrease as the LiIon battery voltage drops. This defect is only an issue when a player is left connected to 5V with battery charge turned off. 30.8.6. Clear Quest Entry STMP00003530 All revisions of the chip are known to have a defect in which there is a possibility for charge flow across the DC-DC #2 P-FET when the following conditions are met: 1) External Power (i.e. 5V power) 2) DC-DC is configured in LiIon Buck mode 000 3) Battery voltage is lower than VDDIO-Vt For example, if a Li-ION battery is at 2.5V and the part is powered up from Vdd5v then the body diode in the DC-DC#2 P-FET will be forward biased and dump current into the battery. Since the linear regulators are current limited to ~50mA, this current will flow into the battery and effectively trickle charge it. Only when the voltage on the battery rises enough to allow VDDIO to rise above the it's startup voltage will the player complete the startup sequence and begin operating. The behavior can be eliminated, if desired, with external FET switches that disconnect the battery from the dcdc converters when 5V is present. 376 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 31. PIN DESCRIPTION 10 x 10 mm Pin A1 Pin 1 14 x 14 mm 100 TQFP 144 fpBGA For additional package measurements, please see 32. “PACKAGE DRAWINGS” on page 389. Figure 133. Chip Package Photos 31.1. Pin Placement and Definitions 100 TQFP 144 fpBGA 1 M2 2 L2 3 K4 4 M3 5 L3 6 7 H6 M4 8 J5 9 L4 10 11 12 G6 H7 M5 NA K5 13 L5 NA M6 14 K6 NA J6 PIN NAME MODULE TYPE GP14 SPI_MOSI GP13 SPI_MISO GP12 SPI_SCK GPIO SPI GPIO SPI GPIO SPI I/O I/O I/O I/O I/O I/O GP16 I2C_SCL GP17 I2C_SDA TESTMODE CF_CE1n GP44 CF_IORDn GP52 CF_IOWRn GP51 VssD2 VddD2 CF_A0 GP32 RAM_A0 CF_A22 GP69 UTMI_RXVALID CF_A1 GP33 RAM_A1 CF_A21 GP68 UTMI_RXACTIVE CF_A2 GP34 RAM_A2 CF_A20 GP67 UTMI_RXVALIDH GPIO I2 C GPIO I2C SYSTEM EMC-CF GPIO EMC-CF GPIO EMC-CF GPIO POWER POWER EMC-CF GPIO SDRAM EMC-CF GPIO UTMI EMC-CF GPIO SDRAM EMC-CF GPIO UTMI EMC-CF GPIO SDRAM EMC-CF GPIO UTMI I/O I/O I/O I/O I O I/O O I/O O I/O P P O I/O O O I/O I O I/O O O I/O I O I/O O O I/O I PIN SET DIO3, DIO18 DIO3, DIO18 D, DIO3, DIO18 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DESCRIPTION GP0B14 SPI Master Output/Slave Input GP0B13 SPI Master Input/Slave Output GP0B12 SPI Serial Clock GP0B16 I2C Serial Clock GP0B17 I2C Serial Data Test Mode Pin CompactFlash Chip Enable 1 GP1B20 CompactFlash I/O Read Data Strobe GP2B4 CompactFlash I/O Write Data Strobe GP2B3 Digital Core Ground 2 Digital Core Power 2 CompactFlash Address 0 GP1B8 SDRAM Address 0 CompactFlash Address 22 GP2B21 UTMI receive valid CompactFlash Address 1 GP1B9 SDRAM Address 1 CompactFlash Address 21 GP2B20 UTMI CompactFlash Address 2 GP1B10 (play switch recovery if used) SDRAM Address 2 CompactFlash Address 20 GP2B19 UTMI Table 492. Pin Definition Table 5-35xx-D1-1.08-061705 377 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100 TQFP 144 fpBGA 15 L6 NA L7 16 K7 NA NA NA F7 G7 M7 17 J7 NA L8 18 K8 NA M8 19 J8 NA M9 20 L9 NA K9 21 L10 22 M10 23 M11 24 K10 25 M12 PIN NAME CF_A3 GP35 RAM_A3 CF_A19 GP66 UTMI_RXERR CF_A4 SM_CE3n GP36 RAM_A4 VddIO3 VssIO3 CF_A18 GP65 UTMI_DATA0 CF_A5 SM_CE2n GP37 RAM_A5 CF_A17 GP64 UTMI_DATA1 CF_A6 SM_CE0n GP38 RAM_A6 CF_A16 GP63 UTMI_DATA2 CF_A7 SM_SEn GP39 RAM_A7 CF_A15 GP62 RAM_A13 UTMI_DATA3 CF_A8 SM_CLE GP40 RAM_A8 CF_A14 GP61 RAM_A12 UTMI_DATA4 CF_A9 SM_ALE GP41 RAM_A9 CF_A10 GP42 RAM_A10 CF_OEn SM_REn GP53 CF_CE0n SM_CE1n GP45 CF_WAITn SM_READY GP56 MODULE TYPE EMC-CF GPIO SDRAM EMC-CF GPIO UTMI EMC-CF EMC-SM GPIO SDRAM POWER POWER EMC-CF GPIO UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM EMC-CF EMC-SM GPIO EMC-CF EMC-SM GPIO EMC-CF EMC-SM GPIO O I/O O O I/O I O O I/O O P P O I/O I/O O O I/O O O I/O I/O O O I/O O O I/O I/O O O I/O O O I/O O I/O O O I/O O O I/O O I/O O O I/O O O I/O O O O I/O O O I/O I I I/O PIN SET DIO3 DIO3 DIO3, DIO18 DIO3 DIO3, DIO18 DIO3 DIO3, DIO18 DIO3 DIO3 DIO3 DIO3, DIO18 DIO3 DIO3, DIO18 DIO3 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DESCRIPTION CompactFlash Address 3 GP1B11 SDRAM Address 3 CompactFlash Address 19 GP2B18 UTMI receive error CompactFlash Address 4 SmartMedia/NAND Chip Enable 3 GP1B12 SDRAM Address 4 Digital I/O Power 3 Digital I/O Ground 3 CompactFlash Address 18 GP2B17 UTMI data bus CompactFlash Address 5 SmartMedia/NAND Chip Enable 2 GP1B13 SDRAM Address 5 CompactFlash Address 17 GP2B16 UTMI data bus CompactFlash Address 6 SmartMedia/NAND Chip Enable 0 GP1B14 SDRAM Address 6 CompactFlash Address 16 GP2B15 UTMI Data Bus CompactFlash Address 7 SmartMedia/NAND Spare Area Enable GP1B15 SDRAM Address 7 CompactFlash Address 15 GP2B14 SDRAM Address 13 UTMI Data Bus CompactFlash Address 8 SmartMedia/NAND Command Latch Enable GP1B16 SDRAM Address 8 CompactFlash Address 14 GP2B13 SDRAM Address 12 UTMI Data Bus CompactFlash Address 9 SmartMedia/NAND Address Latch Enable GP1B17 SDRAM Address 9 CompactFlash Address 10 GP1B18 SDRAM Address 10 CompactFlash Output Enable Strobe SmartMedia/NAND Read Enable Strobe GP2B5 CompactFlash Chip Enable 0 SmartMedia/NAND Chip Enable 1 GP1B21 CompactFlash Wait (not) SmartMedia/NAND Ready/Busy GP2B8 Table 492. Pin Definition Table (Continued) 378 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100 TQFP 144 fpBGA NA L12 26 L11 NA K11 27 K12 NA J9 28 29 30 H8 G8 J10 NA J12 31 H9 NA J11 32 H12 NA H11 33 H10 NA G11 34 G10 NA G12 35 G9 PIN NAME CF_A11 GP80 RAM_A11 UTMI_DATA5 CF_WEn SM_WEn GP54 CF_A12 GP81 RAM_BA0 UTMI_DATA6 SM_WPn GP55 CF_A13 GP82 RAM_BA1 UTMI_DATA7 VssIO1 VddIO1 CF_D0 SM_D0 GP24 RAM_D0 CF_D15 GP79 RAM_D15 UTMI_DATA8 CF_D1 SM_D1 GP25 RAM_D1 CF_D14 GP78 RAM_D14 UTMI_DATA9 CF_D2 SM_D2 GP26 RAM_D2 CF_D13 GP77 RAM_D13 UTMI_DATA10 CF_D3 SM_D3 GP27 RAM_D3 CF_D12 GP76 RAM_D12 UTMI_DATA11 CF_D4 SM_D4 GP28 RAM_D4 CF_D11 GP75 RAM_D11 UTMI_DATA12 CF_D5 SM_D5 GP29 RAM_D5 MODULE TYPE EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO EMC-CF GPIO SDRAM UTMI EMC-SM GPIO EMC-CF GPIO SDRAM UTMI POWER POWER EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM O I/O O I/O O O I/O O I/O O I/O O I/O O I/O O I/O P P I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O PIN SET DIO3 DIO3, DIO18 DIO3 DIO3, DIO18 DIO3 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DESCRIPTION CompactFlash Address 11 GP3B8 SDRAM Address 11 UTMI Data Bus CompactFlash Write Enable Strobe SmartMedia/NAND Write Enable Strobe GP2B6 CompactFlash Address 12 GP3B9 SDRAM Bank Address 0 UTMI Data Bus SmartMedia/NAND Write Protect GP2B7 CompactFlash Address 13 GP3B10 SDRAM Bank Address 1 UTMI Data Bus Digital I/O Ground 1 Digital I/O Power 1 CompactFlash Data 0 SmartMedia/NAND I/O 0 GP1B0 SDRAM Data 0 CompactFlash Data 15 GP3B7 SDRAM Data 15 UTMI Data Bus CompactFlash Data 1 SmartMedia/NAND I/O 1 GP1B1 SDRAM Data 1 CompactFlash Data 14 GP3B6 SDRAM Data 14 UTMI Data Bus CompactFlash Data 2 SmartMedia/NAND I/O 2 GP1B2 SDRAM Data 2 CompactFlash Data 13 GP3B5 SDRAM Data 13 UTMI Data Bus CompactFlash Data 3 SmartMedia/NAND I/O 3 GP1B3 SDRAM Data 3 CompactFlash Data 12 GP3B4 SDRAM Data 12 UTMI Data Bus CompactFlash Data 4 SmartMedia/NAND I/O 4 GP1B4 SDRAM Data 4 CompactFlash Data 11 GP3B3 SDRAM Data 11 UTMI Data Bus CompactFlash Data 5 SmartMedia/NAND I/O 5 GP1B5 SDRAM Data 5 Table 492. Pin Definition Table (Continued) 5-35xx-D1-1.08-061705 379 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100 TQFP 144 fpBGA NA F9 36 F11 NA F12 37 F10 38 39 NA F8 E8 E9 40 E12 41 E10 42 E11 43 C11 44 D11 45 D10 46 47 48 49 50 NA NA NA NA NA NA 51 52 53 NA B11 D12 C12 B12 A12 A11 E7 E6 B10 A10 A9 C10 D9 C9 B9 54 55 56 57 D8 A7 D7 B8 58 A8 59 C8 60 C7 PIN NAME CF_D10 GP74 RAM_D10 UTMI_DATA13 CF_D6 SM_D6 GP30 RAM_D6 CF_D9 GP73 RAM_D9 UTMI_DATA14 CF_D7 SM_D7 GP31 RAM_D7 VssD1 VddD1 CF_D8 GP72 RAM_D8 CF_CDn GP46 CF_READY GP47 CF_WPn GP48 CF_RESETn GP50 CF_REGn GP43 CF_BVD1 GP49 ONCE_DSI DCDC_VddIO DCDC_VddD DCDC_Batt DCDC_Gnd DCDC_VddA VddIO4 VssIO4 DCDC2_Gnd DCDC2_Batt DCDC2_Vout ONCE_DSK ONCE_DSO ONCE_DRN GP83 RAM_DQM0 UTMI_DATA15 DCDC_mod2 MIC BATT LINE1L HP_SENSE LRADC1 MIC_BIAS LINE1R HP_COMMON LRADC2 TEMP_SENSE MIC_BIAS MODULE TYPE EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM EMC-CF GPIO SDRAM UTMI EMC-CF EMC-SM GPIO SDRAM POWER POWER EMC-CF GPIO SDRAM EMC-CF GPIO EMC-CF GPIO EMC-CF GPIO EMC-CF GPIO EMC-CF GPIO EMC-CF GPIO SYSTEM DCDC DCDC DCDC DCDC DCDC POWER POWER DCDC DCDC DCDC SYSTEM SYSTEM SYSTEM GPIO SDRAM UTMI DCDC CODEC POWER CODEC CODEC SYSTEM CODEC CODEC CODEC SYSTEM SYSTEM CODEC I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O P P I/O I/O I/O I I/O I I/O I I/O I I/O O I/O I I/O I P P P P P P P P P P O O I I/O O I/O P A P A A A A A A A A A PIN SET DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3, DIO18 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 AIO AIO AIO AIO AIO DESCRIPTION CompactFlash Data 10 GP3B2 SDRAM Data 10 UTMI Data Bus CompactFlash Data 6 SmartMedia/NAND I/O 6 GP1B6 SDRAM Data 6 CompactFlash Data 9 GP3B1 SDRAM Data 9 UTMI Data Bus CompactFlash Data 7 SmartMedia/NAND I/O 7 GP1B7 SDRAM Data 7 Digital Core Ground 1 Digital Core Power 1 CompactFlash Data 8 GP3B0 SDRAM Data 8 CompactFlash Card Detect GP1B22 CompactFlash Ready GP1B23 CompactFlash Write Protect GP2B0 CompactFlash Reset GP2B2 CompactFlash Register Select GP1B19 CompactFlash Bad Voltage Detect GP2B1 Debug Data In DCDC VddIO DCDC VddD DCDC Battery DCDC Ground DCDC VddA Digital I/O Power 4 Digital I/O Ground 4 DCDC2 Ground DCDC2 Battery DCDC2 Vout Debug Clock Debug Data Out Debug Reset GP3B11 SDRAM DQM0 UTMI Data Bus DCDC mode pin 2 Microphone Input Battery Input Line-in 1 Left Direct coupled headphone sense Low Resolution ADC channel 1 Input Microphone bias Line-in 1 Right Direct Coupled Headphone common amp. Low Resolution ADC channel 2 input Temperature sensor bias current Alternate Microphone Bias Table 492. Pin Definition Table (Continued) 380 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100 TQFP 144 fpBGA 61 62 63 NA 64 65 NA NA 66 67 68 69 70 71 NA 72 73 74 75 76 77 B7 B6 C6 D6 D5 A6 D4 C5 A5 B4 A4 B3 C4 C3 A3 B5 B2 A2 A1 B1 E4 78 79 E5 D3 80 81 82 83 C2 C1 E3 D2 NA E2 84 85 86 87 88 D1 E1 F6 F5 F4 89 F3 NA F2 90 G4 NA F1 91 G3 NA G2 92 H3 PIN NAME MODULE TYPE VDD5V HPL VssHP DCDC_mod1 VddHP HPR LINE2L LINE2R Vbg Vag ADCL ADCR REF_RES REFp DCDC_mod0 VssA1 VddA1 XTALO XTALI VddPLL VddXTAL POWER CODEC POWER DCDC POWER CODEC CODEC CODEC CODEC CODEC CODEC CODEC USB CODEC DCDC POWER POWER SYSTEM SYSTEM POWER SYSTEM P A P P P A A A A A A A A A P P P A A P A VssPLL FRESET POWER SYSTEM P A PSWITCH USB_DP USB_DM GP11 GP9 PWM2 GP90 RAM_CLK UTMI_TXREADY GP8 GP10 VddD3 VssD3 GP7 I2S_DataO2 PWM3 GP6 I2S_DataO1 GP84 RAM_DQM1 UTMI_TXVALID GP5 I2S_DataO0 GP89 RAM_CKE UTMI_TXVALIDH GP4 I2S_BCLK GP88 RAM_CSn UTMI_OPMODE0 GP3 I2S_LRCLK SYSTEM USB USB GPIO GPIO PWM GPIO SDRAM UTMI GPIO GPIO POWER POWER GPIO I2S PWM GPIO I2S GPIO SDRAM UTMI GPIO I2S GPIO SDRAM UTMI GPIO I2S GPIO SDRAM UTMI GPIO I2 S A A A I/O I/O O I/O O O I/O I/O P P I/O O O I/O O I/O O I I/O O I/O O O I/O I I/O O O I/O I PIN SET AIO AIO AIO AIO AIO AIO AIO AIO AIO AIO AIO USBIO USBIO DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DESCRIPTION USB/External 5V power source Headphone/Line-out Left Headphone Ground DCDC mode pin 1 Headphone Power Headphone/Line-out Right Line-in 2 Left (AKA: FM-in Left) Line-in 2 Right (AKA: FM-in Right) Bandgap Decoupling Capacitor Analog Ground Decoupling Capacitor ADC Left Filter Capacitor ADC Right Filter Capacitor USB Precision Resistor ADC Positive Reference Capacitor DCDC mode pin 0 Analog Ground 1 Analog Power 1 Crystal Out Crystal In PLL Power Power for XTAL oscillator (generated onchip) PLL Ground Fast Reset, Fast Falling Edge (<15ns) Powers Down Device Power Switch USB Positive Data Line USB Negative Data Line GP0B11 GP0B9 Pulse Width Modulator #2 GP3B18 SDRAM Clock UTMI transmit data ready GP0B8 GP0B10 Digital Core Power 3 Digital Core Ground 3 GP0B7 I2S Data Out 2 Pulse Width Modulator #3 GP0B6 I2S Data Out 1 GP3B12 SDRAM DQM1 UTMI transmit valid low byte GP0B5 I2S Data Out 0 GP3B17 SDRAM CKE UTMI transmit valid high byte GP0B4 I2S Bit Clock GP3B16 SDRAM CSn UTMI GP0B3 I2S Word Clock Table 492. Pin Definition Table (Continued) 5-35xx-D1-1.08-061705 381 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100 TQFP 144 fpBGA NA G1 93 H4 NA J3 94 H2 NA H1 95 J1 NA J2 96 97 98 G5 H5 J4 NA K3 99 K2 NA K1 100 L1 NA M1 PIN NAME GP85 RAM_RASn UTMI_OPMODE1 GP2 I2S_DataI2 GP86 RAM_CASn UTMI_XVER_SEL GP1 I2S_DataI1 GP87 RAM_WEn UTMI_LINESTATE0 GP0 I2S_DataI0 GP92 I2S_DataI0 UTMI_LINESTATE1 VddIO2 VssIO2 GP19 TIO1 PWM1 GP93 I2S_BCLK UTMI_CLK GP18 TIO0 PWM0 GP91 I2S_WCLK UTMI_RESET GP15 SPI_SSn CF_A23 GP70 RAM_A23 MODULE TYPE GPIO SDRAM UTMI GPIO I2S GPIO SDRAM UTMI GPIO I2S GPIO SDRAM UTMI GPIO I2S GPIO I2S UTMI POWER POWER GPIO TIMER PWM GPIO I2S UTMI GPIO TIMER PWM GPIO I2S UTMI GPIO SPI EMC-CF GPIO SDRAM I/O O O I/O I I/O O O I/O I I/O O I I/O I I/O I I P P I/O I/O O I/O I O I/O I/O O I/O I O I/O I O I/O O PIN SET DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DIO3 DESCRIPTION GP3B13 SDRAM RASn UTMI GP0B2 I2S Data In 2 GP3B14 SDRAM CASn UTMI GP0B1 I2S Data In 1 GP3B15 SDRAM WEn UTMI GP0B0 I2S Data In 0 GP3B20 I2S Data In 0 (Alternate pin) UTMI Digital I/O Power 2 Digital I/O Ground 2 GP0B19 Timer 1 Pin Pulse Width Modulator #1 GP3B21 I2S Bit Clock (Alternate pin) UTMI GP0B18 Timer 0 Pin Pulse Width Modulator #0 GP3B19 I2S Word Clock (Alternate pin) UTMI GP0B15 (Do not use as GPIO if using SPI) SPI Slave Select CompactFlash Address 23 GP2B22 SDRAM Address 23 Table 492. Pin Definition Table (Continued) 382 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 31.1.1. Analog Pins 100TQFP 68 69 62 65 144fpBGA A4 B3 B6 A6 57 B8 59 C8 NA NA 55 70 71 67 66 D4 C5 A7 C4 C3 B4 A5 PIN ADCL ADCR HPL HPR LINE1L HP_SENSE LINE1R HP_COMMON LINE2L LINE2R MIC REF_RES REFp Vag Vbg TYPE A A A A A A A A A A A A A A A DESCRIPTION ADC Left Filter Capacitor ADC Right Filter Capacitor Headphone/Line-out Left Headphone/Line-out Right Line-in 1 Left Direct coupled headphone sense Line-in 1 Right Direct coupled headphone common amplifier Line-in 2 Left (AKA: FM-in Left) Line-in 2 Right (AKA: FM-in Right) Microphone Input USB Precision Resistor ADC Positive Reference Capacitor Analog Ground Decoupling Capacitor Bandgap Decoupling Capacitor Table 493. Analog Pins 31.1.2. 100TQFP 49 50 NA NA 54 NA 48 47 NA NA NA DCDC Converter Pins 144fpBGA B12 A12 A3 D6 D8 A11 C12 D12 A10 B10 A9 PIN DCDC_Batt DCDC_Gnd DCDC_mod0 DCDC_mod1 DCDC_mod2 DCDC_VddA DCDC_VddD DCDC_VddIO DCDC2_Batt DCDC2_Gnd DCDC2_Vout TYPE P P P P P P P P P P P DESCRIPTION DCDC Battery DCDC Ground DCDC mode pin 0 DCDC mode pin 1 DCDC mode pin 2 DCDC VddA DCDC VddD DCDC VddIO DCDC2 Battery DCDC2 Ground DCDC2 Vout Table 494. DCDC Converter Pins 31.1.3. 100TQFP 12 13 14 15 16 17 18 19 20 21 22 NA NA NA NA NA NA NA NA NA NA NA NA NA 45 External Memory Interface (CompactFlash) Pins 144fpBGA M5 L5 K6 L6 K7 J7 K8 J8 L9 L10 M10 L12 K11 J9 K9 M9 M8 L8 M7 L7 J6 M6 K5 M1 D10 PIN CF_A0 CF_A1 CF_A2 CF_A3 CF_A4 CF_A5 CF_A6 CF_A7 CF_A8 CF_A9 CF_A10 CF_A11 CF_A12 CF_A13 CF_A14 CF_A15 CF_A16 CF_A17 CF_A18 CF_A19 CF_A20 CF_A21 CF_A22 CF_A23 CF_BVD1 TYPE O O O O O O O O O O O O O O O O O O O O O O O O I DESCRIPTION CompactFlash Address 0 CompactFlash Address 1 CompactFlash Address 2 CompactFlash Address 3 CompactFlash Address 4 CompactFlash Address 5 CompactFlash Address 6 CompactFlash Address 7 CompactFlash Address 8 CompactFlash Address 9 CompactFlash Address 10 CompactFlash Address 11 CompactFlash Address 12 CompactFlash Address 13 CompactFlash Address 14 CompactFlash Address 15 CompactFlash Address 16 CompactFlash Address 17 CompactFlash Address 18 CompactFlash Address 19 CompactFlash Address 20 CompactFlash Address 21 CompactFlash Address 22 CompactFlash Address 23 CompactFlash Bad Voltage Detect Table 495. External Memory Interface (CompactFlash) 5-35xx-D1-1.08-061705 383 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100TQFP 40 24 7 30 31 32 33 34 35 36 37 NA NA NA NA NA NA NA NA 8 9 23 41 44 43 25 26 42 144fpBGA E12 K10 M4 J10 H9 H12 H10 G10 G9 F11 F10 E9 F12 F9 G12 G11 H11 J11 J12 J5 L4 M11 E10 D11 C11 M12 L11 E11 PIN CF_CDn CF_CE0n CF_CE1n CF_D0 CF_D1 CF_D2 CF_D3 CF_D4 CF_D5 CF_D6 CF_D7 CF_D8 CF_D9 CF_D10 CF_D11 CF_D12 CF_D13 CF_D14 CF_D15 CF_IORDn CF_IOWRn CF_OEn CF_READY CF_REGn CF_RESETn CF_WAITn CF_WEn CF_WPn TYPE I O O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O O O O I O I I O I DESCRIPTION CompactFlash Card Detect CompactFlash Chip Enable 0 CompactFlash Chip Enable 1 CompactFlash Data 0 CompactFlash Data 1 CompactFlash Data 2 CompactFlash Data 3 CompactFlash Data 4 CompactFlash Data 5 CompactFlash Data 6 CompactFlash Data 7 CompactFlash Data 8 CompactFlash Data 9 CompactFlash Data 10 CompactFlash Data 11 CompactFlash Data 12 CompactFlash Data 13 CompactFlash Data 14 CompactFlash Data 15 CompactFlash I/O Read Data Strobe CompactFlash I/O Write Data Strobe CompactFlash Output Enable Strobe CompactFlash Ready CompactFlash Register Select CompactFlash Reset CompactFlash Wait (not) CompactFlash Write Enable Strobe CompactFlash Write Protect Table 495. External Memory Interface (CompactFlash) (Continued) 31.1.4. 100TQFP 21 18 24 17 16 20 30 31 32 33 34 35 36 37 25 23 19 26 27 External Memory Interface (SmartMedia/NAND) Pins 144fpBGA L10 K8 K10 J7 K7 L9 J10 H9 H12 H10 G10 G9 F11 F10 M12 M11 J8 L11 K12 PIN SM_ALE SM_CE0n SM_CE1n SM_CE2n SM_CE3n SM_CLE SM_D0 SM_D1 SM_D2 SM_D3 SM_D4 SM_D5 SM_D6 SM_D7 SM_READY SM_REn SM_SEn SM_WEn SM_WPn TYPE O O O O O O I/O I/O I/O I/O I/O I/O I/O I/O I O O O O DESCRIPTION SmartMedia/NAND Address Latch Enable SmartMedia/NAND Chip Enable 0 SmartMedia/NAND Chip Enable 1 SmartMedia/NAND Chip Enable 2 SmartMedia/NAND Chip Enable 3 SmartMedia/NAND Command Latch Enable SmartMedia/NAND I/O 0 SmartMedia/NAND I/O 1 SmartMedia/NAND I/O 2 SmartMedia/NAND I/O 3 SmartMedia/NAND I/O 4 SmartMedia/NAND I/O 5 SmartMedia/NAND I/O 6 SmartMedia/NAND I/O 7 SmartMedia/NAND Ready/Busy SmartMedia/NAND Read Enable Strobe SmartMedia/NAND Spare Area Enable SmartMedia/NAND Write Enable Strobe SmartMedia/NAND Write Protect Table 496. External Memory Interface (SmartMedia/NAND) Pins 31.1.5. 100TQFP 95 94 93 92 91 90 General Purpose Input/Output Pins 144fpBGA J1 H2 H4 H3 G3 G4 PIN GP0 GP1 GP2 GP3 GP4 GP5 TYPE I/O I/O I/O I/O I/O I/O DESCRIPTION GP0B0 GP0B1 GP0B2 GP0B3 GP0B4 GP0B5 Table 497. General Purpose Input/Output Pins 384 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100TQFP 89 88 84 83 85 82 3 2 1 100 4 5 99 98 30 31 32 33 34 35 36 37 12 13 14 15 16 17 18 19 20 21 22 44 7 24 40 41 42 45 43 9 8 23 26 27 25 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 144fpBGA F3 F4 D1 D2 E1 E3 K4 L2 M2 L1 M3 L3 K2 J4 J10 H9 H12 H10 G10 G9 F11 F10 M5 L5 K6 L6 K7 J7 K8 J8 L9 L10 M10 D11 M4 K10 E12 E10 E11 D10 C11 L4 J5 M11 L11 K12 M12 K9 M9 M8 L8 M7 L7 J6 M6 K5 M1 E9 F12 F9 G12 G11 H11 J11 J12 PIN GP6 GP7 GP8 GP9 GP10 GP11 GP12 GP13 GP14 GP15 GP16 GP17 GP18 GP19 GP24 GP25 GP26 GP27 GP28 GP29 GP30 GP31 GP32 GP33 GP34 GP35 GP36 GP37 GP38 GP39 GP40 GP41 GP42 GP43 GP44 GP45 GP46 GP47 GP48 GP49 GP50 GP51 GP52 GP53 GP54 GP55 GP56 GP61 GP62 GP63 GP64 GP65 GP66 GP67 GP68 GP69 GP70 GP72 GP73 GP74 GP75 GP76 GP77 GP78 GP79 TYPE I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O DESCRIPTION GP0B6 GP0B7 GP0B8 GP0B9 GP0B10 GP0B11 GP0B12 GP0B13 GP0B14 GP0B15 (Do not use as GPIO if using SPI) GP0B16 GP0B17 GP0B18 GP0B19 GP1B0 GP1B1 GP1B2 GP1B3 GP1B4 GP1B5 GP1B6 GP1B7 GP1B8 GP1B9 GP1B10 GP1B11 GP1B12 GP1B13 GP1B14 GP1B15 GP1B16 GP1B17 GP1B18 GP1B19 GP1B20 GP1B21 GP1B22 GP1B23 GP2B0 GP2B1 GP2B2 GP2B3 GP2B4 GP2B5 GP2B6 GP2B7 GP2B8 GP2B13 GP2B14 GP2B15 GP2B16 GP2B17 GP2B18 GP2B19 GP2B20 GP2B21 GP2B22 GP3B0 GP3B1 GP3B2 GP3B3 GP3B4 GP3B5 GP3B6 GP3B7 Table 497. General Purpose Input/Output Pins (Continued) 5-35xx-D1-1.08-061705 385 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100TQFP NA NA NA NA NA NA NA NA NA NA NA NA NA NA 144fpBGA L12 K11 J9 B9 F2 G1 J3 H1 G2 F1 E2 K1 J2 K3 PIN TYPE I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O GP80 GP81 GP82 GP83 GP84 GP85 GP86 GP87 GP88 GP89 GP90 GP91 GP92 GP93 DESCRIPTION GP3B8 GP3B9 GP3B10 GP3B11 GP3B12 GP3B13 GP3B14 GP3B15 GP3B16 GP3B17 GP3B18 GP3B19 GP3B20 GP3B21 Table 497. General Purpose Input/Output Pins (Continued) 31.1.6. 100TQFP 4 5 I2C Interface Pins 144fpBGA M3 L3 PIN I2C_SCL I2C_SDA TYPE I/O I/O DESCRIPTION I2C Serial Clock I2C Serial Data Table 498. I2C Pins 31.1.7. 100TQFP 91 NA 95 NA 94 93 90 89 88 92 NA I2S Interface Pins 144fpBGA G3 K3 J1 J2 H2 H4 G4 F3 F4 H3 K1 PIN I2S_BCLK I2S_BCLK I2S_DataI0 I2S_DataI0 I2S_DataI1 I2S_DataI2 I2S_DataO0 I2S_DataO1 I2S_DataO2 I2S_WCLK I2S_WCLK TYPE I I I I I I O O O I I DESCRIPTION I2S Bit Clock I2S Bit Clock (Alternate pin) I2S Data In 0 I2S Data In 0 (Alternate pin) I2S Data In 1 I2S Data In 2 I2S Data Out 0 I2S Data Out 1 I2S Data Out 2 I2S Word Clock I2S Word Clock (Alternate pin) Table 499. I2S Pins 31.1.8. 100TQFP 56 73 61 39 11 86 64 29 96 NA NA 76 72 38 10 87 63 28 97 NA NA 78 Power Pins 144fpBGA D7 B2 B7 E8 H7 F6 D5 G8 G5 F7 E7 B1 B5 F8 G6 F5 C6 H8 H5 G7 E6 E5 PIN BATT VddA1 VddA2 VddD1 VddD2 VddD3 VddHP VddIO1 VddIO2 VddIO3 VddIO4 VddPLL VssA1 VssD1 VssD2 VssD3 VssHP VssIO1 VssIO2 VssIO3 VssIO4 VssPLL TYPE P P P P P P P P P P P P P P P P P P P P P P DESCRIPTION Battery Input Analog Power 1 Analog Power 2 Digital Core Power 1 Digital Core Power 2 Digital Core Power 3 Headphone Power Digital I/O Power 1 Digital I/O Power 2 Digital I/O Power 3 Digital I/O Power 4 PLL Power Analog Ground 1 Digital Core Ground 1 Digital Core Ground 2 Digital Core Ground 3 Headphone Ground Digital I/O Ground 1 Digital I/O Ground 2 Digital I/O Ground 3 Digital I/O Ground 4 PLL Ground Table 500. Power Pins 386 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 31.1.9. 100TQFP 12 13 14 15 16 17 18 19 20 21 22 NA NA NA NA NA NA NA NA NA 30 31 32 33 34 35 36 37 NA NA NA NA NA NA NA NA NA NA NA NA SDRAM Interface Pins 144fpBGA M5 L5 K6 L6 K7 J7 K8 J8 L9 L10 M10 L12 K11 J9 K9 M9 J3 F1 E2 G2 J10 H9 H12 H10 G10 G9 F11 F10 E9 F12 F9 G12 G11 H11 J11 J12 B9 F2 G1 H1 PIN RAM_A0 RAM_A1 RAM_A2 RAM_A3 RAM_A4 RAM_A5 RAM_A6 RAM_A7 RAM_A8 RAM_A9 RAM_A10 RAM_A11 RAM_BA0 RAM_BA1 RAM_A12 RAM_A13 RAM_CASn RAM_CKE RAM_CLK RAM_CSn RAM_D0 RAM_D1 RAM_D2 RAM_D3 RAM_D4 RAM_D5 RAM_D6 RAM_D7 RAM_D8 RAM_D9 RAM_D10 RAM_D11 RAM_D12 RAM_D13 RAM_D14 RAM_D15 RAM_DQM0 RAM_DQM1 RAM_RASn RAM_WEn TYPE O O O O O O O O O O O O O O O O O O O O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O O O O O DESCRIPTION SDRAM Address 0 SDRAM Address 1 SDRAM Address 2 SDRAM Address 3 SDRAM Address 4 SDRAM Address 5 SDRAM Address 6 SDRAM Address 7 SDRAM Address 8 SDRAM Address 9 SDRAM Address 10 SDRAM Address 11 SDRAM Bank Address 0 SDRAM Bank Address 1 SDRAM Address 12 SDRAM Address 13 SDRAM CASn SDRAM CKE SDRAM Clock SDRAM CSn SDRAM Data 0 SDRAM Data 1 SDRAM Data 2 SDRAM Data 3 SDRAM Data 4 SDRAM Data 5 SDRAM Data 6 SDRAM Data 7 SDRAM Data 8 SDRAM Data 9 SDRAM Data 10 SDRAM Data 11 SDRAM Data 12 SDRAM Data 13 SDRAM Data 14 SDRAM Data 15 SDRAM DQM0 SDRAM DQM1 SDRAM RASn SDRAM WEn Table 501. SDRAM Pins 31.1.10. SPI Pins 100TQFP 2 1 3 100 144fpBGA L2 M2 K4 L1 PIN SPI_MISO SPI_MOSI SPI_SCK SPI_SSn TYPE I/O I/O I/O I DESCRIPTION SPI Master Input/Slave Output SPI Master Output/Slave Input SPI Serial Clock SPI Slave Select Table 502. SPI Pins 31.1.11. System Pins 100TQFP 79 144fpBGA D3 58 A8 60 C7 53 46 C9 B11 PIN FRESET TYPE A PSWITCH LRADC1 MIC_BIAS LRADC2 MIC_BIAS ONCE_DRn ONCE_DSI A A A A A I I DESCRIPTION Fast Reset, Fast Falling Edge (<15ns) Powers Down Device Power Switch Low Resolution ADC Input microphone bias Low Resolution ADC Input & Temp sensor bias alternate mic bias Debug Reset Debug Data In Table 503. System Pins 5-35xx-D1-1.08-061705 387 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 100TQFP 51 52 6 77 75 74 144fpBGA C10 D9 H6 E4 A1 A2 PIN ONCE_DSK ONCE_DSO TESTMODE VddXTAL XTALI XTALO TYPE O O I A A A DESCRIPTION Debug Clock Debug Data Out Test Mode Pin Power for XTAL oscillator (generated on-chip) Crystal In Crystal Out Table 503. System Pins (Continued) 31.1.12. Timer Pins 100TQFP 99 98 144fpBGA K2 J4 PIN TYPE I/O I/O TIO0 TIO1 DESCRIPTION Timer 0 Pin Timer 1 Pin Table 504. Timer Pins 31.1.13. Pulse Width Modulator Pins 100TQFP 99 98 83 88 144fpBGA K2 J4 D2 F4 PIN PWM0 PWM1 PWM2 PWM3 TYPE O O O O DESCRIPTION Pulse Width Modulator #0 Pulse Width Modulator #1 Pulse Width Modulator #2 Pulse Width Modulator #3 Table 505. PWM Pins 31.1.14. USB Pins 100TQFP 81 80 144fpBGA C1 C2 PIN USB_DM USB_DP TYPE A A DESCRIPTION USB Negative Data Line USB Positive Data Line Table 506. USB Pins TYPE MODULE DESCRIPTION CODEC Analog pins DCDC DCDC Converter pins EMC-CF External Memory Interface pins (CompactFlash) EMC-SM External Memory Interface pins (SmartMedia/NAND) GPIO General Purpose Input/Output pins I2C pins I2C I2S pins I2S POWER Power pins SDRAM SDRAM pins SPI SPI pins SYSTEM System pins TIMER Timer pins USB USB pins PWM Pulse Width Modulator Almost all digital pins are powered down (i.e. high impedance) at reset, until reprogrammed by the DSP. The only exceptions are: TESTMODE, ONCE_DSI, ONCE_DSK, ONCE_DSO, ONCE_DRN; these pins are always active. A I I/O O P DESCRIPTION Analog pin Input pin Input/output pin Output pin Power pin Table 507. Notes on Pin Placement and Definitions 388 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 32. PACKAGE DRAWINGS 32.1. 100-Pin TQFP D D 1 BODY + 2.00 mm FOOTPRINT LEADS 100L-1.4 THK. L/F DIMS. .127 .152 TOL. A MAX. 1.60 A1 .05 MIN./.15 MAX. A2 1.40 ±.05 16.00 D ±.20 14.00 D1 ±.05 E 16.00 ±.20 14.00 E1 ±.05 .60 L +.15/-.10 e .50 BASIC b ±.05 .22 O 0°-7D MAX. .08 ddd ccc MAX. .08 N 1 A E B E 1 D 12° TYP. A2 A e A1 12° TYP. ANOTHER VARIATION OF PIN 1 VISUAL AID N .20 RAD. TYP. NOTES: 1) ALL DIMENSIONS IN MM. 1 2) DIMENSIONS SHOWN ARE NOMINAL WITH TOL. AS INDICATED. 3) L/F: EFTEC 64T COPPER OR EQUIVALENT, 0.127 MM (.005") OR 0.15 MM (.006") THICK. 4) FOOT LENGTH "L" IS MEASURED AT GAGE PLANE, AT 0.25 ABOVE THE SEATING PLANE. .20 RAD. TYP. 6°P4° A STANDOFF A 1 .25 .17 MAX. O L b ddd M C A-B S D S SEATING PLANE C LEAD COPLANARITY 100 Pin 14x14 TQFP ccc C Figure 134. 100-Pin TQFP Package Drawing 5-35xx-D1-1.08-061705 389 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 32.2. 144-Pin fpBGA DEATIL B 0.10 -A- D 12 11 10 9 8 6 7 5 4 3 2 DIMENSIONAL REFERENCES 1 -B- A B C D E F G H J K L M (e) E2 E (E1) REF. MIN. NOR. MAX. A 1.25 1.35 1.45 A1 0.25 0.30 0.35 A2 0.65 0.70 0.75 10.00 10.20 D (D1) D2 9.80 10.00 10.20 E 9.80 10.00 10.20 8.80 BSC E1 BOTTOM VIEW TOP VIEW 8.80 BSC. D1 (e) D2 9.80 E2 9.80 10.00 10.20 b 0.35 0.40 0.45 0.35 c f DETAIL A NX b 0.15 s f 0.075 s A s 0.15 0.20 B s C 4 e SIDE VIEW C aaa bbb 0.25 ccc e 0.725 f 0.50 0.80 0.875 0.60 0.70 M 12 N 144 NOTES: DETAIL B 1. ALL DIMENSIONS ARE IN MILLIMETERS. 2. 'e' REPRESENTS THE BASIC SOLDER BALL GRID PITCH. ccc c bbb C -CA A2 DETAIL A C AND SYMBOL 'N' IS THE MAXIMUM ALLOWABLE NUMBER OF BALLS AFTER DEPOPULATING. 4. 'b' IS MEASURABLE AT THE MAXIMUM SOLDER BALL DIAMETER PARALLEL TO PRIMARY DAIUM -C- . 6 SEATING PLANE 5. DIMENSION 'aaa' IS MEASURED PARALLEL TO PRIMARY DATUM -C- . 6. PRIMARY DATUM -C- AND SEATING PLANE ARE DEFINED BY THE SPHERICAL CROWNS OF THE SOLDER BALLS. A1 aaa C 3. 'M' REPRESENTS THE BASIC SOLDER BALL MATRIX SIZE. 7. PACKAGE SURFACE SHALL BE MATTE FINISH CHARMILLES 24 TO 27. 5 8. PACKAGE CENTERING TO SUBSTRATE SHALL BE 0.0760 MM MAXIMUM FOR BOTH X AND Y DIRECTION RESPECTIVELY. 9. PACKAGE WARP SHALL BE 0.050MM MAXIMUM. 144 fpBGA (10 x 10 mm) 10. SUBSTRATE MATERIAL BASE IS BT RESIN. 11. THE OVERALLPACKAGE THICKNESS "A" ALREADY CONSIDERS COLLAPSE BALLS Figure 135. 144-Pin fpBGA Package Drawing 390 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 33. STMP35XX FAMILY MEMBER PART NUMBERS & ORDERING INFORMATION The STMP35xx family comprises a large set of parts targeted at specific applications and customers. The following table summarizes the family members and provides part numbers for order placement. Customers with prepaid royalties or other royalty arrangements for certain intellectual property items can order parts without the corresponding royalty fees included in the purchase price. At the moment, the only royalty options are for certain MP3 items, see www.mp3licensing.com. The letter N at the correct location in the part number signifies a part that does not have the royalty payment included in the purchase price. PART NUMBER ROYALTY STMP3502XXLANA6N No MP3 decode royalty STMP3502XXBANA6N PACKAGE 100 pin QFP 144 pin BGA STMP3503XXLANA6N No MP3 decode royalty STMP3503XXBANA6N 100 pin QFP 144 pin BGA STMP3505XXBANA6M STMP3505XXBANA6N STMP3505XXLANA6M STMP3505XXLANA6N STMP3506XXBANA6N STMP3506XXLANA6N MP3 decode royalty No MP3 decode royalty MP3 decode royalty No MP3 decode royalty No MP3 decode royalty No MP3 decode royalty 144 pin BGA STMP3510XXBANA6M STMP3510XXBANA6N STMP3510XXLANA6M STMP3510XXLANA6N STMP3520XXBANA6N STMP3520XXLANA6N MP3 decode royalty No MP3 decode royalty MP3 decode royalty No MP3 decode royalty No MP3 decode royalty No MP3 decode royalty 144 pin BGA STMP3550XXBANA6M STMP3550XXBANA6N STMP3550XXLANA6M STMP3560XXLANA6N STMP3560XXBANA6N STMP3560XXLANA6N MP3 decode royalty No MP3 decode royalty MP3 decode royalty No MP3 decode royalty No MP3 decode royalty No MP3 decode royalty 144 pin BGA 100 pin QFP 144 pin BGA 100 pin QFP 100 pin QFP 144 pin BGA 100 pin QFP 100 pin QFP 144 pin BGA 100 pin QFP DESCRIPTION Full Speed USB2.0 No Battery Charging No MP3 encode No Digital Rights Management/RTC No SDRAM Controller Full Speed USB 2.0 No Battery Charging No MP3 encode PD-DRM only No SDRAM Controller Full Speed USB 2.0 No Battery Charging No MP3 encode No SDRAM Controller Full Speed USB 2.0 No Battery Charging No SDRAM Controller High Speed USB 2.0 No Battery Charging No MP3 encode No SDRAM Controller High Speed USB 2.0 No Battery Charging No SDRAM Controller High Speed USB 2.0 Battery Charging No MP3 Encode SDRAM Controller High Speed USB 2.0 Battery Charging SDRAM Controller Table 508. STMP35xx Family Members In addition, SigmaTel also offers fully RoHS and WEEE compliant lead (Pb) free environmental packaging. All of the products listed above are also available in the environmental packaging. The part numbers for these packages are listed below. 5-35xx-D1-1.08-061705 391 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip Part Number STMP3502XXLAEA6N Royalty No MP3 decode royalty STMP3502XXBAEA6N STMP3503XXLAEA6N No MP3 decode royalty STMP3503XXBAEA6N STMP3505XXBAEA6M MP3 decode royalty STMP3505XXBAEA6N No MP3 decode royalty STMP3505XXLAEA6M MP3 decode royalty STMP3505XXLAEA6N No MP3 decode royalty STMP3506XXBAEA6N No MP3 decode royalty STMP3506XXLAEA6N No MP3 decode royalty STMP3510XXBAEA6M MP3 decode royalty STMP3510XXBAEA6N No MP3 decode royalty STMP3510XXLAEA6M MP3 decode royalty STMP3510XXLAEA6N No MP3 decode royalty STMP3520XXBAEA6N No MP3 decode royalty STMP3520XXLAEA6N No MP3 decode royalty STMP3550XXBAEA6M MP3 decode royalty STMP3550XXBAEA6N No MP3 decode royalty STMP3550XXLAEA6M MP3 decode royalty STMP3560XXLAEA6N No MP3 decode royalty STMP3560XXBAEA6N No MP3 decode royalty Package 100 pin Environmental QFP 144 pin Environmental BGA 100 pin Environmental QFP 144 pin Environmental BGA 144 pin Environmental BGA 100 pin Environmental QFP 144 pin Environmental BGA 100 pin Environmental QFP 144 pin Environmental BGA 100 pin Environmental QFP 144 pin Environmental BGA 100 pin Environmental QFP 144 pin Environmental BGA 100 pin Environmental QFP 144 pin Environmental BGA Description Full Speed USB 2.0 No Battery Charging No MP3 encode No Digital Rights Mangement/RTC No SDRAM Controller Full Speed USB 2.0 No Battery Charging No MP3 encode PD-DRM only No SDRAM Controller Full Speed USB 2.0 No Battery Charging No MP3 encode No SDRAM Controller Full Speed USB 2.0 No Battery Charging No SDRAM Controller High Speed USB 2.0 No Battery Charging No MP3 encode No SDRAM Controller High Speed USB 2.0 No Battery Charging No SDRAM Controller High Speed USB 2.0 Battery Charging No MP3 encode SDRAM Controller High Speed USB 2.0 Battery Charging SDRAM Controller Table 509. STMP35xx Family Members (Continued) 392 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip 34. INDEX OF REGISTERS HW_ADCBAR HW_ADCCPR HW_ADCCSR HW_ADCICR HW_ADCMR HW_ADCSRR HW_ADCWCR HW_BATT_CTRL HW_BATT_RESULT HW_BATT_THRSH HW_CCR HW_CYCSTLCNT HW_DACBAR HW_DACCPR HW_DACCSR HW_DACICR HW_DACMR HW_DACSRR HW_DACWCR HW_DCDC_PERSIST HW_DCDC_VDDA HW_DCDC_VDDD HW_DCDC_VDDIO HW_DCDC1_CTRL0 HW_DCDC1_CTRL1 HW_DCDC2_CTRL0 HW_DCDC2_CTRL1 HW_DCDCTBR HW_DCLKCNTL HW_DCLKCNTU HW_ECC_BLKSTRTADDR HW_ECC_BLKSTRTINDEX HW_ECC_CSR0 HW_ECC_CSR1 HW_ECC_ERRVAL HW_ECC_LOCADDR HW_ECC_LOCINDEX HW_ECC_PARSTRTADDR HW_ECC_PARSTRTINDEX HW_ECC_RSCFG HW_ECC_SSFDCCFG HW_ESPI_ADDR HW_ESPI_CLKCNTRL HW_ESPI_CNFG HW_ESPI_CSR HW_ESPI_INDEX HW_ESPI_PIODATA HW_FILCO_ CTXT_S0 HW_FILCO_ CTXT_S1 HW_FILCO_ CTXT_S2 HW_FILCO_ CTXT_S3 HW_FILCO_ CTXT_S4 HW_FILCO_ CTXT_S5 HW_FILCO_ CTXT_SW HW_FILCO_CBAR HW_FILCO_CCPR HW_FILCO_CSR HW_FILCO_CTXT_A0R HW_FILCO_CTXT_A1R HW_FILCO_CTXT_A2R 5-35xx-D1-1.08-061705 X:$FB05 ................................................................................288 X:$FB03 ................................................................................289 X:$FB00 ................................................................................296 X:$FB06 ................................................................................290 X:$FB04 ................................................................................288 X:$FB01 ................................................................................290 X:$FB02 ................................................................................290 X:$FA20 ................................................................................319 X:$FA22 ................................................................................321 X:$FA21 ................................................................................321 X:$FA00 ..................................................................................43 X:$FFEC .................................................................................42 X:$F805 ................................................................................278 X:$F803 ................................................................................279 X:$F800 ................................................................................284 X:$F806 ................................................................................280 X:$F804 ................................................................................278 X:$F801 ................................................................................280 X:$F802 ................................................................................279 X:$FA1B ................................................................................365 X:$FA10 ................................................................................360 X:$FA0F ................................................................................359 X:$FA0E ................................................................................358 X:$FA0C ...............................................................................353 X:$FA0D ...............................................................................355 X:$FA11 ................................................................................356 X:$FA12 ................................................................................357 X:$FA14 ................................................................................363 X:$FFEA .................................................................................41 X:$FFEB .................................................................................41 X:$F784 ................................................................................148 X:$F785 ................................................................................149 X:$F780 ................................................................................145 X:$F781 ................................................................................147 X:$F78A ................................................................................152 X:$F788 ................................................................................150 X:$F789 ................................................................................151 X:$F786 ................................................................................149 X:$F787 ................................................................................150 X:$F782 ................................................................................146 X:$F783 ................................................................................148 X:$FF04 ................................................................................215 X:$FF02 ................................................................................214 X:$FF01 ................................................................................213 X:$FF00 ................................................................................212 X:$FF05 ................................................................................215 X:$FF03 ................................................................................214 X:$FC25 ................................................................................181 X:$FC26 ................................................................................181 X:$FC27 ................................................................................182 X:$FC28 ................................................................................182 X:$FC29 ................................................................................183 X:$FC2A ...............................................................................183 X:$FC24 ................................................................................180 X:$FC02 ................................................................................168 X:$FC04 ................................................................................169 X:$FC00 ................................................................................167 X:$FC20 ................................................................................179 X:$FC21 ................................................................................179 X:$FC22 ................................................................................180 393 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_FILCO_CTXT_A3R HW_FILCO_CTXT_WP HW_FILCO_DBAR HW_FILCO_DCPR HW_FILCO_DMR HW_FILCO_IIRGAIN HW_FILCO_INTR HW_FILCO_KICK HW_FILCO_SAT HW_FILCO_SBAR HW_FILCO_SCPR HW_FILCO_SMR HW_FILCO_SPARE HW_FILCO_TAPCNT HW_FILCO_TPTR HW_FILCO_UGAIN HW_FILCO_WORDCOUNT HW_FILCO_ZC_GAIN HW_FILCO_ZC_STATUS HW_FLCFCR HW_FLCFTMR1R HW_FLCFTMR2R HW_FLCR HW_FLCR2 HW_FLSAHR HW_FLSALR HW_FLSMCR HW_FLSMTMR1R HW_FLSMTMR2R HW_GDBR HW_GP08MA HW_GP0DIR HW_GP0DOER HW_GP0DOR HW_GP0ENR HW_GP0IENR HW_GP0ILVLR HW_GP0IPENR HW_GP0IPOLR HW_GP0ISTATR HW_GP0PWR HW_GP18MA HW_GP1DIR HW_GP1DOER HW_GP1DOR HW_GP1ENR HW_GP1IENR HW_GP1ILVLR HW_GP1IPENR HW_GP1IPOLR HW_GP1ISTATR HW_GP1PWR HW_GP28MA HW_GP2DIR HW_GP2DOER HW_GP2DOR HW_GP2ENR HW_GP2IENR HW_GP2ILVLR HW_GP2IPENR HW_GP2IPOLR HW_GP2ISTATR HW_GP2PWR 394 X:$FC23 ................................................................................180 X:$FC2B ...............................................................................183 X:$FC0D ...............................................................................171 X:$FC0F ................................................................................173 X:$FC0E ...............................................................................172 X:$FC18 ................................................................................176 X:$FC0B ...............................................................................170 X:$FC0C ...............................................................................171 X:$FC01 ................................................................................168 X:$FC10 ................................................................................173 X:$FC12 ................................................................................174 X:$FC11 ................................................................................174 X:$FC05 ................................................................................170 X:$FC03 ................................................................................169 X:$FC13 ................................................................................174 X:$FC17 ................................................................................175 X:$FC1B ...............................................................................176 X:$FC1D ...............................................................................178 X:$FC1C ...............................................................................177 X:$F008 ................................................................................115 X:$F009 ................................................................................116 X:$F00A ................................................................................116 X:$F000 ................................................................................105 X:$F004 ................................................................................106 X:$F002 ................................................................................107 X:$F001 ................................................................................106 X:$F010 ................................................................................112 X:$F011 ................................................................................113 X:$F012 ................................................................................113 X:$FFFC .................................................................................28 X:$F40A ................................................................................272 X:$F402 ................................................................................268 X:$F403 ................................................................................268 X:$F401 ................................................................................268 X:$F400 ................................................................................268 X:$F405 ................................................................................269 X:$F406 ................................................................................269 X:$F404 ................................................................................269 X:$F407 ................................................................................270 X:$F408 ................................................................................270 X:$F409 ................................................................................270 X:$F41A ................................................................................272 X:$F412 ................................................................................268 X:$F413 ................................................................................268 X:$F411 ................................................................................268 X:$F410 ................................................................................268 X:$F415 ................................................................................269 X:$F416 ................................................................................269 X:$F414 ................................................................................269 X:$F417 ................................................................................270 X:$F418 ................................................................................270 X:$F419 ................................................................................270 X:$F42A ................................................................................272 X:$F422 ................................................................................268 X:$F423 ................................................................................268 X:$F421 ................................................................................268 X:$F420 ................................................................................268 X:$F425 ................................................................................269 X:$F426 ................................................................................269 X:$F424 ................................................................................269 X:$F427 ................................................................................270 X:$F428 ................................................................................270 X:$F429 ................................................................................270 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_GP38MA HW_GP3DIR HW_GP3DOER HW_GP3DOR HW_GP3ENR HW_GP3IENR HW_GP3ILVLR HW_GP3IPENR HW_GP3IPOLR HW_GP3ISTATR HW_GP3PWR HW_GPFLASH_CSR0R HW_GPFLASH_CSR1 HW_GPFLASH_DEBUG HW_GPFLASH_DMA_ADDR HW_GPFLASH_TIMING1 HW_GPFLASH_TIMING2 HW_GPFLASH_TIMINGBUSY HW_GPFLASH_TWTOCNT HW_GPFLASH_XFER_SIZE HW_HPCTRL HW_I2CCSR HW_I2CDAT HW_I2CDIV HW_ICLENABLE0R HW_ICLENABLE1R HW_ICLFENABLE0R HW_ICLFENABLE1R HW_ICLFORCE0R HW_ICLFORCE1R HW_ICLOBSVZ0R HW_ICLOBSVZ1R HW_ICLPRIOR0R HW_ICLPRIOR1R HW_ICLPRIOR2R HW_ICLPRIOR3R HW_ICLPRIOR4R HW_ICLSTATUS0R HW_ICLSTATUS1R HW_ICLSTEER0R HW_ICLSTEER1R HW_ICLSTEER2R HW_IPR HW_LRADC1_CTRL HW_LRADC1_RESULT HW_LRADC1_THRSH HW_LRADC2_CTRL HW_LRADC2_RESULT HW_LRADC2_THRSH HW_MIX_TEST HW_MIXADCGAINR HW_MIXDACINVR HW_MIXLINE1INVR HW_MIXLINE2INVR HW_MIXMASTERVR HW_MIXMICINVR HW_MIXPWRDNR HW_MIXRECSELR HW_MIXTBR HW_OMR HW_PIN_CTRL HW_PWM_CH0AR 5-35xx-D1-1.08-061705 X:$F43A ................................................................................272 X:$F432 ................................................................................268 X:$F433 ................................................................................268 X:$F431 ................................................................................268 X:$F430 ................................................................................268 X:$F435 ................................................................................269 X:$F436 ................................................................................269 X:$F434 ................................................................................269 X:$F437 ................................................................................270 X:$F438 ................................................................................270 X:$F439 ................................................................................271 X:$F0C0 ................................................................................126 X:$F0C1 ................................................................................128 X:$F0C7 ................................................................................133 X:$F0C2 ................................................................................129 X:$F0C4 ................................................................................130 X:$F0C5 ................................................................................131 X:$F0C6 ................................................................................132 X:$F0C8 ................................................................................133 X:$F0C3 ................................................................................130 X:$FA15 ................................................................................310 X:$FFE7 ................................................................................197 X:$FFE6 ................................................................................200 X:$FFE5 ................................................................................201 X:$F300 ..................................................................................53 X:$F301 ..................................................................................53 X:$F30D ..................................................................................58 X:$F30E ..................................................................................58 X:$F30B ..................................................................................58 X:$F30C ..................................................................................58 X:$F30F ..................................................................................59 X:$F310 ..................................................................................59 X:$F304 ..................................................................................54 X:$F305 ..................................................................................54 X:$F306 ..................................................................................54 X:$F307 ..................................................................................55 X:$F311 ..................................................................................55 X:$F302 ..................................................................................53 X:$F303 ..................................................................................53 X:$F308 ..................................................................................55 X:$F309 ..................................................................................57 X:$F30A ..................................................................................57 X:$FFFF ..................................................................................49 X:$FA23 ................................................................................323 X:$FA25 ................................................................................325 X:$FA24 ................................................................................324 X:$FA26 ................................................................................326 X:$FA28 ................................................................................328 X:$FA27 ................................................................................327 X:$FA1C ...............................................................................308 X:$FA0A ................................................................................303 X:$FA08 ................................................................................302 X:$FA06 ................................................................................301 X:$FA07 ................................................................................302 X:$FA04 ................................................................................298 X:$FA05 ................................................................................299 X:$FA0B ................................................................................304 X:$FA09 ................................................................................302 X:$FA03 ................................................................................305 SPECIAL .................................................................................27 X:$FA30 ..................................................................................47 X:$FA32 ................................................................................189 395 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_PWM_CH0BR HW_PWM_CH1AR HW_PWM_CH1BR HW_PWM_CH2AR HW_PWM_CH2BR HW_PWM_CH3AR HW_PWM_CH3BR HW_PWM_CSR HW_PXCFG HW_PXRAM0_RPR HW_PXRAM1_RPR HW_PXRAM2_RPR HW_PYCFG HW_PYRAM0_RPR HW_PYRAM1_RPR HW_PYRAM2_RPR HW_RAM_ROM_CFG HW_RCR HW_REF_CTRL HW_REVR HW_RTC_ALARM0 HW_RTC_ALARM1 HW_RTC_CSR HW_RTC_DIVIDE HW_RTC_MSECONDS0 HW_RTC_MSECONDS1 HW_RTC_PERSISTENT0 HW_RTC_PERSISTENT1 HW_RTC_WATCHDOG HW_SAIR_CSR HW_SAIRX0R HW_SAIRX1R HW_SAIRX2R HW_SAITCSR HW_SAITX0R HW_SAITX1R HW_SAITX2R HW_SDRAM_ADDR1 HW_SDRAM_ADDR2 HW_SDRAM_BAR HW_SDRAM_CNT HW_SDRAM_CSR HW_SDRAM_MODE HW_SDRAM_MR HW_SDRAM_SIZE HW_SDRAM_SYSADDR HW_SDRAM_TIMER1 HW_SDRAM_TIMER2 HW_SDRAM_TYPE HW_SISPEED HW_SPARER HW_SPCSR HW_SPDR HW_SWIZZLE_BARRELR HW_SWIZZLE_BIGENDIANR HW_SWIZZLE_BITREVR HW_SWIZZLE_CS1R HW_SWIZZLE_CS2R HW_SWIZZLE_DATA1R HW_SWIZZLE_DATA2R HW_SWIZZLE_DESTADDRR HW_SWIZZLE_DIV3L HW_SWIZZLE_DIV3U 396 X:$FA33 ................................................................................190 X:$FA34 ................................................................................190 X:$FA35 ................................................................................192 X:$FA36 ................................................................................192 X:$FA37 ................................................................................193 X:$FA38 ................................................................................194 X:$FA39 ................................................................................194 X:$FA31 ................................................................................188 X:$FFE8 ..................................................................................30 X:$F5A3 ..................................................................................36 X:$F5A4 ..................................................................................36 X:$F5A5 ..................................................................................36 X:$FFE9 ..................................................................................31 X:$F5A6 .................................................................................. 37 X:$F5A7 .................................................................................. 37 X:$F5A8 .................................................................................. 37 X:$FFED .................................................................................35 X:$FA01 ..................................................................................39 X:$FA19 ................................................................................307 X:$FA02 ..................................................................................38 X:$F504 ................................................................................255 X:$F505 ................................................................................255 X:$F500 ................................................................................251 X:$F506 ................................................................................254 X:$F501 ................................................................................253 X:$F502 ................................................................................253 X:$F507 ................................................................................256 X:$F508 ................................................................................258 X:$F503 ................................................................................254 X:$FFF0 ................................................................................260 X:$FFF1 ................................................................................261 X:$FFF2 ................................................................................262 X:$FFF3 ................................................................................262 X:$FFF5 ................................................................................263 X:$FFF6 ................................................................................264 X:$FFF7 ................................................................................264 X:$FFF8 ................................................................................264 X:$F901 ................................................................................234 X:$F902 ................................................................................234 X:$F907 ................................................................................237 X:$F90D ................................................................................238 X:$F900 ................................................................................230 X:$F90E ................................................................................238 X:$F908 ................................................................................237 X:$F904 ................................................................................235 X:$F903 ................................................................................235 X:$F905 ................................................................................235 X:$F906 ................................................................................236 X:$F90F ................................................................................232 X:$FA13 ................................................................................361 X:$FA16 ..................................................................................46 X:$FFF9 ................................................................................217 X:$FFFA ................................................................................218 X:$F38F ................................................................................246 X:$F387 ................................................................................244 X:$F388 ................................................................................244 X:$F380 ................................................................................240 X:$F381 ................................................................................241 X:$F384 ................................................................................243 X:$F385 ................................................................................244 X:$F386 ................................................................................244 X:$F390 ................................................................................246 X:$F391 ................................................................................246 5-35xx-D1-1.08-061705 OFF ICIAL PRODUCT DO CUMENTATION 6/17/05 STMP35xx D-Major™Audio System on Chip HW_SWIZZLE_PASSISBR HW_SWIZZLE_PASSISWR HW_SWIZZLE_PASSLSBR HW_SWIZZLE_PASSLSWR HW_SWIZZLE_PASSMSBR HW_SWIZZLE_PASSMSWR HW_SWIZZLE_SIZER HW_SWIZZLE_SOURCER HW_TMR0CNTR HW_TMR0CSR HW_TMR1CNTR HW_TMR1CSR HW_TMR2CNTR HW_TMR2CSR HW_TMR3CNTR HW_TMR3CSR HW_USBARCACCESS HW_USBARCDATAHIGH HW_USBARCDATALOW HW_USBARCUNUSED HW_USBCSR HW_USBDMAOFF HW_USBLASERFUSE HW_USBPHYPLL HW_USBPHYPWD HW_USBPHYRX HW_USBPHYTX HW_USBREADTEST HW_USBSTATEMACHINES HW_USBUTCSR HW_USBUTMI1 HW_USBUTMI2 HW_USBUTMISENSE HW_VDD5V_PWR_CHARGE X:$F38A ................................................................................245 X:$F38D ................................................................................245 X:$F389 ................................................................................244 X:$F38C ................................................................................245 X:$F38B ................................................................................245 X:$F38E ................................................................................245 X:$F382 ................................................................................243 X:$F383 ................................................................................243 X:$F101 ................................................................................223 X:$F100 ................................................................................222 X:$F141 ................................................................................223 X:$F140 ................................................................................222 X:$F181 ................................................................................223 X:$F180 ................................................................................222 X:$F1C1 ................................................................................223 X:$F1C0 ................................................................................222 X:$F202 ..................................................................................71 X:$F204 ..................................................................................72 X:$F203 ..................................................................................72 X:$F20B ..................................................................................76 X:$F200 ..................................................................................69 X:$F201 ..................................................................................70 X:$F20C ..................................................................................77 X:$F212 ..................................................................................97 X:$F210 ..................................................................................93 X:$F213 ..................................................................................99 X:$F211 ..................................................................................95 X:$F209 ..................................................................................75 X:$F20A ..................................................................................76 X:$F205 ..................................................................................73 X:$F206 ..................................................................................73 X:$F207 ..................................................................................74 X:$F208 ..................................................................................75 X:$FA1D ..............................................................................367 MPEG Layer 3 audio coding technology from Fraunhofer IIS and THOMSON Multimedia. 5-35xx-D1-1.08-061705 397