Part Number Hot Search : 
F0350 6020162 SD103CWS CEF01N6 SZ603G P1000A HFA1110 KBP08M
Product Description
Full Text Search
 

To Download WM8961 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  w WM8961 ultra-low power stereo codec with 1w stereo class d speaker drivers and ground referenced headphone drivers wolfson microelectronics plc to receive regular email updates, sign up at http://www.wolfsonmicro.com/enews pre-production, august 2009, rev 3.1 copyright ? 2009 wolfson microelectronics plc description the WM8961 is a low power, high quality stereo codec designed for portable digital audio applications. an integrated charge pump provides a ground referenced output which removes the need for dc-blocking capacitors on the output, and uses the wolfson ?class-w? amplifier techniques - incorporating an innovative dual-mode charge pump architecture - to optimise efficiency and power consumption during playback. a dc servo is used to reduce dc ground offsets. this improves power consumption and minimises pops and clicks. stereo class d speaker drivers provide 1w per channel into 8 loads with a 5v supply. low leakage, excellent psrr and pop/click suppression mechanisms also allow direct battery connection to the speaker supply. flexible speaker boost settings allow speaker output power to be maximised while minimising other analogue supply currents. control sequences for audio path setup can be pre-loaded and executed by an integrated sequencer to reduce software driver development and eliminate pops and clicks via wolfson?s silentswitch? technology. flexible input configuration : a stereo input or two mono inputs on lch or rch adc, with a complete microphone interface. external component requirements are drastically reduced as no separate microphone, speaker or headphone amplifiers are required. advanced on-chip digital signal processing performs automatic level control for the microphone or line input. stereo 24-bit sigma-delta adcs and dacs are used with low power over-sampling digital interpolation and decimation filters and a flexible digital audio interface. the WM8961 operates at analogue supply voltages down to 1.71v, although the digital supplies can operate at voltages down to 1.62v to save power. the speaker supply can operate at up to 5.5v, providing 1w per channel into 8 loads. unused functions can be disabled using software control to save power. the WM8961 is supplied in a very small and thin 5x5mm qfn package, ideal for use in hand-held and portable systems. features ? dac snr 98db (?a? weighted), thd -83db at 48khz, 1.8v ? adc snr 88db (?a? weighted), thd -75db at 48khz, 1.8v ? stereo class d speaker driver - 1w per channel into 8 btl speakers. - flexible internal switching clock ? wolfson ?class-w? ultra-low power headphone driver - up to 22mw per channel output power at -80db thd+n into 16 at 1.8v - ground referenced - low offset (+/- 1.5mv) - pop and click suppression - control sequencer for pop-minimised start-up and shut-down - single register write for default start-up sequence ? microphone interface - single ended stereo input - integrated low noise micbias - programmable alc / limiter and noise gate ? low power consumption - 6.99mw headphone playback (1.8v supplies, low power mode) ? low supply voltages - analogue 1.71v to 2.0v (speaker supply up to 5.5v) - charge pump 1.71v to 2.0v - mic bias amp supply 1.71v to 3.6v - digital 1.62v to 2.0v ? 2-wire serial control interface including read-back ? sample rates: 8, 11.025, 12, 16, 22.05, 24, 32, 44.1, 48 ? 5x5x0.9mm 32 pin qfn package applications ? games consoles ? portable media / dvd players ? mobile multimedia
pre-production WM8961 w pp, august 2009, rev 3.1 2 block diagram
WM8961 pre-production w pp, august 2009, rev 3.1 3 table of contents block diagram ................................................................................................. 2 pin configuration ........................................................................................... 5 ordering information .................................................................................. 5 pin description ................................................................................................ 6 absolute maximum ratings......................................................................... 7 absolute maximum ratings......................................................................... 7 recommended operating conditions ..................................................... 7 electrical characteristics ...................................................................... 8 typical power consumption .................................................................... 12 common test conditions ................................................................................... 12 measurements ...................................................................................................... 12 signal timing requirements ..................................................................... 14 system clock timing ........................................................................................... 14 audio interface timing ? master mode......................................................... 14 audio interface timing ? slave mode ............................................................ 15 control interface timing ................................................................................. 16 internal power on reset circuit .................................................................. 17 device description ....................................................................................... 19 introduction ......................................................................................................... 19 control interface .............................................................................................. 20 input signal path ................................................................................................. 22 analogue to digital converter (adc) .......................................................... 26 automatic level control (alc) ....................................................................... 31 output signal path ............................................................................................. 35 analogue outputs ............................................................................................... 41 headphone playback modes ............................................................................ 46 input and output volume updates ................................................................ 51 dc servo .................................................................................................................. 53 charge pump .......................................................................................................... 56 digital audio interface ..................................................................................... 58 control write sequencer ............................................................................... 65 clocking and sample rates ............................................................................. 71 vmid generator .................................................................................................... 78 thermal shutdown and status ...................................................................... 79 chip device id ......................................................................................................... 80 chip software reset .......................................................................................... 80 register map .................................................................................................. 81 register bits by address .................................................................................. 83 digital filter characteristics ............................................................. 101 dac filter responses ....................................................................................... 102 adc filter responses ....................................................................................... 104 de-emphasis filter responses ...................................................................... 106 applications information ....................................................................... 107 recommended external components ........................................................ 107 speaker selection............................................................................................. 108 pcb layout considerations ........................................................................... 109 example configurations ................................................................................. 110
WM8961 pre-production w pp, august 2009, rev 3.1 4 package dimensions .................................................................................. 115 important notice ........................................................................................ 116 address ................................................................................................................. 116
WM8961 pre-production w pp, august 2009, rev 3.1 5 pin configuration ordering information order code temperature range package moisture sensitivity level peak soldering temperature WM8961gefl/v -40 c to +85 c 32-pin qfn (5x5x0.9mm) (pb-free) msl3 260c WM8961gefl/rv -40 c to +85 c 32-pin qfn (5x5x0.9mm) (pb-free, tape and reel) msl3 260c note: reel quantity = 3500
WM8961 pre-production w pp, august 2009, rev 3.1 6 pin description pin no name type description 1 vneg analogue output charge pump negative supply decoupling (powers hp_l, hp_r) 2 cfb2 analogue output charge pump fly-back capacitor pin 3 cfb1 analogue output charge pump fly-back capacitor pin 4 cpgnd supply charge pump ground (return path for cpvdd) 5 cpvdd supply charge pump power supply 6 micbias analogue output microphone bias 7 rinput analogue input right channel input 8 linput analogue input left channel input 9 micvdd supply microphone bias amp supply 10 dvdd supply digital core and buffer (i/o) supply 11 dgnd supply digital ground 12 bclk digital input / output audio interface bit clock 13 lrc digital input / output audio interface left / right clock 14 dacdat digital input dac digital audio data 15 mclk digital input master clock 16 adcdat digital output adc digital audio data 17 sclk digital input control interface clock input 18 sdin digital input/output control interface data input / 2-wire acknowledge output 19 spk_rn analogue output right speaker negative output 20 spkgnd2 supply ground for right speaker drivers 21 spkvdd2 supply supply for right speaker drivers 22 spk_rp analogue output right speaker positive output 23 spk_ln analogue output left speaker negative output 24 spkgnd1 supply ground for left speaker drivers 25 spk_lp analogue output left speaker positive output 26 spkvdd1 supply supply for left speaker drivers 27 vmid analogue output mid-rail voltage =avdd/2 (requires decoupling capacitor) 28 agnd supply analogue ground (return path for avdd) 29 avdd supply analogue supply 30 hp_r analogue output right output (line or headphone) 31 hp_l analogue output left output (line or headphone) 32 vpos analogue output charge pump positive supply decoupling (powers hp_l, hp_r) gnd_paddle die paddle (note 1) note: it is recommended that the qfn ground paddle should be connected to analogue ground on the application pcb. refer to the application note wan_0118 on ?guidelines on how to use qfn packages and create associated pcb footprints?
WM8961 pre-production w pp, august 2009, rev 3.1 7 absolute maximum ratings absolute maximum ratings are stress ratings only. permanent damage to the device may be caused by continuously operating at or beyond these limits. device functional operating limits and guaranteed performance specifications are given under electrical characteristics at the test conditions specified. esd sensitive device. this device is manufactured on a cmos process. it is therefore generically susceptible to damage from excessive static voltages. proper esd precautions must be taken during handling and storage of this device. wolfson tests its package types according to ipc/jedec j-std-020b for moisture sensitivity to determine acceptable storage conditions prior to surface mount assembly. these levels are: msl1 = unlimited floor life at <30 c / 85% relative humidity. not normally stored in moisture barrier bag. msl2 = out of bag storage for 1 year at <30 c / 60% relative humidity. supplied in moisture barrier bag. msl3 = out of bag storage for 168 hours at <30 c / 60% relative humidity. supplied in moisture barrier bag. the moisture sensitivity level for each package type is specified in ordering information. condition min max dvdd and avdd -0.3v +2.5v micvdd -0.3v +4.5v spkvdd1, spkvdd2 -0.3v +7.0v cpvdd -0.3v +2.2v voltage range digital inputs dgnd -0.3v dvdd +0.3v voltage range analogue inputs agnd -0.3v avdd +0.3v voltage range analogue outputs (hp_l, hp_r) -cpvdd-0.3v +cpvdd+0.3v temperature range, t a -40 c +85 c storage temperature after soldering -65 c +150 c notes 1. analogue, digital and speaker grounds must always be within 0.3v of each other. 2. all digital and analogue supplies are completely independent from each other (i.e. not internally connected). 3. dvdd must be less than or equal to avdd. 4. avdd must be less than or equal to micvdd. 5. avdd must be less than or equal to spkvdd1 and spkvdd2. 6. spkvdd1 and spkvdd2 must be high enough to support the peak output voltage when using acgain function, to avoid output waveform clipping. see the ?speaker output boost control? section. recommended operating conditions parameter symbol min typ max unit digital supply range dvdd 1.62 1.8v 2.0 v microphone bias supply range micvdd 1.71 2.5v 3.6 v analogue supplies range avdd 1.71 1.8v 2.0 v charge pump supply range (1.8v supply operation) cpvdd 1.71 1.8v 2.0 v speaker supply range spkvdd1, spkvdd2 2.7 5.0 5.5 v ground dgnd, agnd, cpgnd, spkgnd1, spkgnd2 0 v operating temperature -40 +25 +85 c
WM8961 pre-production w pp, august 2009, rev 3.1 8 electrical characteristics test conditions micvdd = 2.5v, dvdd = 1.8v, cpvdd=1.8v, avdd = 1.8v spkvdd1 = spkvdd2 = 5v, t a = +25 o c, 1khz signal, fs = 48khz, pga gain = 0db, 24-bit audio data unless otherwise stated. parameter symbol test conditions min typ max unit analogue inputs (linput, rinput) full-scale input signal level ? note this changes in proportion to avdd v infs l/rinput single-ended 500 -6.02 mvrms dbv mic pga equivalent input noise 20hz to 20khz, +24db gain 3 uv input resistance l/r input +24db pga gain 3.5 k l/r input 0db pga gain 28 k l/r input -23.25db pga gain 53 k input capacitance cin 10 pf mic programmable gain amplifier (pga) programmable gain input from l/rinput -23.25 24 db programmable gain step size guaranteed monotonic 0.75 db mute attenuation 85 db selectable input gain boost gain boost steps input from pga 0, 13, 20, 29 db analogue inputs (linput, rinput) to adc out signal to noise ratio (a-weighted) snr 80 88 db total harmonic distortion plus noise thd+n -1dbfs input -82 -75 db total harmonic distortion thd -1dbfs input -86 -75 db adc channel separation 1khz 97 db 10khz 97 db psrr 100mv(peak-peak) 1khz applied to avdd 60 db psrr 100mv(pea k -peak) 20khz applied to avdd 40 db channel matching 1khz signal +/-0.5 db dac to hp_l, hp_r (used as line output) with 10k / 50pf load: standard headphone playback mode full scale output voltage l/routvol = 0db 1.0 vrms signal to noise ratio (a-weighted) snr 87 97 db total harmonic distortion plus noise thd+n 10k load -78 -67 db total harmonic distortion thd 10k load -79 -68 db channel separation 1khz full scale signal 100 db 10khz full scale signal 85 psrr (avdd) 100mv(peak-peak) 1khz 60 db 100mv(peak-peak) 20khz 58 db dc offset dc servo is enabled -1.5 +1.5 mv
WM8961 pre-production w pp, august 2009, rev 3.1 9 test conditions micvdd = 2.5v, dvdd = 1.8v, cpvdd=1.8v, avdd = 1.8v spkvdd1 = spkvdd2 = 5v, t a = +25 o c, 1khz signal, fs = 48khz, pga gain = 0db, 24-bit audio data unless otherwise stated. parameter symbol test conditions min typ max unit dac to hp_l, hp_r (used as line output) with 10k / 50pf load: snr optimised headphone playback mode (see note 1) signal to noise ratio (a-weighted) snr 88 98 db total harmonic distortion plus noise thd+n 10k load -78 db total harmonic distortion thd 10k load -79 db dac to headphone output (hp_l, hp_r) with h eadphone load: standard headphone playback mode output power at 1% thd+n p o r l =32 26 mw r l =16 30 total harmonic distortion plus noise thd+n r l =32 , p o =2mw -79 0.011 db % r l =32 , p o =3.5mw -79 0.011 r l =32 , p o =12mw -78 0.012 -70 0.032 r l =16 , p o =2mw -81 0.0089 r l =16 , p o =22mw -80 0.01 total harmonic distortion thd r l =32 , p o =12mw -82 0.0079 db % r l =16 , p o =22mw -84 0.0063 db % noise level -87 -97 dbv dc offset dc servo is enabled -1.5 +1.5 mv channel separation 1khz full scale signal 90 db 10khz full scale signal 75 dac to headphone output (hp_l, hp_r) with headphone load: low power headphone playback mode total harmonic distortion plus noise thd+n rl=32 , po=12mw -77 0.014 db % rl=16 , po=22mw -79 0.011 noise level -97 dbv dac to headphone output (hp_l, hp_r) with headphone load: snr optimised playback mode (see note 1) total harmonic distortion plus noise thd+n rl=32 , po=12mw -81 0.0089 -70 0.032 db % rl=16 , po=22mw -82 0.0079 noise level -88 -98 dbv dac to speaker outputs (dac to spk_lp, spk_ln, spk_rp, spk_rn with stereo 8 bridge tied load) output power at 1% thd+n p o r l =8 , spkvdd=5v5 1.26 w total harmonic distortion plus noise thd+n p o =200mw, r l = 8 , spkvdd1=spkvdd2 =3.3v; avdd=1.8v -64 0.063 db % p o =320mw, r l = 8 , spkvdd1=spkvdd2 =3.3v; avdd=1.8v -72 0.025 db %
WM8961 pre-production w pp, august 2009, rev 3.1 10 test conditions micvdd = 2.5v, dvdd = 1.8v, cpvdd=1.8v, avdd = 1.8v spkvdd1 = spkvdd2 = 5v, t a = +25 o c, 1khz signal, fs = 48khz, pga gain = 0db, 24-bit audio data unless otherwise stated. parameter symbol test conditions min typ max unit p o =320mw, r l = 8 , spkvdd1=spkvdd2 =5v; avdd=1.8v -61 0.089 -50 0.32 db % p o =1w, r l = 8 , spkvdd1=spkvdd2 =5v; avdd=1.8v -58 0.13 -45 0.56 db % signal to noise ratio (a-weighted) (dac to speaker outputs) snr spkvdd1=spkvdd2 =3.3v; avdd=1.8v; r l = 8 , ref=2.0vrms 90 db spkvdd1=spkvdd2 =5v; avdd=1.8v; r l = 8 , ref=2.8vrms 82 92 db speaker supply leakage current i spkvdd spkvdd1=spkvdd2 =5v; all other supplies disconnected 1 5 ua spkvdd1=spkvdd2 =5v; all other supplies 0v 1 5 ua power supply rejection ratio (spkvdd1/spkvdd2) psrr 100mv(peak-peak) 217hz 75 db 100mv(peak-peak) 1khz 75 db spkl/rvol volume gain -68 6 db volume gain step size guaranteed monotonic 1 db mute attenuation 87 db l/routvol volume gain -68 6 db volume gain step size guaranteed monotonic 1 db mute attenuation 85 db analogue reference levels mid-rail reference voltage vmid ?3% avdd/2 +3% v microphone bias bias voltage (note that mbsel=1 only allowed if micvdd is greater than +2.40v ) v micbias micvdd=2.5v 2ma load current mbsel=1 -10% 7/6 avdd +10% v micvdd=2.5v 2ma load current mbsel=0 -10% 5/6 avdd +10% v power supply rejection ratio psrr 100mv ripple on micvdd @1khz, mbsel=1 68 db 100mv ripple on avdd @1khz, mbsel=1 51 bias current source i micbias 2 ma output noise spectral density @1khz vst 1khz, mbsel=1 85 nv/ hz charge pump charge pump switching frequency cpfreq 1 mhz flyback capacitor (between cfb1 and cfb2 pins) c fb at 2v 1 f
WM8961 pre-production w pp, august 2009, rev 3.1 11 test conditions micvdd = 2.5v, dvdd = 1.8v, cpvdd=1.8v, avdd = 1.8v spkvdd1 = spkvdd2 = 5v, t a = +25 o c, 1khz signal, fs = 48khz, pga gain = 0db, 24-bit audio data unless otherwise stated. parameter symbol test conditions min typ max unit vpos capacitor at 2v 2 f vneg capacitor at 2v 2 f charge pump start-up time 300 s digital input / output input high level v ih 0.7 dvdd v input low level v il 0.3 dvdd v output high level v oh i ol =1ma 0.9 dvdd v output low level v ol i oh =-3ma 0.1 dvdd v input capacitance 10 pf input leakage -0.9 0.9 a current consumption avdd i avdd off: device powered down using register writes, tsensen=0, all clocks stopped. 5 20 a dvdd i dvdd 3 20 a cpvdd i cpvdd 5 20 a spkvdd i spkvdd 1 10 a micvdd i micvdd 1 20 a note: 1. the measurement was made with hpl_vol//hpr_vol = 0db. normally, the recommended setting for snr optimised hp playback mode (see ?snr optimised mode?) includes -7db hpl_vol//hpr_vol setting, to give a further noise floor improvement.
WM8961 pre-production w pp, august 2009, rev 3.1 12 typical power consumption the WM8961 power consumption is dependent on many parameters. most significantly, it depends on supply voltages, sample rates, mode of operation, and output loading. the power consumption on each supply rail varies approximately with the square of the voltage. power consumption is greater at fast sample rates than at slower ones. when the digital audio interface is operating in master mode, the dvdd current is significantly greater than in slave mode. (note also that power savings can be made by using mclk as the bclk source in slave mode.) the output load conditions (impedance, capacitance and inductance) can also impact significantly on the device power consumption. common test conditions unless otherwise stated, the following test conditions apply throughout the following sections: ? ambient temperature = +25c ? audio signal = quiescent (zero amplitude) ? sample rate = 48khz ? mclk = 12.288mhz additional, variant test conditions are quoted within the relevant sections below. where applicable, power dissipated in the headphone or line loads is included. all measurements given in this section are typical and derived from evaluation. measurements stereo line record - linput1 and rinput1 pins to adc output. test conditions: linvol = rinvol = 011111b (0db) v ariant test conditions avdd dvdd spkvdd micvdd total (see note 1) v ma v ma v ma v ma mw 48khz sample rate, quiescent 1.8 7.08 1.8 1.8 5.0 0.001 2.5 0.001 16 48khz sample rate, quiescent, mbsel=1 1.8 7.08 1.8 1.8 5.0 0.001 2.5 0.258 16.7 48khz sample rate, -1dbfs input 1.8 7.12 1.8 1.8 5.0 0.001 2.5 0.001 16.1 8khz sample rate (256fs i.e. mclk = 2.048mhz) 1.8 6.85 1.8 0.30 5.0 0.001 2.5 0.001 12.9 note: 1. cpvdd consumed 0.004ma in all cases. stereo playback dac to headphones ? low power headphone playback with 16 ? load. test conditions cp_dyn_pwr[1:0] = 0b11 (dynamic control of charge pump power) 48khz sample rate v ariant test conditions avdd dvdd spkvdd cpvdd total v ma v ma v ma v ma mw quiescent 1.8 1.79 1.8 1.55 5.0 0.002 1.8 0.54 6.99 p o = 2mw/channel 1.8 1.79 1.8 1.57 5.0 0.002 1.8 18.0 38.2 p o = 16mw/channel 1.8 1.82 1.8 1.57 5.0 0.002 1.8 59.8 114
WM8961 pre-production w pp, august 2009, rev 3.1 13 stereo playback dac to headphones ? standard headphone playback with 16 ? load. test conditions 48khz sample rate v ariant test conditions avdd dvdd spkvdd cpvdd total v ma v ma v ma v ma mw quiescent 1.8 1.79 1.8 1.56 5.0 0.002 1.86 1.775 9.39 p o = 2mw/channel 1.8 1.79 1.8 1.57 5.0 0.002 1.8 22.46 46.5 p o = 16mw/channel 1.8 1.82 1.8 1.57 5.0 0.002 1.8 59.8 114 stereo playback dac to headphones ? snr optimised headphone playback with 16 ? load. test conditions 48khz sample rate v ariant test conditions avdd dvdd spkvdd cpvdd total v ma v ma v ma v ma mw quiescent 1.8 2.1 1.8 1.72 5.0 0.002 1.8 1.46 9.52 p o = 2mw/channel 1.8 2.12 1.8 1.73 5.0 0.002 1.8 22.4 47.25 p o = 16mw/channel 1.8 2.14 1.8 1.73 5.0 0.002 1.8 59.4 114 stereo playback to speaker - with 8.2 ? + 22uh load (see note 1). test conditions 48khz sample rate classd_acgain=111 (+12db) v ariant test conditions avdd dvdd spkvdd1+2 cpvdd total v ma v ma v ma v ma quiescent 1.8 2.418 1.8 1.385 5.0 1.16 1.8 0.004 12.65mw p o = 200mw/channel 1.8 2.438 1.8 1.525 5.0 102 1.8 0.004 517mw p o = 1w/channel 1.8 2.458 1.8 1.750 5.0 480 1.8 0.004 2.4w note: 1. the load inductance will affect the efficiency: the class d output is generally less efficient when driving a less inductiv e load.
WM8961 pre-production w pp, august 2009, rev 3.1 14 signal timing requirements system clock timing figure 1 system clock timing requirements test conditions micvdd=2.5v, dvdd = cpvdd=avdd =1.8v spkvdd1 = spkvdd2 = 5v, dgnd=agnd=cpgnd=spkgnd1=spkgnd2=0v, t a = +25 o c parameter symbol conditions min typ max unit system clock timing information mclk cycle time t mclky mclkdiv=1 40 ns mclkdiv=0 80 ns mclk duty cycle t mclkds 60:40 40:60 audio interface timing ? master mode figure 2 digital audio data timing ? master mode (see control interface) mclk t mclk y
WM8961 pre-production w pp, august 2009, rev 3.1 15 test conditions micvdd=2.5v, dvdd = cpvdd=avdd =1.8v spkvdd1 = spkvdd2 = 5v, dgnd=agnd=cpgnd=spkgnd1=spkgnd2=0v, t a =+25 o c, slave mode, fs=48khz, mclk=256fs, 24-bit data, unless otherwise stated. parameter symbol min typ max unit audio data input timing information lrc propagation delay from bclk falling edge t dl 10 ns adcdat propagation delay from bclk falling edge t dda 10 ns dacdat setup time to bclk rising edge t dst 10 ns dacdat hold time from bclk rising edge t dht 10 ns audio interface timing ? slave mode figure 3 digital audio data timing ? slave mode test conditions micvdd=2.5v, dvdd = cpvdd=avdd =1.8v spkvdd1 = spkvdd2 = 5v, dgnd=agnd=cpgnd=spkgnd1=spkgnd2=0v, t a =+25 o c, slave mode, fs=48khz, mclk= 256fs, 24-bit data, unless otherwise stated. parameter symbol min typ max unit audio data input timing information bclk cycle time t bcy 50 ns bclk pulse width high t bch 20 ns bclk pulse width low t bcl 20 ns lrc set-up time to bclk rising edge t lrsu 10 ns lrc hold time from bclk rising edge t lrh 10 ns dacdat hold time from bclk rising edge t dh 10 ns adcdat propagation delay from bclk falling edge t dd 10 ns dacdat set-up time to bclk rising edge t ds 10 ns note: bclk period should always be greater than or equal to mclk period.
WM8961 pre-production w pp, august 2009, rev 3.1 16 control interface timing the WM8961 is controlled via a 2-wire serial control interface. sdin sclk t 3 t 1 t 6 t 2 t 7 t 5 t 4 t 3 t 8 t 9 figure 4 2-wire serial control interface timing test conditions micvdd=2.5v, dvdd = cpvdd=avdd =1.8v spkvdd1 = spkvdd2 = 5v, dgnd=agnd=cpgnd=spkgnd1=spkgnd2=0v, t a =+25 o c, slave mode, fs=48khz, mclk = 256fs, 24-bit data, unless otherwise stated. parameter symbol min typ max unit program register input information sclk frequency 526 khz sclk low pulse-width t 1 1.3 us sclk high pulse-width t 2 600 ns hold time (start condition) t 3 600 ns setup time (start condition) t 4 600 ns data setup time t 5 100 ns sdin, sclk rise time t 6 300 ns sdin, sclk fall time t 7 300 ns setup time (stop condition) t 8 600 ns data hold time t 9 900 ns pulse width of spikes that will be suppressed t ps 0 5 ns note: device address = 0x94.
WM8961 pre-production w pp, august 2009, rev 3.1 17 internal power on reset circuit figure 5 internal power-on reset circuit schematic the WM8961 includes an internal power-on-reset circuit, as shown in figure 5, which is used to reset the digital logic into a default state after power up. the por circuit is powered from avdd and monitors dvdd. it asserts porb low if avdd or dvdd is below a minimum threshold. dvdd avdd v pord_on dgnd agnd internal por active lo hi device ready internal por active no power por undefined v pora_off v pora internal porb figure 6 typical power up sequence when avdd is applied before dvdd figure 6 shows a typical power-up sequence where avdd comes up first. when avdd goes above the minimum threshold, v pora , there is enough voltage for the circuit to guarantee porb is asserted low and the chip is held in reset. in this condition, all writes to the control interface are ignored. now avdd is at full supply level. next dvdd rises to v pord_on and porb is released high and all registers are in their default state and writes to the control interface may take place. on power down, where avdd falls first, porb is asserted low whenever avdd drops below the minimum threshold v pora_off .
WM8961 pre-production w pp, august 2009, rev 3.1 18 figure 7 typical power up sequence when dvdd is applied before avdd figure 7 shows a typical power-up sequence where dvdd comes up first. first it is assumed that dvdd is already up to specified operating voltage. when avdd goes above the minimum threshold, v pora , there is enough voltage for the circuit to guarantee porb is asserted low and the chip is held in reset. in this condition, all writes to the control interface are ignored. when avdd rises to v pora_on , porb is released high and all registers are in their default state and writes to the control interface may take place. on power down, where dvdd falls first, porb is asserted low whenever dvdd drops below the minimum threshold v pord_off . symbol min typ max unit v pora 0.5 v v pora_on 1.1 v v pora_off 1.1 v v pord_on 0.9 v v pord_off 0.65 v table 1 typical por operation notes: 1. if avdd and dvdd suffer a brown-out (i.e. drops below the minimum recommended operating level but do not go below v pora_off or v pord_off ) then the chip will not reset and will resume normal operation when the voltage is back to the recommended level again. 2. the chip will enter reset at power down when avdd or dvdd falls below v pora_off or v pord_off . this may be important if the supply is turned on and off frequently by a power management system. 3. the minimum t por period is maintained even if dvdd and avdd have zero rise time. this specification is guaranteed by design rather than test.
WM8961 pre-production w pp, august 2009, rev 3.1 19 device description introduction the WM8961 is a low power audio codec offering a combination of high quality audio, advanced features, low power and small size. these characteristics make it ideal for portable digital audio applications with stereo speaker and headphone outputs such as games consoles, portable media players and multimedia phones. a flexible input configuration supports a single-ended stereo microphone interface. a boost amplifier is available for additional gain on the microphone inputs. a programmable gain amplifier (pga) with an automatic level control (alc) function can be used to maintain a constant microphone recording volume. stereo class d speaker drivers can provide >1w per channel into 8 loads. btl configuration provides high power output and excellent psrr. highly flexible output speaker boost settings provide fully internal level-shifting of analogue output signals, allowing speaker output power to be maximised while minimising other analogue supply currents, and requiring no additional components. a dual mode (level shifting or inverting mode) charge pump generates split supplies for the headphone output amplifiers allowing these to be ground referenced. a dc servo to remove offsets from the headphone outputs, low leakage and a user controlled power- up/power-down control sequencer provides powerful pop and click suppression mechanisms which enable direct battery connection. these anti-pop/click mechanisms, and no requirement for any external dc blocking capacitors to the headphone, results in a reduced external component count and reduced power consumption in portable battery-powered applications. the hi-fi quality stereo adc and dac uses a 24-bit, low-order over-sampling architecture to deliver optimum performance. adc and dac operate at the same sample rate. the WM8961 has a configurable digital audio interface where adc data can be read and digital audio playback data fed to the dac. it supports a number of audio data formats including i 2 s, dsp mode (a burst mode in which frame sync plus two data packed words are transmitted), msb-first, left justified and msb-first, right justified, and can operate in master or slave modes. in pcm mode a-law and - law companding is supported. the sysclk (internal system clock) provides clocking for all internal functions. sysclk is derived directly from the mclk pin. all mclk frequencies typically used in portable systems are supported for sample rates between 8 khz and 48 khz. the adc and dac must be configured to operate at the same sample rate. a flexible switching clock for the class d speaker drivers (synchronous with the audio dsp clo cks for best performance) is also derived from sysclk. to allow full software control over all its features, the WM8961 uses a 2 wire serial control interface, with full read-back capability on all registers. it is fully compatible with, and an ideal partner to, a wide range of industry standard microprocessors, controllers and dsps. unused functions can be disabled via software to save power, while low leakage currents extend standby and off time in portable battery-powered applications.
WM8961 pre-production w pp, august 2009, rev 3.1 20 control interface the WM8961 is controlled by writing to registers through a 2-wire serial control interface. a control word consists of 24 bits. the first 8 bits (b23 to b16) are address bits that select which control register is accessed. the remaining 16 bits (b15 to b0) are data bits, corresponding to the 16 bits in each control register. many devices can be controlled by the same bus, and each device has a unique 7-bit address (this is not the same as the 8-bit address of each register in the WM8961). the default device address is 1001010x (0x94h). the WM8961 operates as a slave device only. the controller indicates the start of data transfer with a high to low transition on sdin while sclk remains high. this indicates that a device address and data will follow. all devices on the 2-wire bus respond to the start condition and shift in the next eight bits on sdin (7-bit address + read/write bit, msb first). if the device address received matches the address of the WM8961, then the WM8961 responds by pulling sdin low on the next clock pulse (ack). if the address is not recognised or the r/w bit is ?1? when operating in write only mode, the WM8961 returns to the idle condition and wait for a new start condition and valid address. by default, the WM8961 control interface requires an mclk to be present before register writes are supported. to access the control interface without an mclk, the user must set r8 (08h) clocking2 bit 5 (clk_sys_ena) =0. mclk is not required to write to clk_sys_ena. without mclk, and with clk_sys_ena=0, all registers can be updated and will maintain their settings, however any changes to functionality of the write sequencer, headphone pgas, and headphone output stage will not take effect until mclk is present. enabling mclk after the register writes to enable the headphone pga and headphone output stage may produce audible pops and clicks, hence is not recommended. the WM8961 supports several kinds of read and write operations, which are: ? single write ? single read ? multiple write using auto-increment ? multiple read using auto-increment auto-increment is enabled by default and can be disabled using the auto_inc bit as detailed in table 3. these modes are shown in the section below. terminology used in the following figures is as follows: terminology description s start condition sr repeated start a acknowledge p stop condition rw readnotwrite 0 = write 1 = read table 2 terminology
WM8961 pre-production w pp, august 2009, rev 3.1 21 figure 8 2-wire serial control interface (single write) rw device id sr a p msbyte data (1) lsbyte data a device id s a index (0) a rw a figure 9 2-wire serial control interface (single read) figure 10 2-wire serial control interface (multiple write using auto-increment) figure 11 2-wire serial control interface (multiple read using auto-increment) a write sequencer allows register write sequences to be stored in an area of memory on the WM8961 and then triggered by another register write. this allows complex sequences of updates to the WM8961 registers without the constant intervention of the processor. to use the write sequencer, an mclk must be present and clk_sys_ena=1. refer to section headed ?control write sequencer? for operation of the write sequencer. alert responses by default WM8961 does not respond to control interface alert response messages. this can be enabled by setting the ara_ena bit as detailed in table 3. register address bit label default description r252 (fch) general test 1 1 ara_ena 0 alert response address enable 0 : off 1 : on 0 auto_inc 1 enable auto-increment 0 : off 1 : on table 3 control interface settings
WM8961 pre-production w pp, august 2009, rev 3.1 22 input signal path the WM8961 has a flexible stereo analogue input channel which can be configured as line inputs or single-ended microphone inputs. the input signal path consists of an input volume control using a programmable gain amplifier (pga), followed by an input boost stage. the output of the boost stage drives a hi-fi stereo adc. this is shown in figure 12 figure 12 analogue input stage the input pgas and boost stage are enabled by the ainl and ainr register bits. register address bit label default description r25 (19h) power management (1) 5 ainl 0 left channel input pga and boost stage enable 0 = pga disabled, boost disabled 1 = pga enabled boost enabled 4 ainr 0 right channel input pga and boost stage enable 0 = pga disabled, boost disabled 1 = pga enabled boost enabled table 4 input pga and boost enable register settings input pga volume controls the gain of the microphone pgas can be manually configured, or automatically controlled using the alc / limiter. (refer to section headed automatic level control for more details). the input pga stage provide a general volume control for the linput and rinput microphone inputs and have a gain range from -23.25db to +24db in 0.75db steps. the gain of the pgas is controlled by the register bits linvol[5:0] and rinvol[5:0].
WM8961 pre-production w pp, august 2009, rev 3.1 23 when the automatic level control (alc) is enabled the input pga gains are controlled automatically and the linvol and rinvol bits should not be used. the left and right input pgas can be independently muted using the linmute and rinmute register bits. to allow simultaneous volume updates of left and right channels, pga gains are not altered until a 1 is written to the ipvu bit. to prevent "zipper noise", a zero-cross function is provided, so that when enabled, volume updates will not take place until a zero-crossing is detected. this can be enabled using the lizc and lizc register bits. these bits must be written as a separate register write, before the volume setting is applied. for example, to change the left and right volumes simultaneously, with zero cross enabled, the sequence would be as detailed in table 5. it is recommended to perform a calibration of the dc servo input channel before using the input pga zero cross detector. register value comment r0 (00h) left channel pga 0bxx1x_xxxx lizc = 1: enable left input pga zero cross detector r1 (01h) right channel pga 0bxx1x_xxxx rizc = 1: enable right input pga zero cross detector r0 (00h) left channel pga 0b001y_yyyy ipvu = 0; linmute = 0; lizc = 1; linvol [5:0] = 0by_yyyy: apply left input pga volume setting, keep zero cross enabled, store update. r1 (01h) right channel pga 0b101y_yyyy ipvu = 1; rinmute = 0; rlizc = 1; rinvol [5:0] = 0by_yyyy: apply right input pga volume setting, keep zero cross enabled, update left and right channel gains simultaneously. table 5 simultaneous volume update with zero cross in the event of a long period without zero-crossings, a timeout function is available. when this function is enabled (using the toen register bit), the volume will update automatically after a timeout. the timeout period is set by clk_to_div[2:0] note that sysclk must be running to use this function. register address bit label default description r0 (00h) left channel pga 8 ipvu 0 input pga volume update 0 = store linvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = linvol, right = intermediate latch) 7 linmute 1 left input pga analogue mute 1 = enable mute 0 = disable mute note: ipvu must be set to un- mute. 6 lizc 0 left input pga zero cross detector. requires separate register write before volume setting. 1 = change gain on zero cross only 0 = change gain immediately 5:0 linvol [5:0] 011111 ( 0db ) left input pga volume control 111111 = +24db 111110 = +23.25db . . 0.75db steps down to 000000 = -23.25db
WM8961 pre-production w pp, august 2009, rev 3.1 24 register address bit label default description r1 (01h) right channel pga 8 ipvu 0 input pga volume update 0 = store rinvol in intermediate latch (no gain change) 1 = update left and right channel gains (right = rinvol, left = intermediate latch) 7 rinmute 1 right input pga analogue mute 1 = enable mute 0 = disable mute note: ipvu must be set to un- mute. 6 rizc 0 right input pga zero cross detector. requires separate register write before volume setting. 1 = change gain on zero cross only 0 = change gain immediately 5:0 rinvol [5:0] 011111 ( 0db ) right input pga volume control 111111 = +24db 111110 = +23.25db . . 0.75db steps down to 000000 = -23.25db r23 (17h) additional control(1) 0 toen 0 timeout enable 0 = timeout disabled 1 = timeout enabled r30 (1eh) clocking 3 8:7 clk_to_div[1:0] 00 timeout/slow clock divider setting 00 : 125hz ( timeout = 8ms) 01 : 250hz ( timeout = 4ms) 10 : 500hz ( timeout = 2ms) 11 : 1khz ( timeout = 1ms) table 6 input pga volume control see "volume updates" section for a more detailed description of the volume update function, the zero cross function and the timeout operation input boost stage the output of the pga volume control stage is fed to the boost stage input. the input boost amplifier is a second order mfb active filter with selectable step gain. the boost stage provides the capability of adding large step gains to the output of the pga. the output of the boost stage feeds into the adc. to prevent large step outputs from the adc, the boost gain should only be set during initial configuration. the boost stage can provide up to +29db additional gain from the pga output to the adc input, providing a total maximum available analogue gain of +53db from microphone to adc. microphone pga to boost gain settings are shown in table 7.
WM8961 pre-production w pp, august 2009, rev 3.1 25 register address bit label default description r32 (20h) adcl signal path 5:4 lmicboost [1:0] 00 left channel input pga boost gain 00 = +0db 01 = +13db 10 = +20db 11 = +29db r33 (21h) adcr signal path 5:4 rmicboost [1:0] 00 right channel input pga boost gain 00 = +0db 01 = +13db 10 = +20db 11 = +29db table 7 microphone pga boost control the output of the boost stage drives the adc. microphone input connection example and microphone biasing the input pgas can be configured to use a single-ended input microphone. in the single ended microphone input configuration the microphone signal can be input to linput. an example of this is shown in figure 13 which also shows the microphone biasing. figure 13 single ended microphone configuration example microphone biasing circuit the micbias output pin provides a low noise reference voltage suitable for biasing electret type microphones and the associated external resistor biasing network. refer to the applications information section for recommended external components. the micbias voltage can be altered via the mbsel register bit. when mbsel=0, micbias=5/6 avdd and when mbsel=1, micbias=7/6 avdd. the output can be enabled or disabled using the micb control bit. (note that mbsel=1 only allowed if micvdd is greater than +2.40v) register address bit label default description r25 (19h) power management (1) 1 micb 0 microphone bias enable 0 = off (high impedance output) 1 = on r48 (30h) additional control (4) 0 mbsel 1 microphone bias voltage control 1 = 7/6 * avdd 0 = 5/6 * avdd table 8 microphone bias control
WM8961 pre-production w pp, august 2009, rev 3.1 26 the internal micbias circuitry is shown in figure 14 . the maximum source current capability for micbias is 2ma. the external biasing resistors therefore must be large enough to limit the micbias current to 2ma. figure 14 microphone bias schematic analogue to digital converter (adc) the WM8961 uses stereo 24-bit, 128x over-sampled sigma-delta adcs. the use of multi-bit feedback and high over-sampling rates reduce the effects of jitter and high frequency noise. the adc full scale input level is proportional to avdd. with a 1.8v supply voltage, the full scale level is 0.5v rm s . any voltage greater than full scale may overload the adc and cause distortion. the adcs are enabled by the adcl/r register bit. note that when disabling the adc, the digital volume control ladcvol/radcvol[7:0] (r21 (15h)) should be muted (set to 00h), before clearing adcl or adcr to 0. this ensures that the last adc code does not appear at the audio interface (adcdat) pin when adcl/r are cleared. register address bit label default description r25 (19h) power management (1) 3 adcl 0 enable adc left channel: 0 = adc disabled 1 = adc enabled 2 adcr 0 enable adc right channel: 0 = adc disabled 1 = adc enabled table 9 adc enable control adcdiv determines the adc operating clock. the output of adcdiv should be configured to output a clock of 256fs. the 256fs output of adcdiv is further divided such that the adc operates at 128fs.
WM8961 pre-production w pp, august 2009, rev 3.1 27 register address bit label default description r4 (04h) clocking1 8:6 adcdiv[2:0] 000 defines the adc 256fs clock, which is further divided by 2. 000 : 256fs = sysclk / 1.0 (default =12.288mhz, fs= 48 khz) 001 : reserved 010 : 256fs = sysclk / 2 011 : 256fs = sysclk / 3 100 : 256fs = sysclk / 4 101 : 256fs = sysclk / 5.5 110 : 256fs = sysclk / 6 111 : reserved the polarity of the output signal can be changed under software control using the adcpol[1:0] register bits. register address bit label default description r5 (05h) adc and dac control 1 6:5 adcpol[1:0] 00 adc data invert 00 : both channels normal polarity 01 : left channel inverted 10 : right channel inverted 11 : both channels inverted table 10 adc polarity select adc digital volume control the output of the adcs can be digitally amplified or attenuated over a range from -71.625db to +17.625db in 0.375db steps. the volume of each channel can be controlled separately. the gain for a given eight-bit code x is given by: 0.375 (x-192) db for 1 x 239; mute for x = 0 +17.625db for 239 x 255 the adcvu bit controls the loading of digital volume control data. when adcvu is set to 0, the ladcvol or radcvol control data will be loaded into the respective control register, but will not actually change the digital gain setting. both left and right gain settings are updated when a 1 is written to adcvu. this makes it possible to update the gain of both channels simultaneously.
WM8961 pre-production w pp, august 2009, rev 3.1 28 register address bit label default description r21 (15h) left adc digital volume 7:0 ladcvol [7:0] 1100_0000 ( 0db ) adc left channel digital volume. ffh -> efh: +17.625db eeh: +17.25db ?? in steps of -0.375db to c0h : 0db bfh : -0.375db beh: -0.75db ?.. in steps of -0.375db to 02h: -71.25db 01h: -71.625db 00h: digital mute (refer to table 12 ) 8 adcvu 0 adc volume update 0 = store ladcvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = ladcvol, right = intermediate latch) r22 (16h) right adc digital volume 7:0 radcvol [7:0] 1100_0000 ( 0db ) adc right channel digital volume. ffh -> efh: +17.625db eeh: +17.25db ?? in steps of -0.375db to c0h : 0db bfh : -0.375db beh: -0.75db ?.. in steps of -0.375db to 02h: -71.25db 01h: -71.625db 00h: digital mute (refer to table 12 ) 8 adcvu 0 adc volume update 0 = store radcvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = intermediate latch, right = radcvol) table 11 adc digital volume control table 12 shows all possible adc digital volume values.
WM8961 pre-production w pp, august 2009, rev 3.1 29 ladcvol or radcvol volume (db) ladcvol or radcvol volume (db) ladcvol or radcvol volume (db) ladcvol or radcvol volume (db) 0h mute 40h -48.000 80h -24.000 c0h 0.000 1h -71.625 41h -47.625 81h -23.625 c1h 0.375 2h -71.250 42h -47.250 82h -23.250 c2h 0.750 3h -70.875 43h -46.875 83h -22.875 c3h 1.125 4h -70.500 44h -46.500 84h -22.500 c4h 1.500 5h -70.125 45h -46.125 85h -22.125 c5h 1.875 6h -69.750 46h -45.750 86h -21.750 c6h 2.250 7h -69.375 47h -45.375 87h -21.375 c7h 2.625 8h -69.000 48h -45.000 88h -21.000 c8h 3.000 9h -68.625 49h -44.625 89h -20.625 c9h 3.375 ah -68.250 4ah -44.250 8ah -20.250 cah 3.750 bh -67.875 4bh -43.875 8bh -19.875 cbh 4.125 ch -67.500 4ch -43.500 8ch -19.500 cch 4.500 dh -67.125 4dh -43.125 8dh -19.125 cdh 4.875 eh -66.750 4eh -42.750 8eh -18.750 ceh 5.250 fh -66.375 4fh -42.375 8fh -18.375 cfh 5.625 10h -66.000 50h -42.000 90h -18.000 d0h 6.000 11h -65.625 51h -41.625 91h -17.625 d1h 6.375 12h -65.250 52h -41.250 92h -17.250 d2h 6.750 13h -64.875 53h -40.875 93h -16.875 d3h 7.125 14h -64.500 54h -40.500 94h -16.500 d4h 7.500 15h -64.125 55h -40.125 95h -16.125 d5h 7.875 16h -63.750 56h -39.750 96h -15.750 d6h 8.250 17h -63.375 57h -39.375 97h -15.375 d7h 8.625 18h -63.000 58h -39.000 98h -15.000 d8h 9.000 19h -62.625 59h -38.625 99h -14.625 d9h 9.375 1ah -62.250 5ah -38.250 9ah -14.250 dah 9.750 1bh -61.875 5bh -37.875 9bh -13.875 dbh 10.125 1ch -61.500 5ch -37.500 9ch -13.500 dch 10.500 1dh -61.125 5dh -37.125 9dh -13.125 ddh 10.875 1eh -60.750 5eh -36.750 9eh -12.750 deh 11.250 1fh -60.375 5fh -36.375 9fh -12.375 dfh 11.625 20h -60.000 60h -36.000 a0h -12.000 e0h 12.000 21h -59.625 61h -35.625 a1h -11.625 e1h 12.375 22h -59.250 62h -35.250 a2h -11.250 e2h 12.750 23h -58.875 63h -34.875 a3h -10.875 e3h 13.125 24h -58.500 64h -34.500 a4h -10.500 e4h 13.500 25h -58.125 65h -34.125 a5h -10.125 e5h 13.875 26h -57.750 66h -33.750 a6h -9.750 e6h 14.250 27h -57.375 67h -33.375 a7h -9.375 e7h 14.625 28h -57.000 68h -33.000 a8h -9.000 e8h 15.000 29h -56.625 69h -32.625 a9h -8.625 e9h 15.375 2ah -56.250 6ah -32.250 aah -8.250 eah 15.750 2bh -55.875 6bh -31.875 abh -7.875 ebh 16.125 2ch -55.500 6ch -31.500 ach -7.500 ech 16.500 2dh -55.125 6dh -31.125 adh -7.125 edh 16.875 2eh -54.750 6eh -30.750 aeh -6.750 eeh 17.250 2fh -54.375 6fh -30.375 afh -6.375 efh 17.625 30h -54.000 70h -30.000 b0h -6.000 f0h 17.625 31h -53.625 71h -29.625 b1h -5.625 f1h 17.625 32h -53.250 72h -29.250 b2h -5.250 f2h 17.625 33h -52.875 73h -28.875 b3h -4.875 f3h 17.625 34h -52.500 74h -28.500 b4h -4.500 f4h 17.625 35h -52.125 75h -28.125 b5h -4.125 f5h 17.625 36h -51.750 76h -27.750 b6h -3.750 f6h 17.625 37h -51.375 77h -27.375 b7h -3.375 f7h 17.625 38h -51.000 78h -27.000 b8h -3.000 f8h 17.625 39h -50.625 79h -26.625 b9h -2.625 f9h 17.625 3ah -50.250 7ah -26.250 bah -2.250 fah 17.625 3bh -49.875 7bh -25.875 bbh -1.875 fbh 17.625 3ch -49.500 7ch -25.500 bch -1.500 fch 17.625 3dh -49.125 7dh -25.125 bdh -1.125 fdh 17.625 3eh -48.750 7eh -24.750 beh -0.750 feh 17.625 3fh -48.375 7fh -24.375 bfh -0.375 ffh 17.625 table 12 adc digital volume range
WM8961 pre-production w pp, august 2009, rev 3.1 30 adc digital filters the adc filters perform true 24-bit signal processing to convert the raw multi-bit over-sampled data from the adc to the correct sampling frequency to be output on the digital audio interface. adc high pass filter a digital high pass filter is applied by default to the adc path to remove dc offsets. this filter can also be programmed to remove low frequency noise in voice applications (e.g. wind noise or mechanical vibration). this filter can be disabled using the adchpd register bit. the cut-off frequency of the filter is controlled by adc_hpf_cut. in hi-fi mode the high pass filter is optimised for removing dc offsets without degrading the bass response and has a cut-off frequency of 3.7hz at fs=44.1khz. in voice mode the high pass filter is optimised for voice communication and it is recommended to program the cut-off frequency below 300hz (e.g. adc_hpf_cut=11 at fs=8khz or adc_hpf_cut=10 at fs=16khz) register address bit label default description r5 (05h) adc and dac control (1) 0 adchpd 0 adc high pass filter disable 0 = enable high pass filter on left and right channels 1 = disable high pass filter on left and right channels r6 (06h) adc & dac control 2 8:7 adc_hpf_cut[ 1:0] 00 adc high pass filter cutoff 00: hi-fi mode (fc=4hz at fs=48khz) 01: voice mode 1 (fc=127 at fs=16khz) 10: voice mode 2 (fc=130 at fs=8khz) 11: voice mode 3 (fc=267hz at fs=8khz) (note: fc scales with sample rate. see table 14 for cut-off frequencies at all supported sample rates) table 13 adc high pass filter sample frequency (khz) cut-off frequency (hz) adc_hpf_cut =00 adc_hpf_cut =01 adc_hpf_cut =10 adc_hpf_cut =11 8.000 0.7 64 130 267 11.025 0.9 88 178 367 16.000 1.3 127 258 532 22.050 1.9 175 354 733 24.000 2.0 190 386 798 32.000 2.7 253 514 1063 44.100 3.7 348 707 1464 48.000 4.0 379 770 1594 table 14 adc high pass filter cut-off frequencies the high pass filter characteristics are shown in the ?digital filter characteristics? section.
WM8961 pre-production w pp, august 2009, rev 3.1 31 automatic level control (alc) the WM8961 has an automatic level control that aims to keep a constant recording volume irrespective of the input signal level. this is achieved by continuously adjusting the input pga gain so that the signal level at the adc input remains constant. a digital peak detector monitors the adc output and changes the pga gain if necessary. note that when the alc function is enabled, the settings of registers 0 and 1 (linvol, ipvu, lizc, linmute, rinvol, rizc and rinmute) are ignored. hold time decay time attack time input signal signal after alc pga gain alc target level figure 15 alc operation the alc function is enabled using the alcsel control bits. when enabled, the recording volume can be programmed between ?6db and ?28.5db (relative to adc full scale) using the alcl register bits. an upper limit for the pga gain can be imposed by setting the maxgain control bits. an lower limit for the pga gain can be imposed by setting the mingain control bits. hld, dcy and atk control the hold, decay and attack times, respectively: hold time is the time delay between the peak level detected being below target and the pga gain beginning to ramp up. it can be programmed in power-of-two (2 n ) steps, e.g. 2.67ms, 5.33ms, 10.67ms etc. up to 43.7s. alternatively, the hold time can also be set to zero. the hold time only applies to gain ramp-up; there is no delay before ramping the gain down when the signal level is above target. decay (gain ramp-up) time is the time that it takes for the pga gain to ramp up across 90% of its range (for example from ?21b up to 21.75db). the time it takes for the recording level to return to its target value therefore depends on both the decay time and on the gain adjustment required. if the gain adjustment is small, it will be shorter than the decay time. the decay time can be programmed in power-of-two (2 n ) steps, from 24ms, 48ms, 96ms, etc. to 24.58s. attack (gain ramp-down) time is the time that it takes for the pga gain to ramp down across 90% of its range (for example from 21.75db down to -21b gain). the time it takes for the recording level to return to its target value therefore depends on both the attack time and on the gain adjustment required. if the gain adjustment is small, it will be shorter than the attack time. the attack time can be programmed in power-of-two (2 n ) steps, from 6ms, 12ms, 24ms, etc. to 6.14s. when operating in stereo, the peak detector takes the maximum of left and right channel peak values, and any new gain setting is applied to both left and right pgas, so that the stereo image is preserved. the input pga and micboost gain settings should be identical when entering alc stereo mode in order for gain updates to be applied correctly. the alc function can also be enabled on one channel only. in this case, only one pga is controlled by the alc mechanism, while the other channel runs independently with its pga gain set through the control register. when one adc channel is unused, the peak detector disregards that channel.
WM8961 pre-production w pp, august 2009, rev 3.1 32 register address bit label default description r17 (11h) alc control (1) 8:7 alcsel [1:0] 00 (off) alc function select 00 = alc off (pga gain set by register) 01 = right channel only 10 = left channel only 11 = stereo (pga registers unused) note: ensure that linvol and rinvol settings (reg. 0 and 1) are the same before entering this mode. 6:4 maxgain [2:0] 111 (+24db) set maximum gain of pga 111 : +24db 110 : +18db ?.(-6db steps) 001 : -12db 000 : -18db 3:0 alcl [3:0] 1011 (-12db) alc target (sets signal level at adc input) 0000 = -28.5db fs 0001 = -27.0db fs ? (1.5db steps) 1110 = -7.5db fs 1111 = -6db fs r18 (12h) alc control (2) 6:4 mingain [2:0] 000 set minimum gain of pga 000 = -23.25db 001 = -17.25db 010 = -11.25db 011 = -5.25db 100 = +0.75db 101 = +6.75db 110 = +12.75db 111 = +18.75db 3:0 hld [3:0] 0000 (0ms) alc hold time before gain is increased. 0000 = 0ms 0001 = 2.67ms 0010 = 5.33ms ? (time doubles with every step) 1111 = 43.691s r19 (13h) alc control (3) 8 alcmode 0 determines the alc mode of operation: 0 = alc mode 1 = limiter mode alcsel[1:0] bits must be set to 00 before changing this bit. 7:4 dcy [3:0] 0011 (192ms) alc decay (gain ramp-up) time 0000 = 24ms 0001 = 48ms 0010 = 96ms ? (time doubles with every step) 1010 or higher = 24.58s
WM8961 pre-production w pp, august 2009, rev 3.1 33 register address bit label default description 3:0 atk [3:0] 0010 (24ms) alc attack (gain ramp-down) time 0000 = 6ms 0001 = 12ms 0010 = 24ms ? (time doubles with every step) 1010 or higher = 6.14s r27 (1bh) additional control (3) 2:0 sample_rate[2:0] 000 alc sample rate 000 = 44.1k / 48k 001 = 32k 010 = 22.05k / 24k 011 = 16k 100 = 11.25k / 12k 101 = 8k 110 and 111 = reserved table 15 alc control alc sample rate control the register bits r27[2:0],sample_rate must be set correctly to ensure that the alc attack, decay and hold times are correct for the chosen sample rate as shown in table 15. peak limiter to prevent clipping when a large signal occurs just after a period of quiet, the alc circuit includes a limiter function. if the adc input signal exceeds 87.5% of full scale (?1.16db), the pga gain is ramped down at the maximum attack rate (as when atk = 0000), until the signal level falls below 87.5% of full scale. this function is automatically enabled whenever the alc is enabled. note: if atk = 0000, then the limiter makes no difference to the operation of the alc. it is designed to prevent clipping when long attack times are used.
WM8961 pre-production w pp, august 2009, rev 3.1 34 noise gate when the signal is very quiet and consists mainly of noise, the alc function may cause ?noise pumping?, i.e. loud hissing noise during silence periods. the WM8961 has a noise gate function that prevents noise pumping by comparing the signal level at the input pins against a noise gate threshold, ngth. the noise gate cuts in when: signal level at adc [db] < ngth [db] + pga gain [db] + mic boost gain [db] this is equivalent to: signal level at input pin [db] < ngth [db] the pga gain can then either be muted or held constant (preventing it from ramping up as it normally would when the signal is quiet) using the ngg bit. the table below summarises the noise gate control register. the ngth control bits set the noise gate threshold with respect to the adc full-scale range. the threshold is adjusted in 1.5db steps. levels at the extremes of the range may cause inappropriate operation, so care should be taken with set?up of the function. note that the noise gate only works in conjunction with the alc function, and always operates on the same channel(s) as the alc (left, right, both, or none). register address bit label default description r20 (14h) noise gate control 7:3 ngth [4:0] 00000 noise gate threshold 00000 -76.5dbfs 00001 -75dbfs ? 1.5 db steps 11110 -31.5dbfs 11111 -30dbfs 1 ngg 0 noise gate mode 0 : hold pga gain static when noise gate triggers (recommended) 1 : mute adc output when noise gate triggers. 0 ngat 0 noise gate function enable 0 = disable 1 = enable table 16 noise gate control
WM8961 pre-production w pp, august 2009, rev 3.1 35 output signal path the WM8961 dacs receive digital input data from the dacdat pin of the aif and via the digital side- tone path. the digital filter block of the dacs process the data to provide the following functions: ? digital volume control with soft mute and soft un-mute ? mono mix ? de-emphasis ? sigma-delta modulation the analogue outputs from the dacs are fed to the analogue volume pga control. the output from the analogue volume control is routed to the output drivers for headphone and speaker output. this output stage is shown in figure 16. figure 16 dac output stage
WM8961 pre-production w pp, august 2009, rev 3.1 36 digital to analogue converter (dac) digital data is passed to the WM8961 via the flexible audio interface to the hi-fi dacs. the digital audio data is converted to over-sampled bit streams in the on-chip, true 24-bit digital interpolation filters. the bit-stream data enters two multi-bit, sigma-delta dacs, which convert them to high quality analogue audio signals. the multi-bit dac architecture reduces high frequency noise and sensitivity to clock jitter. it also uses a dynamic element matching technique for high linearity and low distortion. the dacs and digital filters are enabled by the dacl and dacr register bits. register address bit label default description r26 (1ah) power management (2) 8 dacl 0 left channel dac enable 0 = dac disabled 1 = dac enabled 7 dacr 0 right channel dac enable 0 = dac disabled 1 = dac enabled table 17 dac enable control dac digital volume control the output level (digital volume) of each dac can be controlled digitally over a range from -71.625db to 0db in 0.375db steps. the level of attenuation for an eight-bit code x is given by: 0.375 (x-192) db for 1 x 192; mute for x = 0 0db for 192 x 255 the dacvu bit controls the loading of digital volume control data. when dacvu is set to 0, the ldacvol or rdacvol control data will be loaded into the respective control register, but will not actually change the digital gain setting. both left and right gain settings are updated when a 1 is written to dacvu. this makes it possible to update the gain of both channels simultaneously. see "volume updates" section for a description of the volume update function, the zero cross function and the timeout operation. register address bit label default description r10 (0ah) left channel digital volume 8 dacvu 0 dac volume update 0 = store ldacvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = ldacvol, right = intermediate latch) 7:0 ldacvol [7:0] 11111111 ( 0db ) left dac digital volume control 0000 0000 = digital mute 0000 0001 = -71.625db 0000 0010 = -71.250db ... 0.375db steps up to 1100 0000 = 0db ?. 1111 1111 = 0db (see table 19 for volume range) r11 (0bh) right channel digital volume 8 dacvu 0 dac volume update 0 = store rdacvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = intermediate latch, right = rdacvol) 7:0 rdacvol [7:0] 11111111 ( 0db ) right dac digital volume control similar to ldacvol (see table 19 for volume range) table 18 digital volume control table 19 shows the dac digital volume range.
WM8961 pre-production w pp, august 2009, rev 3.1 37 ldacvol or rdacvol volume (db) ldacvol or rdacvol volume (db) ldacvol or rdacvol volume (db) ldacvol or rdacvol volume (db) 0h mute 40h -48.000 80h -24.000 c0h 0.000 1h -71.625 41h -47.625 81h -23.625 c1h 0.000 2h -71.250 42h -47.250 82h -23.250 c2h 0.000 3h -70.875 43h -46.875 83h -22.875 c3h 0.000 4h -70.500 44h -46.500 84h -22.500 c4h 0.000 5h -70.125 45h -46.125 85h -22.125 c5h 0.000 6h -69.750 46h -45.750 86h -21.750 c6h 0.000 7h -69.375 47h -45.375 87h -21.375 c7h 0.000 8h -69.000 48h -45.000 88h -21.000 c8h 0.000 9h -68.625 49h -44.625 89h -20.625 c9h 0.000 ah -68.250 4ah -44.250 8ah -20.250 cah 0.000 bh -67.875 4bh -43.875 8bh -19.875 cbh 0.000 ch -67.500 4ch -43.500 8ch -19.500 cch 0.000 dh -67.125 4dh -43.125 8dh -19.125 cdh 0.000 eh -66.750 4eh -42.750 8eh -18.750 ceh 0.000 fh -66.375 4fh -42.375 8fh -18.375 cfh 0.000 10h -66.000 50h -42.000 90h -18.000 d0h 0.000 11h -65.625 51h -41.625 91h -17.625 d1h 0.000 12h -65.250 52h -41.250 92h -17.250 d2h 0.000 13h -64.875 53h -40.875 93h -16.875 d3h 0.000 14h -64.500 54h -40.500 94h -16.500 d4h 0.000 15h -64.125 55h -40.125 95h -16.125 d5h 0.000 16h -63.750 56h -39.750 96h -15.750 d6h 0.000 17h -63.375 57h -39.375 97h -15.375 d7h 0.000 18h -63.000 58h -39.000 98h -15.000 d8h 0.000 19h -62.625 59h -38.625 99h -14.625 d9h 0.000 1ah -62.250 5ah -38.250 9ah -14.250 dah 0.000 1bh -61.875 5bh -37.875 9bh -13.875 dbh 0.000 1ch -61.500 5ch -37.500 9ch -13.500 dch 0.000 1dh -61.125 5dh -37.125 9dh -13.125 ddh 0.000 1eh -60.750 5eh -36.750 9eh -12.750 deh 0.000 1fh -60.375 5fh -36.375 9fh -12.375 dfh 0.000 20h -60.000 60h -36.000 a0h -12.000 e0h 0.000 21h -59.625 61h -35.625 a1h -11.625 e1h 0.000 22h -59.250 62h -35.250 a2h -11.250 e2h 0.000 23h -58.875 63h -34.875 a3h -10.875 e3h 0.000 24h -58.500 64h -34.500 a4h -10.500 e4h 0.000 25h -58.125 65h -34.125 a5h -10.125 e5h 0.000 26h -57.750 66h -33.750 a6h -9.750 e6h 0.000 27h -57.375 67h -33.375 a7h -9.375 e7h 0.000 28h -57.000 68h -33.000 a8h -9.000 e8h 0.000 29h -56.625 69h -32.625 a9h -8.625 e9h 0.000 2ah -56.250 6ah -32.250 aah -8.250 eah 0.000 2bh -55.875 6bh -31.875 abh -7.875 ebh 0.000 2ch -55.500 6ch -31.500 ach -7.500 ech 0.000 2dh -55.125 6dh -31.125 adh -7.125 edh 0.000 2eh -54.750 6eh -30.750 aeh -6.750 eeh 0.000 2fh -54.375 6fh -30.375 afh -6.375 efh 0.000 30h -54.000 70h -30.000 b0h -6.000 f0h 0.000 31h -53.625 71h -29.625 b1h -5.625 f1h 0.000 32h -53.250 72h -29.250 b2h -5.250 f2h 0.000 33h -52.875 73h -28.875 b3h -4.875 f3h 0.000 34h -52.500 74h -28.500 b4h -4.500 f4h 0.000 35h -52.125 75h -28.125 b5h -4.125 f5h 0.000 36h -51.750 76h -27.750 b6h -3.750 f6h 0.000 37h -51.375 77h -27.375 b7h -3.375 f7h 0.000 38h -51.000 78h -27.000 b8h -3.000 f8h 0.000 39h -50.625 79h -26.625 b9h -2.625 f9h 0.000 3ah -50.250 7ah -26.250 bah -2.250 fah 0.000 3bh -49.875 7bh -25.875 bbh -1.875 fbh 0.000 3ch -49.500 7ch -25.500 bch -1.500 fch 0.000 3dh -49.125 7dh -25.125 bdh -1.125 fdh 0.000 3eh -48.750 7eh -24.750 beh -0.750 feh 0.000 3fh -48.375 7fh -24.375 bfh -0.375 ffh 0.000 table 19 dac digital volume range
WM8961 pre-production w pp, august 2009, rev 3.1 38 dac soft mute and soft un-mute the WM8961 also has a soft mute function, which, when enabled, gradually attenuates the volume of the digital signal to zero. when soft mute is disabled, the gain will either gradually ramp back up to the digital gain setting, or return instantly to t he digital gain setting, depending on the dacsmm register bit. the dac is soft-muted by default. to play back an audio signal, this function must first be disabled by setting the dacmu bit to zero. dacsmm would typically be enabled when using soft mute during playback of audio data so that when soft mute is then disabled, the sudden volume increase will not create pop noise by jumping immediately to the previous volume level (e.g. resuming playback after pausing during a track). dacsmm would typically be disabled when un-muting at the start of a digital music file, so that the first part of the track is not attenuated (e.g. when starting playback of a new track, or resuming playback after pausing between tracks). dac muting and un-muting using volume control bits ldacvol and rdacvol. dac muting and un-muting using soft mute bit dacmu. soft un-mute not enabled (dacsmm = 0). dac muting and un-muting using soft mute bit dacmu. soft un-mute enabled (dacsmm = 1). figure 17 dac mute control the volume ramp rate during soft mute and un-mute is controlled by the dacmr bit. ramp rates of fs/32 and fs/2 are selectable as shown in table 20 (fs = dac sample rate). register address bit label default description r5 (05h) adc and dac control (1) 3 dacmu 1 digital soft mute 1 = mute 0 = no mute (signal active) r6 (06h) adc and dac control (2) 3 dacsmm 0 dac soft mute mode 0 = disabling soft-mute (dacmu=0) will cause the volume to change immediately to the ldacvol / rdacvol settings 1 = disabling soft-mute (dacmu=0) will cause the volume to ramp up gradually to the ldacvol / rdacvol settings 2 dacmr 0 dac soft mute ramp rate 0 = fast ramp (fs/2 at fs=48k, providing maximum delay of 10.7ms) 1 = slow ramp (fs/32 at fs=48k, providing maximum delay of 171ms)dac soft mute ramp rate table 20 dac soft-mute control
WM8961 pre-production w pp, august 2009, rev 3.1 39 dac de-emphasis digital de-emphasis can be applied to the dac playback data (e.g. when the data comes from a cd with pre-emphasis used in the recording). de-emphasis filtering is available for sample rates of 48khz, 44.1khz and 32khz. register address bit label default description r5 (05h) adc and dac control (1) 2:1 deemph [1:0] 00 de-emphasis control 11 = 48khz sample rate 10 = 44.1khz sample rate 01 = 32khz sample rate 00 = no de-emphasis table 21 dac de-emphasis control dac mono mix in normal operation, the left and right channel digital audio data is converted to analogue in two separate dacs. there is a mono-mix mode where the two audio channels are mixed together digitally and then converted to analogue using only one dac (enabled dac), while the other dac must be disabled. only one dac must be enabled in order to use this function. a dac digital mono-mix mode can be enabled using the dmonomix register bit. to prevent clipping, a -6db attenuation is automatically applied to the mono mix. register address bit label default description r23 (17h) additional control (1) 4 dmonomix 0 dac mono mix 0 = stereo 1 = mono (mono mix output on enabled dac) table 22 dac mono mix dac output phase the dac output defaults to be non-inverted. setting dacpol[0] bit will invert the left dac output phase and setting dacpol[1] bit will invert the right dac output phase. register address bit label default description r6 (06h) adc and dac control (2) 6:5 dacpol[1:0] 00 dac data invert 00 : both channels normal polarity 01 : left channel inverted 10 : right channel inverted 11 : both channels inverted table 23 dac phase invert select dac sloping stop-band filter two dac filter types are available, selected by the register bit dacslope. when operating at lower sample rates (e.g. during voice communication) it is recommended that the sloping stop-band filter type is selected (dacslope =1) to reduce out-of-band noise which can be audible at low dac sample rates. see "digital filter characteristics" section for details of dac filters characteristics. register address bit label default description r6 (06h) adc & dac control 2 1 dacslope 0 selects dac filter characteristics 0 = normal mode 1 = sloping stop-band mode table 24 dac sloping stop-band filter
WM8961 pre-production w pp, august 2009, rev 3.1 40 dac digital sidetone a digital sidetone from the adc is available at the dac. digital data from either left or right adc can be mixed with the audio interface data on the left and right dac channels. sidetone data is taken from the adc high pass filter output, to reduce low frequency noise which may be present in the sidetone (e.g. wind noise or mechanical vibration). when using the digital sidetone, it is recommended that the adcs are enabled before un-muting the dacs to prevent pop noise. the dac volumes and sidetone volumes should be set to an appropriate level to avoid clipping at the dac input. note that when the adc sidetone is used for the headphone output, and dynamic (class w) power saving is enabled (cp_dyn_pwr[1:0] = 0b11), the charge pump only monitors the dac input level rather than the adc sidetone level. an adc sidetone signal which is louder than the dac input signal could increase headphone output distortion because the charge pump settings are optimised for the quieter dac input signal. hence dynamic (class w) power saving is not recommended when the adc sidetone is louder than the dac input. see also the ?charge pump clocking? section. the digital sidetone is controlled as shown in table 25. register address bit label default description r57 (39h) dsp sidetone 0 7:4 adcr_dac_svol[3:0] 0000 controls volume of adc right side tone, 3db steps. 0000 : -36db 0001 : -33db ? 1111 : 0db (see table 26 ) 3:2 adc_to_dacr[1:0] 00 dac right side-tone control 11 = unused 10 = mix adcr into dacr 01 = mix adcl into dacr 00 = no side-tone mix into dacr r58 (3ah) dsp sidetone 1 7:4 adcl_dac_svol[3:0] 0000 controls volume of adc left side tone, 3db steps. 0000 : -36db 0001 : -33db ? 1111 : 0db (see table 26 ) 3:2 adc_to_dacl[1:0] 00 dac left side-tone control 11 = unused 10 = mix adcr into dacl 01 = mix adcl into dacl 00 = no side-tone mix into dacl table 25 digital sidetone control registers
WM8961 pre-production w pp, august 2009, rev 3.1 41 adcl_dac_svol or a dcr_dac_svol sidetone v olume 0000 -36 0001 -33 0010 -30 0011 -27 0100 -24 0101 -21 0110 -18 0111 -15 1000 -12 1001 -9 1010 -6 1011 -3 1100 0 1101 0 1110 0 1111 0 table 26 digital sidetone volume in db dac oversampling in order to increase the signal to noise ratio (snr) of the dac output, the dac_osr128 register bit can be used to increase the oversampling rate of the dac as shown in table 31. the manual_mode register bit is detailed in ?adc and dac clocking and sample rates?. there will be a slight increase in power consumption when 128osr mode is selected. register address bit label default description r6 (06h) adc & dac control 2 0 dac_osr128 0 dac 128 over sampling rate 0: 64x dac oversampling 1: if manual_mode=0, automatically configure dacdiv[2:0] for 128osr mode. this will give a snr improvement at the expense of power table 27 dac oversampling control analogue outputs WM8961 has 2 analogue output paths. one path drives a ground referenced headphone output which is powered by a charge pump. in this path, a dc servo is used to remove any offsets from the headphone outputs. the second path drives the class d speaker outputs. headphone outputs the headphone output consists of 2 stages, a volume pga, followed by an output drive stage containing an integrated pga, as illustrated in figure 18. the headphone output stage must be enabled during normal operation, which permits power saving when not in use. the headphone bias current can be controlled to improve snr. for details of the dc servo, refer to the ?dc servo? section.
WM8961 pre-production w pp, august 2009, rev 3.1 42 + - agnd + + vpos vneg + - agnd + + vpos vneg left headphone analog output stage right headphone analog output stage dc servo r61, dcs_ena_chan_hpl r61, dcs_ena_chan_hpr hpl_vol[2:0] hpr_vol[2:0] hp_l hp_r - + left headphone pga - + right headphone pga r2, lout1vol[6:0] r2, lout1vol[6:0] r26, lout1_pga r3, rout1vol[6:0] r3, rout1vol[6:0] r26, rout1_pga -73db to +6db, in steps of 1db -73db to +6db, in steps of 1db ldac rdac figure 18 headphone analogue output stage headphone volume pga the signal volume on hp_l and hp_r can be independently adjusted under software control by writing to lout1vol and rout1vol, respectively. note that gains over 0db may cause clipping if the signal is large. any gain setting below 0101111 (minimum) mutes the output driver. the lout1vol and rout1vol register writes should only be carried out after the charge pump has been enabled, see the ?charge pump? section for details. a zero cross detect on the analogue output may also be enabled when changing the gain setting to minimize audible clicks and zi pper noise as the gain updates. if zero cross is enabled a timeout is also available to update the gain if a zero cross does not occur. this function may be enabled by setting toen in register r23 (17h). the timeout period is set by clk_to_div[1:0]. the volume control pgas are enabled using lout1_pga and rout1_pga.
WM8961 pre-production w pp, august 2009, rev 3.1 43 register address bit label default description r2 (02h) lout1 volume 8 out1vu 0 headphone volume update 0 = store lout1vol in intermediate latch (no gain change) 1 = update left and right channel gains (left = lout1vol, right = intermediate latch) 7 lo1zc 0 left zero cross enable 0 = change gain immediately 1 = change gain on zero cross only 6:0 lout1vol [6:0] 0000000 (mute) lout1 volume 1111111 = +6db ? 1db steps down to 0110000 = -73db 0101111 to 0000000 = analogue mute r3 (03h) rout1 volume 8 out1vu 0 headphone volume update 0 = store rout1vol in intermediate latch (no gain change) 1 = update left and right channel gains (left = intermediate latch, right = rout1vol) 7 ro1zc 0 right zero cross enable 0 = change gain immediately 1 = change gain on zero cross only 6:0 rout1vol [6:0] 0000000 (mute) rout1 volume similar to lout1vol r26 (1ah) power management (2) 6 lout1_pga 0 lout1 left headphone pga output enable 5 rout1_pga 0 rout1 right headphone pga output enable table 28 headphone output pga volume control see "volume updates" section for a description of the volume update function, the zero cross function and the timeout operation. headphone output drive stage the headphone output drive stage is a stereo differential to single-ended amplifier. it is capable of driving 16 or 32 headphones without the need for large ac coupling capacitors, which is achieved by having separate positive and negative supplies, generated by a charge pump, detailed in the ?charge pump? section. it also permits power up and power down with minimised ?pop? operation through the use of a dc servo to null out any offset on the outputs. a secondary volume pga in the output drive stage permits an improvement in snr for applications that limit the maximum output voltage. this pga can be set to attenuate by up to 7db, as detailed in table 29. because the secondary volume pga controlled by hpl_vol[2:0] and hpr_vol[2:0] does not have a zero cross functionality, it is designed to be adjusted only during initialisation or periods of silence. for volume adjustments with a signal playing, it is recommended to use lout1vol and rout1vol.
WM8961 pre-production w pp, august 2009, rev 3.1 44 register address bit label default description r71 (47h) analogue hp 2 8:6 hpl_vol[2:0] 111 secondary hpl pga volume 111 0db (default) 110 -1db 101 -2db 100 -3db 011 -4db 010 -5db 001 -6db 000 -7db 5:3 hpr_vol[2:0] 111 secondary hpr pga volume 111 0db (default) 110 -1db 101 -2db 100 -3db 011 -4db 010 -5db 001 -6db 000 -7db table 29 headphone output drive volume control headphone output enable the staged enabling of the headphone outputs can be controlled using register r69. the hpl_ena and hpr_ena enable the headphone amplifiers. the hpl_ena_outp and hpr_ena_outp should be enabled following any offset cancellation by the dc servo. register address bit label default description r69 (45h) analogue hp 0 7 hpl_rmv_short 0 left channel output short removal: set after output stage has been enabled 6 hpl_ena_outp 0 enables left channel output stage; set after offset cancellation is done 5 hpl_ena_dly 0 delayed left channel enable, set with at least 20us delay to hpl_ena; reset together with hpl_ena 4 hpl_ena 0 enables left headphone amplifier channel 3 hpr_rmv_short 0 right channel output short removal: set after output stage has been enabled 2 hpr_ena_outp 0 enables right channel output stage; set after offset cancellation is done 1 hpr_ena_dly 0 delayed right channel enable, set with at least 20us delay to hpr_ena; reset together with hpr_ena 0 hpr_ena 0 enables right headphone amplifier channel table 30 headphone output enable control headphone output circuit it is recommended that the hp-l and hp_r is connected to a zobel network consisting of a 20 ? resistor (5% tolerance) and a 100nf capacitor (20% tolerance). this ensures the stability of the headphone output amplifier. this is also illustrated in figure 19.
WM8961 pre-production w pp, august 2009, rev 3.1 45 figure 19 recommended headphone output configuration headphone output bias boost in order to increase the signal to noise ratio (snr) of the headphone output, the hp_pgas_bias[2:0] and hp_bias_boost[2:0] register bits can be used to increase the bias current to the headphone output drive as shown in table 31. there will be a slight increase in power consumption when a bias boost greater than x1 is selected. register address bit label default description r68 (44h) analogue pga bias 2:0 hp_pgas_bia s[2:0] 011 headphone pga bias options 000 x 2 001 reserved 010 reserved 011 x 1 100-111 reserved r71 (47h) analogue hp 2 2:0 hp_bias_boo st[2:0] 011 boost bias into headphone driver 000: x2 001: reserved 010: reserved 011: x1 100-111 reserved table 31 headphone output bias boost
WM8961 pre-production w pp, august 2009, rev 3.1 46 headphone playback modes headphone playback can be optimised for lowest power or best snr, depending on the application requirements. standard mode headphone playback with the best compromise between performance and power consumption can be enabled using the default dac to headphone playback power on sequence as implemented at control write sequencer address 0, as detailed in ?control write sequencer?. low power mode headphone playback optimised for lower power consumption can be enabled. this results in a very slight reduction in headphone driver performance. the register setting listed in table 32 can be added to the power up sequence in order to implement this mode. note that this register setting must take place before the charge pump is enabled. see the ?charge pump? section. if the write sequencer is used to configure the dac to hp path, this register write must take place before the write sequencer is enabled and triggered. register address bits label setting description r82 (52h) charge pump b 1:0 cp_dyn_pwr[1:0] 11 enable dynamic (class w) power saving table 32 low power headphone playback snr optimised mode headphone playback optimised for best signal to noise ratio (snr) can be enabled, resulting in a slight increase in power consumption. the register settings listed in table 33 can be added at the start of the power up sequence in order to implement this mode. the lout1vol and rout1vol settings may require adjustment due to the additional attenuation of hpl_vol[2:0] and hpr_vol[2:0]. to partly offset the increase in power consumption due to selecting ?snr optimised mode?, it is recommended to select dynamic (classs w) power saving) using cp_dyn_pwr=11. this saves power but only slightly impacts thd + noise performance. register address bits label setting description r30 (1eh) clocking 3 0 manual_mode 0 automatic configuration of system clock dividers. excludes master mode audio interface clocks. r6 (06h) adc & dac control 2 0 dac_osr128 1 automatically configure dacdiv[2:0] for 128osr mode. this will give a snr improvement at the expense of power r71 (47h) analogue hp 2 8:6 hpl_vol[2:0] 000 secondary hpl pga volume -7db 5:3 hpr_vol[2:0] 000 secondary hpr pga volume -7db 2:0 hp_bias_boost[2:0] 000 boost bias into headphone driver x2 r68 (44h) analogue pga bias 2:0 hp_pgas_bias[2:0] 000 headphone pga bias x 2 r82 (52h) charge pump b 1:0 cp_dyn_pwr[1:0] 11 enable dynamic (class w) power saving table 33 low power headphone playback
WM8961 pre-production w pp, august 2009, rev 3.1 47 note that the register write to cp_dyn_pwr[1:0] must take place before the charge pump is enabled. see the ?charge pump? section. speaker outputs the spk_lp/spk_ln and spk_rp/spk_rn output pins are class d speaker drivers. each pair is independently controlled and can drive an 8 btl speaker. output pga volume is relative to avdd, while an additional boost stage (set by classd_acgain[2:0] ) is available to accommodate higher spkvdd1/spkvdd2 supply voltages. this allows avdd to be run at a lower voltage to save power, while maximum output power can be delivered to the load, utilising the full range of spkvdd1 and spkvdd2 supplies. the output gain stage automatically centers the analogue output about spkvdd/2. this will avoid the analogue output clipping ? except in the case of classd_acgain=12db. the speaker output stage is illustrated in figure 20 figure 20 speaker output stage
WM8961 pre-production w pp, august 2009, rev 3.1 48 speaker output pga volume control the signal volume on spk_l and spk_r can be independently adjusted under software control by writing to spklvol and spkrvol, as shown in figure 21 . figure 21 speaker volume pga a zero cross detect on the analogue output may also be enabled when changing the gain setting to minimize audible clicks and zi pper noise as the gain updates. if zero cross is enabled a timeout is also available to update the gain if a zero cross does not occur. this function may be enabled by setting toen in register r23 (17h). the timeout period is set by clk_to_div[1:0]. the volume control pgas are enabled using spkl_pga and spkr_pga.
WM8961 pre-production w pp, august 2009, rev 3.1 49 register address bit label default description r40 (28h) left speaker volume 6:0 spklvol [6:0] 0000000 (mute) spk_lp/spk_ln volume 1111111 = +6db ? 1db steps down to 0110000 = -73db 0101111 to 0000000 = analogue mute 7 spklzc 0 left speaker zero cross enable 1 = change gain on zero cross only 0 = change gain immediately 8 spkvu 0 speaker volume update 0 = store spklvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = spklvol, right = intermediate latch) r41 (29h) right speaker volume 6:0 spkrvol [6:0] 0000000 (mute) spk_rp/spk_rn volume 1111111 = +6db ? 1db steps down to 0110000 = -73db 0101111 to 0000000 = analogue mute 7 spkrzc 0 right speaker zero cross enable 1 = change gain on zero cross only 0 = change gain immediately 8 spkvu 0 speaker volume update 0 = store spkrvol in intermediate latch (no gain change) 1 = update left and right channel gains (left = intermediate latch, right = spkrvol) r26 (1ah) pwr mgmt (2) 4 spkl_pga 0 spk_lp and spk_ln left speaker pga enable 3 spkr_pga 0 spk_rp and spk_rn right speaker pga enable table 34 spk_l/spk_r analogue volume control speaker output boost control the speaker output boost stage allows avdd to be run at a lower voltage to save power, while maximum output power can be delivered to the load, maximising the full range of spkvdd1 and spkvdd2 supplies. it is controlled by classd_acgain[2:0]. register address bit label default description r51 (33h) class d control 2 2:0 classd_a cgain [2:0] 011 (1.68x) ac speaker boost (boosts speaker ac output signal by up to 3.98 x on left and right channels) 000 = 1.00x boost (+0db) 001 = 1.19x boost (+1.5db) 010 = 1.41x boost (+3.0db) 011 = 1.68x boost (+4.5db) 100 = 2.00x boost (+6.0db) 101 = 2.37x boost (+7.5db) 110 = 2.81x boost (+9.0db) 111 = 3.98x boost (+12db) note that +12db setting will cause a full scale output signal to clip. table 35 spk_l/spk_r speaker boost control
WM8961 pre-production w pp, august 2009, rev 3.1 50 to prevent pop noise, classd_acgain should not be modified while the speaker outputs are enabled. to avoid clipping at speaker supply, spkvdd1 and spkvdd2 must be high enough to support the peak output voltage when using classd_acgain functions. the maximum rms output voltage is defined by the equation: max. rms output voltage = avdd/1.8* classd_acgain . the above formula assumes there is 0.5db loss (6%) due to pcb tracking. 0.5db corresponds to 0.5 total tracking impedance with an 8 speaker. if the tracking impedance is greater than or less than 6% of the speaker impedance, the output voltage will differ slightly to the above formula. class d speaker output driver the class d speaker outputs spk_ln/spk_lp and spk_rn/spk_rp can drive 1w into 8 btl speakers at spkvdd=5v. the class d output stage is shown in figure 22. spk_lp spk_ln spkvdd1 - + spkgnd1 from left speaker pga volume control left speaker class d driver output stage r51, classd_acgain[2:0] r49, spkl_ena spk_rp spk_rn spkvdd2 - + spkgnd2 from right speaker pga volume control right speaker class d driver output stage r51, classd_acgain[2:0] r49, spkr_ena figure 22 class d speaker output stage class d outputs reduce power consumption and maximise efficiency by reducing power dissipated in the output drivers, delivering most of the power directly to the load. this is achieved by pulse width modulation (pwm) of a high frequency square wave, allowing the audio signal level to be set by controlling the pulse width. the frequency of the output waveform is controlled by dclkdiv, and is derived from sysclk. the speaker output enable bits spkr_ena and spkl_ena should not be enabled until there is a valid switching clock to drive the class d outputs. this means that sysclk must be active, and dclkdiv set to an appropriate value to produce a class d clock which runs at a nominal frequency of 384khz when sysclk=12.288 mhz, or 352.8khz when sysclk=11.2896mhz. this clock should not be altered or disabled while the class d outputs are enabled.
WM8961 pre-production w pp, august 2009, rev 3.1 51 if the speakers are located close to the WM8961 (less than about 100mm) then the internal filtering effects of the speaker can be used. where speakers are located further away from the WM8961 and the speaker signals are routed over longer distances, it is recommended to use additional passive filtering. this additional filtering should be positioned as close as possible to the WM8961 to reduce emi effects. see ?applications information? for more information on emi reduction. register address bit label default description r8 (08h) clocking (2) 8:6 dclkdiv[2:0] 111 controls clock division from sysclk to generate suitable class d clock. 000 = sysclk / 1 001 = sysclk / 2 010 = sysclk / 3 011 = sysclk / 4 100 = sysclk / 6 101 = sysclk / 8 110 = sysclk / 12 111 = sysclk / 16 (note that class d function further divides by 2 ) r49 (31h) class d control (1) 7 spkr_ena 0 right channel class d enable 0= disable right channel speaker output 1= enable right channel speaker output 6 spkl_ena 0 left channel class d enable 0= disable left channel speaker output 1= enable left channel speaker output table 36 class d speaker control registers input and output volume updates volume settings will not be applied to input or output pgas until a ?1? is written to one of the update bits (ipvu, out1vu, spkvu bits). this is to allow left and right channels to be updated at the same time, as shown in figure 23. figure 23 simultaneous left and right volume updates
WM8961 pre-production w pp, august 2009, rev 3.1 52 if a volume update is attempted while the signal is a non-zero value, an audible click could occur as shown in figure 24. figure 24 click noise during volume update in order to prevent this click noise, a zero cross function is provided. when enabled, this will cause the pga volume to update only when a zero crossing occurs, minimising click noise as shown in figure 25. figure 25 volume update using zero cross detection if there is a long period where no zero-crossing occurs, a timeout circuit in the WM8961 will automatically update the volume. the volume updates will occur between one and two timeout periods, depending on when the volume update bit is set as shown in figure 26. the toen register bit must be set to enable this timeout function. the timeout period is set by clk_to_div[1:0].
WM8961 pre-production w pp, august 2009, rev 3.1 53 write left volume update bit = 0 write right volume update bit = 1 left pga input right pga input control interface time left pga output right pga output write right pga volume with update write left pga volume without update timeout counter timeout causes volume update zero crossing causes volume update no zero crossing timeout figure 26 volume update after timeout dc servo the dc servo reduces any dc offset from the ground referenced headphone output and the output of the microphone boost stage. the operation of the dc servo ensures that these outputs remain within 1.5mv of ground when enabled. on the input stage the dc servo is used to null any dc offset at the input of the adc (boost stage output). this optimises the zero cross detection, particularly when using alc. the dc servo is referenced to the charge pump references vpos and vneg hence in order to permit the dc servo to be used when recording, the headphone charge pump must be enabled (cp_ena = 1) and mclk must be applied, see ?charge pump? section. if the charge pump is not enabled or mclk is not supplied, large offsets will be present within the input path and the zero cross function may not operate. on the output stage the dc servo is used to null dc offsets at the headphone outputs. this results in reduced power consumption since any deviation from ground at the output pin results in a dc current flow through the load. additionally, removal of dc offsets at these outputs helps to significantly reduce pops and clicks at power up and down. a block diagram of the dc servo is shown in figure 27
WM8961 pre-production w pp, august 2009, rev 3.1 54 figure 27 dc servo block diagram dc servo startup operation the dc servo contains automatic control circuitry and can be configured using individual register writes. the dc servo can also be configured by starting a sequence using the control write sequencer (see ?control write sequencer? section). starting the pre-defined sequence from line 0 of the control write sequencer configures the dc servo by default. the basic startup operation of the dc servo, for example for hp_r, is to 1. enable the dc servo operation on the hp_r output by configuring r61[3], dcs_ena_chan_hpr. (the hp_l, inr/l have similar enables). 2. trigger a start up sequence for the hp_r by configuring r61[2] dcs_trig_startup_hpr (the hp_l, inr/l have similar start up sequence enables). additionally, to enable the dc servo for l/rinput, the headphone charge pump must be enabled (cp_ena = 1) and mclk must be applied. note that it is recommended to perform a calibration of the dc servo input channel before using the input pga zero cross detector. register address bit label default description r60 (3ch) dc servo 1 7 dcs_ena_chan_inl 0 dc servo enabled on channel inl 6 dcs_trig_startup_inl 0 perform startup sequence on channel inl*see note 1 3 dcs_ena_chan_inr 0 dc servo enabled on channel inr 2 dcs_trig_startup_inr 0 perform startup sequence on channel inr *see note 1 r61 (3dh) dc servo 1 7 dcs_ena_chan_hpl 0 dc servo enabled on channel hpl 6 dcs_trig_startup_hpl 0 perform startup sequence on channel hpl *see note 1 3 dcs_ena_chan_hpr 0 dc servo enabled on channel hpr 2 dcs_trig_startup_hpr 0 perform startup sequence on channel hpr *see note 1 table 37 dc servo enable and start-up configuration note: 1. the ?startup? bits are automatically reset to ?0? after 1 clock cycle.
WM8961 pre-production w pp, august 2009, rev 3.1 55 dc servo configuration following a headphone pga volume update when a pga volume update is applied to the headphone output, its dc offset can change. to maintain sub 1.5mv dc offsets, it may be necessary to re-calibrate the dc correction factors when large changes are made to pga settings in the signal path (6db or greater). the dc servo can be configured to do this automatically as a background task using the dcs_trig_series_hpl/r. this function is not handled by the write control sequencer since it can happen at any time and is not part of a defined sequence. this function is only available on the headphone outputs since it is not required for inputs. register address bit label default description r61 (3dh) dc servo 1 4 dcs_trig_series_hpl 0 0= do not perform any series of updates on hpl 1= perform a dcs_series_no_hp series of lsb updates on channel hpl *see note 1 one channel completes before the next starts reading this register returns status of this task. read 0 = task completed. 1 = task being performed 0 dcs_trig_series_hpr 0 0= do not perform any series of updates on hpr 1= perform a dcs_series_no_hp series of lsb updates on channel hpr *see note 1 one channel completes before the next starts reading this register returns status of this task. read 0 = task completed. 1 = task being performed table 38 dc servo series updates following volume update note: 1. these bits are automatically reset to ?0? after 1 clock cycle. the dcs_trig_series_x will update the channel a ?number of times? before moving onto the next enabled channel. the ?number of times? it updates a particular channel, is configured by dcs_series_no_hp. register address bit label default description r65 (41h) dc servo 5 6:0 dcs_series_no_hp[6:0] 001_0000 number of lsb updates in a series for channels hpl and hpr 000_0000-000_1111 : reserved 001_0000 : 16 ? 111_1111 : 127 table 39 dc servo number of updates control after any large gain update and volume updates have completed, the dcs_trig_series_x bit should be set. the dc servo will then examine each enabled output in order and apply any required offset correction to each. to prevent any audible artifacts on the analogue outputs, the dc servo only applies any necessary corrections in discreet 0.25mv steps. to allow this correction during audio playback, the dc servo includes a high order, low pass filter which removes any ac signal content from each output before it measures the dc offset. this filter has a relatively long time constant which means that the servo will take approx 0.275 seconds for each 0.25mv correction on each enabled analogue channel. this means that the dc servo may remain active, in the background, for several seconds after the dcs_trig_series_x bit is set. refer to ?dc servo filter bandwidth? section for more information.
WM8961 pre-production w pp, august 2009, rev 3.1 56 dc servo filter bandwidth the dc servo filter bandwidth can be modified to change the time taken to measure and correct the dc offset. the longer the time taken to measure the offset, then the more accurate the correction will be. register address bit label default description r63 (3fh) dc servo 3 5:4 dcs_filt_bw_series[1:0] 01 bandwidth of filter during series updates. determines how long a measurement takes. 00 : 6ms 01 : 275ms 10 : 1.2s 11 : 4.4s table 40 dc servo filter bandwidth control charge pump the WM8961 incorporates a dual-mode charge pump which generates the +ve (vpos) and ?ve (vneg) supply rails for the headphone output driver. the charge pump has a single supply input, cpvdd, and generates split rails vpos and vneg according to the selected mode of operation, which means that the headphone driver is capable of driving headphones without the need for large ac coupling capacitors. the charge pump connections are illustrated in figure 28 (see ?applications information? for external component values). an input decoupling capacitor may also be required at cpvdd, depending upon the system configuration. figure 28 charge pump external connections three external capacitors are needed for the charge pump. the fly-back pins (cfb1 and cfb2) require a 1 f capacitance or greater at 2v. the vpos and vneg supply pins each require a 2 f capacitance decoupling capacitor at 2v. enabling the charge pump an external clock (mclk) input is required for the charge pump operation. the minimum mclk frequency for the specified charge pump performance is 2.8224mhz. the charge pump is enabled by setting the cp_ena bit. dvdd and cpvdd must be active before the charge pump is enabled. the charge pump initialisation time is specified in the electrical characteristics. dvdd and cpvdd must be active before the charge pump is enabled. register address bit label default description r72 (48h) charge pump 1 0 cp_ena 0 enable charge-pump digits 0: disable 1: enable table 41 charge pump enable
WM8961 pre-production w pp, august 2009, rev 3.1 57 the charge pump can also be enabled by running the default start-up sequence as described in the ?control write sequencer? section. (similarly, it will be disabled by running the shut-down sequence.) in these cases, the user does not need to write to the cp_ena bit. charge pump clocking the charge pump clock is derived from sysclk, using a clock divider to generate a nominal 1mhz clock, as shown in figure 43. the exact frequency depends on mclk and the charge pump clock division ratio, which is based on the sample_rate[2:0] and clk_sys_rate[3:0] register settings. for example, with mclkdiv=0, sample_rate[2:0]=000: 256fs : clk_sys_rate[3:0]=0011 gives a charge pump clock division ratio of 12, hence ? mclk=12.288mhz gives a charge pump frequency of 1.024mhz at full output power. ? mclk=11.2896mhz gives a charge pump frequency of 940.8khz at full output power. 128fs : clk_sys_rate[3:0]=0001 gives a charge pump clock division ratio of 6, hence ? mclk=6.144mhz gives a charge pump frequency of 1.024mhz at full output power. ? mclk=5.6448mhz gives a charge pump frequency of 940.8khz at full output power. charge pump control in order to minimise power consumption, both the output voltages (vpos and vneg) and the switching frequency of the charge pump are automatically adjusted according to the operating conditions. this can take two forms: 1. charge pump settings only depend on volume register settings ( cp_dyn_pwr[1:0] = 0b00): the maximum of lout1vol and rout1vol volume register settings (excluding disabled or muted outputs) controls the charge pump mode of operation. 2. dynamic (class w) power saving: charge pump settings depend on dynamic signal level (cp_dyn_pwr[1:0] = 0b11) and volume register settings: the audio signal input to the dac, multiplied by the maximum of lout1vol and rout1vol volume register settings, is used to control the charge pump mode of operation. this is the wolfson ?class w? mode, which allows the power consumption to be optimised in real time. the charge pump operating mode defaults to register control. dynamic (class w) power saving may be selected by setting the cp_dyn_pwr[1:0] bits to 0b11. if dynamic power saving is to be selected, this register write must take place before the charge pump is enabled. if the write sequencer is used to configure the dac to hp path, this register write must take place before the write sequencer is enabled and triggered. dynamic power saving results in a very slight reduction in headphone driver performance. when the adc sidetone is used for the headphone output, and the charge pump settings depend on dynamic signal level cp_dyn_pwr[1:0] = 0b11), the charge pump will monitor the dac output level rather than the adc sidetone level. if the adc sidetone signal is likely to exceed the dac output level, to avoid clipping it is recommended to set the charge pump settings to depend on volume register settings (cp_dyn_pwr[1:0] = 0b00). see also the dac digital sidetone section. register address bit label defaul t description r82 (52h) charge pump b 1:0 cp_dyn_pwr[1:0] 0 enable dynamic (class w) power saving 00: dynamic power saving disabled 01: reserved 10: reserved 11: dynamic power saving enabled table 42 charge pump configuration registers
WM8961 pre-production w pp, august 2009, rev 3.1 58 digital audio interface the digital audio interface is used for inputting dac data into the WM8961 and outputting adc data from it. it uses four pins: ? adcdat: adc data output ? dacdat: dac data input ? lrc: dac and adc data alignment clock ? bclk: bit clock, for synchronisation the clock signals bclk and lrc can be an output when the WM8961 operates as a master, or an input when it is a slave (see master and slave mode operation, below). four different audio data formats are supported: ? left justified ? right justified ? i 2 s ? dsp mode all four of these modes are msb first. they are described in audio data formats, below. refer to the electrical characteristic section for timing information. master and slave operation the WM8961 can be configured as either a master or slave mode device. as a master device the WM8961 generates bclk and lrc and thus controls sequencing of the data transfer on adcdat and dacdat. in slave mode, the WM8961 responds with data to clocks it receives over the digital audio interface. master and slave modes are illustrated below. figure 29 master mode figure 30 slave mode
WM8961 pre-production w pp, august 2009, rev 3.1 59 master mode bclk and lrc generation the bclk frequency is controlled by bclkdiv[3:0] which must be set appropriately to support the adc and dac sample rate. the lrc is set by the lrclk_rate[ 8:0] which is an integer division of the bclk. register address bit label default description r8 (08h) clocking2 3:0 bclkdiv[3:0] 0100 bclk frequency (master mode) 0000 = sysclk 0001 = reserved 0010 = sysclk / 2 0011 = sysclk / 3 0100 = sysclk / 4 (default) 0101 = reserved 0110 = sysclk / 6 0111 = sysclk / 8 1000 = reserved 1001 = sysclk / 12 1010 = sysclk / 16 1011 = sysclk / 24 1100 = reserved 1101 to 1111 = sysclk / 32 r14 (0eh) audio interface 2 8:0 lrclk_rate[8:0] 0_0100_0000 integer divide of bclk. 50:50 lrclk duty cycle is only guaranteed with even values (4, 6, ? ? , 510). 0_0000_0000 to 0_0000_0011 : reserved 0_0000_0100 : 4 ? 0_0100_0000 : 64 ? 1_1111_1110 : 510 1_1111_1111: reserved table 43 master mode bclk and lrc configuration internal clock divide and phase control mechanisms ensure that the bclk and lrc edges will occur in a predictable and repeatable position relative to each other and to the data. see clocking and sample rates section for more information.
WM8961 pre-production w pp, august 2009, rev 3.1 60 audio data formats in left justified mode, the msb is available on the first rising edge of bclk following a lrc transition. the other bits up to the lsb are then transmitted in order. depending on word length, bclk frequency and sample rate, there may be unused bclk cycles before each lrc transition. figure 31 left justified audio interface (assuming n-bit word length) in right justified mode, the lsb is available on the last rising edge of bclk before a lrc transition. all other bits are transmitted before (msb first). depending on word length, bclk frequency and sample rate, there may be unused bclk cycles after each lrc transition. figure 32 right justified audio interface (assuming n-bit word length) in i 2 s mode, the msb is available on the second rising edge of bclk following a lrc transition. the other bits up to the lsb are then transmitted in order. depending on word length, bclk frequency and sample rate, there may be unused bclk cycles between the lsb of one sample and the msb of the next. figure 33 i 2 s justified audio interface (assuming n-bit word length)
WM8961 pre-production w pp, august 2009, rev 3.1 61 in dsp mode, the left channel msb is available on either the 1 st (dsp mode b) or 2 nd (dsp mode a) rising edge of bclk (selectable by lrp) following a rising edge of lrc. right channel data immediately follows left channel data. depending on word length, bclk frequency and sample rate, there may be unused bclk cycles between the lsb of the right channel data and the next sample. in device master mode, the lrc output will resemble the frame pulse shown in figure 34 and figure 35. in device slave mode, figure 36 and figure 37, it is possible to use any length of frame pulse less than 1/fs, providing the falling edge of the frame pulse occurs greater than one bclk period before the rising edge of the next frame pulse. figure 34 dsp mode audio interface (mode a, lrp=0, master) figure 35 dsp mode audio interface (mode b, lrp=1, master) figure 36 dsp mode audio interface (mode a, lrp=0, slave)
WM8961 pre-production w pp, august 2009, rev 3.1 62 figure 37 dsp mode audio interface (mode b, lrp=0, slave) digital audio interface control the register bits controlling audio format, word length and master / slave mode are summarised in table 44. ms selects audio interface operation in master or slave mode. in master mode bclk and lrc are outputs. the frequency of lrc is set by lrclk_rate and bclk is set by the bits bclkdiv (see ?clocking and sample rates?). in slave mode bclk and lrc are inputs. register address bit label default description r7 (07h) digital audio interface format 8 alrswap 0 left/right adc channel swap 1 = swap left and right adc data in audio interface 0 = output left and right data as normal 7 bclkinv 0 bclk invert bit (for master and slave modes) 0 = bclk not inverted 1 = bclk inverted 6 ms 0 master / slave mode control 0 = enable slave mode 1 = enable master mode 5 dlrswap 0 left/right dac channel swap 0 = output left and right data as normal 1 = swap left and right dac data in audio interface 4 lrp 0 right, left and i 2 s modes ? lrc polarity 0 = normal lrc polarity 1 = invert lrc polarity dsp mode ? mode a/b select 0 = msb is available on 2 nd bclk rising edge after lrc rising edge (mode a) 1 = msb is available on 1 st bclk rising edge after lrc rising edge (mode b) 3:2 wl[1:0] 10 audio data word length 00 = 16 bits 01 = 20 bits 10 = 24 bits 11 = 32 bits 1:0 format[1:0] 10 audio data format select 00 = right justified 01 = left justified 10 = i 2 s format 11 = dsp mode table 44 audio data format control
WM8961 pre-production w pp, august 2009, rev 3.1 63 audio interface output tristate register bit tris, register 24(18h) bit[3] can be used to tri-state the adcdat pin and switch lrc and bclk to inputs. in slave mode (ms=0) lrc and bclk are by default configured as inputs and only adcdat will be tri-stated, (see table 45). register address bit label default description r24 (18h) additional control (2) 3 tris 0 tri-states adcdat and switches lrc and bclk to inputs. 0 = adcdat is an output; lrc and bclk are inputs (slave mode) or outputs (master mode) 1 = adcdat is tri-stated; lrc and bclk are inputs table 45 tri-stating the audio interface companding the WM8961 supports a-law and -law companding on both transmit (adc) and receive (dac) sides. companding can be enabled on the dac or adc audio interfaces by writing the appropriate value to the daccomp or adccomp register bits respectively. register address bit label default description r9 (09h) audio interface (2) 2:1 adccomp 00 adc companding 00 = off 01 = reserved 10 = -law 11 = a-law 4:3 daccomp 00 dac companding 00 = off 01 = reserved 10 = -law 11 = a-law table 46 companding control companding involves using a piecewise linear approximation of the following equations (as set out by itu-t g.711 standard) for data compression: -law (where =255 for the u.s. and japan): f(x) = ln( 1 + |x|) / ln( 1 + ) -1 x 1 26 law (where a=87.6 for europe): f(x) = a|x| / ( 1 + lna) } for x 1/a f(x) = ( 1 + lna|x|) / (1 + lna) } for 1/a x 1 the companded data is also inverted as recommended by the g.711 standard (all 8 bits are inverted for -law, all even data bits are inverted for a-law). the data will be transmitted as the first 8 msb?s of data. companding converts 13 bits ( -law) or 12 bits (a-law) to 8 bits using non-linear quantization. the input data range is separated into 8 levels, allowing low amplitude signals better precision than that of high amplitude signals. this is to exploit the operation of the human auditory system, where louder sounds do not require as much resolution as quieter sounds. the companded signal is an 8-bit word containing sign (1-bit), exponent (3-bits) and mantissa (4-bits). 8-bit mode is automatically selected during companding. that is whenever daccomp[2]=1 or adccomp[2]=1. the use of 8-bit data allows samples to be passed using as few as 8 bclk cycles per lrc frame. when using dsp mode b, 8-bit data words may be transferred consecutively every 8 bclk cycles.
WM8961 pre-production w pp, august 2009, rev 3.1 64 bit7 bit[6:4] bit[3:0] sign exponent mantissa table 47 8-bit companded word composition u-law companding 0 20 40 60 80 100 120 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 normalised input companded output 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 normalised output figure 38 -law companding a-law companding 0 20 40 60 80 100 120 0 0.2 0.4 0.6 0.8 1 normalised input companded output 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 normalised output figure 39 a-law companding
WM8961 pre-production w pp, august 2009, rev 3.1 65 adc-dac loopback setting the loopback register bit enables digital loopback. when this bit is set the output data from the adc audio interface is fed directly into the dac data input.. register address bit label default description r9 audio interface 0 loopback 0 digital loopback function 0 = no loopback. 1 = loopback enabled, adc data output is fed directly into dac data input. table 48 loopback control control write sequencer the write sequencer allows register write sequences to be stored in an area of memory on the device and then triggered by another register write. in this way complex sequences of writes can be used to configure the device without the need for constant intervention by the main processor. this aids pop and click suppression and simplifies power-on and power-off sequences. mclk must be applied to the WM8961 while making use of the write sequencer. the control write sequencer contains 2 memories. it contains a ram (locations 0 to 31) and a rom (locations 32 to 48). a number of pre-defined sequences are stored within both these areas of memory. this enables the most popular configurations to be selected via a single command. it also allows deployment of factory proven ?patches? into the field. the pre-defined sequences within the ram can be overwritten by the user. this is done by loading new sequences via the control interface logic shown in figure 40. the control interface logic provides connectivity to the control interface and access to the control registers. in WM8961, a multiplexer has been added to allow switch over, such that the control write sequencer is connected to the registers instead. figure 40 location of the control sequencer in the control path the sequencer allows the controlling processor to initiate a sequence of commands. the delays between each command in the sequence are controlled on-chip ? and are not affected by activities elsewhere in the system. once a sequence is initiated, the processor is then free to concentrate on other parts of the system. a status register is provided to allow the processor to check that one sequence is complete before starting another. although pop and click suppression is the most obvious application, there are other applications. any sequence of control writes can be automated, enabling the processor to initiate a thread of asynchronous control events before performing other tasks or going into a power down mode.
WM8961 pre-production w pp, august 2009, rev 3.1 66 figure 41 is an example of how sequences of commands are stored and applied within the codec. a number of analogue functions requiring digital control are drawn across the bottom of the diagram. each command contains an operation and a delay. the operation (e.g. mute left) contains data and address information to write a new value to a field within a codec control register. each sequence is terminated with an eos flag allowing several sequences at a time to be stored in ram or rom. figure 41 definition of sequences, commands, control registers and fields the sequencer has the ability to write to only part of a word. this allows individual fields in the word to be written to while leaving others untouched. this capability also simplifies software access for direct command because the application processor no longer needs to perform a read-modify-write operation to ensure that only the field of interest is changed. each command in the sequence can includes a delay value which sets the time that execution will pause before executing the next command. to reduce memory overhead, the delay is stored as a 4- bit delay coefficient . the delay is proportional to k2 , where k=62.5 ? s when mclk=12.288mhz. this delay is added to the inherent time it takes to carry out a read-modify-write instruction (approximately 500 ? s). figure 42 shows how the control words are arranged. each word contains the details of the write: address, data and write enable. a delay value, , is included to control the time between writes. the eos flag is used to indicate that the current command is the last in the sequence and that control should be returned to the control interface once that command is complete. the start and length fields form a mask which allows the write to be restricted to an individual field within the write. the mask byte comprises of (1) start = a pointer to the lsb of the field within the word, and (2) a field length indicating the number of bits in the field. for example if the word format is 16-bits wide, an 8-bit mask can be used with a 4-bit bit pointer and a 3-bit length field. this would allow any 1 to 8-bit contiguous field within the word to be accessed. for example if start=0010, and length=011, then bits 2,3,4 will be modified. figure 42 control word format the purpose of the write control sequencer default sequences is summarised in table 49. wseq start address wseq finish address purpose 0 17 power up dac to hp out 18 26 power up lrin to adc 27 48 power down table 49 write sequencer default sequences
WM8961 pre-production w pp, august 2009, rev 3.1 67 the default values of the write control sequencer are given in table 50 wseq _location WM8961 reg _index eos width start data delay comment cumulative delay startup time 0 8?h08 1?b0 3?h0 4?h4 8?h1 4?h0 clk_dsp_ena = 1 0.0005 0.0005 1 8?hfe 1?b0 3?h0 4?h0 8?h0 4?h0 dummy write for expansion 0.0005 0.0010 2 8?h1c 1?b0 3?h1 4?h3 8?h3 4?h0 bufdcopen = 1, bufioen = 1 ; enable current bias circuits 0.0005 0.0015 3 8?h19 1?b0 3?h2 4?h6 8?h3 4?h0 vmidsel = 01, vref = 1 ; vmid can be brought up fast, master bias enable 0.0005 0.0020 4 8?h48 1?b0 3?h0 4?h0 8?h01 4?h6 enable charge pump, wait 4.5ms 0.0045 0.0065 5 8?h1a 1?b0 3?h3 4?h5 8?hf 4?h0 lout1_pga = 1, rout1_pga = 1, dacl = 1, dacr = 1 0.0005 0.0070 6 8?h45 1?b0 3?h4 4?h0 8?h11 4?h0 set hpl_ena, hpr_ena 0.0005 0.0075 7 8?h45 1?b0 3?h4 4?h1 8?h19 4?h0 set hpl_en_dly, hpr_en_dly 0.0005 0.0080 8 8?h02 1?b0 3?h6 4?h0 8?h65 4?h0 lout1vol to -20db (7?b1100101) 0.0005 0.0085 9 8?h03 1?b0 3?h6 4?h0 8?h65 4?h0 rout1vol to -20db (7?b1100101) 0.0005 0.0090 10 8?h03 1?b0 3?h0 4?h8 8?h01 4?h0 out1vu 0.0005 0.0095 11 8?h3d 1?b0 3?h5 4?h2 8?h33 4?hc enable servo on outputs, trigger startup, wait 256ms 0.2560 0.2655 12 8?hfe 1?b0 3?h0 4?h0 8?h0 4?h0 dummy write for expansion 0.0005 0.2660 13 8?h07 1?b0 3?h1 4?h2 8?h0 4?h0 aif wl = 16 bit 0.0005 0.2665 14 8?h45 1?b0 3?h4 4?h2 8?h1d 4?h0 set hpl_ena_outp & hpr_ena_outp 0.0005 0.2670 15 8?h45 1?b0 3?h4 4?h3 8?h1f 4?h0 set hpl_rmv_shrt & hpr_rmv_shrt 0.0005 0.2675 16 8?hfe 1?b0 3?h0 4?h0 8?h0 4?h0 dummy write for expansion 0.0005 0.2680 17 8?h5 1?b1 3?h0 4?h3 8?h0 4?h8 dac soft unmute, wait 16.5ms 0.0165 0.2845 18 8?h20 1?b0 3?h1 4?h4 8?h03 4?h0 lmicboost = 11 0.0005 0.0005 19 8?h21 1?b0 3?h1 4?h4 8?h03 4?h0 rmicboost = 11 0.0005 0.0010 20 8?h19 1?b0 3?h4 4?h1 8?h19 4?h0 ainl = 1, ainr = 1, micb = 1 0.0005 0.0015 21 8?h3c 1?b0 3?h5 4?h2 8?h33 4?hc enable servo on inputs, trigger startup, wait 256ms 0.2560 0.2575 22 8?hfe 1?b0 3?h0 4?h0 8?h00 4?h0 dummy write for expansion 0.0005 0.2580 23 8?h19 1?b0 3?h1 4?h2 8?h3 4?h0 adcl = 1, adcr = 1 0.0005 0.2585 24 8?h20 1?b0 3?h1 4?h4 8?h0 4?h0 lmicboost = 00 0.0005 0.2590 25 8?h21 1?b0 3?h1 4?h4 8?h0 4?h0 rmicboost = 00 0.0005 0.2595 26 8?hfe 1?b1 3?h0 4?h0 8?h00 4?h0 dummy write for expansion 0.0005 0.2600 27 8?h5 1?b0 3?h0 4?h3 8?h1 4?h8 dac soft mute, wait 16.5ms 0.0165 0.0165 28 8?h00 1?b0 3?h0 4?h7 8?h01 4?h0 linmute = 1 0.0005 0.0170 29 8?h01 1?b0 3?h1 4?h7 8?h03 4?h0 rinmute = 1, ipvu 0.0005 0.0175
WM8961 pre-production w pp, august 2009, rev 3.1 68 wseq _location WM8961 reg _index eos width start data delay comment cumulative delay startup time 30 8?h45 1?b0 3?h4 4?h3 8?h0e 4?h0 clear rmv_shrt on outputs 0.0005 0.0180 31 8?h45 1?b0 3?h4 4?h2 8?h0c 4?h0 clear hpl_ena_outp & hpr_ena_outp 0.0005 0.0185 32 8?h02 1?b0 3?h6 4?h0 8?h00 4?h0 loutvol to mute 0.0005 0.0190 33 8?h03 1?b0 3?h6 4?h0 8?h00 4?h0 routvol to mute 0.0005 0.0195 34 8?h03 1?b0 3?h0 4?h8 8?h01 4?h0 out1vu 0.0005 0.0200 35 8?h28 1?b0 3?h6 4?h0 8?h00 4?h0 spklvol to mute 0.0005 0.0205 36 8?h29 1?b0 3?h6 4?h0 8?h00 4?h0 spkrvol to mute 0.0005 0.0210 37 8?h29 1?b0 3?h0 4?h8 8?h01 4?h0 spkvu 0.0005 0.0215 38 8?h3c 1?b0 3?h4 4?h3 8?h00 4?h0 disable servo on inputs 0.0005 0.0220 39 8?h3d 1?b0 3?h4 4?h3 8?h00 4?h0 disable servo on outputs 0.0005 0.0225 40 8?h1a 1?b0 3?h5 4?h3 8?h00 4?h0 spkl_pga = 0, spkr_pga = 0, lout1_pga = 0, rout1_pga = 0, dacl = 0, dacr = 0 0.0005 0.0230 41 8?h31 1?b0 3?h1 4?h6 8?h00 4?h0 disable class d 0.0005 0.0235 42 8?h45 1?b0 3?h5 4?h0 8?h00 4?h0 disable hpl_ena, hpr_ena, hpl_ena_dly, hpr_ena_dly 0.0005 0.0240 43 8?h48 1?b0 3?h0 4?h0 8?h00 4?h0 disable charge pump 0.0005 0.0245 44 8?h19 1?b0 3?h5 4?h1 8?h00 4?h0 vref = 0 ; adcl = 0 ; adcr = 0 ; micb = 0 ; ainl = 0 ; ainr = 0 0.0005 0.0250 45 8?h1c 1?b0 3?h1 4?h3 8?h00 4?h0 bufdcopen = 0, bufioen = 0 ; disable current bias circuits 0.0005 0.0255 46 8?h19 1?b0 3?h1 4?h7 8?h00 4?h0 vmidsel = 00, disable vmid 0.0005 0.0260 47 8?h08 1?b0 3?h0 4?h4 8?h00 4?h0 clk_dsp_ena = 0 0.0005 0.0265 48 8?hfe 1?b1 3?h0 4?h0 8?h00 4?h0 dummy write for expansion 0.0005 0.0270 table 50 write sequencer default values (ram =locations 0-31, rom = locations 32-48)
WM8961 pre-production w pp, august 2009, rev 3.1 69 the write sequencer control registers are explained in table 51. register address bit label default description r87 (57h) write sequencer 1 5 wseq_ena 0 write sequencer enable. 0: off 1: on 4:0 wseq_write_ index[4:0] 0_0000 sets the current location in the write sequencer memory. writes to the following write sequencer registers will affect this memory location. r88 (58h) write sequencer 2 8 wseq_eos 0 writes to the eos field in the current write sequencer memory location (specified by last write to wseq_write_index). 0 ? not end of current sequence 1 ? end of current sequence. the write sequencer will stop after this write has been completed. 7:0 wseq_addr[7:0] 0000_0000 this data will be written into the register address field of the current write sequencer memory location (specified by wseq_write_index). r89 (59h) write sequencer 3 7:0 wseq_data[7:0] 0000_0000 the data which is to be used to overwrite the current register bits. only bits [wseq_data_width:0] of this register are used. the remaining bits should be set to 0. r90 (5ah) write sequencer 4 8 wseq_abort 0 quit the current sequence and return control of the device back to the serial control interface 7 wseq_start 0 starts the write sequencer. the write sequencer will start writing the contents of its memory from wseq_start_index until it reaches an end-of-sequence flag. note, this bit will be reset by the write sequencer state machine at the end of each sequence 5:0 wseq_start_ index[5:0] 00_0000 sequence start index. gives the location in memory that the write sequencer will start executing from. 00_0000 -> 01_1111 : locations in ram portion of memory 10_0000 -> 11_0000 : location in rom portion of memory. 11_0001 -> 11_1111 : reserved. r91 (5bh) write sequencer 5 6:4 wseq_data_ width[2:0] 000 sets the highest bit of the bit slice that the write sequencer will write to. total width = value of this register + 1. for example: 000: highest bit is 0. data width 1 001: highest bit is 1. data width 2 ? 111: highest bit is 7. data width 8. 3:0 wseq_data_ start[3:0] 0000 selects the bit in the register for wseq_data to replace. for example, if: wseq_addr = 2eh wseq_data_width = 3 wseq_data_start = 5, in this example the write sequencer (when the sequence is activated) will replace bits [7:5] of register 2eh with the data supplied in wseq_data[2:0].
WM8961 pre-production w pp, august 2009, rev 3.1 70 table 51 write sequencer control r92 (5ch) write sequencer 6 3:0 wseq_delay[3:0] 0000 the delay to be inserted between the current write taking place and the next write taking place. 0000 : 0s 0001 : 125us 0010 : 250us 0011 : 500us 0100 : 1 ms 0101 : 2ms 0110 : 4ms 0111 : 8ms 1000 : 16ms 1001 : 32ms 1010 : 64ms 1011 : 128ms 1100 : 256ms 1101 : 512ms 1110 : 1.024s 1111 : 2.048s r93 (5dh) write sequencer 7 0 wseq_busy 0 read-only register to give write sequencer status. 0: write sequencer idle, control interface is fully active 1: write sequencer busy, control interface is blocked.
WM8961 pre-production w pp, august 2009, rev 3.1 71 clocking and sample rates clocks for the adc and dac, dsp core functions, the digital audio interface (aif), the charge pump and the class d outputs are all derived from the mclk clock input. this is as show in figure 43. mclk sysclk dac master mode clock outputs lrc bclk f/n f/2 (*) adc / f/n f/n f/n f/n f/n class d switching clock sysclk all internal clocks are derived from sysclk. sysclk is either mclk or mclk/2 . adcdiv dacdiv bclkdiv bclk rate is set by bclkdiv in master mode. note that both adc and dac operate at the same sample rate. dclkdiv class d switching clock frequency is set by dclkdiv and should be set to operate the class d function at a frequency of 384 khz for optimum performance timeout a slow clock is used for volume update timeouts (when zero cross is enabled). the timeout period is set by clk_to_div . other sample rate controls . r4[2], mclkdiv r8[5], clk_sys_ena r56[8:5], clk_dcs_div[3:0] f/n dc servo r8[8:6], dclkdiv[2:0] r8[3:0], bclkdiv[3:0] r7[6], ms r30[6:1], clk_256k_div[5:0] timeout r23[0], toen r30[8,7], clk_to_div[3:0] analog volume update clk_dcs_div the dc servo clock is controlled by the clk_dcs_div. this should be set to provide a 1.5 mhz clock to the dc servo. adc clock is set by adcdiv (master or slave mode) this is configured to output a clock of 256fs dac clock is set by dacdiv (master or slave mode) this is configured to output a clock as close as possible to 3mhz r4[8:6], adcdiv[2:0] r4[5:3], dacdiv[2:0] sample_rate[2:0] configures the alc for a chosen sample rate. deemph[1:0] configures the de-emphasis filter for the chosen sample rate. clk_sys_rate[3:0] defines the relationship between the mclk and the sample rate f/64 charge pump f/2 f/16 write sequencer f n r14[8:0], lrclk_rate[8:0] r8[4], clk_dsp_ena lrclk_rate lrc is set by the lrclk_rate in master mode. this is an integer division of the bclk. clk_256k_div this is a general clock divider which divides down the sysclk (default is sysclk/48 = 256 khz when sysclk =12.288mhz operation) 256fs(*) r23[5], adc_osr 4 khz charge pump clock division f/n (*) in 384fs mode, adcdiv should be configured to give 384fs. this is then divided by f/3 to give 128fs for the adc figure 43 clock structure
WM8961 pre-production w pp, august 2009, rev 3.1 72 automatic mode v?s manual mode clock configuration the clock configuration for the WM8961 can be set automatically or manually (default). the mode of operation is set by manual_mode, r30[0]. in manual mode the user must configure all the clock registers (described in the following paragraphs) manually. in automatic mode, sample_rate and clk_sys_rate are used to configure the following registers automatically: clk_256_div, clk_to_div, adcdiv, dacdiv, clk_dcs_div and dclkdiv. the bclkdiv and lrclk_rate still require to be set manually in this mode. register address bit label default description r30 (1eh) clocking 3 0 manual_mode 1 manual clock configuration enable 0 = when low, use sample_rate & clk_sys_rate to allow automatic configuration of system clock dividers. excludes master mode audio interface clocks. 1 = manual configuration of system clock dividers. 6:1 clk_256k_div[5:0] 10111 256khz clock divider setting 000000 : sysclk/1 000001 : sysclk/2 ? 101111 : sysclk/48 (default) ? 111110 : sysclk/63 111111 : sysclk/64 r27 (1bh) additional control (3) 2:0 sample_rate[2:0] 000 sample rate control for alc and automatic configuration 000 : 44.1k/48k 001 : 32k 010 : 22.05k/24k 011 : 16k 100 : 11.25k/12k 101 : 8k 110-111 : reserved r56 (38h) clocking 4 4:1 clk_sys_rate[3:0] 0011 specifies the rate of sysclk with respect to the sample rate. 0000 : 64*fs 0001 : 128*fs 0010 : 192*fs 0011 : 256*fs 0100 : 384*fs 0101 : 512*fs 0110 : 768*fs 0111 : 1024 *fs 1000 : 1408*fs 1001: 1536*fs 1010 -> 1111 : reserved table 52 clock configuration: automatic v?s manual
WM8961 pre-production w pp, august 2009, rev 3.1 73 sysclk sysclk is derived directly from mclk. it is either mclk or mclk/2. the clk_sys_ena enables the internal sysclk. the clk_dsp_ena allows the clock to the dsp, adc and dac to be disabled (for power reduction) while peripheral functions continue to be clocked by sysclk. register address bit label default description r4 (04h) clocking1 2 mclkdiv 0 sysclk configuration. 0 : sysclk = mclk/1 1 : sysclk = mclk/2 r8 (08h) clocking2 5 clk_sys_ena 1 enable system clock. power saving feature to gate system clock. when this bit is enabled, an mclk must be provided to allow access to the control interface. 4 clk_dsp_ena 1 dsp clock enable. power saving feature to gate clock to dsp while allowing auxiliary functions to run. table 53 sysclk configuration adc and dac clocking and sample rates the adcdiv and dacdiv bits determine the adc and dac operating clock. the output of adcdiv should be configured to output a clock of 256fs. the 256fs output of adcdiv is further divided such that the adc operates at 128fs. the dac should be configured to run at a clock frequency as close as possible to 3mhz. this requires setting the dacdiv divider to output a clock of at least 64fs. adc example sysclk=12.288 mhz, and fs=24 khz. then adcdiv should be set to 010 (sysclk/2).. this defines the output of the adcdiv as 256fs = (12.288 mhz /2) = 6.144 mhz. this 6.144 mhz is further divided by 2 (adc runs at 128fs) to drive the adc. further examples are given in table 55. dac example sysclk=11.2896 mhz and fs=44.1 khz. then dacdiv should be set to =100. this defines the output of the dacdiv as 64fs = (11.2896 mhz /4) = 2.8224 mhz further examples are given in table 55 (when both adc and dac used) and table 56 (dac only use). in master mode the output bclk is controlled by bclkdiv, and the lrc is controlled by lrclk_rate. these are shown in table 54 adc, dac and master mode bclk and lrc control.
WM8961 pre-production w pp, august 2009, rev 3.1 74 register address bit label default description r4 (04h) clocking1 8:6 adcdiv[2:0] 000 defines the adc 256fs clock, which is further divided by 2. 000 : 256fs = sysclk / 1.0 (default =12.288mhz, fs= 48 khz) 001 : reserved 010 : 256fs = sysclk / 2 011 : 256fs = sysclk / 3 100 : 256fs = sysclk / 4 101 : 256fs = sysclk / 5.5 110 : 256fs = sysclk / 6 111 : reserved 5:3 dacdiv[2:0] 100 defines the dac clock. 000 : dac clock = sysclk / 1 001 : reserved 010 : dac clock = sysclk / 2 011 : dac clock = sysclk / 3 100 : dac clock = sysclk / 4 (default =3.072 mhz when sysclk=12.288mhz) 101 : dac clock = sysclk / 5.5 110 : dac clock = sysclk / 6 111 : reserved r8 (08h) clocking2 3:0 bclkdiv[3:0] 0100 bclk frequency (master mode) 0000 = sysclk 0001 = reserved 0010 = sysclk / 2 0011 = sysclk / 3 0100 = sysclk / 4 (default) 0101 = reserved 0110 = sysclk / 6 0111 = sysclk / 8 1000 = reserved 1001 = sysclk / 12 1010 = sysclk / 16 1011 = sysclk / 24 1100 = reserved 1101 to 1111 = sysclk / 32 r14 (0eh) audio interface 2 8:0 lrclk_rate[8:0] 0_0100_0000 integer divide of bclk. 50:50 lrclk duty cycle is only guaranteed with even values (4, 6, ? ? , 510). 0_0000_0000 to 0_0000_0011 : reserved 0_0000_0100 : 4 ? 0_0100_0000 : 64 ? 1_1111_1110 : 510 1_1111_1111: reserved table 54 adc, dac and master mode bclk and lrc control
WM8961 pre-production w pp, august 2009, rev 3.1 75 example sample rate configurations using the registers shown in table 51, some example adcdiv and dacdiv settings have been calculated and detailed in table 52 for various sample rates and sysclks. adc / dac sample rate (khz) recommended sysclk (mhz) dacdiv adcdiv 48 12.288 100 => dac clk = 12.288 mhz/4.0 = 3.072mhz (=64fs) 000 => 256fs = 12.288 mhz/1.0 =12.288 mhz 32 8.192 100 => dac clk = 8.192 mhz/4.0 = 2.048mhz (=64fs) 000 => 256fs = 8.192 mhz/1.0 = 8.192 mhz 24 6.144 010 => dac clk = 6.144 mhz/2.0 = 3.072mhz (=128fs) 000 => 256fs = 6.144 mhz/ 1.0 = 6.144 mhz 12 3.072 000 => dac clk = 3.072 mhz/1.0 = 3.072mhz (=256fs) 000 => 256fs = 3.072 mhz/ 1.0 = 3.072 mhz 44.1 11.2896 100 => dac clk = 11.2896mhz/4.0 = 2.8224mhz (=64fs) 000 => 256fs = 11.2896mhz/1.0 =11.2896mhz 22.05 5.6448 010 => dac clk = 5.6448 mhz/2.0 = 2.8224mhz (=128fs) 000 => 256fs = 5.6448 mhz/1.0 =5.6448 mhz 8 3.072 000 => dac clk = 3.072 mhz/1.0 = 3.072mhz (=384fs) 000 => 256fs = 3.072 mhz/ 1.0 = 3.072 mhz table 55 adc and dac recommended dacdiv and adcdiv configuration if only the dac is being used (adc not used) then the sysclk can be reduced to save power. this is shown in table 56. dac sample rate (khz) recommended sysclk (mhz) dacdiv 48 3.072 000 => dac clk = 3.072 mhz /1.0 = 3.072 mhz (=64fs) 32 2.048 000 => dac clk = 2.048 mhz/1.0 = 2.048 mhz (=64fs) 24 3.072 000 => dac clk = 3.072 mhz/1.0 = 3.072 mhz (=128fs) 12 3.072 000 => dac clk = 3.072 mhz/1.0 = 3.072 mhz (=256fs) 44.1 2.8224 000 => dac clk = 2.8224 mhz/1.0 = 2.8224 mhz (=64fs) 22.05 2.8224 000 => dac clk = 2.8224 mhz/1.0 = 2.8224mhz (=128fs) 8 3.072 000 => dac clk = 3.072 mhz/1.0 = 3.072mhz (=384fs) table 56 recommended dacdiv configuration for dac playback only
WM8961 pre-production w pp, august 2009, rev 3.1 76 master mode bclk configuration the adc and dac must be configured to operate at the same sample rate. in master mode the bclk and lrclk_rate must be configured to support this sample rate. the following table 57 shows example calculations of the maximum word length supported for the adc and dac running at different sample rates. note that adcdiv, dacdiv and lrclk_rate must be configured to be the same sample rate. sysclk (mhz) sample rate lrclkrate bclkdiv bclk rate (master mode) (mhz) maximum word length (at adc/dac sample rate) 12.288 fs=48 khz 0x100 =bclk/256 = 48 khz 0000 (=1) 12.288 (12.288 mhz/48 khz) / 2 = 128. => 32 bit word length supported. 0x040 = bclk/64 = 48 khz 0100 (=4) 3.072 (3.072 mhz/48 khz) / 2 = 32. => 32 bit word length supported. fs=32 khz 0x180 =bclk/384 = 32 khz 0000 (=1) 12.288 (12.288 mhz/32 khz) / 2 = 192. => 32 bit word length supported. 0x040 = bclk/64 = 32 khz 0110 (=6) 2.048 (2.048 mhz/32 khz) / 2 = 32. => 32 bit word length supported. 0x020 = bclk/32 = 32 khz 1001 (=12) 1.024 (1.024 mhz/32 khz) / 2 = 16. => 16 bit word length supported. 11.2896 fs=44.1 khz 0x100 =bclk/256 = 44.1 khz 0000 (=1) 11.2896 (11.2896mhz/44.1 khz) / 2 = 128. => 32 bit word length supported. 0x040 = bclk/64 = 44.1 khz 0100 (=4) 2.8224 (2.8224mhz/44.1 khz) / 2 = 32. => 32 bit word length supported. fs=22.05 khz 0x080 =bclk/128 = 22.05 khz 0100 (=4) 2.8224 (2.8224mhz/22.05 khz) / 2 = 64. => 32 bit word length supported. table 57 adc and dac maximum word lengths based on valid bclk (master mode) configuration
WM8961 pre-production w pp, august 2009, rev 3.1 77 additional sample rate configuration requirements the deemph[1:0], r5[2:1], should be configured to match the chosen dac sample rate. register address bit label default description r5 (05h) adc and dac control 1 2:1 deemph[1:0] 00 dac de-emphasis filter control 00: no de-emphasis 01: de-emphasis for 32khz sample rate 10: de-emphasis for 44.1khz sample rate 11: de-emphasis for 48khz sample rate table 58 additional clock configuration register dc servo clock the dc servo requires to be clocked at a nominal 1.536mhz. it is controlled by the clk_dcs_clk configuration bits as shown in table 59 register address bit label default description r56 (38h) clocking 4 8:5 clk_dcs_div[3:0] 1000 clock divider control for dc servo, set to get 1.5mhz from sysclk 0000 : sysclk/1 0001 : sysclk/1.5 0010 : sysclk/2 0011 : reserved 0100 : sysclk/3 0101 : sysclk/4 0110 : sysclk/5.5 0111 : sysclk/6 1000 : sysclk/8 (default for 12.288mhz/8 = 1.536mhz) 1001-1111 : reserved table 59 dc servo clock configuration class d clock the class d clock is divided from sysclk. when sysclk is 12.288 mhz, the class d clock operates at an optimum frequency of 384 khz when sysclk is 11.2896 mhz, the class d clock operates at an optimum frequency of 352.8 khz it is controlled using the dclkdiv[2:0] configuration bits. for optimal operation, dclkdiv[2:0] should be set to divide sysclk by 16, giving a clock of 768 khz. this is further divided by 2 by the class d function which runs at 384 khz register address bit label default description r8 (08h) clocking2 8:6 dclkdiv[2:0] 111 divide of class d clock from sysclk 000 : 1 001 : 2 010 : 3 011 : 4 100 : 6 101 : 8 110 : 12 111 : 16 (default for 12.288mhz/16 = 768 khz) (note that class d function further divides by 2 to run at 384 khz) table 60 class d clock rate configuration
WM8961 pre-production w pp, august 2009, rev 3.1 78 charge pump clock the charge pump is driven from the sysclk plus a 4 khz clock also generated from the sysclk, and requires a minimum sysclk of 2.8224 mhz. the charge pump internal clock is derived from sysclk, using a clock divider to generate a nominal 1mhz clock, as shown in figure 43. the clock divider ratio depends on the sample_rate[2:0] and clk_sys_rate[3:0] register settings. for example, with mclkdiv=0, sample_rate[2:0]=000: 256fs : clk_sys_rate[3:0]=0011 gives a charge pump clock division ratio of 12, hence ? mclk=12.288mhz gives a charge pump frequency of 1.024mhz at full output power. ? mclk=11.2896mhz gives a charge pump frequency of 940.8khz at full output power. 128fs : clk_sys_rate[3:0]=0001 gives a charge pump clock division ratio of 6, hence ? mclk=6.144mhz gives a charge pump frequency of 1.024mhz at full output power. ? mclk=5.6448mhz gives a charge pump frequency of 940.8khz at full output power timeout clock the timeout clock triggers a volume update if a zero-cross has not been detected within the configured time-frame. the timeout is enabled by toen and the timeout period is controlled by the clk_to_div register as shown in table 61 register address bit label default description r30 (1eh) clocking 3 8:7 clk_to_div[1:0] 00 timeout/slow clock divider setting 00 : 125hz ( timeout = 8ms) 01 : 250hz ( timeout = 4ms) 10 : 500hz ( timeout = 2ms) 11 : 1khz ( timeout = 1ms) r23 (17h) additional control(1) 0 toen 0 slow clock enable for volume update timeout table 61 volume update timeout control vmid generator an internal vmid generator generates avdd/2 as a reference voltage to be used as the virtual ground for most internal analogue signal processing circuits. the internal vmid is output on the vmid pin. this pin requires a 4.7uf filtering capacitor. vmidsel is the enable for the vmid reference, which defaults to disabled. vmidsel allows the charging and discharging of the external vmid capacitor to be controlled. it is recommended that the user use the fast start-up mode (vmidsel=11) when vmid is initially enabled. then the user should switch to a lower power operating mode (vmidsel=01) for normal operation. ? fast start up: use10k ? divider ? normal mode: use 100k ? divider ? standby: use 500k ? divider
WM8961 pre-production w pp, august 2009, rev 3.1 79 register address bit label default description r25 (19h) power management (1) 8:7 vmidsel 00 vmid divider enable and select 00 = vmid disabled (for off mode) 01 = 2 x 50k divider enabled (for normal playback / record) 10 = 2 x 250k divider enabled (for low-power standby) 11 = 2 x 5k divider enabled (for fast start-up) 6 vref 0 enable master bias current source 0 = master bias current source disabled 1 = master bias current source enabled r28 (1ch) anti-pop 4 bufdcopen 0 enables fast startup bias generation 3 bufioen 0 internal vmid and fast bias enable 2 soft_st 0 for anti-pops and cli cks. vmid slow start up. ramp up voltage 0 = function disabled 1 = slow vmid slew rate selected table 62 vmidsel control registers the bufdccopen and bufioen are used internally to enable the internal vmid and to enable the internal fast start-up bias current. users should enable both (set them to 1). the soft_st bit can be used to give a slow vmid ramp up voltage to reduce possibility of pops and clicks at start-up. thermal shutdown and status the speaker outputs can drive very large currents. to protect the WM8961 from overheating a thermal shutdown circuit is included. if the device temperature reaches approximately 150 0 c and the thermal shutdown circuit is enabled (tsden = 1; tsensen = 1) the speaker amplifiers (spk_lp, spk_ln, spk_rp and spk_rn) will be disabled. tsensen must be set to 1 to enable the temperature sensor when using the tsden thermal shutdown function. register address bit label default description r23 (17h) additional control (1) 8 tsden 1 thermal shutdown enable 0 = thermal shutdown disabled 1 = thermal shutdown enabled (tsensen must be enabled for this function to work) r48 (30h) additional control (4) 1 tsensen 1 temperature sensor enable 0 = temperature sensor disabled 1 = temperature sensor enabled table 63 thermal shutdown in addition to the thermal shutdown registers, there are 2 status (read only) registers which can be used to check the status of the temperature sensor. these are the temp_warn and temp_shut status bits register address bit label default description r47 (2fh) pwr mgmt (3) 1 temp_shut 0 read only status of temperature sensor triggers at 145 degrees c 0 temp_warn 0 read only status of temperature sensor ? triggers at 125 degrees c table 64 thermal status
WM8961 pre-production w pp, august 2009, rev 3.1 80 chip device id the device id can be read back from register 1 bits [15:9]. (note that writing to this register is also used to configure the right input volume) register address bit label default description r1 (01h) reset / id 15:12 device_id [3:0] 0000 reading from this register will indicate device family id device id: [3:0] 0000 = 1801 0001-1111 : unused 11:9 chip_rev[2:0] 010 device revision: [2:0] 000 = rev a 001 = rev b 010 = rev c 011-111 : unused table 65 chip device id chip software reset the device can be reset by writing any value to register 15. register address bit label default description r15 (0fh) software reset 15:0 sw_rst_dev_id1 [15:0] 0x1801 writing to this register resets all registers to their default state = software reset read from register = device number = 1801 table 66 chip reset
WM8961 pre-production w pp, august 2009, rev 3.1 81 register map the complete register map is shown below. the detailed description can be found in the relevant text of the device description. the WM8961 can be configured using the control interface. all registers not listed and all unused bits should not be written to. all registers can be read back. registers r1[15:12] returns the device id when read. reg name 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 default r0 (0h) left input volume 0 0 0 0 0 0 0 ipvu l inmut e lizc linvol[5:0] 009fh r1 (1h) right input volume device_id[3:0] chip_rev[2:0] ipvu r inmut e rizc rinvol[5:0] 029fh r2 (2h) lout1 volume 0 0 0 0 0 0 0 o ut1v u lo1zc lout1vol[6:0] 0000h r3 (3h) rout1 volume 0 0 0 0 0 0 0 o ut1v u ro1zc rout1vol[6:0] 0000h r4 (4h) clocking1 0 0 0 0 0 0 0 adcdiv[2:0] dacdiv[2:0] m clkd iv 0 0 0020h r5 (5h) adc & dac control 1 0 0 0 0 0 0 0 0 0 adcpol[1:0] 0 d acm u deemph[1:0] a dchp d 0008h r6 (6h) adc & dac control 2 0 0 0 0 0 0 0 ad c_hpf_cut[1 :0] dacpol[1:0] 0 d acs m m d acm r da cslo pe da c_os r1 28 0000h r7 (7h) audio interface 0 0 0 0 0 0 0 0 al rswa p b clkin v ms dl rswa p lrp wl[1:0] format[1:0] 000ah r8 (8h) clocking2 0 0 0 0 0 0 0 dclkdiv[2:0] cl k_sy s_ ena cl k_ds p_ ena bclkdiv[3:0] 01f4h r9 (9h) audio interface 1 0 0 0 0 0 0 0 0 0 0 0 daccomp[1:0] adccomp[1:0] lo opba ck 0000h r 10 (a h) left dac volume 0 0 0 0 0 0 0 dacvu ldacvol[7:0] 00ffh r 11 (b h) right dac volume 0 0 0 0 0 0 0 dacvu rdacvol[7:0] 00ffh r 14 (e h) audio interface 2 0 0 0 0 0 0 0 lrclk_rate[8:0] 0040h r 15 ( fh) software reset sw_rst_dev_id1[15:0] 1801h r 17 (11 h) alc1 0 0 0 0 0 0 0 alcsel[1:0] maxgain[2:0] alcl[3:0] 007bh r 18 (12 h) alc2 0 0 0 0 0 0 0 0 0 mingain[2:0] hld[3:0] 0000h r 19 (13 h) alc3 0 0 0 0 0 0 0 al cmod e dcy[3:0] atk[3:0] 0032h r 20 (14 h) noise gate 0 0 0 0 0 0 0 0 ngth[4:0] 0 ngg ngat 0000h r 21 (15 h) left adc volume 0 0 0 0 0 0 0 adcvu ladcvol[7:0] 00c0h r 22 (16 h) right adc volume 0 0 0 0 0 0 0 adcvu radcvol[7:0] 00c0h r 23 (17 h) additional control(1) 0 0 0 0 0 0 0 tsden 0 0 0 dm ono mi x 0 0 0 toen 0120h r 24 (18 h) additional control(2) 0 0 0 0 0 0 0 0 0 0 0 0 tris 0 0 0 0000h r 25 (19 h) pwr mgmt (1) 0 0 0 0 0 0 0 vmidsel[1:0] vref ainl ainr adcl adcr micb 0 0000h r 26 (1a h) pwr mgmt (2) 0 0 0 0 0 0 0 dacl dacr lo ut1_p g a ro ut1_ pg a sp kl_p ga sp kr_p ga 0 0 0 0000h r 27 (1b h) additional control (3) 0 0 0 0 0 0 0 0 0 0 0 0 0 sample_rate[2:0] 0000h r2 8 (1c h) anti-pop 0 0 0 0 0 0 0 0 0 0 0 bu fdco pe n b ufioe n s oft_s t 0 0 0000h r 30 (1e h) clocking 3 0 0 0 0 0 0 0 c lk_to_div[1: 0] clk_256k_div[5:0] man u al _m ode 005fh r 32 (20 h) adcl signal path 0 0 0 0 0 0 0 0 0 0 l micboost[1: 0] 0 0 0 0 0000h r 33 (21 h) adcr signal 0 0 0 0 0 0 0 0 0 0 r micboost[1: 0] 0 0 0 0 0000h
WM8961 pre-production w pp, august 2009, rev 3.1 82 reg name 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 default path r 40 (28 h) lout2 volume 0 0 0 0 0 0 0 spkvu s pklz c spklvol[6:0] 0000h r 41 (29 h) rout2 volume 0 0 0 0 0 0 0 spkvu s pkrz c spkrvol[6:0] 0000h r 47 (2f h) pwr mgmt (3) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 te mp_s hu t te mp_w a rn 0000h r 48 (30 h) additional control (4) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ts ense n mbsel 0023h r 49 (31 h) class d control 1 0 0 0 0 0 0 0 0 sp kr_e na sp kl_e na 0 0 0 0 0 0 0000h r 51 (33 h) class d control 2 0 0 0 0 0 0 0 0 0 0 0 0 0 classd_acgain[2:0] 0003h r 56 (38 h) clocking 4 0 0 0 0 0 0 0 clk_dcs_div[3:0] clk_sys_rate[3:0] 0 0106h r 57 (39 h) dsp sidetone 0 0 0 0 0 0 0 0 0 adcr_dac_svol[3:0] ad c_to_dacr[1 :0 0 0 0000h r 58 (3a h) dsp sidetone 1 0 0 0 0 0 0 0 0 adcl_dac_svol[3:0] ad c_to_dacl[1 :0] 0 0 0000h r6 0 (3c h) dc servo 0 0 0 0 0 0 0 0 0 dc s_en a_ ch an_i nl dc s_tr ig _s tart up _inl 0 dc s_tr ig _s eries _i nl (k) dc s_en a_ ch an_in r dc s_tr ig _s tart up _inr 0 dc s_tr ig _s eries _i nr (k) 0000h r6 1 (3d h) dc servo 1 0 0 0 0 0 0 0 0 dc s_en a_ ch an_h pl dc s_tr ig _s tart up _hpl 0 dc s_tr ig _s eries _h pl dc s_en a_ ch an_h pr dc s_tr ig _s tart up _hpr 0 dc s_tr ig _s eries _h pr 0000h r 63 (3f h) dc servo 3 0 0 0 0 0 0 0 0 0 0 dc s_filt_bw_s er ies[1:0] 0 0 0 0 015eh r 65 (41 h) dc servo 5 0 0 0 0 0 0 0 0 0 dcs_series_no_hp[6:0] 0010h r 68 (44 h) analogue pga bias 0 0 0 0 0 0 0 0 0 0 0 0 0 hp_pgas_bias[2:0] 0003h r 69 (45 h) analogue hp 0 0 0 0 0 0 0 0 0 hp l_rm v_ short hp l_en a_ outp hp l_en a_ dly h pl_en a hp r_rm v_ short hp r_en a_ outp hp r_en a_ dly h pr_en a 0000h r 71 (47 h) analogue hp 2 0 0 0 0 0 0 0 hpl_vol[2:0] hpr_vol[2:0] hp_bias_boost[2:0] 01fbh r 72 (48 h) charge pump 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 c p_en a 0000h r 82 (52 h) charge pump b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cp _dyn_pwr[1 :0] 0000h r 87 (57 h) w rite sequence r 1 0 0 0 0 0 0 0 0 0 0 w seq_e n a wseq_write_index[4:0] 0000h r 88 (58 h) w rite sequence r 2 0 0 0 0 0 0 0 w seq_e o s wseq_addr[7:0] 0000h r 89 (59 h) w rite sequence r 3 0 0 0 0 0 0 0 0 wseq_data[7:0] 0000h r 90 (5a h) w rite sequence r 4 0 0 0 0 0 0 0 w seq_a b ort ws eq_s ta rt 0 wseq_start_index[5:0] 0000h r 91 (5b h) w rite sequence r 5 0 0 0 0 0 0 0 0 0 w seq_data_width[2: 0] wseq_data_start[3:0] 0000h r9 2 (5c h) w rite sequence r 6 0 0 0 0 0 0 0 0 0 0 0 0 wseq_delay[3:0] 0000h r9 3 (5d h) w rite sequence r 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 w seq_b u sy 0000h r2 52 (fc h general test 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ar a_en a au to_in c 0001h
WM8961 pre-production w pp, august 2009, rev 3.1 83 register bits by address register address bit label default description r0 (00h) left input volume 8 ipvu 0 write 1 to do a volume update on inputs 7 linmute 1 left input pga analogue mute 1 = enable mute 0 = disable mute note: ipvu must be set to un-mute. 6 lizc 0 zero cross enable. requires separate register write before volume setting. 0 : disable zero cross on left input pga 1 : enable zero cross 5:0 linvol[5:0] 01_1111 left input pga gain, 0.75db steps 000000 : -23.25db 000001 : -22.50db ? 011111 : 0db ? 111110 : 23.25db 111111 : 24.00db register 00h left input volume register address bit label default description r1 (01h) right input volume 15:12 device_id [3:0] 0000 reading from this register will indicate device family id device id: [3:0] 0000 = 1801 0001-1111 : unused 11:9 chip_rev[2:0] 010 device revision: [2:0] 000 = rev a 001 = rev b 010 = rev c 011-111 : unused 8 ipvu 0 write 1 to do a volume update on inputs 7 rinmute 1 right input pga analogue mute 1 = enable mute 0 = disable mute note: ipvu must be set to un-mute. 6 rizc 0 zero cross enable. requires separate register write before volume setting. 0 : disable 1 : enable 5:0 rinvol[5:0] 01_1111 right input pga gain, 0.75db steps 000000 : -23.25db 000001 : -22.50db ? 011111 : 0db ? 111110 : 23.25db 111111 : 24.00db register 01h right input volume
WM8961 pre-production w pp, august 2009, rev 3.1 84 register address bit label default description r2 (02h) lout1 volume 8 out1vu 0 write 1 to do volume update on outputs 7 lo1zc 0 left hp output zero cross enable 6:0 lout1vol[6:0] 000_0000 left hp output pga gain, 1db steps 0000000 to 0101111 : mute 0110000 : -73db ? 1111001 : 0db ? 1111111 : +6db register 02h lout1 volume register address bit label default description r3 (03h) rout1 volume 8 out1vu 0 write 1 to do volume update on outputs 7 ro1zc 0 right hp output zero cross enable 6:0 rout1vol[6:0] 000_0000 right hp output pga gain, 1db steps 0000000 to 0101111 : mute 0110000 : -73db ? 1111001 : 0db ? 1111111 : +6db register 03h rout1 volume register address bit label default description r4 (04h) clocking1 8:6 adcdiv[2:0] 000 defines the adc 256fs clock, which is further divided by 2. 000 : 256fs = sysclk / 1.0 (default =12.288mhz, fs= 48 khz) 001 : reserved 010 : 256fs = sysclk / 2 011 : 256fs = sysclk / 3 100 : 256fs = sysclk / 4 101 : 256fs = sysclk / 5.5 110 : 256fs = sysclk / 6 111 : reserved 5:3 dacdiv[2:0] 100 defines the dac clock. 000 : dac clock = sysclk / 1 001 : reserved 010 : dac clock = sysclk / 2 011 : dac clock = sysclk / 3 100 : dac clock = sysclk / 4 (default =3.072 mhz when sysclk=12.288mhz) 101 : dac clock = sysclk / 5.5 110 : dac clock = sysclk / 6 111 : reserved 2 mclkdiv 0 pre-divide mclk to get sysclk. 0 : divide by 1 1 : divide by 2 register 04h clocking1
WM8961 pre-production w pp, august 2009, rev 3.1 85 register address bit label default description r5 (05h) adc and dac control 1 6:5 adcpol[1:0] 00 adc data invert 00 : both channels normal polarity 01 : left channel inverted 10 : right channel inverted 11 : both channels inverted 3 dacmu 1 digital dac mute 2:1 deemph[1:0] 00 dac de-emphasis filter control 00: no de-emphasis 01: de-emphasis for 32khz sample rate 10: de-emphasis for 44.1khz sample rate 11: de-emphasis for 48khz sample rate 0 adchpd 0 disables high pass filter register 05h adc and dac control 1 register address bit label default description r6 (06h) adc and dac control 2 8:7 adc_hpf_cut[1:0] 00 adc high pass filter cutoff 00: hi-fi mode (fc=4hz at fs=48khz) 01: voice mode 1 (fc=127 at fs=16khz) 10: voice mode 2 (fc=130 at fs=8khz) 11: voice mode 3 (fc=267hz at fs=8khz) (note: fc scales with sample rate. see table 14 for cut-off frequencies at all supported sample rates) 6:5 dacpol[1:0] 00 dac data invert 00 : both channels normal polarity 01 : left channel inverted 10 : right channel inverted 11 : both channels inverted 3 dacsmm 0 0=no soft mute 1=slow volume ramp when dac muted/un-muted. 2 dacmr 0 select fast or slow volume ramp up and down 0: fast ramp rate (24khz at fs=48k, providing maximum delay of 10.7ms) 1: slow ramp rate (1.5khz at fs=48khz, providing maximum delay of 171ms) 1 dacslope 0 sloping stop band enable 0 dac_osr128 0 dac 128 over sampling rate 0: 64x dac oversampling 1: if manual_mode=0, automatically configure dacdiv[2:0] for 128osr mode. this will give a snr improvement at the expense of power register 06h adc and dac control 2
WM8961 pre-production w pp, august 2009, rev 3.1 86 register address bit label default description r7 (07h) audio interface 0 8 alrswap 0 swaps l and r adc data in interface 7 bclkinv 0 bclk invert bit (for master and slave modes) 0 : bclk not inverted 1 : bclk inverted 6 ms 0 master / slave mode control 0 : enable slave mode 1 : enable master mode 5 dlrswap 0 swap left/right channels on dac path 4 lrp 0 right, left and i2s modes ? lrc polarity 0 : normal lrc polarity 1 : invert lrc polarity dsp mode ? mode a/b select 0 : msb is available on 2 nd bclk rising edge after lrc rising edge (mode a) 1 : msb is available on 1 st bclk rising edge after lrc rising edge (mode b) 3:2 wl[1:0] 10 audio interface word length 00 : 16 bit 01 : 20 bit 10 : 24 bit 11 : 32 bit 1:0 format[1:0] 10 audio interface format 00: right justified 01: left justified 10: i2s 11: dsp register 07h audio interface 0 register address bit label default description r8 (08h) clocking2 8:6 dclkdiv[2:0] 111 class d switching clock divider. 000 = sysclk / 1 001 = sysclk / 2 010 = sysclk / 3 011 = sysclk / 4 100 = sysclk / 6 101 = sysclk / 8 110 = sysclk / 12 111 = sysclk / 16 (default for 12.288mhz/16 = 768 khz) (note that class d function further divides by 2 to run at 384 khz) 5 clk_sys_ena 1 enable system clock. power saving feature to gate clock to digital. when this bit is enabled, an mclk must be provided to allow access to the control interface. 4 clk_dsp_ena 1 dsp clock enable. power saving feature to gate clock to dsp while allowing auxiliary functions to run 3:0 bclkdiv[3:0] 0100 bclk frequency (master mode) 0000 = sysclk 0001 = reserved 0010 = sysclk / 2 0011 = sysclk / 3 0100 = sysclk / 4 (default) 0101 = reserved 0110 = sysclk / 6 0111 = sysclk / 8
WM8961 pre-production w pp, august 2009, rev 3.1 87 register address bit label default description 1000 = reserved 1001 = sysclk / 12 1010 = sysclk / 16 1011 = sysclk / 24 1100 = reserved 1101 to 1111 = sysclk / 32 register 08h clocking2 register address bit label default description r9 (09h) audio interface 1 4:3 daccomp[1:0] 00 dac data companding mode 00 : off 01 : reserved 10 : -law 11 : a-law 2:1 adccomp[1:0] 00 adc data companding mode 00 : off 01 : reserved 10 : -law 11 : a-law 0 loopback 0 audio interface loopback mode enable 0 : no loopback 1 : loopback enabled, adc data output is fed directly into dac data input register 09h audio interface 1 register address bit label default description r10 (0ah) left dac volume 8 dacvu 0 dac digital volume update writing 1 to this bit will cause left and right dac volumes to be updated (ldacvol and rdacvol) 7:0 ldacvol[7:0] 1111_1111 left dac digital volume ffh -> c0h : 0db bfh : -0.375db beh: -0.75db ?.. in steps of -0.375db to 02h: -71.25db 01h: -71.625db 00h: digital mute register 0ah left dac volume
WM8961 pre-production w pp, august 2009, rev 3.1 88 register address bit label default description r11 (0bh) right dac volume 8 dacvu 0 dac digital volume update writing 1 to this bit will cause left and right dac volumes to be updated (ldacvol and rdacvol) 7:0 rdacvol[7:0] 1111_1111 right dac digital volume ffh -> c0h : 0db bfh : -0.375db beh: -0.75db ?.. in steps of -0.375db to 02h: -71.25db 01h: -71.625db 00h: digital mute register 0bh right dac volume register address bit label default description r14 (0eh) audio interface 2 8:0 lrclk_rate[8:0] 0_0100_0000 integer divide of bclk. 50:50 lrclk duty cycle is only guaranteed with even values (4, 6, ? ? , 510). 0_0000_0000 to 0_0000_0011 : reserved 0_0000_0100 : 4 ? 0_0100_0000 : 64 ? 1_1111_1110 : 510 1_1111_1111: reserved register 0eh audio interface 2 register address bit label default description r15 (0fh) software reset 15:0 sw_rst_dev_id1[15:0] 0001_1000_0000_0001 software reset register 0fh software reset
WM8961 pre-production w pp, august 2009, rev 3.1 89 register address bit label default description r17 (11h) alc1 8:7 alcsel[1:0] 00 alc function select 00 : alc off (pga gain set by register) 01 : right channel only 10: left channel only 11 : stereo (pga registers unused). note: ensure that linvol and rinvol settings are the same before entering this mode. 6:4 maxgain[2:0] 111 alc max gain 000 : -18db 001 : -12db 010 : -6db 011 : 0db 100 : 6db 101 : 12db 110 : 18db 111 : 24db 3:0 alcl[3:0] 1011 alc target level (db fs) 0000 : -28.5 0001 : -27 ?1.5db steps? 1111 : -6 register 11h alc1 register address bit label default description r18 (12h) alc2 6:4 mingain[2:0] 000 min gain setting 000 : -23.25db 001 : -17.25db 010 : -11.25db 011 : -5.25db 100 : +0.75db 101 : +6.75db 110 : +12.75db 111 : +18.75db 3:0 hld[3:0] 0000 alc hold time 0000 : 0ms 0001 : 2.67ms 0010 : 5.33ms doubling with each step up to? 1111 : 43.691s register 12h alc2
WM8961 pre-production w pp, august 2009, rev 3.1 90 register address bit label default description r19 (13h) alc3 8 alcmode 0 determines the alc mode of operation: 0 = alc mode 1 = limiter mode alcsel[1:0] bits must be set to 00 before changing this bit. 7:4 dcy[3:0] 0011 alc decay (gain ramp-up) time 0000 : 24ms 0001 : 48ms doubling each step? 1010-1111 : 24.58s 3:0 atk[3:0] 0010 alc attack (gain ramp-down) time 0000 : 6ms 0001 : 12ms 0010 : 24ms ? (time doubles with every step) 1010 to 1111 : 6.14s register 13h alc3 register address bit label default description r20 (14h) noise gate 7:3 ngth[4:0] 0_0000 noise gate threshold 00000 : -76.5db fs 00001 : -75db fs 1.5db steps? 1111-30db fs 1 ngg 0 noise gate mode 0 : hold pga gain static (recommended) 1 : mute adc output 0 ngat 0 noise gate enable register 14h noise gate register address bit label default description r21 (15h) left adc volume 8 adcvu 0 adc digital volume update writing 1 to this bit will cause left and right adc volumes to be updated (ladcvol and radcvol) 7:0 ladcvol[7:0] 1100_0000 adc left channel digital volume. ffh -> efh: +17.625db eeh: +17.25db ?? in steps of -0.375db to c0h : 0db bfh : -0.375db beh: -0.75db ?.. in steps of -0.375db to 02h: -71.25db 01h: -71.625db 00h: digital mute register 15h left adc volume
WM8961 pre-production w pp, august 2009, rev 3.1 91 register address bit label default description r22 (16h) right adc volume 8 adcvu 0 adc digital volume update writing 1 to this bit will cause left and right adc volumes to be updated (ladcvol and radcvol) 7:0 radcvol[7:0] 1100_0000 adc right channel digital volume. ffh -> efh: +17.625db eeh: +17.25db ?? in steps of -0.375db to c0h : 0db bfh : -0.375db beh: -0.75db ?.. in steps of -0.375db to 02h: -71.25db 01h: -71.625db 00h: digital mute register 16h right adc volume register address bit label default description r23 (17h) additional control(1) 8 tsden 1 enable auto shutdown of speaker driver on temperature overheat condition 0 : thermal shutdown disabled 1 : thermal shutdown enabled (tsensen must be enabled for this function to work) 4 dmonomix 0 dac mono mix 0 : stereo 1 : mono (mono mix output on enabled dac) note: only one dac can be enabled when using this feature 0 toen 0 slow clock enable for volume update timeout register 17h additional control(1) register address bit label default description r24 (18h) additional control(2) 3 tris 0 tristates adcdat and switches lrc and bclk to inputs. 0 : adcdat is an output; lrc and bclk are inputs (slave mode) or outputs (master mode) 1 : adcdat is tristated; lrc and bclk are inputs register 18h additional control (2)
WM8961 pre-production w pp, august 2009, rev 3.1 92 register address bit label default description r25 (19h) pwr mgmt (1) 8:7 vmidsel[1:0] 00 00 = off 01 = 2x50k 10 = 2x250k 11 = 2x5k 6 vref 0 enable master bias current source 5 ainl 0 enables left pga and boost mixer 4 ainr 0 enables right pga and boost mixer 3 adcl 0 enable adc left channel 2 adcr 0 enable adc right channel 1 micb 0 enable micbias circuit register 19h pwr mgmt (1) register address bit label default description r26 (1ah) pwr mgmt (2) 8 dacl 0 enable left dac channel 7 dacr 0 enable right dac channel 6 lout1_pga 0 enable left headphone pga 5 rout1_pga 0 enable right headphone pga 4 spkl_pga 0 enable left speaker pga 3 spkr_pga 0 enable right speaker pga register 1ah pwr mgmt (2) register address bit label default description r27 (1bh) additional control (3) 2:0 sample_rate[2:0] 000 sample rate control for alc and auto configuration 000 : 44.1k/48k 001 : 32k 010 : 22.05k/24k 011 : 16k 100 : 11.25k/12k 101 : 8k 110-111 : reserved register 1bh additional control (3) register address bit label default description r28 (1ch) anti-pop 4 bufdcopen 0 enables fast startup bias gen 3 bufioen 0 enables fast startup bias and vmid buffers 2 soft_st 0 enables vmid soft start 0 : disabled 1 : enabled register 1ch anti-pop
WM8961 pre-production w pp, august 2009, rev 3.1 93 register address bit label default description r30 (1eh) clocking 3 8:7 clk_to_div[1:0] 00 timeout/slow clock divider setting 00 : 125hz 01 : 250hz 10 : 500hz 11 : 1khz 6:1 clk_256k_div[5:0] 10_1111 256khz clock divider setting 000000 : sysclk/1 000001 : sysclk/2 ? 101111 : sysclk/48 (default) ? 111110 : sysclk/63 111111 : sysclk/64 0 manual_mode 1 manual clock configuration enable 0 = when low, use sample_rate & clk_sys_rate to allow automatic configuration of system clock dividers. excludes master mode audio interface clocks. 1 = manual configuration of system clock dividers. register 1eh clocking 3 register address bit label default description r32 (20h) adcl signal path 5:4 lmicboost[1:0] 00 left microphone boost control 00 : 0db 01 : 13db 10 : 20db 11 : 29db register 20h adcl signal path register address bit label default description r33 (21h) adcr signal path 5:4 rmicboost[1:0] 00 right microphone boost control 00 : 0db 01 : 13db 10 : 20db 11 : 29db register 21h adcr signal path register address bit label default description r40 (28h) lout2 volume 8 spkvu 0 speaker pga volume update 7 spklzc 0 left speaker pga zero cross enable 6:0 spklvol[6:0] 000_0000 left speaker output pga gain, 1db steps 0000000 to 0101111 : mute 0110000 : -73db ? 1111001 : 0db ? 1111111 : +6db register 28h lout2 volume
WM8961 pre-production w pp, august 2009, rev 3.1 94 register address bit label default description r41 (29h) rout2 volume 8 spkvu 0 speaker pga volume update 7 spkrzc 0 right speaker pga zero cross enable 6:0 spkrvol[6:0] 000_0000 right speaker output pga gain, 1db steps 0000000 to 0101111 : mute 0110000 : -73db ? 1111001 : 0db ? 1111111 : +6db register 29h rout2 volume register address bit label default description r47 (2fh) pwr mgmt (3) 1 temp_shut 0 read only status of temperature sensor triggers at 145 degrees c 0 temp_warn 0 read only status of temperature sensor ? triggers at 125 degrees c register 2fh pwr mgmt (3) register address bit label default description r48 (30h) additional control (4) 1 tsensen 1 enable overheat temp sensor 0 mbsel 1 0: micbias = 5/6 avdd 1: micbias = 7/6 avdd register 30h additional control (4) register address bit label default description r49 (31h) class d control 1 7 spkr_ena 0 right channel class d enable 6 spkl_ena 0 left channel class d enable register 31h class d control 1 register address bit label default description r51 (33h) class d control 2 2:0 classd_acgain[2:0] 011 ac speaker boost (boosts speaker ac output signal on both left and right channels) 000 ? 1.00 x boost (+0db) 001 ? 1.19 x boost (+1.5db) 010 ? 1.41 x boost (+3db) 011 ? 1.68 x boost (+4.5b) 100 ? 2.00 x boost (+6b) 101 ? 2.37 x boost (+7.5db) 110 ? 2.81 x boost (+9db) 111 ? 3.98 x boost (+12db) note that +12db setting will cause a full scale output signal to clip. register 33h class d control 2
WM8961 pre-production w pp, august 2009, rev 3.1 95 register address bit label default description r56 (38h) clocking 4 8:5 clk_dcs_div[3:0] 1000 clock divider control for dc servo, set to get 1.5mhz from sysclk 0000 : sysclk/1 0001 : sysclk/1.5 0010 : sysclk/2 0011 : reserved 0100 : sysclk/3 0101 : sysclk/4 0110 : sysclk/5.5 0111 : sysclk/6 1000 : sysclk/8 1001-1111 : reserved 4:1 clk_sys_rate[3:0] 0011 specifies the rate of sysclk with respect to the sample rate. 0000 : 64*fs 0001 : 128*fs 0010 : 192*fs 0011 : 256*fs 0100 : 384*fs 0101 : 512*fs 0110 : 768*fs 0111 : 1024 *fs 1000 : 1408*fs 1001 : 1536*fs 1010 -> 1111 : reserved register 38h clocking 4 register address bit label default description r57 (39h) dsp sidetone 0 7:4 adcr_dac_svol[3:0] 0000 controls volume of adc right side tone, 3db steps. 0000 : -36db 0001 : -33db ? 1111 : 0db 3:2 adc_to_dacr[1:0] 00 dac right side-tone control 11 = unused 10 = mix adcr into dacr 01 = mix adcl into dacr 00 = no side-tone mix into dacr register 39h dsp sidetone 0
WM8961 pre-production w pp, august 2009, rev 3.1 96 register address bit label default description r58 (3ah) dsp sidetone 1 7:4 adcl_dac_svol[3:0] 0000 controls volume of adc left side tone, 3db steps. 0000 : -36db 0001 : -33db ? 1111 : 0db 3:2 adc_to_dacl[1:0] 00 dac left side-tone control 11 = unused 10 = mix adcr into dacl 01 = mix adcl into dacl 00 = no side-tone mix into dacl register 3ah dsp sidetone 1 register address bit label default description r60 (3ch) dc servo 0 7 dcs_ena_chan_inl 0 dc servo enabled on channel inl 6 dcs_trig_startup_inl 0 perform startup sequence on channel inl 3 dcs_ena_chan_inr 0 dc servo enabled on channel inr 2 dcs_trig_startup_inr 0 perform startup sequence on channel inr register 3ch dc servo 0 register address bit label default description r61 (3dh) dc servo 1 7 dcs_ena_chan_hpl 0 dc servo enabled on channel hpl 6 dcs_trig_startup_hpl 0 perform startup sequence on channel hpl 4 dcs_trig_series_hpl 0 perform a series of lsb updates on channel hpl 3 dcs_ena_chan_hpr 0 dc servo enabled on channel hpr 2 dcs_trig_startup_hpr 0 perform startup sequence on channel hpr 0 dcs_trig_series_hpr 0 perform a series of lsb updates on channel hpr register 3dh dc servo 1 register address bit label default description r63 (3fh) dc servo 3 5:4 dcs_filt_bw_series[1:0] 01 bandwidth of filter during series updates. determines how long a measurement takes. 00 : 6ms 01 : 275ms 10 : 1.2s 11 : 4.4s register 3fh dc servo 3 register address bit label default description r65 (41h) dc servo 5 6:0 dcs_series_no_hp[6:0] 001_0000 number of lsb updates in a series for channels hpl and hpr 000_0000-000_1111 : reserved 001_0000 : 16 ? 111_1111 : 127 register 41h dc servo 5
WM8961 pre-production w pp, august 2009, rev 3.1 97 register address bit label default description r68 (44h) analogue pga bias 2:0 hp_pgas_bias[2:0] 011 headphone pga bias options 000 x 2 001 reserved 010 reserved 011 x 1 100-111 reserved register 44h analogue pga bias register address bit label default description r69 (45h) analogue hp 0 7 hpl_rmv_short 0 left channel output short removal: set after output stage has been enabled 6 hpl_ena_outp 0 enables left channel output stage; set after offset cancellation is done 5 hpl_ena_dly 0 delayed left channel enable, set with at least 20us delay to hpl_ena; reset together with hpl_ena 4 hpl_ena 0 enables left headphone amplifier. channel 3 hpr_rmv_short 0 right channel output short removal: set after output stage has been enabled 2 hpr_ena_outp 0 enables right channel output stage; set after offset cancellation is done 1 hpr_ena_dly 0 delayed right channel enable, set with at least 20us delay to hpr_ena; reset together with hpr_ena 0 hpr_ena 0 enables right headphone amplifier. channel register 45h analogue hp 0 register address bit label default description r72 (48h) charge pump 1 0 cp_ena 0 enable charge-pump digits 0: disable 1: enable register 48h charge pump 1
WM8961 pre-production w pp, august 2009, rev 3.1 98 register address bit label default description r71 (47h) analogue hp 2 8:6 hpl_vol[2:0] 111 secondary hpl pga volume 111 0db (default) 110 -1db 101 -2db 100 -3db 011 -4db 010 -5db 001 -6db 000 -7db 5:3 hpr_vol[2:0] 111 secondary hpr pga volume 111 0db (default) 110 -1db 101 -2db 100 -3db 011 -4db 010 -5db 001 -6db 000 -7db 2:0 hp_bias_bo ost[2:0] 011 boost bias into headphone driver 000: x2 001: reserved 010: reserved 011: x1 100-111: reserved register 47h analogue hp 2 register address bit label default description r82 (52h) charge pump b 1:0 c p_dyn_pwr[1:0] 0 enable dynamic (class w) power saving 00: dynamic power saving disabled 01: reserved 10: reserved 11: dynamic power saving enabled register 52h charge pump b register address bit label default description r87 (57h) write sequencer 1 5 wseq_ena 0 write sequencer enable. 0: off 1: on 4:0 wseq_write_index[4:0] 0_0000 sets the current index in the write sequencer memory. writes to the following write sequencer registers will affect this memory location. register 57h write sequencer 1
WM8961 pre-production w pp, august 2009, rev 3.1 99 register address bit label default description r88 (58h) write sequencer 2 8 wseq_eos 0 writes to the eos field in the current write sequencer memory location (specified by last write to wseq_write_index). 0 ? not end of current sequence 1 ? end of current sequence. the write sequencer will stop after this write has been completed. 7:0 wseq_addr[7:0] 0000_0000 this data will be written into the register address field of the current write sequencer memory location (specified by wseq_write_index). register 58h write sequencer 2 register address bit label default description r89 (59h) write sequencer 3 7:0 wseq_data[7:0] 0000_0000 the data which is to be used to overwrite the current register bits. only bits [wseq_data_width:0] of this register are used. the remaining bits should be set to 0. register 59h write sequencer 3 register address bit label default description r90 (5ah) write sequencer 4 8 wseq_abort 0 quit the current sequence and return control of the device back to the serial control interface. 7 wseq_start 0 starts the write sequencer. the write sequencer will start writing the contents of its memory from wseq_start_index until it reaches an end-of-sequence flag. note that this bit will be reset by the write sequencer state machine at the end of each sequence. 5:0 wseq_start_index[5:0] 00_0000 sequence start index. gives the location in memory that the write sequencer will start executing from. 00_0000 -> 01_1111 : locations in ram portion of memory 10_0000 -> 11_0000 : location in rom portion of memory. 11_0001 -> 11_1111 : reserved. register 5ah write sequencer 4 register address bit label default description r91 (5bh) write sequencer 5 6:4 wseq_data_width[2:0] 000 sets the highest bit of the bit slice that the write sequencer will write to. total width = value of this register + 1. for example: 000: highest bit is 0. data width 1 001: highest bit is 1. data width 2 ? 111: highest bit is 7. data width 8 3:0 wseq_data_start[3:0] 0000 selects the bit in the register for wseq_data to replace. for example, if: wseq_addr = 2eh wseq_data_width = 3 wseq_data_start = 5, the write sequencer (when the sequence is activated) will replace bits [7:5] of register 2eh with the data supplied in wseq_data[2:0]. register 5bh write sequencer 5
WM8961 pre-production w pp, august 2009, rev 3.1 100 register address bit label default description r92 (5ch) write sequencer 6 3:0 wseq_delay[3:0] 0000 the delay to be inserted between the current write taking place and the next write taking place. 0000 : 0s 0001 : 125us 0010 : 250us 0011 : 500us 0100 : 1 ms 0101 : 2ms 0110 : 4ms 0111 : 8ms 1000 : 16ms 1001 : 32ms 1010 : 64ms 1011 : 128ms 1100 : 256ms 1101 : 512ms 1110 : 1.024s 1111 : 2.048s register 5ch write sequencer 6 register address bit label default description r93 (5dh) write sequencer 7 0 wseq_busy 0 read-only register to give write sequencer status. 0: write sequencer idle, control interface is fully active 1: write sequencer busy, control interface is blocked. register 5dh write sequencer 7 register address bit label default description r252 (fch) general test 1 1 ara_ena 0 alert response address enable 0 : off 1 : on 0 auto_inc 1 enable auto-increment 0 : off 1 : on register fch general test 1
WM8961 pre-production w pp, august 2009, rev 3.1 101 digital filter characteristics parameter test conditions min typ max unit adc filter passband +/- 0.05db 0 0.454 fs -6db 0.5fs passband ripple +/- 0.05 db stopband 0.546s stopband attenuation f > 0.546 fs -60 db dac normal filter passband +/- 0.05db 0 0.454 fs -6db 0.5 fs passband ripple 0.454 fs +/- 0.03 db stopband 0.546 fs stopband attenuation f > 0.546 fs -50 db dac sloping stopband filter passband +/- 0.03db 0 0.25 fs +/- 1db 0.25 fs 0.454 fs -6db 0.5 fs passband ripple 0.25 fs +/- 0.03 db stopband 1 0.546 fs 0.7 fs stopband 1 attenuation f > 0.546 fs -60 db stopband 2 0.7 fs 1.4 fs stopband 2 attenuation f > 0.7 fs -85 db stopband 3 1.4 fs stopband 3 attenuation f > 1.4 fs -55 db dac filters adc filters mode group delay mode group delay normal 16.5 / fs normal 16.5 / fs sloping stopband 18 / fs terminology 1. stop band attenuation (db) ? the degree to which the frequency spectrum is attenuated (outside audio band) 2. pass-band ripple ? any variation of the frequency response in the pass-band region
WM8961 pre-production w pp, august 2009, rev 3.1 102 dac filter responses this series of plots shows the filter response for the entire dac channel for different signal rates. the full path, has a nominal gain of 3.01db (1v input, 1.414v output), this means that the highest nodes in the 48khz case are at 47.5db (rather than below the 50db specification). sample rate (khz) sloping stop-band mclk recommended rate for dac only playback (codec mode) (hz) 8 yes 3072000 (3072000) 11.025 yes 2822400 (2822400) 12 yes 3072000 (3072000) 16 yes 2048000 (6144000) 22.05 yes 2822400 (5644800) 24 yes 3072000 (6144000) 32 no 2048000 (8192000) 44.1 no 2822400 (11289600) 48 no 3072000 (12288000) table 67 recommended filter configurations for supported sample rates figure 44 dac filter response 8k sampling rate figure 45 dac filter response for 11.025k sample rate figure 46 dac filter response for 12k sample rate figure 47 dac filter response for 16k sample rate
WM8961 pre-production w pp, august 2009, rev 3.1 103 figure 48 dac filter response 22.05k sample rate figure 49 dac playback filter response for 24k sample rate figure 50 dac playback filter response for 32k sample rate figure 51 dac playback filter response for 44.1k sample rate figure 52 dac playback filter response for 48k sample rate figure 53 dac playback filter passband ripple for 44.1k sample rate (mclk=11.2896mhz)
WM8961 pre-production w pp, august 2009, rev 3.1 104 adc filter responses figure 54 adc digital filter frequency response (128osr) figure 55 adc digital filter passband ripple (128osr)
WM8961 pre-production w pp, august 2009, rev 3.1 105 adc high pass filter responses ma gnitude( d b) 1 2.6923 7.2484 19.515 52.54 141.45 380.83 1.0253k 2.7605k 7.432k 20.009k -11.736 -10.562 -9.3883 -8.2145 -7.0407 -5.8669 -4.6931 -3.5193 -2.3455 -1.1717 2.1246m figure 56 adc digital high pass filter frequency response (48khz, hi-fi mode, adc_hpf_cut[1:0]=00) hpf_response.res magnitude(db) hpf_response2.res magnitude(db) hpf_response2.res#1 magnitude(db) 2 5.0248 12.624 31.716 79.683 200.19 502.96 1.2636k 3.1747k 7.9761k 20.039k -83.352 -75.017 -66.682 -58.347 -50.012 -41.677 -33.342 -25.007 -16.672 -8.3373 -2.3338m figure 57 adc digital high pass filter ripple (48khz, voice mode, adc_hpf_cut=01, 10 and 11)
WM8961 pre-production w pp, august 2009, rev 3.1 106 de-emphasis filter responses magnitude(db) -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 0 5000 10000 15000 20000 frequency (hz) magnitude(db) -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2 0.25 0.3 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 frequency (hz) figure 58 de-emphasis digital filter response (32khz) figure 59 de-emphasis error (32khz) magnitude(db) -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 0 5000 10000 15000 20000 25000 frequency (hz) magnitude(db) -0.1 -0.05 0 0.05 0.1 0.15 0.2 0 5000 10000 15000 20000 25000 frequency (hz) figure 60 de-emphasis digital filter response (44.1khz) figure 61 de-emphasis error (44.1khz) magnitude(db) -12 -10 -8 -6 -4 -2 0 0 5000 10000 15000 20000 25000 30000 frequency (hz) magnitude(db) -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0 5000 10000 15000 20000 25000 30000 frequency (hz) figure 62 de-emphasis digital filter response (48khz) figure 63 de-emphasis error (48khz)
WM8961 pre-production w pp, august 2009, rev 3.1 107 applications information recommended external components WM8961_qfn32 figure 64 WM8961 recommended external components
WM8961 pre-production w pp, august 2009, rev 3.1 108 speaker selection for filter-less operation, it is important to select a speaker with appropriate internal inductance. the internal inductance and the speaker?s load resistance create a low-pass filter with a cut-off frequency of: f c = r l / 2 l e.g. for an 8 speaker and required cut-off frequency of 20khz, the speaker should be chosen to have an inductance of: l = r l / 2 f c = 8 / 2 * 20khz = 64 h 8 speakers typically have an inductance in the range 20 h to 100 h. care should be taken to ensure that the cut-off frequency of the speaker?s internal filtering is low enough to prevent speaker damage. the class d outputs of the WM8961 operate at much higher frequencies than is recommended for most speakers, and the cut-off frequency of the filter should be low enough to protect the speaker. figure 65 speaker equivalent circuit
WM8961 pre-production w pp, august 2009, rev 3.1 109 pcb layout considerations the efficiency of the speaker drivers is affected by the series resistance between the WM8961 and the speaker (e.g. inductor esr) as shown in figure 66. this resistance should be as low as possible to maximize efficiency. figure 66 speaker connection losses the distance between the WM8961 and the speakers should be kept to a minimum to reduce series resistance, and also to reduce emi. further reductions in emi can be achieved by additional passive filtering and/or shielding as shown in figure 67. when additional passive filtering is used, low esr components should be chosen to minimize series resistance between the WM8961 and the speaker, maximizing efficiency. lc passive filtering will usually be effective at reducing emi at frequencies up to around 30mhz. to reduce emissions at higher frequencies, ferrite beads placed as close to the device as possible will be more effective.
WM8961 pre-production w pp, august 2009, rev 3.1 110 figure 67 emi reduction techniques example configurations each of the following example configurations shows a verified register write sequence, which can then be modified to suit the customer requirements. dac to headphone playback figure 68 WM8961 block diagram fo r dac to hea dphone playback
pre-production WM8961 w pp, april 2009, rev 3.0 111 register setting comment 0x0f - write 0x0000 reset device if required 0x0f - read - read chip id (=0x1801) 0x08 - write 0x01f4 enable system clocks 0x52 - write 0x0003 class w power switching 0x57 - write 0x0020 enable the write sequencer, dac to headphone playback with -20db volume setting 0x5a - write 0x0080 start the write sequencer to configure pre-programmed enable of the dac playback (digital input to headphone output) path. analogue input pgas still muted. allow enough time for the sequencer to finish 0x5d - read - read status of write sequencer and wait until the wseq_busy,bit0,=0 which indicates that the dac playback path has been configured. then continue. table 68 register settings for dac to headphone playback (-20db volume setting) dac to speaker and headphone playback in order to simplify the configuration of dac to speaker playback, the headphone output should first be enabled. figure 69 WM8961 block diagram for dac to speaker and headphone playback
WM8961 pre-production w pp, august 2009, rev 3.1 112 register setting comment 0x0f - write 0x0000 reset device if required 0x0f - read - read chip id (=0x1801) 0x08 - write 0x01f4 enable system clocks 0x52 - write 0x0003 headphone class w power switching 0x57 - write 0x0020 enable the write sequencer, dac to headphone playback with -20db volume setting. 0x5a - write 0x0080 start the write sequencer to configure pre-programmed enable of the dac playback (digital input to headphone output) path. analogue input pgas still muted. allow enough time for the sequencer to finish 0x5d - read - read status of write sequencer and wait until the wseq_busy,bit0,=0 which indicates that the dac playback path has been configured. then continue. 0x1a - write 0x01fc enable the speaker pgas, spkl_pga and spkr_pga 0x33 - write 0x0001 program the classd_acgain to x1.5 0x31 - write 0x00c0 enable the speakers spkr_ena and spkl_ena 0x28 - write 0x0079 set the left speaker volume spklvol to 0db (which defaults to mute), change on zero cross only 0x29 - write 0x0079 set the right speaker volume spkrvol to 0db (which defaults to mute), change on zero cross only 0x29 - write 0x0179 update speaker volume spkvu table 69 register settings for dac to speaker and headphone outputs the above configuration enables the speaker and the headphone outputs. switching between headphone and speakers with dac to speaker and headphone playback enabled, switching between headphone and speaker outputs should be done using the pga and mute bits as shown in table 70 and table 71. this achieves best pop-click performance. to save power, it may also be desirable to apply power management settings in addition to the settings shown, however note that disabled pgas leave a resistive path hence do not achieve the published mute attenuation specifications. 0x02 - write 0x012f headphone l mute 0x03 - write 0x012f headphone r mute 0x28 - write 0x0079 set the left speaker volume spkrvol to 0db 0x29 - write 0x0179 set the right speaker volume to 0db and update speaker volume spkvu table 70 switching from headphone playback to speaker playback
WM8961 pre-production w pp, august 2009, rev 3.1 113 register setting comment 0x02 - write 0x0065 set the left headphone volume to -20db 0x03 - write 0x0165 set the right headphone volume to -20db and update headphone volume out1vu 0x28 - write 0x002f speaker l mute 0x29 - write 0x012f speaker r mute table 71 switching from speaker playback to headphone play back (-20db volume setting) lrinput to adc record in order to simplify the configuration of lrinput to adc recording, the headphone output should first be enabled figure 70 WM8961 block diagram for lrinput to adc record
pre-production WM8961 w pp, august 2009, rev 3.1 114 register setting comment 0x0f - write 0x0000 reset device if required 0x0f - read - read chip id (=0x1801) 0x08 - write 0x01f4 enable system clocks 0x57 - write 0x0020 enable the write sequencer. 0x5a - write 0x0080 start the write sequencer to configure pre-programmed enable of the dac playback (digital input to headphone output) path. analogue input pgas still muted. allow enough time for the sequencer to finish 0x5d - read - read status of write sequencer and wait until the wseq_busy,bit0,=0 which indicates that the dac playback path has been configured. then continue. 0x5a - write 0x0092 start the write sequencer to configure pre-programmed enable of the adc record (line input to digital output) path allow enough time for the sequencer to finish 0x5d - read - read status of write sequencer and wait until the wseq_busy,bit0,=0. then continue. 0x00 - write 0x011f unmute left analogue input, leave input pga volume gain at default 0db 0x01 - write 0x011f unmute right analogue input, leave input pga volume gain at default 0db table 72 register settings for lrinput to adc record
pre-production WM8961 w pp, august 2009, rev 3.1 115 package dimensions dm044.b fl: 32 pin qfn plastic package 5 x 5 x 0.9 mm body, 0.50 mm lead pitch e2 b b 16 15 a 8 9 e c 0.08 c ccc a a1 c a3 seating plane 1 l index area (d/2 x e/2) top view d c aaa 2 x c aaa 2 x e 1 17 24 25 32 d2 b c bbb m a 5 4 notes: 1. dimension b applies to metallized terminal and is measured between 0.15 mm and 0.30 mm from terminal tip. 2. falls within jedec, mo-220, variation vhhd-5. 3. all dimensions are in millimetres. 4. the terminal #1 identifier and terminal numbering convention shall conform to jedec 95-1 spp-002. 5. coplanarity applies to the exposed heat sink slug as well as the terminals. 6. refer to application note wan_0118 for further information regarding pcb footprints and qfn package soldering. 7. this drawing is subject to change without notice. detail 1 r = 0.3mm x 45 o a3 g b exposed lead dimensions (mm) symbols min nom max note a a1 a3 0.80 0.85 0.90 0.05 0.02 0 0.203 ref b d d2 e e2 e l 0.30 0.20 5.00 bsc 3.15 3.10 3.05 0.50 bsc 0.35 0.40 0.45 1 2 2 5.00 bsc 3.15 3.10 3.05 0.10 aaa bbb ccc ref: 0.15 0.10 jedec, mo-220, variation vhhd-5. tolerances of form and position 0.25 0.625 g detail 1 detail 2 detail 2 exposed ground paddle 6 exposed ground paddle bottom view side view
pre-production WM8961 w pp, august 2009, rev 3.1 116 important notice wolfson microelectronics plc (?wolfson?) products and services are sold subject to wolfson?s terms and conditions of sale, deli very and payment supplied at the time of order acknowledgement. wolfson warrants performance of its products to the specifications in effect at the date of shipment. wolfson reserves the righ t to make changes to its products and specifications or to discontinue any product or service without notice. customers should therefore obtain the latest version of relevant information from wolfson to verify that the information is current. testing and other quality control techniques are utilised to the extent wolfson deems necessary to support its warranty. speci fic testing of all parameters of each device is not necessarily performed unless required by law or regulation. in order to minimise risks associated with customer applications, the customer must use adequate design and operating safeguard s to minimise inherent or procedural hazards. wolfson is not liable for applications assistance or customer product design. the cu stomer is solely responsible for its selection and use of wolfson products. wolfson is not liable for such selection or use nor for u se of any circuitry other than circuitry entirely embodied in a wolfson product. wolfson?s products are not intended for use in life support systems, appliances, nuclear systems or systems where malfunction c an reasonably be expected to result in personal injury, death or severe property or environmental damage. any use of products by the customer for such purposes is at the customer?s own risk. wolfson does not grant any licence (express or implied) under any patent right, copyright, mask work right or other intellectua l property right of wolfson covering or relating to any combination, machine, or process in which its products or services might be or are used. any provision or publication of any third party?s products or services does not constitute wolfson?s approval, licence, warrant y or endorsement thereof. any third party trade marks contained in this document belong to the respective third party owner. reproduction of information from wolfson datasheets is permissible only if reproduction is without alteration and is accompanie d by all associated copyright, proprietary and other notices (including this notice) and conditions. wolfson is not liable for any una uthorised alteration of such information or for any reliance placed thereon. any representations made, warranties given, and/or liabilities accepted by any person which differ from those contained in this datasheet or in wolfson?s standard terms and conditions of sale, delivery and payment are made, given and/or accepted at that person?s own risk. wolfson is not liable for any such representations, warranties or liabilities or for any reliance placed the reon by any person. address wolfson microelectronics plc westfield house 26 westfield road edinburgh eh11 2qb united kingdom tel :: +44 (0)131 272 7000 fax :: +44 (0)131 272 7001 email :: sales@wolfsonmicro.com


▲Up To Search▲   

 
Price & Availability of WM8961

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X