Professional Documents
Culture Documents
K40P144M100SF2RM
K40P144M100SF2RM
Contents
Section Number Title Chapter 1 About This Document
1.1 Overview.......................................................................................................................................................................77 1.1.1 1.1.2 1.2 Purpose.........................................................................................................................................................77 Audience......................................................................................................................................................77
Page
Conventions..................................................................................................................................................................77 1.2.1 1.2.2 1.2.3 Numbering systems......................................................................................................................................77 Typographic notation...................................................................................................................................78 Special terms................................................................................................................................................78
Chapter 2 Introduction
2.1 2.2 2.3 2.4 Overview.......................................................................................................................................................................79 Kinetis Portfolio............................................................................................................................................................79 K40 Family Introduction...............................................................................................................................................82 Module Functional Categories......................................................................................................................................83 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5 ARM Cortex-M4 Core Modules..................................................................................................................84 System Modules...........................................................................................................................................85 Memories and Memory Interfaces...............................................................................................................86 Clocks...........................................................................................................................................................86 Security and Integrity modules....................................................................................................................87 Analog modules...........................................................................................................................................87 Timer modules.............................................................................................................................................88 Communication interfaces...........................................................................................................................89 Human-machine interfaces..........................................................................................................................90
Section Number
3.2
Title
Page
Core modules................................................................................................................................................................91 3.2.1 ARM Cortex-M4 Core Configuration..........................................................................................................91 3.2.1.1 3.2.1.2 3.2.1.3 3.2.2 Buses, interconnects, and interfaces........................................................................................92 System Tick Timer...................................................................................................................93 Debug facilities........................................................................................................................93
Nested Vectored Interrupt Controller (NVIC) Configuration......................................................................93 3.2.2.1 3.2.2.2 3.2.2.3 Interrupt priority levels............................................................................................................94 Non-maskable interrupt............................................................................................................94 Interrupt channel assignments..................................................................................................94
3.2.3
3.2.4 3.3
System modules............................................................................................................................................................100 3.3.1 3.3.2 3.3.3 3.3.4 SIM Configuration.......................................................................................................................................100 Mode Controller Configuration...................................................................................................................101 PMC Configuration......................................................................................................................................102 Low-Leakage Wake-up Unit (LLWU) Configuration.................................................................................102 3.3.4.1 3.3.5 3.3.6 Wake-up Sources.....................................................................................................................103
MCM Configuration....................................................................................................................................104 Crossbar Switch Configuration....................................................................................................................105 3.3.6.1 3.3.6.2 3.3.6.3 Crossbar Switch Master Assignments......................................................................................106 Crossbar Switch Slave Assignments........................................................................................106 PRS register reset values..........................................................................................................107
3.3.7
Memory Protection Unit (MPU) Configuration...........................................................................................107 3.3.7.1 3.3.7.2 3.3.7.3 3.3.7.4 3.3.7.5 MPU Slave Port Assignments..................................................................................................107 MPU Logical Bus Master Assignments...................................................................................108 MPU Access Violation Indications..........................................................................................108 Reset Values for RGD0 Registers............................................................................................108 Write Access Restrictions for RGD0 Registers.......................................................................109 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Section Number
3.3.7.6 3.3.8
Title
Page
Clock Gating............................................................................................................................110
Peripheral Bridge Configuration..................................................................................................................110 3.3.8.1 3.3.8.2 3.3.8.3 3.3.8.4 3.3.8.5 Number of peripheral bridges..................................................................................................110 Memory maps..........................................................................................................................110 MPR registers...........................................................................................................................111 PACR registers.........................................................................................................................111 AIPS_Lite MPR register reset values......................................................................................111
3.3.9
DMA request multiplexer configuration......................................................................................................111 3.3.9.1 3.3.9.2 DMA MUX request sources....................................................................................................112 DMA transfers via PIT trigger.................................................................................................114
3.3.10 3.3.11
DMA Controller Configuration...................................................................................................................114 External Watchdog Monitor (EWM) Configuration....................................................................................115 3.3.11.1 3.3.11.2 3.3.11.3 EWM clocks.............................................................................................................................116 EWM low-power modes..........................................................................................................116 EWM_OUT pin state in low power modes..............................................................................117
3.3.12
3.4
OSC Configuration......................................................................................................................................119 3.4.2.1 3.4.2.2 External reference clock...........................................................................................................120 OSC modes of operation with MCG........................................................................................120
3.4.3 3.5
Memories and Memory Interfaces................................................................................................................................121 3.5.1 Flash Memory Configuration.......................................................................................................................121 3.5.1.1 3.5.1.2 Flash memory types.................................................................................................................122 Flash Memory Sizes.................................................................................................................122 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Section Number
3.5.1.3 3.5.1.4 3.5.1.5 3.5.1.6 3.5.1.7 3.5.1.8 3.5.1.9 3.5.2
Title
Page
Flash Memory Size Considerations.........................................................................................123 Flash Memory Map..................................................................................................................123 Flash Security...........................................................................................................................124 Flash Modes.............................................................................................................................124 Erase All Flash Contents..........................................................................................................124 FTFL_OPT Register................................................................................................................125 Program Flash Swap................................................................................................................125
Flash Memory Controller Configuration.....................................................................................................125 3.5.2.1 3.5.2.2 Number of masters...................................................................................................................126 Program Flash Swap................................................................................................................126
3.5.3
SRAM Configuration...................................................................................................................................126 3.5.3.1 3.5.3.2 3.5.3.3 3.5.3.4 3.5.3.5 SRAM sizes..............................................................................................................................127 SRAM Arrays..........................................................................................................................127 SRAM retention in low power modes......................................................................................128 SRAM accesses........................................................................................................................128 SRAM arbitration and priority control.....................................................................................129
3.5.4 3.5.5
SRAM Controller Configuration.................................................................................................................130 System Register File Configuration.............................................................................................................130 3.5.5.1 Register file..............................................................................................................................131
3.5.6
3.5.7
EzPort Configuration...................................................................................................................................132 3.5.7.1 3.5.7.2 JTAG instruction......................................................................................................................133 Flash Option Register (FOPT).................................................................................................133
3.5.8
FlexBus Configuration.................................................................................................................................133 3.5.8.1 3.5.8.2 3.5.8.3 3.5.8.4 FlexBus clocking......................................................................................................................134 FlexBus signal multiplexing....................................................................................................134 FlexBus CSCR0 reset value.....................................................................................................136 FlexBus Security......................................................................................................................136 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Section Number
3.5.8.5 3.6
Title
Page
3.7
Analog...........................................................................................................................................................................137 3.7.1 16-bit SAR ADC with PGA Configuration.................................................................................................137 3.7.1.1 ADC instantiation information.................................................................................................138 3.7.1.1.1 3.7.1.2 3.7.1.3 3.7.1.4 3.7.1.5 3.7.1.6 3.7.1.7 3.7.1.8 3.7.1.9 3.7.2 Number of ADC channels.................................................................................138
DMA Support on ADC............................................................................................................138 ADC Connections/Channel Assignment..................................................................................138 ADC and PGA Reference Options...........................................................................................141 ADC triggers............................................................................................................................141 Alternate clock.........................................................................................................................142 Clock Gating............................................................................................................................142 ADC low-power modes...........................................................................................................142 PGA Integration.......................................................................................................................142
CMP Configuration......................................................................................................................................143 3.7.2.1 3.7.2.2 3.7.2.3 CMP input connections............................................................................................................144 CMP external references..........................................................................................................144 External window/sample input.................................................................................................145
3.7.3
12-bit DAC Configuration...........................................................................................................................145 3.7.3.1 3.7.3.2 3.7.3.3 12-bit DAC Overview..............................................................................................................145 12-bit DAC Output...................................................................................................................145 12-bit DAC External Reference...............................................................................................146
3.7.4
Section Number
3.8
Title
Page
Timers...........................................................................................................................................................................147 3.8.1 PDB Configuration......................................................................................................................................147 3.8.1.1 PDB Instantiation.....................................................................................................................148 3.8.1.1.1 3.8.1.1.2 3.8.1.2 3.8.1.3 3.8.1.4 3.8.1.5 3.8.1.6 3.8.2 PDB Output Triggers........................................................................................148 PDB Input Trigger Connections.......................................................................148
PDB Module Interconnections.................................................................................................149 Back-to-back Acknowledgement Connections........................................................................149 DAC External Trigger Input Connections...............................................................................149 Pulse-Out Connection..............................................................................................................149 Pulse-Out Enable Register Implementation.............................................................................150
FlexTimer Configuration.............................................................................................................................150 3.8.2.1 3.8.2.2 3.8.2.3 3.8.2.4 3.8.2.5 3.8.2.6 3.8.2.7 3.8.2.8 3.8.2.9 3.8.2.10 3.8.2.11 Instantiation Information..........................................................................................................150 External Clock Options............................................................................................................151 Fixed frequency clock..............................................................................................................151 Clock Gating............................................................................................................................151 FTM Interrupts.........................................................................................................................151 FTM Fault Detection Inputs.....................................................................................................152 FTM Hardware Triggers..........................................................................................................152 Input Capture Options for FTM1 and FTM2...........................................................................152 FTM output triggers for other modules....................................................................................153 FTM Global Time Base...........................................................................................................153 FTM BDM and debug halt mode.............................................................................................153
3.8.3
PIT Configuration........................................................................................................................................154 3.8.3.1 3.8.3.2 3.8.3.3 PIT/DMA Periodic Trigger Assignments ...............................................................................154 PIT/ADC Triggers....................................................................................................................154 Clock Gating............................................................................................................................155
3.8.4 3.8.5
Low-power timer configuration...................................................................................................................155 CMT Configuration......................................................................................................................................155 3.8.5.1 Instantiation Information..........................................................................................................156 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Section Number
3.8.5.2 3.8.5.3 3.8.6
Title
Page
3.9
Communication interfaces............................................................................................................................................158 3.9.1 Universal Serial Bus (USB) Subsystem.......................................................................................................158 3.9.1.1 3.9.1.2 USB Wakeup............................................................................................................................158 USB Power Distribution..........................................................................................................158 3.9.1.2.1 3.9.1.2.2 3.9.1.2.3 3.9.1.3 3.9.1.4 3.9.1.5 3.9.1.6 3.9.2 AA/AAA cells power supply............................................................................159 Li-Ion battery power supply..............................................................................159 USB bus power supply......................................................................................160
USB power management.........................................................................................................160 USB controller configuration...................................................................................................161 USB DCD Configuration.........................................................................................................161 USB Voltage Regulator Configuration....................................................................................162
CAN Configuration......................................................................................................................................163 3.9.2.1 3.9.2.2 3.9.2.3 3.9.2.4 Number of FlexCAN modules.................................................................................................163 Reset value of MDIS bit...........................................................................................................163 Number of message buffers.....................................................................................................163 FlexCAN Clocking..................................................................................................................164 3.9.2.4.1 3.9.2.4.2 3.9.2.5 3.9.2.6 3.9.2.7 Clocking Options..............................................................................................164 Clock Gating.....................................................................................................164
FlexCAN Interrupts..................................................................................................................164 FlexCAN Operation in Low Power Modes..............................................................................164 FlexCAN Doze Mode..............................................................................................................165
3.9.3
SPI configuration.........................................................................................................................................165 3.9.3.1 3.9.3.2 Number of SPI modules...........................................................................................................165 Number of CTARs...................................................................................................................166 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Section Number
3.9.3.3 3.9.3.4 3.9.3.5 3.9.3.6
Title
Page
TX FIFO size...........................................................................................................................166 RX FIFO Size...........................................................................................................................166 Number of PCS signals............................................................................................................166 DSPI Operation in Low Power Modes....................................................................................167 3.9.3.6.1 Using GPIO Interrupt to Wake from stop mode...............................................167
3.9.5
UART Configuration...................................................................................................................................169 3.9.5.1 3.9.5.2 3.9.5.3 3.9.5.4 UART configuration information............................................................................................169 Clock gating.............................................................................................................................170 UART wakeup.........................................................................................................................170 UART interrupts......................................................................................................................170
3.9.6
3.9.7
I2S configuration..........................................................................................................................................173 3.9.7.1 3.9.7.2 3.9.7.3 3.9.7.4 3.9.7.5 3.9.7.6 I2S pullup/pulldown resistor controls......................................................................................173 Interrupts..................................................................................................................................173 DMA requests..........................................................................................................................173 I2S clock generation.................................................................................................................174 Clock gating.............................................................................................................................174 I2S operation in low power modes..........................................................................................174
3.10
Human-machine interfaces (HMI)................................................................................................................................175 3.10.1 GPIO configuration......................................................................................................................................175 3.10.1.1 3.10.1.2 GPIO access protection............................................................................................................175 Number of GPIO signals..........................................................................................................175 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
10
Section Number
3.10.2
Title
Page
TSI Configuration........................................................................................................................................176 3.10.2.1 3.10.2.2 3.10.2.3 3.10.2.4 Number of inputs.....................................................................................................................176 TSI clocks................................................................................................................................176 Clock gating.............................................................................................................................177 TSI Interrupts...........................................................................................................................177
3.10.3
Segment LCD Configuration.......................................................................................................................177 3.10.3.1 3.10.3.2 3.10.3.3 3.10.3.4 3.10.3.5 3.10.3.6 Instantiation information..........................................................................................................178 Clock Gating............................................................................................................................178 LCD pin assignments...............................................................................................................178 LCD pin enable, backplane enable, and waveform registers...................................................178 LCD clock source.....................................................................................................................179 Segment LCD Interrupts..........................................................................................................179
Flash Memory Map.......................................................................................................................................................183 SRAM memory map.....................................................................................................................................................184 Peripheral bridge (AIPS-Lite0 and AIPS-Lite1) memory maps...................................................................................184 4.5.1 4.5.2 Peripheral Bridge 0 (AIPS-Lite 0) Memory Map........................................................................................185 Peripheral Bridge 1 (AIPS-Lite 1) Memory Map........................................................................................189
4.6
Section Number
5.4
Title
Page
5.5
Internal clocking requirements.....................................................................................................................................198 5.5.1 5.5.2 Clock divider values after reset....................................................................................................................199 VLPR mode clocking...................................................................................................................................200
5.6 5.7
Clock Gating.................................................................................................................................................................200 Module clocks...............................................................................................................................................................200 5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9 5.7.10 5.7.11 PMC 1-kHz LPO clock................................................................................................................................202 WDOG clocking..........................................................................................................................................202 Debug trace clock.........................................................................................................................................203 PORT digital filter clocking.........................................................................................................................203 LPTMR clocking..........................................................................................................................................203 USB OTG Controller clocking....................................................................................................................204 FlexCAN clocking.......................................................................................................................................205 UART Clocking...........................................................................................................................................205 SDHC clocking............................................................................................................................................205 I2S Clocking................................................................................................................................................206 TSI clocking.................................................................................................................................................206
Low-voltage detect (LVD) reset..............................................................................................211 Computer operating properly (COP) watchdog reset..............................................................211 Low leakage wakeup (LLWU) reset........................................................................................212 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
12
Section Number
6.2.2.5 6.2.2.6 6.2.2.7 6.2.2.8 6.2.2.9 6.2.3
Title
Page
Multipurpose clock generator loss-of-clock (LOC) reset........................................................212 Software reset (SW).................................................................................................................212 Lockup reset (LOCKUP).........................................................................................................213 EzPort reset..............................................................................................................................213 MDM-AP system reset request................................................................................................213
Debug resets.................................................................................................................................................213 6.2.3.1 6.2.3.2 6.2.3.3 JTAG reset...............................................................................................................................213 nTRST reset.............................................................................................................................214 Resetting the Debug subsystem...............................................................................................214
6.3
Boot...............................................................................................................................................................................215 6.3.1 6.3.2 6.3.3 6.3.4 Boot sources.................................................................................................................................................215 Boot options.................................................................................................................................................215 FOPT boot options.......................................................................................................................................215 Boot sequence..............................................................................................................................................216
Chapter 8 Security
8.1 8.2 8.3 Introduction...................................................................................................................................................................227 Flash Security................................................................................................................................................................227 Security Interactions with other Modules.....................................................................................................................228 8.3.1 8.3.2 Security interactions with FlexBus..............................................................................................................228 Security Interactions with EzPort................................................................................................................228
Section Number
8.3.3
Title
Page
Chapter 9 Debug
9.1 Introduction...................................................................................................................................................................231 9.1.1 9.2 References....................................................................................................................................................233
The Debug Port.............................................................................................................................................................233 9.2.1 9.2.2 JTAG-to-SWD change sequence.................................................................................................................234 JTAG-to-cJTAG change sequence...............................................................................................................234
9.3 9.4
9.5
JTAG status and control registers.................................................................................................................................236 9.5.1 9.5.2 MDM-AP Control Register..........................................................................................................................237 MDM-AP Status Register............................................................................................................................239
Debug Resets................................................................................................................................................................240 AHB-AP........................................................................................................................................................................241 ITM...............................................................................................................................................................................241 Core Trace Connectivity...............................................................................................................................................242 Embedded Trace Macrocell v3.5 (ETM)......................................................................................................................243 Coresight Embedded Trace Buffer (ETB)....................................................................................................................243 9.11.1 9.11.2 Performance Profiling with the ETB...........................................................................................................244 ETB Counter Control...................................................................................................................................244
TPIU..............................................................................................................................................................................245 DWT.............................................................................................................................................................................245 Debug in Low Power Modes........................................................................................................................................246 9.14.1 Debug Module State in Low Power Modes.................................................................................................246
9.15
Section Number
Page
10.1 10.2
Introduction...................................................................................................................................................................249 Signal Multiplexing Integration....................................................................................................................................249 10.2.1 10.2.2 10.2.3 Port control and interrupt module features..................................................................................................250 Clock gating.................................................................................................................................................250 Signal multiplexing constraints....................................................................................................................250
10.3
Pinout............................................................................................................................................................................251 10.3.1 10.3.2 K40 Signal Multiplexing and Pin Assignments...........................................................................................251 K40 Pinouts..................................................................................................................................................256
10.4
Module Signal Description Tables................................................................................................................................258 10.4.1 10.4.2 10.4.3 10.4.4 10.4.5 10.4.6 10.4.7 Core Modules...............................................................................................................................................258 System Modules...........................................................................................................................................259 Clock Modules.............................................................................................................................................260 Memories and Memory Interfaces...............................................................................................................260 Analog..........................................................................................................................................................261 Communication Interfaces...........................................................................................................................263 Human-Machine Interfaces (HMI)..............................................................................................................268
Section Number
11.3 11.4
Title
Page
Detailed signal descriptions..........................................................................................................................................273 Memory map and register definition.............................................................................................................................273 11.4.1 11.4.2 11.4.3 11.4.4 11.4.5 11.4.6 11.4.7 Pin Control Register n (PORTx_PCRn).......................................................................................................280 Global Pin Control Low Register (PORTx_GPCLR)..................................................................................282 Global Pin Control High Register (PORTx_GPCHR).................................................................................283 Interrupt Status Flag Register (PORTx_ISFR)............................................................................................283 Digital Filter Enable Register (PORTx_DFER)...........................................................................................284 Digital Filter Clock Register (PORTx_DFCR)............................................................................................285 Digital Filter Width Register (PORTx_DFWR)..........................................................................................285
11.5
Functional description...................................................................................................................................................286 11.5.1 11.5.2 11.5.3 11.5.4 Pin control....................................................................................................................................................286 Global pin control........................................................................................................................................287 External interrupts........................................................................................................................................287 Digital filter..................................................................................................................................................288
Memory map and register definition.............................................................................................................................290 12.2.1 12.2.2 12.2.3 12.2.4 12.2.5 12.2.6 12.2.7 System Options Register 1 (SIM_SOPT1)..................................................................................................292 System Options Register 2 (SIM_SOPT2)..................................................................................................293 System Options Register 4 (SIM_SOPT4)..................................................................................................296 System Options Register 5 (SIM_SOPT5)..................................................................................................298 System Options Register 6 (SIM_SOPT6)..................................................................................................299 System Options Register 7 (SIM_SOPT7)..................................................................................................301 System Device Identification Register (SIM_SDID)...................................................................................303 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
16
Section Number
12.2.8 12.2.9 12.2.10 12.2.11 12.2.12 12.2.13 12.2.14 12.2.15 12.2.16 12.2.17 12.2.18 12.2.19 12.2.20 12.2.21 12.2.22 12.3
Title
Page
System Clock Gating Control Register 1 (SIM_SCGC1)............................................................................305 System Clock Gating Control Register 2 (SIM_SCGC2)............................................................................306 System Clock Gating Control Register 3 (SIM_SCGC3)............................................................................307 System Clock Gating Control Register 4 (SIM_SCGC4)............................................................................309 System Clock Gating Control Register 5 (SIM_SCGC5)............................................................................311 System Clock Gating Control Register 6 (SIM_SCGC6)............................................................................313 System Clock Gating Control Register 7 (SIM_SCGC7)............................................................................316 System Clock Divider Register 1 (SIM_CLKDIV1)...................................................................................317 System Clock Divider Register 2 (SIM_CLKDIV2)...................................................................................319 Flash Configuration Register 1 (SIM_FCFG1)...........................................................................................320 Flash Configuration Register 2 (SIM_FCFG2)...........................................................................................322 Unique Identification Register High (SIM_UIDH).....................................................................................323 Unique Identification Register Mid-High (SIM_UIDMH)..........................................................................324 Unique Identification Register Mid Low (SIM_UIDML)...........................................................................324 Unique Identification Register Low (SIM_UIDL)......................................................................................325
Functional description...................................................................................................................................................325
Wait Modes..............................................................................................................................333 13.1.2.3.1 13.1.2.3.2 Wait Mode........................................................................................................333 Very Low Power Wait (VLPW) Mode.............................................................334
Section Number
13.1.2.4
Title
Page
Stop Modes..............................................................................................................................334 13.1.2.4.1 13.1.2.4.2 13.1.2.4.3 13.1.2.4.4 Stop Mode.........................................................................................................335 Very Low Power Stop (VLPS) Mode...............................................................335 Low-Leakage Stop (LLS) Mode.......................................................................336 Very Low-Leakage Stop (VLLS3,2,1) Modes.................................................337
13.1.2.5 13.1.3
MCU Reset...................................................................................................................................................338 13.1.3.1 13.1.3.2 13.1.3.3 13.1.3.4 13.1.3.5 13.1.3.6 13.1.3.7 13.1.3.8 13.1.3.9 13.1.3.10 13.1.3.11 Power-On Reset (POR)............................................................................................................339 External RESET Pin.................................................................................................................339 Computer Operating Properly (COP) Timer Reset..................................................................339 Multi-Clock Generator (MCG) Loss-of-Clock (LOC) Reset..................................................339 Low-Voltage Detect (LVD) Reset...........................................................................................340 Low Leakage Mode Recovery.................................................................................................340 Software (SW) Reset................................................................................................................340 Lock-Up Reset.........................................................................................................................341 EzPort Reset.............................................................................................................................341 MDM-AP System Reset Request.............................................................................................341 JTAG Reset..............................................................................................................................341
13.2
Mode Control Memory Map/Register Definition.........................................................................................................341 13.2.1 13.2.2 13.2.3 13.2.4 System Reset Status Register High (MC_SRSH)........................................................................................342 System Reset Status Register Low (MC_SRSL).........................................................................................343 Power Mode Protection Register (MC_PMPROT).....................................................................................345 Power Mode Control Register (MC_PMCTRL)..........................................................................................346
Section Number
14.3.2 14.3.3 14.4
Title
Page
PMC Memory Map/Register Definition.......................................................................................................................351 14.4.1 14.4.2 14.4.3 Low Voltage Detect Status and Control 1 Register (PMC_LVDSC1)........................................................351 Low Voltage Detect Status and Control 2 Register (PMC_LVDSC2)........................................................352 Regulator Status and Control Register (PMC_REGSC)..............................................................................354
Block diagram..............................................................................................................................................359
LLWU Signal Descriptions...........................................................................................................................................360 Memory map/register definition...................................................................................................................................361 15.3.1 15.3.2 15.3.3 15.3.4 15.3.5 15.3.6 15.3.7 15.3.8 15.3.9 LLWU Pin Enable 1 Register (LLWU_PE1)..............................................................................................361 LLWU Pin Enable 2 Register (LLWU_PE2)..............................................................................................363 LLWU Pin Enable 3 Register (LLWU_PE3)..............................................................................................364 LLWU Pin Enable 4 Register (LLWU_PE4)..............................................................................................365 LLWU Module Enable Register (LLWU_ME)...........................................................................................366 LLWU Flag 1 Register (LLWU_F1)...........................................................................................................368 LLWU Flag 2 Register (LLWU_F2)...........................................................................................................369 LLWU Flag 3 Register (LLWU_F3)...........................................................................................................371 LLWU Control and Status Register (LLWU_CS).......................................................................................373
15.4
Functional description...................................................................................................................................................374 15.4.1 LLS mode.....................................................................................................................................................374 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
19
Section Number
15.4.2 15.4.3
Title
Page
Memory Map/Register Descriptions.............................................................................................................................377 16.2.1 16.2.2 16.2.3 16.2.4 16.2.5 16.2.6 16.2.7 Crossbar switch (AXBS) master configuration (MCM_PLAMC)..............................................................378 Crossbar switch (AXBS) slave configuration (MCM_PLASC)..................................................................378 SRAM arbitration and protection (MCM_SRAMAP).................................................................................379 Interrupt status register (MCM_ISR)...........................................................................................................380 ETB counter control register (MCM_ETBCC)...........................................................................................381 ETB reload register (MCM_ETBRL)..........................................................................................................382 ETB counter value register (MCM_ETBCNT)...........................................................................................383
Memory Map / Register Definition...............................................................................................................................386 17.2.1 17.2.2 17.2.3 Priority Registers Slave (AXBS_PRSn)......................................................................................................387 Control Register (AXBS_CRSn).................................................................................................................390 Master General Purpose Control Register (AXBS_MGPCRn)...................................................................392
17.3
Functional Description..................................................................................................................................................393 17.3.1 17.3.2 17.3.3 General Operation........................................................................................................................................393 Register Coherency......................................................................................................................................394 Arbitration....................................................................................................................................................395 17.3.3.1 17.3.3.2 17.3.3.3 Arbitration During Undefined Length Bursts..........................................................................395 Fixed-Priority Operation..........................................................................................................396 Round-Robin Priority Operation..............................................................................................397
Section Number
17.3.3.4 17.4
Title
Page
Priority Assignment.................................................................................................................397
Initialization/Application Information..........................................................................................................................398
Memory Map/Register Definition.................................................................................................................................401 18.3.1 18.3.2 18.3.3 18.3.4 18.3.5 18.3.6 18.3.7 18.3.8 Control/Error Status Register (MPU_CESR)..............................................................................................404 Error Address Register, Slave Port n (MPU_EARn)...................................................................................405 Error Detail Register, Slave Port n (MPU_EDRn)......................................................................................406 Region Descriptor n, Word 0 (MPU_RGDn_WORD0)..............................................................................408 Region Descriptor n, Word 1 (MPU_RGDn_WORD1)..............................................................................408 Region Descriptor n, Word 2 (MPU_RGDn_WORD2)..............................................................................409 Region Descriptor n, Word 3 (MPU_RGDn_WORD3)..............................................................................411 Region Descriptor Alternate Access Control n (MPU_RGDAACn)...........................................................412
18.4
Functional Description..................................................................................................................................................414 18.4.1 Access Evaluation Macro.............................................................................................................................414 18.4.1.1 18.4.1.2 18.4.2 18.4.3 Hit Determination....................................................................................................................415 Privilege Violation Determination...........................................................................................415
18.5 18.6
Section Number
19.1.2 19.2
Title
Page
General Operation........................................................................................................................................421
Memory Map/Register Definition.................................................................................................................................422 19.2.1 19.2.2 Master Privilege Register A (AIPSx_MPRA).............................................................................................423 Peripheral Access Control Register (AIPSx_PACRn).................................................................................426
19.3
External signal description............................................................................................................................................434 Memory map/register definition...................................................................................................................................435 20.3.1 Channel Configuration Register (DMAMUX_CHCFGn)...........................................................................435
20.4
Functional description...................................................................................................................................................436 20.4.1 20.4.2 20.4.3 DMA channels with periodic triggering capability......................................................................................437 DMA channels with no triggering capability...............................................................................................439 "Always enabled" DMA sources.................................................................................................................439
20.5
Section Number
21.2.2 21.2.3 21.3
Title
Page
Memory Map/Register Definition.................................................................................................................................448 21.3.1 21.3.2 21.3.3 21.3.4 21.3.5 21.3.6 21.3.7 21.3.8 21.3.9 21.3.10 21.3.11 21.3.12 21.3.13 21.3.14 21.3.15 21.3.16 21.3.17 21.3.18 21.3.19 21.3.20 21.3.21 Control Register (DMA_CR).......................................................................................................................463 Error Status Register (DMA_ES)................................................................................................................465 Enable Request Register (DMA_ERQ).......................................................................................................467 Enable Error Interrupt Register (DMA_EEI)...............................................................................................469 Set Enable Request Register (DMA_SERQ)...............................................................................................473 Clear Enable Request Register (DMA_CERQ)...........................................................................................472 Set Enable Error Interrupt Register (DMA_SEEI)......................................................................................471 Clear Enable Error Interrupt Register (DMA_CEEI)..................................................................................471 Clear Interrupt Request Register (DMA_CINT).........................................................................................476 Clear Error Register (DMA_CERR)............................................................................................................475 Set START Bit Register (DMA_SSRT)......................................................................................................474 Clear DONE Status Bit Register (DMA_CDNE)........................................................................................474 Interrupt Request Register (DMA_INT)......................................................................................................477 Error Register (DMA_ERR)........................................................................................................................479 Hardware Request Status Register (DMA_HRS)........................................................................................481 Channel n Priority Register (DMA_DCHPRIn)..........................................................................................483 TCD Source Address (DMA_TCDn_SADDR)...........................................................................................484 TCD Transfer Attributes (DMA_TCDn_ATTR).........................................................................................485 TCD Signed Source Address Offset (DMA_TCDn_SOFF)........................................................................485 TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCDn_NBYTES_MLNO).................................486 TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCDn_NBYTES_MLOFFNO).......................................................................................................487 21.3.22 TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCDn_NBYTES_MLOFFYES).....................................................................................................488 21.3.23 21.3.24 TCD Last Source Address Adjustment (DMA_TCDn_SLAST).................................................................489 TCD Destination Address (DMA_TCDn_DADDR)...................................................................................489
Section Number
21.3.25
Title
Page
TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCDn_CITER_ELINKYES)...........................................................................................................490
21.3.26
TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCDn_CITER_ELINKNO)............................................................................................................491
TCD Signed Destination Address Offset (DMA_TCDn_DOFF)................................................................490 TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCDn_DLASTSGA)..........492 TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCDn_BITER_ELINKYES)...........................................................................................................495
21.3.30
TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCDn_BITER_ELINKNO)............................................................................................................496
21.3.31 21.4
Functional Description..................................................................................................................................................497 21.4.1 21.4.2 21.4.3 21.4.4 eDMA Microarchitecture.............................................................................................................................497 eDMA Basic Data Flow...............................................................................................................................499 Error Reporting and Handling......................................................................................................................502 Channel Preemption.....................................................................................................................................504
21.5
Initialization/Application Information..........................................................................................................................504 21.5.1 21.5.2 21.5.3 eDMA Initialization.....................................................................................................................................504 DMA Programming Errors..........................................................................................................................507 DMA Arbitration Mode Considerations......................................................................................................507 21.5.3.1 21.5.3.2 21.5.4 Fixed Channel Arbitration.......................................................................................................507 Round Robin Channel Arbitration...........................................................................................508
DMA Transfer..............................................................................................................................................508 21.5.4.1 21.5.4.2 21.5.4.3 Single Request..........................................................................................................................508 Multiple Requests....................................................................................................................509 Modulo Feature........................................................................................................................511
21.5.5
eDMA TCDn Status Monitoring..................................................................................................................512 21.5.5.1 21.5.5.2 21.5.5.3 Minor Loop Complete..............................................................................................................512 Active Channel TCDn Reads...................................................................................................513 Preemption Status....................................................................................................................513 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
24
Section Number
21.5.6 21.5.7
Title
Page
Channel Linking...........................................................................................................................................514 Dynamic Programming................................................................................................................................515 21.5.7.1 21.5.7.2 Dynamic Priority Changing.....................................................................................................515 Dynamic Channel Linking and Dynamic Scatter/Gather........................................................516
Block Diagram.............................................................................................................................................519
EWM Signal Descriptions............................................................................................................................................519 Memory Map/Register Definition.................................................................................................................................520 22.3.1 22.3.2 22.3.3 22.3.4 Control Register (EWM_CTRL).................................................................................................................520 Service Register (EWM_SERV)..................................................................................................................521 Compare Low Register (EWM_CMPL)......................................................................................................521 Compare High Register (EWM_CMPH).....................................................................................................522
22.4
Functional Description..................................................................................................................................................523 22.4.1 22.4.2 22.4.3 22.4.4 22.4.5 The EWM_out Signal..................................................................................................................................523 The EWM_in Signal....................................................................................................................................523 EWM Counter..............................................................................................................................................524 EWM Compare Registers............................................................................................................................524 EWM Refresh Mechanism...........................................................................................................................525
Section Number
23.3
Title
Page
Functional Overview.....................................................................................................................................................529 23.3.1 23.3.2 23.3.3 23.3.4 23.3.5 23.3.6 23.3.7 Unlocking and Updating the Watchdog.......................................................................................................530 The Watchdog Configuration Time (WCT).................................................................................................531 Refreshing the Watchdog.............................................................................................................................532 Windowed Mode of Operation....................................................................................................................532 Watchdog Disabled Mode of Operation......................................................................................................532 Low Power Modes of Operation..................................................................................................................532 Debug Modes of Operation..........................................................................................................................533
23.4
Backup Reset Generator...............................................................................................................................................536 Generated Resets and Interrupts...................................................................................................................................536 Memory Map and Register Definition..........................................................................................................................537 23.7.1 23.7.2 23.7.3 23.7.4 23.7.5 23.7.6 23.7.7 23.7.8 23.7.9 23.7.10 23.7.11 23.7.12 Watchdog Status and Control Register High (WDOG_STCTRLH)...........................................................538 Watchdog Status and Control Register Low (WDOG_STCTRLL)............................................................540 Watchdog Time-out Value Register High (WDOG_TOVALH).................................................................540 Watchdog Time-out Value Register Low (WDOG_TOVALL)..................................................................541 Watchdog Window Register High (WDOG_WINH)..................................................................................541 Watchdog Window Register Low (WDOG_WINL)...................................................................................542 Watchdog Refresh Register (WDOG_REFRESH)......................................................................................542 Watchdog Unlock Register (WDOG_UNLOCK).......................................................................................543 Watchdog Timer Output Register High (WDOG_TMROUTH).................................................................543 Watchdog Timer Output Register Low (WDOG_TMROUTL)..................................................................544 Watchdog Reset Count Register (WDOG_RSTCNT).................................................................................544 Watchdog Prescaler Register (WDOG_PRESC).........................................................................................544
23.8
Watchdog Operation with 8-bit access.........................................................................................................................545 23.8.1 23.8.2 General Guideline........................................................................................................................................545 Refresh and Unlock operations with 8-bit access........................................................................................545 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
26
Section Number
23.9
Title
Page
External Signal Description..........................................................................................................................................552 Memory Map/Register Definition.................................................................................................................................552 24.3.1 24.3.2 24.3.3 24.3.4 24.3.5 24.3.6 24.3.7 24.3.8 24.3.9 24.3.10 MCG Control 1 Register (MCG_C1)...........................................................................................................553 MCG Control 2 Register (MCG_C2)...........................................................................................................554 MCG Control 3 Register (MCG_C3)...........................................................................................................555 MCG Control 4 Register (MCG_C4)...........................................................................................................556 MCG Control 5 Register (MCG_C5)...........................................................................................................557 MCG Control 6 Register (MCG_C6)...........................................................................................................559 MCG Status Register (MCG_S)..................................................................................................................560 MCG Auto Trim Control Register (MCG_ATC)........................................................................................562 MCG Auto Trim Compare Value High Register (MCG_ATCVH)............................................................563 MCG Auto Trim Compare Value Low Register (MCG_ATCVL)..............................................................563
24.4
Functional Description..................................................................................................................................................564 24.4.1 MCG Mode State Diagram..........................................................................................................................564 24.4.1.1 24.4.1.2 24.4.2 24.4.3 MCG Modes of Operation.......................................................................................................565 MCG Mode Switching.............................................................................................................568
Low Power Bit Usage..................................................................................................................................569 MCG Internal Reference Clocks..................................................................................................................569 24.4.3.1 MCG Internal Reference Clock...............................................................................................569
External Reference Clock............................................................................................................................570 MCG Fixed Frequency Clock .....................................................................................................................570 MCG PLL Clock .........................................................................................................................................570 MCG Auto TRIM (ATM)............................................................................................................................570 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
27
Section Number
24.5
Title
Page
Initialization / Application Information........................................................................................................................572 24.5.1 MCG Module Initialization Sequence.........................................................................................................572 24.5.1.1 24.5.2 24.5.3 Initializing the MCG................................................................................................................572
Using a 32.768 kHz Reference....................................................................................................................574 MCG Mode Switching.................................................................................................................................575 24.5.3.1 Example 1: Moving from FEI to PEE Mode: External Crystal = 4 MHz, MCGOUT Frequency = 48 MHz...............................................................................................................576 24.5.3.2 24.5.3.3 Example 2: Moving from PEE to BLPI Mode: MCGOUT Frequency =32 kHz....................580 Example 3: Moving from BLPI to FEE Mode.........................................................................582
Functional Description..................................................................................................................................................591 25.8.1 OSC Module States......................................................................................................................................591 25.8.1.1 25.8.1.2 25.8.1.3 25.8.1.4 25.8.2 Off............................................................................................................................................592 Oscillator Start-Up...................................................................................................................592 Oscillator Stable.......................................................................................................................593 External Clock Mode...............................................................................................................593
OSC Module Modes.....................................................................................................................................593 25.8.2.1 25.8.2.2 25.8.2.3 Low-Frequency, High-Gain Mode...........................................................................................594 Low-Frequency, Low-Power Mode.........................................................................................594 High-Frequency, High-Gain Mode..........................................................................................594
Section Number
25.8.2.4 25.8.3 25.8.4 25.9
Title
Page
Reset..............................................................................................................................................................................595
25.10 Interrupts.......................................................................................................................................................................596
RTC Signal Descriptions..............................................................................................................................................598 26.2.1 26.2.2 26.2.3 26.2.4 Vdda_osc_3v 3V Analog Supply Voltage..............................................................................................598 Vssa_osc_3v Analog Ground..................................................................................................................598 EXTAL32 Oscillator Input.....................................................................................................................599 XTAL32 Oscillator Output.....................................................................................................................599
External Crystal Connections.......................................................................................................................................599 Memory Map/Register Descriptions.............................................................................................................................599 Functional Description..................................................................................................................................................600 Reset Overview.............................................................................................................................................................600 Interrupts.......................................................................................................................................................................600
Modes of operation.......................................................................................................................................................602 External signal description............................................................................................................................................602 Memory map and register descriptions.........................................................................................................................602 27.4.1 Flash Access Protection Register (FMC_PFAPR).......................................................................................609
Section Number
27.4.2 27.4.3 27.4.4 27.4.5 27.4.6 27.4.7 27.4.8 27.4.9 27.4.10 27.4.11 27.4.12 27.4.13 27.4.14 27.4.15 27.5
Title
Page
Flash Bank 0 Control Register (FMC_PFB0CR)........................................................................................612 Flash Bank 1 Control Register (FMC_PFB1CR)........................................................................................614 Cache Directory Storage (FMC_TAGVDW0Sn)........................................................................................616 Cache Directory Storage (FMC_TAGVDW1Sn)........................................................................................617 Cache Directory Storage (FMC_TAGVDW2Sn)........................................................................................617 Cache Directory Storage (FMC_TAGVDW3Sn)........................................................................................618 Cache Data Storage (upper word) (FMC_DATAW0SnU)..........................................................................619 Cache Data Storage (lower word) (FMC_DATAW0SnL)..........................................................................620 Cache Data Storage (upper word) (FMC_DATAW1SnU)..........................................................................621 Cache Data Storage (lower word) (FMC_DATAW1SnL)..........................................................................621 Cache Data Storage (upper word) (FMC_DATAW2SnU)..........................................................................622 Cache Data Storage (lower word) (FMC_DATAW2SnL)..........................................................................623 Cache Data Storage (upper word) (FMC_DATAW3SnU)..........................................................................623 Cache Data Storage (lower word) (FMC_DATAW3SnL)..........................................................................624
Functional description...................................................................................................................................................625
External Signal Description..........................................................................................................................................633 Memory Map and Registers..........................................................................................................................................633 28.3.1 Flash Configuration Field Description.........................................................................................................633 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
30
Section Number
28.3.2
Title
Page
28.3.3
Data Flash IFR Map.....................................................................................................................................634 28.3.3.1 28.3.3.2 EEPROM Data Set Size...........................................................................................................635 FlexNVM Partition Code.........................................................................................................636
28.3.4
Register Descriptions...................................................................................................................................637 28.34.1 28.34.2 28.34.3 28.34.4 28.34.5 28.34.6 28.34.7 28.34.8 Flash Option Register (FTFL_FOPT)......................................................................................644 Flash Security Register (FTFL_FSEC)....................................................................................642 Flash Configuration Register (FTFL_FCNFG).......................................................................640 Flash Status Register (FTFL_FSTAT).....................................................................................639 Flash Common Command Object Registers (FTFL_FCCOBn)..............................................644 Program Flash Protection Registers (FTFL_FPROTn)...........................................................646 Data Flash Protection Register (FTFL_FDPROT)..................................................................648 EEPROM Protection Register (FTFL_FEPROT)....................................................................647
28.4
Functional Description..................................................................................................................................................649 28.4.1 28.4.2 28.4.3 Program Flash Memory Swap......................................................................................................................649 Flash Protection............................................................................................................................................650 FlexNVM Description..................................................................................................................................653 28.4.3.1 28.4.3.2 28.4.3.3 28.4.3.4 28.4.3.5 FlexNVM Block Partitioning for FlexRAM............................................................................653 EEPROM User Perspective.....................................................................................................653 EEPROM Implementation Overview......................................................................................655 Write Endurance to FlexRAM for EEPROM..........................................................................656 EEPROM Data Record Structure.............................................................................................657 28.4.3.5.1 28.4.4 28.4.5 EEPROM Data Record States while Programming a Record..........................657
Interrupts......................................................................................................................................................659 Flash Operation in Low-Power Modes........................................................................................................659 28.4.5.1 28.4.5.2 Wait Mode................................................................................................................................659 Stop Mode................................................................................................................................660
28.4.6
Functional Modes of Operation...................................................................................................................660 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
31
Section Number
28.4.7 28.4.8 28.4.9 28.4.10
Title
Page
Flash Reads and Ignored Writes..................................................................................................................660 Read While Write (RWW)...........................................................................................................................660 Flash Program and Erase..............................................................................................................................661 FTFL Command Operations........................................................................................................................661 28.4.10.1 Command Write Sequence.......................................................................................................661 28.4.10.1.1 28.4.10.1.2 28.4.10.1.3 28.4.10.2 28.4.10.3 28.4.10.4 Load the FCCOB Registers..............................................................................662 Launch the Command by Clearing CCIF.........................................................662 Command Execution and Error Reporting.......................................................662
28.4.11 28.4.12
Margin Read Commands.............................................................................................................................668 FTFL Command Description.......................................................................................................................669 28.4.12.1 28.4.12.2 28.4.12.3 28.4.12.4 28.4.12.5 28.4.12.6 28.4.12.7 Read 1s Block Command.........................................................................................................670 Read 1s Section Command......................................................................................................671 Program Check Command.......................................................................................................672 Read Resource Command........................................................................................................674 Program Longword Command.................................................................................................675 Erase Flash Block Command...................................................................................................676 Erase Flash Sector Command..................................................................................................677 28.4.12.7.1 28.4.12.7.2 28.4.12.7.3 28.4.12.8 Suspending an Erase Flash Sector Operation...................................................678 Resuming a Suspended Erase Flash Sector Operation.....................................678 Aborting a Suspended Erase Flash Sector Operation.......................................679
28.4.12.9
Section Number
Title
Page
28.4.12.12 Erase All Blocks Command.....................................................................................................686 28.4.12.12.1 Triggering an Erase All External to the FTFL..................................................686 28.4.12.13 Verify Backdoor Access Key Command.................................................................................687 28.4.12.14 Program Partition Command...................................................................................................688 28.4.12.15 Set FlexRAM Function Command..........................................................................................691 28.4.13 Security........................................................................................................................................................692 28.4.13.1 28.4.13.2 FTFL Access by Mode and Security........................................................................................693 Changing the Security State.....................................................................................................693 28.4.13.2.1 28.4.14 Unsecuring the MCU Using Backdoor Key Access.........................................693
Reset Sequence............................................................................................................................................694
Signal Descriptions.......................................................................................................................................................698 29.2.1 29.2.2 29.2.3 29.2.4 29.2.5 29.2.6 29.2.7 29.2.8 29.2.9 Address and Data Buses (FB_An, FB_Dn, FB_ADn).................................................................................699 Chip Selects (FB_CS[5 :0]).........................................................................................................................699 Byte Enables/Byte Write Enables (FB_BE/BWE[3:0])...............................................................................700 Output Enable (FB_OE)...............................................................................................................................700 Read/Write (FB_R/W).................................................................................................................................700 Address Latch Enable (FB_ALE)................................................................................................................700 Transfer Size (FB_TSIZ[1:0]).....................................................................................................................700 Transfer Burst (FB_TBST)..........................................................................................................................701 Transfer Acknowledge (FB_TA).................................................................................................................701
29.3
Memory Map/Register Definition.................................................................................................................................702 29.3.1 29.3.2 Chip select address register (FB_CSARn)...................................................................................................703 Chip select mask register (FB_CSMRn)......................................................................................................704 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
33
Section Number
29.3.3 29.3.4 29.4
Title
Page
Chip select control register (FB_CSCRn)....................................................................................................706 Chip select port multiplexing control register (FB_CSPMCR)...................................................................709
Functional Description..................................................................................................................................................710 29.4.1 Chip-Select Operation..................................................................................................................................710 29.4.1.1 29.4.1.2 29.4.2 29.4.3 29.4.4 29.4.5 General Chip-Select Operation................................................................................................711 8-, 16-, and 32-Bit Port Sizing.................................................................................................711
Data Transfer Operation...............................................................................................................................712 Data Byte Alignment and Physical Connections.........................................................................................712 Address/Data Bus Multiplexing...................................................................................................................713 Bus Cycle Execution....................................................................................................................................714 29.4.5.1 Data Transfer Cycle States.......................................................................................................714
29.4.6
FlexBus Timing Examples...........................................................................................................................715 29.4.6.1 29.4.6.2 29.4.6.3 Basic Read Bus Cycle..............................................................................................................716 Basic Write Bus Cycle.............................................................................................................717 Bus Cycle Sizing......................................................................................................................719 29.4.6.3.1 29.4.6.3.2 29.4.6.3.3 29.4.6.4 Bus Cycle SizingByte Transfer, 8-bit Device, No Wait States.....................719 Bus Cycle SizingWord Transfer, 16-bit Device, No Wait States.................721 Bus Cycle SizingLongword Transfer, 32-bit Device, No Wait States.........723
Timing Variations....................................................................................................................725 29.4.6.4.1 29.4.6.4.2 Wait States........................................................................................................725 Address Setup and Hold....................................................................................729
Chapter 30 EzPort
30.1 Overview.......................................................................................................................................................................745 30.1.1 30.1.2 Introduction..................................................................................................................................................745 Features........................................................................................................................................................746 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
34 Freescale Semiconductor, Inc.
Section Number
30.1.3 30.2
Title
Page
Modes of Operation.....................................................................................................................................746
External Signal Description..........................................................................................................................................747 30.2.1 30.2.2 30.2.3 30.2.4 EzPort Clock (EZP_CK)..............................................................................................................................747 EzPort Chip Select (EZP_CS)......................................................................................................................748 EzPort Serial Data In (EZP_D)....................................................................................................................748 EzPort Serial Data Out (EZP_Q).................................................................................................................748
30.3
Command Definition....................................................................................................................................................748 30.3.1 Command Descriptions................................................................................................................................749 30.3.1.1 30.3.1.2 30.3.1.3 30.3.1.4 30.3.1.5 30.3.1.6 30.3.1.7 30.3.1.8 30.3.1.9 30.3.1.10 30.3.1.11 30.3.1.12 30.3.1.13 30.3.1.14 Write Enable............................................................................................................................749 Write Disable...........................................................................................................................749 Read Status Register................................................................................................................750 Read Data.................................................................................................................................751 Read Data at High Speed.........................................................................................................752 Section Program.......................................................................................................................752 Sector Erase..............................................................................................................................752 Bulk Erase................................................................................................................................753 EzPort Reset Chip....................................................................................................................753 Write FCCOB Registers...........................................................................................................753 Read FCCOB Registers at High Speed....................................................................................754 Write FlexRAM.......................................................................................................................754 Read FlexRAM........................................................................................................................755 Read FlexRAM at High Speed.................................................................................................755
30.4
Section Number
31.1.3
Title
Page
Modes of operation......................................................................................................................................758 31.1.3.1 31.1.3.2 Run mode.................................................................................................................................758 Low power modes (wait or stop).............................................................................................758
31.2
Memory map and register descriptions.........................................................................................................................758 31.2.1 31.2.2 31.2.3 CRC Data Register (CRC_CRC).................................................................................................................759 CRC Polynomial Register (CRC_GPOLY).................................................................................................760 CRC Control Register (CRC_CTRL)..........................................................................................................761
31.3
Functional description...................................................................................................................................................762 31.3.1 31.3.2 CRC initialization/re-initialization...............................................................................................................762 CRC calculations..........................................................................................................................................762 31.3.2.1 31.3.2.2 31.3.3 16-bit CRC...............................................................................................................................762 32-bit CRC...............................................................................................................................763
31.3.4
ADC Signal Descriptions..............................................................................................................................................769 32.2.1 32.2.2 32.2.3 32.2.4 32.2.5 Analog power (VDDA)................................................................................................................................770 Analog ground (VSSA)................................................................................................................................770 Voltage reference select...............................................................................................................................770 Analog channel inputs (ADx)......................................................................................................................771 Differential analog channel inputs (DADx).................................................................................................771
32.3
Register Definition........................................................................................................................................................771 32.3.1 32.3.2 ADC status and control registers 1 (ADCx_SC1n)......................................................................................775 ADC configuration register 1 (ADCx_CFG1).............................................................................................777 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
36
Section Number
32.3.3 32.3.4 32.3.5 32.3.6 32.3.7 32.3.8 32.3.9 32.3.10 32.3.11 32.3.12 32.3.13 32.3.14 32.3.15 32.3.16 32.3.17 32.3.18 32.3.19 32.3.20 32.3.21 32.3.22 32.3.23 32.3.24 32.3.25 32.4
Title
Page
Configuration register 2 (ADCx_CFG2)......................................................................................................779 ADC data result register (ADCx_Rn)..........................................................................................................780 Compare value registers (ADCx_CVn).......................................................................................................782 Status and control register 2 (ADCx_SC2)..................................................................................................782 Status and control register 3 (ADCx_SC3)..................................................................................................784 ADC offset correction register (ADCx_OFS)..............................................................................................786 ADC plus-side gain register (ADCx_PG)....................................................................................................786 ADC minus-side gain register (ADCx_MG)...............................................................................................787 ADC plus-side general calibration value register (ADCx_CLPD)..............................................................788 ADC plus-side general calibration value register (ADCx_CLPS)...............................................................788 ADC plus-side general calibration value register (ADCx_CLP4)...............................................................789 ADC plus-side general calibration value register (ADCx_CLP3)...............................................................789 ADC plus-side general calibration value register (ADCx_CLP2)...............................................................790 ADC plus-side general calibration value register (ADCx_CLP1)...............................................................790 ADC plus-side general calibration value register (ADCx_CLP0)...............................................................791 ADC PGA register (ADCx_PGA)...............................................................................................................792 ADC minus-side general calibration value register (ADCx_CLMD)..........................................................793 ADC minus-side general calibration value register (ADCx_CLMS)..........................................................793 ADC minus-side general calibration value register (ADCx_CLM4)...........................................................794 ADC minus-side general calibration value register (ADCx_CLM3)...........................................................794 ADC minus-side general calibration value register (ADCx_CLM2)...........................................................795 ADC minus-side general calibration value register (ADCx_CLM1)...........................................................795 ADC minus-side general calibration value register (ADCx_CLM0)...........................................................796
Functional description...................................................................................................................................................796 32.4.1 32.4.2 32.4.3 32.4.4 PGA functional description..........................................................................................................................797 Clock select and divide control....................................................................................................................797 Voltage reference selection..........................................................................................................................798 Hardware trigger and channel selects..........................................................................................................799
Section Number
32.4.5
Title
Page
Conversion control.......................................................................................................................................799 32.4.5.1 32.4.5.2 32.4.5.3 32.4.5.4 32.4.5.5 32.4.5.6 Initiating conversions...............................................................................................................800 Completing conversions...........................................................................................................801 Aborting conversions...............................................................................................................801 Power control...........................................................................................................................802 Sample time and total conversion time....................................................................................802 Conversion time examples.......................................................................................................805 32.4.5.6.1 32.4.5.6.2 32.4.5.6.3 32.4.5.7 Typical conversion time configuration.............................................................805 Long conversion time configuration.................................................................805 Short conversion time configuration.................................................................806
Automatic compare function........................................................................................................................807 Calibration function.....................................................................................................................................808 User defined offset function.........................................................................................................................810 Temperature sensor......................................................................................................................................811 MCU wait mode operation...........................................................................................................................811 MCU Normal Stop mode operation.............................................................................................................812 32.4.11.1 32.4.11.2 Normal Stop mode with ADACK disabled..............................................................................812 Normal Stop mode with ADACK enabled..............................................................................812
32.4.12 32.5
Initialization information..............................................................................................................................................813 32.5.1 ADC module initialization example............................................................................................................814 32.5.1.1 32.5.1.2 Initialization sequence..............................................................................................................814 Pseudo-code example...............................................................................................................814
32.6
Application information................................................................................................................................................816 32.6.1 External pins and routing.............................................................................................................................816 32.6.1.1 32.6.1.2 32.6.1.3 Analog supply pins...................................................................................................................816 Analog voltage reference pins..................................................................................................817 Analog input pins.....................................................................................................................818 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
38
Section Number
32.6.2
Title
Page
Sources of error............................................................................................................................................818 32.6.2.1 32.6.2.2 32.6.2.3 32.6.2.4 32.6.2.5 32.6.2.6 Sampling error..........................................................................................................................818 Pin leakage error......................................................................................................................819 Noise-induced errors................................................................................................................819 Code width and quantization error...........................................................................................820 Linearity errors.........................................................................................................................821 Code jitter, non-monotonicity, and missing codes...................................................................821
Power Modes................................................................................................................................................836 33.7.2.1 33.7.2.2 33.7.2.3 Wait Mode Operation...............................................................................................................836 Stop Mode Operation...............................................................................................................836 Low-Leakage Mode Operation................................................................................................837
33.7.3
Startup and Operation..................................................................................................................................837 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
39
Section Number
33.7.4
Title
Page
Low Pass Filter.............................................................................................................................................837 33.7.4.1 33.7.4.2 Enabling Filter Modes..............................................................................................................838 Latency Issues..........................................................................................................................839
33.8 33.9
33.10 Digital to Analog Converter Block Diagram................................................................................................................840 33.11 Memory Map/Register Definitions...............................................................................................................................841 33.11.1 33.11.2 33.11.3 33.11.4 33.11.5 33.11.6 CMP Control Register 0 (CMPx_CR0).......................................................................................................842 CMP Control Register 1 (CMPx_CR1).......................................................................................................843 CMP Filter Period Register (CMPx_FPR)...................................................................................................845 CMP Status and Control Register (CMPx_SCR).........................................................................................845 DAC Control Register (CMPx_DACCR)....................................................................................................847 MUX Control Register (CMPx_MUXCR)..................................................................................................848
Section Number
34.4.6 34.5
Title
Page
Functional Description..................................................................................................................................................861 34.5.1 DAC Data Buffer Operation........................................................................................................................861 34.5.1.1 34.5.1.2 34.5.1.3 34.5.1.4 34.5.2 34.5.3 34.5.4 DAC Data Buffer Interrupts.....................................................................................................861 Buffer Normal Mode................................................................................................................861 Buffer Swing Mode..................................................................................................................862 Buffer One-time Scan Mode....................................................................................................862
DMA Operation...........................................................................................................................................862 Resets...........................................................................................................................................................862 Low Power Mode Operation........................................................................................................................862 34.5.4.1 34.5.4.2 Wait Mode Operation...............................................................................................................863 Stop Mode Operation...............................................................................................................863
Memory Map and Register Definition..........................................................................................................................867 35.2.1 VREF Status and Control Register (VREF_SC)..........................................................................................867
35.3
Functional Description..................................................................................................................................................868 35.3.1 35.3.2 Voltage Reference Disabled, SC[VREFEN] = 0.........................................................................................869 Voltage Reference Enabled, SC[VREFEN] = 1..........................................................................................869 35.3.2.1 35.3.2.2 35.3.2.3 35.3.2.4 SC[MODE_LV]=00.................................................................................................................869 SC[MODE_LV] = 01...............................................................................................................869 SC[MODE_LV] = 10...............................................................................................................870 SC[MODE_LV] = 11...............................................................................................................870
35.4
41
Section Number
Page
36.1
Introduction...................................................................................................................................................................871 36.1.1 36.1.2 36.1.3 36.1.4 36.1.5 36.1.6 Features........................................................................................................................................................871 Implementation............................................................................................................................................872 Back-to-back Acknowledgement Connections............................................................................................873 DAC External Trigger Input Connections...................................................................................................873 Block Diagram.............................................................................................................................................873 Modes of Operation.....................................................................................................................................875
36.2 36.3
PDB Signal Descriptions..............................................................................................................................................875 Memory Map and Register Definition..........................................................................................................................875 36.3.1 36.3.2 36.3.3 36.3.4 36.3.5 36.3.6 36.3.7 36.3.8 36.3.9 36.3.10 36.3.11 36.3.12 Status and Control Register (PDBx_SC).....................................................................................................877 Modulus Register (PDBx_MOD).................................................................................................................880 Counter Register (PDBx_CNT)...................................................................................................................880 Interrupt Delay Register (PDBx_IDLY)......................................................................................................881 Channel n Control Register 1 (PDBx_CHnC1)...........................................................................................881 Channel n Status Register (PDBx_CHnS)...................................................................................................882 Channel n Delay 0 Register (PDBx_CHnDLY0)........................................................................................883 Channel n Delay 1 Register (PDBx_CHnDLY1)........................................................................................884 DAC Interval Trigger n Control Register (PDBx_DACINTCn).................................................................884 DAC Interval n Register (PDBx_DACINTn)..............................................................................................885 Pulse-Out n Enable Register (PDBx_POnEN).............................................................................................886 Pulse-Out n Delay Register (PDBx_POnDLY)...........................................................................................886
36.4
Functional Description..................................................................................................................................................887 36.4.1 36.4.2 36.4.3 36.4.4 36.4.5 PDB Pre-trigger and Trigger Outputs..........................................................................................................887 PDB Trigger Input Source Selection...........................................................................................................889 DAC Interval Trigger Outputs.....................................................................................................................889 Pulse-Out's...................................................................................................................................................890 Updating the Delay Registers......................................................................................................................890 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
42
Section Number
36.4.6 36.4.7 36.5
Title
Page
Interrupts......................................................................................................................................................892 DMA............................................................................................................................................................892
Application Information................................................................................................................................................892 36.5.1 Impact of Using the Prescaler and Multiplication Factor on Timing Resolution........................................892
FTM Signal Descriptions..............................................................................................................................................900 37.2.1 37.2.2 37.2.3 37.2.4 37.2.5 EXTCLK FTM External Clock...............................................................................................................900 CHn FTM Channel (n) I/O Pin...............................................................................................................900 FAULTj FTM Fault Input.......................................................................................................................900 PHA FTM Quadrature Decoder Phase A Input......................................................................................901 PHB FTM Quadrature Decoder Phase B Input.......................................................................................901
37.3
Memory Map and Register Definition..........................................................................................................................901 37.3.1 37.3.2 37.3.3 37.3.4 37.3.5 37.3.6 37.3.7 37.3.8 37.3.9 37.3.10 37.3.11 Module Memory Map..................................................................................................................................901 Register Descriptions...................................................................................................................................901 Status and Control (FTMx_SC)...................................................................................................................908 Counter (FTMx_CNT).................................................................................................................................909 Modulo (FTMx_MOD)................................................................................................................................910 Channel (n) Status and Control (FTMx_CnSC)...........................................................................................911 Channel (n) Value (FTMx_CnV).................................................................................................................914 Counter Initial Value (FTMx_CNTIN)........................................................................................................915 Capture and Compare Status (FTMx_STATUS).........................................................................................916 Features Mode Selection (FTMx_MODE)..................................................................................................918 Synchronization (FTMx_SYNC).................................................................................................................919 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
43
Section Number
37.3.12 37.3.13 37.3.14 37.3.15 37.3.16 37.3.17 37.3.18 37.3.19 37.3.20 37.3.21 37.3.22 37.3.23 37.3.24 37.3.25 37.3.26 37.3.27 37.4
Title
Page
Initial State for Channels Output (FTMx_OUTINIT)..................................................................................922 Output Mask (FTMx_OUTMASK).............................................................................................................923 Function for Linked Channels (FTMx_COMBINE)...................................................................................925 Deadtime Insertion Control (FTMx_DEADTIME).....................................................................................930 FTM External Trigger (FTMx_EXTTRIG).................................................................................................931 Channels Polarity (FTMx_POL)..................................................................................................................933 Fault Mode Status (FTMx_FMS).................................................................................................................935 Input Capture Filter Control (FTMx_FILTER)...........................................................................................937 Fault Control (FTMx_FLTCTRL)...............................................................................................................938 Quadrature Decoder Control and Status (FTMx_QDCTRL).......................................................................940 Configuration (FTMx_CONF).....................................................................................................................942 FTM Fault Input Polarity (FTMx_FLTPOL)...............................................................................................944 Synchronization Configuration (FTMx_SYNCONF)..................................................................................945 FTM Inverting Control (FTMx_INVCTRL)................................................................................................947 FTM Software Output Control (FTMx_SWOCTRL)..................................................................................948 FTM PWM Load (FTMx_PWMLOAD).....................................................................................................950
Functional Description..................................................................................................................................................952 37.4.1 Clock Source................................................................................................................................................953 37.4.1.1 37.4.2 37.4.3 Counter Clock Source..............................................................................................................953
Prescaler.......................................................................................................................................................953 Counter.........................................................................................................................................................954 37.4.3.1 37.4.3.2 37.4.3.3 37.4.3.4 37.4.3.5 Up Counting.............................................................................................................................954 Up-Down Counting..................................................................................................................957 Free Running Counter..............................................................................................................958 Counter Reset...........................................................................................................................959 When the TOF Bit is Set..........................................................................................................959
37.4.4
37.4.5
Output Compare Mode.................................................................................................................................962 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
44
Section Number
37.4.6 37.4.7 37.4.8
Title
Page
Edge-Aligned PWM (EPWM) Mode...........................................................................................................963 Center-Aligned PWM (CPWM) Mode........................................................................................................965 Combine Mode.............................................................................................................................................967 37.4.8.1 Asymmetrical PWM................................................................................................................975
37.4.9 37.4.10
Complementary Mode..................................................................................................................................975 Registers Updated from Write Buffers........................................................................................................976 37.4.10.1 37.4.10.2 37.4.10.3 CNTIN Register Update...........................................................................................................976 MOD Register Update.............................................................................................................977 CnV Register Update...............................................................................................................977
37.4.11
PWM Synchronization.................................................................................................................................978 37.4.11.1 37.4.11.2 37.4.11.3 37.4.11.4 37.4.11.5 37.4.11.6 37.4.11.7 37.4.11.8 37.4.11.9 Hardware Trigger.....................................................................................................................978 Software Trigger......................................................................................................................979 Boundary Cycle and Loading Points.......................................................................................980 MOD Register Synchronization...............................................................................................981 CNTIN Register Synchronization............................................................................................984 C(n)V and C(n+1)V Register Synchronization........................................................................985 OUTMASK Register Synchronization....................................................................................985 INVCTRL Register Synchronization.......................................................................................988 SWOCTRL Register Synchronization.....................................................................................989
37.4.11.10 FTM Counter Synchronization................................................................................................991 37.4.12 37.4.13 37.4.14 Inverting.......................................................................................................................................................994 Software Output Control..............................................................................................................................995 Deadtime Insertion.......................................................................................................................................997 37.4.14.1 37.4.15 37.4.16 Deadtime Insertion Corner Cases............................................................................................998
Output Mask.................................................................................................................................................1000 Fault Control................................................................................................................................................1001 37.4.16.1 37.4.16.2 37.4.16.3 Automatic Fault Clearing.........................................................................................................1003 Manual Fault Clearing.............................................................................................................1003 Fault Inputs Polarity Control....................................................................................................1004 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
45
Section Number
37.4.17 37.4.18 37.4.19 37.4.20 37.4.21 37.4.22 37.4.23 37.4.24
Title
Page
Polarity Control............................................................................................................................................1004 Initialization.................................................................................................................................................1005 Features Priority...........................................................................................................................................1005 Channel Trigger Output...............................................................................................................................1006 Initialization Trigger....................................................................................................................................1007 Capture Test Mode.......................................................................................................................................1009 DMA............................................................................................................................................................1010 Dual Edge Capture Mode.............................................................................................................................1011 37.4.24.1 37.4.24.2 37.4.24.3 37.4.24.4 37.4.24.5 One-Shot Capture Mode..........................................................................................................1012 Continuous Capture Mode.......................................................................................................1013 Pulse Width Measurement.......................................................................................................1013 Period Measurement................................................................................................................1015 Read Coherency Mechanism...................................................................................................1017
37.4.25
BDM Mode..................................................................................................................................................1023 Intermediate Load........................................................................................................................................1024 Global Time Base (GTB).............................................................................................................................1026 37.4.28.1 Enabling the global time base (GTB)......................................................................................1027
37.5 37.6
Reset Overview.............................................................................................................................................................1027 FTM Interrupts..............................................................................................................................................................1029 37.6.1 37.6.2 37.6.3 Timer Overflow Interrupt.............................................................................................................................1029 Channel (n) Interrupt....................................................................................................................................1029 Fault Interrupt..............................................................................................................................................1029
Section Number
38.2 38.3
Title
Page
Signal Description.........................................................................................................................................................1032 Memory Map/Register Description..............................................................................................................................1032 38.3.1 38.3.2 38.3.3 38.3.4 38.3.5 PIT Module Control Register (PIT_MCR)..................................................................................................1033 Timer Load Value Register (PIT_LDVALn)...............................................................................................1034 Current Timer Value Register (PIT_CVALn).............................................................................................1034 Timer Control Register (PIT_TCTRLn)......................................................................................................1035 Timer Flag Register (PIT_TFLGn)..............................................................................................................1036
38.4
Functional Description..................................................................................................................................................1036 38.4.1 General.........................................................................................................................................................1036 38.4.1.1 38.4.1.2 38.4.2 Timers .....................................................................................................................................1037 Debug Mode.............................................................................................................................1038
Interrupts......................................................................................................................................................1038
38.5
39.3
Memory map and register definition.............................................................................................................................1043 39.3.1 39.3.2 39.3.3 Low Power Timer Control Status Register (LPTMRx_CSR)......................................................................1044 Low Power Timer Prescale Register (LPTMRx_PSR)................................................................................1045 Low Power Timer Compare Register (LPTMRx_CMR).............................................................................1047 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
47
Section Number
39.3.4 39.4
Title
Page
Functional description...................................................................................................................................................1048 39.4.1 39.4.2 39.4.3 LPTMR power and reset..............................................................................................................................1048 LPTMR clocking..........................................................................................................................................1048 LPTMR prescaler/glitch filter......................................................................................................................1049 39.4.3.1 39.4.3.2 39.4.3.3 39.4.3.4 39.4.4 39.4.5 39.4.6 39.4.7 Prescaler enabled......................................................................................................................1049 Prescaler bypassed...................................................................................................................1049 Glitch filter...............................................................................................................................1049 Glitch filter bypassed...............................................................................................................1050
40.6
Memory Map/Register Definition.................................................................................................................................1057 40.6.1 40.6.2 40.6.3 CMT Carrier Generator High Data Register 1 (CMT_CGH1)....................................................................1058 CMT Carrier Generator Low Data Register 1 (CMT_CGL1).....................................................................1059 CMT Carrier Generator High Data Register 2 (CMT_CGH2)....................................................................1059 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
48
Section Number
40.6.4 40.6.5 40.6.6 40.6.7 40.6.8 40.6.9 40.6.10 40.6.11 40.6.12 40.7
Title
Page
CMT Carrier Generator Low Data Register 2 (CMT_CGL2).....................................................................1060 CMT Output Control Register (CMT_OC).................................................................................................1060 CMT Modulator Status and Control Register (CMT_MSC).......................................................................1061 CMT Modulator Data Register Mark High (CMT_CMD1)........................................................................1063 CMT Modulator Data Register Mark Low (CMT_CMD2).........................................................................1063 CMT Modulator Data Register Space High (CMT_CMD3).......................................................................1064 CMT Modulator Data Register Space Low (CMT_CMD4)........................................................................1064 CMT Primary Prescaler Register (CMT_PPS)............................................................................................1065 CMT Direct Memory Access (CMT_DMA)...............................................................................................1066
Functional Description..................................................................................................................................................1066 40.7.1 40.7.2 40.7.3 Clock Divider...............................................................................................................................................1066 Carrier Generator.........................................................................................................................................1067 Modulator.....................................................................................................................................................1069 40.7.3.1 40.7.3.2 40.7.3.3 40.7.4 Time Mode...............................................................................................................................1071 Baseband Mode........................................................................................................................1072 FSK Mode................................................................................................................................1072
Extended Space Operation...........................................................................................................................1073 40.7.4.1 40.7.4.2 EXSPC Operation in Time Mode............................................................................................1074 EXSPC Operation in FSK Mode.............................................................................................1074
40.8
Register definition.........................................................................................................................................................1078 41.2.1 41.2.2 RTC Time Seconds Register (RTC_TSR)...................................................................................................1079 RTC Time Prescaler Register (RTC_TPR)..................................................................................................1080 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
49
Section Number
41.2.3 41.2.4 41.2.5 41.2.6 41.2.7 41.2.8 41.2.9 41.2.10 41.3
Title
Page
RTC Time Alarm Register (RTC_TAR).....................................................................................................1080 RTC Time Compensation Register (RTC_TCR).........................................................................................1081 RTC Control Register (RTC_CR)................................................................................................................1082 RTC Status Register (RTC_SR)..................................................................................................................1083 RTC Lock Register (RTC_LR)....................................................................................................................1084 RTC Chip Configuration Register (RTC_CCR)..........................................................................................1085 RTC Write Access Register (RTC_WAR)..................................................................................................1086 RTC Read Access Register (RTC_RAR)....................................................................................................1087
Functional description...................................................................................................................................................1088 41.3.1 41.3.2 41.3.3 41.3.4 41.3.5 Power, clocking and reset............................................................................................................................1088 Time counter................................................................................................................................................1089 Compensation...............................................................................................................................................1089 Alarm...........................................................................................................................................................1090 Control Register...........................................................................................................................................1090 41.3.5.1 41.3.5.2 41.3.5.3 41.3.5.4 41.3.5.5 41.3.6 41.3.7 41.3.8 41.3.9 41.3.10 Software reset...........................................................................................................................1090 Wakeup pin..............................................................................................................................1090 Supervisor access.....................................................................................................................1090 Update mode............................................................................................................................1091 Oscillator control......................................................................................................................1091
Lock register................................................................................................................................................1091 Chip configuration register..........................................................................................................................1091 Access control registers...............................................................................................................................1091 Interrupt........................................................................................................................................................1092 RTC clock output.........................................................................................................................................1092
Section Number
42.1.3 42.2
Title
Page
USB-FS Features..........................................................................................................................................1095
42.3
Programmers Interface..................................................................................................................................................1096 42.3.1 42.3.2 42.3.3 42.3.4 42.3.5 Buffer Descriptor Table...............................................................................................................................1096 Rx vs. Tx as a USB Target Device or USB Host.........................................................................................1097 Addressing Buffer Descriptor Table Entries................................................................................................1098 Buffer Descriptor Formats...........................................................................................................................1098 USB Transaction..........................................................................................................................................1101
42.4
Memory Map/Register Definitions...............................................................................................................................1103 42.4.1 42.4.2 42.4.3 42.4.4 42.4.5 42.4.6 42.4.7 42.4.8 42.4.9 42.4.10 42.4.11 42.4.12 42.4.13 42.4.14 42.4.15 42.4.16 42.4.17 42.4.18 42.4.19 Peripheral ID Register (USBx_PERID).......................................................................................................1105 Peripheral ID Complement Register (USBx_IDCOMP).............................................................................1106 Peripheral Revision Register (USBx_REV)................................................................................................1106 Peripheral Additional Info Register (USBx_ADDINFO)............................................................................1107 OTG Interrupt Status Register (USBx_OTGISTAT)...................................................................................1107 OTG Interrupt Control Register (USBx_OTGICR).....................................................................................1108 OTG Status Register (USBx_OTGSTAT)...................................................................................................1109 OTG Control Register (USBx_OTGCTL)...................................................................................................1110 Interrupt Status Register (USBx_ISTAT)....................................................................................................1111 Interrupt Enable Register (USBx_INTEN)..................................................................................................1112 Error Interrupt Status Register (USBx_ERRSTAT)....................................................................................1113 Error Interrupt Enable Register (USBx_ERREN).......................................................................................1114 Status Register (USBx_STAT)....................................................................................................................1116 Control Register (USBx_CTL)....................................................................................................................1116 Address Register (USBx_ADDR)................................................................................................................1118 BDT Page Register 1 (USBx_BDTPAGE1)................................................................................................1118 Frame Number Register Low (USBx_FRMNUML)...................................................................................1119 Frame Number Register High (USBx_FRMNUMH)..................................................................................1119 Token Register (USBx_TOKEN)................................................................................................................1120 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
51
Section Number
42.4.20 42.4.21 42.4.22 42.4.23 42.4.24 42.4.25 42.4.26 42.4.27 42.5 42.6 42.7
Title
Page
SOF Threshold Register (USBx_SOFTHLD)..............................................................................................1121 BDT Page Register 2 (USBx_BDTPAGE2)................................................................................................1121 BDT Page Register 3 (USBx_BDTPAGE3)................................................................................................1122 Endpoint Control Register (USBx_ENDPTn).............................................................................................1122 USB Control Register (USBx_USBCTRL).................................................................................................1123 USB OTG Observe Register (USBx_OBSERVE).......................................................................................1124 USB OTG Control Register (USBx_CONTROL).......................................................................................1125 USB Transceiver Control Register 0 (USBx_USBTRC0)...........................................................................1125
OTG and Host Mode Operation....................................................................................................................................1126 Host Mode Operation Examples...................................................................................................................................1127 On-The-Go Operation...................................................................................................................................................1130 42.7.1 42.7.2 OTG Dual Role A Device Operation...........................................................................................................1130 OTG Dual Role B Device Operation...........................................................................................................1132
43.3
43.4
Memory Map/Register Definition.................................................................................................................................1139 43.4.1 43.4.2 43.4.3 Control Register (USBDCD_CONTROL)..................................................................................................1140 Clock Register (USBDCD_CLOCK)..........................................................................................................1142 Status Register (USBDCD_STATUS).........................................................................................................1143 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
52
Section Number
43.4.4 43.4.5 43.4.6 43.5
Title
Page
Functional Description..................................................................................................................................................1147 43.5.1 The Charger Detection Sequence.................................................................................................................1148 43.5.1.1 43.5.1.2 43.5.1.3 Initial System Conditions.........................................................................................................1150 VBUS Contact Detection.........................................................................................................1151 Data Pin Contact Detection......................................................................................................1151 43.5.1.3.1 43.5.1.3.2 43.5.1.4 Debouncing the Data Pin Contact.....................................................................1152 Success in Detecting Data Pin Contact (Phase Completion)............................1152
Charging Port Detection...........................................................................................................1153 43.5.1.4.1 43.5.1.4.2 43.5.1.4.3 Standard Host Port............................................................................................1153 Charging Port....................................................................................................1154 Error in Charging Port Detection......................................................................1154
43.5.1.5
Charger Type Detection...........................................................................................................1155 43.5.1.5.1 43.5.1.5.2 Dedicated Charging Port...................................................................................1155 Charging Host Port...........................................................................................1156
43.5.1.6 43.5.2
43.5.3
43.6 43.7
Initialization Information..............................................................................................................................................1160 Application Information................................................................................................................................................1160 43.7.1 43.7.2 43.7.3 External Pullups...........................................................................................................................................1160 Dead or Weak Battery..................................................................................................................................1160 Handling Unplug Events..............................................................................................................................1161
Section Number
Page
44.1
44.2
45.3
Memory Map/Register Definition.................................................................................................................................1172 45.3.1 45.3.2 45.3.3 45.3.4 45.3.5 45.3.6 45.3.7 45.3.8 45.3.9 45.3.10 45.3.11 45.3.12 FlexCAN Memory Mapping........................................................................................................................1172 Module Configuration Register (CANx_MCR)...........................................................................................1177 Control 1 Register (CANx_CTRL1)............................................................................................................1182 Free Running Timer (CANx_TIMER).........................................................................................................1185 Rx Mailboxes Global Mask Register (CANx_RXMGMASK)....................................................................1186 Rx 14 Mask Register (CANx_RX14MASK)...............................................................................................1187 Rx 15 Mask Register (CANx_RX15MASK)...............................................................................................1188 Error Counter (CANx_ECR)........................................................................................................................1189 Error and Status 1 Register (CANx_ESR1).................................................................................................1190 Interrupt Masks 2 Register (CANx_IMASK2)............................................................................................1194 Interrupt Masks 1 Register (CANx_IMASK1)............................................................................................1195 Interrupt Flags 2 Register (CANx_IFLAG2)...............................................................................................1195
Section Number
45.3.13 45.3.14 45.3.15 45.3.16 45.3.17 45.3.18 45.3.19 45.3.56 45.3.57 45.4
Title
Page
Interrupt Flags 1 Register (CANx_IFLAG1)...............................................................................................1196 Control 2 Register (CANx_CTRL2)............................................................................................................1198 Error and Status 2 Register (CANx_ESR2).................................................................................................1201 CRC Register (CANx_CRCR).....................................................................................................................1203 Rx FIFO Global Mask Register (CANx_RXFGMASK).............................................................................1203 Rx FIFO Information Register (CANx_RXFIR).........................................................................................1205 Rx Individual Mask Registers (CANx_RXIMRn).......................................................................................1205 Message Buffer Structure.............................................................................................................................1206 Rx FIFO Structure........................................................................................................................................1213
Functional Description..................................................................................................................................................1215 45.4.1 45.4.2 Transmit Process..........................................................................................................................................1216 Arbitration process.......................................................................................................................................1217 45.4.2.1 45.4.2.2 Lowest number Mailbox first...................................................................................................1217 Highest priority Mailbox first..................................................................................................1218 45.4.2.2.1 45.4.2.2.2 45.4.2.3 45.4.3 45.4.4 45.4.5 Local Priority disabled......................................................................................1218 Local Priority enabled.......................................................................................1218
Receive Process............................................................................................................................................1220 Matching Process.........................................................................................................................................1222 Move Process...............................................................................................................................................1227 45.4.5.1 45.4.5.2 Move-in....................................................................................................................................1227 Move-out..................................................................................................................................1229
45.4.6
Data Coherence............................................................................................................................................1229 45.4.6.1 45.4.6.2 45.4.6.3 Transmission Abort Mechanism..............................................................................................1229 Message Buffer Inactivation....................................................................................................1230 Message Buffer Lock Mechanism...........................................................................................1231
45.4.7 45.4.8
Rx FIFO.......................................................................................................................................................1233 CAN Protocol Related Features...................................................................................................................1234 45.4.8.1 Remote Frames........................................................................................................................1234 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
55
Section Number
45.4.8.2 45.4.8.3 45.4.8.4 45.4.8.5 45.4.9
Title
Page
Overload Frames......................................................................................................................1235 Time Stamp..............................................................................................................................1236 Protocol Timing.......................................................................................................................1236 Arbitration and Matching Timing............................................................................................1239
Modes of Operation Details.........................................................................................................................1240 45.4.9.1 45.4.9.2 45.4.9.3 45.4.9.4 Freeze Mode.............................................................................................................................1241 Module Disable Mode..............................................................................................................1242 Doze Mode...............................................................................................................................1243 Stop Mode................................................................................................................................1244
Modes of Operation.....................................................................................................................................1254 46.1.4.1 46.1.4.2 46.1.4.3 46.1.4.4 46.1.4.5 Master Mode............................................................................................................................1255 Slave Mode..............................................................................................................................1255 Module Disable Mode..............................................................................................................1255 External Stop Mode.................................................................................................................1255 Debug Mode.............................................................................................................................1256
46.2
DSPI Signal Descriptions.............................................................................................................................................1256 46.2.1 46.2.2 PCS0/SS Peripheral Chip Select/Slave Select........................................................................................1256 PCS1 - PCS3 Peripheral Chip Selects 1 - 3............................................................................................1257 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
56
Section Number
46.2.3 46.2.4 46.2.5 46.2.6 46.2.7 46.3
Title
Page
PCS4 Peripheral Chip Select 4................................................................................................................1257 PCS5/PCSS Peripheral Chip Select 5/Peripheral Chip Select Strobe.....................................................1257 SIN Serial Input......................................................................................................................................1257 SOUT Serial Output................................................................................................................................1257 SCK Serial Clock....................................................................................................................................1257
Memory Map/Register Definition.................................................................................................................................1258 46.3.1 46.3.2 46.3.3 46.3.4 46.3.5 46.3.6 46.3.7 46.3.8 46.3.9 46.3.10 46.3.11 DSPI Module Configuration Register (SPIx_MCR)....................................................................................1261 DSPI Transfer Count Register (SPIx_TCR)................................................................................................1264 DSPI Clock and Transfer Attributes Register (In Master Mode) (SPIx_CTARn)......................................1264 DSPI Clock and Transfer Attributes Register (In Slave Mode) (SPIx_CTARn_SLAVE)..........................1269 DSPI Status Register (SPIx_SR)..................................................................................................................1270 DSPI DMA/Interrupt Request Select and Enable Register (SPIx_RSER)..................................................1272 DSPI PUSH TX FIFO Register In Master Mode (SPIx_PUSHR)...............................................................1275 DSPI PUSH TX FIFO Register In Slave Mode (SPIx_PUSHR_SLAVE)..................................................1276 DSPI POP RX FIFO Register (SPIx_POPR)...............................................................................................1277 DSPI Transmit FIFO Registers (SPIx_TXFRn)...........................................................................................1277 DSPI Receive FIFO Registers (SPIx_RXFRn)............................................................................................1278
46.4
Functional Description..................................................................................................................................................1278 46.4.1 46.4.2 Start and Stop of DSPI Transfers.................................................................................................................1279 Serial Peripheral Interface (SPI) Configuration...........................................................................................1280 46.4.2.1 46.4.2.2 46.4.2.3 46.4.2.4 Master Mode............................................................................................................................1281 Slave Mode..............................................................................................................................1281 FIFO Disable Operation...........................................................................................................1281 Transmit First In First Out (TX FIFO) Buffering Mechanism................................................1281 46.4.2.4.1 46.4.2.4.2 46.4.2.5 Filling the TX FIFO..........................................................................................1282 Draining the TX FIFO......................................................................................1282
Receive First In First Out (RX FIFO) Buffering Mechanism..................................................1283 46.4.2.5.1 46.4.2.5.2 Filling the RX FIFO..........................................................................................1283 Draining the RX FIFO......................................................................................1283
Section Number
46.4.3
Title
Page
DSPI Baud Rate and Clock Delay Generation.............................................................................................1284 46.4.3.1 46.4.3.2 46.4.3.3 46.4.3.4 46.4.3.5 Baud Rate Generator................................................................................................................1284 PCS to SCK Delay (tCSC).......................................................................................................1284 After SCK Delay (tASC).........................................................................................................1285 Delay after Transfer (tDT).......................................................................................................1285 Peripheral Chip Select Strobe Enable (PCSS )........................................................................1286
46.4.4
Transfer Formats..........................................................................................................................................1287 46.4.4.1 46.4.4.2 46.4.4.3 Classic SPI Transfer Format (CPHA = 0)................................................................................1287 Classic SPI Transfer Format (CPHA = 1)................................................................................1288 Continuous Selection Format...................................................................................................1290
Continuous Serial Communications Clock..................................................................................................1291 Slave Mode Operation Constraints..............................................................................................................1293 Interrupts/DMA Requests............................................................................................................................1293 46.4.7.1 46.4.7.2 46.4.7.3 46.4.7.4 46.4.7.5 46.4.7.6 End of Queue Interrupt Request...............................................................................................1294 Transmit FIFO Fill Interrupt or DMA Request.......................................................................1294 Transfer Complete Interrupt Request.......................................................................................1294 Transmit FIFO Underflow Interrupt Request..........................................................................1294 Receive FIFO Drain Interrupt or DMA Request.....................................................................1295 Receive FIFO Overflow Interrupt Request..............................................................................1295
46.4.8
46.5
Initialization/Application Information..........................................................................................................................1296 46.5.1 46.5.2 46.5.3 46.5.4 46.5.5 How to Manage DSPI Queues.....................................................................................................................1296 Switching Master and Slave Mode..............................................................................................................1297 Baud Rate Settings.......................................................................................................................................1297 Delay Settings..............................................................................................................................................1298 Calculation of FIFO Pointer Addresses.......................................................................................................1299 46.5.5.1 46.5.5.2 Address Calculation for the First-in Entry and Last-in Entry in the TX FIFO........................1300 Address Calculation for the First-in Entry and Last-in Entry in the RX FIFO........................1300 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
58
Section Number
Page
47.1
47.2 47.3
I2C Signal Descriptions................................................................................................................................................1305 Memory Map and Registers..........................................................................................................................................1306 47.3.1 47.3.2 47.3.3 47.3.4 47.3.5 47.3.6 47.3.7 47.3.8 47.3.9 47.3.10 47.3.11 47.3.12 I2C Address Register 1 (I2Cx_A1)..............................................................................................................1307 I2C Frequency Divider register (I2Cx_F)....................................................................................................1308 I2C Control Register 1 (I2Cx_C1)...............................................................................................................1309 I2C Status Register (I2Cx_S).......................................................................................................................1310 I2C Data I/O register (I2Cx_D)...................................................................................................................1312 I2C Control Register 2 (I2Cx_C2)...............................................................................................................1313 I2C Programmable Input Glitch Filter register (I2Cx_FLT).......................................................................1314 I2C Range Address register (I2Cx_RA)......................................................................................................1315 I2C SMBus Control and Status register (I2Cx_SMB).................................................................................1315 I2C Address Register 2 (I2Cx_A2)..............................................................................................................1317 I2C SCL Low Timeout Register High (I2Cx_SLTH)..................................................................................1317 I2C SCL Low Timeout Register Low (I2Cx_SLTL)...................................................................................1318
47.4
Functional Description..................................................................................................................................................1318 47.4.1 I2C Protocol.................................................................................................................................................1318 47.4.1.1 47.4.1.2 47.4.1.3 47.4.1.4 47.4.1.5 47.4.1.6 47.4.1.7 START Signal..........................................................................................................................1319 Slave Address Transmission....................................................................................................1319 Data Transfers..........................................................................................................................1320 STOP Signal.............................................................................................................................1320 Repeated START Signal..........................................................................................................1320 Arbitration Procedure...............................................................................................................1321 Clock Synchronization.............................................................................................................1321 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
59
Section Number
47.4.1.8 47.4.1.9 47.4.1.10 47.4.2
Title
Page
10-bit Address..............................................................................................................................................1323 47.4.2.1 47.4.2.2 Master-Transmitter Addresses a Slave-Receiver.....................................................................1324 Master-Receiver Addresses a Slave-Transmitter.....................................................................1324
47.4.3 47.4.4
Address Matching........................................................................................................................................1325 System Management Bus Specification.......................................................................................................1325 47.4.4.1 Timeouts...................................................................................................................................1326 47.4.4.1.1 47.4.4.1.2 47.4.4.1.3 47.4.4.2 SCL Low Timeout............................................................................................1326 SCL High Timeout............................................................................................1326 CSMBCLK TIMEOUT MEXT and CSMBCLK TIMEOUT SEXT...............1327
47.4.5 47.4.6
Resets...........................................................................................................................................................1328 Interrupts......................................................................................................................................................1328 47.4.6.1 47.4.6.2 47.4.6.3 47.4.6.4 47.4.6.5 Byte Transfer Interrupt.............................................................................................................1329 Address Detect Interrupt..........................................................................................................1329 Exit from Low-Power/Stop Modes..........................................................................................1329 Arbitration Lost Interrupt.........................................................................................................1330 Timeout Interrupt in SMBus....................................................................................................1330
Initialization/Application Information..........................................................................................................................1332
Section Number
48.1.2
Title
Page
Modes of operation......................................................................................................................................1339 48.1.2.1 48.1.2.2 48.1.2.3 Run mode.................................................................................................................................1339 Wait mode................................................................................................................................1339 Stop mode................................................................................................................................1340
48.2
48.3
Module Memory Map...................................................................................................................................................1341 48.3.1 48.3.2 48.3.3 48.3.4 48.3.5 48.3.6 48.3.7 48.3.8 48.3.9 48.3.10 48.3.11 48.3.12 48.3.13 48.3.14 48.3.15 48.3.16 48.3.17 48.3.18 48.3.19 48.3.20 48.3.21 48.3.22 UART Baud Rate Registers:High (UARTx_BDH).....................................................................................1351 UART Baud Rate Registers: Low (UARTx_BDL).....................................................................................1352 UART Control Register 1 (UARTx_C1).....................................................................................................1353 UART Control Register 2 (UARTx_C2).....................................................................................................1355 UART Status Register 1 (UARTx_S1)........................................................................................................1357 UART Status Register 2 (UARTx_S2)........................................................................................................1360 UART Control Register 3 (UARTx_C3).....................................................................................................1362 UART Data Register (UARTx_D)...............................................................................................................1363 UART Match Address Registers 1 (UARTx_MA1)....................................................................................1365 UART Match Address Registers 2 (UARTx_MA2)....................................................................................1365 UART Control Register 4 (UARTx_C4).....................................................................................................1366 UART Control Register 5 (UARTx_C5).....................................................................................................1367 UART Extended Data Register (UARTx_ED)............................................................................................1368 UART Modem Register (UARTx_MODEM).............................................................................................1369 UART Infrared Register (UARTx_IR)........................................................................................................1371 UART FIFO Parameters (UARTx_PFIFO).................................................................................................1371 UART FIFO Control Register (UARTx_CFIFO)........................................................................................1373 UART FIFO Status Register (UARTx_SFIFO)...........................................................................................1374 UART FIFO Transmit Watermark (UARTx_TWFIFO).............................................................................1375 UART FIFO Transmit Count (UARTx_TCFIFO).......................................................................................1376 UART FIFO Receive Watermark (UARTx_RWFIFO)...............................................................................1377 UART FIFO Receive Count (UARTx_RCFIFO)........................................................................................1377 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
61
Section Number
48.3.23 48.3.24 48.3.25 48.3.26 48.3.27 48.3.28 48.3.29 48.3.30 48.3.31 48.4
Title
Page
UART 7816 Control Register (UARTx_C7816).........................................................................................1378 UART 7816 Interrupt Enable Register (UARTx_IE7816)..........................................................................1380 UART 7816 Interrupt Status Register (UARTx_IS7816)............................................................................1381 UART 7816 Wait Parameter Register (UARTx_WP7816T0).....................................................................1383 UART 7816 Wait Parameter Register (UARTx_WP7816T1).....................................................................1383 UART 7816 Wait N Register (UARTx_WN7816)......................................................................................1384 UART 7816 Wait FD Register (UARTx_WF7816)....................................................................................1385 UART 7816 Error Threshold Register (UARTx_ET7816)..........................................................................1385 UART 7816 Transmit Length Register (UARTx_TL7816)........................................................................1386
Functional description...................................................................................................................................................1387 48.4.1 Transmitter...................................................................................................................................................1387 48.4.1.1 48.4.1.2 48.4.1.3 48.4.1.4 48.4.1.5 48.4.1.6 48.4.1.7 48.4.2 Transmitter character length....................................................................................................1388 Transmission bit order.............................................................................................................1388 Character transmission.............................................................................................................1389 Transmitting break characters..................................................................................................1390 Idle characters..........................................................................................................................1391 Hardware flow control.............................................................................................................1391 Transceiver driver enable.........................................................................................................1392
Receiver.......................................................................................................................................................1393 48.4.2.1 48.4.2.2 48.4.2.3 48.4.2.4 48.4.2.5 48.4.2.6 48.4.2.7 48.4.2.8 Receiver character length.........................................................................................................1394 Receiver bit ordering................................................................................................................1394 Character reception..................................................................................................................1395 Data sampling..........................................................................................................................1395 Framing errors..........................................................................................................................1401 Receiving break characters......................................................................................................1401 Hardware flow control.............................................................................................................1402 Infrared decoder.......................................................................................................................1403 48.4.2.8.1 48.4.2.8.2 Start bit detection..............................................................................................1403 Noise filtering...................................................................................................1403
Section Number
48.4.2.8.3 48.4.2.8.4 48.4.2.9
Title
Page
Baud rate tolerance...................................................................................................................1404 48.4.2.9.1 48.4.2.9.2 Slow data tolerance...........................................................................................1404 Fast data tolerance.............................................................................................1405
48.4.2.10
Receiver wakeup......................................................................................................................1406 48.4.2.10.1 48.4.2.10.2 48.4.2.10.3 Idle input line wakeup (C1[WAKE] = 0).........................................................1406 Address mark wakeup (C1[WAKE] = 1).........................................................1407 Match address operation...................................................................................1407
48.4.3 48.4.4
Baud rate generation....................................................................................................................................1408 Data format (non ISO-7816)........................................................................................................................1410 48.4.4.1 48.4.4.2 48.4.4.3 Eight-bit configuration.............................................................................................................1410 Nine-bit configuration..............................................................................................................1411 Timing examples......................................................................................................................1412 48.4.4.3.1 48.4.4.3.2 48.4.4.3.3 48.4.4.3.4 48.4.4.3.5 Eight-bit format with parity disabled................................................................1412 Eight-bit format with parity enabled.................................................................1412 Nine-bit format with parity disabled.................................................................1412 Nine-bit format with parity enabled..................................................................1413 Non-memory mapped tenth bit for parity.........................................................1413
Single-wire operation...................................................................................................................................1413 Loop operation.............................................................................................................................................1414 ISO-7816 / smartcard support......................................................................................................................1414 48.4.7.1 48.4.7.2 48.4.7.3 48.4.7.4 48.4.7.5 48.4.7.6 Initial characters.......................................................................................................................1415 Protocol T = 0..........................................................................................................................1416 Protocol T = 1..........................................................................................................................1417 Wait time and guard time parameters......................................................................................1417 Baud rate generation................................................................................................................1419 UART restrictions in ISO-7816 operation...............................................................................1419
Section Number
48.4.8
Title
Page
Infrared interface..........................................................................................................................................1419 48.4.8.1 48.4.8.2 Infrared transmit encoder.........................................................................................................1420 Infrared receive decoder...........................................................................................................1420
48.5 48.6
Reset..............................................................................................................................................................................1420 System level interrupt sources......................................................................................................................................1420 48.6.1 RXEDGIF description..................................................................................................................................1421 48.6.1.1 48.6.1.2 48.6.1.3 RxD edge detect sensitivity......................................................................................................1421 Clearing RXEDGIF interrupt request......................................................................................1422 Exit from low-power modes....................................................................................................1422
48.7 48.8
DMA operation.............................................................................................................................................................1422 Application information................................................................................................................................................1423 48.8.1 48.8.2 Transmit/receive data buffer operation........................................................................................................1423 ISO-7816 initialization sequence.................................................................................................................1423 48.8.2.1 48.8.2.2 48.8.3 48.8.4 Transmission procedure for (C7816[TTYPE] = 0)..................................................................1425 Transmission procedure for (C7816[TTYPE] = 1)..................................................................1425
Initialization sequence (non ISO-7816).......................................................................................................1425 Overrun (OR) flag implications...................................................................................................................1427 48.8.4.1 Overrun operation in most modes............................................................................................1427
Overrun NACK considerations....................................................................................................................1428 Match address registers................................................................................................................................1428 Modem feature.............................................................................................................................................1428 48.8.7.1 48.8.7.2 Ready-to-receive using RTS....................................................................................................1428 Transceiver driver enable using RTS.......................................................................................1429
IrDA minimum pulse width.........................................................................................................................1430 Clearing 7816 wait timer (WT, BWT, CWT) interrupts..............................................................................1430 Legacy and reverse compatibility considerations........................................................................................1430
Section Number
49.2
Title
Page
Overview.......................................................................................................................................................................1433 49.2.1 49.2.2 49.2.3 49.2.4 Supported types of cards..............................................................................................................................1433 SDHC block diagram...................................................................................................................................1434 Features........................................................................................................................................................1435 Modes and operations..................................................................................................................................1436
49.3 49.4
SDHC signal descriptions.............................................................................................................................................1437 Memory map and register definition.............................................................................................................................1438 49.4.1 49.4.2 49.4.3 49.4.4 49.4.5 49.4.6 49.4.7 49.4.8 49.4.9 49.4.10 49.4.11 49.4.12 49.4.13 49.4.14 49.4.15 49.4.16 49.4.17 49.4.18 49.4.19 49.4.20 49.4.21 49.4.22 DMA System Address Register (SDHC_DSADDR)..................................................................................1439 Block Attributes Register (SDHC_BLKATTR)..........................................................................................1440 Command Argument Register (SDHC_CMDARG)....................................................................................1441 Transfer Type Register (SDHC_XFERTYP)..............................................................................................1442 Command Response 0 (SDHC_CMDRSP0)...............................................................................................1446 Command Response 1 (SDHC_CMDRSP1)...............................................................................................1447 Command Response 2 (SDHC_CMDRSP2)...............................................................................................1447 Command Response 3 (SDHC_CMDRSP3)...............................................................................................1447 Buffer Data Port Register (SDHC_DATPORT)..........................................................................................1449 Present State Register (SDHC_PRSSTAT).................................................................................................1449 Protocol Control Register (SDHC_PROCTL).............................................................................................1454 System Control Register (SDHC_SYSCTL)...............................................................................................1458 Interrupt Status Register (SDHC_IRQSTAT).............................................................................................1462 Interrupt Status Enable Register (SDHC_IRQSTATEN)............................................................................1467 Interrupt Signal Enable Register (SDHC_IRQSIGEN)...............................................................................1469 Auto CMD12 Error Status Register (SDHC_AC12ERR)...........................................................................1472 Host Controller Capabilities (SDHC_HTCAPBLT)....................................................................................1474 Watermark Level Register (SDHC_WML).................................................................................................1476 Force Event Register (SDHC_FEVT)..........................................................................................................1477 ADMA Error Status Register (SDHC_ADMAES)......................................................................................1479 ADMA System Address Register (SDHC_ADSADDR).............................................................................1482 Vendor Specific Register (SDHC_VENDOR)............................................................................................1482 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
65
Section Number
49.4.23 49.4.24 49.5
Title
Page
Functional description...................................................................................................................................................1486 49.5.1 Data buffer...................................................................................................................................................1486 49.5.1.1 49.5.1.2 49.5.1.3 49.5.1.4 49.5.1.5 49.5.2 Write operation sequence.........................................................................................................1488 Read operation sequence..........................................................................................................1489 Data buffer and block size.......................................................................................................1490 Dividing large data transfer......................................................................................................1490 External DMA request.............................................................................................................1491
DMA crossbar switch interface....................................................................................................................1492 49.5.2.1 49.5.2.2 49.5.2.3 49.5.2.4 Internal DMA request..............................................................................................................1493 DMA burst length....................................................................................................................1493 Crossbar switch master interface.............................................................................................1494 ADMA engine..........................................................................................................................1494 49.5.2.4.1 49.5.2.4.2 49.5.2.4.3 ADMA concept and descriptor format.............................................................1494 ADMA interrupt................................................................................................1497 ADMA error......................................................................................................1498
49.5.3
SD protocol unit...........................................................................................................................................1498 49.5.3.1 49.5.3.2 49.5.3.3 49.5.3.4 SD transceiver..........................................................................................................................1499 SD clock & monitor.................................................................................................................1499 Command agent.......................................................................................................................1499 Data agent................................................................................................................................1500
Clock & reset manager.................................................................................................................................1500 Clock generator............................................................................................................................................1501 SDIO card interrupt......................................................................................................................................1501 49.5.6.1 49.5.6.2 49.5.6.3 Interrupts in 1-bit mode............................................................................................................1501 Interrupt in 4-bit mode.............................................................................................................1502 Card interrupt handling............................................................................................................1502
49.5.7
Card insertion and removal detection..........................................................................................................1504 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
66
Section Number
49.5.8
Title
Page
49.5.9
MMC fast boot.............................................................................................................................................1505 49.5.9.1 49.5.9.2 Boot operation..........................................................................................................................1505 Alternative boot operation.......................................................................................................1506
49.6
Initialization/application of SDHC...............................................................................................................................1507 49.6.1 49.6.2 Command send and response receive basic operation.................................................................................1508 Card identification mode..............................................................................................................................1508 49.6.2.1 49.6.2.2 49.6.2.3 49.6.2.4 49.6.3 Card detect...............................................................................................................................1508 Reset.........................................................................................................................................1510 Voltage validation....................................................................................................................1511 Card registry.............................................................................................................................1512
Card access...................................................................................................................................................1513 49.6.3.1 Block write...............................................................................................................................1514 49.6.3.1.1 49.6.3.1.2 49.6.3.2 Normal write.....................................................................................................1514 Write with pause...............................................................................................1515
49.6.3.3
49.6.3.4 49.6.3.5
ADMA usage...........................................................................................................................1521 Transfer error...........................................................................................................................1521 49.6.3.5.1 49.6.3.5.2 49.6.3.5.3 49.6.3.5.4 CRC error..........................................................................................................1521 Internal DMA error...........................................................................................1522 ADMA error......................................................................................................1522 Auto CMD12 error............................................................................................1523
49.6.3.6
67
Section Number
49.6.4
Title
Page
Switch function............................................................................................................................................1524 49.6.4.1 49.6.4.2 49.6.4.3 49.6.4.4 Query, enable and disable SDIO high speed mode..................................................................1524 Query, enable and disable SD high speed mode......................................................................1525 Query, enable and disable MMC high speed mode.................................................................1525 Set MMC bus width.................................................................................................................1526
49.6.5
49.6.6
Fast boot operation.......................................................................................................................................1527 49.6.6.1 49.6.6.2 49.6.6.3 Normal fast boot flow..............................................................................................................1527 Alternative fast boot flow........................................................................................................1528 Fast boot application case (in DMA mode).............................................................................1529
49.6.7 49.7
Software restrictions.....................................................................................................................................................1537 49.7.1 49.7.2 49.7.3 49.7.4 49.7.5 49.7.6 49.7.7 49.7.8 Initialization active.......................................................................................................................................1537 Software polling procedure..........................................................................................................................1537 Suspend operation........................................................................................................................................1538 Data length setting.......................................................................................................................................1538 (A)DMA address setting..............................................................................................................................1538 Data port access...........................................................................................................................................1538 Change clock frequency...............................................................................................................................1539 Multi-block read...........................................................................................................................................1539
I2S signal descriptions..................................................................................................................................................1545 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
68
Section Number
50.3
Title
Page
Memory map/register definition...................................................................................................................................1549 50.3.1 50.3.2 50.3.3 50.3.4 50.3.5 50.3.6 50.3.7 50.3.8 50.3.9 50.3.10 50.3.11 50.3.12 50.3.13 50.3.14 50.3.15 50.3.16 50.3.17 50.3.18 50.3.19 50.3.20 50.3.21 I2S Transmit Data Registers 0 (I2Sx_TX0).................................................................................................1550 I2S Transmit Data Registers 1 (I2Sx_TX1).................................................................................................1551 I2S Receive Data Registers 0 (I2Sx_RX0)...................................................................................................1552 I2S Receive Data Registers 1 (I2Sx_RX1)...................................................................................................1552 I2S Control Register (I2Sx_CR)...................................................................................................................1553 I2S Interrupt Status Register (I2Sx_ISR).....................................................................................................1556 I2S Interrupt Enable Register (I2Sx_IER)....................................................................................................1561 I2S Transmit Configuration Register (I2Sx_TCR).......................................................................................1564 I2S Receive Configuration Register (I2Sx_RCR)........................................................................................1566 I2S Transmit Clock Control Registers (I2Sx_TCCR)..................................................................................1569 I2S Receive Clock Control Registers (I2Sx_RCCR)...................................................................................1571 I2S FIFO Control/Status Register (I2Sx_FCSR)..........................................................................................1572 I2S AC97 Control Register (I2Sx_ACNT)...................................................................................................1578 I2S AC97 Command Address Register (I2Sx_ACADD).............................................................................1580 I2S AC97 Command Data Register (I2Sx_ACDAT)...................................................................................1580 I2S AC97 Tag Register (I2Sx_ATAG)........................................................................................................1581 I2S Transmit Time Slot Mask Register (I2Sx_TMSK)................................................................................1581 I2S Receive Time Slot Mask Register (I2Sx_RMSK).................................................................................1582 I2S AC97 Channel Status Register (I2Sx_ACCST).....................................................................................1583 I2S AC97 Channel Enable Register (I2Sx_ACCEN)...................................................................................1583 I2S AC97 Channel Disable Register (I2Sx_ACCDIS).................................................................................1584
50.4
Functional description...................................................................................................................................................1584 50.4.1 Detailed operating mode descriptions..........................................................................................................1584 50.4.1.1 Normal mode............................................................................................................................1585 50.4.1.1.1 50.4.1.1.2 50.4.1.2 Normal mode transmit......................................................................................1585 Normal mode receive........................................................................................1586
Section Number
50.4.1.2.2 50.4.1.3 50.4.1.4
Title
Page
Gated clock mode.....................................................................................................................1593 I2S mode..................................................................................................................................1595 50.4.1.4.1 50.4.1.4.2 I2S master mode...............................................................................................1596 I2S slave mode..................................................................................................1597
50.4.1.5
AC97 mode..............................................................................................................................1598 50.4.1.5.1 50.4.1.5.2 AC97 fixed mode (ACNT[FV] = 0).................................................................1600 AC97 variable mode (ACNT[FV] = 1).............................................................1600
50.4.2
I2S clocking.................................................................................................................................................1601 50.4.2.1 50.4.2.2 I2S clock and frame sync generation.......................................................................................1602 DIV2, PSR and PM bits description........................................................................................1603
50.4.3
External frame and clock operation.............................................................................................................1605 50.4.3.1 Supported data alignment formats...........................................................................................1606
Receive interrupt enable bit description.......................................................................................................1607 Transmit interrupt enable bit description.....................................................................................................1608 Internal frame and clock shutdown..............................................................................................................1609 Reset.............................................................................................................................................................1610
Initialization/application information...........................................................................................................................1611
GPIO signal descriptions.............................................................................................................................1614 51.1.3.1 Detailed signal description.......................................................................................................1614 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
70
Section Number
51.2
Title
Page
Memory map and register definition.............................................................................................................................1615 51.2.1 51.2.2 51.2.3 51.2.4 51.2.5 51.2.6 Port Data Output Register (GPIOx_PDOR).................................................................................................1618 Port Set Output Register (GPIOx_PSOR)....................................................................................................1618 Port Clear Output Register (GPIOx_PCOR)................................................................................................1619 Port Toggle Output Register (GPIOx_PTOR).............................................................................................1620 Port Data Input Register (GPIOx_PDIR).....................................................................................................1620 Port Data Direction Register (GPIOx_PDDR).............................................................................................1621
51.3
Functional description...................................................................................................................................................1621 51.3.1 51.3.2 General purpose input..................................................................................................................................1621 General purpose output................................................................................................................................1622
Modes of operation.......................................................................................................................................................1626 52.4.1 52.4.2 52.4.3 52.4.4 TSI disabled mode.......................................................................................................................................1626 TSI active mode...........................................................................................................................................1626 TSI low power mode....................................................................................................................................1626 Block diagram..............................................................................................................................................1627
52.5
52.6
Memory map and register definition.............................................................................................................................1628 52.6.1 52.6.2 52.6.3 General Control and Status Register (TSIx_GENCS).................................................................................1630 SCAN control register (TSIx_SCANC).......................................................................................................1633 Pin enable register (TSIx_PEN)...................................................................................................................1636 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
71
Section Number
52.6.4 52.6.5 52.6.6 52.7
Title
Page
Status Register (TSIx_STATUS).................................................................................................................1639 Counter Register (TSIx_CNTRn)................................................................................................................1642 Channel n threshold register (TSIx_THRESHLDn)....................................................................................1643
Functional descriptions.................................................................................................................................................1643 52.7.1 Capacitance measurement............................................................................................................................1643 52.7.1.1 52.7.1.2 52.7.1.3 52.7.2 52.7.3 TSI electrode oscillator............................................................................................................1643 Electrode oscillator and counter control..................................................................................1645 TSI reference oscillator............................................................................................................1646
TSI measurement result...............................................................................................................................1647 Electrode scan unit.......................................................................................................................................1647 52.7.3.1 52.7.3.2 52.7.3.3 52.7.3.4 Active electrodes......................................................................................................................1647 Scan trigger..............................................................................................................................1648 Software trigger mode..............................................................................................................1648 Periodic scan control................................................................................................................1648 52.7.3.4.1 52.7.3.4.2 52.7.3.4.3 52.7.3.4.4 Active mode periodic scan................................................................................1649 Low power mode scan......................................................................................1649 End-of-scan interrupt........................................................................................1649 Over-run interrupt.............................................................................................1650
52.7.4
Touch detection unit.....................................................................................................................................1650 52.7.4.1 Capacitance change threshold..................................................................................................1651 52.7.4.1.1 52.7.4.2 Out-of-range interrupt.......................................................................................1651
Error interrupt..........................................................................................................................1651
52.8
Section Number
53.1.3 53.2
Title
Page
Block diagram..............................................................................................................................................1655
LCD Signal Descriptions..............................................................................................................................................1656 53.2.1 53.2.2 53.2.3 LCD_P[63:0]................................................................................................................................................1657 VLL1, VLL2, VLL3....................................................................................................................................1657 Vcap1, Vcap2...............................................................................................................................................1657
53.3
Memory map and register definition.............................................................................................................................1657 53.3.1 53.3.2 53.3.3 53.3.4 53.3.5 53.3.6 53.3.7 53.3.8 53.3.9 53.3.10 53.3.11 53.3.12 53.3.13 53.3.14 53.3.15 53.3.16 53.3.17 53.3.18 53.3.19 53.3.20 53.3.21 53.3.22 LCD general control register (LCD_GCR)..................................................................................................1659 LCD auxiliary register (LCD_AR)..............................................................................................................1663 LCD fault detect control register (LCD_FDCR).........................................................................................1665 LCD fault detect status register (LCD_FDSR)............................................................................................1666 LCD pin enable register (LCD_PENn)........................................................................................................1667 LCD backplane enable register (LCD_BPENn)..........................................................................................1668 LCD waveform register (LCD_WF3TO0)..................................................................................................1669 LCD waveform register (LCD_WF7TO4)..................................................................................................1670 LCD waveform register (LCD_WF11TO8)................................................................................................1671 LCD waveform register (LCD_WF15TO12)..............................................................................................1671 LCD waveform register (LCD_WF19TO16)..............................................................................................1672 LCD waveform register (LCD_WF23TO20)..............................................................................................1673 LCD waveform register (LCD_WF27TO24)..............................................................................................1673 LCD waveform register (LCD_WF31TO28)..............................................................................................1674 LCD waveform register (LCD_WF35TO32)..............................................................................................1675 LCD waveform register (LCD_WF39TO36)..............................................................................................1675 LCD waveform register (LCD_WF43TO40)..............................................................................................1676 LCD waveform register (LCD_WF47TO44)..............................................................................................1677 LCD waveform register (LCD_WF51TO48)..............................................................................................1677 LCD waveform register (LCD_WF55TO52)..............................................................................................1678 LCD waveform register (LCD_WF59TO56)..............................................................................................1679 LCD waveform register (LCD_WF63TO60)..............................................................................................1679
Section Number
53.4
Title
Page
Functional description...................................................................................................................................................1680 53.4.1 LCD controller driver description................................................................................................................1681 53.4.1.1 53.4.1.2 53.4.1.3 53.4.1.4 LCD duty cycle........................................................................................................................1681 LCD bias..................................................................................................................................1682 LCD controller base clock and frame frequency.....................................................................1683 LCD waveform examples........................................................................................................1685 53.4.1.4.1 53.4.1.4.2 53.4.1.4.3 53.4.2 53.4.3 1/2 Duty multiplexed with 1/3 bias mode (low-power waveform)...................1685 1/4 Duty multiplexed with 1/3 bias mode (low-power waveform)...................1686 1/8 Duty multiplexed with 1/3 bias mode (low-power waveform)...................1687
WFyTOx registers........................................................................................................................................1689 LCD display modes......................................................................................................................................1690 53.4.3.1 53.4.3.2 LCD blink modes.....................................................................................................................1691 Blink frequency........................................................................................................................1692
53.4.4
LCD charge pump and power supply operation..........................................................................................1692 53.4.4.1 LCD power supply configuration............................................................................................1694 53.4.4.1.1 53.4.4.1.2 LCD external power supply, VSUPPLY[1:0] = 11..........................................1696 LCD internal power supply, VSUPPLY[1:0] = 00 or 01.................................1697
Initialization section......................................................................................................................................................1705 53.5.1 53.5.2 Initialization sequence..................................................................................................................................1705 Initialization Examples................................................................................................................................1706 53.5.2.1 53.5.2.2 53.5.2.3 Initialization example 1............................................................................................................1707 Initialization example 2............................................................................................................1709 Initialization example 3............................................................................................................1710
53.6
Application information................................................................................................................................................1712 53.6.1 LCD seven segment example description....................................................................................................1713 53.6.1.1 LCD controller waveforms......................................................................................................1715 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
74
Section Number
53.6.1.2 53.6.1.3 53.6.2
Title
Page
Introduction...................................................................................................................................................................1720 54.2.1 54.2.2 54.2.3 Block Diagram.............................................................................................................................................1720 Features........................................................................................................................................................1721 Modes of Operation.....................................................................................................................................1721 54.2.3.1 54.2.3.2 54.2.3.3 Reset.........................................................................................................................................1721 IEEE 1149.1-2001 Defined Test Modes..................................................................................1722 Bypass Mode............................................................................................................................1722
54.3
JTAG Signal Descriptions............................................................................................................................................1722 54.3.1 Detailed Signal Descriptions........................................................................................................................1723 54.3.1.1 54.3.1.2 54.3.1.3 54.3.1.4 TCK - Test Clock Input...........................................................................................................1723 TDI - Test Data Input...............................................................................................................1723 TDO - Test Data Output...........................................................................................................1723 TMS - Test Mode Select..........................................................................................................1723
54.4
Register Definition........................................................................................................................................................1724 54.4.1 54.4.2 54.4.3 54.4.4 Instruction Register......................................................................................................................................1724 Bypass Register............................................................................................................................................1724 Device Identification Register.....................................................................................................................1724 Boundary Scan Register...............................................................................................................................1726
54.5
Functional Description..................................................................................................................................................1726 54.5.1 54.5.2 JTAGC Reset Configuration........................................................................................................................1726 IEEE 1149.1-2001 (JTAG) Test Access Port..............................................................................................1726 K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
75
Section Number
54.5.3
Title
Page
TAP Controller State Machine.....................................................................................................................1727 54.5.3.1 54.5.3.2 Enabling the TAP Controller...................................................................................................1729 Selecting an IEEE 1149.1-2001 Register.................................................................................1729
54.5.4
JTAGC Block Instructions...........................................................................................................................1729 54.5.4.1 54.5.4.2 54.5.4.3 54.5.4.4 54.5.4.5 54.5.4.6 54.5.4.7 54.5.4.8 IDCODE Instruction................................................................................................................1730 EZPORT Instruction................................................................................................................1730 SAMPLE/PRELOAD Instruction............................................................................................1730 SAMPLE Instruction................................................................................................................1731 EXTEST External Test Instruction.....................................................................................1731 HIGHZ Instruction...................................................................................................................1731 CLAMP Instruction..................................................................................................................1732 BYPASS Instruction................................................................................................................1732
54.5.5 54.6
Boundary Scan.............................................................................................................................................1732
Initialization/Application Information..........................................................................................................................1732
1.1.2 Audience
This document is primarily for system architects and software application developers who are using or considering using the K40 microcontroller in a system.
1.2 Conventions
1.2.1 Numbering systems
The following suffixes identify different numbering systems:
This suffix b Identifies a Binary number. For example, the binary equivalent of the number 5 is written 101b. (In some cases, binary numbers are shown with the prefix 0b.) Decimal number. Decimal numbers are followed by this suffix only when the possibility of confusion exists. In general, deci mal numbers are shown without a suffix. Hexadecimal number. For example, the hexadecimal equiva lent of the number 60 is written 3Ch. (In some cases, hexa decimal numbers are shown with the prefix 0x.)
Conventions
code
deasserted
Chapter 2 Introduction
2.1 Overview
This chapter provides an overview of the Kinetis portfolio and K40 family of products. It also presents high-level descriptions of the modules available on the devices covered by this document.
Kinetis Portfolio
Family
Program Flash
Key Features
K60 Family 256KB-1MB K40 Family K30 Family K20 Family K10 Family 64-512KB 64-512KB 32KB-1MB 32KB-1MB
USB
All Kinetis families include a powerful array of analog, communication and timing and control peripherals with the level of feature integration increasing with flash memory size and the number of inputs/outputs. Features common to all Kinetis families include: Core: ARM Cortex-M4 Core delivering 1.25 DMIPS/MHz with DSP instructions (floating-point unit available on certain Kinetis families) Up to 32-channel DMA for peripheral and memory servicing with minimal CPU intervention Broad range of performance levels rated at maximum CPU frequencies of 50 MHz, 72 MHz, and 100 MHz (120 MHz and 150 MHz available on certain Kinetis families) Ultra-low power: 10 low power operating modes for optimizing peripheral activity and wake-up times for extended battery life. Lowleakage wake-up unit, low power timer, and low power RTC for additional low power flexibility Industry-leading fast wake-up times Memory:
Chapter 2 Introduction
Scalable memory footprints from 32 KB flash / 8 KB RAM to 1 MB flash / 128 KB RAM. Independent flash banks enable concurrent code execution and firmware updates Optional 16 KB cache memory for optimizing bus bandwidth and flash execution performance. Offered on K10, K20, and K60 family devices with CPU performance of 120 MHz or greater. FlexMemory with up to 512 KB FlexNVM and up to 16 KB FlexRAM. FlexNVM can be partitioned to support additional program flash memory (ex. bootloader), data flash (ex. storage for large tables), or EEPROM backup. FlexRAM supports EEPROM byte-write/byte-erase operations and dictates the maximum EEPROM size. EEPROM endurance capable of exceeding 10 million cycles EEPROM erase/write times an order of magnitude faster than traditional EEPROM Mixed-signal analog: Fast, high precision 16-bit ADCs, 12-bit DACs, programmable gain amplifiers, high speed comparators and an internal voltage reference. Powerful signal conditioning, conversion and analysis capability with reduced system cost Human Machine Interface (HMI): Capacitive Touch Sensing Interface with full low-power support and minimal current adder when enabled Connectivity and Communications: UARTs with ISO7816 and IrDA support, I2S, CAN, I2C and DSPI Reliability, Safety and Security: Hardware cyclic redundancy check engine for validating memory contents/ communication data and increased system reliability Independent-clocked COP for protection against code runaway in fail-safe applications External watchdog monitor Timing and Control: Powerful FlexTimers which support general purpose, PWM, and motor control functions Carrier Modulator Transmitter for IR waveform generation Programmable Interrupt Timer for RTOS task scheduler time base or trigger source for ADC conversion and programmable delay block External Interfaces:
Multi-function external bus interface capable of interfacing to external memories, gate-array logic, or an LCD System: 5 V tolerant GPIO with pin interrupt functionality Wide operating voltage range from 1.71 V to 3.6 V with flash programmable down to 1.71 V with fully functional flash and analog peripherals Ambient operating temperature ranges from -40 C to 105 C In addition to these common features, incremental capability is added to the specific Kinetis families as outlined in the following figure.
O TG Se (F gm S & en H t S) N LC AN D D Fl as Fl h oa C tin on g tro Po lle Et in r he tU rn n it et (IE En cr EE yp 15 tio 88 n D (C ua ) AU lC AN +R N H G ar ) dw ar e D T D am R pe C on rD tro et lle ec r t
SB
K60 Family
256KB-1MB, 100-256pin
Common System IP
32-bit ARM Cortex-M4 Core with DSP Instructions Next Generation Flash Memory High Reliability, Fast Access FlexMemory w/ EEPROM capability SRAM Memory Protection Unit Low Voltage, Low Power Multiple Operating Modes, Clock Gating (1.71-3.6V with 5V tolerant I/O) DMA
Common Analog IP
16-bit ADC
Common Digital IP
CRC I2 C
Development Tools
Bundled IDE with Processor Expert
Bundled OS USB, TCP/IP, Security Modular Tower Hardware Development System
K40 Family
64-512KB, 64-144pin
I 2S UART/SPI
K30 Family
64-512KB, 64-144pin
12-bit DAC
K20 Family
32KB-1MB, 32-144pin
High-speed Comparators
Application Software Stacks, Peripheral Drivers & Application Libraries (Motor Control, HMI, USB)
Broad 3rd party ecosystem
K10 Family
32KB-1MB, 32-144pin
Chapter 2 Introduction
Devices start from 64 KB of flash in 64QFN packages extending up to 512 KB in a 144MAPBGA package with a rich suite of analog, communication, timing and control peripherals.
Security Analog
Communications
General purpose input/output controller Capacitive touch sense input interface enabled in hardware Segment LCD controller
NVIC
Chapter 2 Introduction
Low-leakage wakeup unit (LLWU) Miscellaneous control module (MCM) Crossbar switch (XBS)
Memory protection unit (MPU) Peripheral bridges DMA multiplexer (DMAMUX) Direct memory access (DMA) controller
Flash memory controller SRAM SRAM controller System register file VBAT register file Serial programming interface (EzPort)
FlexBus
2.4.4 Clocks
The following clock modules are available on this device.
Chapter 2 Introduction
12-bit digital-to-analog converters (DAC) Low-power general-purpose DAC, whose output can be placed on an external pin or set as one of the inputs to the analog comparator or ADC. Voltage reference (VREF) Supplies an accurate voltage output that is trimmable in 0.5 mV steps. The VREF can be used in medical applications, such as glucose meters, to provide a refer ence voltage to biosensors or as a reference to analog peripherals, such as the ADC, DAC, or CMP.
Selectable clock for prescaler/glitch filter of 1 kHz (internal LPO), 32.768 kHz (external crystal), or internal reference clock Configurable Glitch Filter or Prescaler with 15-bit counter 16-bit time or pulse counter with compare Interrupt generated on Timer Compare Hardware trigger generated on Timer Compare Table continues on the next page...
Chapter 2 Introduction
Controller Area Network (CAN) Serial peripheral interface (SPI) Inter-integrated circuit (I2C) Universal asynchronous receiver/trans mitters (UART) Secure Digital host controller (SDHC)
I2S
4 KB 4 KB 4 KB 4 KB
32 KB 32 KB 64 KB 64 KB 128 KB 128 KB
98 98 98 98 98 98
Core modules
Debug Interrupts
PPB
Figure 3-1. Core configuration Table 3-1. Reference links to related information
Topic Full description System memory map Clocking Power management System/instruction/data bus module System/instruction/data bus module Debug Crossbar switch SRAM IEEE 1149.1 JTAG IEEE 1149.7 JTAG (cJTAG) Serial Wire Debug (SWD) ARM Real-Time Trace Interface Interrupts Private Peripheral Bus (PPB) module Nested Vectored Inter rupt Controller (NVIC) Miscellaneous Control Module (MCM) NVIC MCM Related module ARM Cortex-M4 core, r0p0 Reference ARM Cortex-M4 Technical Reference Manual System memory map Clock distribution Power management Crossbar switch SRAM Debug
PPB Modules
SRAM Upper
Chapter 3 Chip Configuration Bus name System bus Private peripheral (PPB) bus Description The system bus is connected to a separate master port on the crossbar. In addition, the sys tem bus is tightly coupled to the upper half system RAM (SRAM_U). The PPB provides access to the ARM modules such as NVIC, ETM, ITM, DWT, FBP, and ROM table. Additionally, the Freescale Miscellaneous Control Module (MCM) is accessible from this bus.
Core modules
ARM Cortex-M4 core Interrupts PPB Module Module
Module
Figure 3-2. NVIC configuration Table 3-2. Reference links to related information
Topic Full description System memory map Clocking Power management Private Peripheral Bus (PPB) ARM Cortex-M4 core Related module Nested Vectored Inter rupt Controller (NVIC) Reference ARM Cortex-M4 Technical Reference Manual System memory map Clock distribution Power management ARM Cortex-M4 core
Core modules
Core modules
Wake-up requests
Module
Module
Figure 3-3. Asynchronous Wake-up Interrupt Controller configuration Table 3-4. Reference links to related information
Topic System memory map Clocking Power management Nested Vectored Inter rupt Controller (NVIC) Wake-up requests Related module Reference System memory map Clock distribution Power management NVIC AWIC wake-up sources
System modules
JTAG controller
Figure 3-4. JTAGC Controller configuration Table 3-6. Reference links to related information
Topic Full description Signal multiplexing Full description Related module JTAGC Port control CJTAG Reference JTAGC Signal multiplexing CJTAG
Figure 3-5. SIM configuration Table 3-7. Reference links to related information
Topic Full description System memory map Clocking Power management Related module SIM Reference SIM System memory map Clock distribution Power management
Resets
Mode controller
Figure 3-6. Mode controller configuration Table 3-8. Reference links to related information
Topic Full description System memory map Power management Power management controller (PMC) Related module Mode Controller Reference Mode Controller System memory map Power management PMC
System modules
Mode controller
Figure 3-7. PMC configuration Table 3-9. Reference links to related information
Topic Full description System memory map Power management Mode Controller Related module PMC Reference PMC System memory map Power management Mode Controller
Module
Module
Figure 3-8. Low-Leakage Wake-up Unit configuration Table 3-10. Reference links to related information
Topic Full description System memory map Clocking Power management Power Management Controller (PMC) Mode Controller Wake-up requests Related module LLWU Reference LLWU System memory map Clock distribution Power management chapter Power Management Controller (PMC) Mode Controller LLWU wake-up sources
System modules
1. Requires the peripheral and the peripheral interrupt to be enabled. The LLWU's WUME bit enables the internal module flag as a wakeup input. After wakeup, the flags are cleared based on the peripheral clearing mechanism.
PPB Transfers
Figure 3-9. MCM configuration Table 3-12. Reference links to related information
Topic Full description System memory map Clocking Power management Transfers Private Peripheral Bus (PPB) ARM Cortex-M4 core Related module Miscellaneous control module (MCM) Reference MCM System memory map Clock distribution Power management ARM Cortex-M4 core
Crossbar Switch
ARM core code bus
M0
Mux
S2
EzPort
M2
S1
DMA
M1
Flash controller
S0
SRAM backdoor
Peripheral bridge 0
Peripheral bridge 1
Mux
S3
M4
USB
GPIO controller
MPU
FlexBus
SDHC
Figure 3-10. Crossbar switch integration Table 3-13. Reference links to related information
Topic Full description System memory map Clocking Crossbar switch master Crossbar switch master Crossbar switch master ARM Cortex-M4 core DMA controller EzPort Table continues on the next page... Related module Crossbar switch Reference Crossbar Switch System memory map Clock Distribution ARM Cortex-M4 core DMA controller EzPort
M5
S4
System modules
NOTE The DMA and EzPort share a master port. Since these modules never operate at the same time, no configuration or arbitration explanations are necessary.
Protected by MPU?
Yes Yes No. Protection built into bridge. No. Protection built into bridge. Yes
Logical Master
Slave
Figure 3-11. Memory Protection Unit configuration Table 3-14. Reference links to related information
Topic Full description System memory map Clocking Power management Logical masters Slave modules Related module Memory Protection Unit (MPU) Reference MPU System memory map Clock distribution Power management Logical master assignments Slave module assignments
System modules
System modules
Transfers
Figure 3-12. Peripheral bridge configuration Table 3-20. Reference links to related information
Topic Full description System memory map Clocking Crossbar switch Crossbar switch Related module Peripheral bridge (AIPS-Lite) Reference Peripheral bridge (AIPS-Lite) System memory map Clock Distribution Crossbar switch
System modules
Peripheral bridge 0 Register access Requests DMA controller Channel request Module Module
Module
Figure 3-13. DMA request multiplexer configuration Table 3-21. Reference links to related information
Topic Full description System memory map Clocking Power management Channel request Requests DMA controller Related module DMA request multiplex er Reference DMA Mux System memory map Clock distribution Power management DMA Controller DMA request sources
System modules
1. Configuring a DMA channel to select source 0 or any of the reserved sources disables that DMA channel.
Transfers
DMA Controller
Requests
Figure 3-14. DMA Controller configuration Table 3-23. Reference links to related information
Topic Full description System memory map Register access Clocking Power management Transfers Crossbar switch Peripheral bridge (AIPS-Lite 0) Related module DMA Controller Reference DMA Controller System memory map AIPS-Lite 0 Clock distribution Power management Crossbar switch
System modules
Peripheral bridge 0 Register access Signal multiplexing
Module signals
Figure 3-15. External Watchdog Monitor configuration Table 3-24. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port Control Module Related module External Watchdog Monitor (EWM) Reference EWM System memory map Clock distribution Power management Signal multiplexing
Mode Controller
WDOG
Figure 3-16. Watchdog configuration Table 3-27. Reference links to related information
Topic Full description System memory map Clocking Power management Mode Controller (MC) Related module Watchdog Reference Watchdog System memory map Clock distribution Power management Mode Controller
Clock Modules
NOTE To enable the WDOG module when the chip is in Stop mode, write ones to both the STNDBYEN bit and the STOPEN bit of the Watchdog Status and Control Register High.
Figure 3-17. MCG configuration Table 3-30. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module MCG Reference MCG System memory map Clock distribution Power management Signal multiplexing
Clock Modules
Peripheral bridge Register access Signal multiplexing
MCG
System oscillator
Module signals
Figure 3-18. OSC configuration Table 3-31. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Full description Port control MCG Related module OSC Reference OSC System memory map Clock distribution Power management Signal multiplexing MCG
MCG
Figure 3-19. RTC OSC configuration Table 3-32. Reference links to related information
Topic Full description Signal multiplexing Full description Related module RTC OSC Port control MCG Reference RTC OSC Signal multiplexing MCG
Transfers
Flash memory
Figure 3-20. Flash memory configuration Table 3-33. Reference links to related information
Topic Full description System memory map Clocking Transfers Register access Flash memory control ler Peripheral bridge Related module Flash memory Reference Flash memory System memory map Clock Distribution Flash memory controller Peripheral bridge
For devices that contain FlexNVM: 1 block of program flash consisting of 2 KB sectors For devices that contain FlexNVM: 1 block of FlexNVM consisting of 2 KB sectors For devices that contain FlexNVM: 1 block of FlexRAM The amounts of flash memory for the devices covered in this document are:
Device
MK40X128VLQ100 MK40X128VMD100 MK40X256VLQ100 MK40X256VMD100 MK40N512VLQ100 MK40N512VMD100
FlexNVM (KB)
128 128 256 256
FlexRAM (KB)
4 4 4 4
RAM
Figure 3-21. Flash memory map for devices containing only program flash
FTFL base address Registers
1. Via the EzPort by issuing a bulk erase (BE) command. See the EzPort chapter for more details. 2. Via the SWJ-DP debug port by setting DAP_CONTROL[0]. DAP_STATUS[0] is set to indicate the mass erase command has been accepted. DAP_CONTROL[0] is cleared when the mass erase completes.
Transfers
Transfers
Figure 3-23. Flash memory controller configuration Table 3-34. Reference links to related information
Topic Full description System memory map Related module Flash memory control ler Reference Flash memory controller System memory map Table continues on the next page...
Flash memory
MPU
SRAM controller
Cortex-M4 core
SRAM upper
Transfers
Crossbar switch
MPU
SRAM lower
Figure 3-24. SRAM configuration Table 3-35. Reference links to related information
Topic Full description System memory map Clocking Transfers SRAM controller ARM Cortex-M4 core Memory protection unit Related module SRAM Reference SRAM System memory map Clock Distribution SRAM controller ARM Cortex-M4 core Memory protection unit
SRAM (KB)
32 32 64 64 128 128
SRAM_L is anchored to 0x1FFF_FFFF and occupies the space before this ending address. SRAM_U is anchored to 0x2000_0000 and occupies the space after this beginning address. Valid address ranges for SRAM_L and SRAM_U are then defined as: SRAM_L = [0x2000_0000(SRAM_size/2)] to 0x1FFF_FFFF SRAM_U = 0x2000_0000 to [0x2000_0000+(SRAM_size/2)-1] This is illustrated in the following figure.
SRAM size / 2 0x2000_0000 SRAM_size/2
SRAM_L
0x1FFF_FFFF 0x2000_0000
SRAM size / 2
SRAM_U
0x2000_0000 + SRAM_size/2 - 1
For example, for a device containing 64 KB of SRAM the ranges are: SRAM_L: 0x1FFF_8000 0x1FFF_FFFF SRAM_U: 0x2000_0000 0x2000_7FFF
SRAM_L Accessible by the code bus of the Cortex-M4 core and by the backdoor port. SRAM_U Accessible by the system bus of the Cortex-M4 core and by the backdoor port. The backdoor port makes the SRAM accessible to the non-core bus masters (such as DMA). The following figure illustrates the SRAM accesses within the device.
SRAM_L
Cortex-M4 core Frontdoor Code bus MPU System bus SRAM controller MPU Backdoor
non-core master
SRAM_U
The following simultaneous accesses can be made to different logical halves of the SRAM: Core code and core system Core code and non-core master Core system and non-core master NOTE Two non-core masters cannot access SRAM simultaneously. The required arbitration and serialization is provided by the crossbar switch. The SRAM_{L,U} arbitration is controlled by the SRAM controller based on the configuration bits in the MCM module. NOTE Burst-access cannot occur across the 0x2000_0000 boundary that separates the two SRAM arrays. The two arrays should be treated as separate memory ranges for burst accesses.
Cortex-M4 core
SRAM controller
Crossbar switch
MPU
Transfers
Figure 3-27. SRAM controller configuration Table 3-36. Reference links to related information
Topic System memory map Power management Power management controller (PMC) Transfers Related module
Register file
Figure 3-28. System Register file configuration Table 3-37. Reference links to related information
Topic Full description System memory map Clocking Power management Related module Register file Reference Register file System memory map Clock distribution Power management
Figure 3-29. VBAT Register file configuration Table 3-38. Reference links to related information
Topic Full description System memory map Clocking Power management Related module VBAT register file Reference VBAT register file System memory map Clock distribution Power management
EzPort
Figure 3-30. EzPort configuration Table 3-39. Reference links to related information
Topic Full description Related module EzPort Table continues on the next page... Reference EzPort
Transfers
FlexBus
Module signals
Figure 3-31. FlexBus configuration Table 3-40. Reference links to related information
Topic Full description System memory map Clocking Power management Transfers Signal multiplexing Memory protection unit (MPU) Port control Related module FlexBus Reference FlexBus System memory map Clock distribution Power management Memory protection unit (MPU) Signal multiplexing
FlexBus CSPMCR
FB_ALE FB_CS1 FB_TS Reserved
Group1
Group2
Group3
Group4
Group5
To other modules
To other modules
External Pins
Security
Therefore, use the CSPMCR and port control registers to configure which control signal is available on the external pin. All control signals, except for FB_TA, are assigned to the ALT5 function in the port control module. Since, unlike the other control signals, FB_TA is an input signal, it is assigned to the ALT6 function.
3.6 Security
3.6.1 CRC Configuration
This section summarizes how the module has been configured in the chip. For a comprehensive description of the module itself, see the modules dedicated chapter.
CRC
Figure 3-33. CRC configuration Table 3-41. Reference links to related information
Topic Full description System memory map Power management Related module CRC Reference CRC System memory map Power management
3.7 Analog
3.7.1 16-bit SAR ADC with PGA Configuration
This section summarizes how the module has been configured in the chip. For a comprehensive description of the module itself, see the modules dedicated chapter.
Peripheral bus controller 0 Register access Signal multiplexing
Module signals
Figure 3-34. 16-bit SAR ADC with PGA configuration Table 3-42. Reference links to related information
Topic Full description Related module 16-bit SAR ADC with PGA Reference 16-bit SAR ADC with PGA
Analog
The number of ADC channels present on the device is determined by the pinout of the specific device package. For details regarding the number of ADC channel available on a particular package, refer to the signal multiplexing chapter of this MCU.
Reserved Reserved
Interleaved with ADC1_DP3 and ADC1_DM3 Interleaved with ADC1_DP3 Interleaved with ADC1_DP0 and ADC1_DM0 Interleaved with ADC1_DP0 ADCx_CFG2[MUXSEL] bit selects between a and b channels. Refer to MUXSEL description in ADC chapter for details. Interleaved with ADC1_SE8 Interleaved with ADC1_SE9 Interleaved with ADC1_DM3
Analog
NOTE In single-ended mode, each differential input can operate as two single-ended ADC channels.
Table 3-44. ADC1 Channel Assignment for 144-Pin Package
ADC Channel (SC1n[ADCH]) 00000 00001 00010 00011 001005 0010113 0011013 0011113 0010013 0010113 0011013 0011113 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 Channel DAD0 DAD1 DAD2 DAD3 AD4a AD5a AD6a AD7a AD4b AD5b AD6b AD7b AD8 AD9 AD10 AD11 AD12 AD13 AD14 AD15 AD16 AD17 AD18 AD19 AD20 AD21 AD22 AD23 AD24 Input signal (SC1n[DIFF]= 1) ADC1_DP0 and ADC1_DM01 ADC1_DP1 and ADC1_DM1 PGA1_DP and PGA1_DM ADC1_DP3 and ADC1_DM33 Input signal (SC1n[DIFF]= 0) ADC1_DP02 ADC1_DP1 PGA1_DP ADC1_DP34 ADC1_SE4a ADC1_SE5a ADC1_SE6a ADC1_SE7a ADC1_SE4b ADC1_SE5b ADC1_SE6b ADC1_SE7b ADC1_SE86 ADC1_SE97 ADC1_SE10 ADC1_SE11 ADC1_SE12 ADC1_SE13 ADC1_SE14 ADC1_SE15 ADC1_SE16 ADC1_SE17 VREF Output ADC1_DM08 ADC1_DM1 Reserved
Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved Reserved
Interleaved with ADC0_DP3 and ADC0_DM3 Interleaved with ADC0_DP3 Interleaved with ADC0_DP0 and ADC0_DM0 Interleaved with ADC0_DP0 ADCx_CFG2[MUXSEL] bit selects between a and b channels. Refer to MUXSEL description in ADC chapter for details. Interleaved with ADC0_SE8 Interleaved with ADC0_SE9 Interleaved with ADC0_DM3
Analog
DAD1
DAD0
PGA0_DP/ADC0_DP0/ADC1_DP3 PGA0_DM/ADC0_DM0/ADC1_DM3
PGA0
DAD2
DAD3
ADC1
DAD3
PGA1_DP/ADC1_DP0/ADC0_DP3 PGA1_DM/ADC1_DM0/ADC0_DM3
PGA1
DAD2
DAD0
ADC1_DP1 ADC1_DM1
DAD1
Analog
Peripheral bridge 0 Register access Signal multiplexing
Other peripherals
CMP
Module signals
Figure 3-36. CMP configuration Table 3-46. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module Comparator (CMP) Reference Comparator System memory map Clock distribution Power management Signal multiplexing
12-bit DAC
Module signals
Figure 3-37. 12-bit DAC configuration Table 3-48. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module 12-bit DAC Reference 12-bit DAC System memory map Clock distribution Power management Signal multiplexing
Analog
VREF
Module signals
Figure 3-38. VREF configuration Table 3-49. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module VREF Reference VREF System memory map Clock distribution Power management Signal multiplexing
3.8 Timers
3.8.1 PDB Configuration
This section summarizes how the module has been configured in the chip. For a comprehensive description of the module itself, see the modules dedicated chapter.
Peripheral bus controller 0 Register access Signal multiplexing
PDB
Module signals
Figure 3-39. PDB configuration Table 3-50. Reference links to related information
Topic Full description System memory map Clocking Related module PDB Reference PDB System memory map Clock distribution Table continues on the next page...
Timers
Number of PDB channels for ADC trigger Number of pre-triggers per PDB channel Number of DAC triggers Number of PulseOut
3.8.1.1.2
Connection
ADC0 trigger ADC1 trigger and FTM0 synchronous input 1 DAC0 and DAC1 trigger Pulse-out connected to each CMP module's sample/window input to control sample operation
Timers
FlexTimer
Module signals
Figure 3-40. FlexTimer configuration Table 3-54. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module FlexTimer Reference FlexTimer System memory map Clock distribution Power management Signal multiplexing
The FTM1 and FTM2 configuration differs from the FTM0 configuration by reduced number of channels and by adding support for quadrature decoder mode.
Timers
FTM1 FAULT0 = FTM1_FLT0 pin or CMP0 output FTM1 FAULT1 = CMP1 output FTM1 FAULT2 = CMP2 output FTM2 FAULT0 = FTM2_FLT0 pin or CMP0 output FTM2 FAULT1 = CMP1 output FTM2 FAULT2 = CMP2 output
FTM0
CONF Register
GTBEOUT = 1 GTBEEN = 1
GTBEOUT = 0 GTBEEN = 1
FTM Counter
gtb_in
gtb_in
FTM Counter
gtb_out
FTM2
CONF Register
GTBEOUT = 0 GTBEEN = 1
FTM Counter
gtb_in
Timers
Figure 3-42. PIT configuration Table 3-56. Reference links to related information
Topic Full description System memory map Clocking Power management Related module PIT Reference PIT System memory map Clock Distribution Power management
Low-power timer
Module signals
Figure 3-43. LPT configuration Table 3-58. Reference links to related information
Topic Full description System memory map Clocking Power management Signal Multiplexing Port control Related module Low-power timer Reference Low-power timer System memory map Clock Distribution Power management Signal Multiplexing
Timers
Peripheral bus controller 0 Register access Signal multiplexing
CMT
Module signals
Figure 3-44. CMT configuration Table 3-59. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module Carrier modulator transmitter (CMT) Reference CMT System memory map Clock distribution Power management Signal multiplexing
Module signals
Real-time clock
Figure 3-45. RTC configuration Table 3-60. Reference links to related information
Topic Full description System memory map Clocking Power management Related module RTC Reference RTC System memory map Clock Distribution Power management
Description
Reserved, must be cleared. Table continues on the next page...
Communication interfaces 0 PFLASHSWAP Program flash swap. 0 Program flash bank 0 is at address 0x0000_0000 1 Program flash bank 1 is at address 0x0000_0000
FS/LS transceiver
VREGIN
VOUT33
D+
D-
The chip can be powered by two AA/AAA cells. In this case, the MCU is powered through VDD which is within the 1.8 to 3.0 V range. After USB cable insertion is detected, the USB regulator is enabled to power the USB transceiver.
2 AA Cells
VDD VOUT33
Chip
3.9.1.2.2
The chip can also be powered by a single Li-ion battery. In this case, VOUT33 is connected to VDD. The USB regulator must be enabled by default to power the MCU. When connected to a USB host, the input source of this regulator is switched to the USB bus supply from the Li-ion battery. To charge the battery, the MCU can configure the battery charger according to the charger detection information.
Communication interfaces
VDD VOUT33 Cstab
TYPE A VBUS
Chip
Charger Si2301
VREGIN
USB Regulator
D+ DVSS Li-Ion
USB0_DP USB0_DM
Charger
USB
USB
XCVR
Controller
VBUS Sense
Detect
3.9.1.2.3
The chip can also be powered by the USB bus directly. In this case, VOUT33 is connected to VDD. The USB regulator must be enabled by default to power the MCU, then to power USB transceiver or external sensor.
VDD VOUT33
Cstab
TYPE A VBUS D+ D-
USB
Crossbar switch
Transfers
USB controller
Module signals
Figure 3-50. USB controller configuration Table 3-61. Reference links to related information
Topic Full description System memory map Clocking Transfers Signal Multiplexing Crossbar switch Port control Related module USB controller Reference USB controller System memory map Clock Distribution Crossbar switch Signal Multiplexing
Communication interfaces
Peripheral bridge 0 Register access
USB OTG
Figure 3-51. USB DCD configuration Table 3-62. Reference links to related information
Topic Full description System memory map Clocking USB controller Related module USB DCD Reference USB DCD System memory map Clock Distribution USB controller
Figure 3-52. USB Voltage Regulator configuration Table 3-63. Reference links to related information
Topic Full description System memory map Clocking USB controller Signal Multiplexing Port control Related module USB Voltage Regulator Reference USB Voltage Regulator System memory map Clock Distribution USB controller Signal Multiplexing
FlexCAN
Module signals
Figure 3-53. CAN configuration Table 3-64. Reference links to related information
Topic Full description System memory map Clocking Power management Signal Multiplexing Port control Related module CAN Reference CAN System memory map Clock Distribution Power management Signal Multiplexing
Communication interfaces
The FlexCAN module has a register bit CANCTRL[CLK_SRC] that selects between clocking the FlexCAN from the internal bus clock or the input clock (EXTAL). 3.9.2.4.2 Clock Gating
The clock to each CAN module can be gated on and off using the SCGCn[CANx] bits. These bits are cleared after any reset, which disables the clock to the corresponding module. The appropriate clock enable bit should be set by software at the beginning of the FlexCAN initialization routine to enable the module clock before attempting to initialize any of the FlexCAN registers.
Sources
Message buffers 0-15 Bus off Bit1 error Bit0 error Acknowledge error Cyclic redundancy check (CRC) error Form error Stuffing error Transmit error warning Receive error warning
The FlexCAN module can be configured to generate a wakeup interrupt in STOP and VLPS modes. When the FlexCAN is configured to generate a wakeup, a recessive to dominant transition on the CAN bus generates an interrupt.
SPI
Module signals
Figure 3-54. SPI configuration Table 3-65. Reference links to related information
Topic Full description System memory map Clocking Signal Multiplexing Port control Related module SPI Reference DSPI System memory map Clock Distribution Signal Multiplexing
Communication interfaces
The DSPI module is clocked by the internal bus clock. The module has an internal divider, with a minimum divide is two. So, the DSPI can run at a maximum frequency of bus clock/2.
Here are the steps to use a GPIO to create a wakeup upon reception of SPI data in slave mode: 1. Point the GPIO interrupt vector to the desired interrupt handler. 2. Enable the GPIO input to generate an interrupt on either the rising or falling edge (depending on the polarity of the chip select signal). 3. Enter Stop or VLPS mode and Wait for the GPIO interrupt. NOTE It is likely that in using this approach the first word of data from the SPI host might not be received correctly. This is dependent on the transfer rate used for the DSPI, the delay between chip select assertion and presentation of data, and the system interrupt latency.
Communication interfaces
I2 C
Module signals
Figure 3-55. I2C configuration Table 3-69. Reference links to related information
Topic Full description System memory map Clocking Power management Signal Multiplexing Port control Related module I2C Reference IC System memory map Clock Distribution Power management Signal Multiplexing
Module signals
UART
Figure 3-56. UART configuration Table 3-70. Reference links to related information
Topic Full description System memory map Clocking Power management Signal Multiplexing Port control Related module UART Reference UART System memory map Clock Distribution Power management Signal Multiplexing
Communication interfaces
MSB/LSB configuration on data IrDA 2. UART0 and UART1 are clocked from the core clock, the remaining UARTs are clocked on the bus clock. The maximum baud rate is 1/16 of related source clock frequency. 3. UART0 contains the standard features plus ISO7816 4. AMR support on all UARTs when 5 V tolerant pads are used. The pin control and interrupts (PORT) module supports open-drain for all I/O. 5. FIFOs: UART0 and UART1 contain 8-entry transmit and 8-entry receive FIFOs. All other UARTs contain a 1-entry transmit and receive FIFOs.
UART 0
x x x x
UART 1
x x x x
UART 2
x x x x
UART 3
x x x x
UART 4
x x x x
UART 5
x x x x
Chapter 3 Chip Configuration LIN break detect RxD pin active edge Initial character detect x x x x x x x x x x x x x
UART 0
x x x x x x x x x x
UART 1
x x x x x x
UART 2
x x x x x x
UART 3
x x x x x x
UART 4
x x x x x x
UART 5
x x x x x x
Communication interfaces
Peripheral bridge Register access Signal multiplexing Crossbar switch
Transfers
Module signals
SDHC
Figure 3-57. SDHC configuration Table 3-71. Reference links to related information
Topic Full description System memory map Clocking Power management Transfers Signal Multiplexing Crossbar switch Port control Related module SDHC Reference SDHC System memory map Clock Distribution Power management Crossbar switch Signal Multiplexing
I2 S
Module signals
Figure 3-58. I2S configuration Table 3-72. Reference links to related information
Topic Full description System memory map Clocking Power management Signal multiplexing Port control Related module I2S Reference I2S System memory map Clock Distribution Power management Signal Multiplexing
3.9.7.2 Interrupts
The interrupt outputs from the I2S module are OR'd to create a single interrupt to the interrupt control logic.
Communication interfaces
Transfers
Module signals
GPIO controller
Figure 3-59. GPIO configuration Table 3-73. Reference links to related information
Topic Full description System memory map Clocking Power management Transfers Signal Multiplexing Crossbar switch Port control Related module GPIO Reference GPIO System memory map Clock Distribution Power management Clock Distribution Signal Multiplexing
Module signals
Figure 3-60. TSI configuration Table 3-74. Reference links to related information
Topic Full description System memory map Clocking Power management Signal Multiplexing Port control Related module TSI Reference TSI System memory map Clock Distribution Power management Signal Multiplexing
Segment LCD
Module signals
Figure 3-61. SLCD configuration Table 3-76. Reference links to related information
Topic Full description System memory map Related module Segment LCD Reference Segment LCD System memory map Table continues on the next page...
Alternate clock
0x1400_00000x17FF_FFFF
For devices with FlexNVM: FlexRAM For devices with program flash only: Programming accelera tion RAM
All masters
SRAM_L: Lower SRAM (ICODE/DCODE) SRAM_U: Upper SRAM bitband region Reserved Aliased to SRAM_U bitband Reserved Table continues on the next page...
NOTE 1. EzPort master port is statically muxed with DMA master port. Access rights to AIPS-Lite peripheral bridges and general purpose input/output (GPIO) module address space is limited to the core, DMA, and EzPort. 2. ARM Cortex-M4 core access privileges also includes accesses via the debug interface.
a value of 0x0000_0000 to indicate the target bit is clear a value of 0x0000_0001 to indicate the target bit is set
Bit-band region 31 1 MByte 0 31 Alias bit-band region 0
32 MByte
RAM
Figure 4-2. Flash memory map for devices containing only program flash
AIPS-Lite1 and the general purpose input/output module share the connection to crossbar switch slave port 3. The AIPS-Lite1 is accessible at locations 0x4008_0000 0x400F_EFFF. The general purpose input/output module is accessible in a 4-kbyte region at 0x400F_F0000x400F_FFFF. Its direct connection to the crossbar switch provides master access without incurring wait states associated with accesses via the AIPS-Lite controllers. Modules that are disabled via their clock gate control bits in the SIM registers disable the associated AIPS slots. Access to any address within an unimplemented or disabled peripheral bridge slot results in a transfer error termination. For programming model accesses via the peripheral bridges, there is generally only a small range within the 4 KB slots that is implemented. Accessing an address that is not implemented in the peripheral results in a transfer error termination.
Not an AIPS-Lite slot. The 32-bit general purpose input/output module that shares the crossbar switch slave port with the AIPS-Lite is accessed at this address.
Clock definitions
OSC
Muliplexers Dividers Clock gates MCG_Cx OSC_CR
MCG
MCG_Cx MCG_Cx MCG_C1
SIM
SIM_SOPT1, SIM_SOPT2 SIM_CLKDIVx SIM_SCGCx
MCG
2 MHz IRC 32 kHz IRC
2 CG
SIM
MCGIRCLK MCGFFCLK
Clock options for some peripherals (see note) Core / system clocks Bus clock FlexBus clock Flash clock
FLL
OUTDIV1
CG CG CG CG
OUTDIV2
MCGOUTCLK
PLL
FRDIV
OUTDIV3
MCGFLLCLK MCGPLLCLK
OUTDIV4
System oscillator
EXTAL
XTAL_CLK
OSCCLK
XTAL
OSC logic
CG OSC32KCLK
OSCERCLK ERCLK32K
RTC oscillator
EXTAL32 XTAL32
OSC logic
PMC
PMC logic
LPO
Real-time clock
CG Clock gate Note: See subsequent sections for details on where these clocks are used.
Description
MCGOUTCLK divided by OUTDIV1 clocks the ARM CortexM4 core MCGOUTCLK divided by OUTDIV1 clocks the crossbar switch and bus masters directly connected to the crossbar. In addition, this clock is used for UART0 and UART1. MCGOUTCLK divided by OUTDIV2 clocks the bus slaves and peripheral (excluding memories) Table continues on the next page...
Bus clock
MCGPLLCLK/ MCGFLLCLK
Chapter 5 Clock Distribution FlexBus clock Flash clock MCGIRCLK MCGFFCLK MCGOUTCLK MCGOUTCLK divided by OUTDIV3 clocks the external FlexBus interface MCGOUTCLK divided by OUTDIV4 clocks the flash memory MCG output of the slow or fast internal reference clock MCG output of the slow internal reference clock or a divided MCG external reference clock MCG output of either IRC, MCGFLLCLK, MCGPLLCLK, or MCG's external reference clock that sources the core, system, bus, FlexBus, and flash clock. It is also an option for the debug trace clock. MCG output of the FLL. MCGFLLCLK or MCGPLLCLK may clock some modules. MCG output of the PLL. MCGFLLCLK or MCGPLLCLK may clock some modules. Input clock to the MCG sourced by the system oscillator (OSCCLK) or RTC oscillator System oscillator output of the internal oscillator or sourced directly from EXTAL System oscillator output sourced from OSCCLK that may clock some on-chip modules System oscillator 32kHz output Clock source for some modules that is chosen as OSC32KCLK or the RTC clock RTC oscillator output for the RTC module PMC 1kHz output
MCGFLLCLK MCGPLLCLK MCG external reference clock OSCCLK OSCERCLK OSC32KCLK ERCLK32K RTC clock LPO
MCGOUTCLK clock di In all wait and stop vider modes MCGOUTCLK clock di In all stop modes vider MCGOUTCLK clock di In all stop modes vider MCGOUTCLK clock di In all stop modes or vider FlexBus disabled MCGOUTCLK clock di In all stop modes vider
30-40 kHz
1 kHz 48 MHz
1 kHz N/A
PMC
MCGPLLCLK or USB OTG is disabled MCGFLLCLK with frac tional clock divider, or USB_CLKIN
Up to 50 MHz
N/A
System clock, I2S is disabled MCGPLLCLK, or MCGFLLCLK with frac tional clock divider, OSCERCLK, or I2S_CLKIN
SDHC clock
Up to 50 MHz
N/A
SDHC is disabled
TRACE clock
Up to 100 MHz
Up to 2 MHz
Trace is disabled
1. The core and system clock frequencies must be 100 MHz or slower. 2. The bus clock frequency must be programmed to 50 MHz or less and an integer divide of the core clock. The bus clock must be no faster than the core clock. 3. The flash clock frequency must be programmed to 25 MHz or less and an integer divide of the bus clock. The flash clock must be no faster than the bus clock. 4. The FlexBus clock frequency must be programmed to be less than or equal to the bus clock frequency. The following are a few of the more common clock configurations for this device: Option 1:
Clock
Core clock System clock Bus clock FlexBus clock Flash clock
Frequency
50 MHz 50 MHz 50 MHz 50 MHz 25 MHz
Option 2:
Clock
Core clock System clock Bus clock FlexBus clock Flash clock
Frequency
100 MHz 100 MHz 50 MHz 25 MHz 25 MHz
Option 3:
Clock
Core clock System clock Bus clock FlexBus clock Flash clock
Frequency
96 MHz 96 MHz 48 MHz 48 MHz 24 MHz
Clock Gating
FTFL_OPT [LPBOOT]
0 1
Core/system clock
0x7 (divide by 8) 0x0 (divide by 1)
Bus clock
0x7 (divide by 8) 0x0 (divide by 1)
FlexBus clock
0xF (divide by 16) 0x1 (divide by 2)
Flash clock
0xF (divide by 16) 0x1 (divide by 2)
Description
Low power boot Fast clock boot
This gives the user flexibility for a lower frequency, low-power boot option. The flash erased state defaults to fast clocking mode, since where the low power boot (FTFL_OPT[LPBOOT]) bit resides in flash is logic 1 in the flash erased state. To enable the low power boot option program FTFL_OPT[LPBOOT] to zero. During the reset sequence, if LPBOOT is cleared, the system is in a slow clock configuration. Upon any system reset, the clock dividers return to this configurable reset state.
OSC Flash Controller Flash memory FlexBus EzPort Crossbar Switch Peripheral bridges MPU LLWU, PMC, SIM Mode controller MCM CRC EWM Watchdog timer GPIO TSI Segment LCD ADC CMP DAC VREF PDB FlexTimers PIT
Bus clock System clock Flash clock System clock System clock System clock System clock System clock Bus clock Bus clock System clock Bus clock Bus clock Bus clock System clock Bus clock Bus clock Bus clock Bus clock Bus clock Bus clock Bus clock Bus clock Bus clock
Module clocks
Bus clock
WDOG_STCTRLH[CLKSRC]
MCGOUTCLK
TRACECLKIN
SIM_SOPT2[TRACECLKSEL]
LPO
PORTx_DFCR[CS]
Module clocks
LPTMRx_PSR[PCS]
SIM_SOPT2[USBSRC]
FlexCAN clock
Bus clock
CANx_CTRL1[CLKSRC]
SDHC clock
SIM_SOPT2[SDHCSRC]
Module clocks
SIM_SOPT2[I2SSRC]
TSI_SCANC[AMCLKS]
In low-power mode, the TSI can be clocked as shown in the following figure. NOTE In the TSI chapter, these two clocks are referred to as LPOCLK and VLPOSCCLK.
LPO
TSI clock in low-power mode
ERCLK32K
TSI_GENCS[LPCLKS]
Module clocks
Debug reset
Each of the system reset sources, with the exception of the EzPort and MDM-AP reset, has an associated bit in the system reset status registers (SRSH and SRSL). See the Mode controller for more details. The MCU exits reset in functional mode that is controlled by EZP_CS pin to select between the single chip (default) or serial flash programming (EzPort) modes. See Boot options for more details.
6.2 Reset
This section discusses basic reset mechanisms and sources. Some modules that cause resets can be configured to cause interrupts instead. Consult the individual peripheral chapters for more information.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 209
Reset
6.2.2.1.1
The RESET pin supports digital filtering in all modes of operation. For LLS and VLLSx modes, the LLWU provides an optional fixed digital filter running off the 1 kHz LPO clock. See the LLWU chapter for operation of this filter. During non-low leakage operation, there are two clock options for the RESET pin filter the 1kHz LPO clock and the bus clock. This RESET pin filter implemented in SIM logic includes a separate filter for each clock source. In Stop and VLPS operation this logic either switches to bypass operation or has continued filtering operation depending on the filtering mode selected. There are several modes defined See the SOPT6 register description in SIM module for more details. SOPT6[RSTFLTEN[2:0]] and SOPT6[RSTFLTSEL[4:0]] fields control the desired functionality. Both filters are reset on POR, LVD, and wakeup from VLLS. The reset value for each filter defaults to off (non-detect). The LPO filter is simple with a fixed filter value count of 3. There is also a synchronizer on the input signal that results in an associated latency (2 cycles). As such, it takes 5 cycles to complete a transition from low-to-high or high-to-low. The LPO Filter initializes to off (logic 1) when the LPO filter is not enabled. The Bus Filter initializes to off (logic 1) when the Bus Filter not enabled. When the Bus Filter is enabled, the number of counts is controlled by SOPT6[RSTFLTSEL[4:0]].
Reset
Reset
CDBGRSTREQ does not reset the debug-related registers within the following modules:
6.3 Boot
This section describes the boot sequence, including sources and options.
Boot
The MCU uses the FTFL_FOPT register bits to configure the device at reset as shown in the following table.
Table 6-3. Flash Option Register (FTFL_FOPT) Bit Definitions
Bit Num 7-2 1 Field Reserved EZPORT_DIS 0 Value Definition Reserved for future expansion. EzPort operation is disabled. If the device boots with the EZP_CS signal low, then the device boots in normal mode. This mode might be desired if the EZP_CS/NMI pin is used for its NMI function. EzPort operation is enabled. The state of EZP_CS pin during reset determines if device enters EzPort mode. Low-power boot: OUTDIVx values in SIM_CLKDIV1 register are au to-configured at reset exit for higher divide values that produce lower power consumption at reset exit. Core and system clock divider (OUTDIV1) and bus clock divid er (OUTDIV2) are 0x7 (divide by 8) Flash clock divider (OUTDIV4) and FlexBus clock divider (OUTDIV3) are 0xF (divide by 16) Normal boot: OUTDIVx values in SIM_CLKDIV1 register are autoconfigured at reset exit for higher frequency values that produce fast er operating frequencies at reset exit. Core and system clock divider (OUTDIV1) and bus clock divid er (OUTDIV2) are 0x0 (divide by 1) Flash clock divider (OUTDIV4) and FlexBus clock divider (OUTDIV3) are 0x1 (divide by 2)
1 0 LPBOOT 0
5.
6. 7.
8.
low. EzPort mode can be disabled if FTFL_FOPT[EZPORT_DIS] is configured for disabled setting. When Flash Initialization completes, the RESET pin is observed. If RESET continues to be asserted (an indication of a slow rise time on the RESET pin or external drive in low), the system continues to be held in reset. Once the RESET pin is detected high, the system is released from reset. At release of system reset, clocking is switched to a slow clock if FTFL_FOPT[LPBOOT] is configured for Low Power Boot When the system exits reset, the processor sets up the stack, program counter (PC), and link register (LR). The processor reads the start SP (SP_main) from vector-table offset 0. The core reads the start PC from vector-table offset 4. LR is set to 0xFFFF_FFFF. The CPU begins execution at the PC location. EzPort mode is entered instead of the normal CPU execution if Ezport mode was latched during the sequence. If FlexNVM is enabled, the flash controller continues to restore the FlexNVM data. This data is not available immediately out of reset and the system should not access this data until the flash controller completes this initialization step as indicated by the EEERDY flag.
Subsequent system resets follow this reset flow beginning with the step where system clocks are enabled.
Boot
Interrupt
Places chip in static state, with LVD operation off. Lowest power mode with ADC and pin interrupts functional. LPTimer, RTC, CMP, DAC can be used.
Interrupt
LLS (Low Leakage State retention power mode. LLWU, LPTimer, RTC, CMP, DAC can be used. Stop) NOTE: The LLWU interrupt must not be masked by the interrupt controller to avoid a scenario where the system does not fully exit stop mode on an LLS recovery. VLLS3 (Very Low Leakage Stop3) VLLS2 (Very Low Leakage Stop2) VLLS1 (Very Low Leakage Stop1) BAT (backup bat tery only) LLWU, LPTimer, RTC, CMP, DAC can be used. SRAM_U and SRAM_L remain powered on. LLWU, LPTimer, RTC, CMP, DAC can be used. SRAM_L is powered off. A portion of SRAM_U remains powered on. LLWU, LPTimer, RTC, CMP, DAC can be used. All of SRAM_U and SRAM_L are powered off. 32-byte VBAT register file for customer-critical data remains pow ered. The chip is powered down except for the VBAT supply. The RTC and the 32-byte VBAT register file for customer-critical data remain powered.
Wakeup Interrupt
Power-up Se quence
VLPW 4 5
Wait
VLPR
Run
3 6
Stop
2 10
VLPS
8
11 9
LLS
VLLS 3, 2, 1
powered = Memory is powered to retain contents. low power = Flash has a low power state that retains configuration registers to support faster wakeup. OFF = Modules are powered off; module is in reset state upon wakeup. wakeup = Modules can serve as a wakeup source for the chip.
Table 7-2. Module operation in low power modes
Modules Regulator LVD 1kHz LPO System oscilla tor (OSC) MCG Stop ON ON ON OSCERCLK op tional static MCGIRCLK op tional; PLL op tionally on but gated OFF OFF OFF powered powered powered VLPR low power disabled ON OSCERCLK max of 4MHz crystal 2 MHz IRC VLPW low power disabled ON OSCERCLK max of 4MHz crystal 2 MHz IRC VLPS low power disabled ON OSCERCLK max of 4MHz crystal static - no clock output LLS low power disabled ON limited to low range/low pow er static - no clock output VLLSx low power disabled ON limited to low range/low pow er OFF
Core clock System clock Bus clock Flash Portion of SRAM_U1 Remaining SRAM_U and all of SRAM_L FlexMemory2
2 MHz max 2 MHz max 2 MHz max 1 MHz max ac cess - no pgm powered powered
OFF OFF OFF OFF powered in VLLS3,2 powered in VLLS3 powered in VLLS3, OFF in VLLS2 and VLLS1 powered OFF OFF OFF OFF OFF OFF FF5
powered
powered3
powered
powered
powered
Register files4 DMA UART SPI I2C CAN I2S Segment LCD
powered static static, wakeup on edge static static, address match wakeup wakeup static FF
powered static static, wakeup on edge static static, address match wakeup wakeup static FF
1. The 4KB portion of SRAM_U from 0x2000_0000 to 0x2000_0FFF block is the region of RAM left powered on in low power mode VLLS2. 2. FlexRAM is always powered in VLLS3. When the FlexRAM is configured for traditional RAM, optionally powered in VLLS2 mode. When the FlexRAM is configured for EEPROM, off in VLLS2 mode. 3. FlexRAM enabled as EEPROM is not writable in VLPR and writes are ignored. Read accesses to FlexRAM as EEPROM while in VLPR are allowed. There are no access restrictions for FlexRAM configured as traditional RAM. 4. The VBAT register file and the RTC remain powered in BAT power mode. 5. End of Frame wakeup not supported in LLS and VLLSx. 6. TSI wakeup from LLS and VLLSx modes is limited to a single selectable pin. 7. CMP in stop or VLPS supports high speed or low speed external pin to pin or external pin to DAC compares. CMP in LLS or VLLSx only supports low speed external pin to pin or external pin to DAC compares. Windowed, sampled & filtered modes of operation are not available while in stop, VLPS, LLS, or VLLSx modes.
Chapter 7 Power Management 8. Using the LLWU module, the external pins available for this chip do not require the associated peripheral function to be enabled. It only requires the function controlling the pin (GPIO or peripheral) to be configured as an input to allow a transition to occur to the LLWU.
Chapter 8 Security
8.1 Introduction
This device implements security based on the mode selected from the flash module. The following sections provide an overview of flash security and details the effects of security on non-flash modules.
Chapter 8 Security
When mass erase is disabled, mass erase via the debugger is blocked.
Chapter 9 Debug
9.1 Introduction
This device's debug is based on the ARM coresight architecture and is configured in each device to provide the maximum flexibility as allowed by the restrictions of the pinout and other available resources. Four debug interfaces are supported: IEEE 1149.1 JTAG IEEE 1149.7 JTAG (cJTAG) Serial Wire Debug (SWD) ARM Real-Time Trace Interface
The basic Cortex-M4 debug architecture is very flexible. The following diagram shows the topology of the core debug architecture and its components.
Introduction
INTNMI INTISR[239:0] SLEEPING SLEEPDEEP NVIC Interrupts Sleep Debug Instr. Data Core Trigger Trace port (serial wire or multi-pin) Cortex-M4
ETM
AWIC
ETB
TPIU
Private Peripheral Bus (internal) APB i/f I-code bus Bus Matrix SW/ JTAG SWJ-DP AHB-AP D-code bus System bus Code bus ROM Table
MDM-AP
The following table presents a brief description of each one of the debug components.
Table 9-1. Debug Components Description
Module SWJ-DP + cJTAG AHB-AP JTAG-AP ROM Table Core Debug CoreSight Trace Funnel (not shown in figure) CoreSight Trace Replicator (not shown in figure) ETM (Embedded Trace Macrocell) CoreSight ETB (Embedded Trace Buffer) ITM Description Modified Debug Port with support for SWD, JTAG, cJTAG AHB Master Interface from JTAG to debug module and SOC system memory maps Bridge to DFT/BIST resources. Identifies which debug IP is available. Singlestep, Register Access, Run, Core Status The CSTF combines multiple trace streams onto a single ATB bus. The ATB replicator enables two trace sinks to be wired to gether and operate from the same incoming trace stream. ETMv3.5 Architecture Memory mapped buffer used to store trace data. S/W Instrumentation Messaging + Simple Data Trace Mes saging + Watchpoint Messaging Table continues on the next page...
Chapter 9 Debug
9.1.1 References
For more information on ARM debug components, see these documents: ARMv7-M Architecture Reference Manual ARM Debug Interface v5.1 ARM CoreSight Architecture Specification ARM ETM Architecture Specification v3.5
jtag_updateinstr[3:0]
JTAGC
To Test Resources
TRACESWO
CJTAG
TDI TDO PEN TDO TDI nSY S_TDO nSY S_TDI nSY S_TRST nSY S_TC K
TDO TDI
TDO TDI
1b1
TCK
SWCL K TCK
nSY S_TMS
SWDITMS
JTAGir[3:0]
AHB-AP
TMS_IN
PASS or IDC ODE IR==BY A 4b1111 or 4b1110
MDM-AP
DAP Bus
JTAGNSW
TMS
SWDO SWDOEN
The debug port comes out of reset in standard JTAG mode and is switched into either cJTAG or SWD mode by the following sequences. Once the mode has been changed, unused debug pins can be reassigned to any of their alternative muxed functions.
SWCL K TCK
SWDITMS
JTAGSEL
SWDSEL
SWD/ JTAG
SEL ECT
Chapter 9 Debug
2. Set the control level to 2 via zero-bit scans 3. Execute the Store Format (STFMT) command (00011) to set the scan format register to 1149.7 scan format
TCK/SWCLK TDI
I I
I O
I O
Pull-down Pull-up NC
Pull-up
9.4.1 IR Codes
Reserved 1
1. The manufacturer reserves the right to change the decoding of reserved instruction codes in the future
Chapter 9 Debug
0x0C
0x00
0x04
0x08
Debug Port
Generic Debug Port (DP) Data[31:0] A[7:4] A[3:2] RnW
Control/Status (CTRL/STAT)
DP Registers
SWJ-DP
See the ARM Debug Interface v5p1 Supplement.
APSEL Decode
AP Select (SELECT)
SELECT[31:24] (APSEL) selects the AP SELECT[7:4] (APBANKSEL) selects the bank A[3:2] from the APACC selects the register within the bank
0x3F
0x00
0x01
AHB-AP
SELECT[31:24] = 0x00 selects the AHB-AP See ARM documentation for further details
Control
Status
MDM-AP
SELECT[31:24] = 0x01 selects the MDM-AP SELECT[7:4] = 0x0 selects the bank with Status and Ctrl A[3:2] = 2b00 selects the Status Register A[3:2] = 2b01 selects the Control Register SELECT[7:4] = 0xF selects the bank with IDR A[3:2] = 2b11 selects the IDR Register (IDR register reads 0x001C_0000)
IDR
Debug Request
Chapter 9 Debug
System Reset
Debug Resets
Chapter 9 Debug
A system reset in the DAP control register which allows the debugger to hold the system in reset. A system reset in the DAP control register which allows the debugger to hold the Core in reset.
9.7 AHB-AP
AHB-AP provides the debugger access to all memory and registers in the system, including processor registers through the NVIC. System access is independent of the processor status. AHB-AP does not do back-to-back transactions on the bus, so all transactions are non-sequential. AHB-AP can perform unaligned and bit-band transactions. AHB-AP transactions bypass the FPB, so the FPB cannot remap AHB-AP transactions. SWJ/SW-DP-initiated transaction aborts drive an AHB-AP-supported sideband signal called HABORT. This signal is driven into the Bus Matrix, which resets the Bus Matrix state, so that AHB-AP can access the Private Peripheral Bus for last ditch debugging such as read/stop/reset the core. AHB-AP transactions are little endian. The MPU includes default settings and protections for the Region Descriptor 0 (RGD0) such that the Debugger always has access to the entire address space and those rights cannot be changed by the core or any other bus master. For a short period at the start of a system reset event the system security status is being determined and debugger access to all AHB-AP transactions is blocked. The MDM-AP Status register is accessible and can be monitored to determine when this initial period is completed. After this initial period, if system reset is held via assertion of the RESET pin, the debugger has access via the bus matrix to the private peripheral bus to configure the debug IP even while system reset is asserted. While in system reset, access to other memory and register resources, accessed over the Crossbar Switch, is blocked.
9.8 ITM
The ITM is an application-driven trace source that supports printf style debugging to trace Operating System (OS) and application events, and emits diagnostic system information. The ITM emits trace information as packets. There are four sources that can generate packets. If multiple sources generate packets at the same time, the ITM arbitrates the order in which packets are output. The four sources in decreasing order of priority are: 1. Software trace -- Software can write directly to ITM stimulus registers. This emits packets.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 241
2. Hardware trace -- The DWT generates these packets, and the ITM emits them. 3. Time stamping -- Timestamps are emitted relative to packets. The ITM contains a 21-bit counter to generate the timestamp. The Cortex-M4 clock or the bitclock rate of the Serial Wire Viewer (SWV) output clocks the counter. 4. Global system timestamping. Timestamps can optionally be generated using a system-wide 48-bit count value. The same count value can be used to insert timestamps in the ETM trace stream, allowing coarse-grain correlation.
CORE CLOCK
Private Peripheral Bus
ATB (8-bit) ATB (8-bit) ATB (8-bit) ATB (32-bit)
TRACECLKIN
ATB UPSIZER
ETM
ATB REPLICATOR
ATB (8-bit)
ATB FUNNEL
TRACE PORT
DWT
ITM
TPIU
ATB REPLICATOR
The ETM and ITM can route its data to the ETB or the TPIU. (See the MCM (Miscellaneous Control Module) for controlling the routing to the TPIU.) This configuration enables the use of trace with low cost tools while maintaining the compatibility with trace probes. The arbitration between the ETM and ITM is performed inside the TPIU. The ETB can not be configured with an interface smaller than 32 bits, making it necessary to add an ATB upsizer to make it compatible with the ETM operating with an 8 bits interface. The speed of the ETB 32 bit interface and its associated RAM is expected to be one quarter of the ETB clock. The following combinations paths are supported: 1. ETM -> ETB 2. ETM -> TPIU(4 pin or 2 pin parallel) 3. ITM->ETB
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
242 Freescale Semiconductor, Inc.
Chapter 9 Debug
4. 5. 6. 7.
ITM->TPIU(1 pin SWO, 2 pin or 4 pin parallel) ETM & ITM -> ETB ETM & ITM -> TPIU ETM -> ETB & ITM -> TPIU
The following combination paths are NOT supported 1. ETM -> TPIU & ETB 2. ITM -> TPIU & ETB
Control
TraceRAM
APB
APB i/f
Register Bank
The ETB contains the following blocks: Formatter -- Inserts source ID signals into the data packet stream so that trace data can be re-associated with its trace source after the data is read back out of the ETB. Control -- Control registers for trace capture and flushing. APB interface -- Read, write, and data pointers provide access to ETB registers. In addition, the APB interface supports wait states through the use of a PREADYDBG signal output by the ETB. The APB interface is synchronous to the ATB domain. Register bank -- Contains the management, control, and status registers for triggers, flushing behavior, and external control. Trace RAM interface -- Controls reads and writes to the Trace RAM.
Chapter 9 Debug
9.12 TPIU
The TPIU acts as a bridge between the on-chip trace data from the Embedded Trace Macrocell (ETM) and the Instrumentation Trace Macrocell (ITM), with separate IDs, to a data stream, encapsulating IDs where required, that is then captured by a Trace Port Analyzer (TPA). The TPIU is specially designed for low-cost debug.
9.13 DWT
The DWT is a unit that performs the following debug functionality: It contains four comparators that you can configure as a hardware watchpoint, an ETM trigger, a PC sampler event trigger, or a data address sampler event trigger. The first comparator, DWT_COMP0, can also compare against the clock cycle counter, CYCCNT. The second comparator, DWT_COMP1, can also be used as a data comparator. The DWT contains counters for: Clock cycles (CYCCNT) Folded instructions Load store unit (LSU) operations Sleep cycles CPI (all instruction cycles except for the first cycle) Interrupt overhead
NOTE An event is emitted each time a counter overflows. The DWT can be configured to emit PC samples at defined intervals, and to emit interrupt event information.
Chapter 9 Debug
static = Module register states and associated memories are retained. OFF = Modules are powered off; module is in reset state upon wakeup.
Table 9-7. Debug Module State in Low Power Modes
Module Debug Port AHB-AP ITM ETM ETB TPIU DWT STOP FF FF FF FF FF FF FF VLPR FF FF FF FF FF FF FF VLPW FF FF FF FF FF FF FF VLPS FF FF FF FF FF FF FF LLS static static static static static static static VLLSx OFF OFF OFF OFF OFF OFF OFF
Module
Figure 10-1. Signal multiplexing integration Table 10-1. Reference links to related information
Topic Full description System memory map Related module Port control Reference Port control System memory map Table continues on the next page...
External Pins
PTA18/EXTAL PTA19/XTAL
10.3 Pinout
10.3.1 K40 Signal Multiplexing and Pin Assignments
The following table shows the signals available on each pin and the locations of these pins on the devices supported by this document. The Port Control Module is responsible for selecting which ALT functionality is available on each pin.
144 144 QFP BGA 1 2 3 4 5 6 7 L5 M5 D3 D2 D1 E4 E5 F6 E3 NC NC ADC1_SE4a ADC1_SE5a ADC1_SE6a ADC1_SE7a VDD VSS DISABLED Default NC NC ADC1_SE4a ADC1_SE5a ADC1_SE6a ADC1_SE7a VDD VSS PTE4 SPI1_PCS0 UART3_TX SDHC0_D3 FB_CS3_b/ FB_TA_b FB_BE7_0_B LS31_24_b FB_TBST_b/ FB_CS2_b/ FB_BE15_8_ BLS23_16_b FB_ALE/ FB_CS1_b/ FB_TS_b FB_CS0_b FB_AD4 I2S0_CLKIN PTE0 PTE1 PTE2 PTE3 SPI1_PCS1 SPI1_SOUT SPI1_SCK SPI1_SIN UART1_TX UART1_RX UART1_CTS _b UART1_RTS _b SDHC0_D1 SDHC0_D0 FB_AD27 FB_AD26 I2C1_SDA I2C1_SCL ALT0 ALT1 ALT2 ALT3 ALT4 ALT5 ALT6 ALT7 EzPort
E2
DISABLED
PTE5
SPI1_PCS2
UART3_RX
SDHC0_D2
E1
DISABLED
PTE6
SPI1_PCS3
I2S0_MCLK
10 11 12 13 14 15
F4 F3 F2 F1 G4 G3
I2S0_RXD I2S0_RX_FS
Pinout 144 144 QFP BGA 16 17 18 19 20 21 22 23 24 25 26 27 E6 F7 H3 H1 H2 G1 G2 J1 J2 K1 K2 L1 Default VDD VSS VSS USB0_DP USB0_DM VOUT33 VREGIN ADC0_DP1 ADC0_DM1 ADC1_DP1 ADC1_DM1 PGA0_DP/ ADC0_DP0/ ADC1_DP3 PGA0_DM/ ADC0_DM0/ ADC1_DM3 PGA1_DP/ ADC1_DP0/ ADC0_DP3 PGA1_DM/ ADC1_DM0/ ADC0_DM3 VDDA VREFH VREFL VSSA ADC1_SE16 ADC0_SE16 VREF_OUT DAC0_OUT DAC1_OUT XTAL32 EXTAL32 VBAT VDD VSS ADC0_SE17 ADC0_SE18 DISABLED DISABLED DISABLED ALT0 VDD VSS VSS USB0_DP USB0_DM VOUT33 VREGIN ADC0_DP1 ADC0_DM1 ADC1_DP1 ADC1_DM1 PGA0_DP/ ADC0_DP0/ ADC1_DP3 PGA0_DM/ ADC0_DM0/ ADC1_DM3 PGA1_DP/ ADC1_DP0/ ADC0_DP3 PGA1_DM/ ADC1_DM0/ ADC0_DM3 VDDA VREFH VREFL VSSA ADC1_SE16 ADC0_SE16 VREF_OUT DAC0_OUT DAC1_OUT XTAL32 EXTAL32 VBAT VDD VSS ADC0_SE17 ADC0_SE18 PTE24 PTE25 PTE26 PTE27 PTE28 CAN1_TX CAN1_RX UART4_TX UART4_RX UART4_CTS _b UART4_RTS _b FB_AD23 FB_AD22 FB_AD21 FB_AD20 EWM_OUT_b EWM_IN RTC_CLKOU USB_CLKIN T ALT1 ALT2 ALT3 ALT4 ALT5 ALT6 ALT7 EzPort
28
L2
29
M1
30
M2
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
H5 G5 G6 H6 K3 J3 M3 L3 L4 M7 M6 L6 M4 K5 K4 J4 H4
Chapter 10 Signal Multiplexing and Signal Descriptions 144 144 QFP BGA 50 J5 Default ALT0 ALT1 PTA0 ALT2 UART0_CTS _b UART0_RX UART0_TX ALT3 FTM0_CH5 ALT4 ALT5 ALT6 ALT7 EzPort
JTAG_TCLK/ TSI0_CH1 SWD_CLK/ EZP_CLK JTAG_TDI/ EZP_DI JTAG_TDO/ TRACE_SW O/EZP_DO JTAG_TMS/ SWD_DIO NMI_b/ EZP_CS_b JTAG_TRST VDD VSS DISABLED ADC0_SE10 ADC0_SE11 DISABLED DISABLED DISABLED CMP2_IN0 CMP2_IN0 ADC0_SE10 ADC0_SE11 VDD VSS TSI0_CH2 TSI0_CH3
JTAG_TCLK/ EZP_CLK SWD_CLK JTAG_TDI JTAG_TDO/ TRACE_SW O JTAG_TMS/ SWD_DIO NMI_b CMP2_OUT I2S0_RX_BC JTAG_TRST LK EZP_CS_b EZP_DI EZP_DO
51 52
J6 K6
PTA1 PTA2
FTM0_CH6 FTM0_CH7
53 54 55 56 57 58 59 60 61 62 63 64
K7 L7 M8 E7 G7 J7 J8 K8 L8 M9 L9 K9
TSI0_CH4 TSI0_CH5
UART0_RTS _b
FB_CLKOUT FB_AD18 FB_AD17 FB_AD16 FB_AD15 FB_OE_b FTM1_QD_P HA FTM1_QD_P HB FTM2_QD_P HA FTM2_QD_P HB
FB_CS5_b/ I2S0_TXD FB_TSIZ1/ FB_BE23_16 _BLS15_8_b FB_CS4_b/ I2S0_TX_FS FB_TSIZ0/ FB_BE31_24 _BLS7_0_b FB_AD31 FB_AD30 FB_AD29 FB_AD28 I2S0_TX_BC LK I2S0_RXD I2S0_RX_FS I2S0_MCLK
FTM1_QD_P HA
65
J9
CMP2_IN1
CMP2_IN1
PTA13
CAN0_RX
FTM1_CH1
FTM1_QD_P HB
66 67 68 69 70 71 72 73 74
L10 DISABLED L11 DISABLED K10 DISABLED K11 ADC1_SE17 E8 G8 VDD VSS ADC1_SE17 VDD VSS EXTAL XTAL RESET_b
I2S0_CLKIN
PTA18 PTA19
FTM0_FLT2 FTM1_FLT0
Pinout 144 144 QFP BGA 75 76 77 78 79 80 81 J12 J11 J10 Default ALT0 ALT1 PTA24 PTA25 PTA26 PTA27 PTA28 PTA29 LCD_P0/ ADC0_SE8/ ADC1_SE8/ TSI0_CH0 LCD_P1/ ADC0_SE9/ ADC1_SE9/ TSI0_CH6 PTB0 I2C0_SCL FTM1_CH0 ALT2 ALT3 ALT4 ALT5 FB_AD14 FB_AD13 FB_AD12 FB_AD11 FB_AD10 FB_AD19 FTM1_QD_P HA LCD_P0 ALT6 ALT7 EzPort
H12 DISABLED H11 DISABLED H10 LCD_P0/ ADC0_SE8/ ADC1_SE8/ TSI0_CH0 H9 LCD_P1/ ADC0_SE9/ ADC1_SE9/ TSI0_CH6
82
PTB1
I2C0_SDA
FTM1_CH1
FTM1_QD_P HB
LCD_P1
83
G12 LCD_P2/ LCD_P2/ PTB2 ADC0_SE12/ ADC0_SE12/ TSI0_CH7 TSI0_CH7 G11 LCD_P3/ LCD_P3/ PTB3 ADC0_SE13/ ADC0_SE13/ TSI0_CH8 TSI0_CH8 G10 LCD_P4/ ADC1_SE10 G9 LCD_P5/ ADC1_SE11 LCD_P4/ ADC1_SE10 LCD_P5/ ADC1_SE11 LCD_P6/ ADC1_SE12 LCD_P7/ ADC1_SE13 LCD_P8 LCD_P9 LCD_P10/ ADC1_SE14 LCD_P11/ ADC1_SE15 VSS VDD LCD_P12/ TSI0_CH9 LCD_P13/ TSI0_CH10 LCD_P14/ TSI0_CH11 LCD_P15/ TSI0_CH12 LCD_P16 PTB16 PTB17 PTB18 PTB19 PTB20 PTB4 PTB5 PTB6 PTB7 PTB8 PTB9 PTB10 PTB11
I2C0_SCL
UART0_RTS _b UART0_CTS _b
FTM0_FLT3
LCD_P2
84
I2C0_SDA
FTM0_FLT0
LCD_P3
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
FTM1_FLT0 FTM2_FLT0
EWM_IN
LCD_P12
Chapter 10 Signal Multiplexing and Signal Descriptions 144 144 QFP BGA 100 101 102 103 D9 Default LCD_P17 ALT0 LCD_P17 LCD_P18 LCD_P19 ALT1 PTB21 PTB22 PTB23 ALT2 SPI2_SCK SPI2_SOUT SPI2_SIN SPI0_PCS4 SPI0_PCS5 PDB0_EXTR G UART1_RTS _b UART1_CTS _b I2S0_TXD ALT3 ALT4 ALT5 ALT6 CMP1_OUT CMP2_OUT ALT7 LCD_P17 LCD_P18 LCD_P19 LCD_P20 EzPort
B12 LCD_P20/ LCD_P20/ PTC0 ADC0_SE14/ ADC0_SE14/ TSI0_CH13 TSI0_CH13 B11 LCD_P21/ LCD_P21/ PTC1 ADC0_SE15/ ADC0_SE15/ TSI0_CH14 TSI0_CH14 A12 LCD_P22/ ADC0_SE4b/ CMP1_IN0/ TSI0_CH15 A11 LCD_P23/ CMP1_IN1 H8 C9 B9 VSS VLL2 VLL1 C10 VLL3 LCD_P22/ PTC2 ADC0_SE4b/ CMP1_IN0/ TSI0_CH15 LCD_P23/ CMP1_IN1 VSS VLL3 VLL2 VLL1 VCAP2 VCAP1 LCD_P24 LCD_P25 LCD_P26/ CMP0_IN0 LCD_P27/ CMP0_IN1 PTC4 PTC5 PTC6 PTC7 PTC3
104
SPI0_PCS3
FTM0_CH0
LCD_P21
105
SPI0_PCS2
FTM0_CH1
LCD_P22
106 107 108 109 110 111 112 113 114 115 116 117
SPI0_PCS1
UART1_RX
FTM0_CH2
LCD_P23
B10 VCAP2 A10 VCAP1 A9 D8 C8 B8 A8 LCD_P24 LCD_P25 LCD_P26/ CMP0_IN0 LCD_P27/ CMP0_IN1
UART1_TX PDB0_EXTR G
FTM0_CH3 LPT0_ALT2
CMP1_OUT CMP0_OUT
LCD_P28/ LCD_P28/ PTC8 ADC1_SE4b/ ADC1_SE4b/ CMP0_IN2 CMP0_IN2 LCD_P29/ LCD_P29/ PTC9 ADC1_SE5b/ ADC1_SE5b/ CMP0_IN3 CMP0_IN3 LCD_P30/ LCD_P30/ PTC10 ADC1_SE6b/ ADC1_SE6b/ CMP0_IN4 CMP0_IN4 LCD_P31/ ADC1_SE7b LCD_P32 LCD_P33 LCD_P34 LCD_P35 LCD_P36 LCD_P37 LCD_P31/ ADC1_SE7b LCD_P32 LCD_P33 LCD_P34 LCD_P35 LCD_P36 LCD_P37 PTC11 PTC12 PTC13 PTC14 PTC15 PTC16 PTC17 CAN1_RX CAN1_TX I2C1_SCL
I2S0_MCLK
I2S0_CLKIN
LCD_P28
118
D7
I2S0_RX_BC LK I2S0_RX_FS
FTM2_FLT0
LCD_P29
119
C7
LCD_P30
B7 A7 D6 C6 B6 A6 D5
I2S0_RXD
Pinout 144 144 QFP BGA 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 C5 B5 A5 D4 C4 B4 A4 A3 A2 Default LCD_P38 LCD_P39 LCD_P40 LCD_P41/ ADC0_SE5b LCD_P42 LCD_P43 LCD_P44 LCD_P45/ ADC0_SE6b LCD_P46/ ADC0_SE7b VDD LCD_P47 DISABLED DISABLED DISABLED DISABLED DISABLED DISABLED ALT0 LCD_P38 LCD_P39 LCD_P40 LCD_P41/ ADC0_SE5b LCD_P42 LCD_P43 LCD_P44 LCD_P45/ ADC0_SE6b LCD_P46/ ADC0_SE7b VSS VDD LCD_P47 PTD7 PTD10 PTD11 PTD12 PTD13 PTD14 PTD15 SPI2_PCS0 SPI2_SCK SPI2_SOUT SPI2_SIN SPI2_PCS1 CMT_IRO UART0_TX UART5_RTS _b UART5_CTS _b FTM0_CH7 FB_AD9 SDHC0_CLKI FB_AD8 N SDHC0_D4 SDHC0_D5 SDHC0_D6 SDHC0_D7 FB_AD7 FB_AD6 FB_AD5 FB_RW_b FTM0_FLT1 LCD_P47 ALT1 PTC18 PTC19 PTD0 PTD1 PTD2 PTD3 PTD4 PTD5 PTD6 SPI0_PCS0 SPI0_SCK SPI0_SOUT SPI0_SIN SPI0_PCS1 SPI0_PCS2 SPI0_PCS3 ALT2 ALT3 UART3_RTS _b UART3_CTS _b UART2_RTS _b UART2_CTS _b UART2_RX UART2_TX UART0_RTS _b UART0_CTS _b UART0_RX FTM0_CH4 FTM0_CH5 FTM0_CH6 EWM_IN ALT4 ALT5 ALT6 ALT7 LCD_P38 LCD_P39 LCD_P40 LCD_P41 LCD_P42 LCD_P43 LCD_P44 EzPort
M10 VSS F8 A1 B3 B2 B1 C3 C2 C1
141
131
142
132
122
121
139
135
129
125
119
138
136
128
126
118
140
130
144
143
137
134
133
127
124
123
120
117
116
115
114
PTE0 PTE1 PTE2 PTE3 VDD VSS PTE4 PTE5 PTE6 PTE7 PTE8 PTE9 PTE10 PTE11 PTE12 VDD VSS VSS USB0_DP USB0_DM VOUT33 VREGIN ADC0_DP1 ADC0_DM1 ADC1_DP1 ADC1_DM1 PGA0_DP/ADC0_DP0/ADC1_DP3 PGA0_DM/ADC0_DM0/ADC1_DM3 PGA1_DP/ADC1_DP0/ADC0_DP3 PGA1_DM/ADC1_DM0/ADC0_DM3 VDDA VREFH VREFL VSSA ADC1_SE16 ADC0_SE16
113
112
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
VLL3 VSS PTC3 PTC2 PTC1 PTC0 PTB23 PTB22 PTB21 PTB20 PTB19 PTB18 PTB17 PTB16 VDD VSS PTB11 PTB10 PTB9 PTB8 PTB7 PTB6 PTB5 PTB4 PTB3 PTB2 PTB1 PTB0 PTA29 PTA28 PTA27 PTA26 PTA25 PTA24 RESET_b PTA19
107
EXTAL32
PTA1
PTA9
PTA10
VSS
PTE24
DAC1_OUT
PTE28
PTA13
PTE25
DAC0_OUT
PTE27
PTA14
XTAL32
PTA16
PTA17
VREF_OUT
PTE26
PTA11
PTA12
PTA15
PTA18
VBAT
PTA2
PTA5
PTA0
PTA6
PTA7
VDD
PTA8
VDD
PTA3
PTA4
VDD
VSS
VSS
PTD7
PTD6
PTD5
PTD4
PTD0
PTC16
PTC12
PTC8
PTC4
VCAP1
PTC3
PTC2
PTD12
PTD11
PTD10
PTD3
PTC19
PTC15
PTC11
PTC7
VLL1
VCAP2
PTC1
PTC0
PTD15
PTD14
PTD13
PTD2
PTC18
PTC14
PTC10
PTC6
VLL2
VLL3
PTB23
PTB22
PTE2
PTE1
PTE0
PTD1
PTC17
PTC13
PTC9
PTC5
PTB21
PTB20
PTB19
PTB18
PTE6
PTE5
PTE4
PTE3
VDD
VDD
VDD
VDD
PTB17
PTB16
PTB11
PTB10
PTE10
PTE9
PTE8
PTE7
VDD
VSS
VSS
VDD
PTB9
PTB8
PTB7
PTB6
VOUT33
VREGIN
PTE12
PTE11
VREFH
VREFL
VSS
VSS
PTB5
PTB4
PTB3
PTB2
USB0_DP
USB0_DM
VSS
PTE28
VDDA
VSSA
VSS
VSS
PTB1
PTB0
PTA29
PTA28
ADC0_DP1
ADC0_DM1
ADC0_SE16
PTE27
PTA0
PTA1
PTA6
PTA7
PTA13
PTA27
PTA26
PTA25
ADC1_DP1
ADC1_DM1
ADC1_SE16
PTE26
PTE25
PTA2
PTA3
PTA8
PTA12
PTA16
PTA17
PTA24
DAC0_OUT
DAC1_OUT
NC
VBAT
PTA4
PTA9
PTA11
PTA14
PTA15
RESET_b
VREF_OUT
PTE24
NC
EXTAL32
XTAL32
PTA5
PTA10
VSS
PTA19
PTA18
10
11
12
EWM_OUT
EWM_out
FB_CS[5:0] FB_BE31_24_BLS7 _0, FB_BE23_16_BLS1 5_8, FB_BE15_8_BLS23 _16, FB_BE7_0_BLS31_ 24 FB_OE FB_R W FB_TS/ FB_ALE FB_TSIZ[1:0] FB_TA FB_TBST
FB_CS[5:0] FB_BE/BWE[3:0]
O O
Output enable Read/write. 1 = Read, 0 = Write Address latch enable Transfer size Transfer acknowledge Burst transfer indicator
O O O O I O
10.4.5 Analog
Table 10-11. ADC 0 Signal Descriptions
Chip signal name ADC0_DP3, PGA0_DP, ADC0_DP[1:0] ADC0_DM3, PGA0_DM, ADC0_DM[1:0] ADC0_SE[18:4] VREFH VREFL VDDA VSSA Module signal name DADP[3:0] Description Differential analog channel inputs I/O I
DADM[3:0]
Single-ended analog channel inputs Voltage reference select high Voltage reference select low Analog power supply Analog ground
I I I I I
DADM[3:0]
Single-ended analog channel inputs Voltage reference select high Voltage reference select low Analog power supply Analog ground
I I I I I
I2S0_RXD
SRXD
I2S0_TX_FS
STFS
I/O
I2S0_TXD
STXD
1. The available GPIO pins depends on the specific package. See the signal multiplexing section for which exact GPIO signals are available.
LCD_P[63:0] . 64 Configurable frontplane/backplane driver that connects directly to LCD frontplane/back the display plane LCD_P[63:0] can operate as GPIO pins VLL1, VLL2, VLL3. LCD LCD bias voltages bias voltages Vcap1, Vcap2. LCD Charge pump capacitor pins charge pump capaci tance
VLL[3:1] VCAP[2:1]
I/O O
1. The available LCD pins depends on the specific package. See the signal multiplexing section for which exact LCD signals are available.
11.1.2 Features
Pin interrupt Interrupt flag and enable registers for each pin Supports edge sensitive (rising, falling, both) or level sensitive (low, high) configured per pin Support for interrupt or DMA request configured per pin Asynchronous wakeup in low-power modes Pin interrupt is functional in all digital pin muxing modes Digital input filter Digital input filter for each pin, usable by any digital peripheral muxed onto pin Individual enable or bypass control bit per pin Selectable clock source for digital input filter with 5-bit resolution on filter size Digital filter is functional in all digital pin muxing modes
Port control
Introduction
Individual pull control registers with pullup, pulldown and pull-disable support Individual drive strength register supporting high and low drive strength Individual slew rate register supporting fast and slow slew rates Individual input passive filter register supporting enabled and disabled Individual open-drain register supporting enabled and disabled Individual mux control register supporting analog (or pin disabled), GPIO plus up to six chip specific digital functions Pad configuration registers are functional in all digital pin muxing modes
NOTE Not all pins within each port are implemented on each device.
4004_9080
32
0000_0000h
11.4.2/282
4004_9084
32
0000_0000h
11.4.3/283
4004_90A0 4004_90C0 4004_90C4 4004_90C8 4004_A000 4004_A004 4004_A008 4004_A00C 4004_A010 4004_A014 4004_A018 4004_A01C 4004_A020 4004_A024 4004_A028 4004_A02C 4004_A030 4004_A034 4004_A038 4004_A03C 4004_A040 4004_A044 4004_A048 4004_A04C 4004_A050 4004_A054 4004_A058 4004_A05C 4004_A060 4004_A064 4004_A068
Interrupt Status Flag Register (PORTA_ISFR) Digital Filter Enable Register (PORTA_DFER) Digital Filter Clock Register (PORTA_DFCR) Digital Filter Width Register (PORTA_DFWR) Pin Control Register n (PORTB_PCR0) Pin Control Register n (PORTB_PCR1) Pin Control Register n (PORTB_PCR2) Pin Control Register n (PORTB_PCR3) Pin Control Register n (PORTB_PCR4) Pin Control Register n (PORTB_PCR5) Pin Control Register n (PORTB_PCR6) Pin Control Register n (PORTB_PCR7) Pin Control Register n (PORTB_PCR8) Pin Control Register n (PORTB_PCR9) Pin Control Register n (PORTB_PCR10) Pin Control Register n (PORTB_PCR11) Pin Control Register n (PORTB_PCR12) Pin Control Register n (PORTB_PCR13) Pin Control Register n (PORTB_PCR14) Pin Control Register n (PORTB_PCR15) Pin Control Register n (PORTB_PCR16) Pin Control Register n (PORTB_PCR17) Pin Control Register n (PORTB_PCR18) Pin Control Register n (PORTB_PCR19) Pin Control Register n (PORTB_PCR20) Pin Control Register n (PORTB_PCR21) Pin Control Register n (PORTB_PCR22) Pin Control Register n (PORTB_PCR23) Pin Control Register n (PORTB_PCR24) Pin Control Register n (PORTB_PCR25) Pin Control Register n (PORTB_PCR26)
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
11.4.4/283 11.4.5/284 11.4.6/285 11.4.7/285 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280
4004_A080
32
0000_0000h
11.4.2/282
4004_A084
32
0000_0000h
11.4.3/283
4004_A0A0 4004_A0C0 4004_A0C4 4004_A0C8 4004_B000 4004_B004 4004_B008 4004_B00C 4004_B010 4004_B014 4004_B018 4004_B01C 4004_B020 4004_B024 4004_B028 4004_B02C 4004_B030 4004_B034 4004_B038 4004_B03C 4004_B040 4004_B044 4004_B048
Interrupt Status Flag Register (PORTB_ISFR) Digital Filter Enable Register (PORTB_DFER) Digital Filter Clock Register (PORTB_DFCR) Digital Filter Width Register (PORTB_DFWR) Pin Control Register n (PORTC_PCR0) Pin Control Register n (PORTC_PCR1) Pin Control Register n (PORTC_PCR2) Pin Control Register n (PORTC_PCR3) Pin Control Register n (PORTC_PCR4) Pin Control Register n (PORTC_PCR5) Pin Control Register n (PORTC_PCR6) Pin Control Register n (PORTC_PCR7) Pin Control Register n (PORTC_PCR8) Pin Control Register n (PORTC_PCR9) Pin Control Register n (PORTC_PCR10) Pin Control Register n (PORTC_PCR11) Pin Control Register n (PORTC_PCR12) Pin Control Register n (PORTC_PCR13) Pin Control Register n (PORTC_PCR14) Pin Control Register n (PORTC_PCR15) Pin Control Register n (PORTC_PCR16) Pin Control Register n (PORTC_PCR17) Pin Control Register n (PORTC_PCR18)
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
11.4.4/283 11.4.5/284 11.4.6/285 11.4.7/285 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280
4004_B080
32
0000_0000h
11.4.2/282
4004_B084
32
0000_0000h
11.4.3/283
4004_B0A0 4004_B0C0 4004_B0C4 4004_B0C8 4004_C000 4004_C004 4004_C008 4004_C00C 4004_C010 4004_C014 4004_C018 4004_C01C 4004_C020 4004_C024 4004_C028
Interrupt Status Flag Register (PORTC_ISFR) Digital Filter Enable Register (PORTC_DFER) Digital Filter Clock Register (PORTC_DFCR) Digital Filter Width Register (PORTC_DFWR) Pin Control Register n (PORTD_PCR0) Pin Control Register n (PORTD_PCR1) Pin Control Register n (PORTD_PCR2) Pin Control Register n (PORTD_PCR3) Pin Control Register n (PORTD_PCR4) Pin Control Register n (PORTD_PCR5) Pin Control Register n (PORTD_PCR6) Pin Control Register n (PORTD_PCR7) Pin Control Register n (PORTD_PCR8) Pin Control Register n (PORTD_PCR9) Pin Control Register n (PORTD_PCR10)
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
11.4.4/283 11.4.5/284 11.4.6/285 11.4.7/285 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280 11.4.1/280
4004_C080
32
0000_0000h
11.4.2/282
4004_C084
32
0000_0000h
11.4.3/283
Interrupt Status Flag Register (PORTD_ISFR) Digital Filter Enable Register (PORTD_DFER) Digital Filter Clock Register (PORTD_DFCR) Digital Filter Width Register (PORTD_DFWR) Pin Control Register n (PORTE_PCR0) Pin Control Register n (PORTE_PCR1) Pin Control Register n (PORTE_PCR2)
32 32 32 32 32 32 32
4004_D080
32
0000_0000h
11.4.2/282
4004_D084
32
0000_0000h
11.4.3/283
ODE
DSE
PE 0
This read-only bitfield is reserved and always has the value zero. Interrupt Configuration The pin interrupt configuration is valid in all digital pin muxing modes. The corresponding pin is configured to generate interrupt / DMA Request as follows: Table continues on the next page...
PS 0
LK
IRQC
MUX
SRE
PFE
ISF
Lock Register 0 1 Pin Control Register bits [15:0] are not locked. Pin Control Register bits [15:0] are locked and cannot be updated until the next System Reset.
This read-only bitfield is reserved and always has the value zero. Pin Mux Control The corresponding pin is configured as follows: 000 001 010 011 100 101 110 111 Pin Disabled (Analog). Alternative 1 (GPIO). Alternative 2 (chip specific). Alternative 3 (chip specific). Alternative 4 (chip specific). Alternative 5 (chip specific). Alternative 6 (chip specific). Alternative 7 (chip specific / JTAG / NMI).
7 Reserved 6 DSE
This read-only bit is reserved and always has the value zero. Drive Strength Enable Drive Strength configuration is valid in all digital pin muxing modes. 0 1 Low drive strength is configured on the corresponding pin, if pin is configured as a digital output. High drive strength is configured on the corresponding pin, if pin is configured as a digital output.
5 ODE
Open Drain Enable Open Drain configuration is valid in all digital pin muxing modes. 0 1 Open Drain output is disabled on the corresponding pin. Open Drain output is enabled on the corresponding pin, provided pin is configured as a digital output.
4 PFE
Passive Filter Enable Passive Filter configuration is valid in all digital pin muxing modes. Table continues on the next page...
3 Reserved 2 SRE
This read-only bit is reserved and always has the value zero. Slew Rate Enable Slew Rate configuration is valid in all digital pin muxing modes. 0 1 Fast slew rate is configured on the corresponding pin, if pin is configured as a digital output. Slow slew rate is configured on the corresponding pin, if pin is configured as a digital output.
1 PE
Pull Enable Pull configuration is valid in all digital pin muxing modes. 0 1 Internal pull-up or pull-down resistor is not enabled on the corresponding pin. Internal pull-up or pull-down resistor is enabled on the corresponding pin, provided pin is configured as a digital input.
0 PS
Pull Select Pull configuration is valid in all digital pin muxing modes. 0 1 Internal pull-down resistor is enabled on the corresponding pin, if the corresponding Port Pull Enable Register bit is set. Internal pull-up resistor is enabled on the corresponding pin, if the corresponding Port Pull Enable Register bit is set.
0 GPWE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 GPWD 0 0 0 0 0 0 0 0 0
150 GPWD
0 GPWE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 GPWD 0 0 0 0 0 0 0 0 0
150 GPWD
Memory map and register definition Addresses: PORTA_ISFR 4004_9000h base + A0h offset = 4004_90A0h PORTB_ISFR 4004_A000h base + A0h offset = 4004_A0A0h PORTC_ISFR 4004_B000h base + A0h offset = 4004_B0A0h PORTD_ISFR 4004_C000h base + A0h offset = 4004_C0A0h PORTE_ISFR 4004_D000h base + A0h offset = 4004_D0A0h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ISF w1c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DFE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 CS 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Functional description Addresses: PORTA_DFWR 4004_9000h base + C8h offset = 4004_90C8h PORTB_DFWR 4004_A000h base + C8h offset = 4004_A0C8h PORTC_DFWR 4004_B000h base + C8h offset = 4004_B0C8h PORTD_DFWR 4004_C000h base + C8h offset = 4004_C0C8h PORTE_DFWR 4004_D000h base + C8h offset = 4004_D0C8h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FILT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A lock bit also exists that allows the configuration for each pin to be locked until the next system reset. Once locked, writes to the lower half of that pin control register are ignored, although a bus error is not generated on an attempted write to a locked register. The configuration of each pin control register is retained when the PORT module is disabled.
The interrupt status flag is set when the configured edge or level is detected on the output of the digital filter (if enabled) or pin (if digital filter is bypassed). When not in stop mode, the input is first synchronized to the bus clock to detect the configured level or edge transition.
Functional description
The PORT module generates a single interrupt that asserts when the interrupt status flag is set for any enabled interrupt for that port. The interrupt negates once the interrupt status flags for all enabled interrupts have been cleared. The PORT module generates a single DMA request that asserts when the interrupt status flag is set for any enabled DMA request in that port. The DMA request negates once the DMA transfer has been completed, since that clears the interrupt status flags for all enabled DMA requests. During stop mode, the interrupt status flag for any enabled interrupt (but not DMA request) will asynchronously set if the required level or edge is detected. This also generates an asynchronous wakeup signal to exit the low power mode.
12.1.1 Features
Configuration for system clocking Clock source selection for SDHC, I2S, USB, and PLL/FLL source System clock divide values I2S and USB clock divide values Architectural clock gating control Flash configuration USB regulator configuration RAM size configuration Flextimer external clock and fault source selection UART0 and UART1 receive/transmit source selection/configuration Reset pin filtering
USBREGEN
USBSTBY
0 Reserved
MS
Reset
Bit R
x*
15
x*
14
x*
13
x*
12
x*
11
x*
10
x*
9
x*
8
x*
7
x*
6
x*
5
x*
4
x*
3
x*
2
x*
1
x*
0
RAMSIZE
Reset
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
USB voltage regulator in standby mode Controls whether the USB voltage regulator is placed in standby mode. 0 1 USB voltage regulator not in standby. USB voltage regulator in standby.
This bitfield is reserved. This read-only bitfield is reserved and always has the value zero. Table continues on the next page...
This read-only bitfield is reserved and always has the value zero. RAM size This field specifies the amount of system RAM available on the device. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Undefined Undefined Undefined Undefined Undefined 32 KBytes Undefined 64 KBytes 96 KBytes 128 KBytes Undefined Undefined Undefined Undefined Undefined Undefined
110 Reserved
This read-only bitfield is reserved and always has the value zero.
Memory map and register definition Address: SIM_SOPT2 4004_7000h base + 1004h offset = 4004_8004h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
SDHCSRC
W
I2SSRC
Reset
Bit R
0
15
0
14
0
13
0
12
0
11 CMTUARTPAD
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
TRACECLKSEL
0 FBSL
Reset
This read-only bitfield is reserved and always has the value zero. I2S master clock source select Selects the clock source for I2S master clock. 00 01 10 11 Core/system clock divided by the I2S fractional clock divider. See the SIM_CLKDIV2[I2SFRAC, I2SDIV] descriptions. MCGPLLCLK/MCGFLLCLK clock divided by the I2S fractional clock divider. See the SIM_CLKDIV2[I2SFRAC, I2SDIV] descriptions. OSCERCLK clock External bypass clock (I2S0_CLKIN)
This read-only bitfield is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Table continues on the next page...
MCGCLKSEL 0
PLLFLLSEL
USBSRC
0
0
This read-only bit is reserved and always has the value zero. PLL/FLL clock select Selects the MCGPLLCLK or MCGFLLCLK clock for various peripheral clocking options. 0 1 MCGFLLCLK clock MCGPLLCLK clock
1513 Reserved
This read-only bitfield is reserved and always has the value zero.
12 Debug trace clock select TRACECLKSEL Selects the core/system clock or MCG output clock (MCGOUTCLK) as the trace clock source. 0 1 11 CMTUARTPAD MCGOUTCLK Core/system clock
CMT/UART pad drive strength Controls the output drive strength of the CMT IRO signal or UART0_TXD signal on PTD7 pin by selecting either one or two pads to drive it. 0 1 Single-pad drive strength for CMT IRO or UART0_TXD. Dual-pad drive strength for CMT IRO or UART0_TXD.
10 Reserved 98 FBSL
This read-only bit is reserved and always has the value zero. FlexBus security level If flash security is enabled, then this field affects what CPU operations can access off-chip via the FlexBus interface. This field has no effect if flash security is not enabled. 00 01 10 11 All off-chip accesses (instruction and data) via the FlexBus are disallowed. All off-chip accesses (instruction and data) via the FlexBus are disallowed. Off-chip instruction accesses are disallowed. Data accesses are allowed. Off-chip instruction accesses and data accesses are allowed.
71 Reserved 0 MCGCLKSEL
This read-only bitfield is reserved and always has the value zero. MCG clock select Selects the MCG's external reference clock. 0 1 System oscillator (OSCCLK) 32 kHz RTC oscillator
FTM2CH0SRC
FTM2CLKSEL
FTM1CLKSEL
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
FTM0CLKSEL
FTM1CH0SRC
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FTM2FLT0
FTM1FLT0
FTM0FLT2
FTM0FLT1 0
Reset
FTM1 External Clock Pin Select Selects the external pin used to drive the clock to the FTM1 module. NOTE: The selected pin must also be configured for the FTM external clock function through the appropriate pin control register in the port control module. 0 1 FTM_CLK0 pin FTM_CLK1 pin
24 FTM0CLKSEL
FlexTimer 0 External Clock Pin Select Selects the external pin used to drive the clock to the FTM0 module. Table continues on the next page...
FTM0FLT0 0
This read-only bitfield is reserved and always has the value zero. FTM2 channel 0 input capture source select Selects the source for FTM2 channel 0 input capture. NOTE: When the FTM is not in input capture mode, clear this field. 00 01 10 11 FTM2_CH0 signal CMP0 output CMP1 output Reserved
1918 FTM1CH0SRC
FTM1 channel 0 input capture source select Selects the source for FTM1 channel 0 input capture. NOTE: When the FTM is not in input capture mode, clear this field. 00 01 10 11 FTM1_CH0 signal CMP0 output CMP1 output Reserved
This read-only bitfield is reserved and always has the value zero. FTM2 Fault 0 Select Selects the source of FTM2 fault 0. NOTE: The pin source for fault 0 must be configured for the FTM module fault function through the appropriate PORTx pin control register. 0 1 FTM2_FLT0 pin CMP0 out
75 Reserved 4 FTM1FLT0
This read-only bitfield is reserved and always has the value zero. FTM1 Fault 0 Select Selects the source of FTM1 fault 0. NOTE: The pin source for fault 0 must be configured for the FTM module fault function through the appropriate pin control register in the port control module. 0 1 FTM1_FLT0 pin CMP0 out
3 Reserved
This read-only bit is reserved and always has the value zero. Table continues on the next page...
FTM0 Fault 1 Select Selects the source of FTM0 fault 1. NOTE: The pin source for fault 1 must be configured for the FTM module fault function through the appropriate pin control register in the port control module. 0 1 FTM0_FLT1 pin CMP1 out
0 FTM0FLT0
FTM0 Fault 0 Select Selects the source of FTM0 fault 0. NOTE: The pin source for fault 0 must be configured for the FTM module fault function through the appropriate pin control register in the port control module. 0 1 FTM0_FLT0 pin CMP0 out
Reset
Bit R W
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
UART1RXSRC
UARTTXSRC
UART0RXSRC
UART0TXSRC
Reset
UART 1 transmit data source select Selects the source for the UART 1 transmit data. 00 01 10 11 UART1_TX pin UART1_TX pin modulated with FTM1 channel 0 output UART1_TX pin modulated with FTM2 channel 0 output Reserved
32 UART0RXSRC
UART 0 receive data source select Selects the source for the UART 0 receive data. 00 01 10 11 UART0_RX pin CMP0 CMP1 Reserved
10 UART0TXSRC
UART 0 transmit data source select Selects the source for the UART 0 transmit data. 00 01 10 11 UART0_TX pin UART0_TX pin modulated with FTM1 channel 0 output UART0_TX pin modulated with FTM2 channel 0 output Reserved
Memory map and register definition Address: SIM_SOPT6 4004_7000h base + 1014h offset = 4004_8014h
Bit R W 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
RSTFLTEN 0
15
RSTFLTSEL 0
13
Reset
Bit R W
0
14
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reset
Reset pin filter select Selects the reset pin bus clock filter value. 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 Bus clock filter count is 1 Bus clock filter count is 2 Bus clock filter count is 3 Bus clock filter count is 4 Bus clock filter count is 5 Bus clock filter count is 6 Bus clock filter count is 7 Bus clock filter count is 8 Bus clock filter count is 9 Bus clock filter count is 10 Bus clock filter count is 11 Bus clock filter count is 12 Bus clock filter count is 13 Bus clock filter count is 14 Bus clock filter count is 15 Bus clock filter count is 16 Bus clock filter count is 17 Bus clock filter count is 18 Table continues on the next page...
This read-only bitfield is reserved and always has the value zero.
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
ADC1PRETRGSEL
ADC1TRGSEL
ADC0PRETRGSEL
ADC1ALTTRGEN
ADC0ALTTRGEN
ADC0TRGSEL
Reset
This read-only bitfield is reserved and always has the value zero.
12 ADC1 pre-trigger select ADC1PRETRGSEL Selects the ADC1 pre-trigger source when alternative triggers are enabled through ADC1ALTTRGEN. 0 1 118 ADC1TRGSEL Pre-trigger A selected for ADC1. Pre-trigger B selected for ADC1.
ADC1 trigger select Selects the ADC1 trigger source when alternative triggers are functional in stop and VLPS modes. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1011 PDB external trigger pin input (PDB0_EXTRG) High speed comparator 0 output High speed comparator 1 output High speed comparator 2 output PIT trigger 0 PIT trigger 1 PIT trigger 2 PIT trigger 3 FTM0 trigger FTM1 trigger FTM2 trigger Unused RTC alarm RTC seconds Low-power timer trigger Unused
7 ADC0ALTTRGEN
ADC0 alternate trigger enable Enable alternative conversion triggers for ADC0. 0 1 PDB trigger selected for ADC0. Alternate trigger selected for ADC0.
65 Reserved
This read-only bitfield is reserved and always has the value zero.
4 ADC0 pretrigger select ADC0PRETRGSEL Selects the ADC0 pre-trigger source when alternative triggers are enabled through ADC0ALTTRGEN. Table continues on the next page...
ADC0 trigger select Selects the ADC0 trigger source when alternative triggers are functional in stop and VLPS modes. . 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1011 PDB external trigger pin input (PDB0_EXTRG) High speed comparator 0 output High speed comparator 1 output High speed comparator 2 output PIT trigger 0 PIT trigger 1 PIT trigger 2 PIT trigger 3 FTM0 trigger FTM1 trigger FTM2 trigger Unused RTC alarm RTC seconds Low-power timer trigger Unused
REVID
FAMID
PINID
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Pincount identification Specifies the pincount of the device. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Reserved Reserved 32-pin Reserved 48-pin 64-pin 80-pin 81-pin 100-pin 104-pin 144-pin Reserved 196-pin Reserved 256-pin Reserved
UART4 Clock Gate Control This bit controls the clock gate to the UART4 module. 0 1 Clock disabled Clock enabled
90 Reserved
This read-only bitfield is reserved and always has the value zero.
DAC1
DAC0
DAC0 Clock Gate Control This bit controls the clock gate to the DAC0 module. 0 1 Clock disabled Clock enabled
This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value zero.
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
SDHC
ADC1
SLCD
FTM2
0
1
0
0
Reset
FLEXCAN1
0 SPI2
This read-only bitfield is reserved and always has the value zero. ADC1 Clock Gate Control This bit controls the clock gate to the ADC1 module. 0 1 Clock disabled Clock enabled
This read-only bitfield is reserved and always has the value zero. FTM2 Clock Gate Control This bit controls the clock gate to the FTM2 module. 0 1 Clock disabled Clock enabled Table continues on the next page...
This read-only bitfield is reserved and always has the value zero. SPI2 Clock Gate Control This bit controls the clock gate to the SPI2 module. 0 1 Clock disabled Clock enabled
This read-only bitfield is reserved and always has the value zero. FlexCAN1 Clock Gate Control This bit controls the clock gate to the FlexCAN1 module. 0 1 Clock disabled Clock enabled
31 Reserved 0 Reserved
This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value zero.
Reset
Bit R
0
15
1
14
1
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
1
4
0
3
USBOTG
LLWU
VREF
CMP
0
2
0
1
0
0
UART3
UART2
UART1
UART0
0 I2C1 I2C0
0 EWM CMT
Reset
This read-only bitfield is reserved and always has the value zero. VREF Clock Gate Control This bit controls the clock gate to the VREF module. 0 1 Clock disabled Clock enabled
19 CMP
Comparator Clock Gate Control This bit controls the clock gate to the comparator module. 0 1 Clock disabled Clock enabled Table continues on the next page...
This read-only bitfield is reserved and always has the value zero. UART3 Clock Gate Control This bit controls the clock gate to the UART3 module. 0 1 Clock disabled Clock enabled
12 UART2
UART2 Clock Gate Control This bit controls the clock gate to the UART2 module. 0 1 Clock disabled Clock enabled
11 UART1
UART1 Clock Gate Control This bit controls the clock gate to the UART1 module. 0 1 Clock disabled Clock enabled
10 UART0
UART0 Clock Gate Control This bit controls the clock gate to the UART0 module. 0 1 Clock disabled Clock enabled
98 Reserved 7 I2C1
This read-only bitfield is reserved and always has the value zero. I2C1 Clock Gate Control This bit controls the clock gate to the I2C1 module. 0 1 Clock disabled Clock enabled
6 I2C0
I2C0 Clock Gate Control This bit controls the clock gate to the I2C0 module. 0 1 Clock disabled Clock enabled
54 Reserved
This read-only bitfield is reserved and always has the value one. Table continues on the next page...
EWM Clock Gate Control This bit controls the clock gate to the EWM module. 0 1 Clock disabled Clock enabled
0 Reserved
This read-only bit is reserved and always has the value zero.
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
1
2
0
1
0
0
TSI
Reset
LPTIMER 0
REGFILE
PORTD
PORTC
PORTE
PORTB
PORTA
Port D Clock Gate Control This bit controls the clock gate to the Port D module. 0 1 Clock disabled Clock enabled
11 PORTC
Port C Clock Gate Control This bit controls the clock gate to the Port C module. 0 1 Clock disabled Clock enabled
10 PORTB
Port B Clock Gate Control This bit controls the clock gate to the Port B module. 0 1 Clock disabled Clock enabled
9 PORTA
Port A Clock Gate Control This bit controls the clock gate to the Port A module. 0 1 Clock disabled Clock enabled
This read-only bitfield is reserved and always has the value one. This read-only bit is reserved and always has the value zero. TSI Clock Gate Control This bit controls the clock gate to the TSI module. 0 1 Clock disabled Clock enabled
42 Reserved 1 REGFILE
This read-only bitfield is reserved and always has the value zero. Register File Clock Gate Control This bit controls the clock gate to the Register File module. Table continues on the next page...
Low Power Timer Clock Gate Control This bit controls the clock gate to the Low Power Timer module. 0 1 Clock disabled Clock enabled
RTC
W
PIT
PDB
USBDCD
ADC0
FTM1
FTM0
0 CRC
Reset
Bit R
0
15
1
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FLEXCAN0
DMAMUX
DSPI0
0 I2S SPI1
Reset
This read-only bit is reserved and always has the value zero. Table continues on the next page...
FTFL 1
This read-only bit is reserved and always has the value zero. FTM1 Clock Gate Control This bit controls the clock gate to the FTM1 module. 0 1 Clock disabled Clock enabled
24 FTM0
FTM0 Clock Gate Control This bit controls the clock gate to the FTM0 module. 0 1 Clock disabled Clock enabled
23 PIT
PIT Clock Gate Control This bit controls the clock gate to the PIT module. 0 1 Clock disabled Clock enabled
22 PDB
PDB Clock Gate Control This bit controls the clock gate to the PDB module. 0 1 Clock disabled Clock enabled
21 USBDCD
USB DCD Clock Gate Control This bit controls the clock gate to the USB DCD module. 0 1 Clock disabled Clock enabled
This read-only bitfield is reserved and always has the value zero. CRC Clock Gate Control This bit controls the clock gate to the CRC module. 0 1 Clock disabled Clock enabled
1716 Reserved
This read-only bitfield is reserved and always has the value zero. Table continues on the next page...
This read-only bit is reserved and always has the value zero. SPI1 Clock Gate Control This bit controls the clock gate to the SPI1 module. 0 1 Clock disabled Clock enabled
12 DSPI0
SPI0 Clock Gate Control This bit controls the clock gate to the SPI0 module. 0 1 Clock disabled Clock enabled
This read-only bitfield is reserved and always has the value zero. FlexCAN0 Clock Gate Control This bit controls the clock gate to the FlexCAN0 module. 0 1 Clock disabled Clock enabled
32 Reserved 1 DMAMUX
This read-only bitfield is reserved and always has the value zero. DMA Mux Clock Gate Control This bit controls the clock gate to the DMA Mux module. 0 1 Clock disabled Clock enabled
0 FTFL
Flash Memory Clock Gate Control This bit controls the clock gate to the flash memory. 0 1 Clock disabled Clock enabled
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reset
DMA Clock Gate Control This bit controls the clock gate to the DMA module. 0 1 Clock disabled Clock enabled
0 FLEXBUS
FlexBus Clock Gate Control This bit controls the clock gate to the FlexBus module. 0 1 Clock disabled Clock enabled
FLEXBUS 1
0 MPU DMA
OUTDIV1
OUTDIV2
OUTDIV3
OUTDIV4
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Clock 2 output divider value This field sets the divide value for the peripheral clock. At the end of reset, it is loaded with either 0000 or 0111 depending on FTFL_FOPT[LPBOOT]. 0000 0001 0010 0011 Divide-by-1. Divide-by-2. Divide-by-3. Divide-by-4. Table continues on the next page...
Clock 3 output divider value This field sets the divide value for the FlexBus clock driven to the external pin (FB_CLK). At the end of reset, it is loaded with either 0001 or 1111 depending on FTFL_FOPT[LPBOOT]. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Divide-by-1. Divide-by-2. Divide-by-3. Divide-by-4. Divide-by-5. Divide-by-6. Divide-by-7. Divide-by-8. Divide-by-9. Divide-by-10. Divide-by-11. Divide-by-12. Divide-by-13. Divide-by-14. Divide-by-15. Divide-by-16.
1916 OUTDIV4
Clock 4 output divider value This field sets the divide value for the flash clock. At the end of reset, it is loaded with either 0001 or 1111 depending on FTFL_FOPT[LPBOOT]. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Divide-by-1. Divide-by-2. Divide-by-3. Divide-by-4. Divide-by-5. Divide-by-6. Divide-by-7. Divide-by-8. Divide-by-9. Divide-by-10. Table continues on the next page...
This read-only bitfield is reserved and always has the value zero.
0 I2SDIV
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
1
4
0
3
0
2
0
1
0
0
I2SFRAC
W
USBDIV
Reset
USBFRAC 0
FSIZE
EESIZE
DEPART
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
This read-only bitfield is reserved and always has the value zero. EEPROM size EEPROM data size. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010-1110 1111 Reserved Reserved 4 KB 2 KB 1 KB 512 Bytes 256 Bytes 128 Bytes 64 Bytes 32 Bytes Reserved 0 Bytes
This read-only bitfield is reserved and always has the value zero. FlexNVM partition For devices with FlexNVM: Data flash / EEPROM backup split. See DEPART bit description in FTFL chapter. For devices without FlexNVM: Reserved
70 Reserved
This read-only bitfield is reserved and always has the value zero.
MAXADDR0
PFLSH
MAXADDR1
Reset
Bit
x*
15
x*
14
x*
13
x*
12
x*
11
x*
10
x*
9
x*
8
x*
7
x*
6
x*
5
x*
4
x*
3
x*
2
x*
1
x*
0
Reset
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
This read-only bit is reserved and always has the value zero. Max address block 0 This field specifies the first invalid address of flash block 0 (program flash 0). Program flash For devices with FlexNVM: Indicates whether block 1 is program flash or FlexNVM. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Max address block 1 This field specifies the first invalid address of flash block 1 (program flash 1 or FlexNVM as indicated by the PFLSH bit). This read-only bitfield is reserved and always has the value zero.
150 Reserved
UID
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
UID
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
UID
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
UID
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Functional description
13.1.1 Features
Power mode entry/exit and protection Reset control features include: Multiple sources of reset for flexible system configuration and reliable operation System reset status (SRSH and SRSL) registers to indicate source of most recent reset
Introduction
MCU mode
Wait Stop
Accordingly, the ARM CPU documentation refers to sleep and deep sleep, while the Freescale MCU documentation normally uses wait and stop. This device augments stop, wait, and run in a number of ways. The power management controller (PMC) contains a run and a stop mode regulator. Run regulation is used in normal run, wait and stop modes. Stop mode regulation is used during all very low power and low leakage modes. During stop mode regulation the bus frequencies are limited for the very low power modes. The PMC provides the user with multiple power options. The low power operating modes can drastically reduce run time power when maximum bus frequency is not required to handle the application needs. From normal run mode, the run mode (RUNM) bit field can be modified to change the the MCU into the very lower power run (VLPR) mode when limited frequency is required during the application. For the low power run mode, a corresponding wait and stop mode can be entered. Depending on the needs of the user application, a variety of stop modes are available that allow the state retention, partial power down or full power down of certain logic and/or memory. I/O states are held in all modes of operation. Several registers are used to configure the various modes of operation for the device. The following table describes the power modes available for the device.
Table 13-1. Power modes
Mode Run Wait Stop Description MCU can be run at full speed and the internal supply is fully regulated (run regulation mode). This mode is also referred to as normal run mode. In ARM architectures, the Core Clock to the ARM Cortex-M4 core is shut off. The System Clock continues to operate; Bus Clocks if enabled continue to operate; run regulation is maintained. In ARM architectures, Core Clock and System Clock to the ARM Cortex-M4 core shut off immedi ately.System Clock to other masters and Bus Clocks are stopped after all stop acknowledge signals from supporting peripherals are valid. Table continues on the next page...
VLPS
LLS
VLLS3
VLLS2
Introduction
Any reset
VLPW 4 5
Wait
VLPR
Run
3 6
Stop
2 10
VLPS
8
11 9
LLS
VLLS 3, 2, 1
The following table defines triggers for the various state transitions shown in the previous figure.
Table 13-2. Power mode transition triggers
Transition # 1 From Run Wait 2 Run STOP To Wait Run STOP Run Trigger Conditions Sleep-now or sleep-on-exit modes entered with SLEEPDEEP clear, controlled in System Control Register in ARM core. Interrupt or Reset Sleep-now or sleep-on-exit modes entered with SLEEPDEEP set, controlled in System Control Register in ARM core Interrupt or Reset
VLPS 7 Run
VLPR VLPS
LLS 9 VLPR
Run LLS
10
Run
VLLS(3,2,1)
Introduction
This is the normal operating mode for the device. This mode is selected after any reset. When the ARM processor exits reset, it sets up the stack, program counter (PC), and link register (LR): The processor reads the start SP (SP_main) from vector-table offset 0x000 The processor reads the start PC from vector-table offset 0x004 LR is set to 0xFFFF_FFFF. To reduce power in this mode, disable unused modules by clearing the peripherals corresponding clock gating control bit in the SIM's registers. 13.1.2.2.2 Very Low Power Run (VLPR) Mode
In VLPR, the on-chip voltage regulator is put into a stop mode regulation state. In this state, the regulator is designed to supply enough current to the MCU over a reduced frequency. To further reduce power in this mode, disable the clocks to unused modules in the peripherals' corresponding clock gating control bits in the SIM's registers. Before entering this mode, the following conditions must be met: One of two clock sources selected: Either BLPE is the selected clock mode for the MCG with low gain oscillator only or BLPI with the 2MHz IRC. The system, bus, and core frequency is 2 MHz or less.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
332 Freescale Semiconductor, Inc.
Flash frequency is 1 MHz or less. Mode protection must be set to allow VLP modes (AVLP = 1). RUNM set to 10b to enter VLPR. Flash programming/erasing is not allowed.
While in VLPR, the regulator is slow responding and cannot handle fast load transitions. Therefore, do not change the clock frequency. This includes a requirement to not modify BDIV in the MCG module, the module clock enables in the SIM, or any clock divider registers. To re-enter normal run mode, simply clear RUNM. The REGONS and VLPRS bits in the REGSC register are read-only status bits that indicate if the regulator is in run regulation mode or not: When REGONS is set, the regulator is in run regulation mode and the MCU can run at full speed in any clock mode. If a higher execution frequency is desired, poll REGONS until it is set when returning from VLPR. When VLPRS is set, the system is fully in VLPR mode. NOTE The transition time from run to VLPR can take up to TBD s. Do not enter VLPS, LLS, or VLLSx until the transition to VLPR completes as indicated by the VLPRS bit. The transition time from VLPR to run can take up to TBD s. Do not attempt to transition out of run mode until the REGONS bit sets. VLPR also provides the option to return to run regulation if any interrupt occurs. This is done by setting the low power wake up on interrupt (LPWUI) bit in the PMCTRL register. In the interrupt service routine (ISR) it is not be necessary to poll the REGONS before increasing the frequency. The VLPR frequency limits are such that the regulator is in run regulation and REGONS is set before the ISR is entered. Any reset exits VLPR, clears RUNM, REGONS is set, and the device is in normal run mode after the CPU exits its reset flow.
Introduction
13.1.2.3.1
Wait Mode
Wait mode is entered when the ARM core enters the sleep-now or sleep-on-exit modes. The ARM CPU enters a low-power state in which it is not clocked, but peripherals continue to be clocked provided they are enabled and clock gating to the peripheral is enabled via the SIM. When an interrupt request occurs, the CPU exits wait mode and resumes processing, beginning with the stacking operations leading to the interrupt service routine. An asserted RESET pin or LVD (if the LVD system is enabled) exits wait mode, returning the device to normal run mode. 13.1.2.3.2 Very Low Power Wait (VLPW) Mode
VLPW is entered by the entering the sleep-now" or "sleep-on-exit mode while the MCU is in the very low power run (VLPR) mode and configured appropriately. In VLPW, the on-chip voltage regulator remains in its stop regulation state. In this state, the regulator is designed to supply enough current to the MCU over a reduced frequency. To further reduce power in this mode, disable the clocks to unused modules by clearing the peripherals' corresponding clock gating control bits in the SIM. VLPR mode restrictions also apply to VLPW. VLPW mode provides the option to return to full-regulated normal run mode if any enabled interrupt occurs. This is done by setting the low power wake up on interrupt (LPWUI) bit in the PMCTRL register. Wait for REGONS status to set before increasing the frequency. If the LPWUI bit is clear when the interrupt from VLPW occurs, the device returns to VLPR mode to execute the interrupt service routine. Wait for VLPRS status to set before transitioning to other power modes. An asserted RESET pin or a watchdog timeout exits VLPW and clears the RUNM and WAITE bits. This returns the regulator to run regulation and the device to normal run mode.
certain asynchronous mode peripherals are operating with the remainer of the MCU powered off. The tradeoffs depend upon the user's application, where power usage and state retention versus functional needs are weighed. The various stop modes are selected by setting the appropriate bits in the power mode protection (PMPROT) and power mode control (PMCTRL) registers. The selected stop mode mode is entered during the sleep-now or sleep-on-exit entry with with the SLEEPDEEP bit set in the System Control Register in the ARM core. The available stop modes are: Stop Very low power stop (VLPS) Low leakage stop (LLS) Very low leakage stop 1 (VLLS1) Very low leakage stop 2 (VLLS2) Very low leakage stop 3 (VLLS3) Stop Mode
13.1.2.4.1
Stop mode is entered via the sleep-now or sleep-on-exit with the SLEEPDEEP bit set in the System Control Register in the ARM core. The MCG module can be configured to leave the reference clocks running. A module capable of providing an asynchronous interrupt to the device (for example, an enabled pin interrupt, NMI, RTC, LVW, UART wakeup on edge, HSCMP, or ADC) takes the device out of stop mode and returns the device to normal run mode. Reference Table 13-1 for peripheral, I/O, and memory operation in stop. When an interrupt request occurs, the CPU exits stop mode and resumes processing, beginning with the stacking operations leading to the interrupt service routine. An asserted RESET pin, a watchdog timeout, or LVD with LVDRE set exits stop mode. The device returns to normal run mode via a MCU reset. 13.1.2.4.2 Very Low Power Stop (VLPS) Mode
VLPS mode can be entered in one of two ways: Entry into stop via the sleep-now or sleep-on-exit with the SLEEPDEEP bit set in the System Control Register in the ARM core while the MCU is in very low power run (VLPR) mode and configured as per Table 13-2. When the MCU is in normal run mode with LPLLSM set to 010b, entry into stop via the sleep-now or sleep-on-exit with the SLEEPDEEP bit set in the System Control
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 335
Introduction
Register in the ARM core forces the MCU into VLPS and hardware sets the LPWUI bit set. In VLPS, the on-chip voltage regulator remains in its stop regulation state as in VLPR. On transitions from VLPR to VLPS with LPLLSM set to 000b, hardware forces LPLLSM to value of 010b. A module capable of providing an asynchronous interrupt to the device (for example, an enabled pin interrupt, NMI, RTC, UART wakeup on edge, HSCMP or ADC) takes the device out of VLPS and returns the device to VLPR provided the LPWUI bit is clear. If LPWUI is set, the device returns to normal run mode upon an interrupt request. The REGONS bit must be set before allowing the system to return to a frequency higher than allowed in VLPR. An asserted RESET pin or a watchdog timeout causes VLPS exit. This returns the device to normal run mode. 13.1.2.4.3 Low-Leakage Stop (LLS) Mode
Low leakage stop (LLS) mode can be entered from normal run or VLPR modes. The MCU enters LLS mode if: In sleep-now or sleep-on-exit mode, the SLEEPDEEP bit is set in the System Control Register in the ARM core, and The device is configured as per Table 13-2. In LLS, the on-chip voltage regulator is in stop regulation. Most of the peripherals are put in a state-retention mode that does not allow them to operate while in LLS. In LLS, configure the low leakage wake up (LLWU) module to enable the desired wakeup sources. The available wakeup sources in LLS are detailed in the Chip Configuration details for this device. After wakeup from LLS, the device returns to normal run mode with a pending LLWU module interrupt. In the LLWU interrupt service routine (ISR) poll the LLWU module wakeup flags to determine the source of the wakeup. NOTE The LLWU interrupt must not be masked by the interrupt controller to avoid a scenario where the system does not fully exit stop mode on an LLS recovery. An asserted RESET pin exits LLS. This returns the device to normal run mode. When LLS is exiting via the RESET pin, the PIN and WAKEUP bits are set in the SRSL register.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
336 Freescale Semiconductor, Inc.
13.1.2.4.4
This device contains three very low leakage modes: VLLS3, VLLS2, and VLLS1. When a reference applies to all three low leakage modes, VLLS is used. All three of the VLLS modes can be entered from normal run or VLPR. The MCU enters the configured VLLS mode if: In sleep-now or sleep-on-exit mode, the SLEEPDEEP bit is set in the System Control Register in the ARM core, and The device is configured as per Table 13-2. In VLLS, the on-chip voltage regulator is in its stop-regulation state. In VLLS, configure the LLWU module to enable the desired wakeup sources. The available wakeup sources in VLLS are detailed LLWU's Chip Configuration details for this device. When entering VLLS, each I/O pin is latched as configured before executing VLLS. Since all digital logic in the MCU is powered off, all port and peripheral data is lost during VLLS. This information must be restored before ACKISO in the LLWU is set. An asserted RESET pin exits any VLLS mode. This returns the device to normal run mode. When exiting VLLS via the RESET pin, the PIN and WAKEUP bits are set in the SRSL register.
Introduction
No debug is available while the MCU is in LLS or VLLS modes. LLS is a state-retention mode and all debug operation can continue after waking from LLS, even in cases where system wakeup is due to a system reset event. Entering into a VLLS mode causes all the debug controls and settings to be powered off. To give time to the debugger to sync with the MCU, the MDM AP Control Register includes a Very Low Leakage Debug Request (VLLDBGREQ) bit that is set to configure the Mode Controller logic to hold the system in reset after the next recovery from a VLLS mode. This bit allows the debugger time to re-initialize the debug module before the debug session continues. The VLLDBGREQ bit clears automatically due to the reset generated as part of the VLLS recovery. The MDM AP Control Register also includes a Very Low Leakage Debug Acknowledge (VLLDBGACK) bit that is set to release the ARM core being held in reset following a VLLS recovery. The debugger re-initializes all debug IP and then asserts the VLLDBGACK control bit to allow the Mode Controller to release the ARM core from reset and allow CPU operation to begin. The VLLDBGACK bit is cleared by the debugger (or can be left set as is) or clears automatically due to the reset generated as part of the next VLLS recovery.
Computer operating properly (COP) timer Clock generator (MCG) loss of clock reset (LOC) Low-voltage detect (LVD) Wakeup from very low leakage stop modes, VLLSx Software reset (SW) - by setting SYSRESETREQ bit of the NVIC's Application Interrupt and Reset Control Register LOCKUP - core in lockup state EzPort MDM AP Reset - by setting System Reset Request bit of the MDM AP Control Register Debug reset: Asserting JTAG_TRST pin Each of the system reset sources, with the exception of the EzPort and MDM AP reset, has an associated bit in the system reset status low (SRSL) register.
Introduction
MC memory map
Absolute address (hex) 4007_E000 4007_E001 4007_E002 4007_E003 Register name System Reset Status Register High (MC_SRSH) System Reset Status Register Low (MC_SRSL) Power Mode Protection Register (MC_PMPROT) Power Mode Control Register (MC_PMCTRL) Width Access (in bits) 8 8 8 8 R/W R/W R/W R/W Reset value 00h 82h 00h 00h Section/ page 13.2.1/342 13.2.2/343 13.2.3/345 13.2.4/346
SW
LOCKUP
JTAG
JTAG generated reset Indicates reset was caused by JTAG selection of certain IR codes (EZPORT, EXTEST, HIGHZ, and CLAMP). 0 1 Reset not caused by JTAG Reset caused by JTAG
POR
PIN
COP
LOC
LVD
WAKEUP
External reset pin Indicates reset was caused by an active-low level on the external RESETpin. 0 1 Reset not caused by external reset pin Reset caused by external reset pin
5 COP
Computer Operating Properly (COP) Watchdog Reset was caused by the COP watchdog timer timing out. This reset source can be blocked by disabling the watchdog. For more information, see the watchdog chapter. 0 1 Reset not caused by COP timeout Reset caused by COP timeout
43 Reserved 2 LOC
This read-only bitfield is reserved and always has the value zero. Loss-of-clock reset Indicates reset was caused by a loss of external clock. The MCG clock monitor must be enabled for a loss of clock to be detected. See the MCG chapter for information on enabling the clock monitor. 0 1 Reset not caused by a loss of external clock. Reset caused by a loss of external clock.
1 LVD
Low-voltage detect reset If the LVDRE bit is set and the supply drops below the LVD trip voltage, an LVD reset occurs. This bit is also set by POR. 0 1 Reset not caused by LVD trip or POR Reset caused by LVD trip or POR
0 WAKEUP
Low-leakage wakeup reset Reset was caused by an enabled LLWU module wakeup source while the device was in LLS or VLLS modes. Wakeup sources in LLS is limited to the RESET pin. In VLLS, any enabled wakeup source causes a reset. This bit is cleared by any reset except WAKEUP. 0 1 Reset not caused by LLWU module wakeup source Reset caused by LLWU module wakeup source
AVLP 0 0
ALLS 0
AVLLS3 0
AVLLS2 0
AVLLS1 0
Allow low leakage stop mode This write once bit allows the MCU to enter low leakage stop mode (LLS) provided the appropriate control bits are set up in PMCTRL. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Allow Very Low Leakage Stop 3 Mode This write once bit allows the MCU to enter very low leakage stop 3 mode (VLLS3) provided the appropriate control bits are set up in PMCTRL. 0 1 VLLS3 is not allowed VLLS3 is allowed
1 AVLLS2
Allow very low leakage stop 2 mode This write once bit allows the MCU to enter very low leakage stop 2 mode (VLLS2) provided the appropriate control bits are set up in PMCTRL. 0 1 VLLS2 is not allowed VLLS2 is allowed
0 AVLLS1
Allow very low leakage stop 1 mode This write once bit allows the MCU to enter very low leakage stop 1 mode (VLLS1) provided the appropriate control bits are set up in PMCTRL. 0 1 VLLS1 is not allowed VLLS1 is allowed
NOTE The reset value of this register depends on the reset type: Low-leakage wake-up (LLS exit via RESET pin or any exit from VLLS) bits 2-0 unaffected Other reset 0x00
Address: MC_PMCTRL 4007_E000h base + 3h offset = 4007_E003h
Bit 7 6 5 4 3 2 1 0
LPWUI 0 0
RUNM 0 0
LPLLSM 0 0 0 0
Run Mode Enable This field is used to enter very low power run. Writes to this field are blocked if the protection level has not been enabled using PMPROT register. This field is cleared by hardware on exit from LLS or VLLS modes. 00 01 10 11 Normal run mode Reserved Very low power run mode Reserved
43 Reserved 20 LPLLSM
This read-only bitfield is reserved and always has the value zero. Low Power, Low Leakage Stop Mode Select low power or low leakage stop modes provided the PMPROT was set properly and stop mode entry via the sleep-now or sleep-on-exit. After any system reset, writes to reconfigure PMPROT clears LPLLSM. 000 001 010 011 100 101 110 111 Normal stop Reserved Very low power stop (VLPS) Low leakage stop (LLS) Reserved Very low leakage stop 3 (VLLS3) Very low leakage stop 2 (VLLS2) Very low leakage stop 1 (VLLS1)
14.2 Features
Power management control features include: Internal voltage regulator Active POR providing brown-out detect Low-voltage detect protection including: Multiple programmable trip voltages Warning and detect interrupt control Drive a reset on low voltage detect
Two flags are available to indicate the status of the low-voltage detect system: The low voltage detect flag (LVDF) operates in a level sensitive manner. The LVDF bit is set when the internal supply voltage falls below the selected internal monitor trip point (VLVD). The LVDF bit is cleared by writing one to the LVDACK bit, but only if the internal supply has returned above the internal trip point; otherwise, the LVDF bit remains set. The low voltage warning flag (LVWF) operates in a level sensitive manner. The LVWF bit is set when the internal supply voltage falls below the selected internal monitor trip point (VLVW). The LVWF bit is cleared by writing one to the LVWACK bit, but only if the internal supply has returned above the internal trip point; otherwise, the LVWF bit remains set.
PMC Memory Map/Register Definition Address: PMC_LVDSC1 4007_D000h base + 0h offset = 4007_D000h
Bit 7 6 5 4 3 2 1 0
LVDF
0 LVDACK
LVDIE 0
LVDRE 1 0
LVDV 0 0 0
Low-Voltage Detect Acknowledge This write-only bit is used to acknowledge low voltage detection errors (write 1 to clear LVDF). Reads always return 0. Low-Voltage Detect Interrupt Enable Enables hardware interrupt requests for LVDF. 0 1 Hardware interrupt disabled (use polling) Request a hardware interrupt when LVDF = 1.
5 LVDIE
4 LVDRE
Low-Voltage Detect Reset Enable This write-once bit enables LVDF events to generate a hardware reset. Additional writes are ignored. 0 1 LVDF does not generate hardware resets Force an MCU reset when LVDF = 1
32 Reserved 10 LVDV
This read-only bitfield is reserved and always has the value zero. Low-Voltage Detect Voltage Select Selects the LVD trip point voltage (VLVD). 00 01 10 11 Low trip point selected (VLVD = VLVDL) High trip point selected (VLVD = VLVDH) Reserved Reserved
While the device is in the very low power or low leakage modes, the LVD system is disabled regardless of LVDSC2 settings. See the device's data sheet for the exact LVD trip voltages. NOTE The LVW trip voltages depend on LVWV and LVDV bits. NOTE The reset value of this register depends on the reset type: POR -- 0x00 Other reset -- bits 1-0 are unaffected
Address: PMC_LVDSC2 4007_D000h base + 1h offset = 4007_D001h
Bit 7 6 5 4 3 2 1 0
LVWF
0 LVWACK
LVWIE 0 0
LVWV 0 0 0
Low-Voltage Warning Acknowledge This write-only bit is used to acknowledge low voltage warning errors (write 1 to clear LVWF). Reads always return 0. Low-Voltage Warning Interrupt Enable Enables hardware interrupt requests for LVWF. 0 1 Hardware interrupt disabled (use polling) Request a hardware interrupt when LVWF = 1.
5 LVWIE
42 Reserved 10 LVWV
This read-only bitfield is reserved and always has the value zero. Low-Voltage Warning Voltage Select Selects the LVW trip point voltage (VLVW). The actual voltage for the warning depends on LVDSC1[LVDV]. 00 01 10 11 Low trip point selected (VLVW = VLVW1) Mid 1 trip point selected (VLVW = VLVW2) Mid 2 trip point selected (VLVW = VLVW3) High trip point selected (VLVW = VLV4)
TRAMPO 0 0
VLPRS
REGONS 0
BGBE 0
Very Low Power Run Status This read only bit indicates the current run mode is VLPR. 0 1 MCU is not in VLPR mode MCU is in VLPR mode
2 REGONS
Regulator in Run Regulation Status This read-only bit provides the current status of the internal voltage regulator. 0 1 Regulator is in stop regulation or in transition to/from it Regulator is in run regulation
1 Reserved 0 BGBE
This bit is reserved. Bandgap Buffer Enable Table continues on the next page...
15.1.1 Features
The LLWU module features include:
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 357
Introduction
Supports up to 16 external input pins and up to 7 internal modules with individual enable bits Input sources may be external pins or from internal peripherals capable of running in LLS or VLLS. See the Chip Configuration details for wakeup input sources for this device. Each external pin wakeup input is programmable as falling edge, rising edge, or any change Each internal module wakeup input source qualified with programmable enable Wakeup inputs are activated if enabled once MCU enters low leakage stop (LLS) or very low leakage stop (VLLS) modes Reset exit due to assertion of RESET pin via reset flow. I/O states are reset on exit Wakeup from LLS mode is handled as an interrupt. I/O states are released on exit Wakeup exit via reset flow when MCU is in VLLS. I/O states remain in held state until wakeup has been acknowledged. An optional digital filter provided to qualify an external pin detect and RESET pin detect.
LLWU_MWUF7 occurred
LLWU_MWUF6 occurred
LLWU_MWUF0 occurred
LLWU controller
exit low leakge mode (LLS or VLLS) interrupt flow LLWU_P0-LLWU_P15 wakeup occurred reset flow
LLWU_P15
LLWU_P0
ACKISO
RESET
Reset filter
LPO
FLTR
NOTE This register is unaffected by wakeup from low leakage modes (exit from LLS via RESET or any exit from VLLS).
Address: LLWU_PE1 4007_C000h base + 0h offset = 4007_C000h
Bit 7 6 5 4 3 2 1 0
WUPE3 0 0
WUPE2 0 0
WUPE1 0 0
WUPE0 0
Wakeup Pin Enable for LLWU_P2 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
32 WUPE1
Wakeup Pin Enable for LLWU_P1 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
10 WUPE0
Wakeup Pin Enable for LLWU_P0 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
WUPE7 0 0
WUPE6 0 0
WUPE5 0 0
WUPE4 0
Wakeup Pin Enable for LLWU_P6 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
32 WUPE5
Wakeup Pin Enable for LLWU_P5 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
10 WUPE4
Wakeup Pin Enable for LLWU_P4 Enables and configures the edge detection for the wakeup pin. 00 External input pin disabled as wakeup input Table continues on the next page...
WUPE11 0 0
WUPE10 0 0
WUPE9 0 0
WUPE8 0
Wakeup Pin Enable for LLWU_P10 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
32 WUPE9
Wakeup Pin Enable for LLWU_P9 Enables and configures the edge detection for the wakeup pin. 00 External input pin disabled as wakeup input Table continues on the next page...
Wakeup Pin Enable for LLWU_P8 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
WUPE15 0 0
WUPE14 0 0
WUPE13 0 0
WUPE12 0
Wakeup Pin Enable for LLWU_P14 Enables and configures the edge detection for the wakeup pin. 00 External input pin disabled as wakeup input Table continues on the next page...
Wakeup Pin Enable for LLWU_P13 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
10 WUPE12
Wakeup Pin Enable for LLWU_P12 Enables and configures the edge detection for the wakeup pin. 00 01 10 11 External input pin disabled as wakeup input External input pin enabled with rising edge detection External input pin enabled with falling edge detection External input pin enabled with any change detection
WUME7 0
WUME6 0
WUME5 0
WUME4 0
WUME3 0
WUME2 0
WUME1 0
WUME0 0
Wakeup Module Enable for Module 6 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
5 WUME5
Wakeup Module Enable for Module 5 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
4 WUME4
Wakeup Module Enable for Module 4 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
3 WUME3
Wakeup Module Enable for Module 3 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
2 WUME2
Wakeup Module Enable for Module 2 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
1 WUME1
Wakeup Module Enable for Module 1 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
0 WUME0
Wakeup Module Enable for Module 0 Enables an internal module as a wakeup source input. 0 1 Internal module flag not used as wakeup source Internal module flag used as wakeup source
WUF7 w1c 0
WUF6 w1c 0
WUF5 w1c 0
WUF4 w1c 0
WUF3 w1c 0
WUF2 w1c 0
WUF1 w1c 0
WUF0 w1c 0
Wakeup Flag for LLWU_P6 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF6. 0 1 LLWU_P6 input was not a source of wakeup from LLS or VLLS mode LLWU_P6 input was a source of wakeup from LLS or VLLS mode
5 WUF5
Wakeup Flag for LLWU_P5 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF5. 0 1 LLWU_P5 input was not a source of wakeup from LLS or VLLS mode LLWU_P5 input was a source of wakeup from LLS or VLLS mode
4 WUF4
Wakeup Flag for LLWU_P3 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF3. 0 1 LLWU_P3 input was not a source of wakeup from LLS or VLLS mode LLWU_P3 input was a source of wakeup from LLS or VLLS mode
2 WUF2
Wakeup Flag for LLWU_P2 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF2. 0 1 LLWU_P2 input was not a source of wakeup from LLS or VLLS mode LLWU_P2 input was a source of wakeup from LLS or VLLS mode
1 WUF1
Wakeup Flag for LLWU_P1 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF1. 0 1 LLWU_P1 input was not a source of wakeup from LLS or VLLS mode LLWU_P1 input was a source of wakeup from LLS or VLLS mode
0 WUF0
Wakeup Flag for LLWU_P0 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF0. 0 1 LLWU_P0 input was not a source of wakeup from LLS or VLLS mode LLWU_P0 input was a source of wakeup from LLS or VLLS mode
WUF15 w1c 0
WUF14 w1c 0
WUF13 w1c 0
WUF12 w1c 0
WUF11 w1c 0
WUF10 w1c 0
WUF9 w1c 0
WUF8 w1c 0
Wakeup Flag for LLWU_P14 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF14. 0 1 LLWU_P14 input was not a source of wakeup from LLS or VLLS mode LLWU_P14 input was a source of wakeup from LLS or VLLS mode
5 WUF13
Wakeup Flag for LLWU_P13 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF13. 0 1 LLWU_P13 input was not a source of wakeup from LLS or VLLS mode LLWU_P13 input was a source of wakeup from LLS or VLLS mode
4 WUF12
Wakeup Flag for LLWU_P12 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF12. 0 1 LLWU_P12 input was not a source of wakeup from LLS or VLLS mode LLWU_P12 input was a source of wakeup from LLS or VLLS mode
3 WUF11
Wakeup Flag for LLWU_P11 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF11. 0 1 LLWU_P11 input was not a source of wakeup from LLS or VLLS mode LLWU_P11 input was a source of wakeup from LLS or VLLS mode
2 WUF10
Wakeup Flag for LLWU_P10 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF10. 0 1 LLWU_P10 input was not a source of wakeup from LLS or VLLS mode LLWU_P10 input was a source of wakeup from LLS or VLLS mode Table continues on the next page...
Wakeup Flag for LLWU_P8 Indicates that an enabled external wakeup pin was a source of exiting LLS or VLLS. To clear the flag write a one to WUF8. 0 1 LLWU_P8 input was not a source of wakeup from LLS or VLLS mode LLWU_P8 input was a source of wakeup from LLS or VLLS mode
MWUF7 w1c 0
MWUF6
MWUF5
MWUF4
MWUF3
MWUF2
MWUF1
MWUF0
Wakeup flag for module 6 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 6 input was not a source of wakeup from LLS or VLLS mode Module 6 input was a source of wakeup from LLS or VLLS mode
5 MWUF5
Wakeup flag for module 5 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 5 input was not a source of wakeup from LLS or VLLS mode Module 5 input was a source of wakeup from LLS or VLLS mode
4 MWUF4
Wakeup flag for module 4 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 4 input was not a source of wakeup from LLS or VLLS mode Module 4 input was a source of wakeup from LLS or VLLS mode
3 MWUF3
Wakeup flag for module 3 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 3 input was not a source of wakeup from LLS or VLLS mode Module 3 input was a source of wakeup from LLS or VLLS mode
2 MWUF2
Wakeup flag for module 2 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 2 input was not a source of wakeup from LLS or VLLS mode Module 2 input was a source of wakeup from LLS or VLLS mode
1 MWUF1
Wakeup flag for module 1 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 1 input was not a source of wakeup from LLS or VLLS mode Module 1 input was a source of wakeup from LLS or VLLS mode
0 MWUF0
Wakeup flag for module 0 Indicates that an enabled internal peripheral was a source of exiting LLS or VLLS. To clear the flag follow the internal peripheral flag clearing mechanism. 0 1 Module 0 input was not a source of wakeup from LLS or VLLS mode Module 0 input was a source of wakeup from LLS or VLLS mode
ACKISO w1c 0 0 0
0 1 0 0 1
FLTEP 0
FLTR 0
This read-only bitfield is reserved and always has the value zero. This bit is reserved. Digital Filter on External Pin Enables the digital filter for the external pin detect. 0 1 Filter not enabled Filter enabled
0 FLTR
Digital Filter on RESET Pin Enables the digital filter for the RESET pin during LLS and VLLS modes. 0 1 Filter not enabled Filter enabled
Functional description
An LLS reset event due to RESET pin assertion causes an exit via a system reset. State retention data is lost, the I/O states return to their reset state, and the ACKISO bit is not set. The MC_SRS[WAKEUP] and MC_SRS[PIN] bits are set and the system executes a reset flow before CPU operation begins with a reset vector fetch.
15.4.3 Initialization
Flags associated with external input pins (WUFx) are cleared upon entry into LLS or VLLS modes. For an enabled peripheral wakeup input, the peripheral flag should be cleared by the user before entering LLS or VLLS to avoid an immediate exit from LLS or VLLS.
Functional description
16.1.1 Features
The MCM includes these distinctive features: Program-visible information on the platform configuration and revision Control and counting logic for ETB almost full
ASC
AMC
SRAMLAP
SRAMUWP
SRAMLWP
SRAMUAP
Reserved[23:16]
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reserved[15:9]
W
Reserved
Reset
This read-only bit is reserved and always has the value zero. SRAM_U write protect When this bit is set, writes to SRAM_U array generates a bus error. SRAM_U arbitration priority Defines the arbitration scheme and priority for the processor and SRAM backdoor accesses to the SRAM_U array. 00 01 10 11 Round robin Special round robin (favors SRAM backoor accesses over the processor) Fixed priority. Processor has highest, backdoor has lowest Fixed priority. Backdoor has highest, processor has lowest
Reset
Bit R W
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
NMI w1c
IRQ w1c 0
Reset
Normal interrupt pending If ETBCC[RSPT] is set to 01b, this bit is set when the ETB counter expires. 0 1 No pending interrupt Due to the ETB counter expiring, a normal interrupt is pending
0 Reserved
This read-only bit is reserved and always has the value zero.
RLRQ 0
RSPT 0
ETDIS
ITDIS
ETM-to-TPIU disable Disables the trace path from ETM to TPIU 0 1 ETM-to-TPIU trace path enabled ETM-to-TPIU trace path disabled Table continues on the next page...
Response type 00 01 10 11 No response when the ETB count expires Generate a normal interrupt when the ETB count expires Generate an NMI when the ETB count expires Generate a debug halt when the ETB count expires
0 CNTEN
Counter enable Enables the ETB counter. 0 1 ETB counter disabled ETB counter enabled
RELOAD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
COUNTER
17.1.1 Features
The crossbar switch includes these distinctive features: Symmetric crossbar bus switch implementation Allows concurrent accesses from different masters to different slaves Slave arbitration attributes configured on a slave by slave basis 32 -bit wide and supports byte, 2 byte, 4 byte, and 16 byte burst transfers Operates at a 1-to-1 clock frequency with the bus masters Low-power park mode support
If the device contains less than five masters, values 000-011 are valid and writing other values results in an error. If the device contains n masters where n 5, values 0 to n-1 are valid and writing other values results in an error.
Addresses: AXBS_PRS0 4000_4000h base + 0h offset = 4000_4000h AXBS_PRS1 4000_4000h base + 100h offset = 4000_4100h AXBS_PRS2 4000_4000h base + 200h offset = 4000_4200h AXBS_PRS3 4000_4000h base + 300h offset = 4000_4300h AXBS_PRS4 4000_4000h base + 400h offset = 4000_4400h AXBS_PRS5 4000_4000h base + 500h offset = 4000_4500h AXBS_PRS6 4000_4000h base + 600h offset = 4000_4600h AXBS_PRS7 4000_4000h base + 700h offset = 4000_4700h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M7 1 1 1
M6 1 1 0
M5 1 0 1
M4 1 0 0
M3 0 1 1
M2 0 1 0
M1 0 0 1
M0 0 0 0
27 Reserved 2624 M6
This read-only bit is reserved and always has the value zero. Master 6 priority. Sets the arbitration priority for this port on the associated slave port. 000 001 010 011 100 101 110 111 This master has level 1 (highest) priority when accessing the slave port. This master has level 2 priority when accessing the slave port. This master has level 3 priority when accessing the slave port. This master has level 4 priority when accessing the slave port. This master has level 5 priority when accessing the slave port. This master has level 6 priority when accessing the slave port. This master has level 7 priority when accessing the slave port. This master has level 8 (lowest) priority when accessing the slave port. Table continues on the next page...
19 Reserved 1816 M4
This read-only bit is reserved and always has the value zero. Master 4 priority. Sets the arbitration priority for this port on the associated slave port. 000 001 010 011 100 101 110 111 This master has level 1 (highest) priority when accessing the slave port. This master has level 2 priority when accessing the slave port. This master has level 3 priority when accessing the slave port. This master has level 4 priority when accessing the slave port. This master has level 5 priority when accessing the slave port. This master has level 6 priority when accessing the slave port. This master has level 7 priority when accessing the slave port. This master has level 8 (lowest) priority when accessing the slave port.
15 Reserved 1412 M3
This read-only bit is reserved and always has the value zero. Master 3 priority. Sets the arbitration priority for this port on the associated slave port. 000 001 010 011 100 101 110 111 This master has level 1 (highest) priority when accessing the slave port. This master has level 2 priority when accessing the slave port. This master has level 3 priority when accessing the slave port. This master has level 4 priority when accessing the slave port. This master has level 5 priority when accessing the slave port. This master has level 6 priority when accessing the slave port. This master has level 7 priority when accessing the slave port. This master has level 8 (lowest) priority when accessing the slave port.
11 Reserved 108 M2
This read-only bit is reserved and always has the value zero. Master 2 priority. Sets the arbitration priority for this port on the associated slave port. 000 001 010 011 100 101 This master has level 1 (highest) priority when accessing the slave port. This master has level 2 priority when accessing the slave port. This master has level 3 priority when accessing the slave port. This master has level 4 priority when accessing the slave port. This master has level 5 priority when accessing the slave port. This master has level 6 priority when accessing the slave port. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Master 1 priority. Sets the arbitration priority for this port on the associated slave port. 000 001 010 011 100 101 110 111 This master has level 1 (highest) priority when accessing the slave port. This master has level 2 priority when accessing the slave port. This master has level 3 priority when accessing the slave port. This master has level 4 priority when accessing the slave port. This master has level 5 priority when accessing the slave port. This master has level 6 priority when accessing the slave port. This master has level 7 priority when accessing the slave port. This master has level 8 (lowest) priority when accessing the slave port.
3 Reserved 20 M0
This read-only bit is reserved and always has the value zero. Master 0 priority. Sets the arbitration priority for this port on the associated slave port. 000 001 010 011 100 101 110 111 This master has level 1 (highest) priority when accessing the slave port. This master has level 2 priority when accessing the slave port. This master has level 3 priority when accessing the slave port. This master has level 4 priority when accessing the slave port. This master has level 5 priority when accessing the slave port. This master has level 6 priority when accessing the slave port. This master has level 7 priority when accessing the slave port. This master has level 8 (lowest) priority when accessing the slave port.
Chapter 17 Crossbar Switch (AXBS) Addresses: AXBS_CRS0 4000_4000h base + 10h offset = 4000_4010h AXBS_CRS1 4000_4000h base + 110h offset = 4000_4110h AXBS_CRS2 4000_4000h base + 210h offset = 4000_4210h AXBS_CRS3 4000_4000h base + 310h offset = 4000_4310h AXBS_CRS4 4000_4000h base + 410h offset = 4000_4410h AXBS_CRS5 4000_4000h base + 510h offset = 4000_4510h AXBS_CRS6 4000_4000h base + 610h offset = 4000_4610h AXBS_CRS7 4000_4000h base + 710h offset = 4000_4710h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
W Reset
ARB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PCTL
HLP
0 PARK 0 0 0 0 0
RO 0
Halt low priority Sets the initial arbitration priority for low power mode requests. Setting this bit will not effect the request for low power mode from attaining highest priority once it has control of the slave ports. 0 1 The low power mode request has the highest priority for arbitration on this slave port The low power mode request has the lowest initial priority for arbitration on this slave port
This read-only bitfield is reserved and always has the value zero. Arbitration mode Selects the arbitration policy for the slave port. 00 01 10 11 Fixed priority Round-robin (rotating) priority Reserved Reserved
76 Reserved 54 PCTL
This read-only bitfield is reserved and always has the value zero. Parking control Determines the slave ports parking control. The low-power park feature results in an overall power savings if the slave port is not saturated; however, this forces an extra latency clock when any master tries to access the slave port while not in use because it is not parked on any master. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Park Determines which master port the current slave port parks on when no masters are actively making requests and the PCTL bits are cleared. NOTE: Only select master ports that are actually present on the device. If not, undefined behavior may occur. 000 001 010 011 100 101 110 111 Park on master port M0 Park on master port M1 Park on master port M2 Reserved Park on master port M4 Park on master port M5 Reserved Reserved
Chapter 17 Crossbar Switch (AXBS) Addresses: AXBS_MGPCR0 4000_4000h base + 800h offset = 4000_4800h AXBS_MGPCR1 4000_4000h base + 900h offset = 4000_4900h AXBS_MGPCR2 4000_4000h base + A00h offset = 4000_4A00h AXBS_MGPCR3 4000_4000h base + B00h offset = 4000_4B00h AXBS_MGPCR4 4000_4000h base + C00h offset = 4000_4C00h AXBS_MGPCR5 4000_4000h base + D00h offset = 4000_4D00h AXBS_MGPCR6 4000_4000h base + E00h offset = 4000_4E00h AXBS_MGPCR7 4000_4000h base + F00h offset = 4000_4F00h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
AULB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Functional Description
port, the requesting master simply sees wait states inserted until the targeted slave port can service the master's request. The latency in servicing the request depends on each master's priority level and the responding peripheral's access time. Since the crossbar switch appears to be just another slave to the master device, the master device has no knowledge of whether it actually owns the slave port it is targeting. While the master does not have control of the slave port it is targeting, it simply enters a wait state. A master is given control of the targeted slave port only after a previous access to a different slave port completes, regardless of its priority on the newly targeted slave port. This prevents deadlock from occurring when: A higher priority master has: An outstanding request to one slave port that has a long response time and A pending access to a different slave port, and A lower priority master is also making a request to the same slave port as the pending access of the higher priority master. After the master has control of the slave port it is targeting, the master remains in control of that slave port until it gives up the slave port by running an IDLE cycle or by leaving that slave port for its next access. The master could also lose control of the slave port if another higher priority master makes a request to the slave port; however, if the master is running a fixed-length burst transfer it retains control of the slave port until that transfer completes. Based on the MGPCR[AULB] bit the master either retains control of the slave port when doing undefined length incrementing burst transfers or loses the bus to a higher priority master. The crossbar terminates all master IDLE transfers (as opposed to allowing the termination to come from one of the slave busses). Additionally, when no master is requesting access to a slave port the crossbar drives IDLE transfers onto the slave bus, even though a default master may be granted access to the slave port. When a slave bus is being IDLEd by the crossbar it can park the slave port on the master port indicated by the SGPCR[PARK] . This is done in an attempt to save the initial clock of arbitration delay that otherwise would be seen if the master had to arbitrate to gain control of the slave port. The slave port can also be put into low power park mode in attempt to save power, by using CRSn[PCTL].
17.3.3 Arbitration
The crossbar switch supports two arbitration schemes: a simple fixed-priority comparison algorithm and a simple round-robin fairness algorithm. The arbitration scheme is independently programmable for each slave port.
Functional Description
Assume the master again loses control of the slave port on the fifth beat of the third (now continued) burst (10th beat of the second burst from the master's perspective). After the master regains control of the slave port, it is allowed to complete its final two beats of its burst without facing arbitration. The following figure illustrates the example:
MGPCR[AULB] Lost control Lost control No arbitration Arbitration allowed No arbitration No arbitration
Master-to-slave transfer
1 beat 1 beat
10
11
12
12 beat burst
Note Fixed-length burst accesses are not affected by the AULB bits. All fixed-length burst accesses lock out arbitration until the last beat of the fixed-length burst.
If the new requesting master's priority level is lower than the master that currently has control of the slave port, the new requesting master is forced to wait until the current master runs one of the following cycles: An IDLE cycle A non-IDLE cycle to a location other than the current slave port.
Initialization/Application Information
18.2 Overview
The MPU concurrently monitors all system bus transactions and evaluates their appropriateness using pre-programmed region descriptors that define memory spaces and their access rights. Memory references that have sufficient access control rights are allowed to complete, while references that are not mapped to any region descriptor or have insufficient rights are terminated with a protection error response.
Overview
Slave Port n Address Phase Signals Access Evaluation Macro Access Evaluation Macro
Region Descriptor 0
Region Descriptor 1
Region Descriptor x
Mux
18.2.2 Features
The MPU implements a two-dimensional hardware array of memory region descriptors and the crossbar slave ports to continuously monitor the legality of every memory reference generated by each bus master in the system. The feature set includes: 12 program-visible 128-bit region descriptors, accessible by four 32-bit words each Each region descriptor defines a modulo-32 byte space, aligned anywhere in memory Region sizes can vary from 32 bytes to 4 Gbytes Two access control permissions defined in a single descriptor word Masters 03: read, write, and execute attributes for supervisor and user accesses Masters 47: read and write attributes
Hardware-assisted maintenance of the descriptor valid bit minimizes coherency issues Alternate programming model view of the access control permissions word Priority given to granting permission over denying access for overlapping region descriptors Detects access protection errors if a memory reference does not hit in any memory region, or if the reference is illegal in all hit memory regions. If an access error occurs, the reference is terminated with an error response, and the MPU inhibits the bus cycle being sent to the targeted slave device. 5 slave ports Error registers (per slave port) capture the last faulting address, attributes, and other information Global MPU enable/disable control bit
4000_D4AC Region Descriptor n, Word 3 (MPU_RGD10_WORD3) 4000_D4B0 4000_D4B4 4000_D4B8 Region Descriptor n, Word 0 (MPU_RGD11_WORD0) Region Descriptor n, Word 1 (MPU_RGD11_WORD1) Region Descriptor n, Word 2 (MPU_RGD11_WORD2)
4000_D4BC Region Descriptor n, Word 3 (MPU_RGD11_WORD3) 4000_D800 4000_D804 4000_D808 4000_D80C 4000_D810 Region Descriptor Alternate Access Control n (MPU_RGDAAC0) Region Descriptor Alternate Access Control n (MPU_RGDAAC1) Region Descriptor Alternate Access Control n (MPU_RGDAAC2) Region Descriptor Alternate Access Control n (MPU_RGDAAC3) Region Descriptor Alternate Access Control n (MPU_RGDAAC4)
w1c 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0
VLD 1
SPERR
HRL
NSP
NRGD
This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value one. This read-only bitfield is reserved and always has the value zero. Hardware revision level Specifies the MPUs hardware and definition revision level. It can be read by software to determine the functional definition of the module. Number of slave ports Specifies the number of slave ports connected to the MPU. Number of region descriptors Indicates the number of region descriptors implemented in the MPU. 0000 0001 0010 8 region descriptors 12 region descriptors 16 region descriptors
71 Reserved 0 VLD
This read-only bitfield is reserved and always has the value zero. Valid (global enable/disable for the MPU) 0 1 MPU is disabled. All accesses from all bus masters are allowed. MPU is enabled
Memory Map/Register Definition Addresses: MPU_EAR0 4000_D000h base + 10h offset = 4000_D010h MPU_EAR1 4000_D000h base + 18h offset = 4000_D018h MPU_EAR2 4000_D000h base + 20h offset = 4000_D020h MPU_EAR3 4000_D000h base + 28h offset = 4000_D028h MPU_EAR4 4000_D000h base + 30h offset = 4000_D030h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EADDR
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Chapter 18 Memory Protection Unit (MPU) Addresses: MPU_EDR0 4000_D000h base + 14h offset = 4000_D014h MPU_EDR1 4000_D000h base + 1Ch offset = 4000_D01Ch MPU_EDR2 4000_D000h base + 24h offset = 4000_D024h MPU_EDR3 4000_D000h base + 2Ch offset = 4000_D02Ch MPU_EDR4 4000_D000h base + 34h offset = 4000_D034h
Bit R W 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
EACD
Reset
Bit R W
x*
15
x*
14
x*
13
x*
12
x*
11
x*
10
x*
9
x*
8
x*
7
x*
6
x*
5
x*
4
x*
3
x*
2
x*
1
x*
0
EMN
EATTR
ERW
Reset
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
Error read/write Indicates the access type of the faulting reference. 0 1 Read Write
SRTADDR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ENDADDR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
Reserved
Reserved
Reserved
M7WE
M6WE
M5WE
M4WE
M7RE
M6RE
M5RE
M4RE
M3SM
M3UM
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reserved
M2UM
M1SM
M1UM
Reserved
M0SM
M0UM
Reset
Bus master 7 write enable 0 1 Bus master 7 writes terminate with an access error and the write is not performed Bus master 7 writes allowed
29 M6RE
Bus master 6 read enable. 0 1 Bus master 6 reads terminate with an access error and the read is not performed Bus master 6 reads allowed
28 M6WE
Bus master 6 write enable 0 1 Bus master 6 writes terminate with an access error and the write is not performed Bus master 6 writes allowed
27 M5RE
Bus master 5 read enable. 0 1 Bus master 5 reads terminate with an access error and the read is not performed Bus master 5 reads allowed
26 M5WE
Bus master 5 write enable 0 1 Bus master 5 writes terminate with an access error and the write is not performed Bus master 5 writes allowed
25 M4RE
Bus master 4 read enable. 0 1 Bus master 4 reads terminate with an access error and the read is not performed Bus master 4 reads allowed
24 M4WE
Bus master 4 write enable 0 1 Bus master 4 writes terminate with an access error and the write is not performed Bus master 4 writes allowed
This bit is reserved. This bit must be written with a zero. Bus master 3 supervisor mode access control Defines the access controls for bus master 3 in supervisor mode 00 01 10 11 r/w/x; read, write and execute allowed r/x; read and execute allowed, but no write r/w; read and write allowed, but no execute Same as user mode defined in M3UM
2018 M3UM
Bus master 3 user mode access control Defines the access controls for bus master 3 in user mode. M3UM consists of three independent bits, enabling read (r), write (w), and execute (x) permissions. 0 1 An attempted access of that mode may be terminated with an access error (if not allowed by another descriptor) and the access not performed. Allows the given access type to occur Table continues on the next page...
VLD 0
Reserved
Reserved
M7WE
M6WE
M5WE
M4WE
M7RE
M6RE
M5RE
M4RE
M3SM
M3UM
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reserved
M2UM
M1SM
M1UM
Reserved
M0SM
M0UM
Reset
30 M7WE
Bus master 7 write enable 0 1 Bus master 7 writes terminate with an access error and the write is not performed Bus master 7 writes allowed
29 M6RE
Bus master 6 read enable. 0 1 Bus master 6 reads terminate with an access error and the read is not performed Bus master 6 reads allowed Table continues on the next page...
27 M5RE
Bus master 5 read enable. 0 1 Bus master 5 reads terminate with an access error and the read is not performed Bus master 5 reads allowed
26 M5WE
Bus master 5 write enable 0 1 Bus master 5 writes terminate with an access error and the write is not performed Bus master 5 writes allowed
25 M4RE
Bus master 4 read enable. 0 1 Bus master 4 reads terminate with an access error and the read is not performed Bus master 4 reads allowed
24 M4WE
Bus master 4 write enable 0 1 Bus master 4 writes terminate with an access error and the write is not performed Bus master 4 writes allowed
This bit is reserved. This bit must be written with a zero. Bus master 3 supervisor mode access control Defines the access controls for bus master 3 in supervisor mode 00 01 10 11 r/w/x; read, write and execute allowed r/x; read and execute allowed, but no write r/w; read and write allowed, but no execute Same as user mode defined in M3UM
2018 M3UM
Bus master 3 user mode access control Defines the access controls for bus master 3 in user mode. M3UM consists of three independent bits, enabling read (r), write (w), and execute (x) permissions. 0 1 An attempted access of that mode may be terminated with an access error (if not allowed by another descriptor) and the access not performed. Allows the given access type to occur
This bit is reserved. This bit must be written with a zero. Bus master 2 supervisor mode access control See M3SM description. Bus master 2 user mode access control See M3UM description. This bit is reserved. This bit must be written with a zero. Table continues on the next page...
Functional Description
error
where addr is the current reference address, RGDn_Word0[SRTADDR] and RGDn_Word0[ENDADDR] are the start and end addresses, and RGDn_Word3[VLD] is the valid bit. NOTE The MPU does not verify that ENDADDR SRTADDR.
Functional Description
Data read
Data write
Application Information
a data movement bus master may respond with an error interrupt. The processor can retrieve the captured error address and detail information simply by reading E{A,D}Rn. CESR[SPERR] signals which error registers contain captured fault data. Overlapping region descriptorsApplying overlapping regions often reduces the number of descriptors required for a given set of access controls. In the overlapping memory space, the protection rights of the corresponding region descriptors are logically summed together (the boolean OR operator). The following dual-core system example contains four bus masters: the two processors (CP0, CP1) and two DMA engines (DMA1, a traditional data movement engine transferring data between RAM and peripherals and DMA2, a second engine transferring data to/from the RAM only). Consider the following region descriptor assignments:
Table 18-81. Overlapping Region Descriptor Example
Region Description CP0 code CP1 code CP0 data & stack CP0 CP1 shared data CP1 CP0 shared data CP1 data & stack Shared DMA data MPU Peripherals 2 4 4 5 6 7 RGDn 0 1 2 3 CP0 rwx r-rwr- rwrwrwCP1 r-rwx r-rwrwrwrwDMA1 rw rw DMA2 rw Peripheral space Flash
RAM
In this example, there are eight descriptors used to span nine regions in the three main spaces of the system memory map (flash, RAM, and peripheral space). Each region indicates the specific permissions for each of the four bus masters and this definition provides an appropriate set of shared, private and executable memory spaces. Of particular interest are the two overlapping spaces: region descriptors 2 & 3 and 3 & 4. The space defined by RGD2 with no overlap is a private data and stack area that provides read/write access to CP0 only. The overlapping space between RGD2 and RGD3 defines a shared data space for passing data from CP0 to CP1 and the access controls are defined by the logical OR of the two region descriptors. Thus, CP0 has (rw- | r--) = (rw-) permissions, while CP1 has (--- | r--) = (r--) permission in this space. Both DMA engines are excluded from this shared processor data region. The overlapping spaces between RGD3 and RGD4 defines another shared data space, this one for passing data from CP1
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
418 Freescale Semiconductor, Inc.
to CP0. For this overlapping space, CP0 has (r-- | ---) = (r--) permission, while CP1 has (rw- | r--) = (rw-) permission. The non-overlapped space of RGD4 defines a private data and stack area for CP1 only. The space defined by RGD5 is a shared data region, accessible by all four bus masters. Finally, the slave peripheral space mapped onto the IPS bus is partitioned into two regions: one containing the MPU's programming model accessible only to the two processor cores and the remaining peripheral region accessible to both processors and the traditional DMA1 master. This simple example is intended to show one possible application of the capabilities of the MPU in a typical system.
Application Information
19.1.1 Features
Key features of the AIPS-Lite are: Direct support for up to 128 peripherals Support for 8-, 16-, and 32-bit width peripheral slots Each independently configurable peripheral includes a clock enable, which allows peripherals to operate at any speed less than the system clock rate. Programming model provides memory protection functionality
The register maps of the peripherals are located on 4 KB boundaries. Each peripheral is allocated one 4 KB block of the memory map. The AIPS-Lite memory map is shown in the following table.
Addresses
AIPS-Lite Base + 0x000_0000 - 0x000_0FFF AIPS-Lite Base + 0x000_1000 - 0x000_1FFF ... AIPS-Lite Base + 0x007_F000 - 0x007_FFFF
Description
Module #0 Module #1 ... Module #127
Accesses to registers or register fields which correspond to master or peripheral locations which are not implemented return zeros on reads, and are ignored on writes. Each master is assigned depending on its connection to the crossbar switch master ports. See your device-specific Chip Configuration details for information about the master assignments to these registers.
Addresses: AIPS0_MPRA 4000_0000h base + 0h offset = 4000_0000h AIPS1_MPRA 4008_0000h base + 0h offset = 4008_0000h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MTW0
MTW1
MTW2
MTW4
MTW5
MPL0
MPL1
MPL2
MPL4
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Master trusted for writes Determines whether the master is trusted for write accesses. 0 1 This master is not trusted for write accesses. This master is trusted for write accesses.
28 MPL0
Master privilege level Specifies how the privilege level of the master is determined. 0 1 Accesses from this master are forced to user-mode. Accesses from this master are not forced to user-mode.
27 Reserved 26 MTR1
This read-only bit is reserved and always has the value zero. Master trusted for read Determines whether the master is trusted for read accesses. 0 1 This master is not trusted for read accesses. This master is trusted for read accesses. Table continues on the next page...
MPL5
MTR0
MTR1
MTR2
MTR4
MTR5
Master privilege level Specifies how the privilege level of the master is determined. 0 1 Accesses from this master are forced to user-mode. Accesses from this master are not forced to user-mode.
23 Reserved 22 MTR2
This read-only bit is reserved and always has the value zero. Master trusted for read Determines whether the master is trusted for read accesses. 0 1 This master is not trusted for read accesses. This master is trusted for read accesses.
21 MTW2
Master trusted for writes Determines whether the master is trusted for write accesses. 0 1 This master is not trusted for write accesses. This master is trusted for write accesses.
20 MPL2
Master privilege level Specifies how the privilege level of the master is determined. 0 1 Accesses from this master are forced to user-mode. Accesses from this master are not forced to user-mode.
This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Master trusted for read Determines whether the master is trusted for read accesses. 0 1 This master is not trusted for read accesses. This master is trusted for read accesses.
13 MTW4
Master trusted for writes Determines whether the master is trusted for write accesses. 0 1 This master is not trusted for write accesses. This master is trusted for write accesses. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Master trusted for read Determines whether the master is trusted for read accesses. 0 1 This master is not trusted for read accesses. This master is trusted for read accesses.
9 MTW5
Master trusted for writes Determines whether the master is trusted for write accesses. 0 1 This master is not trusted for write accesses. This master is trusted for write accesses.
8 MPL5
Master privilege level Specifies how the privilege level of the master is determined. 0 1 Accesses from this master are forced to user-mode. Accesses from this master are not forced to user-mode.
74 Reserved 30 Reserved
This read-only bitfield is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero.
NOTE The reset value of the PACRA-D registers is 0x4444_4444. The reset value of the PACRE-P depends on your device's configuration. The following table shows the top-level structure of the PACR registers.
Offset 0x20 0x24 0x28 0x2C 0x30 0x34 0x38 0x3C 0x40 0x44 0x48 0x4C 0x50 0x54 0x58 0x5C Register PACRA PACRB PACRC PACRD PACRE PACRF PACRG PACRH PACRI PACRJ PACRK PACRL PACRM PACRN PACRO PACRP [31:28] PACR0 PACR8 PACR16 PACR24 PACR32 PACR40 PACR48 PACR56 PACR64 PACR72 PACR80 PACR88 PACR96 PACR104 PACR112 PACR120 [27:24] PACR1 PACR9 PACR17 PACR25 PACR33 PACR41 PACR49 PACR57 PACR65 PACR73 PACR81 PACR89 PACR97 PACR105 PACR113 PACR121 [23:20] PACR2 PACR10 PACR18 PACR26 PACR34 PACR42 PACR50 PACR58 PACR66 PACR74 PACR82 PACR90 PACR98 PACR106 PACR114 PACR122 [19:16] PACR3 PACR11 PACR19 PACR27 PACR35 PACR43 PACR51 PACR59 PACR67 PACR75 PACR83 PACR91 PACR99 PACR107 PACR115 PACR123 [15:12] PACR4 PACR12 PACR20 PACR28 PACR36 PACR44 PACR52 PACR60 PACR68 PACR76 PACR84 PACR92 PACR100 PACR108 PACR116 PACR124 [11:8] PACR5 PACR13 PACR21 PACR29 PACR37 PACR45 PACR53 PACR61 PACR69 PACR77 PACR85 PACR93 PACR101 PACR109 PACR117 PACR125 [7:4] PACR6 PACR14 PACR22 PACR30 PACR38 PACR46 PACR54 PACR62 PACR70 PACR78 PACR86 PACR94 PACR102 PACR110 PACR118 PACR126 [3:0] PACR7 PACR15 PACR23 PACR31 PACR39 PACR47 PACR55 PACR63 PACR71 PACR79 PACR87 PACR95 PACR103 PACR111 PACR119 PACR127
WP0
WP1
WP2
WP3
WP4
WP5
WP6
WP7
SP0
SP1
SP2
SP3
SP4
SP5
SP6
SP7
TP0
TP1
TP2
TP3
TP4
TP5
TP6
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
TP7
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
28 TP0
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates. 0 1 Accesses from an untrusted master are allowed. Accesses from an untrusted master are not allowed.
27 Reserved 26 SP1
This read-only bit is reserved and always has the value zero. Supervisor protect Determines whether the peripheral requires supervisor privilege level for access. When this bit is set, the master privilege level must indicate the supervisor access attribute , and the MPROTn[MPL] control bit for the master must be set. If not, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral does not require supervisor privilege level for accesses. This peripheral requires supervisor privilege level for accesses.
25 WP1
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
24 TP1
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates. 0 1 Accesses from an untrusted master are allowed. Accesses from an untrusted master are not allowed.
23 Reserved
This read-only bit is reserved and always has the value zero. Table continues on the next page...
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
20 TP2
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates. 0 1 Accesses from an untrusted master are allowed. Accesses from an untrusted master are not allowed.
19 Reserved 18 SP3
This read-only bit is reserved and always has the value zero. Supervisor protect Determines whether the peripheral requires supervisor privilege level for access. When this bit is set, the master privilege level must indicate the supervisor access attribute , and the MPROTn[MPL] control bit for the master must be set. If not, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral does not require supervisor privilege level for accesses. This peripheral requires supervisor privilege level for accesses.
17 WP3
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
16 TP3
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates. 0 1 Accesses from an untrusted master are allowed. Accesses from an untrusted master are not allowed. Table continues on the next page...
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
12 TP4
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates. 0 1 Accesses from an untrusted master are allowed. Accesses from an untrusted master are not allowed.
11 Reserved 10 SP5
This read-only bit is reserved and always has the value zero. Supervisor protect Determines whether the peripheral requires supervisor privilege level for access. When this bit is set, the master privilege level must indicate the supervisor access attribute , and the MPROTn[MPL] control bit for the master must be set. If not, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral does not require supervisor privilege level for accesses. This peripheral requires supervisor privilege level for accesses.
9 WP5
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
8 TP5
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Supervisor protect Determines whether the peripheral requires supervisor privilege level for access. When this bit is set, the master privilege level must indicate the supervisor access attribute , and the MPROTn[MPL] control bit for the master must be set. If not, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral does not require supervisor privilege level for accesses. This peripheral requires supervisor privilege level for accesses.
5 WP6
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
4 TP6
Trusted protect Determines whether the peripheral allows accesses from an untrusted master. When this bit is set and an access is attempted by an untrusted master, the access terminates with an error response and no peripheral access initiates . 0 1 Accesses from an untrusted master are allowed. Accesses from an untrusted master are not allowed.
3 Reserved 2 SP7
This read-only bit is reserved and always has the value zero. Supervisor protect Determines whether the peripheral requires supervisor privilege level for access. When this bit is set, the master privilege level must indicate the supervisor access attribute , and the MPROTn[MPL] control bit for the master must be set. If not, access terminates with an error response and no peripheral access initiates . 0 1 This peripheral does not require supervisor privilege level for accesses. This peripheral requires supervisor privilege level for accesses.
1 WP7
Write protect Determines whether the peripheral allows write accesss. When this bit is set and a write access is attempted, access terminates with an error response and no peripheral access initiates. 0 1 This peripheral allows write accesses. This peripheral is write protected.
0 TP7
Functional Description
DMAMUX
Source #x Always #1
Always #y Trigger #1
20.1.2 Features
The DMA channel MUX provides these features: 52 peripheral slots + 10 always-on slots can be routed to 16 channels. 16 independently selectable DMA channel routers. The first 4 channels additionally provide a trigger functionality. Each channel router can be assigned to one of the 52 possible peripheral DMA slots or to one of the 10 always-on slots.
Functional description
NOTE Setting multiple CHCFG registers with the same Source value will result in unpredictable behavior. NOTE Before changing the trigger or source settings a DMA channel must be disabled via the CHCFGn[ENBL] bit.
Addresses: 4002_1000h base + 0h offset + (1d n), where n = 0d to 15d
Bit 7 6 5 4 3 2 1 0
ENBL 0
TRIG 0 0 0 0
SOURCE 0 0 0
1 6 TRIG
DMA Channel Trigger Enable Enables the periodic trigger capability for the triggered DMA channel 0 1 Triggering is disabled. If triggering is disabled, and the ENBL bit is set, the DMA Channel will simply route the specified source to the DMA channel. (normal mode) Triggering is enabled. If triggering is enabled, and the ENBL bit is set, the DMAMUX is in periodic trigger mode.
50 SOURCE
DMA Channel Source (slot) Specifies which DMA source, if any, is routed to a particular DMA channel. Please check your device's Chip Configuration details for further details about the peripherals and their slot numbers.
The primary purpose of the DMA MUX is to provide flexibility in the system's use of the available DMA channels. As such, configuration of the DMA MUX is intended to be a static procedure done during execution of the system boot code. However, if the procedure outlined in Enabling and configuring sources is followed, the configuration of the DMA MUX may be changed during the normal operation of the system. Functionally, the DMA MUX channels may be divided into two classes: Channels, which implement the normal routing functionality plus periodic triggering capability, and channels, which implement only the normal routing functionality.
Functional description
Always #y
The DMA channel triggering capability allows the system to "schedule" regular DMA transfers, usually on the transmit side of certain peripherals, without the intervention of the processor. This trigger works by gating the request from the peripheral to the DMA until a trigger event has been seen. This is illustrated in the following figure.
Peripheral Request
Once the DMA request has been serviced, the peripheral will negate its request, effectively resetting the gating mechanism until the peripheral re-asserts its request AND the next trigger event is seen. This means that if a trigger is seen, but the peripheral is not requesting a transfer, that triggered will be ignored. This situation is illustrated in the following figure.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
438 Freescale Semiconductor, Inc.
Peripheral Request
This triggering capability may be used with any peripheral that supports DMA transfers, and is most useful for two types of situations: Periodically polling external devices on a particular bus. As an example, the transmit side of an SPI is assigned to a DMA channel with a trigger, as described above. Once setup, the SPI will request DMA transfers (presumably from memory) as long as its transmit buffer is empty. By using a trigger on this channel, the SPI transfers can be automatically performed every 5s (as an example). On the receive side of the SPI, the SPI and DMA can be configured to transfer receive data into memory, effectively implementing a method to periodically read data from external devices and transfer the results into memory without processor intervention. Using the GPIO ports to drive or sample waveforms. By configuring the DMA to transfer data to one or more GPIO ports, it is possible to create complex waveforms using tabular data stored in on-chip memory. Conversely, using the DMA to periodically transfer data from one or more GPIO ports, it is possible to sample complex waveforms and store the results in tabular form in on-chip memory. A more detailed description of the capability of each trigger (which includes resolution, range of values, etc.) may be found in the Periodic Interrupt Timer chapter.
Functional description
be continuous (DMA triggering is disabled) or can use the DMA triggering capability. In this manner, it is possible to execute periodic transfers of packets of data from one source to another, without processor intervention.
20.5.1 Reset
The reset state of each individual bit is shown in Register descriptions. In summary, after reset, all channels are disabled and must be explicitly enabled before use.
Initialization/application information volatile volatile volatile volatile volatile volatile volatile volatile volatile volatile volatile volatile unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned char char char char char char char char char char char char *CHCONFIG4 = *CHCONFIG5 = *CHCONFIG6 = *CHCONFIG7 = *CHCONFIG8 = *CHCONFIG9 = *CHCONFIG10= *CHCONFIG11= *CHCONFIG12= *CHCONFIG13= *CHCONFIG14= *CHCONFIG15= (volatile (volatile (volatile (volatile (volatile (volatile (volatile (volatile (volatile (volatile (volatile (volatile unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned char char char char char char char char char char char char *) *) *) *) *) *) *) *) *) *) *) *) (DMAMUX_BASE_ADDR+0x0004); (DMAMUX_BASE_ADDR+0x0005); (DMAMUX_BASE_ADDR+0x0006); (DMAMUX_BASE_ADDR+0x0007); (DMAMUX_BASE_ADDR+0x0008); (DMAMUX_BASE_ADDR+0x0009); (DMAMUX_BASE_ADDR+0x000A); (DMAMUX_BASE_ADDR+0x000B); (DMAMUX_BASE_ADDR+0x000C); (DMAMUX_BASE_ADDR+0x000D); (DMAMUX_BASE_ADDR+0x000E); (DMAMUX_BASE_ADDR+0x000F);
Enabling a source without periodic triggering 1. Determine with which DMA channel the source will be associated. Note that only the first 4 DMA channels have periodic triggering capability 2. Clear the CHCFG[ENBL] and CHCFG[TRIG] bits of the DMA channel 3. Ensure that the DMA channel is properly configured in the DMA. The DMA channel may be enabled at this point 4. Select the source to be routed to the DMA channel. Write to the corresponding CHCFG register, ensuring that the CHCFG[ENBL] is set while the CHCFG[TRIG] bit is cleared Configure source #5 Transmit for use with DMA channel 2, with no periodic triggering capability. 1. Write 0x00 to CHCFG2 (base address + 0x02) 2. Configure channel 2 in the DMA, including enabling the channel 3. Write 0x85 to CHCFG2 (base address + 0x02) The following code example illustrates steps #1 and #3 above:
In File registers.h: #define DMAMUX_BASE_ADDR 0xFC084000/* Example only /* Following example assumes char is 8-bits */ volatile unsigned char *CHCONFIG0 = (volatile unsigned volatile unsigned char *CHCONFIG1 = (volatile unsigned volatile unsigned char *CHCONFIG2 = (volatile unsigned volatile unsigned char *CHCONFIG3 = (volatile unsigned volatile unsigned char *CHCONFIG4 = (volatile unsigned volatile unsigned char *CHCONFIG5 = (volatile unsigned volatile unsigned char *CHCONFIG6 = (volatile unsigned volatile unsigned char *CHCONFIG7 = (volatile unsigned volatile unsigned char *CHCONFIG8 = (volatile unsigned volatile unsigned char *CHCONFIG9 = (volatile unsigned volatile unsigned char *CHCONFIG10= (volatile unsigned volatile unsigned char *CHCONFIG11= (volatile unsigned volatile unsigned char *CHCONFIG12= (volatile unsigned volatile unsigned char *CHCONFIG13= (volatile unsigned volatile unsigned char *CHCONFIG14= (volatile unsigned volatile unsigned char *CHCONFIG15= (volatile unsigned In File main.c: ! */ char char char char char char char char char char char char char char char char *) *) *) *) *) *) *) *) *) *) *) *) *) *) *) *) (DMAMUX_BASE_ADDR+0x0000); (DMAMUX_BASE_ADDR+0x0001); (DMAMUX_BASE_ADDR+0x0002); (DMAMUX_BASE_ADDR+0x0003); (DMAMUX_BASE_ADDR+0x0004); (DMAMUX_BASE_ADDR+0x0005); (DMAMUX_BASE_ADDR+0x0006); (DMAMUX_BASE_ADDR+0x0007); (DMAMUX_BASE_ADDR+0x0008); (DMAMUX_BASE_ADDR+0x0009); (DMAMUX_BASE_ADDR+0x000A); (DMAMUX_BASE_ADDR+0x000B); (DMAMUX_BASE_ADDR+0x000C); (DMAMUX_BASE_ADDR+0x000D); (DMAMUX_BASE_ADDR+0x000E); (DMAMUX_BASE_ADDR+0x000F);
Chapter 20 Direct memory access multiplexer (DMAMUX) #include "registers.h" : : *CHCONFIG2 = 0x00; *CHCONFIG2 = 0x85;
Disabling a source A particular DMA source may be disabled by not writing the corresponding source value into any of the CHCFG registers. Additionally, some module specific configuration may be necessary. Please refer to the appropriate section for more details. Switching the source of a DMA channel 1. Disable the DMA channel in the DMA and re-configure the channel for the new source 2. Clear the CHCFG[ENBL] and CHCFG[TRIG] bits of the DMA channel 3. Select the source to be routed to the DMA channel. Write to the corresponding CHCFG register, ensuring that the CHCFG[ENBL] and CHCFG[TRIG] bits are set Switch DMA channel 8 from source #5 transmit to source #7 transmit 1. In the DMA configuration registers, disable DMA channel 8 and re-configure it to handle the transfers to peripheral slot 7. This example assumes channel 8 doesn't have triggering capability 2. Write 0x00 to CHCFG8 (base address + 0x08) 3. Write 0x87 to CHCFG8 (base address + 0x08). (In this example, setting the CHCFG[TRIG] bit would have no effect, due to the assumption that channels 8 does not support the periodic triggering functionality). The following code example illustrates steps #2 and #3 above:
In File registers.h: #define DMAMUX_BASE_ADDR 0xFC084000/* Example only /* Following example assumes char is 8-bits */ volatile unsigned char *CHCONFIG0 = (volatile unsigned volatile unsigned char *CHCONFIG1 = (volatile unsigned volatile unsigned char *CHCONFIG2 = (volatile unsigned volatile unsigned char *CHCONFIG3 = (volatile unsigned volatile unsigned char *CHCONFIG4 = (volatile unsigned volatile unsigned char *CHCONFIG5 = (volatile unsigned volatile unsigned char *CHCONFIG6 = (volatile unsigned volatile unsigned char *CHCONFIG7 = (volatile unsigned volatile unsigned char *CHCONFIG8 = (volatile unsigned volatile unsigned char *CHCONFIG9 = (volatile unsigned volatile unsigned char *CHCONFIG10= (volatile unsigned volatile unsigned char *CHCONFIG11= (volatile unsigned volatile unsigned char *CHCONFIG12= (volatile unsigned volatile unsigned char *CHCONFIG13= (volatile unsigned volatile unsigned char *CHCONFIG14= (volatile unsigned volatile unsigned char *CHCONFIG15= (volatile unsigned In File main.c: #include "registers.h" : : *CHCONFIG8 = 0x00; *CHCONFIG8 = 0x87; ! */ char char char char char char char char char char char char char char char char *) *) *) *) *) *) *) *) *) *) *) *) *) *) *) *) (DMAMUX_BASE_ADDR+0x0000); (DMAMUX_BASE_ADDR+0x0001); (DMAMUX_BASE_ADDR+0x0002); (DMAMUX_BASE_ADDR+0x0003); (DMAMUX_BASE_ADDR+0x0004); (DMAMUX_BASE_ADDR+0x0005); (DMAMUX_BASE_ADDR+0x0006); (DMAMUX_BASE_ADDR+0x0007); (DMAMUX_BASE_ADDR+0x0008); (DMAMUX_BASE_ADDR+0x0009); (DMAMUX_BASE_ADDR+0x000A); (DMAMUX_BASE_ADDR+0x000B); (DMAMUX_BASE_ADDR+0x000C); (DMAMUX_BASE_ADDR+0x000D); (DMAMUX_BASE_ADDR+0x000E); (DMAMUX_BASE_ADDR+0x000F);
Initialization/application information
Introduction
eDMA
n-1
eDMA Engine
Read Data
Read Data
eDMA Done
21.1.2 Features
The eDMA is a highly-programmable data-transfer engine optimized to minimize the required intervention from the host processor. It is intended for use in applications where the data size to be transferred is statically known and not defined within the data packet itself. The eDMA module features: All data movement via dual-address transfers: read from source, write to destination Programmable source and destination addresses and transfer size, plus support for enhanced addressing modes 16 -channel implementation that performs complex data transfers with minimal intervention from a host processor
Internal data buffer, used as temporary storage to support 16-byte burst transfers Connections to the crossbar switch for bus mastering the data movement Transfer control descriptor (TCD) organized to support two-deep, nested transfer operations 32-byte TCD stored in local memory for each channel An inner data transfer loop defined by a minor byte transfer count An outer data transfer loop defined by a major iteration count Channel activation via one of three methods: Explicit software initiation Initiation via a channel-to-channel linking mechanism for continuous transfers Peripheral-paced hardware requests (one per channel) Fixed-priority and round-robin channel arbitration Channel completion reported via optional interrupt requests One interrupt per channel, optionally asserted at completion of major iteration count Optional error terminations per channel and logically summed together to form one error interrupt to the interrupt controller Optional support for scatter/gather DMA processing Support for complex data structures Support to cancel transfers via software Throughout this chapter, n is used to reference the channel number.
Reading reserved bits in a register return the value of zero and writes to reserved bits in a register are ignored. Reading or writing a reserved memory location generates a bus error.
DMA memory map
Absolute address (hex) 4000_8000 4000_8004 4000_800C 4000_8014 Register name Control Register (DMA_CR) Error Status Register (DMA_ES) Enable Request Register (DMA_ERQ) Enable Error Interrupt Register (DMA_EEI) Width Access (in bits) 32 32 32 32 R/W R R/W R/W W (always reads zero) W (always reads zero) W (always reads zero) W (always reads zero) W (always reads zero) W (always reads zero) W (always reads zero) W (always reads zero) R/W Reset value 0000_0000h 0000_0000h 0000_0000h 0000_0000h Section/ page 21.3.1/463 21.3.2/465 21.3.3/467 21.3.4/469
4000_8018
00h
21.3.8/471
4000_8019
00h
21.3.7/471
4000_801A
00h
21.3.6/472
4000_801B
00h
21.3.5/473
4000_801C
00h
21.3.12/ 474
4000_801D
00h
21.3.11/ 474
4000_801E
00h
21.3.10/ 475
4000_801F
00h
21.3.9/476
4000_8024
32
0000_0000h
21.3.13/ 477
Error Register (DMA_ERR) Hardware Request Status Register (DMA_HRS) Channel n Priority Register (DMA_DCHPRI3) Channel n Priority Register (DMA_DCHPRI2) Channel n Priority Register (DMA_DCHPRI1) Channel n Priority Register (DMA_DCHPRI0) Channel n Priority Register (DMA_DCHPRI7) Channel n Priority Register (DMA_DCHPRI6) Channel n Priority Register (DMA_DCHPRI5) Channel n Priority Register (DMA_DCHPRI4) Channel n Priority Register (DMA_DCHPRI11) Channel n Priority Register (DMA_DCHPRI10) Channel n Priority Register (DMA_DCHPRI9) Channel n Priority Register (DMA_DCHPRI8) Channel n Priority Register (DMA_DCHPRI15) Channel n Priority Register (DMA_DCHPRI14) Channel n Priority Register (DMA_DCHPRI13) Channel n Priority Register (DMA_DCHPRI12) TCD Source Address (DMA_TCD0_SADDR) TCD Signed Source Address Offset (DMA_TCD0_SOFF)
0000_0000h 0000_0000h 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0Xh 0000_000Xh 000Xh
TCD Transfer Attributes (DMA_TCD0_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD0_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD0_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD0_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD0_SLAST) TCD Destination Address (DMA_TCD0_DADDR) TCD Signed Destination Address Offset (DMA_TCD0_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD0_CITER_ELINKYES) DMA_TCD0_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD0_DLASTSGA) TCD Control and Status (DMA_TCD0_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD0_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD0_BITER_ELINKNO) TCD Source Address (DMA_TCD1_SADDR) TCD Signed Source Address Offset (DMA_TCD1_SOFF) TCD Transfer Attributes (DMA_TCD1_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD1_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD1_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD1_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD1_SLAST)
000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_901E
16
R/W
000Xh
4000_901E
16
R/W
000Xh
32 16 16 32 32 32 32
TCD Destination Address (DMA_TCD1_DADDR) TCD Signed Destination Address Offset (DMA_TCD1_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD1_CITER_ELINKYES) DMA_TCD1_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD1_DLASTSGA) TCD Control and Status (DMA_TCD1_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD1_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD1_BITER_ELINKNO) TCD Source Address (DMA_TCD2_SADDR) TCD Signed Source Address Offset (DMA_TCD2_SOFF) TCD Transfer Attributes (DMA_TCD2_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD2_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD2_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD2_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD2_SLAST) TCD Destination Address (DMA_TCD2_DADDR) TCD Signed Destination Address Offset (DMA_TCD2_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD2_CITER_ELINKYES) DMA_TCD2_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD2_DLASTSGA)
4000_903E
16
R/W
000Xh
4000_903E
16
R/W
000Xh
4000_9040 4000_9044 4000_9046 4000_9048 4000_9048 4000_9048 4000_904C 4000_9050 4000_9054 4000_9056 4000_9056 4000_9058
32 16 16 32 32 32 32 32 16 16 16 32
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh
TCD Control and Status (DMA_TCD2_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD2_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD2_BITER_ELINKNO) TCD Source Address (DMA_TCD3_SADDR) TCD Signed Source Address Offset (DMA_TCD3_SOFF) TCD Transfer Attributes (DMA_TCD3_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD3_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD3_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD3_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD3_SLAST) TCD Destination Address (DMA_TCD3_DADDR) TCD Signed Destination Address Offset (DMA_TCD3_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD3_CITER_ELINKYES) DMA_TCD3_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD3_DLASTSGA) TCD Control and Status (DMA_TCD3_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD3_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD3_BITER_ELINKNO) TCD Source Address (DMA_TCD4_SADDR)
000Xh
4000_905E
16
R/W
000Xh
4000_905E
16
R/W
000Xh
4000_9060 4000_9064 4000_9066 4000_9068 4000_9068 4000_9068 4000_906C 4000_9070 4000_9074 4000_9076 4000_9076 4000_9078 4000_907C
32 16 16 32 32 32 32 32 16 16 16 32 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_907E
16
R/W
000Xh
4000_907E
16
R/W
000Xh
4000_9080
32
R/W
0000_000Xh
TCD Signed Source Address Offset (DMA_TCD4_SOFF) TCD Transfer Attributes (DMA_TCD4_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD4_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD4_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD4_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD4_SLAST) TCD Destination Address (DMA_TCD4_DADDR) TCD Signed Destination Address Offset (DMA_TCD4_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD4_CITER_ELINKYES) DMA_TCD4_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD4_DLASTSGA) TCD Control and Status (DMA_TCD4_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD4_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD4_BITER_ELINKNO) TCD Source Address (DMA_TCD5_SADDR) TCD Signed Source Address Offset (DMA_TCD5_SOFF) TCD Transfer Attributes (DMA_TCD5_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD5_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD5_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD5_NBYTES_MLOFFYES)
000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_909E
16
R/W
000Xh
4000_909E
16
R/W
000Xh
32 16 16 32 32 32
4000_90BE
16
R/W
000Xh
4000_90BE
16
R/W
000Xh
4000_90C0 4000_90C4 4000_90C6 4000_90C8 4000_90C8 4000_90C8 4000_90CC 4000_90D0 4000_90D4 4000_90D6 4000_90D6
32 16 16 32 32 32 32 32 16 16 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh
0000_000Xh 000Xh
4000_90DE
16
R/W
000Xh
4000_90DE
16
R/W
000Xh
4000_90E0 4000_90E4 4000_90E6 4000_90E8 4000_90E8 4000_90E8 4000_90EC 4000_90F0 4000_90F4 4000_90F6 4000_90F6 4000_90F8 4000_90FC
32 16 16 32 32 32 32 32 16 16 16 32 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_90FE
16
R/W
000Xh
4000_90FE
16
R/W
000Xh
TCD Source Address (DMA_TCD8_SADDR) TCD Signed Source Address Offset (DMA_TCD8_SOFF) TCD Transfer Attributes (DMA_TCD8_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD8_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD8_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD8_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD8_SLAST) TCD Destination Address (DMA_TCD8_DADDR) TCD Signed Destination Address Offset (DMA_TCD8_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD8_CITER_ELINKYES) DMA_TCD8_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD8_DLASTSGA) TCD Control and Status (DMA_TCD8_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD8_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD8_BITER_ELINKNO) TCD Source Address (DMA_TCD9_SADDR) TCD Signed Source Address Offset (DMA_TCD9_SOFF) TCD Transfer Attributes (DMA_TCD9_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD9_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD9_NBYTES_MLOFFNO)
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_911E
16
R/W
000Xh
4000_911E
16
R/W
000Xh
32 16 16 32 32
4000_913E
16
R/W
000Xh
4000_913E
16
R/W
000Xh
4000_9140 4000_9144 4000_9146 4000_9148 4000_9148 4000_9148 4000_914C 4000_9150 4000_9154 4000_9156
32 16 16 32 32 32 32 32 16 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh
DMA_TCD10_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD10_DLASTSGA) TCD Control and Status (DMA_TCD10_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD10_BITER_ELINKYES) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCD10_BITER_ELINKNO) TCD Source Address (DMA_TCD11_SADDR) TCD Signed Source Address Offset (DMA_TCD11_SOFF) TCD Transfer Attributes (DMA_TCD11_ATTR) TCD Minor Byte Count (Minor Loop Disabled) (DMA_TCD11_NBYTES_MLNO) TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCD11_NBYTES_MLOFFNO) TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCD11_NBYTES_MLOFFYES) TCD Last Source Address Adjustment (DMA_TCD11_SLAST) TCD Destination Address (DMA_TCD11_DADDR) TCD Signed Destination Address Offset (DMA_TCD11_DOFF) TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD11_CITER_ELINKYES) DMA_TCD11_CITER_ELINKNO TCD Last Destination Address Adjustment/Scatter Gather Address (DMA_TCD11_DLASTSGA) TCD Control and Status (DMA_TCD11_CSR) TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCD11_BITER_ELINKYES)
4000_915E
16
R/W
000Xh
4000_915E
16
R/W
000Xh
4000_9160 4000_9164 4000_9166 4000_9168 4000_9168 4000_9168 4000_916C 4000_9170 4000_9174 4000_9176 4000_9176 4000_9178 4000_917C
32 16 16 32 32 32 32 32 16 16 16 32 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_917E
16
R/W
000Xh
16
R/W
000Xh
4000_9180 4000_9184 4000_9186 4000_9188 4000_9188 4000_9188 4000_918C 4000_9190 4000_9194 4000_9196 4000_9196 4000_9198 4000_919C
32 16 16 32 32 32 32 32 16 16 16 32 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_919E
16
R/W
000Xh
4000_919E
16
R/W
000Xh
32 16 16
0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
4000_91BE
16
R/W
000Xh
4000_91BE
16
R/W
000Xh
32 16 16 32 32 32 32 32
4000_91DE
16
R/W
000Xh
4000_91DE
16
R/W
000Xh
4000_91E0 4000_91E4 4000_91E6 4000_91E8 4000_91E8 4000_91E8 4000_91EC 4000_91F0 4000_91F4 4000_91F6 4000_91F6 4000_91F8 4000_91FC
32 16 16 32 32 32 32 32 16 16 16 32 16
R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W
0000_000Xh 000Xh 000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 000Xh 000Xh 000Xh 0000_000Xh 000Xh
16
R/W
000Xh
4000_91FE
16
R/W
000Xh
EDBG 0
ERCA
EMLM
HALT
HOE
CLM
ECX
0 CX
This read-only bitfield is reserved and always has the value zero. Enable minor loop mapping 0 1 Disabled. TCDn.word2 is defined as a 32-bit NBYTES field Ebabled. TCDn.word2 is redefined to include individual enable fields, an offset field, and the NBYTES field. The individual enable fields allow the minor loop offset to be applied to the source address, the destination address, or both. The NBYTES field is reduced when either offset is enabled.
6 CLM
Continuous link mode 0 1 A minor loop channel link made to itself goes through channel arbitration before being activated again. A minor loop channel link made to itself does not go through channel arbitration before being activated again. Upon minor loop completion, the channel activates again if that channel has a minor loop channel link enabled and the link channel is itself. This effectively applies the minor loop offsets and restarts the next minor loop.
5 HALT
Halt DMA operations 0 1 Normal operation Stall the start of any new channels. Executing channels are allowed to complete. Channel execution resumes when this bit is cleared.
4 HOE
Halt on error 0 1 Normal operation Any error causes the HALT bit to set. Subsequently, all service requests are ignored until the HALT bit is cleared.
3 Reserved 2 ERCA
This read-only bit is reserved and always has the value zero. Enable round robin channel arbitration. 0 1 Fixed priority arbitration is used for channel selection. Round robin arbitration is used for channel selection.
1 EDBG
Enable debug. 0 1 When in debug mode the DMA continues to operate. When in debug mode, the DMA stalls the start of a new channel. Executing channels are allowed to complete. Channel execution resumes when the system exits debug mode or the EDBG bit is cleared.
0 Reserved
This read-only bit is reserved and always has the value zero.
VLD
ECX
Reset
Bit R W
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
CPE
ERRCHN
SAE
SOE
DAE
DOE
NCE
SGE
SBE
DBE
Reset
This read-only bitfield is reserved and always has the value zero. Transfer cancelled 0 1 No cancelled transfers The last recorded entry was a cancelled transfer by the error cancel transfer input
15 Reserved 14 CPE
This read-only bit is reserved and always has the value zero. Channel priority error 0 1 No channel priority error The last recorded error was a configuration error in the channel priorities. Channel priorities are not unique.
This read-only bitfield is reserved and always has the value zero. Error channel number or cancelled channel number Table continues on the next page...
6 SOE
Source offset error 0 1 No source offset configuration error The last recorded error was a configuration error detected in the TCDn_SOFF field. TCDn_SOFF is inconsistent with TCDn_ATTR[SSIZE].
5 DAE
Destination address error 0 1 No destination address configuration error The last recorded error was a configuration error detected in the TCDn_DADDR field. TCDn_DADDR is inconsistent with TCDn_ATTR[DSIZE].
4 DOE
Destination offset error 0 1 No destination offset configuration error The last recorded error was a configuration error detected in the TCDn_DOFF field. TCDn_DOFF is inconsistent with TCDn_ATTR[DSIZE].
3 NCE
NBYTES/CITER configuration error 0 1 No NBYTES/CITER configuration error The last recorded error was a configuration error detected in the TCDn_NBYTES or TCDn_CITER fields. TCDn_NBYTES is not a multiple of TCDn_ATTR[SSIZE] and TCDn_ATTR[DSIZE], orTCDn_CITER[CITER] is equal to zero, orTCDn_CITER[ELINK] is not equal to TCDn_BITER[ELINK]
2 SGE
Scatter/gather configuration error 0 1 No scatter/gather configuration error The last recorded error was a configuration error detected in the TCDn_DLASTSGA field. This field is checked at the beginning of a scatter/gather operation after major loop completion if TCDn_CSR[ESG] is enabled. TCDn_DLASTSGA is not on a 32 byte boundary.
1 SBE
Source bus error 0 1 No source bus error The last recorded error was a bus error on a source read
0 DBE
Destination bus error 0 1 No destination bus error The last recorded error was a bus error on a destination write
ERQ15
ERQ14
ERQ13
ERQ12
ERQ11
ERQ10
ERQ9
ERQ8
ERQ7
ERQ6
ERQ5
ERQ4
ERQ3
ERQ2 0
ERQ1 0
14 ERQ14
Enable DMA Request 14 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
13 ERQ13
Enable DMA Request 13 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
12 ERQ12
Enable DMA Request 12 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
11 ERQ11
Enable DMA Request 11 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled Table continues on the next page...
ERQ0 0
9 ERQ9
Enable DMA Request 9 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
8 ERQ8
Enable DMA Request 8 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
7 ERQ7
Enable DMA Request 7 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
6 ERQ6
Enable DMA Request 6 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
5 ERQ5
Enable DMA Request 5 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
4 ERQ4
Enable DMA Request 4 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
3 ERQ3
Enable DMA Request 3 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
2 ERQ2
Enable DMA Request 2 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
1 ERQ1
Enable DMA Request 1 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
0 ERQ0
Enable DMA Request 0 0 1 The DMA request signal for the corresponding channel is disabled The DMA request signal for the corresponding channel is enabled
EEI15
EEI14
EEI13
EEI12
EEI11
EEI10
EEI9
EEI8
EEI7
EEI6
EEI5
EEI4
EEI3
EEI2 0
EEI1 0
14 EEI14
Enable error interrupt 14 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
13 EEI13
Enable error interrupt 13 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
12 EEI12
Enable error interrupt 12 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
11 EEI11
Enable error interrupt 11 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
10 EEI10
EEI0 0
Enable error interrupt 9 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
8 EEI8
Enable error interrupt 8 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
7 EEI7
Enable error interrupt 7 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
6 EEI6
Enable error interrupt 6 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
5 EEI5
Enable error interrupt 5 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
4 EEI4
Enable error interrupt 4 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
3 EEI3
Enable error interrupt 3 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
2 EEI2
Enable error interrupt 2 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
1 EEI1
Enable error interrupt 1 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
0 EEI0
Enable error interrupt 0 0 1 The error signal for corresponding channel does not generate an error interrupt The assertion of the error signal for corresponding channel generates an error interrupt request
0 NOP 0
0 CAEE 0 0 0 0 0 0
0 CEEI 0 0
Clear all enable error interrupts 0 1 Clear only those EEI bits specified in the CEEI field Clear all bits in EEI
54 Reserved 30 CEEI
This bitfield is reserved. Clear enable error interrupt Clears the corresponding bit in EEI
Memory Map/Register Definition Address: DMA_SEEI 4000_8000h base + 19h offset = 4000_8019h
Bit 7 6 5 4 3 2 1 0
0 NOP 0
0 SAEE 0 0 0 0 0 0
0 SEEI 0 0
Sets all enable error interrupts 0 1 Set only those EEI bits specified in the SEEI field. Sets all bits in EEI
54 Reserved 30 SEEI
This bitfield is reserved. Set enable error interrupt Sets the corresponding bit in EEI
0 NOP 0
0 CAER 0 0 0 0 0 0
0 CERQ 0 0
54 Reserved 30 CERQ
This bitfield is reserved. Clear enable request Clears the corresponding bit in ERQ
0 NOP 0
0 SAER 0 0 0 0 0 0
0 SERQ 0 0
Set all enable requests 0 1 Set only those ERQ bits specified in the SERQ field Set all bits in ERQ
54 Reserved 30 SERQ
This bitfield is reserved. Set enable request Sets the corresponding bit in ERQ
0 NOP 0
0 CADN 0 0 0 0 0 0
0 CDNE 0 0
Clears all DONE bits 0 1 Clears only those TCDn_CSR[DONE] bits specified in the CDNE field Clears all bits in TCDn_CSR[DONE]
54 Reserved 30 CDNE
This bitfield is reserved. Clear DONE bit Clears the corresponding bit in TCDn_CSR[DONE]
Chapter 21 Direct Memory Access (eDMA) Address: DMA_SSRT 4000_8000h base + 1Dh offset = 4000_801Dh
Bit 7 6 5 4 3 2 1 0
0 NOP 0
0 SAST 0 0 0 0 0 0
0 SSRT 0 0
Set all START bits (activates all channels) 0 1 Set only those TCDn_CSR[START] bits specified in the SSRT field Set all bits in TCDn_CSR[START]
54 Reserved 30 SSRT
This bitfield is reserved. Set START bit Sets the corresponding bit in TCDn_CSR[START]
0 NOP 0
0 CAEI 0 0 0 0 0 0
0 CERR 0 0
54 Reserved 30 CERR
This bitfield is reserved. Clear error indicator Clears the corresponding bit in ERR
0 NOP 0
0 CAIR 0 0 0 0 0 0
0 CINT 0 0
Clear all interrupt requests 0 1 Clear only those INT bits specified in the CINT field Clear all bits in INT
54 Reserved 30 CINT
This bitfield is reserved. Clear interrupt request Clears the corresponding bit in INT
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
INT15
INT14
INT13
INT12
INT11
INT10
INT9
INT8
INT7
INT6
INT5
INT4
INT3
INT2
INT1 w1c 0
w1c
w1c
w1c
w1c
w1c
w1c
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
Reset
INT0
13 INT13
Interrupt request 13 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
12 INT12
Interrupt request 12 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
11 INT11
Interrupt request 11 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
10 INT10
Interrupt request 10 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
9 INT9
Interrupt request 9 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
8 INT8
Interrupt request 8 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
7 INT7
Interrupt request 7 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
6 INT6
Interrupt request 6 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
5 INT5
Interrupt request 5 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
4 INT4
Interrupt request 4 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
3 INT3
Interrupt request 2 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
1 INT1
Interrupt request 1 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
0 INT0
Interrupt request 0 0 1 The interrupt request for corresponding channel is cleared The interrupt request for corresponding channel is active
Memory Map/Register Definition Address: DMA_ERR 4000_8000h base + 2Ch offset = 4000_802Ch
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
ERR15
ERR14
ERR13
ERR12
ERR11
ERR10
ERR9
ERR8
ERR7
ERR6
ERR5
ERR4
ERR3
ERR2
ERR1 w1c 0
w1c
w1c
w1c
w1c
w1c
w1c
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
Reset
14 ERR14
Error in channel 14 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
13 ERR13
Error in channel 13 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
12 ERR12
Error in channel 12 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
11 ERR11
Error in channel 11 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
10 ERR10
Error in channel 10 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
9 ERR9
ERR0
Error in channel 8 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
7 ERR7
Error in channel 7 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
6 ERR6
Error in channel 6 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
5 ERR5
Error in channel 5 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
4 ERR4
Error in channel 4 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
3 ERR3
Error in channel 3 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
2 ERR2
Error in channel 2 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
1 ERR1
Error in channel 1 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
0 ERR0
Error in channel 0 0 1 An error in the corresponding channel has not occurred An error in the corresponding channel has occurred
NOTE These bits reflect the state of the request as seen by the arbitration logic. Therefore, this status is affected by the ERQ bits.
Address: DMA_HRS 4000_8000h base + 34h offset = 4000_8034h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
HRS15
HRS14
HRS13
HRS12
HRS11
HRS10
HRS9
HRS8
HRS7
HRS6
HRS5
HRS4
HRS3
HRS2 0
HRS1 0
14 HRS14
Hardware request status channel 14 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
13 HRS13
Hardware request status channel 13 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
12 HRS12
Hardware request status channel 12 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
11 HRS11
Hardware request status channel 11 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
10 HRS10
Hardware request status channel 10 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
9 HRS9
Hardware request status channel 9 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
8 HRS8
HRS0 0
Hardware request status channel 7 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
6 HRS6
Hardware request status channel 6 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
5 HRS5
Hardware request status channel 5 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
4 HRS4
Hardware request status channel 4 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
3 HRS3
Hardware request status channel 3 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
2 HRS2
Hardware request status channel 2 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
1 HRS1
Hardware request status channel 1 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
0 HRS0
Hardware request status channel 0 0 1 A hardware service request for the corresponding channel is not present A hardware service request for the corresponding channel is present
Memory Map/Register Definition Addresses: 4000_8000h base + 100h offset + (1d n), where n = 0d to 15d
Bit 7 6 5 4 3 2 1 0
ECP x*
DPA x* x*
CHPRI x* x* x* x* x*
6 DPA
Disable preempt ability 0 1 Channel n can suspend a lower priority channel Channel n cannot suspend any channel, regardless of channel priority
54 Reserved 30 CHPRI
This read-only bitfield is reserved and always has the value zero. Channel n arbitration priority Channel priority when fixed-priority arbitration is enabled NOTE: Reset value for the channel priority fields, CHPRI, is equal to the corresponding channel number for each priority register, i.e., DCHPRI15[CHPRI] equals 0b1111.
SADDR x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
SOFF x* x* x* x* x* x* x* x* x*
SMOD x* x* x* x*
SSIZE x* x* x* x*
DMOD x* x* x* x*
DSIZE x* x*
Destination address modulo See the SMOD definition Destination data transfer size See the SSIZE definition
NBYTES x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
21.3.21 TCD Signed Minor Loop Offset (Minor Loop Enabled and Offset Disabled) (DMA_TCDn_NBYTES_MLOFFNO)
TCD word 2 is defined as following if: Minor loop mapping is enabled (CR[EMLM] = 1) and SMLOE = 0 and DMLOE = 0
Addresses: 4000_8000h base + 1008h offset + (32d n), where n = 0d to 15d
Bit R W Reset 31 30 DMLOE 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SMLOE
NBYTES
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Destination minor loop offset enable Selects whether the minor loop offset is applied to the destination address upon minor loop completion. 0 1 The minor loop offset is not applied to the DADDR The minor loop offset is applied to the DADDR
290 NBYTES
Minor byte transfer count Number of bytes to be transferred in each service request of the channel. As a channel activates, the appropriate TCD contents load into the eDMA engine, and the appropriate reads and writes perform until the minor byte transfer count has transferred. This is an indivisible operation and cannot be halted. (Although, it may be stalled by using the bandwidth control field, or via preemption.) After the minor count is exhausted, the SADDR and DADDR values are written back into the TCD memory, the major iteration count is decremented and restored to the TCD memory. If the major iteration count is completed, additional processing is performed.
21.3.22 TCD Signed Minor Loop Offset (Minor Loop and Offset Enabled) (DMA_TCDn_NBYTES_MLOFFYES)
TCD word 2 is defined as following if: Minor loop mapping is enabled (CR[EMLM] = 1) and Minor loop offset enabled (SMLOE or DMLOE = 1)
Addresses: 4000_8000h base + 1008h offset + (32d n), where n = 0d to 15d
Bit R W Reset 31 30 DMLOE 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SMLOE
MLOFF
NBYTES
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
Destination minor loop offset enable Selects whether the minor loop offset is applied to the destination address upon minor loop completion. 0 1 The minor loop offset is not applied to the DADDR The minor loop offset is applied to the DADDR
If SMLOE or DMLOE is set, this field represents a sign-extended offset applied to the source or destination address to form the next-state value after the minor loop completes. Minor byte transfer count Number of bytes to be transferred in each service request of the channel. As a channel activates, the appropriate TCD contents load into the eDMA engine, and the appropriate reads and writes perform until the minor byte transfer count has transferred. This is an indivisible operation and cannot be halted. (Although, it may be stalled by using the bandwidth control field, or via preemption.) After the minor count is exhausted, the SADDR and DADDR values are written back into the TCD memory, the major iteration count is decremented and restored to the TCD memory. If the major iteration count is completed, additional processing is performed.
SLAST x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
DADDR x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
DOFF x* x* x* x* x* x* x* x* x*
21.3.25 TCD Current Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCDn_CITER_ELINKYES)
If TCDn_CITER[ELINK] is set, the TCDn_CITER register is defined as follows.
Addresses: 4000_8000h base + 1016h offset + (32d n), where n = 0d to 15d
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ELINK
0 LINKCH x* x* x* x* x* x* x* x* x* x* CITER x* x* x* x* x*
x*
This read-only bitfield is reserved and always has the value zero. Link channel number If channel-to-channel linking is enabled (ELINK = 1), then after the minor loop is exhausted, the eDMA engine initiates a channel service request to the channel defined by these four bits by setting that channels TCDn_CSR[START] bit. Current major iteration count This 9-bit (ELINK = 1) or 15-bit (ELINK = 0) count represents the current major loop count for the channel. It is decremented each time the minor loop is completed and updated in the transfer control descriptor memory. After the major iteration count is exhausted, the channel performs a number of operations (e.g., final source and destination address calculations), optionally generating an interrupt to signal channel completion before reloading the CITER field from the beginning iteration count (BITER) field. NOTE: When the CITER field is initially loaded by software, it must be set to the same value as that contained in the BITER field. NOTE: If the channel is configured to execute a single service request, the initial values of BITER and CITER should be 0x0001.
80 CITER
21.3.26 TCD Current Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCDn_CITER_ELINKNO)
If TCDn_CITER[ELINK] is cleared, the TCDn_CITER register is defined as follows.
Addresses: 4000_8000h base + 1016h offset + (32d n), where n = 0d to 15d
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ELINK
CITER x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
x*
Current major iteration count This 9-bit (ELINK = 1) or 15-bit (ELINK = 0) count represents the current major loop count for the channel. It is decremented each time the minor loop is completed and updated in the transfer control descriptor memory. After the major iteration count is exhausted, the channel performs a number of operations (e.g., final source and destination address calculations), optionally generating an interrupt to signal channel completion before reloading the CITER field from the beginning iteration count (BITER) field. NOTE: When the CITER field is initially loaded by software, it must be set to the same value as that contained in the BITER field. NOTE: If the channel is configured to execute a single service request, the initial values of BITER and CITER should be 0x0001.
DLASTSGA x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
MAJORELINK
INTMAJOR x*
INTHALF
ACTIVE
0 DONE MAJORLINKCH
ESG
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
x*
This read-only bitfield is reserved and always has the value zero.
118 Link channel number MAJORLINKCH If (MAJORELINK = 0) then No channel-to-channel linking (or chaining) is performed after the major loop counter is exhausted. else Table continues on the next page...
START x*
DREQ
5 MAJORELINK
Enable scatter/gather processing As the channel completes the major loop, this flag enables scatter/gather processing in the current channel. If enabled, the eDMA engine uses DLASTSGA as a memory pointer to a 0-modulo-32 address containing a 32-byte data structure loaded as the transfer control descriptor into the local memory. NOTE: To support the dynamic scatter/gather coherency model, this field is forced to zero when written to while the TCDn_CSR[DONE] bit is set. 0 1 The current channels TCD is normal format. The current channels TCD specifies a scatter gather format. The DLASTSGA field provides a memory pointer to the next TCD to be loaded into this channel after the major loop completes its execution.
3 DREQ
Disable request If this flag is set, the eDMA hardware automatically clears the corresponding ERQ bit when the current major iteration count reaches zero. 0 1 The channels ERQ bit is not affected The channels ERQ bit is cleared when the major loop is complete
2 INTHALF
Enable an interrupt when major counter is half complete. If this flag is set, the channel generates an interrupt request by setting the appropriate bit in the INT when the current major iteration count reaches the halfway point. Specifically, the comparison performed by the eDMA engine is (CITER == (BITER >> 1)). This halfway point interrupt request is provided to support double-buffered (aka ping-pong) schemes or other types of data movement where the processor needs an early indication of the transfers progress. The halfway complete interrupt disables when BITER values are less than two. Table continues on the next page...
Enable an interrupt when major iteration count completes If this flag is set, the channel generates an interrupt request by setting the appropriate bit in the INT when the current major iteration count reaches zero. 0 1 The end-of-major loop interrupt is disabled The end-of-major loop interrupt is enabled
0 START
Channel start If this flag is set, the channel is requesting service. The eDMA hardware automatically clears this flag after the channel begins execution. 0 1 The channel is not explicitly started The channel is explicitly started via a software initiated service request
21.3.29 TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Enabled) (DMA_TCDn_BITER_ELINKYES)
If the TCDn_BITER[ELINK] bit is set, the TCDn_BITER register is defined as follows.
Addresses: 4000_8000h base + 101Eh offset + (32d n), where n = 0d to 15d
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ELINK
0 LINKCH x* x* x* x* x* x* x* x* x* x* BITER x* x* x* x* x*
x*
This read-only bitfield is reserved and always has the value zero. Link channel number If channel-to-channel linking is enabled (ELINK = 1), then after the minor loop is exhausted, the eDMA engine initiates a channel service request at the channel defined by these four bits by setting that channels TCDn_CSR[START] bit. NOTE: When the software loads the TCD, this field must be set equal to the corresponding CITER field. Otherwise, a configuration error is reported. As the major iteration count is exhausted, the contents of this field is reloaded into the CITER field.
80 BITER
Starting major iteration count As the transfer control descriptor is first loaded by software, this 9-bit (ELINK = 1) or 15-bit (ELINK = 0) field must be equal to the value in the CITER field. As the major iteration count is exhausted, the contents of this field are reloaded into the CITER field. NOTE: When the software loads the TCD, this field must be set equal to the corresponding CITER field. Otherwise, a configuration error is reported. As the major iteration count is exhausted, the contents of this field is reloaded into the CITER field. If the channel is configured to execute a single service request, the initial values of BITER and CITER should be 0x0001.
21.3.30 TCD Beginning Minor Loop Link, Major Loop Count (Channel Linking Disabled) (DMA_TCDn_BITER_ELINKNO)
If the TCDn_BITER[ELINK] bit is cleared, the TCDn_BITER register is defined as follows.
Addresses: 4000_8000h base + 101Eh offset + (32d n), where n = 0d to 15d
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ELINK
BITER x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
x*
Starting major iteration count As the transfer control descriptor is first loaded by software, this 9-bit (ELINK = 1) or 15-bit (ELINK = 0) field must be equal to the value in the CITER field. As the major iteration count is exhausted, the contents of this field are reloaded into the CITER field. NOTE: When the software loads the TCD, this field must be set equal to the corresponding CITER field. Otherwise, a configuration error is reported. As the major iteration count is exhausted, the contents of this field is reloaded into the CITER field. If the channel is configured to execute a single service request, the initial values of BITER and CITER should be 0x0001.
Functional Description
provides a mechanism (enabled by DCHPRIn[ECP]) where a large data move operation can be preempted to minimize the time another channel is blocked from execution. When any channel is selected to execute, the contents of its TCD are read from local memory and loaded into the address path channel x registers for a normal start and into channel y registers for a preemption start. After the minor loop completes execution, the address path hardware writes the new values for the TCDn_{SADDR, DADDR, CITER} back to local memory. If the major iteration count is exhausted, additional processing is performed, including the final address pointer updates, reloading the TCDn_CITER field, and a possible fetch of the next TCDn from memory as part of a scatter/gather operation. Data path: This block implements the bus master read/write datapath. It includes 16 bytes of register storage and the necessary multiplex logic to support any required data alignment. The internal read data bus is the primary input, and the internal write data bus is the primary output. The address and data path modules directly support the 2-stage pipelined internal bus. The address path module represents the 1st stage of the bus pipeline (address phase), while the data path module implements the 2nd stage of the pipeline (data phase). Program model/channel arbitration: This block implements the first section of the eDMA programming model as well as the channel arbitration logic. The programming model registers are connected to the internal peripheral bus (not shown). The eDMA peripheral request inputs and interrupt request outputs are also connected to this block (via control logic). Control: This block provides all the control functions for the eDMA engine. For data transfers where the source and destination sizes are equal, the eDMA engine performs a series of source read/destination write operations until the number of bytes specified in the minor loop byte count has moved. For descriptors where the sizes are not equal, multiple accesses of the smaller size data are required for each reference of the larger size. As an example, if the source size references 16bit data and the destination is 32-bit data, two reads are performed, then one 32bit write. Transfer control descriptor memory
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
498 Freescale Semiconductor, Inc.
Memory controller: This logic implements the required dual-ported controller, managing accesses from the eDMA engine as well as references from the internal peripheral bus . As noted earlier, in the event of simultaneous accesses, the eDMA engine is given priority and the peripheral transaction is stalled. Memory array: TCD storage is implemented using a single-port, synchronous RAM array.
Functional Description
eDMA
Write Address
Write Data
0 1 2
n-1
eDMA Engine
Read Data
Read Data
Write Data
Address
eDMA Done
In the second part of the basic data flow, illustrated in the following diagram, the modules associated with the data transfer (address path, data path, and control) sequence through the required source reads and destination writes to perform the actual data movement. The source reads are initiated and the fetched data is temporarily stored in the data path block until it is gated onto the internal bus during the destination write. This source read/destination write processing continues until the minor byte count has transferred.
eDMA
Write Address
Write Data
0
n-1
eDMA Engine
Read Data
Read Data
Write Data
Address
eDMA Done
After the minor byte count has moved, the final phase of the basic data flow performs. In this segment, the address path logic performs the required updates to certain fields in the appropriate TCD, e.g., SADDR, DADDR, CITER. If the major iteration count is exhausted, additional operations are performed. These include the final address adjustments and reloading of the BITER field into the CITER. Assertion of an optional interrupt request also occurs at this time, as does a possible fetch of a new TCD from memory using the scatter/gather address pointer included in the descriptor. The updates to the TCD memory and the assertion of an interrupt request are shown in the following diagram.
1 2
Functional Description
eDMA
Write Address
Write Data
0
n-1
eDMA En g in e
Read Data
Read Data
Write Data
Address
eDMA Done
1 2
In fixed arbitration mode, a configuration error is caused by any two channel priorities being equal. All channel priority levels must be unique when fixed arbitration mode is enabled. If a scatter/gather operation is enabled upon channel completion, a configuration error is reported if the scatter/gather address (DLAST_SGA) is not aligned on a 32byte boundary. If minor loop channel linking is enabled upon channel completion, a configuration error is reported when the link is attempted if the TCDn_CITER[E_LINK] bit does not equal the TCDn_BITER[E_LINK] bit. If enabled, all configuration error conditions, except the scatter/gather and minor-loop link errors, report as the channel activates and asserts an error interrupt request. A scatter/ gather configuration error is reported when the scatter/gather operation begins at major loop completion when properly enabled. A minor loop channel link configuration error is reported when the link operation is serviced at minor loop completion. If a system bus read or write is terminated with an error, the data transfer is stopped and the appropriate bus error flag set. In this case, the state of the channel's transfer control descriptor is updated by the eDMA engine with the current source address, destination address and current iteration count at the point of the fault. When a system-bus error occurs, the channel terminates after the read or write transaction (which is already pipelined after errant access) has completed. If a bus error occurs on the last read prior to beginning the write sequence, the write executes using the data captured during the bus error. If a bus error occurs on the last write prior to switching to the next read sequence, the read sequence executes before the channel terminates due to the destination bus error. A transfer may be cancelled by software with the CR[CX] bit. When a cancel transfer request is recognized, the DMA engine stops processing the channel. The current readwrite sequence is allowed to finish. If the cancel occurs on the last read-write sequence of a major or minor loop, the cancel request is discarded and the channel retires normally. The error cancel transfer is the same as a cancel transfer except the ES register is updated with the cancelled channel number and ECX is set. The TCD of a cancelled channel contains the source and destination addresses of the last transfer saved in the TCD. If the channel needs to be restarted, you must re-initialize the TCD since the aforementioned fields no longer represent the original parameters. When a transfer is cancelled by the error cancel transfer mechanism, the channel number is loaded into DMA_ES[ERRCHN] and ECX and VLD are set. In addition, an error interrupt may be generated if enabled. The occurrence of any error causes the eDMA engine to stop the active channel immediately, and the appropriate channel bit in the eDMA error register is asserted. At the same time, the details of the error condition are loaded into the ES register. The major loop complete indicators, setting the transfer control descriptor DONE flag and the possible assertion of an interrupt request, are not affected when an error is detected. After
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 503
Initialization/Application Information
the error status has been updated, the eDMA engine continues operating by servicing the next appropriate channel. A channel that experiences an error condition is not automatically disabled. If a channel is terminated by an error and then issues another service request before the error is fixed, that channel executes and terminate with the same error condition.
2. Write the channel priority levels into the DCHPRIn registers if a configuration other than the default is desired. 3. Enable error interrupts in the EEI register if so desired. 4. Write the 32-byte TCD for each channel that may request service. 5. Enable any hardware service requests via the ERQ register. 6. Request channel service by software (setting the TCDn_CSR[START] bit) or hardware (slave device asserting its eDMA peripheral request signal). After any channel requests service, a channel is selected for execution based on the arbitration and priority levels written into the programmer's model. The eDMA engine reads the entire TCD, including the TCD control and status fields (shown in the following table) for the selected channel into its internal address path module. As the TCD is read, the first transfer is initiated on the internal bus unless a configuration error is detected. Transfers from the source (as defined by the source address, TCDn_SADDR) to the destination (as defined by the destination address, TCDn_DADDR) continue until the specified number of bytes (TCDn_NBYTES) are transferred. When the transfer is complete, the eDMA engine's local TCDn_SADDR, TCDn_DADDR, and TCDn_CITER are written back to the main TCD memory and any minor loop channel linking is performed, if enabled. If the major loop is exhausted, further post processing executes (interrupts, major loop channel linking, and scatter/gather operations) if enabled.
Table 21-289. TCD Control and Status Fields
TCDn_CSR Field Name START ACTIVE DONE D_REQ BWC E_SG INT_HALF INT_MAJ Description Control bit to start channel explicitly when using a software initiated DMA service (Automatically cleared by hardware) Status bit indicating the channel is currently in execution Status bit indicating major loop completion (cleared by software when using a software initiated DMA service) Control bit to disable DMA request at end of major loop completion when using a hardware initiated DMA service Control bits for throttling bandwidth control of a channel Control bit to enable scatter-gather feature Control bit to enable interrupt when major loop is half complete Control bit to enable interrupt when major loop completes
Initialization/Application Information
The following figure shows how each DMA request initiates one minor-loop transfer (iteration) without CPU intervention. DMA arbitration can occur after each minor loop, and one level of minor loop DMA preemption is allowed. The number of minor loops in a major loop is specified by the beginning iteration count (BITER).
Current major loop iteration count (CITER) DMA request
Minor loop
DMA request
Minor loop
Major loop
The following figure lists the memory array terms and how the TCD settings interrelate.
Minor loop (NBYTES in minor loop, often the same value as xSIZE)
Offset (xOFF): number of bytes added to current address after each transfer (often the same value as xSIZE) Each DMA source (S) and destination (D) has its own: Address (xADDR) Size (xSIZE) Offset (xOFF) Modulo (xMOD) Last Address Adjustment (xLAST) where x = S or D Peripheral queues typically have size and offset equal to NBYTES.
Minor loop
Last minor loop xLAST: Number of bytes added to current address after major loop (typically used to loop back)
Initialization/Application Information
1. User write to the TCDn_CSR[START] bit requests channel service. 2. The channel is selected by arbitration for servicing. 3. eDMA engine writes: TCDn_CSR[DONE] = 0, TCDn_CSR[START] = 0, TCDn_CSR[ACTIVE] = 1. 4. eDMA engine reads: channel TCD data from local memory to internal register file. 5. The source-to-destination transfers are executed as follows: a. Read byte from location 0x1000, read byte from location 0x1001, read byte from 0x1002, read byte from 0x1003. b. Write longword to location 0x2000 first iteration of the minor loop. c. Read byte from location 0x1004, read byte from location 0x1005, read byte from 0x1006, read byte from 0x1007. d. Write longword to location 0x2004 second iteration of the minor loop. e. Read byte from location 0x1008, read byte from location 0x1009, read byte from 0x100A, read byte from 0x100B. f. Write longword to location 0x2008 third iteration of the minor loop. g. Read byte from location 0x100C, read byte from location 0x100D, read byte from 0x100E, read byte from 0x100F. h. Write longword to location 0x200C last iteration of the minor loop major loop complete. 6. The eDMA engine writes: TCDn_SADDR = 0x1000, TCDn_DADDR = 0x2000, TCDn_CITER = 1 (TCDn_BITER). 7. The eDMA engine writes: TCDn_CSR[ACTIVE] = 0, TCDn_CSR[DONE] = 1, INT[n] = 1. 8. The channel retires and the eDMA goes idle or services the next channel.
Initialization/Application Information
This would generate the following sequence of events: 1. First hardware (eDMA peripheral) request for channel service. 2. The channel is selected by arbitration for servicing. 3. eDMA engine writes: TCDn_CSR[DONE] = 0, TCDn_CSR[START] = 0, TCDn_CSR[ACTIVE] = 1. 4. eDMA engine reads: channel TCDn data from local memory to internal register file. 5. The source to destination transfers are executed as follows: a. Read byte from location 0x1000, read byte from location 0x1001, read byte from 0x1002, read byte from 0x1003. b. Write longword to location 0x2000 first iteration of the minor loop. c. Read byte from location 0x1004, read byte from location 0x1005, read byte from 0x1006, read byte from 0x1007. d. Write longword to location 0x2004 second iteration of the minor loop. e. Read byte from location 0x1008, read byte from location 0x1009, read byte from 0x100A, read byte from 0x100B. f. Write longword to location 0x2008 third iteration of the minor loop. g. Read byte from location 0x100C, read byte from location 0x100D, read byte from 0x100E, read byte from 0x100F. h. Write longword to location 0x200C last iteration of the minor loop. 6. eDMA engine writes: TCDn_SADDR = 0x1010, TCDn_DADDR = 0x2010, TCDn_CITER = 1. 7. eDMA engine writes: TCDn_CSR[ACTIVE] = 0.
8. The channel retires one iteration of the major loop. The eDMA goes idle or services the next channel. 9. Second hardware (eDMA peripheral) requests channel service. 10. The channel is selected by arbitration for servicing. 11. eDMA engine writes: TCDn_CSR[DONE] = 0, TCDn_CSR[START] = 0, TCDn_CSR[ACTIVE] = 1. 12. eDMA engine reads: channel TCD data from local memory to internal register file. 13. The source to destination transfers are executed as follows: a. Read byte from location 0x1010, read byte from location 0x1011, read byte from 0x1012, read byte from 0x1013. b. Write longword to location 0x2010 first iteration of the minor loop. c. Read byte from location 0x1014, read byte from location 0x1015, read byte from 0x1016, read byte from 0x1017. d. Write longword to location 0x2014 second iteration of the minor loop. e. Read byte from location 0x1018, read byte from location 0x1019, read byte from 0x101A, read byte from 0x101B. f. Write longword to location 0x2018 third iteration of the minor loop. g. Read byte from location 0x101C, read byte from location 0x101D, read byte from 0x101E, read byte from 0x101F. h. Write longword to location 0x201C last iteration of the minor loop major loop complete. 14. eDMA engine writes: TCDn_SADDR = 0x1000, TCDn_DADDR = 0x2000, TCDn_CITER = 2 (TCDn_BITER). 15. eDMA engine writes: TCDn_CSR[ACTIVE] = 0, TCDn_CSR[DONE] = 1, INT[n] = 1. 16. The channel retires major loop complete. The eDMA goes idle or services the next channel.
Initialization/Application Information
Chapter 21 Direct Memory Access (eDMA) Step 1 2 3a 3b TCDn_CSR bits START 1 0 0 0 ACTIVE 0 1 0 0 DONE 0 0 0 1 State Channel service request via software Channel is executing Channel has completed the minor loop and is idle Channel has completed the major loop and is idle
The best method to test for minor-loop completion when using hardware (peripheral) initiated service requests is to read the TCDn_CITER field and test for a change. The hardware request and acknowledge handshake signals are not visible in the programmer's model. The TCD status bits execute the following sequence for a hardware-activated channel:
TCDn_CSR bits START 0 0 0 0 ACTIVE 0 1 0 0 DONE 0 0 0 1
Step 1 2 3a 3b
State Channel service request via hardware (peripheral re quest asserted) Channel is executing Channel has completed the minor loop and is idle Channel has completed the major loop and is idle
For both activation types, the major-loop-complete status is explicitly indicated via the TCDn_CSR[DONE] bit. The TCDn_CSR[START] bit is cleared automatically when the channel begins execution regardless of how the channel activates.
Initialization/Application Information
executes as: 1. Minor loop done set TCD12_CSR[START] bit 2. Minor loop done set TCD12_CSR[START] bit 3. Minor loop done set TCD12_CSR[START] bit 4. Minor loop done, major loop done set TCD7_CSR[START] bit
When minor loop linking is enabled (TCDn_CITER[E_LINK] = 1), the TCDn_CITER[CITER] field uses a nine bit vector to form the current iteration count. When minor loop linking is disabled (TCDn_CITER[E_LINK] = 0), the TCDn_CITER[CITER] field uses a 15-bit vector to form the current iteration count. The bits associated with the TCDn_CITER[LINKCH] field are concatenated onto the CITER value to increase the range of the CITER. Note The TCDn_CITER[E_LINK] bit and the TCDn_BITER[E_LINK] bit must equal or a configuration error is reported. The CITER and BITER vector widths must be equal to calculate the major loop, half-way done interrupt point. The following table summarizes how a DMA channel can link to another DMA channel, i.e, use another channel's TCD, at the end of a loop.
Table 21-291. Channel Linking Parameters
Desired Link Behavior Link at end of Mi nor Loop Link at end of Major Loop TCD Control Field Name CITER[E_LINK] CITER[LINKCH] CSR[MAJOR_E_LINK] CSR[MAJOR_LINKCH] Description Enable channel-to-channel linking on minor loop completion (current itera tion) Link channel number when linking at end of minor loop (current iteration) Enable channel-to-channel linking on major loop completion Link channel number when linking at end of major loop
Initialization/Application Information
22.1.1 Features
Features of EWM module include: Independent 1 kHz LPO clock source Programmable time-out period specified in terms of number of EWM LPO clock cycles. Windowed refresh option Provides robust check that program flow is faster than expected.
Introduction
Programmable window. Refresh outside window leads to assertion of EWM_out. Robust refresh mechanism Write values of 0xB4 and 0x2C to EWM Refresh Register within 15 bus clock cycles. One output port, EWM_out, when asserted is used to reset or place the external circuit into safe mode. One Input port, EWM_in, allows an external circuit to control the EWM_out signal.
Clock Gating Cell Reset to Counter Enable EWM refresh EWM_out EWM enable OR CPU Reset Counter Overflow
AND
EWM_out
00h
4005_F001
00h
4005_F002 4005_F003
8 8
00h FFh
INEN 0 0 0
ASSIN 0
EWMEN 0
0 SERVICE 0 0 0 0
COMPAREL 0 0 0 0
COMPAREH 1 1 1 1 1
Functional Description
If the CPU services the EWM when the counter value lies between CMPL value and CMPH value, the counter is reset to zero. This is a legal service operation. If the CPU executes a EWM service/refresh action outside the legal service window, EWM_out is asserted. It is illegal to program CMPL and CMPH with same value. In this case, as soon as counter reaches (CMPL + 1), EWM_out is asserted.
Functional Description
23.2 Features
The features of the Watchdog Timer (WDOG) include: Independent clock source input (independent from CPU/bus clock). Choice between two clock sources: LPO Oscillator External system clock Unlock sequence for allowing updates to write-once WDOG control/configuration bits. All WDOG control/configuration bits are writable once only within 256 bus clock cycles of being unlocked. You need to always update these bits after unlocking within 256 bus clock cycles. Failure to update these bits, resets the system.
Features
Programmable time-out period specified in terms of number of WDOG clock cycles. Ability to test WDOG timer and reset with a flag indicating watchdog test. Quick testSmall time-out value programmed for quick test. Byte testIndividual bytes of timer tested one at a time. Read-only access to the WDOG timerAllows dynamic check that WDOG timer is operational. NOTE Reading the watchdog timer counter while running the watchdog on the bus clock might not give the accurate counter value. Windowed refresh option Provides robust check that program flow is faster than expected. Programmable window. Refresh outside window leads to reset. Robust refresh mechanism Write values of 0xA602 and 0xB480 to WDOG Refresh Register within 20 bus clock cycles. Count of WDOG resets as they occur. Configurable interrupt on time-out to provide debug breadcrumbs. This is followed by a reset after 256 bus clock cycles.
Refresh Sequence 2 writes of data within K bus clock cycles of each other
STOPEN
StandbyEN
WDOG CLKSRC
WDOGTEST
LPO Osc Alt Clock Fast Fn Test Clock WDOG Clock Selection WDOG CLK WDOG reset count WDOGEN = WDOG Enable WINEN = Windowed Mode Enable WDOGT = WDOG Time-out Value WDOGCLKSRC = WDOG Clock Source WDOG Test = WDOG Test Mode WAIT EN = Enable in wait mode STOP EN = Enable in stop mode Standby EN = Enable in standby mode Debug EN = Enable in debug mode SRS = System Reset Status Register R = Timer Reload
The preceding figure shows the operation of the watchdog. The values for N and K are: N = 256 K = 20 The watchdog is a fail safe mechanism that brings the system into a known initial state in case of its failure due to CPU clock stopping or a run away condition in code execution. In its simplest form, the watchdog timer runs continuously off a clock source and expects to be serviced periodically, failing which it resets the system. This ensures that the
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 529
Functional Overview
software is executing correctly and has not run away in an unintended direction. Software can adjust the period of servicing or the time-out value for the watchdog timer to meet the needs of the application. You can select a windowed mode of operation that expects the servicing to be done only in a particular window of the time-out period. An attempted servicing of the watchdog outside this window results in a reset. By operating in this mode, you can get an indication of whether the code is running faster than expected. The window length is also user programmable. If a system fails to update/refresh the watchdog due to an unknown and persistent cause, it will be caught in an endless cycle of resets from the watchdog. To analyze the cause of such conditions, you can program the watchdog to first issue an interrupt, followed a little later by a reset. In the interrupt service routine, the software can analyze the system stack to aid debugging. To enhance the independence of watchdog from the system, it runs off an independent LPO oscillator clock. You can also switch over to an alternate clock source if required, through a control register bit.
If any value other than 0xC520 or 0xD928 is written to the unlock register, or if you allow a gap of more than 20 bus clock cycles in between the writing of the unlock sequence values, the watchdog issues a reset (interrupt-then-reset if enabled) to the system. This is true even if ALLOW_UPDATE is cleared. Also, an attempted refresh operation between the two writes of the unlock sequence and in the WCT time following a successful unlock, goes undetected. Also, see Watchdog Operation with 8-bit access for guidelines related to 8-bit accesses to the unlock register. Note A context switch during unlocking and refreshing may lead to a watchdog reset.
Functional Overview
The operations of refreshing the watchdog goes undetected during the WCT.
Byte 3
Byte 4
WDOG Test
32-bit Timer Byte Stage 1 Byte Stage 2 Byte Stage 3 Byte Stage 4
en
en
en
CLK
Each stage is an 8-bit synchronous counter followed by combinational logic that generates an overflow signal. The overflow signal acts as an enable to the N + 1th stage. In the test mode, when an individual byte, N, is tested, byte N 1 is loaded forcefully with 0xFF, and both these bytes are allowed to run off the clock source. By doing so the overflow signal from stage N 1 is generated immediately, enabling counter stage N. The Nth stage runs and compares with the Nth byte of the time-out value register. In this way, the byte N is also tested along with the link between it and the preceding stage. No other stages, N 2, N 3... and N + 1, N + 2... are enabled for the test on byte N. These disabled stages (except the most significant stage of the counter) are loaded with a value of 0xFF. These two testing schemes achieve the overall aim of testing the counter functioning and the compare and reset logic. Note Do not enable the watchdog interrupt during these tests. If required, you must ensure that the effective time-out value is greater than WCT time. See Generated Resets and Interrupts for more details.
The watchdog can also generate an interrupt. If IRQ_RST_EN is set, then on the above mentioned events WDOG_ST_CTRL_L[INT_FLG] is set, generating an interrupt. A watchdog reset is also generated WCT time later to ensure the watchdog is fault tolerant. The interrupt can be cleared by writing 1 to INT_FLG. The gap of WCT time between interrupt and reset means that the WDOG time-out value must be greater than WCT. Otherwise, if the interrupt was generated due to a time-out, a second consecutive time-out will occur in that WCT gap. This will trigger the backup reset generator to generate a reset to the system, prematurely ending the interrupt service routine execution. Also, the jobs like counting the number of watchdog resets would not be done.
01D3h 0001h 004Ch 4B4Ch 0000h 0010h B480h D928h 0000h 0000h
0000h 0400h
DISTESTWDOG
TESTWDOG
BYTESEL[1:0]
STNDBYEN
IRQRSTEN
Write Reset 0
14 Allows the WDOGs functional test mode to be disabled permanently. Once set, it can only be cleared by DISTESTWDOG a reset. It cannot be unlocked for editing once it is set. 0 1 1312 BYTESEL[1:0] WDOG functional test mode is not disabled. WDOG functional test mode is disabled permanently until reset.
This 2-bit field select the byte to be tested when the watchdog is in the byte test mode. 00 01 10 11 Byte 0 selected Byte 1 selected Byte 2 selected Byte 3 selected
11 TESTSEL
Selects the test to be run on the watchdog timer. Effective only if TESTWDOG is set. 0 1 Quick test. The timer runs in normal operation. You can load a small time-out value to do a quick test. Byte test. Puts the timer in the byte test mode where individual bytes of the timer are enabled for operation and are compared for time-out against the corresponding byte of the programmed time-out value. Select the byte through BYTESEL[1:0] for testing. Table continues on the next page...
WDOGEN 1
TESTSEL
STOPEN
CLKSRC
WAITEN
DBGEN
Read
WINEN
9 Reserved 8 STNDBYEN
7 WAITEN
Enables or disables WDOG in wait mode. 0 1 WDOG is disabled in CPU wait mode. WDOG is enabled in CPU wait mode.
6 STOPEN
Enables or disables WDOG in stop mode. 0 1 WDOG is disabled in CPU stop mode. WDOG is enabled in CPU stop mode.
5 DBGEN
Enables or disables WDOG in Debug mode. 0 1 WDOG is disabled in CPU Debug mode. WDOG is enabled in CPU Debug mode.
4 Enables updates to watchdog write once registers, after initial configuration window (WCT) closes, ALLOWUPDATE through unlock sequence. 0 1 3 WINEN No further updates allowed to WDOG write once registers. WDOG write once registers can be unlocked for updating.
2 IRQRSTEN
Used to enable the debug breadcrumbs feature. A change in this bit is updated immediately, as opposed to updating after WCT. 0 1 WDOG time-out generates reset only. WDOG time-out initially generates an interrupt. After WCT time, it generates a reset.
1 CLKSRC
Selects clock source for the WDOG timer and other internal timing operations. 0 1 Dedicated clock source selected as WDOG clock (LPO Oscillator). WDOG clock sourced from alternate clock source.
0 WDOGEN
Enables or disables the WDOGs operation. In the disabled state, the watchdog timer is kept in the reset state, but the other exception conditions can still trigger a reset/interrupt. A change in the value of this bit must be held for more than one WDOG_CLK cycle for the WDOG to be enabled or disabled. 0 1 WDOG is disabled. WDOG is enabled.
Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
TOVALHIGH 0 0 1 0 0 1 1 0 0
TOVALLOW 1 0 1 0 0 1 1 0 0
WINHIGH 0 0 0 0 0 0 0 0 0
WINLOW 0 0 0 0 1 0 0 0 0
WDOGREFRESH 0 1 0 0 0 0 0 0 0
WDOGUNLOCK 1 0 0 1 0 1 0 0 0
TIMEROUTHIGH 0 0 0 0 0 0 0 0 0
TIMEROUTLOW 0 0 0 0 0 0 0 0 0
RSTCNT 0 0 0 0 0 0 0 0 0
Chapter 23 Watchdog Timer (WDOG) Address: WDOG_PRESC 4005_2000h base + 16h offset = 4005_2016h
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PRESCVAL 0 0 1 0 0 0 0 0 0
refresh/unlock register contains any value other than high bytes of the two values making up the sequence, it is treated as an exception condition, leading to a reset or interruptthen-reset. The same holds true for the lower byte of the refresh or unlock register. Let us take the refresh operation that expects a write of 0xA602 followed by 0xB480 to the refresh register, as an example.
Table 23-14. Refresh for 8-bit Access
WDOG_REFRESH[15:8] Current Value Write 1 Write 2 Write 3 Write 4 Write 5 0xB4 0xB4 0xA6 0xB4 0xB4 0x02 WDOG_REFRESH[7:0] 0x80 0x02 0x02 0x02 0x80 0x80 Sequence value1 or value2 match Value2 match No match Value1 match No match Value2 match. Se quence complete. No match Mismatch exception No No No No No Yes
As shown in the preceding table, the refresh register holds its reset value initially. Thereafter, two 8-bit accesses are performed on the register to write the first value of the refresh sequence. No mismatch exception is registered on the intermediate write, Write1. The sequence is completed by performing two more 8-bit accesses, writing in the second value of the sequence for a successful refresh. It must be noted that the match of value2 takes place only when the complete 16-bit value is correctly written, write4. Hence, the requirement of writing value2 of the sequence within 20 bus clock cycles of value1 is checked by measuring the gap between write2 and write4. It is reiterated that the condition for matching values 1 and 2 of the refresh or unlock sequence remains unchanged. It is just the criterion for detecting a wrong value in these registers which has been relaxed, as explained, for 8-bit accesses. Any 16-bit access still needs to adhere to the original guidelines, mentioned in the sections Refreshing the Watchdog.
The update and reload of the watchdog timer happens two to three watchdog clocks after WCT window closes, following a successful configuration on unlock. Clock Switching DelayThe watchdog uses glitch free multiplexers at two places one to choose between the LPO oscillator input and alternate clock input and the other to choose between the watchdog functional clock and fast clock input for watchdog functional test. A maximum time period of ~ 2 clock A cycles plus ~2 clock B cycles elapses from the time a switch is requested to the occurrence of the actual clock switch (clock A and B are the two input clocks to the clock mux). For the windowed mode, there is a two to three bus clock latency between the watchdog counter going past the window value and the same registering in the bus clock domain. For proper operation of the watchdog, the watchdog clock must be at least five times slower than the system bus clock at all times. An exception is the case when the watchdog clock is synchronous to the bus clock wherein the watchdog clock can be as fast as the bus clock. WCT must be equivalent to at least three watchdog clock cycles. If not ensured, this means that even after the close of the WCT window, you have to wait for the synchronized system reset to deassert in the watchdog clock domain, before expecting the configuration updates to take effect. The time-out value of the watchdog should be set to a minimum of four watchdog clock cycles. This is to take into account the delay in new settings taking effect in the watchdog clock domain. You must take care not only to refresh the watchdog within the watchdog timer's actual time-out period, but also provide enough allowance for the time it takes for the refresh sequence to be detected by the watchdog timer, on the watchdog clock. Updates cannot be made in the bus clock cycle immediately following the write of the unlock sequence, but one bus clock cycle later. It should be ensured that the time-out value for the watchdog is always greater than 2xWCT time + 20 bus clock cycles. An attempted refresh operation, in between the two writes of the unlock sequence and in the WCT time following a successful unlock, will go undetected. Trying to unlock the watchdog within the WCT time after an initial unlock has no effect. The refresh and unlock operations and interrupt are not automatically disabled in the watchdog functional test mode.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 547
After emerging from a reset due to a watchdog functional test, you are still expected to go through the mandatory steps of unlocking and configuring the watchdog. The watchdog continues to be in its functional test mode and therefore you should pull the watchdog out of the functional test mode within WCT time of reset. After emerging from a reset due to a watchdog functional test, you still need to go through the mandatory steps of unlocking and configuring the watchdog. You must ensure that both the clock inputs to the glitchless clock multiplexers are alive during the switching of clocks. Failure to do so results in a loss of clock at their outputs. There is a gap of two to three watchdog clock cycles from the point that stop mode is entered to the watchdog timer actually pausing, due to synchronization. The same holds true for an exit from the stop mode, this time resulting in a two to three watchdog clock cycle delay in the timer restarting. In case the duration of the stop mode is less than one watchdog clock cycle, the watchdog timer is not guaranteed to pause. Consider the case when the first refresh value is written, following which the system enters stop mode (with system bus clk still on). Now, if the second refresh value is not written within 20 bus cycles of the first value, the system is reset (or interruptthen-reset if enabled).
24.1.1 Features
Key features of the MCG module are: Frequency-locked loop (FLL) Digitally-controlled oscillator (DCO) DCO frequency range is programmable for up to four different frequency ranges. Option to program and maximize DCO output frequency for a low frequency external reference clock source. Internal or external reference clock can be used as the FLL source. Can be used as a clock source for other on-chip peripherals. Phase-locked loop (PLL) Voltage-controlled oscillator (VCO)
Introduction
External reference clock is used as the PLL source Modulo VCO frequency divider Phase/Frequency detector Integrated loop filter Can be used as a clock source for other on-chip peripherals. Internal reference clock generator Slow clock with nine trim bits for accuracy Fast clock with four trim bits Can be used as source clock for the FLL. In FEI mode, only the slow Internal Reference Clock (IRC) can be used as the FLL source. Either the slow or the fast clock can be selected as the clock source for the MCU Can be used as a clock source for other on-chip peripherals Control signals for an MCG external reference low power oscillator clock generator are provided: HGO, RANGE, EREFS External clock from the Crystal Oscillator Can be used as a source for the FLL and/or the PLL Can be selected as the clock source for the MCU External clock monitor with reset request capability Lock detector with interrupt request capability for use with the PLL Internal Reference Clocks Auto Trim Machine (ATM) capability using an external clock as a reference Reference dividers for both the FLL and PLL are provided MCG PLL Clock (MCGPLLCLK) is provided as a clock source for other on-chip peripherals MCG FLL Clock (MCGFLLCLK) is provided as a clock source for other on-chip peripherals
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
550 Freescale Semiconductor, Inc.
MCG Fixed Frequency Clock (MCGFFCLK) is provided as a clock source for other on-chip peripherals MCG Internal Reference Clock (MCGIRCLK) is provided as a clock source for other on-chip peripherals.
CLKS OSCINIT EREFS ATMS HGO RANGE PLLCLKEN IREFS PLLS STOP IREFSTEN IRCLKEN SCTRIM SCFTRIM FCTRIM Internal Reference IRCS Slow Clock Fast Clock /2 IRCSCLK
MCGOUTCLK
MCGIRCLK
CLKS
Clock Generator
MCGFLLCLK
PLLS
MCGPLLCLK
IREFS LP / 25 /2 Sync
Clock Valid
MCGFFCLK
n=0-7 PRDIV
LOLIE /(1,2,3,4,5....,25) PLLCLKEN IREFST PLLST Peripheral BUSCLK CLKST IRCST ATMST Phase Detector VDIV Charge Pump Internal Filter VCOOUT PLL Multipurpose Clock Generator (MCG) VCO Lock Detector LOLS LOCK
/(24,25,26,...,55)
MCG Control 1 Register (MCG_C1) MCG Control 2 Register (MCG_C2) MCG Control 3 Register (MCG_C3) MCG Control 4 Register (MCG_C4) MCG Control 5 Register (MCG_C5) MCG Control 6 Register (MCG_C6) MCG Status Register (MCG_S) MCG Auto Trim Control Register (MCG_ATC) MCG Auto Trim Compare Value High Register (MCG_ATCVH) MCG Auto Trim Compare Value Low Register (MCG_ATCVL)
04h 00h 0Xh 0Xh 00h 00h 10h 00h 00h 00h
CLKS 0 0
FRDIV 0 0
IREFS 1
IRCLKEN 0
IREFSTEN 0
FLL External Reference Divider Selects the amount to divide down the external reference clock for the FLL. The resulting frequency must be in the range 31.25 kHz to 39.0625 kHz (This is required when FLL/DCO is the clock source for MCGOUTCLK . In FBE mode, it is not required to meet this range, but it is recommended in the cases when trying to enter a FLL mode from FBE). 000 001 010 011 100 101 110 111 If RANGE = 0, Divide Factor is 1; for all other RANGE values, Divide Factor is 32. If RANGE = 0, Divide Factor is 2; for all other RANGE values, Divide Factor is 64. If RANGE = 0, Divide Factor is 4; for all other RANGE values, Divide Factor is 128. If RANGE = 0, Divide Factor is 8; for all other RANGE values, Divide Factor is 256. If RANGE = 0, Divide Factor is 16; for all other RANGE values, Divide Factor is 512. If RANGE = 0, Divide Factor is 32; for all other RANGE values, Divide Factor is 1024. If RANGE = 0, Divide Factor is 64; for all other RANGE values, Divide Factor is Reserved. If RANGE = 0, Divide Factor is 128; for all other RANGE values, Divide Factor is Reserved.
2 IREFS
Internal Reference Select Selects the reference clock source for the FLL. 0 1 External reference clock is selected. The slow internal reference clock is selected.
1 IRCLKEN
Internal Reference Clock Enable Enables the internal reference clock for use as MCGIRCLK. 0 1 MCGIRCLK inactive. MCGIRCLK active. Table continues on the next page...
RANGE 0 0 0
HGO 0
EREFS 0
LP 0
IRCS 0
High Gain Oscillator Select Controls the crystal oscillator mode of operation. Refer to the Oscillator (OSC) chapter for more details. 0 1 Configure crystal oscillator for low-power operation. Configure crystal oscillator for high-gain operation.
2 EREFS
External Reference Select Selects the source for the external reference clock. Refer to the Oscillator (OSC) chapter for more details. 0 1 External reference clock requested. Oscillator requested. Table continues on the next page...
Internal Reference Clock Select Selects between the fast or slow internal reference clock source. 0 1 Slow internal reference clock selected. Fast internal reference clock selected.
SCTRIM x* x* x* x*
DMX32 x*
DRST_DRS x* x* x* x*
FCTRIM x* x*
SCFTRIM x*
* Notes: x = Undefined at reset. A value for SCFTRIM is loaded during reset from a factory programmed location. x = Undefined at reset.
1. The system clocks derived from this source should not exceed their specified maximums. 0 1 65 DRST_DRS DCO has a default range of 25%. DCO is fine-tuned for maximum frequency with 32.768 kHz reference.
DCO Range Select The DRS bits select the frequency range for the FLL output, DCOOUT. When the LP bit is set, writes to the DRS bits are ignored. The DRST read field indicates the current frequency range for DCOOUT. The DRST field does not update immediately after a write to the DRS field due to internal synchronization between clock domains. Refer to DCO Frequency Range table for more details. Table continues on the next page...
Fast Internal Reference Clock Trim Setting FCTRIM 2 controls the fast internal reference clock frequency by controlling the fast internal reference clock period. The FCTRIM bits are binary weighted (that is, bit 1 adjusts twice as much as bit 0). Increasing the binary value increases the period, and decreasing the value decreases the period. If an FCTRIM[3:0] value stored in nonvolatile memory is to be used, it is your responsibility to copy that value from the nonvolatile memory location to this register.
0 SCFTRIM
Slow Internal Reference Clock Fine Trim SCFTRIM 3 controls the smallest adjustment of the slow internal reference clock frequency. Setting SCFTRIM increases the period and clearing SCFTRIM decreases the period by the smallest amount possible. If an SCFTRIM value stored in nonvolatile memory is to be used, it is your responsibility to copy that value from the nonvolatile memory location to this bit.
1. The system clocks derived from this source should not exceed their specified maximums. 2. A value for FCTRIM is loaded during reset from a factory programmed location . 3. A value for SCFTRIM is loaded during reset from a factory programmed location.
PLLCLKEN 0
PLLSTEN 0 0 0
PRDIV 0 0 0
PLL Stop Enable Enables the PLL Clock during Normal Stop (In Low Power Stop mode, the PLL clock gets disabled even if PLLSTEN=1). All other power modes, PLLSTEN bit has no affect and does not enable the PLL Clock to run if it is written to 1. 0 1 MCGPLLCLK is disabled in any of the Stop modes. MCGPLLCLK is enabled if system is in Normal Stop mode.
40 PRDIV
PLL External Reference Divider Selects the amount to divide down the external reference clock for the PLL. The resulting frequency must be in the range of 2 MHz to 4 MHz.
LOLIE 0
PLLS 0
CME 0 0 0
VDIV 0 0 0
PLL Select Controls whether the PLL or FLL output is selected as the MCG source when CLKS[1:0]=00. If the PLLS bit is cleared and PLLCLKEN is not set, the PLL is disabled in all modes. If the PLLS is set, the FLL is disabled in all modes. 0 1 FLL is selected. PLL is selected (PRDIV need to be programmed to the correct divider to generate a PLL reference clock in the range of 2 - 4 MHz prior to setting the PLLS bit).
5 CME
Clock Monitor Enable Determines if a reset request is made following a loss of external clock indication. The CME bit should only be set to a logic 1 when either the MCG is in an operational mode that uses the external clock (FEE, FBE, PEE, PBE, or BLPE) or the external reference is enabled . Whenever the CME bit is set to a logic 1, the value of the RANGE bits in the C2 register should not be changed. CME bit should be set to a logic 0 before the MCG enters Stop mode. Otherwise, a reset request may occur while in Stop mode. 0 1 External clock monitor is disabled. Generate a reset request on loss of external clock.
40 VDIV
VCO Divider Selects the amount to divide the VCO output of the PLL. The VDIV bits establish the multiplication factor (M) applied to the reference clock frequency.
LOLS
LOCK
PLLST
IREFST
CLKST
OSCINIT
IRCST
Lock Status This bit indicates whether the PLL has acquired lock. Lock detection is disabled when not operating in either PBE or PEE mode unless PLLCLKEN=1 and the MCG is not configured in BLPI or BLPE mode. While the PLL clock is locking to the desired frequncy, the MCG PLL clock (MCGPLLCLK) will be gated off until the LOCK bit gets asserted. If the lock status bit is set, changing the value of the PRDIV[4:0] bits in the C5 register or the VDIV[4:0] bits in the C6 register causes the lock status bit to clear and stay cleared until the PLL has reacquired lock. Entry into LLS, VLPS, or regular Stop with PLLSTEN=0 also causes the lock status bit to clear and stay cleared until Stop mode is exited and the PLL has reacquired Table continues on the next page...
PLL Select Status This bit bit indicates the clock source selected by PLLS . The PLLST bit does not update immediately after a write to the PLLS bit due to internal synchronization between clock domains. 0 1 Source of PLLS clock is FLL clock. Source of PLLS clock is PLL clock.
4 IREFST
Internal Reference Status This bit indicates the current source for the FLL reference clock. The IREFST bit does not update immediately after a write to the IREFS bit due to internal synchronization between clock domains. 0 1 Source of FLL reference clock is the external reference clock. Source of FLL reference clock is the internal reference clock.
32 CLKST
Clock Mode Status These bits indicate the current clock mode. The CLKST bits do not update immediately after a write to the CLKS bits due to internal synchronization between clock domains. 00 01 10 11 Encoding 0 Output of the FLL is selected (reset default). Encoding 1 Internal reference clock is selected. Encoding 2 External reference clock is selected. Encoding 3 Output of the PLL is selected.
1 OSCINIT
OSC Initialization This bit is set after the initialization cycles of the crystal oscillator clock have completed. Refer to the OSC Block Guide for more details. Internal Reference Clock Status The IRCST bit indicates the current source for the internal reference clock select clock (IRCSCLK). The IRCST bit does not update immediately after a write to the IRCS bit due to internal synchronization between clock domains. The IRCST bit will only be updated if the internal reference clock is enabled, either by the MCG being in a mode that uses the IRC or by setting the C1[IRCLKEN] bit . 0 1 Source of internal reference clock is the slow clock (32 kHz IRC). Source of internal reference clock is the fast clock (2 MHz IRC).
0 IRCST
ATME 0
ATMS 0
ATMF
Automatic Trim Machine Select Selects the IRCS clock for Auto Trim Test. 0 1 32 kHz Internal Reference Clock selected. 4 MHz Internal Reference Clock selected.
5 ATMF
Automatic Trim Machine Fail Flag Fail flag for the Automatic Trim Machine (ATM). This bit asserts when the Automatic Trim Machine is enabled (ATME=1) and a write to the C1, C3, C4, and ATC registers is detected or the MCG enters into any Stop mode. A write to ATMF clears the flag. 0 1 Automatic Trim Machine completed normally. Automatic Trim Machine failed.
40 Reserved
This read-only bitfield is reserved and always has the value zero.
ATCVH 0 0 0 0
ATCVL 0 0 0 0
Functional Description
Reset
FEI
FEE
FBI
FBE
BLPI
BLPE
PBE
PEE
Entered from any state when the MCU enters Stop mode
Stop
Returns to the state that was active before the MCU entered Stop mode, unless a reset occurs while in Stop mode.
NOTE During exits from LLS or VLPS when the MCG is in PEE mode, the MCG will reset to PBE clock mode and the C1[CLKS] and S[CLKST] will automatically be set to 2b10. If entering Normal Stop mode when the MCG is in PEE mode with C5[PLLSTEN]=0, the MCG will reset to PBE clock mode and C1[CLKS] and S[CLKST] will automatically be set to 2b10.
Functional Description
Functional Description
NOTE For the chip-specific modes of operation, refer to the power management chapter of this MCU.
the FLL remains unlocked for several reference cycles. DCO startup time is equal to the FLL acquisition time. After the selected DCO startup time is over, the FLL is locked. The completion of the switch is shown by the C4[DRST_DRS] read bits.
Functional Description
enabled is controlled by the ATC[ATMS] control bit (ATC[ATMS]=0 selects the 32 kHz IRC and ATC[ATMS]=1 selects the 4 MHz IRC). If 4 MHz IRC is selected for the ATM, a divide by 128 is enabled to divide down the 4 MHz IRC to a range of 31.250 kHz. When MCG ATM is enabled by writing ATC[ATME] bit to 1, ATM machine will start auto trimming the selected IRC clock. During the autotrim process, ATC[ATME] will remain asserted and will deassert after ATM is completed or abort occurs. The MCG ATM is aborted if a write to any of the following control registers is detected including: C1, C3, C4, or ATC or if Stop mode is enabled. If an abort occurs, ATC[ATMF] fail flag will get asserted. The ATM machine uses the bus clock as the external reference clock to perform the IRC auto-trim. Therefore, it is required that the MCG is configured in a clock mode where the reference clock used to generate the system clock is the external reference clock such as FBE clock mode. The MCG must not be configured in a clock mode where selected IRC ATM clock is used to generate the system clock. The bus clock is also required to be running with in the range of 8 - 16 MHz. To perform the ATM on the selected IRC, the ATM machine uses the successive approximation technique to adjust the IRC trim bits to generate the desired IRC trimmed frequency. The ATM SARs each of the ATM IRC trim bits starting with the MSB. For each trim bit test, the ATM uses a pulse that is generated by the ATM selected IRC clock to enable a counter that counts number of ATM external clocks. At end of each trim bit, the ATM external counter value is compared to the ATCV[15:0] register value. Based on the comparison result, the ATM trim bit under test will get cleared or stay asserted. This is done until all trim bits have been tested by ATM SAR machine. Before the ATM can be enabled, the ATM expected count needs to get derived and stored into the ATCV register. The ATCV expected count is derived based on the required target Internal Reference Clock (IRC) frequency, the frequency of the external reference clock, and using the following formula:
ATCV
Fr = Target Internal Reference Clock (IRC) Trimmed Frequency Fe = External Clock Frequency If the auto trim is being performed on the 4 MHz IRC, the calculated expected count value must be multiplied by 128 before storing it in the ATCV register. Therefore, the ATCV Expected Count Value for trimming the 4 MHz IRC is calculated using the following farmula.
(128)
appropriately here according to the external reference frequency to keep the FLL reference clock in the range of 31.25 kHz to 39.0625 kHz. Although the FLL is bypassed, it is still on in FBE mode. The internal reference can optionally be kept running by setting the C1[IRCLKEN] bit. This is useful if the application will switch back and forth between internal and external modes. For minimum power consumption, leave the internal reference disabled while in an external clock mode. 3. Once the proper configuration bits have been set, wait for the affected bits in the MCG status register to be changed appropriately, reflecting that the MCG has moved into the proper mode. If the MCG is in FEE, FBE, PEE, PBE, or BLPE mode, and C2[EREFS] was also set in step 1, wait here for S[OSCINIT] bit to become set indicating that the external clock source has finished its initialization cycles and stabilized. If in FEE mode, check to make sure the S[IREFST] bit is cleared before moving on. If in FBE mode, check to make sure the S[IREFST] bit is cleared and S[CLKST] bits have changed to 2'b10 indicating the external reference clock has been appropriately selected. Although the FLL is bypassed, it is still on in FBE mode. 4. Write to the C4 register to determine the DCO output (MCGFLLCLK) frequency range. By default, with C4[DMX32] cleared to 0, the FLL multiplier for the DCO output is 640. For greater flexibility, if a mid-low-range FLL multiplier of 1280 is desired instead, set C4[DRST_DRS] bits to 2'b01 for a DCO output frequency of 40 MHz. If a mid high-range FLL multiplier of 1920 is desired instead, set the C4[DRST_DRS] bits to 2'b10 for a DCO output frequency of 60 MHz. If a highrange FLL multiplier of 2560 is desired instead, set the C4[DRST_DRS] bits to 2'b11 for a DCO output frequency of 80 MHz. When using a 32.768 kHz external reference, if the maximum low-range DCO frequency that can be achieved with a 32.768 kHz reference is desired, set C4[DRST_DRS] bits to 2'b00 and set C4[DMX32] bit to 1. The resulting DCO output (MCGOUTCLK) frequency with the new multiplier of 732 will be 24 MHz.
When using a 32.768 kHz external reference, if the maximum mid-range DCO frequency that can be achieved with a 32.768 kHz reference is desired, set C4[DRST_DRS] bits to 2'b01 and set C4[DMX32] bit to 1. The resulting DCO output (MCGOUTCLK) frequency with the new multiplier of 1464 will be 48 MHz. When using a 32.768 kHz external reference, if the maximum mid high-range DCO frequency that can be achieved with a 32.768 kHz reference is desired, set C4[DRST_DRS] bits to 2'b10 and set C4[DMX32] bit to 1. The resulting DCO output (MCGOUTCLK) frequency with the new multiplier of 2197 will be 72 MHz. When using a 32.768 kHz external reference, if the maximum high-range DCO frequency that can be achieved with a 32.768 kHz reference is desired, set C4[DRST_DRS] bits to 2'b11 and set C4[DMX32] bit to 1. The resulting DCO output (MCGOUTCLK) frequency with the new multiplier of 2929 will be 96 MHz. 5. Wait for the FLL lock time to guarantee FLL is running at new C4[DRST_DRS] and C4[DMX32] programmed frequency. To change from FEI clock mode to FBI clock mode, follow this procedure: 1. Change C1[CLKS] bits in C1 register to 2'b01 so that the internal reference clock is selected as the system clock source. 2. Wait for S[CLKST] bits in the MCG status register to change to 2'b01, indicating that the internal reference clock has been appropriately selected. 3. Write to the C2 register to determine the IRCS output (IRCSCLK) frequency range. By default, with C2[IRCS] cleared to 0, the IRCS selected output clock is the slow internal reference clock (32 kHz IRC). If the faster IRC is desired, set C2[IRCS] bit to 1 for a IRCS output frequency of 2 MHz.
resulting DCO output frequency is 62.91 MHz at mid high-range. If C4[DRST_DRS] bits are set to 2'b11, the multiplication factor is set to 2560, and the resulting DCO output frequency is 83.89 MHz at high-range. In FBI and FEI modes, setting C4[DMX32] bit is not recommended. If the internal reference is trimmed to a frequency above 32.768 kHz, the greater FLL multiplication factor could potentially push the microcontroller system clock out of specification and damage the part.
1. FLL_R is the reference divider selected by the C1[FRDIV] bits, PLL_R is the reference divider selected by C5[PRDIV] bits, F is the FLL factor selected by C4[DRST_DRS] and C4[DMX32] bits, and M is the multiplier selected by C6[VDIV] bits.
This section will include 3 mode switching examples using an 4 MHz external crystal. If using an external clock source less than 2 MHz, the MCG should not be configured for any of the PLL modes (PEE and PBE).
24.5.3.1 Example 1: Moving from FEI to PEE Mode: External Crystal = 4 MHz, MCGOUT Frequency = 48 MHz
In this example, the MCG will move through the proper operational modes from FEI to PEE to achieve 48 MHz MCGOUT frequency from 4 MHz external crystal reference.. First, the code sequence will be described. Then a flowchart will be included which illustrates the sequence. 1. First, FEI must transition to FBE mode: a. C2 = 0x1C (2'b00011100) C2[RANGE] set to 2'b01 because the frequency of 4 MHz is within the high frequency range C2[HGO] set to 1 to configure the crystal oscillator for high gain operation C2[EREFS] set to 1, because a crystal is being used b. C1 = 0x90 (2'b10010000) C1[CLKS] set to 2'b10 in order to select external reference clock as system clock source C1[FRDIV] set to 2'b010, or divide-by-128 because 4 MHz / 128 = 31.25 kHz which is in the 31.25 kHz to 39.0625 kHz range required by the FLL C1[IREFS] cleared to 0, selecting the external reference clock and enabling the external oscillator.
c. Loop until S[OSCINIT] is 1, indicating the crystal selected by C2[EREFS] has been initialized.. d. Loop until S[IREFST] is 0, indicating the external reference is the current source for the reference clock e. Loop until S[CLKST] is 2'b10, indicating that the external reference clock is selected to feed MCGOUT 2. Then configure C5[PRDIV] to generate correct PLL reference frequency. a. C5 = 0x01 (2'b00000001) C5[PRDIV] set to 2'b001, or divide-by-2 resulting in a pll reference frequency of 4 MHz/2 = 2 MHz. 3. Then, FBE must transition either directly to PBE mode or first through BLPE mode and then to PBE mode: a. BLPE: If a transition through BLPE mode is desired, first set C2[LP] to 1. b. BLPE/PBE: C6 = 0x40 (2'b01000000) C6[PLLS] set to 1, selects the PLL. At this time, with a C1[PRDIV] value of 2'b001, the PLL reference divider is 2 (see PLL External Reference Divide Factor table), resulting in a reference frequency of 4 MHz/ 2 = 2 MHz. In BLPE mode,changing the C6[PLLS] bit only prepares the MCG for PLL usage in PBE mode. C6[VDIV] set to 2'b0000, or multiply-by-24 because 2 MHz reference * 24 = 48 MHz. In BLPE mode, the configuration of the VDIV bits does not matter because the PLL is disabled. Changing them only sets up the multiply value for PLL usage in PBE mode. c. BLPE: If transitioning through BLPE mode, clear C2[LP] to 0 here to switch to PBE mode. d. PBE: Loop until S[PLLST] is set, indicating that the current source for the PLLS clock is the PLL. e. PBE: Then loop until S[LOCK] is set, indicating that the PLL has acquired lock. 4. Lastly, PBE mode transitions into PEE mode: a. C1 = 0x10 (2'b00010000)
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 577
C1[CLKS] set to 2'b00 in order to select the output of the PLL as the system clock source. b. Loop until S[CLKST] are 2'b11, indicating that the PLL output is selected to feed MCGOUT in the current clock mode. Now, With PRDIV of divide-by-2, and C6[VDIV] of multiply-by-24, MCGOUT = [(4 MHz / 2) * 24] = 48 MHz.
C2 = 0x1C IN BLPE MODE ? (S[LP]=1) C1 = 0x90 YES C2 = 0x1C (S[LP]=0) CHECK S[OSCINIT] = 1? YES NO NO
NO
CHECK S[LOCK] = 1?
NO
NO
YES C1 = 0x10
NO
NO
YES
K40 Sub-Family Manual, Rev. 3, 4 Nov 2010an 4 MHz crystal Figure 24-13. Flowchart of FEIReference to PEE Mode Transition using
Freescale Semiconductor, Inc. 579
24.5.3.2 Example 2: Moving from PEE to BLPI Mode: MCGOUT Frequency =32 kHz
In this example, the MCG will move through the proper operational modes from PEE mode with a 4 MHz crystal configured for a 48 MHz MCGOUT frequency (see previous example) to BLPI mode with a 32 kHz MCGOUT frequency.First, the code sequence will be described. Then a flowchart will be included which illustrates the sequence. 1. First, PEE must transition to PBE mode: a. C1 = 0x90 (2'b10010000) C1[CLKS] set to 2'b10 in order to switch the system clock source to the external reference clock. b. Loop until S[CLKST] are 2'b10, indicating that the external reference clock is selected to feed MCGOUT. 2. Then, PBE must transition either directly to FBE mode or first through BLPE mode and then to FBE mode: a. BLPE: If a transition through BLPE mode is desired, first set C2[LP] to 1 b. BLPE/FBE: C6 = 0x00(2'b00000000) C6[PLLS] clear to 0 to select the FLL. At this time, with C1[FRDIV] value of 2'b010, the FLL divider is set to 128, resulting in a reference frequency of 4 MHz / 128 = 31.25 kHz. If C1[FRDIV] was not previously set to 2'b010 (necessary to achieve required 31.25-39.06 kHz FLL reference frequency with an 4 MHz external source frequency), it must be changed prior to clearing C6[PLLS] bit. In BLPE mode,changing this bit only prepares the MCG for FLL usage in FBE mode. With C6[PLLS] = 0, the C6[VDIV] value does not matter. c. BLPE: If transitioning through BLPE mode, clear C2[LP] to 0 here to switch to FBE mode. d. FBE: Loop until S[PLLST] is cleared, indicating that the current source for the PLLS clock is the FLL. 3. Next, FBE mode transitions into FBI mode: a. C1 = 0x54 (2'b01010100)
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
580 Freescale Semiconductor, Inc.
C1[CLKS] set to 2'b01 in order to switch the system clock to the internal reference clock. C1[IREFS] set to 1 to select the internal reference clock as the reference clock source. C1[FRDIV] remain unchanged because the reference divider does not affect the internal reference. b. Loop until S[IREFST] is 1, indicating the internal reference clock has been selected as the reference clock source. c. Loop until S[CLKST] are 2'b01, indicating that the internal reference clock is selected to feed MCGOUT. 4. Lastly, FBI transitions into BLPI mode. a. C2 = 0x02 (2'b00000010) C2[LP] is 1 C2[RANGE], C2[HGO], C2[EREFS], C1[IRCLKEN], and C1[IREFSTEN] bits are ignored when the C1[IREFS] bit is set. They can remain set, or be cleared at this point.
YES C1 = 0x54
NO
YES C2 = 0x02
IN BLPE MODE ? (S[LP]=1) NO
CONTINUE
IN BLPI MODE
Figure 24-14. Flowchart of PEE to BLPI Mode Transition using an 4 MHz crystal
g. At this point, by default, the C4[DRST_DRS] bits are set to 2'b00 and C4[DMX32] is cleared to 0. If the MCGOUT frequency of 40 MHz is desired instead, set the C4[DRST_DRS] bits to 0x01 to switch the FLL multiplication factor from 640 to 1280. To return the MCGOUT frequency to 20 MHz, set C4[DRST_DRS] bits to 2'b00 again, and the FLL multiplication factor will switch back to 640.
START IN BLPI MODE CHECK NO S[IREFST] = 0? C2 =0x00 YES C2 = 0x1C NO CHECK S[CLKST] = %00? C1 =0x10
YES CONTINUE
CHECK S[OSCINIT] = 1 ?
NO
IN FEE MODE
YES
Figure 24-15. Flowchart of BLPI to FEE Mode Transition using an 4 MHz crystal
Block Diagram
EXTAL
XTAL
XTL_CLK
Oscillator Circuits
ERCLKEN
EREFSTEN
OSC_EN
CNT_DONE_4096
OSCCLK
STOP
1. When the frequency of the crystal is less than 2 MHz and the load capacitors (Cx, Cy) are less than 16 pF, use Connection 4. 2. When the load capacitors (Cx, Cy) are greater than 30 pF, use Connection 3. 3. With the low-power mode, the oscillator has the internal feedback resistor Rf. Therefore, the feedback resistor must not be externally with the Connection 3.
OSC
XTAL
VSS
EXTAL
Crystal or Resonator
OSC
XTAL VSS EXTAL
RF
Crystal or Resonator
NOTE Connection 1 and Connection 2 should use internal capacitors as the load of the oscillator by configuring the CR[SCxP] bits.
OSC
XTAL
VSS
EXTAL
Cx
Cy
RF
Crystal or Resonator
OSC
XTAL
VSS
EXTAL
RS Cx Cy
RF
Crystal or Resonator
OSC
XTAL VSS EXTAL
I/O
Clock Input
00h
ERCLKEN 0
EREFSTEN 0
SC2P 0
SC4P 0
SC8P 0
SC16P 0
This read-only bit is reserved and always has the value zero. External Reference Stop Enable Controls whether or not the external reference clock (OSCERCLK) remains enabled when MCU enters Stop mode. 0 1 External reference clock is disabled in Stop mode. External reference clock stays enabled in Stop mode if ERCLKEN is set before entering Stop mode.
4 Reserved 3 SC2P
This read-only bit is reserved and always has the value zero. Oscillator 2 pF Capacitor Load Configure Configures the oscillator load. 0 1 Disable the selection. Add 2 pF capacitor to the oscillator load. Table continues on the next page...
Oscillator 8 pF Capacitor Load Configure Configures the oscillator load. 0 1 Disable the selection. Add 8 pF capacitor to the oscillator load.
0 SC16P
Oscillator 16 pF Capacitor Load Configure Configures the oscillator load. 0 1 Disable the selection. Add 16 pF capacitor to the oscillator load.
Functional Description
Off
OSCCLK
not requested
Start-Up
Oscillator ON, not yet stable OSC_CLK_OUT = Static
CNT_DONE_4096
Stable
Oscillator ON, Stable OSC_CLK_OUT = XTL_CLK
25.8.1.1 Off
The OSC enters the Off state when the system does not require OSC clocks. Upon entering this state, XTL_CLK is static unless OSC is configured to select the clock from the EXTAL pad by clearing the external reference clock selection bit. For details regarding the external reference clock source in this MCU, refer to the chip configuration chapter. The EXTAL and XTAL pins are also decoupled from all other oscillator circuitry in this state. The OSC module circuitry is configured to draw minimal current.
Functional Description
NOTE For information about low power modes of operation used in this chip and their alignment with some OSC modes, refer to the chip's Power Management details.
25.8.3 Counter
The oscillator output clock (OSC_CLK_OUT) is gated off until the counter has detected 4096 cycles of its input clock (XTL_CLK). After 4096 cycles are completed, the counter passes XTL_CLK onto OSC_CLK_OUT. This counting time-out is used to guarantee output clock stability.
25.9 Reset
There is no reset state associated with the OSC module. The counter logic is reset when the OSC is not configured to generate clocks. There are no sources of reset requests for the OSC module.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 595
Interrupts
25.10 Interrupts
The OSC module does not generate any interrupts.
Rf
XTAL32
C1
C2
PAD
PAD
XTAL32
VSS
EXTAL32
Crystal or Resonator
Functional Description
26.7 Interrupts
The RTC oscillator does not generate any interrupts.
27.1.1 Overview
The Flash Memory Controller manages the interface between the device and the dualbank, 64-bit flash memory. The FMC receives status information detailing the configuration of the memory and uses this information to ensure a proper interface. The following table shows the supported 8-bit, 16-bit, and 32-bit read/write operations.
Flash memory type
Program flash memory FlexNVM FlexRAM
Read
x x x
Write
1 1 x
In addition, the FMC provides three separate mechanisms for accelerating the interface between the device and the flash memory. A 64-bit speculation buffer can prefetch the next 64-bit flash memory location, and both a 4-way, 8-set cache and a single entry 64-bit buffer can store previously accessed flash memory or FlexMemory data for quick access times.
27.1.2 Features
The FMC's features include:
1. A write operation to flash memory or FlexNVM results in an error condition.
Modes of operation
Interface between the device and the dual-bank, 64-bit flash memory and FlexMemory: 8-bit, 16-bit, and 32-bit read operations to program flash memory and FlexNVM. 8-bit, 16-bit, and 32-bit read and write operations to FlexRAM used as EEPROM. Consecutive read accesses (such as 0x0,0x4) return the second read data with no wait states. The memory returns 64 bits via the 32-bit bus access. Crossbar master access protection for setting no access, read only access, write only access, or read/write access for each crossbar master. Acceleration of data transfer from flash memory and FlexMemory to the device: 64-bit prefetch speculation buffer with controls for instruction/data access per master and bank 4-way, 8-set, 64-bit line size cache for a total of thirty-two 64-bit entries with controls for replacement algorithm and lock per way for each bank Single-entry buffer with enable per bank Invalidation control for each buffer
NOTE Program the registers only while the flash controller is idle (for example, execute from RAM). Changing configuration settings while a flash access is in progress can lead to non-deterministic behavior. NOTE Accesses to unimplemented registers within the FMC's 4 KB address space results in undefined behavior. The 32 cache entries, both data and tag/valid, can be read at any time. NOTE System software is required to maintain memory coherence when any segment of the flash cache is programmed. For example, all buffer data associated with the reprogrammed flash should be invalidated. Accordingly, cache program visible writes must occur after a programming or erase event is completed and before the new memory image is accessed. Cache program visible writes must be 32-bits long and must be executed while in supervisor (privileged) mode. The cache is a 4-way, set-associative cache with 8 sets. The ways are numbered 0-3 and the sets are numbered 0-7. The following table elaborates on the tag/valid and data entries.
Table 27-2. Program visible cache registers
Cache storage Directory Based at offset 100h Contents of 32-bit read 13'h0, tag[18:6], 5'h0, valid Nomenclature In TAGVDWxSy, x denotes the way and y denotes the set. In DATAWxSyU and DATAWxSyL, x denotes the way, y denotes the set, and U and L represent upper and lower word, respectively. Nomenclature example TAGVDW2S7 is the 13-bit tag and 1-bit valid for cache entry way 2, set 7. DATAW1S3U represents bits [63:32] of data entry way 1, set 3, and DATAW1S3L rep resents bits [31:0] of data en try way 1, set 3.
Data
200h
00F8_003Fh
Flash Bank 0 Control Register (FMC_PFB0CR) Flash Bank 1 Control Register (FMC_PFB1CR) Cache Directory Storage (FMC_TAGVDW0S0) Cache Directory Storage (FMC_TAGVDW0S1) Cache Directory Storage (FMC_TAGVDW0S2) Cache Directory Storage (FMC_TAGVDW0S3) Cache Directory Storage (FMC_TAGVDW0S4) Cache Directory Storage (FMC_TAGVDW0S5) Cache Directory Storage (FMC_TAGVDW0S6) Cache Directory Storage (FMC_TAGVDW0S7) Cache Directory Storage (FMC_TAGVDW1S0) Cache Directory Storage (FMC_TAGVDW1S1) Cache Directory Storage (FMC_TAGVDW1S2) Cache Directory Storage (FMC_TAGVDW1S3) Cache Directory Storage (FMC_TAGVDW1S4) Cache Directory Storage (FMC_TAGVDW1S5) Cache Directory Storage (FMC_TAGVDW1S6) Cache Directory Storage (FMC_TAGVDW1S7) Cache Directory Storage (FMC_TAGVDW2S0) Cache Directory Storage (FMC_TAGVDW2S1)
3002_001Fh 3002_001Fh 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Cache Directory Storage (FMC_TAGVDW2S2) Cache Directory Storage (FMC_TAGVDW2S3) Cache Directory Storage (FMC_TAGVDW2S4) Cache Directory Storage (FMC_TAGVDW2S5) Cache Directory Storage (FMC_TAGVDW2S6) Cache Directory Storage (FMC_TAGVDW2S7) Cache Directory Storage (FMC_TAGVDW3S0) Cache Directory Storage (FMC_TAGVDW3S1) Cache Directory Storage (FMC_TAGVDW3S2) Cache Directory Storage (FMC_TAGVDW3S3) Cache Directory Storage (FMC_TAGVDW3S4) Cache Directory Storage (FMC_TAGVDW3S5) Cache Directory Storage (FMC_TAGVDW3S6) Cache Directory Storage (FMC_TAGVDW3S7) Cache Data Storage (upper word) (FMC_DATAW0S0U) Cache Data Storage (lower word) (FMC_DATAW0S0L) Cache Data Storage (upper word) (FMC_DATAW0S1U) Cache Data Storage (lower word) (FMC_DATAW0S1L) Cache Data Storage (upper word) (FMC_DATAW0S2U) Cache Data Storage (lower word) (FMC_DATAW0S2L)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Cache Data Storage (upper word) (FMC_DATAW0S3U) Cache Data Storage (lower word) (FMC_DATAW0S3L) Cache Data Storage (upper word) (FMC_DATAW0S4U) Cache Data Storage (lower word) (FMC_DATAW0S4L) Cache Data Storage (upper word) (FMC_DATAW0S5U) Cache Data Storage (lower word) (FMC_DATAW0S5L) Cache Data Storage (upper word) (FMC_DATAW0S6U) Cache Data Storage (lower word) (FMC_DATAW0S6L) Cache Data Storage (upper word) (FMC_DATAW0S7U) Cache Data Storage (lower word) (FMC_DATAW0S7L) Cache Data Storage (upper word) (FMC_DATAW1S0U) Cache Data Storage (lower word) (FMC_DATAW1S0L) Cache Data Storage (upper word) (FMC_DATAW1S1U) Cache Data Storage (lower word) (FMC_DATAW1S1L) Cache Data Storage (upper word) (FMC_DATAW1S2U) Cache Data Storage (lower word) (FMC_DATAW1S2L) Cache Data Storage (upper word) (FMC_DATAW1S3U) Cache Data Storage (lower word) (FMC_DATAW1S3L) Cache Data Storage (upper word) (FMC_DATAW1S4U) Cache Data Storage (lower word) (FMC_DATAW1S4L)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Cache Data Storage (upper word) (FMC_DATAW1S5U) Cache Data Storage (lower word) (FMC_DATAW1S5L) Cache Data Storage (upper word) (FMC_DATAW1S6U) Cache Data Storage (lower word) (FMC_DATAW1S6L) Cache Data Storage (upper word) (FMC_DATAW1S7U) Cache Data Storage (lower word) (FMC_DATAW1S7L) Cache Data Storage (upper word) (FMC_DATAW2S0U) Cache Data Storage (lower word) (FMC_DATAW2S0L) Cache Data Storage (upper word) (FMC_DATAW2S1U) Cache Data Storage (lower word) (FMC_DATAW2S1L) Cache Data Storage (upper word) (FMC_DATAW2S2U) Cache Data Storage (lower word) (FMC_DATAW2S2L) Cache Data Storage (upper word) (FMC_DATAW2S3U) Cache Data Storage (lower word) (FMC_DATAW2S3L) Cache Data Storage (upper word) (FMC_DATAW2S4U) Cache Data Storage (lower word) (FMC_DATAW2S4L) Cache Data Storage (upper word) (FMC_DATAW2S5U) Cache Data Storage (lower word) (FMC_DATAW2S5L) Cache Data Storage (upper word) (FMC_DATAW2S6U) Cache Data Storage (lower word) (FMC_DATAW2S6L)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Cache Data Storage (upper word) (FMC_DATAW2S7U) Cache Data Storage (lower word) (FMC_DATAW2S7L) Cache Data Storage (upper word) (FMC_DATAW3S0U) Cache Data Storage (lower word) (FMC_DATAW3S0L) Cache Data Storage (upper word) (FMC_DATAW3S1U) Cache Data Storage (lower word) (FMC_DATAW3S1L) Cache Data Storage (upper word) (FMC_DATAW3S2U) Cache Data Storage (lower word) (FMC_DATAW3S2L) Cache Data Storage (upper word) (FMC_DATAW3S3U) Cache Data Storage (lower word) (FMC_DATAW3S3L) Cache Data Storage (upper word) (FMC_DATAW3S4U) Cache Data Storage (lower word) (FMC_DATAW3S4L) Cache Data Storage (upper word) (FMC_DATAW3S5U) Cache Data Storage (lower word) (FMC_DATAW3S5L) Cache Data Storage (upper word) (FMC_DATAW3S6U) Cache Data Storage (lower word) (FMC_DATAW3S6L) Cache Data Storage (upper word) (FMC_DATAW3S7U) Cache Data Storage (lower word) (FMC_DATAW3S7L)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
M7PFD
M6PFD
M5PFD
M4PFD
M3PFD
M2PFD
M1PFD
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
1
7
1
6
1
5
1
4
1
3
0
2
0
1
M7AP[1:0]
W
M6AP[1:0]
M5AP[1:0]
M4AP[1:0]
M3AP[1:0]
M2AP[1:0]
M1AP[1:0]
M0AP[1:0]
Reset
Master 6 Prefetch Disable These bits control whether prefetching is enabled based on the logical number of the requesting crossbar switch master. This field is further qualified by the PFBnCR[BxDPE,BxIPE] bits. 0 1 Prefetching for this master is enabled. Prefetching for this master is disabled.
21 M5PFD
Master 5 Prefetch Disable These bits control whether prefetching is enabled based on the logical number of the requesting crossbar switch master. This field is further qualified by the PFBnCR[BxDPE,BxIPE] bits. 0 1 Prefetching for this master is enabled. Prefetching for this master is disabled.
20 M4PFD
M0PFD
0
0
Master 3 Prefetch Disable These bits control whether prefetching is enabled based on the logical number of the requesting crossbar switch master. This field is further qualified by the PFBnCR[BxDPE,BxIPE] bits. 0 1 Prefetching for this master is enabled. Prefetching for this master is disabled.
18 M2PFD
Master 2 Prefetch Disable These bits control whether prefetching is enabled based on the logical number of the requesting crossbar switch master. This field is further qualified by the PFBnCR[BxDPE,BxIPE] bits. 0 1 Prefetching for this master is enabled. Prefetching for this master is disabled.
17 M1PFD
Master 1 Prefetch Disable These bits control whether prefetching is enabled based on the logical number of the requesting crossbar switch master. This field is further qualified by the PFBnCR[BxDPE,BxIPE] bits. 0 1 Prefetching for this master is enabled. Prefetching for this master is disabled.
16 M0PFD
Master 0 Prefetch Disable These bits control whether prefetching is enabled based on the logical number of the requesting crossbar switch master. This field is further qualified by the PFBnCR[BxDPE,BxIPE] bits. 0 1 Prefetching for this master is enabled. Prefetching for this master is disabled.
1514 M7AP[1:0]
Master 7 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. 00 01 10 11 No access may be performed by this master. Only read accesses may be performed by this master. Only write accesses may be performed by this master. Both read and write accesses may be performed by this master.
1312 M6AP[1:0]
Master 6 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. 00 01 10 11 No access may be performed by this master Only read accesses may be performed by this master Only write accesses may be performed by this master Both read and write accesses may be performed by this master Table continues on the next page...
Master 4 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. 00 01 10 11 No access may be performed by this master Only read accesses may be performed by this master Only write accesses may be performed by this master Both read and write accesses may be performed by this master
76 M3AP[1:0]
Master 3 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. 00 01 10 11 No access may be performed by this master Only read accesses may be performed by this master Only write accesses may be performed by this master Both read and write accesses may be performed by this master
54 M2AP[1:0]
Master 2 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. 00 01 10 11 No access may be performed by this master Only read accesses may be performed by this master Only write accesses may be performed by this master Both read and write accesses may be performed by this master
32 M1AP[1:0]
Master 1 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. 00 01 10 11 No access may be performed by this master Only read accesses may be performed by this master Only write accesses may be performed by this master Both read and write accesses may be performed by this master
10 M0AP[1:0]
Master 0 Access Protection This field controls whether read and write access to the flash are allowed based on the logical master number of the requesting crossbar switch master. Table continues on the next page...
B0RWSC[3:0] CLCK_WAY[3:0]
0 CINV_WAY[3:0]
0 S_B_ INV
B0MW[1:0]
Reset
Bit R
0
15
0
14
1
13
1
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
1
1
0
0
CRC[2:0]
W
Reset
B0SEBE 1
B0DCE
B0DPE
B0ICE
B0IPE
Invalidate Prefetch Speculation Buffer This bit determines if the FMC's prefetch speculation buffer and the single entry page buffer are to be invalidated (cleared). When this bit is written, the speculation buffer and single entry buffer are immediately cleared. This bit always reads as zero. 0 1 Speculation buffer and single entry buffer are not affected. Invalidate (clear) speculation buffer and single entry buffer.
1817 B0MW[1:0]
Bank 0 Memory Width This read-only field defines the width of the bank 0 memory. 00 01 1x 32 bits 64 bits Reserved
This read-only bit is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero. Cache Replacement Control This 3-bit field defines the replacement algorithm for accesses that are cached. 000 001 010 011 1xx LRU replacement algorithm per set across all four ways Reserved Independent LRU with ways [0-1] for ifetches, [2-3] for data Independent LRU with ways [0-2] for ifetches, [3] for data Reserved
4 B0DCE
Bank 0 Data Cache Enable This bit controls whether data references are loaded into the cache. 0 1 Do not cache data references. Cache data references.
3 B0ICE
Bank 0 Data Prefetch Enable This bit controls whether prefetches (or speculative accesses) are initiated in response to data references. 0 1 Do not prefetch in response to data references. Enable prefetches in response to data references.
1 B0IPE
Bank 0 Instruction Prefetch Enable This bit controls whether prefetches (or speculative accesses) are initiated in response to instruction fetches. 0 1 Do not prefetch in response to instruction fetches. Enable prefetches in response to instruction fetches.
0 B0SEBE
Bank 0 Single Entry Buffer Enable This bit controls whether the single entry page buffer is enabled in response to flash read accesses. Its operation is independent from bank 1's cache. A high-to-low transition of this enable forces the page buffer to be invalidated. 0 1 Single entry buffer is disabled. Single entry buffer is enabled.
B1RWSC[3:0]
B1MW[1:0]
Reset
Bit R
0
15
0
14
1
13
1
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
1
1
0
0
Reset
B1SEBE 1
B1DCE
B1DPE
B1ICE
B1IPE
This read-only bit is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero. Bank 1 Data Cache Enable This bit controls whether data references are loaded into the cache. 0 1 Do not cache data references. Cache data references.
3 B1ICE
Bank 1 Instruction Cache Enable This bit controls whether instruction fetches are loaded into the cache. 0 1 Do not cache instruction fetches. Cache instruction fetches.
2 B1DPE
Bank 1 Data Prefetch Enable This bit controls whether prefetches (or speculative accesses) are initiated in response to data references. 0 1 Do not prefetch in response to data references. Enable prefetches in response to data references.
1 B1IPE
Bank 1 Instruction Prefetch Enable This bit controls whether prefetches (or speculative accesses) are initiated in response to instruction fetches. 0 1 Do not prefetch in response to instruction fetches. Enable prefetches in response to instruction fetches. Table continues on the next page...
tag[18:6] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
valid 0
tag[18:6] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
valid 0
Memory map and register descriptions Addresses: FMC_TAGVDW2S0 4001_F000h base + 140h offset = 4001_F140h FMC_TAGVDW2S1 4001_F000h base + 144h offset = 4001_F144h FMC_TAGVDW2S2 4001_F000h base + 148h offset = 4001_F148h FMC_TAGVDW2S3 4001_F000h base + 14Ch offset = 4001_F14Ch FMC_TAGVDW2S4 4001_F000h base + 150h offset = 4001_F150h FMC_TAGVDW2S5 4001_F000h base + 154h offset = 4001_F154h FMC_TAGVDW2S6 4001_F000h base + 158h offset = 4001_F158h FMC_TAGVDW2S7 4001_F000h base + 15Ch offset = 4001_F15Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
tag[18:6] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
valid 0
Chapter 27 Flash Memory Controller (FMC) Addresses: FMC_TAGVDW3S0 4001_F000h base + 160h offset = 4001_F160h FMC_TAGVDW3S1 4001_F000h base + 164h offset = 4001_F164h FMC_TAGVDW3S2 4001_F000h base + 168h offset = 4001_F168h FMC_TAGVDW3S3 4001_F000h base + 16Ch offset = 4001_F16Ch FMC_TAGVDW3S4 4001_F000h base + 170h offset = 4001_F170h FMC_TAGVDW3S5 4001_F000h base + 174h offset = 4001_F174h FMC_TAGVDW3S6 4001_F000h base + 178h offset = 4001_F178h FMC_TAGVDW3S7 4001_F000h base + 17Ch offset = 4001_F17Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
tag[18:6] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
valid 0
Memory map and register descriptions Addresses: FMC_DATAW0S0U 4001_F000h base + 200h offset = 4001_F200h FMC_DATAW0S1U 4001_F000h base + 208h offset = 4001_F208h FMC_DATAW0S2U 4001_F000h base + 210h offset = 4001_F210h FMC_DATAW0S3U 4001_F000h base + 218h offset = 4001_F218h FMC_DATAW0S4U 4001_F000h base + 220h offset = 4001_F220h FMC_DATAW0S5U 4001_F000h base + 228h offset = 4001_F228h FMC_DATAW0S6U 4001_F000h base + 230h offset = 4001_F230h FMC_DATAW0S7U 4001_F000h base + 238h offset = 4001_F238h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
data[63:32] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data[63:32] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Memory map and register descriptions Addresses: FMC_DATAW1S0L 4001_F000h base + 244h offset = 4001_F244h FMC_DATAW1S1L 4001_F000h base + 24Ch offset = 4001_F24Ch FMC_DATAW1S2L 4001_F000h base + 254h offset = 4001_F254h FMC_DATAW1S3L 4001_F000h base + 25Ch offset = 4001_F25Ch FMC_DATAW1S4L 4001_F000h base + 264h offset = 4001_F264h FMC_DATAW1S5L 4001_F000h base + 26Ch offset = 4001_F26Ch FMC_DATAW1S6L 4001_F000h base + 274h offset = 4001_F274h FMC_DATAW1S7L 4001_F000h base + 27Ch offset = 4001_F27Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
data[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data[63:32] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Memory map and register descriptions Addresses: FMC_DATAW3S0U 4001_F000h base + 2C0h offset = 4001_F2C0h FMC_DATAW3S1U 4001_F000h base + 2C8h offset = 4001_F2C8h FMC_DATAW3S2U 4001_F000h base + 2D0h offset = 4001_F2D0h FMC_DATAW3S3U 4001_F000h base + 2D8h offset = 4001_F2D8h FMC_DATAW3S4U 4001_F000h base + 2E0h offset = 4001_F2E0h FMC_DATAW3S5U 4001_F000h base + 2E8h offset = 4001_F2E8h FMC_DATAW3S6U 4001_F000h base + 2F0h offset = 4001_F2F0h FMC_DATAW3S7U 4001_F000h base + 2F8h offset = 4001_F2F8h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
data[63:32] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
data[31:0] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Functional description
Flash memory is ideal for single-supply applications, permitting in-the-field erase and reprogramming operations without the need for any external high voltage power sources. The FTFL module includes a memory controller that executes commands to modify flash memory contents. An erased bit reads '1' and a programmed bit reads '0'. The programming operation is unidirectional; it can only move bits from the '1' state (erased) to the '0' state (programmed). Only the erase operation restores bits from '0' to '1'; bits cannot be programmed from a '0' to a '1'. CAUTION A flash memory location must be in the erased state before being programmed. Cumulative programming of bits (back-toback program operations without an intervening erase) within a flash memory location is not allowed. Re-programming of existing 0s to 0 is not allowed as this overstresses the device. The standard shipping condition for flash memory is erased with security disabled. Data loss over time may occur due to degradation of the erased ('1') states and/or programmed ('0') states. Therefore, it is recommended that each flash block or sector be re-erased immediately prior to factory programming to ensure that the full data retention capability is achieved.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 627
Introduction
28.1.1 Features
The FTFL module includes the following features. NOTE See the device's Chip Configuration details for the exact amount of flash memory available on your device.
Introduction
Register access
Program flash
FlexNVM
Data flash
FlexRAM
EEPROM backup
Register access
Program flash 0
Program flash 1
28.1.3 Glossary
Command write sequence A series of MCU writes to the Flash FCCOB register group that initiates and controls the execution of Flash algorithms that are built into the FTFL module. Data flash memory Partitioned from the FlexNVM block, the data flash memory provides nonvolatile storage for user data, boot code, and additional code store. Data flash sector The data flash sector is the smallest portion of the data flash memory that can be erased. EEPROM Using a built-in filing system, the FTFL module emulates the characteristics of an EEPROM by effectively providing a high-endurance, byte-writeable (program and erase) NVM. EEPROM backup data header The EEPROM backup data header is comprised of a 32-bit field found in EEPROM backup data memory which contains information used by the EEPROM filing system to determine the status of a specific EEPROM backup flash sector. EEPROM backup data record The EEPROM backup data record is comprised of a 2-bit status field, a 14-bit address field, and a 16-bit data field found in EEPROM backup data memory which is used by the EEPROM filing system. If the status field indicates a record is valid, the data field is mirrored in the FlexRAM at a location determined by the address field. EEPROM backup data memory Partitioned from the FlexNVM block, EEPROM backup data memory provides nonvolatile storage for the EEPROM filing system representing data written to the FlexRAM requiring highest endurance. EEPROM backup data sector The EEPROM backup data sector contains one EEPROM header and up to 255 EEPROM backup data records, which are used by the EEPROM filing system. Endurance The number of times that a flash memory location can be erased and reprogrammed. FCCOB (Flash Common Command Object) A group of flash registers that are used to pass command, address, data, and any associated parameters to the memory controller in the FTFL module. Flash block A macro within the FTFL module which provides the nonvolatile memory storage.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 631
Introduction
FlexMemory FTFL configuration that supports data flash, EEPROM, and FlexRAM. FlexNVM Block The FlexNVM block can be configured to be used as data flash memory, EEPROM backup flash memory, or a combination of both. FlexRAM The FlexRAM refers to a RAM, dedicated to the FTFL module, that can be configured to store EEPROM data or as traditional RAM. When configured for EEPROM, valid writes to the FlexRAM generates a new EEPROM backup data record stored in the EEPROM backup flash memory. FTFL Module All flash blocks plus a digital logic wrapper providing high-level control, an interface to MCU buses. IFR Nonvolatile information register found in each flash block, separate from the main memory array. NVM Nonvolatile memory. A memory technology that maintains stored data during power-off. The flash array is an NVM using NOR-type flash memory technology. NVM Normal Mode An NVM mode that provides basic user access to FTFL resources. The CPU or other bus masters initiate flash program and erase operations (or other FTFL commands) using writes to the FCCOB register group in the FTFL module. NVM Special Mode An NVM mode enabling external, off-chip access to the memory resources in the FTFL module. A reduced FTFL command set is available when the MCU is secured. See the Chip Configuration details for information on when this mode is used. Phrase 64 bits of data with an aligned phrase having byte-address[2:0] = 000. Longword 32 bits of data with an aligned longword having byte-address[1:0] = 00. Word 16 bits of data with an aligned word having byte-address[0] = 0. Program flash The program flash memory provides nonvolatile storage for vectors and code store. Program flash Sector The smallest portion of the program flash memory (consecutive addresses) that can be erased. Retention The length of time that data can be kept in the NVM without experiencing errors upon readout. Since erased (1) states are subject to degradation just like programmed (0) states, the data retention limit may be reached from the last erase operation (not from the programming time). RWW Read-While-Write. The ability to simultaneously read from one memory resource while commanded operations are active in another memory resource.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
632 Freescale Semiconductor, Inc.
Section Program Buffer Lower half of the programming acceleration FlexRAM allocated for storing large amounts of data for programming via the Program Section command. Secure An MCU state conveyed to the FTFL module as described in the Chip Configuration details for this device. In the secure state, reading and changing NVM contents is restricted.
Size (Bytes)
8
Field Description
Backdoor Comparison Key. Refer to Verify Backdoor Access Key Command and Unsecuring the MCU Using Backdoor Key Access. Program flash protection bytes. Refer to the description of the Program Flash Protection Registers (FPROT0-3). Program flash only devices: Reserved FlexNVM devices: Data flash protection byte. Refer to the description of the Data Flash Protection Register (FDPROT).
0x0_0408 - 0x0_040B
0x0_040F
Memory Map and Registers 0x0_040E 1 Program flash only devices: Reserved FlexNVM devices: EEPROM protection byte. Refer to the description of the EEPROM Protection Register (FEPROT). 0x0_040D 1 Flash nonvolatile option byte. Refer to the description of the Flash Option Register (FOPT). Flash security byte. Refer to the description of the Flash Security Register (FSEC).
0x0_040C
Size (Bytes)
190 64
Field Description
Reserved Program Once Field
command in Erase All Blocks Command , and the Read Resource command in Read Resource Command ). The contents of the data flash IFR are summarized in the following table and further described in the subsequent paragraphs.
Address Range
0x00 0xFB, 0xFE 0xFF 0xFD 0xFC
Size (Bytes)
254 1 1
Field Description
Reserved EEPROM data set size FlexNVM partition code
DEPART
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Flash Status Register (FTFL_FSTAT) Flash Configuration Register (FTFL_FCNFG) Flash Security Register (FTFL_FSEC) Flash Option Register (FTFL_FOPT) Flash Common Command Object Registers (FTFL_FCCOB3) Flash Common Command Object Registers (FTFL_FCCOB2) Flash Common Command Object Registers (FTFL_FCCOB1) Flash Common Command Object Registers (FTFL_FCCOB0) Flash Common Command Object Registers (FTFL_FCCOB7) Flash Common Command Object Registers (FTFL_FCCOB6) Flash Common Command Object Registers (FTFL_FCCOB5) Flash Common Command Object Registers (FTFL_FCCOB4) Flash Common Command Object Registers (FTFL_FCCOBB) Flash Common Command Object Registers (FTFL_FCCOBA) Flash Common Command Object Registers (FTFL_FCCOB9) Flash Common Command Object Registers (FTFL_FCCOB8) Program Flash Protection Registers (FTFL_FPROT3) Program Flash Protection Registers (FTFL_FPROT2) Program Flash Protection Registers (FTFL_FPROT1) Program Flash Protection Registers (FTFL_FPROT0) Table continues on the next page...
00h 00h 0Xh 0Xh 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 0Xh 0Xh 0Xh 0Xh
0Xh 0Xh
CCIF w1c 0
RDCOLERR w1c
ACCERR w1c 0
FPVIOL w1c 0 0
MGSTAT0
FTFL Read Collision Error Flag The RDCOLERR error bit indicates that the MCU attempted a read from an FTFL resource that was being manipulated by an FTFL command (CCIF=0). Any simultaneous access is detected as a collision error by Table continues on the next page...
Flash Access Error Flag The ACCERR error bit indicates an illegal access has occurred to an FTFL resource caused by a violation of the command write sequence or issuing an illegal FTFL command. While ACCERR is set, the CCIF flag cannot be cleared to launch a command. The ACCERR bit is cleared by writing a 1 to it. Writing a 0 to the ACCERR bit has no effect. 0 1 No access error detected Access error detected
4 FPVIOL
Flash Protection Violation Flag The FPVIOL error bit indicates an attempt was made to program or erase an address in a protected area of program flash or data flash memory during a command write sequence or a write was attempted to a protected area of the FlexRAM while enabled for EEPROM. The FPVIOL bit is cleared by writing a 1 to it. Writing a 0 to the FPVIOL bit has no effect. While FPVIOL is set, the CCIF flag cannot be cleared to launch a command. 0 1 No protection violation detected Protection violation detected
31 Reserved 0 MGSTAT0
This read-only bitfield is reserved and always has the value zero. Memory Controller Command Completion Status Flag The MGSTAT0 status flag is set if an error is detected during execution of an FTFL command or during the flash reset sequence. As a status flag, this bit cannot (and need not) be cleared by the user like the other error flags in this register. The value of the MGSTAT0 bit for "command-N" is valid only at the end of the "command-N" execution when CCIF=1 and before the next command has been launched. At some point during the execution of "command-N+1," the previous result is discarded and any previous error is cleared.
Chapter 28 Flash Memory Module (FTFL) Address: FTFL_FCNFG 4002_0000h base + 1h offset = 4002_0001h
Bit 7 6 5 4 3 2 1 0
CCIE 0
RDCOLLIE 0
ERSAREQ
ERSSUSP 0
SWAP
PFLSH
RAMRDY
EEERDY
Read Collision Error Interrupt Enable The RDCOLLIE bit controls interrupt generation when an FTFL read collision error occurs. 0 1 Read collision error interrupt disabled Read collision error interrupt enabled. An interrupt request is generated whenever an FTFL read collision error is detected (see the description of FSTAT[RDCOLERR]).
5 ERSAREQ
Erase All Request This bit issues a request to the memory controller to execute the Erase All Blocks command and release security. ERSAREQ is not directly writable but is under indirect user control. Refer to the device's Chip Configuration details on how to request this command. The ERSAREQ bit sets when an erase all request is triggered external to the FTFL and CCIF is set (no command is currently being executed). ERSAREQ is cleared by the FTFL when the operation completes. 0 1 No request or request complete Request to: 1.run the Erase All Blocks command,2.verify the erased state,3.program the security byte in the Flash Configuration Field to the unsecure state, and4.release MCU security by setting the FSEC[SEC] field to the unsecure state.
4 ERSSUSP
Erase Suspend The ERSSUSP bit allows the user to suspend (interrupt) the Erase Flash Sector command while it is executing. 0 1 No suspend requested Suspend the current Erase Flash Sector command execution.
3 SWAP
Swap For program flash only configurations, the SWAP flag indicates which physical program flash block is located at relative address 0x0000. The state of the SWAP flag is set by the FTFL during the reset sequence. See the Chip Configuration details for information on swap management. 0 1 Physical program flash 0 is located at relative address 0x0000 If the PFLSH flag is set, physical program flash 1 is located at relative address 0x0000. If the PFLSH flag is not set, physical program flash 0 is located at relative address 0x0000 Table continues on the next page...
RAM Ready This flag indicates the current status of the FlexRAM/programming acceleration RAM. For devices with FlexNVM: The state of the RAMRDY flag is normally controlled by the Set FlexRAM Function command. During the reset sequence, the RAMRDY flag is cleared if the FlexNVM block is partitioned for EEPROM and is set if the FlexNVM block is not partitioned for EEPROM. The RAMRDY flag is cleared if the Program Partition command is run to partition the FlexNVM block for EEPROM. The RAMRDY flag sets after completion of the Erase All Blocks command or execution of the erase-all operation triggered external to the FTFL. For devices without FlexNVM: This bit should always be set. 0 1 For devices with FlexNVM: FlexRAM is not available for traditional RAM access.For devices without FlexNVM: Programming acceleration RAM is not available. For devices with FlexNVM: FlexRAM is available as traditional RAM only; writes to the FlexRAM do not trigger EEPROM operations.For devices without FlexNVM: Programming acceleration RAM is available.
0 EEERDY
For devices with FlexNVM: This flag indicates if the EEPROM backup data has been copied to the FlexRAM and is therefore available for read access. For devices without FlexNVM: This field is reserved. 0 1 For devices with FlexNVM: FlexRAM is not available for EEPROM operation. For devices with FlexNVM: FlexRAM is available for EEPROM operations where: reads from the FlexRAM return data previously written to the FlexRAM in EEPROM mode andwrites launch an EEPROM operation to store the written data in the FlexRAM and EEPROM backup.
Chapter 28 Flash Memory Module (FTFL) Address: FTFL_FSEC 4002_0000h base + 2h offset = 4002_0002h
Bit 7 6 5 4 3 2 1 0
KEYEN
MEEN
FSLACC
SEC
x*
x*
x*
x*
x*
x*
x*
Mass Erase Enable Bits Enables and disables mass erase capability of the FTFL module. The state of the MEEN bits is only relevant when the SEC bits are set to secure outside of NVM Normal Mode. When the SEC field is set to unsecure, the MEEN setting does not matter. 00 01 10 11 Mass erase is enabled Mass erase is enabled Mass erase is disabled Mass erase is enabled
32 FSLACC
Freescale Failure Analysis Access Code These bits enable or disable access to the flash memory contents during returned part failure analysis at Freescale. When SEC is secure and FSLACC is denied, access to the program flash contents is denied and any failure analysis performed by Freescale factory test must begin with a full erase to unsecure the part. When access is granted (SEC is unsecure, or SEC is secure and FSLACC is granted), Freescale factory testing has visibility of the current flash contents. The state of the FSLACC bits is only relevant when the SEC bits are set to secure. When the SEC field is set to unsecure, the FSLACC setting does not matter. 00 01 10 11 Freescale factory access granted Freescale factory access denied Freescale factory access denied Freescale factory access granted
10 SEC
Flash Security These bits define the security state of the MCU. In the secure state, the MCU limits access to FTFL module resources. The limitations are defined per device and are detailed in the Chip Configuration details. If the FTFL module is unsecured using backdoor key access, the SEC bits are forced to 10b. 00 01 MCU security status is secure MCU security status is secure Table continues on the next page...
OPT
x*
x*
x*
x*
Chapter 28 Flash Memory Module (FTFL) Addresses: 4002_0000h base + 4h offset + (1d n), where n = 0d to 11d
Bit 7 6 5 4 3 2 1 0
CCOBn 0 0 0 0
1. Refers to FCCOB register name, not register address FCCOB Endianness and Multi-Byte Access: The FCCOB register group uses a big endian addressing convention. For all command parameter fields larger than 1 byte, the most significant data resides in the lowest FCCOB register number. The FCCOB register group may be read and written as individual bytes, aligned words (2 bytes) or aligned longwords (4 bytes).
Memory Map and Registers 1. Refers to FCCOB register name, not register address
To change the program flash protection that is loaded during the reset sequence, unprotect the sector of program flash memory that contains the Flash Configuration Field. Then, reprogram the program flash protection byte.
Addresses: FTFL_FPROT3 4002_0000h base + 10h offset = 4002_0010h FTFL_FPROT2 4002_0000h base + 11h offset = 4002_0011h FTFL_FPROT1 4002_0000h base + 12h offset = 4002_0012h FTFL_FPROT0 4002_0000h base + 13h offset = 4002_0013h
Bit 7 6 5 4 3 2 1 0
PROT x* x* x* x*
EPROT x* x* x* x*
DPROT x* x* x* x*
Functional Description
Program flash size / 32 Program flash size / 32 Program flash size / 32 Last program flash address
FDPROT For 2n data flash sizes, protects eight regions of the data flash memory as shown in the following figure
EEPROM backup
data flash sizes (192KB and 224KB), the protection granularity is For the 32KB. Therefore, for 192KB data flash size, only the DPROT[5:0] bits are used, and for 224KB data flash size, only the DPROT[6:0] bits are used.
non-2n
Functional Description
224KB data flash 0x0_0000 32KB DPROT0 0x0_0000 32KB DPROT0 192KB data flash
32KB
DPROT1
32KB
DPROT1
32KB
DPROT2
32KB
DPROT2
32KB
DPROT3
32KB
DPROT3
32KB
DPROT4
32KB
DPROT4
32KB
DPROT5 0x2_FFFF
32KB
DPROT5
FEPROT Protects eight regions of the EEPROM memory as shown in the following figure
FlexRAM 0x0_0000 EEPROM size / 8 EEPROM size / 8 EEPROM size / 8 EEPROM size / 8 EEPROM size / 8 EEPROM size / 8 EEPROM size / 8 EEPROM size / 8 EPROT0 EPROT1 EPROT2 EPROT3 EPROT4 EPROT5 EPROT6 EPROT7
Unavailable
To handle varying customer requirements, the FlexRAM and FlexNVM blocks can be split into partitions as shown in the figure below.
Functional Description
1. EEPROM partition (EEESIZE) The amount of FlexRAM used for EEPROM can be set from 0 Bytes (no EEPROM) to the maximum FlexRAM size (see Table 28-2 ). The remainder of the FlexRAM is not accessible while the FlexRAM is configured for EEPROM (see Set FlexRAM Function Command ). The EEPROM partition grows upward from the bottom of the FlexRAM address space. 2. Data flash partition (DEPART) The amount of FlexNVM memory used for data flash can be programmed from 0 bytes (all of the FlexNVM block is available for EEPROM backup) to the maximum size of the FlexNVM block (see Table 28-4 ). 3. FlexNVM EEPROM partition The amount of FlexNVM memory used for EEPROM backup, which is equal to the FlexNVM block size minus the data flash memory partition size. The EEPROM backup size must be at least 16 times the EEPROM partition size in FlexRAM. 4. EEPROM split factor (EEESPLIT) The FlexRAM partitioned for EEPROM can be divided into two subsystems, each backed by half of the partitioned EEPROM backup. One subsystem (A) is 1/8, 1/4, or 1/2 of the partitioned FlexRAM with the remainder belonging to the other subsystem (B). The partition information (EEESIZE, DEPART, EEESPLIT) is stored in the data flash IFR and is programmed using the Program Partition command (see Program Partition Command ). Typically, the Program Partition command is executed only once in the lifetime of the device. Data flash memory is useful for applications that need to quickly store large amounts of data or store data that is static. The EEPROM partition in FlexRAM is useful for storing smaller amounts of data that will be changed often. The EEPROM partition in FlexRAM can be further sub-divided to provide subsystems, each backed by the same amount of EEPROM backup with subsytem A having higher endurance if the split factor is 1/8 or 1/4.
FlexNVM Block 1
Data flash 1
EEPROM backup B
Subsystem A
EEESPLIT = 1/8, 1/4, or 1/2 Size of EEPROM partition A = EEESIZE x EEESPLIT Data flash 0 and 1 interleaved
Subsystem B
Functional Description
where Writes_subsystem minimum writes to FlexRAM for subsystem (each subsystem can have different endurance) EEPROM allocated FlexNVM for each EEPROM subsystem based on DEPART; entered with Program Partition command EEESPLIT FlexRAM split factor for subsystem; entered with the Program Partition command EEESIZE total allocated FlexRAM based on DEPART; entered with Program Partition command Write_efficiency 0.25 for 8-bit writes to FlexRAM 0.50 for 16-bit or 32-bit writes to FlexRAM nnvmcycd data flash cycling endurance
Functional Description
28.4.3.5.1
The status field along with the state of the address and data fields reflect the overall state of a EEPROM data record. FREE state identifies EEPROM data records that are available for EEPROM use. EEPROM data records in the FREE state are ignored during the EEPROM copydown procedure or other EEPROM search operations. UPDATE state detects potential brown-out conditions where EEPROM data records have not been completely programmed. VALID state identifies EEPROM data records that have been successfully programmed. No more than one EEPROM data record exists in the VALID state for each FlexRAM address in the EEPROM system. ERASE state identifies EEPROM data records where the EEPROM file system reads the data as erased even though the content of the data field (representing old data) is not 0xFFFF. EEPROM data records in the ERASE state are ignored during the EEPROM copy-down procedure or other EEPROM search operations. COMPROMISED state marks EEPROM data records where the EEPROM file system has determined the content of the address or data field is not fully programmed due to brownout or a failure to program. Any compromised EEPROM data record is processed to the appropriate ERASE state and replaced by a VALID data record in the next available EEPROM data record. INVALID state occurs when the status field reads 00b and the data field reads 0xFFFF.
Table 28-31. EEPROM Data Record State Coding
Status (2-bits) FlexRAM Word Address (14-bits) Data (16-bits) State
Program Record Transitions (for non-0xFFFF data store) 11 11 11 0x3FFF FlexRAM Address FlexRAM Address 0xFFFF 0xFFFF Data1 store2) VALID UPDATE ERASE FREE UPDATE VALID
Erase Record Transitions (for 0xFFFF data 11 10 00 FlexRAM Address FlexRAM Address FlexRAM Address
Compromised Address Record Transitions 11 01 00 Compromised Address3 0x00004 0x00005 0xFFFF 0xFFFF 0xFFFF UPDATE COMPROMISE ERASE
Compromised Data Record Transitions 11 01 00 FlexRAM Address 0x00004 0x00005 Compromised Data3 Compromised Data Compromised Data VALID COMPROMISE ERASE
1. Erased data (OxFFFF) can only be represented by the ERASE state. 2. Previously programmed data field (non-0xFFFF); if first write (no existing record) would result in 0xFFFF data field, a record is not generated (default state of FlexRAM is erased) 3. Compromised based on margin read due to brownout or failure to program. 4. Or any FlexRAM address with a record in a VALID state. 5. Same FlexRAM address from previous state (01b)
28.4.4 Interrupts
The FTFL module can generate interrupt requests to the MCU upon the occurrence of various FTFL events. These interrupt events and their associated status and control bits are shown in the following table.
Table 28-32. FTFL Interrupt Sources
FTFL Event Readable Status Bit FTFL Command Complete FTFL Read Collision Error FSTAT[CCIF] FSTAT[RDCOLERR] Interrupt Enable Bit FCNFG[CCIE] FCNFG[RDCOLLIE]
Note Vector addresses and their relative interrupt priority are determined at the MCU level.
The MCU can fetch instructions from program flash during both data flash program and erase operations and while EEPROM backup data is maintained by the EEPROM commands. Conversely, the user may read from data flash and FlexRAM while program and erase commands are executing on the program flash. When configured as traditional RAM, writes to the FlexRAM are allowed during program and data flash operations. Simultaneous data flash operations and FlexRAM writes, when FlexRAM is used for EEPROM, are not possible. The user may read from one logical program flash memory space while commands (typically program and erase operations) are active in the other logical program flash memory space. Simultaneous operations are further discussed in Allowed Simultaneous Flash Operations.
Before launching a command, the ACCERR and FPVIOL bits in the FSTAT register must be zero and the CCIF flag must read 1 to verify that any previous command has completed. If CCIF is zero, the previous command execution is still active, a new command write sequence cannot be started, and all writes to the FCCOB registers are ignored. 28.4.10.1.1 Load the FCCOB Registers
The user must load the FCCOB registers with all parameters required by the desired FTFL command. The individual registers that make up the FCCOB data set can be written in any order. 28.4.10.1.2 Launch the Command by Clearing CCIF
Once all relevant command parameters have been loaded, the user launches the command by clearing the FSTAT[CCIF] bit by writing a '1' to it. The CCIF flag remains zero until the FTFL command completes. The FSTAT register contains a blocking mechanism, which prevents a new command from launching (can't clear CCIF) if the previous command resulted in an access error (FSTAT[ACCERR]=1) or a protection violation (FSTAT[FPVIOL]=1). In error scenarios, two writes to FSTAT are required to initiate the next command: the first write clears the error flags, the second write clears CCIF. 28.4.10.1.3 Command Execution and Error Reporting
The command processing has several steps: 1. In the first step, the FTFL reads the command code and performs a series of parameter checks which are unique to each command. If the initial parameter check fails, the FSTAT[ACCERR] (access error) bit is set. ACCERR reports invalid instruction codes and out-of bounds addresses. Usually, access errors suggest that the command was not set-up with valid parameters in the FCCOB register group. Command processing never proceeds to execution when the parameter checking step fails. Instead, the FSTAT[ACCERR] flag is set and the command processing is terminated after setting CCIF. 2. If the initial parameter checking passes, the command proceeds to execution. Runtime errors, such as failure to erase verify, may occur during the execution phase. Run-time errors are reported in the FSTAT[MGSTAT0] bit. A command may have access and run-time errors, but the run-time errors are not seen until all access errors have been corrected.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
662 Freescale Semiconductor, Inc.
3. In the next step, results, if any, are reported back to the user via the FCCOB and FSTAT registers. 4. In the final step, the FTFL sets the FSTAT[CCIF] bit signifying that the command has completed. The flow for a generic command write sequence is illustrated in the following figure.
START
no
CCIF = 1? yes
More Parameters? no
Clear the CCIF to launch the command Write 0x80 to FSTAT register
yes
EXIT
0x01
Read 1s Section
0x02
Program Check
0x03
Read Resource
IFR
IFR
IFR
0x06
Program Longword
0x08
0x09
Chapter 28 Flash Memory Module (FTFL) 0x0B Program Section Program data from the Section Program Buffer to a program flash or data flash block. Verify that all program flash, data flash blocks, FlexRAM, EEPROM backup data records, and data flash IFR are erased then release MCU security. Read 4 bytes of a dedicated 64 byte field in the program flash 0 IFR. One-time program of 4 bytes of a dedicated 64byte field in the program flash 0 IFR. Erase all program flash, data flash blocks, FlexRAM, EEPROM backup data records, and data flash IFR. Then, verifyerase and release MCU security. NOTE: An erase is only possible when all memory locations are unprotected. Table continues on the next page...
0x40
0x41
Read Once
IFR
0x43
Program Once
IFR
0x44
Flash Operation in Low-Power Modes 0x45 Verify Backdoor Access Key Release MCU security after comparing a set of user-supplied security keys to those stored in the program flash. IFR Program the FlexNVM Partition Code and EEPROM Data Set Size into the data flash IFR. Format all EEPROM backup data sectors allocated for EEPROM. Initialize the FlexRAM. Switches FlexRAM function between RAM and EEPROM. When switching to EEPROM, FlexNVM is not available while valid data records are being copied from EEPROM backup to FlexRAM.
0x80
Program Partition
0x81
1. When FlexRAM configured for EEPROM (writes are effectively multi-cycle operations). 2. When FlexRAM configured as traditional RAM (writes are single-cycle operations). 3. When FlexRAM configured as traditional RAM, writes to the RAM are ignored while the Program Section command is active (CCIF = 0).
Only the 'normal' read level should be employed during normal flash usage. The nonstandard, 'user' and 'factory' margin levels should be employed only in special cases. They can be used during special diagnostic routines to gain confidence that the device is not suffering from the end-of-life data loss customary of flash memory devices. Erased ('1') and programmed ('0') bit states can degrade due to elapsed time and data cycling (number of times a bit is erased and re-programmed). The lifetime of the erased states is relative to the last erase operation. The lifetime of the programmed states is measured from the last program time. The 'user' and 'factory' levels become, in effect, a minimum safety margin; i.e. if the reads pass at the tighter tolerances of the 'user' and 'factory' margins, then the 'normal' reads have at least this much safety margin before they experience data loss. The 'user' margin is a small delta to the normal read reference level. 'User' margin levels can be employed to check that flash memory contents have adequate margin for normal level read operations. If unexpected read results are encountered when checking flash memory contents at the 'user' margin levels, loss of information might soon occur during 'normal' readout. The 'factory' margin is a bigger deviation from the norm, a more stringent read criteria that should only be attempted immediately (or very soon) after completion of an erase or program command, early in the cycling life. 'Factory' margin levels can be used to check that flash memory contents have adequate margin for long-term data retention at the normal level setting. If unexpected results are encountered when checking flash memory contents at 'factory' margin levels, the flash memory contents should be erased and reprogrammed. CAUTION Factory margin levels must only be used during verify of the initial factory programming.
Ensure that the ACCERR and FPVIOL bits in the FSTAT register are cleared prior to starting the command write sequence. As described in Launch the Command by Clearing CCIF , a new command cannot be launched while these error flags are set. Do not attempt to read a flash block while the FTFL is running a command (CCIF = 0) on that same block. The FTFL may return invalid data to the MCU with the collision error flag (FSTAT[RDCOLERR]) set. When required by the command, address bit 23 selects between: program flash 0 (=0) block (for devices with FlexNVM) data flash (=1) block (for devices with program flash only) program flash 1 (=1) block CAUTION Flash data must be in the erased state before being programmed. Cumulative programming of bits (adding more zeros) is not allowed.
After clearing CCIF to launch the Read 1s Block command, the FTFL sets the read margin for 1s according to Table 28-37 and then reads all locations within the selected program flash or data flash block. When the data flash is targeted, DEPART must be set for no EEPROM, else the Read 1s Block command aborts setting the FSTAT[ACCERR] bit. If the FTFL fails to read all 1s (i.e. the flash block is not fully erased), the FSTAT[MGSTAT0] bit is set. The CCIF flag sets after the Read 1s Block operation has completed.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
670 Freescale Semiconductor, Inc.
Upon clearing CCIF to launch the Read 1s Section command, the FTFL sets the read margin for 1s according to Table 28-40 and then reads all locations within the specified section of flash memory. If the FTFL fails to read all 1s (i.e. the flash section is not erased), the FSTAT(MGSTAT0) bit is set. The CCIF flag sets after the Read 1s Section operation completes.
Table 28-40. Margin Level Choices for Read 1s Section
Read Margin Choice 0x00 0x01 0x02 Margin Level Description Use the 'normal' read level for 1s Apply the 'User' margin to the normal read-1 level Apply the 'Factory' margin to the normal read-1 level
Upon clearing CCIF to launch the Program Check command, the FTFL sets the read margin for 1s according to Table 28-43 , reads the specified longword, and compares the actual read data to the expected data provided by the FCCOB. If the comparison at margin-1 fails, the MGSTAT0 bit is set and the failing, actual margin-1 read data is returned to the user in FCCOB bytes 4-7. When the margin-1 test fails, there are more 0s in the returned data than expected. The FTFL then sets the read margin for 0s, re-reads, and compares again. If the comparison at margin-0 fails, the MGSTAT0 bit is set and the failing, actual margin-0 read data is stored in FCCOB bytes 4-7. When the margin-0 test fails, there are more 1s in the returned data than expected. In the unlikely event that the phrase fails the 1s and 0s margin reads, the last data written to the FCCOB is the fail-0 data. The CCIF flag is set after the Program Check operation completes. The starting address must be 32-bit aligned (the lowest two bits of the phrase byte address must be 00): Byte 0 data is expected at the supplied 32-bit aligned address, Byte 1 data is expected at byte address specified + 0b01, Byte 2 data is expected at byte address specified + 0b10, and Byte 3 data is expected at byte address specified + 0b11. NOTE See the description of margin reads, Margin Read Commands
Table 28-43. Margin Level Choices for Program Check
Read Margin Choice 0x01 0x02 Margin Level Description Read at 'User' margin-1 and 'User' margin-0 Read at 'Factory' margin-1 and 'Factory' margin-0
1. Flash address [23] selects between program flash (=0) and FlexNVM (=1) resources.. 2. Located in program flash 0 reserved space; Flash address [23] = 0
After clearing CCIF to launch the Read Resource command, four consecutive bytes are read from the selected resource at the provided relative address and stored in the FCCOB register. The CCIF flag sets after the Read Resource operation completes. The Read Resource command exits with an access error if an invalid resource code is provided or if the address for the applicable area is out-of-range.
Table 28-47. Read Resource Command Error Handling
Error Condition Command not available in current mode/security An invalid resource code is entered Flash address is out-of-range for the targeted resource. Flash address is not longword aligned Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR]
Upon clearing CCIF to launch the Program Longword command, the FTFL programs the data bytes into the flash using the supplied address. The protection status is always checked. The targeted flash locations must be currently unprotected (see the description of the FPROT registers) to permit execution of the Program Longword operation. The programming operation is unidirectional. It can only move NVM bits from the erased state ('1') to the programmed state ('0'). Erased bits that fail to program to the '0' state are flagged as errors in MGSTAT0. The CCIF flag is set after the Program Longword operation completes. The starting address must be longword aligned (flash address [1:0] = 00): Byte 0 data is written to the starting address ('start'), Byte 1 data is programmed to byte address start+0b01, Byte 2 data is programmed to byte address start+0b10, and Byte 3 data is programmed to byte address start+0b11.
Table 28-49. Program Longword Command Error Handling
Error Condition Command not available in current mode/security An invalid flash address is supplied Flash address is not longword aligned Flash address points to a protected area Any errors have been encountered during the verify operation Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[FPVIOL] FSTAT[MGSTAT0]
Upon clearing CCIF to launch the Erase Flash Block command, the FTFL erases the main array of the selected flash block and verifies that it is erased. When the data flash is targeted, DEPART must be set for no EEPROM (see Table 28-4 ) else the Erase Flash Block command aborts setting the FSTAT[ACCERR] bit. The Erase Flash Block command aborts and sets the FSTAT[FPVIOL] bit if any region within the block is protected (see the description of the program flash protection (FPROT) registers and the data flash protection (FDPROT) registers) in NVM Normal mode or NVM Special mode. If the erase verify fails, the MGSTAT0 bit in FSTAT is set. The CCIF flag will set after the Erase Flash Block operation has completed.
Table 28-51. Erase Flash Block Command Error Handling
Error Condition Command not available in current mode/security Program flash is selected and the address is out of program flash range Data flash is selected and the address is out of data flash range Data flash is selected with EEPROM enabled Flash address is not 32-bit aligned Any area of the selected flash block is protected in NVM Normal mode or NVM Special mode. Any errors have been encountered during the verify operation Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[FPVIOL] FSTAT[MGSTAT0]
After clearing CCIF to launch the Erase Flash Sector command, the FTFL erases the selected program flash or data flash sector and then verifies that it is erased. The Erase Flash Sector command aborts if the selected sector is protected (see the description of the FPROT registers) in NVM Normal mode or NVM Special mode. If the erase-verify fails
the FSTAT[MGSTAT0] bit is set. The CCIF flag is set after the Erase Flash Sector operation completes. The Erase Flash Sector command is suspendable (see the FCNFG[ERSSUSP] bit and Figure 28-35 ).
Table 28-53. Erase Flash Sector Command Error Handling
Error Condition Command not available in current mode/security An invalid Flash address is supplied Flash address is not phrase aligned The selected program flash or data flash sector is protected in NVM Normal mode or NVM Special mode. Any errors have been encountered during the verify operation Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[FPVIOL] FSTAT[MGSTAT0]
28.4.12.7.1
To suspend an Erase Flash Sector operation set the FCNFG[ERSSUSP] bit (see Flash Configuration Field Description ) when CCIF is clear and the CCOB command field holds the code for the Erase Flash Sector command. During the Erase Flash Sector operation (see Erase Flash Sector Command ), the FTFL samples the state of the ERSSUSP bit at convenient points. If the FTFL detects that the ERSSUSP bit is set, the Erase Flash Sector operation is suspended and the FTFL sets CCIF. The maximum time between ERSSUSP being set and CCIF being set is TBD us. While ERSSUSP is set, all writes to FTFL registers are ignored except for writes to the FSTAT and FCNFG registers. If an Erase Flash Sector operation effectively completes before the FTFL detects that a suspend request has been made, the FTFL clears the ERSSUSP bit prior to setting CCIF. When an Erase Flash Sector operation has been successfully suspended, the FTFL sets CCIF and leaves the ERSSUSP bit set. While CCIF is set, the ERSSUSP bit can only be cleared to prevent the withdrawal of a suspend request before the FTFL has acknowledged it. 28.4.12.7.2 Resuming a Suspended Erase Flash Sector Operation
If the ERSSUSP bit is still set when CCIF is cleared to launch the next command, the previous Erase Flash Sector operation resumes. The FTFL acknowledges the request to resume a suspended operation by clearing the ERSSUSP bit. A new suspend request can then be made by setting ERSSUSP. A single Erase Flash Sector operation can be suspended and resumed multiple times.
There is a minimum elapsed time limit of TBD us between the request to resume the Erase Flash Sector operation (CCIF is cleared) and the request to suspend the operation again (ERSSUSP is set). This minimum time period is required to ensure that the Erase Flash Sector operation will eventually complete. If the minimum period is continually violated, i.e. the suspend requests come repeatedly and too quickly, no forward progress is made by the Erase Flash Sector algorithm. The resume/suspend sequence runs indefinitely without completing the erase. 28.4.12.7.3 Aborting a Suspended Erase Flash Sector Operation
The user may choose to abort a suspended Erase Flash Sector operation by clearing the ERSSUSP bit prior to clearing CCIF for the next command launch. When a suspended operation is aborted, the FTFL starts the new command using the new FCCOB contents. While FCNFG[ERSSUSP] is set, a write to the FlexRAM while FCNFG[EEERDY] is set clears ERSSUSP and aborts the suspended operation. The FlexRAM write operation is executed by the FTFL. Note Aborting the erase leaves the bitcells in an indeterminate, partially-erased state. Data in this sector is not reliable until a new erase command fully completes. The following figure shows how to suspend and resume the Erase Flash Sector operation.
Command Initiation
ERSSCR Command (Write FCCOB)
Launch/Resume Command (Clear CCIF) SUSPACK=1 Next Command (Write FCCOB) Yes CCIF = 1? No No Interrupt? Start New No Yes
Resume ERSSCR
Execute
DONE? No ERSSUSP=1?
Yes
No
No
Set CCIF
Resume Erase? No, Abort Clear ERSSUSP ERSSUSP: Bit in FCNFG register SUSPACK: Internal Suspend Acknowledge
After clearing CCIF to launch the Program Section command, the FTFL blocks access to the programming acceleration RAM (program flash only devices) or FlexRAM (FlexNVM devices) and programs the data residing in the section program buffer into the flash memory starting at the flash address provided. The protection status is checked in NVM Normal mode and in NVM Special mode. The starting address must be unprotected (see the description of the FPROT registers) to permit execution of the Program Section operation. Programming, which is not allowed to cross a flash sector boundary, continues until all requested phrases have been programmed. The Program Section command also verifies that after programming, all bits requested to be programmed are programmed.
After the Program Section operation completes, the CCIF flag is set and normal access to the FlexRAM is restored. The contents of the section program buffer may be changed by the Program Section operation.
Table 28-55. Program Section Command Error Handling
Error Condition Command not available in current mode/security An invalid flash address is supplied Flash address is not phrase aligned The requested section crosses a program flash sector boundary The requested number of phrases is zero The space required to store data for the requested number of phrases is more than half the size of the programming acceleration RAM (program flash only devices) or FlexRAM (FlexNVM devices) The FlexRAM is not set to function as a traditional RAM, i.e. set if RAMRDY=0 The flash address falls in a protected area Any errors have been encountered during the verify operation Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[FPVIOL] FSTAT[MGSTAT0]
28.4.12.8.1
The process of programming an entire flash sector using the Program Section command is as follows: 1. If required, execute the Set FlexRAM Function command to make the FlexRAM available as traditional RAM and initialize the FlexRAM to all ones. 2. Launch the Erase Flash Sector command to erase the flash sector to be programmed. 3. Beginning with the starting address of the programming acceleration RAM (program flash only devices) or FlexRAM (FlexNVM devices), sequentially write enough data to the RAM to fill an entire flash sector. This area of the RAM serves as the section program buffer. NOTE In step 1 , the section program buffer was initialized to all ones, the erased state of the flash memory. The section program buffer can be written to while the operation launched in step 2 is executing, i.e. while CCIF = 0. 4. Execute the Program Section command to program the contents of the section program buffer into the selected flash sector. 5. If a flash sector is larger than half the FlexRAM, repeat steps 3 and 4 until the sector is completely programmed. 6. To program additional flash sectors, repeat steps 2 through 4.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
682 Freescale Semiconductor, Inc.
7. To restore EEPROM functionality, execute the Set FlexRAM Function command to make the FlexRAM available for EEPROM.
After clearing CCIF to launch the Read 1s All Blocks command, the FTFL : sets the read margin for 1s according to Table 28-57 , checks the contents of the program flash, data flash, EEPROM backup records, data flash IFR, and FlexRAM are in the erased state. If the FTFL confirms that these memory resources are erased, security is released by setting the FSEC[SEC] field to the unsecure state. The security byte in the flash configuration field (see Flash Configuration Field Description ) remains unaffected by the Read 1s All Blocks command. If the read fails, i.e. all memory resources are not in the fully erased state, the FSTAT[MGSTAT0] bit is set. The EEERDY and RAMRDY bits are clear during the Read 1s All Blocks operation and are restored at the end of the Read 1s All Blocks operation. The CCIF flag sets after the Read 1s All Blocks operation has completed.
Table 28-57. Margin Level Choices for Read 1s All Blocks
Read Margin Choice 0x00 0x01 0x02 Margin Level Description Use the 'normal' read level for 1s Apply the 'User' margin to the normal read-1 level Apply the 'Factory' margin to the normal read-1 level
After clearing CCIF to launch the Read Once command, a 4-byte Read Once record is read from the program flash IFR and stored in the FCCOB register. The CCIF flag is set after the Read Once operation completes. Valid record index values for the Read Once command range from 0x00 to 0x0F. During execution of the Read Once command, any attempt to read addresses within the program flash block containing this 64-byte field returns invalid data. The Read Once command can be executed any number of times.
Table 28-60. Read Once Command Error Handling
Error Condition Command not available in current mode/security An invalid record index is supplied Error Bit FSTAT[ACCERR] FSTAT[ACCERR]
After clearing CCIF to launch the Program Once command, the FTFL first verifies that the selected record is erased. If erased, then the selected record is programmed using the values provided. The Program Once command also verifies that the programmed values read back correctly. The CCIF flag is set after the Program Once operation has completed. The reserved program flash 0 IFR location accessed by the Program Once command cannot be erased and any attempt to program one of these records when the existing value is not Fs (erased) is not allowed. Valid record index values for the Program Once command range from 0x00 to 0x0F. During execution of the Program Once command, any attempt to read addresses within program flash 0 returns invalid data.
Table 28-62. Program Once Command Error Handling
Error Condition Command not available in current mode/security An invalid record index is supplied The requested record has already been programmed to a non-FFFF value1 Any errors have been encountered during the verify operation Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[MGSTAT0]
1. If a Program Once record is initially programmed to 0xFFFF_FFFF, the Program Once command is allowed to execute again on that same record.
After clearing CCIF to launch the Erase All Blocks command, the FTFL erases all program flash memory, data flash memory, data flash IFR space, EEPROM backup memory, and FlexRAM, then verifies that all are erased. If the FTFL verifies that all flash memories and the FlexRAM were properly erased, security is released by setting the FSEC[SEC] field to the unsecure state and the FCNFG[RAMRDY] bit is set. The Erase All Blocks command aborts if any flash or FlexRAM region is protected. The security byte and all other contents of the flash configuration field (see Flash Configuration Field Description ) is erased by the Erase All Blocks command. If the erase-verify fails, the FSTAT[MGSTAT0] bit is set. The CCIF flag is set after the Erase All Blocks operation completes.
Table 28-64. Erase All Blocks Command Error Handling
Error Condition Command not available in current mode/security Any region of the program flash memory, data flash memory, or FlexRAM is protected Any errors have been encountered during the verify operation Error Bit FSTAT[ACCERR] FSTAT[FPVIOL] FSTAT[MGSTAT0]
28.4.12.12.1
The functionality of the Erase All Blocks command is also available in an uncommanded fashion outside of the flash memory. Refer to the device's Chip Configuration details for information on this functionality. Before invoking the external erase all function, the FSTAT[ACCERR and PVIOL] flags must be cleared and the FCCOB0 register must not contain 0x44. When invoked, the erase-all function erases all program flash memory, data flash memory, data flash IFR space, EEPROM backup, and FlexRAM regardless of the protection settings. If the posterase verify passes, the routine then releases security by setting the FSEC[SEC] field register to the unsecure state and the FCNFG[RAMRDY] bit sets. The security byte in
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
686 Freescale Semiconductor, Inc.
the Flash Configuration Field is also programmed to the unsecure state. The status of the erase-all request is reflected in the FCNFG[ERSAREQ] bit. The FCNFG[ERSAREQ] bit is cleared once the operation completes and the normal FSTAT error reporting is available as described in Erase All Blocks Command.
After clearing CCIF to launch the Verify Backdoor Access Key command, the FTFL checks the FSEC[KEYEN] bits to verify that this command is enabled. If not enabled, the FTFL sets the FSTAT[ACCERR] bit and terminates. If the command is enabled, the FTFL compares the key provided in FCCOB to the backdoor comparison key in the Flash Configuration Field. If the backdoor keys match, the FSEC[SEC] field is changed to the unsecure state and security is released. If the backdoor keys do not match, security is not released and all future attempts to execute the Verify Backdoor Access Key command are immediately aborted and the FSTAT[ACCERR] bit is (again) set to 1 until a reset of the
FTFL module occurs. If the entire 8-byte key is all zeros or all ones, the Verify Backdoor Access Key command fails with an access error. The CCIF flag is set after the Verify Backdoor Access Key operation completes.
Table 28-66. Verify Backdoor Access Key Command Error Handling
Error Condition The supplied key is all-0s or all-Fs An incorrect backdoor key is supplied Backdoor key access has not been enabled (see the description of the FSEC register) This command is launched and the backdoor key has mismatched since the last power down reset Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR]
1. FCCOB4[7:6] = 00 2. EEPROM Data Set Size must be set to 0 bytes when the FlexNVM Partition Code is set for no EEPROM.
After clearing CCIF to launch the Program Partition command, the FTFL first verifies that the EEPROM Data Size Code and FlexNVM Partition Code in the data flash IFR are erased. If erased, the Program Partition command erases the contents of the FlexNVM memory. If the FlexNVM is to be partitioned for EEPROM backup, the allocated EEPROM backup sectors are formatted for EEPROM use. Finally, the partition codes are programmed into the data flash IFR using the values provided. The Program Partition command also verifies that the partition codes read back correctly after programming. If the FlexNVM is partitioned for EEPROM, the allocated EEPROM backup sectors are formatted for EEPROM use. The CCIF flag is set after the Program Partition operation completes. Prior to launching the Program Partition command, the data flash IFR must be in an erased state, which can be accomplished by executing the Erase All Blocks command or by an external request (see Erase All Blocks Command ). The EEPROM Data Size Code and FlexNVM Partition Code are read using the Read Resource command (see Read Resource Command ).
Table 28-70. Program Partition Command Error Handling
Error Condition Command not available in current mode/security The EEPROM data size and FlexNVM partition code bytes are not initially 0xFFFF Invalid EEPROM Data Size Code is entered (see Table 28-68 for valid codes) Invalid FlexNVM Partition Code is entered (see Table 28-69 for valid codes) Table continues on the next page... Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR]
After clearing CCIF to launch the Set FlexRAM Function command, the FTFL sets the function of the FlexRAM based on the FlexRAM Function Control Code.
When making the FlexRAM available as traditional RAM, the FTFL clears the FCNFG[EEERDY] flag, overwrites the contents of the entire FlexRAM with a background pattern of all ones, and sets the FCNFG[RAMRDY] flag. The state of the EPROT register does not prevent the FlexRAM from being overwritten. When the FlexRAM is set to function as a RAM, normal read and write accesses to the FlexRAM are available. When large sections of flash memory need to be programmed, e.g. during factory programming, the FlexRAM can be used as the Section Program Buffer for the Program Section command (see Program Section Command ). When making the FlexRAM available for EEPROM, the FTFL clears the FCNFG[RAMRDY] flag, overwrites the contents of the FlexRAM allocated for EEPROM with a background pattern of all ones, and copies the existing EEPROM data from the EEPROM backup record space to the FlexRAM. After completion of the EEPROM copy-down, the FCNFG[EEERDY] flag is set. When the FlexRAM is set to function as EEPROM, normal read and write access to the FlexRAM is available, but writes to the FlexRAM also invoke EEPROM activity.
Table 28-73. Set FlexRAM Function Command Error Handling
Error Condition Command not available in current mode/security FlexRAM Function Control Code is not defined FlexRAM Function Control Code is set to make the FlexRAM available for EEPROM, but FlexNVM is not partitioned for EEPROM Error Bit FSTAT[ACCERR] FSTAT[ACCERR] FSTAT[ACCERR]
28.4.13 Security
The FTFL module provides security information to the MCU based on contents of the FSEC security register. The MCU then limits access to FTFL resources as defined in the device's Chip Configuration details. During reset, the FTFL module initializes the FSEC register using data read from the security byte of the Flash Configuration Field (see Flash Configuration Field Description ). The following fields are available in the FSEC register. Details of the settings are described in the FSEC register description.
Table 28-74. FSEC fields
FSEC field KEYEN MEEN Table continues on the next page... Description Backdoor Key Access Mass Erase Capability
The MCU may be unsecured by using the backdoor key access feature which requires knowledge of the contents of the 8-byte backdoor key value stored in the Flash Configuration Field (see Flash Configuration Field Description ). If the FSEC[KEYEN] bits are in the enabled state, the Verify Backdoor Access Key command (see Verify Backdoor Access Key Command ) can be run which allows the user to present prospective keys for comparison to the stored keys. If the keys match, the FSEC[SEC] bits are changed to unsecure the MCU. The entire 8-byte key cannot be all 0s or all 1s, i.e. 0x0000_0000_0000_0000 and 0xFFFF_FFFF_FFFF_FFFF are not accepted by the
Verify Backdoor Access Key command as valid comparison values. While the Verify Backdoor Access Key command is active, program flash memory is not available for read access and returns invalid data. The user code stored in the program flash memory must have a method of receiving the backdoor keys from an external stimulus. This external stimulus would typically be through one of the on-chip serial ports. If the KEYEN bits are in the enabled state, the MCU can be unsecured by the backdoor key access sequence described below: 1. Follow the command sequence for the Verify Backdoor Access Key command as explained in Verify Backdoor Access Key Command 2. If the Verify Backdoor Access Key command is successful, the MCU is unsecured and the FSEC[SEC] bits are forced to the unsecure state The Verify Backdoor Access Key command is monitored by the FTFL and an illegal key prohibits future use of the Verify Backdoor Access Key command. A reset of the MCU is the only method to re-enable the Verify Backdoor Access Key command when a comparison fails. After the backdoor keys have been correctly matched, the MCU is unsecured by changing the FSEC[SEC] bits. A successful execution of the Verify Backdoor Access Key command changes the security in the FSEC register only. It does not alter the security byte or the keys stored in the Flash Configuration Field (Flash Configuration Field Description ). After the next reset of the MCU, the security state of the FTFL module reverts back to the Flash security byte in the Flash Configuration Field. The Verify Backdoor Access Key command sequence has no effect on the program and erase protections defined in the program flash protection registers. If the backdoor keys successfully match, the unsecured MCU has full control of the contents of the Flash Configuration Field. The MCU may erase the sector containing the Flash Configuration Field and reprogram the flash security byte to the unsecure state and change the backdoor keys to any desired value.
CCIF is cleared throughout the reset sequence. The FTFL module holds off all CPU access for a portion of the reset sequence. Flash reads are possible when the hold is removed. Completion of the reset sequence is marked by setting CCIF which enables flash user commands. If a reset occurs while any FTFL command is in progress, that command is immediately aborted. The state of the word being programmed or the sector/block being erased is not guaranteed. Commands and operations do not automatically resume after exiting reset.
29.1.1 Overview
A multi-function external bus interface called the FlexBus interface controller is provided on the device with basic functionality of interfacing to slave-only devices. It can be directly connected to the following asynchronous or synchronous devices with little or no additional circuitry: External ROMs Flash memories Programmable logic devices Other simple target (slave) devices For asynchronous devices, a simple chip-select based interface can be used. The FlexBus interface has up to six general purpose chip-selects, FB_CS[5:0]. The actual number of chip selects available depends upon the device and its pin configuration.
29.1.2 Features
Key FlexBus features include:
Signal Descriptions
Six independent, user-programmable chip-select signals (FB_CS[5:0]) that can interface with external SRAM, PROM, EPROM, EEPROM, flash, and other peripherals 8-, 16-, and 32-bit port sizes with configuration for multiplexed or non-multiplexed address and data buses 8-bit, 16-bit, 32-bit, and 16-byte transfers Programmable burst- and burst-inhibited transfers selectable for each chip select and transfer direction Programmable address-setup time with respect to the assertion of chip select Programmable address-hold time with respect to the negation of chip select and transfer direction Extended address latch enable option helps with glueless connections to synchronous and asynchronous memory devices
O O O O O O O I O
Signal Descriptions
For misaligned transfers, FB_TSIZ[1:0] indicates the size of each transfer. For example, if a 32-bit access through a 32-bit port device occurs at a misaligned offset of 0x1, 8 bits is transferred first (FB_TSIZ[1:0] = 01), 16 bits is transferred next at offset 0x2 (FB_TSIZ[1:0] = 10), and the final 8 bits is transferred at offset 0x4 (FB_TSIZ[1:0] = 01). For aligned transfers larger than the port size, FB_TSIZ[1:0] behaves as follows: If bursting is used, FB_TSIZ[1:0] is driven to the transfer size. If bursting is inhibited, FB_TSIZ[1:0] first shows the entire transfer size and then shows the port size.
Table 29-2. Data Transfer Size
FB_TSIZ[1:0] 00 01 10 11 Transfer Size 4 bytes 1 byte 2 bytes 16 bytes (line)
For burst-inhibited transfers, FB_TSIZ[1:0] changes with each FB_TS assertion to reflect the next transfer size. For transfers to port sizes smaller than the transfer size, FB_TSIZ[1:0] indicates the size of the entire transfer on the first access and the size of the current port transfer on subsequent transfers. For example, for a 32-bit write to an 8bit port, FB_TSIZ[1:0] equals 00 for the first transaction and 01 for the next three transactions. If bursting is used for a 32-bit write to an 8-bit port, FB_TSIZ[1:0] is driven to 00 for the entire transfer.
FB memory map
Absolute address (hex) 4000_C000 4000_C004 4000_C008 4000_C00C 4000_C010 4000_C014 4000_C018 4000_C01C 4000_C020 4000_C024 4000_C028 4000_C02C 4000_C030 4000_C034 4000_C038 4000_C03C 4000_C040 4000_C044 4000_C060 Register name Width Access (in bits) 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Reset value Section/ page 29.3.1/ 703 29.3.2/ 704 29.3.3/ 706 29.3.1/ 703 29.3.2/ 704 29.3.3/ 706 29.3.1/ 703 29.3.2/ 704 29.3.3/ 706 29.3.1/ 703 29.3.2/ 704 29.3.3/ 706 29.3.1/ 703 29.3.2/ 704 29.3.3/ 706 29.3.1/ 703 29.3.2/ 704 29.3.3/ 706 29.3.4/ 709
Chip select address register (FB_CSAR0) Chip select mask register (FB_CSMR0) Chip select control register (FB_CSCR0) Chip select address register (FB_CSAR1) Chip select mask register (FB_CSMR1) Chip select control register (FB_CSCR1) Chip select address register (FB_CSAR2) Chip select mask register (FB_CSMR2) Chip select control register (FB_CSCR2) Chip select address register (FB_CSAR3) Chip select mask register (FB_CSMR3) Chip select control register (FB_CSCR3) Chip select address register (FB_CSAR4) Chip select mask register (FB_CSMR4) Chip select control register (FB_CSCR4) Chip select address register (FB_CSAR5) Chip select mask register (FB_CSMR5) Chip select control register (FB_CSCR5) Chip select port multiplexing control register (FB_CSPMCR)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
NOTE Because the FlexBus module is one of the slaves connected to the crossbar switch, it is only accessible within a certain memory range. Refer to the device memory map for the applicable FlexBus "expansion" address range for which the chip-selects can be active. Set the CSARn registers appropriately.
Addresses: FB_CSAR0 4000_C000h base + 0h offset = 4000_C000h FB_CSAR1 4000_C000h base + Ch offset = 4000_C00Ch FB_CSAR2 4000_C000h base + 18h offset = 4000_C018h FB_CSAR3 4000_C000h base + 24h offset = 4000_C024h FB_CSAR4 4000_C000h base + 30h offset = 4000_C030h FB_CSAR5 4000_C000h base + 3Ch offset = 4000_C03Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
150 Reserved
Chapter 29 External Bus Interface (FlexBus) Addresses: FB_CSMR0 4000_C000h base + 4h offset = 4000_C004h FB_CSMR1 4000_C000h base + 10h offset = 4000_C010h FB_CSMR2 4000_C000h base + 1Ch offset = 4000_C01Ch FB_CSMR3 4000_C000h base + 28h offset = 4000_C028h FB_CSMR4 4000_C000h base + 34h offset = 4000_C034h FB_CSMR5 4000_C000h base + 40h offset = 4000_C040h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BAM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
WP
0 V 0 0 0 0 0 0 0 0 705
This read-only bitfield is reserved and always has the value zero. Write protect Controls write accesses to the address range in the corresponding CSAR. Attempting to write to the range of addresses for which CSARn[WP] is set results in a bus error termination of the internal cycle and no external cycle. 0 1 Read and write accesses are allowed Only read accesses are allowed
71 Reserved 0 V
This read-only bitfield is reserved and always has the value zero. Valid Indicates whether the corresponding CSAR, CSMR, and CSCR contents are valid. Programmed chipselects do not assert until V bit is set (except for FB_CS0, which acts as the global chip-select). Reset clears each CSMRn[V]. NOTE: At reset, no chip-select other than FB_CS0 can be used until the CSMR0[V] is set. Afterward, FB_CS[5:0] functions as programmed. Table continues on the next page...
SWSEN
AA
SWS
WS
PS 0 0
BSTW
EXALE
WRAH
BSTR
ASET
RDAH
BEM
BLS
22 EXALE
Extended address latch enable 0 1 FB_ALE asserts for one bus clock cycle FB_ALE remains asserted until the first positive clock edge after FB_CSn asserts
2120 ASET
Address setup Controls the assertion of the chip-select with respect to assertion of a valid address and attributes. The address and attributes are considered valid at the same time FB_ALE asserts. 00 01 10 11 Assert FB_CSn on first rising clock edge after address is asserted. (Default FB_CSn) Assert FB_CSn on second rising clock edge after address is asserted. Assert FB_CSn on third rising clock edge after address is asserted. Assert FB_CSn on fourth rising clock edge after address is asserted. (Default FB_CS0)
1918 RDAH
Read address hold or deselect This field controls the address and attribute hold time after the termination during a read cycle that hits in the chip-select address space. NOTE: The hold time applies only at the end of a transfer. Therefore, during a burst transfer or a transfer to a port size smaller than the transfer size, the hold time is only added after the last bus cycle. The number of cycles the address and attributes are held after FB_CSn negation depends on the value of CSCRn[AA]. 00 01 10 11 If AA is cleared, 1 cycle. If AA is set, 0 cycles. If AA is cleared, 2 cycles. If AA is set, 1 cycle. If AA is cleared, 3 cycles. If AA is set, 2 cycles. If AA is cleared, 4 cycles. If AA is set, 3 cycles.
1716 WRAH
Write address hold or deselect Write address hold or deselect. This field controls the address, data, and attribute hold time after the termination of a write cycle that hits in the chip-select address space. NOTE: The hold time applies only at the end of a transfer. Therefore, during a burst transfer or a transfer to a port size smaller than the transfer size, the hold time is only added after the last bus cycle. 00 01 10 11 Hold address and attributes one cycle after FB_CSn negates on writes. (Default FB_CSn) Hold address and attributes two cycles after FB_CSn negates on writes. Hold address and attributes three cycles after FB_CSn negates on writes. Hold address and attributes four cycles after FB_CSn negates on writes. (Default FB_CS0)
1510 WS
Wait states The number of wait states inserted after FB_CSn asserts and before an internal transfer acknowledge is generated (WS = 0 inserts zero wait states, WS = 0x3F inserts 63 wait states). Table continues on the next page...
Auto-acknowledge enable Determines the assertion of the internal transfer acknowledge for accesses specified by the chip-select address. NOTE: If AA is set for a corresponding FB_CSn and the external system asserts an external FB_TA before the wait-state countdown asserts the internal FB_TA, the cycle is terminated. Burst cycles increment the address bus between each internal termination. NOTE: This bit must be set if CSPMCR disables FB_TA. 0 1 No internal FB_TA is asserted. Cycle is terminated externally Internal transfer acknowledge is asserted as specified by WS
76 PS
Port size Specifies the data port width associated with each chip-select. It determines where data is driven during write cycles and where data is sampled during read cycles. 00 01 10 11 32-bit port size. Valid data sampled and driven on FB_D[31:0] 8-bit port size. Valid data sampled and driven on FB_D[31:24] 16-bit port size. Valid data sampled and driven on FB_D[31:16] 16-bit port size. Valid data sampled and driven on FB_D[31:16]
5 BEM
Byte-enable mode Specifies the byte enable operation. Certain memories have byte enables that must be asserted during reads and writes. BEM can be set in the relevant CSCR to provide the appropriate mode of byte enable support for these SRAMs. 0 1 FB_BE/BWE is not asserted for reads. FB_BE/BWE is asserted for data write only. FB_BE/BWE is asserted for read and write accesses
4 BSTR
Burst-read enable Specifies whether burst reads are used for memory associated with each FB_CSn. 0 1 Data exceeding the specified port size is broken into individual, port-sized, non-burst reads. For example, a longword read from an 8-bit port is broken into four 8-bit reads. Enables data burst reads larger than the specified port size, including longword reads from 8- and 16bit ports, word reads from 8-bit ports, and line reads from 8, 16-, and 32-bit ports.
3 BSTW
Burst-write enable Specifies whether burst writes are used for memory associated with each FB_CSn. Table continues on the next page...
This read-only bitfield is reserved and always has the value zero.
GROUP1 0 0 0 0 0
GROUP2 0 0 0 0
GROUP3 0 0 0 0
GROUP4 0 0 0 0
GROUP5 0 0 0 0 0 0 0 0 0
FlexBus signal group 2 multiplex control Controls the multiplexing of the FB_CS4, FB_TSIZ0, and FB_BE_31_24 signals. 0000 0001 0010 Else FB_CS4 FB_TSIZ0 FB_BE_31_24 Reserved Table continues on the next page...
Functional Description
FlexBus signal group 4 multiplex control Controls the multiplexing of the FB_TBST, FB_CS2, and FB_BE_15_8 signals. 0000 0001 0010 Else FB_TBST FB_CS2 FB_BE_15_8 Reserved
1512 GROUP5
FlexBus signal group 5 multiplex control Controls the multiplexing of the FB_TA, FB_CS3, and FB_BE_7_0 signals. NOTE: When GROUP5 is not 0000, you must set the CSCRn[AA] bit. Else, the bus hangs during a transfer. 0000 0001 0010 Else FB_TA FB_CS3. You must also set CSCRn[AA]. FB_BE_7_0. You must also set CSCRn[AA]. Reserved
110 Reserved
This read-only bitfield is reserved and always has the value zero.
Chip-select mask registers (CSMRn) provide 16-bit address masking and access control. Chip-select control registers (CSCRn) provide port size and burst capability indication, wait-state generation, address setup and hold times, and automatic acknowledge generation features.
Functional Description
No bit ordering is required when connecting address and data lines to the FB_AD bus. For example, a full 16-bit address/16-bit data device connects its addr[15:0] to FB_AD[16:1] and data[15:0] to FB_AD[31:16]. See Data Byte Alignment and Physical Connections for a graphical connection.
Byte Select External Data Bus 32-Bit Port Memory 16-Bit Port Memory
FB_BE_7_0
FB_D[7:0]
Byte 3
Byte 2
Byte 1
Byte 0
Byte 1 Byte 3
Byte 0 Byte 2
The following figure shows the byte lanes that external memory connects to and the sequential transfers of a 32-bit transfer for the supported port sizes when byte lane shift is enabled.
Byte Select External Data Bus 32-Bit Port Memory 16-Bit Port Memory
FB_BE_7_0
FB_D[31:24]
Byte 3
Byte 2
Byte 1
Byte 0
Byte 1 Byte 3
Byte 0 Byte 2
Byte 0
Functional Description
The table below lists the supported combinations of address and data bus widths.
Table 29-27. FlexBus Multiplexed Operating Modes for CSCRn[BLS]=0
Port Size and Phase 32-bit Address phase Data phase Address phase Data phase Address phase Data phase Data Data Address Address FB_AD [31:24] [23:16] Address Data Address Address [15:8] [7:0]
8-bit
16-bit
Next Cycle
S0
Wait States S3 S1
S2
The following table describes the states as they appear in subsequent timing diagrams.
Table 29-28. Bus Cycle States
State S0 Cycle All Description The read or write cycle is initiated. On the rising clock edge, the device places a valid address on FB_ADn, asserts FB_ALE, and drives FB_R/W high for a read and low for a write. FB_ALE is negated on the rising edge of FB_CLK, and FB_CSn is asserted. Da ta is driven on FB_AD[31:X] for writes, and FB_AD[31:X] is tristated for reads. Address continues to be driven on the FB_AD pins that are unused for data. If FB_TA is recognized asserted, then the cycle moves on to S2. If FB_TA is not asserted internally or externally, then the S1 state continues to repeat. Read S2 All Data is driven by the external device before the next rising edge of FB_CLK (the rising edge that begins S2) with FB_TA asserted. For internal termination, FB_CSn is negated and the internal system bus trans fer is completed. For external termination, the external device should negate FB_TA, and the FB_CSn chip select negates after the rising edge of FB_CLK at the end of S2. The processor latches data on the rising clock edge entering S2. The external device can stop driving data after this edge. However, data can be driven until the end of S3 or any additional address hold cycles. Address, data, and FB_R/W go invalid off the rising edge of FB_CLK at the be ginning of S3, terminating the read or write cycle.
S1
All
Read
S3
All
Functional Description
Note Throughout this section: FB_D[X] indicates a 32-, 16-, or 8-bit wide data bus FB_A[Y] indicates an address bus that can be 32, 24, or 16 bits wide.
System
1. Decode address.
1. Negate transfer start.
2. Assert FB_CSn.
1. Select the appropriate slave device. 2. Drive data on the external data signals. 3. Assert FB_TA (external termination).
The read cycle timing diagram is shown in the following figure. Note FB_TA does not have to be driven by the external device for internally-terminated bus cycles. Note The processor drives the data lines during the first clock cycle of the transfer with the full 32-bit address. This may be ignored by standard connected devices using non-multiplexed address and data buses. However, some applications may find this feature beneficial.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
716 Freescale Semiconductor, Inc.
The address and data busses are muxed between the FlexBus and another module. At the end of the read bus cycles the address signals are indeterminate.
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
Functional Description
FlexBus
1. Set FB_R/W to write.
External Memory/Peripheral
1. FlexBus asserts internal FB_TA (auto acknowledge/internal termination). 2. Sample FB_TA low.
1. Select the appropriate slave device. 2. Latch data on the external address signals. 3. Assert FB_TA (external termination).
The following figure shows the write cycle timing diagram. Note The address and data busses are muxed between the FlexBus and another module. At the end of the write bus cycles, the address signals are indeterminate.
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
The following figure illustrates the basic byte read transfer to an 8-bit device with no wait states: The address is driven on the full FB_AD[31:8] bus in the first clock.
The device tristates FB_AD[31:24] on the second clock and continues to drive address on FB_AD[23:0] throughout the bus cycle. The external device returns the read data on FB_AD[31:24] and may tristate the data line or continue driving the data one clock after FB_TA is sampled asserted.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 01
The following figure shows the similar configuration for a write transfer. The data is driven from the second clock on FB_AD[31:24].
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ=01
29.4.6.3.2
The following figure illustrates the basic word read transfer to a 16-bit device with no wait states. The address is driven on the full FB_AD[31:8] bus in the first clock. The device tristates FB_AD[31:16] on the second clock and continues to drive address on FB_AD[15:0] throughout the bus cycle. The external device returns the read data on FB_AD[31:16] and may tristate the data line or continue driving the data one clock after FB_TA is sampled asserted.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 10
The following figure shows the similar configuration for a write transfer. The data is driven from the second clock on FB_AD[31:16].
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ=10
29.4.6.3.3
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 00
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ=00
Wait states can be inserted before each beat of a transfer by programming the CSCRn registers. Wait states can give the peripheral or memory more time to return read data or sample write data. The following figures show the basic read and write bus cycles (also shown in Figure 29-27 and Figure 29-32 ) with the default of no wait states respectively.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
If wait states are used, the S1 state repeats continuously until the the chip-select autoacknowledge unit asserts internal transfer acknowledge or the external FB_TA is recognized as asserted. The following figures show a read and write cycle with one wait state respectively.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
29.4.6.4.2
The timing of the assertion and negation of the chip selects, byte selects, and output enable can be programmed on a chip-select basis. Each chip-select can be programmed to assert one to four clocks after address-latch enable (FB_ALE) is asserted. The following figures show read- and write-bus cycles with two clocks of address setup respectively.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
Figure 29-40. Read-Bus Cycle with Two-Clock Address Setup (No Wait States)
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
Figure 29-41. Write-Bus Cycle with Two Clock Address Setup (No Wait States)
In addition to address setup, a programmable address hold option for each chip select exists. Address and attributes can be held one to four clocks after chip-select, byteselects, and output-enable negate. The following figures show read and write bus cycles with two clocks of address hold respectively.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ
Figure 29-42. Read Cycle with Two-Clock Address Hold (No Wait States)
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ
Figure 29-43. Write Cycle with Two-Clock Address Hold (No Wait States)
The following figure shows a bus cycle using address setup, wait states, and address hold.
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
Figure 29-44. Write Cycle with Two-Clock Address Setup and Two-Clock Hold (One Wait State)
The FlexBus can support 2-1-1-1 burst cycles to maximize system performance. Delaying termination of the cycle can add wait states. If internal termination is used, different wait state counters can be used for the first access and the following beats. The CSCRn registers enable bursting for reads, writes, or both. Memory spaces can be declared burst-inhibited for reads and writes by clearing the appropriate CSCRn[BSTR,BSTW] bits. The following figure shows a 32-bit read to an 8-bit device programmed for burst enable. The transfer results in a 4-beat burst and the data is driven on FB_AD[31:24]. The transfer size is driven at 32-bit (00) throughout the bus cycle. Note In non-multiplexed address/data mode, the address on FB_A increments only during internally-terminated burst cycles. The first address is driven throughout the entire burst for externallyterminated cycles. In multiplexed address/data mode, the address is driven on FB_AD only during the first cycle for all terminated cycles.
Functional Description
Add+1 Data
Add+3
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 11
Figure 29-45. 32-bit-Read Burst from 8-Bit Port 2-1-1-1 (No Wait States)
The following figure shows a 32-bit write to an 8-bit device with burst enabled. The transfer results in a 4-beat burst and the data is driven on FB_AD[31:24]. The transfer size is driven at 32-bit (00) throughout the bus cycle. Note The first beat of any write burst cycle has at least one wait state. If the bus cycle is programmed for zero wait states (CSCRn[WS] = 0), one wait state is added. Otherwise, the programmed number of wait states are used.
Add+1
Add+2 Data
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
Figure 29-46. 32-bit-Write Burst to 8-Bit Port 3-1-1-1 (No Wait States)
The following figure shows a 32-bit read from an 8-bit device with burst inhibited. The transfer results in four individual transfers. The transfer size is driven at 32-bit (00) during the first transfer and at byte (01) during the next three transfers. Note There is an extra clock of address setup (AS) for each burstinhibited transfer between states S0 and S1.
Functional Description
Add+1 Data
Add+2 Data
Add+3 Data
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 00
TSIZ = 01
Figure 29-47. 32-bit-Read Burst-Inhibited from 8-Bit Port (No Wait States)
The following figure shows a 32-bit write to an 8-bit device with burst inhibited. The transfer results in four individual transfers. The transfer size is driven at 32-bit (00) during the first transfer and at byte (01) during the next three transfers.
FB_CLK FB_A[Y] FB_D[X] FB_RW FB_TS FB_ALE
AA=1
Add+1 Data
Add+2 Data
Add+3 Data
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 00
TSIZ = 01
The following figure illustrates another read burst transfer, but in this case a wait state is added between individual beats.
Note CSCRn[WS] determines the number of wait states in the first beat. However, for subsequent beats, the CSCRn[WS] (or CSCRn[SWS] if CSCRn[SWSEN] is set) determines the number of wait states.
Add+1 Data
Add+2 Data
Add+3 Data
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 00
Figure 29-49. 32-bit-Read Burst from 8-Bit Port 3-2-2-2 (One Wait State)
The following figure illustrates a write burst transfer with one wait state.
Functional Description
Add+1 Data
Add+2 Data
Add+3 Data
AA=0
FB_TA FB_TSIZ[1:0]
AA=0
TSIZ = 00
Figure 29-50. 32-bit-Write Burst to 8-Bit Port 3-2-2-2 (One Wait State)
If address setup and hold are used, only the first and last beat of the burst cycle are affected. The following figure shows a read cycle with one clock of address setup and address hold. Note In non-multiplexed address/data mode, the address on FB_A increments only during internally-terminated burst cycles (CSCRn[AA] = 1). The attached device must be able to account for this, or a wait state must be added. The first address is driven throughout the entire burst for externally-terminated cycles. In multiplexed address/data mode, the address is driven on FB_AD only during the first cycle for internally- and externally-terminated cycles.
Add+1 Data
Add+2 Data
Add+3
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ=11
AA=0
Figure 29-51. 32-bit-Read Burst from 8-Bit Port 3-1-1-1 (Address Setup and Hold)
The following figure shows a write cycle with one clock of address setup and address hold.
FB_CLK FB_A[Y] FB_D[X] FB_RW FB_TS FB_ALE
AA=1
Add+1 Data
Add+2 Data
Add+3 Data
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ=11
AA=0
Figure 29-52. 32-bit-Write Burst to 8-Bit Port 3-1-1-1 (Address Setup and Hold)
Functional Description
AA=0
FB_TA FB_TSIZ[1:0]
TSIZ
AA=0
Address with no hit to any chip select Address with hits to multiple chip selects Writes to reserved addresses in the memory map Writes to reserved bits in the CSPMCR register FlexBus accesses when the FlexBus is secure
Also, the device can hang if the FlexBus is configured for external termination and the CSPMCR is not configured for FB_TA.
Functional Description
Chapter 30 EzPort
30.1 Overview
EzPort is a serial flash programming interface that allows In-System Programming (ISP) of flash memory contents on a 32 bit general purpose micro-controller. Memory contents can be read, erased and programmed from off-chip in a compatible format to many standalone flash memory chips, without necessitating the removal of the micro-controller from the system.
30.1.1 Introduction
The block diagram of the EzPort is as following.
Overview
EzPort Enabled G
EZP_CS EZP_CK
Flash Controller
EzPort
EZP_D EZP_Q
Flash Memory
30.1.2 Features
The EzPort includes the following features: Serial interface that is compatible with a subset of the SPI format. Able to read, erase and program flash memory. Able to reset the micro-controller, allowing it to boot from the flash memory after the memory has been configured.
Chapter 30 EzPort
Enabled When enabled, the EzPort steals access to the flash memory, preventing access from other cores or peripherals. The rest of the microcontroller is disabled to avoid conflicts. The flash is configured for NVM Special Mode. Disabled When the EzPort is disabled, the rest of the micro-controller can access flash memory as normal. The EzPort provides a simple interface to connect an external device to the flash memory on board a 32 bit micro-controller. The interface itself is compatible with the SPI interface (with the EzPort operating as a slave) running in either of the two following modes with data transmitted most significant bit first: CPOL = 0, CPHA = 0 CPOL = 1, CPHA = 1 Commands are issued by the external device to erase, program or read the contents of the flash memory. The serial data out from the EzPort is tri-stated unless data is being driven, allowing the signal to be shared among several different EzPort (or compatible) devices in parallel, provided they have different chip selects.
Command Definition
The maximum frequency of the EzPort clock is half the system clock frequency for all commands except when executing the Read Data or Read FlexRAM commands. When executing these commands, the EzPort clock has a maximum frequency of one-eighth the system clock frequency.
Chapter 30 EzPort
Address must be 32-bit aligned (two LSBs must be zero). One byte of dummy data must be shifted in before valid data is shifted out. Address must be 64-bit aligned (three LSBs must be zero). A section is defined as the smaller of either half the size of FlexRAM or the flash sector size. Total number of data bytes programmed must be a multiple of 8. 5. Bulk Erase is accepted when security is set only if the BEDIS status bit is not set. 6. Note that the Flash will be in NVM Special mode, restricting which types of commands can be executed through WRITE_FCCOB when security is enabled.
Command Definition
1. Reset value reflects the status of flash security out of reset. 2. Reset value reflects FlexNVM flash partitioning. If FlexNVM flash has been paritioned for EEPROM, this bit is set immediately after reset. Note that FLEXRAM is cleared after the EzPort initialization sequence completes, as indicated by clearing of WIP. 3. Reset value reflects if bulk erase is enabled or disabled out of reset 4. Initial value of WIP is 1, but the value clears to 0 after EzPort initialization is complete
Chapter 30 EzPort
Command Definition
Chapter 30 EzPort
Command Definition
After receiving 12 bytes of data, EzPort writes the data to the FCCOB 0-B registers in the flash and then automatically launches the command within the flash. If greater or less than 12 bytes of data is received, this command has unexpected results and may result in the WEF flag being set. This command is not accepted if the WEF or WIP bit is set or if the WEN bit is not set in the EzPort status register.
Chapter 30 EzPort
This command is not accepted if the WEF, WIP or FS bit is set or if the WEN bit is not set in the EzPort status register.
NOTE The flash block address map for access through EzPort may not conform to the system memory map. Changes are made to allow the EzPort address width to remain at 24-bits.
Table 30-5. Flash Memory Map for EzPort Access
Valid Start Address 0x0000_0000 0x0080_0000 0x0000_0000 Size See device's Chip Configura tion details See device's Chip Configura tion details See device's Chip Configura tion details Flash block Flash FlexNVM FlexRAM Valid Commands READ, FAST_READ, SP, SE, BE READ, FAST_READ, SP, SE, BE RDFLEXRAM, FAST_RDFLEXRAM, WRFLEXRAM, BE
31.1.1 Features
Features of the CRC module include: Hardware CRC generator circuit using a 16-bit or 32-bit (programmable) shift register. Programmable initial seed value and polynomial. Option to transpose input data or output data (the CRC result) bitwise or bytewise. This option is required for certain CRC standards. A bytewise transpose operation is not possible when accessing the CRC data register via 8-bit accesses. In this case, the user's software must perform the bytewise transpose function. Option for inversion of final CRC result. 32-bit CPU register programming interface.
WAS
FXOR
MUX
Reverse Logic
0000_1021h 0000_0000h
HU 1 1 1 1 1 1 1 1 1 1 1
HL 1 1 1 1 1 1 1 1
LU 1 1 1 1 1 1 1 1 1
LL 1 1 1 1
2316 HL
70 LL
HIGH 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
LOW 0 0 0 1 0 0 0 0 1
150 LOW
FXOR
TCRC
TOTR
WAS
TOT
Type of Transpose for Read These bits identify the transpose configuration of the value read from the CRC data register. Refer to the description of the transpose feature for the available transpose options. 00 01 10 11 No transposition. Bits in bytes are transposed; bytes are not transposed. Both bits in bytes and bytes are transposed. Only bytes are transposed; no bits in a byte are transposed.
27 Reserved 26 FXOR
This read-only bit is reserved and always has the value zero. Complement Read of CRC data register Some CRC protocols require the final checksum to be XORed with 0xFFFFFFFF or 0xFFFF. Asserting this bit enables "on the fly" complementing of read data. 0 1 No XOR on reading. Invert or complement the read value of the CRC data register.
25 WAS
Write CRC data register as seed When this bit is asserted, a value written to the CRC data register is considered a seed value. When this bit is de-asserted, a value written to the CRC data register is taken as data for CRC computation. Table continues on the next page...
Functional description
230 Reserved
This read-only bitfield is reserved and always has the value zero.
3. Write a 16-bit polynomial to the GPOLY[LOW] field. The GPOLY[HIGH] field is not usable in 16-bit CRC mode. 4. Set the CTRL[WAS] bit to program the seed value. 5. Write a 16-bit seed to CRC[LU:LL]. CRC[HU:HL] are not used. 6. Clear the CTRL[WAS] bit to start writing data values. 7. Write data values into CRC[HU:HL:LU:LL]. A CRC is computed on every data value write, and the intermediate CRC result is stored back into CRC[LU:LL]. 8. When all values have been written, read the final CRC result from CRC[LU:LL]. Transpose and complement operations are performed "on the fly" while reading or writing values. See Transpose feature and CRC result complement for details.
Functional description
Some protocols use little endian format for the data stream to calculate a CRC. In this case, the transpose feature usefully flips the bits. This transpose option is one of the types supported by the CRC module.
24
31
16
23
15
3. CTRL[TOT] or CTRL[TOTR] is 10
Both bits in bytes and bytes are transposed. reg[31:0] becomes = {reg[0:7], reg[8:15],reg[16:23], reg[24:31]}
31
0
4. CTRL[TOT] or CTRL[TOTR] is 11
Bytes are transposed, but bits are not transposed. reg[31:0] becomes {reg[7:0], reg[15:8], reg[23:16], reg[31:24]}
31 24 23 16 15 8 7 0
15
23
16
31
24
NOTE For 8-bit and 16-bit write accesses to the CRC data register, the data is transposed with zeros on the unused byte or bytes (taking 32 bits as a whole), but the CRC is calculated on the valid byte(s) only. When reading the CRC data register for a 16-bit CRC result and using transpose options 10 and 11, the resulting value after transposition resides in the CRC[HU:HL] fields. The user software must account for this situation when reading the 16-bit CRC result, so reading 32 bits is preferred.
Functional description
32.1.1 Features
Features of the ADC module include: Linear successive approximation algorithm with up to 16-bit resolution Up to 4 pairs of differential and 24 single-ended external analog inputs Output modes: differential 16-bit, 13-bit, 11-bit and 9-bit modes, or single-ended 16bit, 12-bit, 10-bit and 8-bit modes Output formatted in 2's complement 16-bit sign extended for differential modes Output in right-justified unsigned format for single-ended Single or continuous conversion (automatic return to idle after single conversion) Configurable sample time and conversion speed/power Conversion complete / hardware average complete flag and interrupt Input clock selectable from up to four sources Operation in low power modes for lower noise operation
Introduction
Asynchronous clock source for lower noise operation with option to output the clock Selectable hardware conversion trigger with hardware channel select Automatic compare with interrupt for less-than, greater-than or equal-to, within range, or out-of-range, programmable value Temperature sensor Hardware average function Selectable voltage reference: external or alternate Self-calibration mode Programmable Gain Amplifier (PGA) with up to x64 gain
COCO
ADCH
ADACKEN
c o m p le te
AIEN
MODE
trig g e r
ADCO
A D IV
ADLSMP/ADLSTS
ADLPC/ADHSC
A D IC L K
DIFF
Control Sequencer
initialize sample
ADCK
Clock Divide
ADACK
Bus Clock
2 ALTCLK
convert
transfer
abort
A D V IN P A D V IN M SAR Converter
ADCOFS
OFS
Calibration
CAL
Averager
AVGE, AVGS
CALF
SC3
V REFSH
TempM
Formatting D
MODE
CFG1,2 RA
V REFH VALTH
V REFSL
tra n s fe r Rn Compare Logic C V1 CV2 ACFE ACFGT, ACREN Compare true SC2 1
CV1:CV2
In some packages, VREFH is connected in the package to VDDA and VREFL to VSSA. If externally available, the positive reference(s) may be connected to the same potential as VDDA or may be driven by an external source to a level between the minimum Ref Voltage High and the VDDA potential (VREFH must never exceed VDDA). Connect the ground references to the same voltage potential as VSSA.
ADC status and control registers 1 (ADC0_SC1A) ADC status and control registers 1 (ADC0_SC1B) ADC configuration register 1 (ADC0_CFG1) Configuration register 2 (ADC0_CFG2) ADC data result register (ADC0_RA)
Register Definition
ADC data result register (ADC0_RB) Compare value registers (ADC0_CV1) Compare value registers (ADC0_CV2) Status and control register 2 (ADC0_SC2) Status and control register 3 (ADC0_SC3) ADC offset correction register (ADC0_OFS) ADC plus-side gain register (ADC0_PG) ADC minus-side gain register (ADC0_MG) ADC plus-side general calibration value register (ADC0_CLPD) ADC plus-side general calibration value register (ADC0_CLPS) ADC plus-side general calibration value register (ADC0_CLP4) ADC plus-side general calibration value register (ADC0_CLP3) ADC plus-side general calibration value register (ADC0_CLP2) ADC plus-side general calibration value register (ADC0_CLP1) ADC plus-side general calibration value register (ADC0_CLP0) ADC PGA register (ADC0_PGA) ADC minus-side general calibration value register (ADC0_CLMD) ADC minus-side general calibration value register (ADC0_CLMS) ADC minus-side general calibration value register (ADC0_CLM4) ADC minus-side general calibration value register (ADC0_CLM3)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0004h 0000_8200h 0000_8200h 0000_000Ah 0000_0020h 0000_0200h 0000_0100h 0000_0080h 0000_0040h 0000_0020h 0000_0000h 0000_000Ah 0000_0020h 0000_0200h 0000_0100h
0000_0080h 0000_0040h 0000_0020h 0000_001Fh 0000_001Fh 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0004h 0000_8200h 0000_8200h 0000_000Ah 0000_0020h 0000_0200h 0000_0100h
Register Definition
0000_0080h 0000_0040h 0000_0020h 0000_0000h 0000_000Ah 0000_0020h 0000_0200h 0000_0100h 0000_0080h 0000_0040h 0000_0020h
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
COCO
AIEN
DIFF
ADCH
Reset
Register Definition
Interrupt enable AIEN enables conversion complete interrupts. When COCO becomes set while the respective AIEN is high, an interrupt is asserted. 0 1 Conversion complete interrupt disabled. Conversion complete interrupt enabled.
5 DIFF
Differential mode enable DIFF configures the ADC to operate in differential mode. When enabled, this mode automatically selects from the differential channels, and changes the conversion algorithm and the number of cycles to complete a conversion. 0 1 Single-ended conversions and input channels are selected. Differential conversions and input channels are selected.
40 ADCH
Input channel select The ADCH bits form a 5-bit field that selects one of the input channels. The input channel decode is dependent upon the value of the DIFF bit. The successive approximation converter subsystem is turned off when the channel select bits are all set (ADCH = 11111). This feature allows for explicit disabling of the ADC and isolation of the input channel from all sources. Terminating continuous conversions this way prevents an additional single conversion from being performed. It is not necessary to set the channel select bits to all ones to place the ADC in a low-power state when continuous conversions are not enabled because the module automatically enters a low-power state when a conversion completes. 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 When DIFF=0, DADP0 is selected as input; when DIFF=1, DAD0 is selected as input. When DIFF=0, DADP1 is selected as input; when DIFF=1, DAD1 is selected as input. When DIFF=0, DADP2 is selected as input; when DIFF=1, DAD2 is selected as input. When DIFF=0, DADP3 is selected as input; when DIFF=1, DAD3 is selected as input. DAD0DAD3 are associated with the input pin pairs DADPx and DADMx. When DIFF=0, AD4 is selected as input; when DIFF=1, it is reserved. When DIFF=0, AD5 is selected as input; when DIFF=1, it is reserved. When DIFF=0, AD6 is selected as input; when DIFF=1, it is reserved. When DIFF=0, AD7 is selected as input; when DIFF=1, it is reserved. When DIFF=0, AD8 is selected as input; when DIFF=1, it is reserved. When DIFF=0, AD9 is selected as input; when DIFF=1, it is reserved. When DIFF=0, AD10 is selected as input; when DIFF=1, it is reserved. Table continues on the next page...
Register Definition Addresses: ADC0_CFG1 4003_B000h base + 8h offset = 4003_B008h ADC1_CFG1 400B_B000h base + 8h offset = 400B_B008h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
ADIV
ADLSMP
ADLPC
MODE
ADICLK
Reset
Clock divide select ADIV selects the divide ratio used by the ADC to generate the internal clock ADCK. 00 01 10 11 The divide ratio is 1 and the clock rate is input clock. The divide ratio is 2 and the clock rate is (input clock)/2. The divide ratio is 4 and the clock rate is (input clock)/4. The divide ratio is 8 and the clock rate is (input clock)/8.
4 ADLSMP
Sample time configuration ADLSMP selects between different sample times based on the conversion mode selected. This bit adjusts the sample period to allow higher impedance inputs to be accurately sampled or to maximize conversion speed for lower impedance inputs. Longer sample times can also be used to lower overall power consumption if continuous conversions are enabled and high conversion rates are not required. When ADLSMP=1, the long sample time select bits, (ADLSTS[1:0]), can select the extent of the long sample time. 0 1 Short sample time. Long sample time.
32 MODE
Conversion mode selection MODE bits are used to select the ADC resolution mode. Table continues on the next page...
Input clock select ADICLK bits select the input clock source to generate the internal clock, ADCK. Note that when the ADACK clock source is selected, it is not required to be active prior to conversion start. When it is selected and it is not active prior to a conversion start (ADACKEN=0), the asynchronous clock is activated at the start of a conversion and shuts off when conversions are terminated. In this case, there is an associated clock startup delay each time the clock source is re-activated. 00 01 10 11 Bus clock. Bus clock divided by 2. Alternate clock (ALTCLK). Asynchronous clock (ADACK).
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
ADACKEN
MUXSEL
ADHSC
ADLSTS
Reset
Register Definition
Asynchronous clock output enable ADACKEN enables the ADC's asynchronous clock source and the clock source output regardless of the conversion and input clock select (ADICLK bits) status of the ADC. Based on MCU configuration, the asynchronous clock may be used by other modules (see Chip Configuration information). Setting this bit allows the clock to be used even while the ADC is idle or operating from a different clock source. Also, latency of initiating a single or first-continuous conversion with the asynchronous clock selected is reduced since the ADACK clock is already operational. 0 1 Asynchronous clock output disabled; Asynchronous clock only enabled if selected by ADICLK and a conversion is active. Asynchronous clock and clock output enabled regardless of the state of the ADC.
2 ADHSC
High speed configuration ADHSC configures the ADC for very high speed operation. The conversion sequence is altered (2 ADCK cycles added to the conversion time) to allow higher speed conversion clocks. 0 1 Normal conversion sequence selected. High speed conversion sequence selected (2 additional ADCK cycles to total conversion time).
10 ADLSTS
Long sample time select ADLSTS selects between the extended sample times when long sample time is selected (ADLSMP=1). This allows higher impedance inputs to be accurately sampled or to maximize conversion speed for lower impedance inputs. Longer sample times can also be used to lower overall power consumption when continuous conversions are enabled if high conversion rates are not required. 00 01 10 11 Default longest sample time (20 extra ADCK cycles; 24 ADCK cycles total). 12 extra ADCK cycles; 16 ADCK cycles total sample time. 6 extra ADCK cycles; 10 ADCK cycles total sample time. 2 extra ADCK cycles; 6 ADCK cycles total sample time.
Unused bits in the Rn register are cleared in unsigned right justified modes and carry the sign bit (MSB) in sign extended 2's complement modes. For example, when configured for 10-bit single-ended mode, D[15:10] are cleared. When configured for 11-bit differential mode, D[15:10] carry the sign bit (bit 10 extended through bit 15). The following table describes the behavior of the data result registers in the different modes of operation.
Table 32-44. Data result register description
Conversion mode 16-bit differential 16-bit single-ended 13-bit differential 12-bit single-ended 11-bit differential 10-bit single-ended 9-bit differential 8-bit single-ended D1 D1 D1 D1 D1 D1 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 5 4 3 2 1 0 S D S 0 S 0 S 0 D D S 0 S 0 S 0 D D S 0 S 0 S 0 D D S 0 S 0 S 0 D D D D S 0 S 0 D D D D S 0 S 0 D D D D D D S 0 D D D D D D S 0 D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D Format Signed 2's comple ment Unsigned right justi fied Sign extended 2's complement Unsigned right justi fied Sign extended 2's complement Unsigned right justi fied Sign extended 2's complement Unsigned right justi fied
NOTE S: Sign bit or sign bit extension; D: Data (2's complement data if indicated)
Addresses: ADC0_RA 4003_B000h base + 10h offset = 4003_B010h ADC0_RB 4003_B000h base + 14h offset = 4003_B014h ADC1_RA 400B_B000h base + 10h offset = 400B_B010h ADC1_RB 400B_B000h base + 14h offset = 400B_B014h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Register Definition
CV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Chapter 32 Analog-to-Digital Converter (ADC) Addresses: ADC0_SC2 4003_B000h base + 20h offset = 4003_B020h ADC1_SC2 400B_B000h base + 20h offset = 400B_B020h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7 ADACT
0
6
0
5
0
4
0
3
0
2
0
1
0
0
DMAEN
ADTRG
ACREN
ACFGT
ACFE
REFSEL
Reset
Conversion trigger select ADTRG selects the type of trigger used for initiating a conversion. Two types of trigger are selectable: software trigger and hardware trigger. When software trigger is selected, a conversion is initiated following a write to SC1A. When hardware trigger is selected, a conversion is initiated following the assertion of the ADHWT input after a pulse of the ADHWTSn input. 0 1 Software trigger selected. Hardware trigger selected.
5 ACFE
Compare function enable ACFE enables the compare function. 0 1 Compare function disabled. Compare function enabled.
4 ACFGT
Compare function greater than enable ACFGT configures the compare function to check the conversion result relative to the compare value register(s) (CV1 and CV2) based upon the value of ACREN. The ACFE bit must be set for ACFGT to have any effect. Table continues on the next page...
Register Definition
Compare function range enable ACREN configures the compare function to check if the conversion result of the input being monitored is either between or outside the range formed by the compare value registers (CV1 and CV2) determined by the value of ACFGT.{27}The ACFE bit must be set for ACFGT to have any effect. 0 1 Range function disabled.{27} Only the compare value 1 register (CV1) is compared. Range function enabled.{27} Both compare value registers (CV1 and CV2) are compared.
2 DMAEN
DMA enable 0 1 DMA is disabled. DMA is enabled and will assert the ADC DMA request during a ADC conversion complete event noted by the assertion of any of the ADC COCO flags.
10 REFSEL
Voltage reference selection REFSEL bits select the voltage reference source used for conversions. 00 01 Default voltage reference pin pair (External pins V REFH and V REFL ) Alternate reference pair (V ALTH and V ALTL ). This pair may be additional external pins or internal sources depending on MCU configuration. Consult the module introduction for information on the Voltage Reference specific to this MCU. Reserved Reserved
10 11
Chapter 32 Analog-to-Digital Converter (ADC) Addresses: ADC0_SC3 4003_B000h base + 24h offset = 4003_B024h ADC1_SC3 400B_B000h base + 24h offset = 400B_B024h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6 CALF
0
5
0
4
0
3
0
2
0
1
0
0
ADCO
AVGE
0 CAL
AVGS
Reset
6 CALF
This read-only bitfield is reserved and always has the value zero. Continuous conversion enable ADCO enables continuous conversions. 0 1 One conversion or one set of conversions if the hardware average function is enabled (AVGE=1) after initiating a conversion. Continuous conversions or sets of conversions if the hardware average function is enabled (AVGE=1) after initiating a conversion.
2 AVGE
Hardware average enable AVGE enables the hardware average function of the ADC. Table continues on the next page...
Register Definition
Hardware average select AVGS determines how many ADC conversions will be averaged to create the ADC average result. 00 01 10 11 4 samples averaged. 8 samples averaged. 16 samples averaged. 32 samples averaged.
OFS 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
The plus-side gain register (PG) contains the gain error correction for the plus-side input in differential mode or the overall conversion in single-ended mode. PG, a 16-bit real number in binary format, is the gain adjustment factor, with the radix point fixed between ADPG15 and ADPG14. This register must be written by the user with the value described in the calibration procedure or the gain error specifications may not be met.
Addresses: ADC0_PG 4003_B000h base + 2Ch offset = 4003_B02Ch ADC1_PG 400B_B000h base + 2Ch offset = 400B_B02Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PG 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
MG 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Register Definition
CLPD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
Chapter 32 Analog-to-Digital Converter (ADC) Addresses: ADC0_CLPS 4003_B000h base + 38h offset = 4003_B038h ADC1_CLPS 400B_B000h base + 38h offset = 400B_B038h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLPS 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
CLP4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Register Definition Addresses: ADC0_CLP3 4003_B000h base + 40h offset = 4003_B040h ADC1_CLP3 400B_B000h base + 40h offset = 400B_B040h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLP3 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
CLP2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Chapter 32 Analog-to-Digital Converter (ADC) Addresses: ADC0_CLP1 4003_B000h base + 48h offset = 4003_B048h ADC1_CLP1 400B_B000h base + 48h offset = 400B_B048h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLP1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
CLP0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
Register Definition
0 0 0 0 0 0 0 PGAG 0 0 0 0 0 0 0 0 0 0 0
This read-only bit is reserved and always has the value zero. This bit is reserved. This bit is reserved. PGA gain setting PGA gain = 2^(PGAG) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1 2 4 8 16 32 64 Reserved Reserved Reserved Reserved Reserved Reserved Reserved Table continues on the next page...
This read-only bitfield is reserved and always has the value zero.
CLMD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
Register Definition Addresses: ADC0_CLMS 4003_B000h base + 58h offset = 4003_B058h ADC1_CLMS 400B_B000h base + 58h offset = 400B_B058h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLMS 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
CLM4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Chapter 32 Analog-to-Digital Converter (ADC) Addresses: ADC0_CLM3 4003_B000h base + 60h offset = 4003_B060h ADC1_CLM3 400B_B000h base + 60h offset = 400B_B060h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLM3 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
CLM2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Functional description Addresses: ADC0_CLM1 4003_B000h base + 68h offset = 4003_B068h ADC1_CLM1 400B_B000h base + 68h offset = 400B_B068h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CLM1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
CLM0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
(ADACKEN is 0), the module is in its lowest power state. The ADC can perform an analog-to-digital conversion on any of the software selectable channels. All modes perform conversion by a successive approximation algorithm. To meet accuracy specifications, the ADC module must be calibrated using the on chip calibration function. See Calibration function for details on how to perform calibration. When the conversion is completed, the result is placed in the data registers (Rn). The respective conversion complete flag (COCO) is then set and an interrupt is generated if the respective conversion complete interrupt has been enabled (AIEN=1). The ADC module has the capability of automatically comparing the result of a conversion with the contents of the compare value registers. The compare function is enabled by setting the ACFE bit and operates with any of the conversion modes and configurations. The ADC module has the capability of automatically averaging the result of multiple conversions. The hardware average function is enabled by setting the AVGE bit and operates with any of the conversion modes and configurations. NOTE For the chip specific modes of operation, refer to the Power Management information of this MCU.
Functional description
Functional description
written. In hardware triggered operation, conversions begin after a hardware trigger. If continuous conversions are also enabled, a new set of conversions to be averaged are initiated following the last of the selected number of conversions.
Functional description
The total conversion time depends upon: the sample time (as determined by ADLSMP and ADLSTS bits), the MCU bus frequency, the conversion mode (as determined by MODE and SC1n[DIFF] bits), the high speed configuration (ADHSC bit), and the frequency of the conversion clock (fADCK).
The ADHSC bit is used to configure a higher clock input frequency. This will allow faster overall conversion times. To meet internal ADC timing requirements, the ADHSC bit adds additional ADCK cycles. Conversions with ADHSC = 1 take two more ADCK cycles. ADHSC should be used when the ADCLK exceeds the limit for ADHSC = 0. After the module becomes active, sampling of the input begins. ADLSMP and ADLSTS select between sample times based on the conversion mode that is selected. When sampling is completed, the converter is isolated from the input channel and a successive approximation algorithm is performed to determine the digital value of the analog signal. The result of the conversion is transferred to Rn upon completion of the conversion algorithm. If the bus frequency is less than the fADCK frequency, precise sample time for continuous conversions cannot be guaranteed when short sample is enabled (ADLSMP=0). The maximum total conversion time is determined by the clock source chosen and the divide ratio selected. The clock source is selectable by the ADICLK bits, and the divide ratio is specified by the ADIV bits. The maximum total conversion time for all configurations is summarized in the equation below. Refer to the following tables for the variables referenced in the equation.
Figure 32-95. Conversion time equation Table 32-107. Single or first continuous time adder (SFCAdder)
ADLSMP 1 1 1 0 0 0 ADACK EN x 1 0 x 1 0 ADICLK 0x, 10 11 11 0x, 10 11 11 Single or first continuous time adder (SFCAdder) 3 ADCK cycles + 5 bus clock cycles 3 ADCK cycles + 5 bus clock cycles1 5 s + 3 ADCK cycles + 5 bus clock cycles 5 ADCK cycles + 5 bus clock cycles 5 ADCK cycles + 5 bus clock cycles1 5 s + 5 ADCK cycles + 5 bus clock cycles
1. To achieve this time, ADACKEN must be 1 for at least 5 s prior to the conversion is initiated.
Functional description
Note The ADCK frequency must be between fADCK minimum and fADCK maximum to meet ADC specifications.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
804 Freescale Semiconductor, Inc.
A typical configuration for ADC conversion is: 10-bit mode, with the bus clock selected as the input clock source, the input clock divide-by-1 ratio selected, and a bus frequency of 8 MHz, long sample time disabled and high speed conversion disabled. The conversion time for a single conversion is calculated by using Figure 32-95 and the information provided in Table 32-107 through Table 32-111. The table below list the variables of Figure 32-95.
Table 32-112. Typical conversion time
Variable SFCAdder AverageNum BCT LSTAdder HSCAdder Time 5 ADCK cycles + 5 bus clock cycles 1 20 ADCK cycles 0 0
The resulting conversion time is generated using the parameters listed in the proceeding table. Therefore, for a bus clock equal to 8 MHz and an ADCK equal to 8 MHz the resulting conversion time is 3.75 s. 32.4.5.6.2 Long conversion time configuration
A configuration for long ADC conversion is: 16-bit differential mode with the bus clock selected as the input clock source, the input clock divide-by-8 ratio selected, a bus frequency of 8 MHz, long sample time enabled, configured for longest adder, high speed conversion disabled, and average enabled for 32 conversions. The conversion time for this conversion is calculated by using Figure 32-95 and the information provided in Table 32-107 through Table 32-111. The following table lists the variables of the Figure 32-95.
Table 32-113. Typical conversion time
Variable SFCAdder Time 3 ADCK cycles + 5 bus clock cycles Table continues on the next page...
Functional description
The resulting conversion time is generated using the parameters listed in the preceding table. Therefore, for bus clock equal to 8 MHz and ADCK equal to 1 MHz, the resulting conversion time is 57.625 s (AverageNum). This results in a total conversion time of 1.844 ms. 32.4.5.6.3 Short conversion time configuration
A configuration for short ADC conversion is: 8-bit single ended mode with the bus clock selected as the input clock source, the input clock divide-by-1 ratio selected, a bus frequency of 20 MHz, long sample time disabled, and high speed conversion enabled. The conversion time for this conversion is calculated by using Figure 32-95 and the information provided in Table 32-107 through Table 32-111. The table below list the variables of Figure 32-95.
Table 32-114. Typical conversion time
Variable SFCAdder AverageNum BCT LSTAdder HSCAdder Time 5 ADCK cycles + 5 bus clock cycles 1 17 ADCK cycles 0 ADCK cycles 2
The resulting conversion time is generated using the parameters listed in in the proceeding table. Therefore, for bus clock equal to 20 MHz and ADCK equal to 20 MHz, the resulting conversion time is 1.625 s.
After the selected input is sampled and converted, the result is placed in an accumulator from which an average is calculated once the selected number of conversions has been completed. When hardware averaging is selected, the completion of a single conversion will not set the COCO bit. If the compare function is either disabled or evaluates true, after the selected number of conversions are completed, the average conversion result is transferred into the data result registers, Rn, and the COCO bit is set. An ADC interrupt is generated upon the setting of COCO if the respective ADC interrupt is enabled (AIEN=1). Note The hardware average function can perform conversions on a channel while the MCU is in Wait or Normal Stop modes. The ADC interrupt wakes the MCU when the hardware average is completed if SC1n[AIEN] bit was set.
Functional description
With the ADC range enable bit set, ADCREN =1, and if compare value register 1 (CV1 value) is less than or equal to the compare value register 2 (CV2 value), then setting ACFGT will select a trigger-if-inside-compare-range inclusive-of-endpoints function. Clearing ACFGT will select a trigger-if-outside-compare-range, not-inclusive-ofendpoints function. If CV1 is greater than CV2, setting ACFGT will select a trigger-if-outside-comparerange, inclusive-of-endpoints function. Clearing ACFGT will select a trigger-if-insidecompare-range, not-inclusive-of-endpoints function. If the condition selected evaluates true, COCO is set. Upon completion of a conversion while the compare function is enabled, if the compare condition is not true, COCO is not set and the conversion result data will not be transferred to the result register. If the hardware averaging function is enabled, the compare function compares the averaged result to the compare values. The same compare function definitions apply. An ADC interrupt is generated upon the setting of COCO if the respective ADC interrupt is enabled (AIEN=1). Note The compare function can monitor the voltage on a channel while the MCU is in Wait or Normal Stop modes. The ADC interrupt wakes the MCU when the compare condition is met.
the highest accuracy is required should be selected, or multiple calibrations can be done for the different configurations. For best calibration results, it is recommended to set hardware averaging to maximum (AVGE=1, AVGS=11 for average of 32), ADC clock frequency fADCK less than or equal to 4 MHz, VREFH=VDDA, and to calibrate at nominal voltage and temperature. The input channel, conversion mode continuous function, compare function, resolution mode, and differential/single-ended mode are all ignored during the calibration function. To initiate calibration, the user sets the CAL bit and the calibration will automatically begin if the ADTRG bit = 0. If ADTRG = 1, the CAL bit will not get set and the calibration fail flag (CALF) will be set. While calibration is active, no ADC register can be written and no stop mode may be entered, or the calibration routine will be aborted causing the CAL bit to clear and the CALF bit to set. At the end of a calibration sequence, the COCO bit of the SC1A register will be set. The AIEN bit can be used to allow an interrupt to occur at the end of a calibration sequence. If at the end of the calibration routine the CALF bit is not set, the automatic calibration routine completed successfully. To complete calibration, the user must generate the gain calibration values using the following procedure: 1. Initialize (clear) a 16-bit variable in RAM. 2. Add the following plus-side calibration results CLP0, CLP1, CLP2, CLP3, CLP4, and CLPS to the variable. 3. Divide the variable by two. 4. Set the MSB of the variable. 5. The previous two steps can be achieved by setting the carry bit, rotating-right through the carry bit on the high byte and again on the low byte. 6. Store the value in the plus-side gain calibration register (PG). 7. Repeat procedure for the minus-side gain calibration value. When complete, the user may reconfigure and use the ADC as desired. A second calibration may also be performed if desired by clearing and again setting the CAL bit. Overall the calibration routine may take as many as 14k ADCK cycles and 100 bus cycles, depending on the results and the clock source chosen. For an 8 MHz clock source, this is about 1.7 ms. To reduce this latency, the calibration values (offset, plus- and minus-side gain, and plus- and minus-side calibration values) may be stored in flash after
Functional description
an initial calibration and recovered prior to the first ADC conversion. This should reduce the calibration latency to 20 register store operations on all subsequent power, reset, or Low Power Stop mode recoveries.
format and the effect will be an addition. An offset correction that results in an out-ofrange value will be forced to the minimum or maximum value (the minimum value for single-ended conversions is 0x0000; for a differential conversion it is 0x8000). To preserve accuracy, the calibrated offset value initially stored in the OFS register must be added to the user defined offset. For applications that may change the offset repeatedly during operation, it is recommended to store the initial offset calibration value in flash so it can be recovered and added to any user offset adjustment value and the sum stored in the OFS register.
where: VTEMP is the voltage of the temperature sensor channel at the ambient temperature. VTEMP25 is the voltage of the temperature sensor channel at 25 C. m is the hot or cold voltage versus temperature slope in V/C. For temperature calculations, use the VTEMP25 and m values from the ADC Electricals table. In application code, the user reads the temperature sensor channel, calculates VTEMP, and compares to VTEMP25. If VTEMP is greater than VTEMP25 the cold slope value is applied in the preceding equation. If VTEMP is less than VTEMP25, the hot slope value is applied in the preceding equation. For more information on using the temperature sensor, see the application note titled Temperature Sensor for the HCS08 Microcontroller Family (document AN3031).
Functional description
Initialization information
Note Hexadecimal values are designated by a preceding 0x, binary values designated by a preceding %, and decimal values have no preceding character.
RA = 0xxx
Holds results of conversion.
CV = 0xxx
Holds compare value when compare function enabled.
Application information
Reset
Continue
supply pins. In these cases, there are separate pads for the analog supplies bonded to the same pin as the corresponding digital supply so that some degree of isolation between the supplies is maintained. When available on a separate pin, both VDDA and VSSA must be connected to the same voltage potential as their corresponding MCU digital supply (VDD and VSS) and must be routed carefully for maximum noise immunity and bypass capacitors placed as near as possible to the package. If separate power supplies are used for analog and digital power, the ground connection between these supplies must be at the VSSA pin. This should be the only ground connection between these supplies if possible. The VSSA pin makes a good single point ground location.
Application information
frequency characteristics. This capacitor is connected between VREFH and VREFL and must be placed as near as possible to the package pins. Resistance in the path is not recommended because the current causes a voltage drop that could result in conversion errors. Inductance in this path must be minimum (parasitic only).
SC = Number of ADCK cycles used during sample window CADIN = Internal ADC input capacitance NUMTAU = -ln(LSBERR / 2N) LSBERR = value of acceptable sampling error in LSBs N = 8 in 8-bit mode, 10 in 10-bit mode, 12 in 12-bit mode or 16 in 16-bit mode Higher source resistances or higher-accuracy sampling is possible by setting ADLSMP and changing the ADLSTS bits (to increase the sample window) or decreasing ADCK frequency to increase sample time.
Application information
For software triggered conversions, immediately follow the write to the SC1 register with a wait instruction or stop instruction. For Normal Stop mode operation, select ADACK as the clock source. Operation in Normal Stop reduces VDD noise but increases effective conversion time due to stop recovery. There is no I/O switching, input or output, on the MCU during the conversion. There are some situations where external system activity causes radiated or conducted noise emissions or excessive VDD noise is coupled into the ADC. In these situations, or when the MCU cannot be placed in Wait or Normal Stop or I/O activity cannot be halted, these recommended actions may reduce the effect of noise on the accuracy: Place a 0.01 F capacitor (CAS) on the selected input channel to VREFL or VSSA (this improves noise issues, but affects the sample rate based on the external analog source resistance). Average the result by converting the analog input many times in succession and dividing the sum of the results. Four samples are required to eliminate the effect of a 1 LSB, one-time error. Reduce the effect of synchronous noise by operating off the asynchronous clock (ADACK) and averaging. Noise that is synchronous to ADCK cannot be averaged out.
LSB
Figure 32-99. Ideal code width for an N bit converter
There is an inherent quantization error due to the digitization of the result. For 8-bit, 10bit, or 12-bit conversions, the code transitions when the voltage is at the midpoint between the points where the straight line transfer function is exactly represented by the
actual transfer function. Therefore, the quantization error will be 1/2 LSB in 8-bit, 10bit, or 12-bit modes. As a consequence, however, the code width of the first (0x000) conversion is only 1/2 LSB and the code width of the last (0xFF or 0x3FF) is 1.5 LSB. For 16-bit conversions, the code transitions only after the full code width is present, so the quantization error is -1 LSB to 0 LSB and the code width of each step is 1 LSB.
Application information
Code jitter is when, at certain points, a given input voltage converts to one of two values when sampled repeatedly. Ideally, when the input voltage is infinitesimally smaller than the transition voltage, the converter yields the lower code (and vice-versa). However, even small amounts of system noise can cause the converter to be indeterminate (between two codes) for a range of input voltages around the transition voltage. This error may be reduced by repeatedly sampling the input and averaging the result. Additionally, the techniques discussed in Noise-induced errors reduces this error. Non-monotonicity is defined as when, except for code jitter, the converter converts to a lower code for a higher input voltage. Missing codes are those values never converted for any input value. In 8-bit or 10-bit mode, the ADC is guaranteed to be monotonic and have no missing codes.
Sampled Windowed (ideal for certain PWM zero-crossing-detection applications) Digitally Filtered Filter can be bypassed may be clocked via external SAMPLE signal or scaled bus clock External hysteresis can be used at the same time that the output filter is used for internal functions. Two software selectable performance levels shorter propagation delay at the expense of higher power. This mode can be used only when the VDDA rail is above the low voltage interrupt trip point. low power, with longer propagation delay. Support DMA transfer A comparison event can be selected to trigger a DMA transfer Can be functional in all modes of operation. None of the window nor filter function is available all over Stop, VLPS, LLS, and VLLSx modes.
6-bit resolution Selectable supply reference source Power down mode to conserve power when it is not being used Output can be routed to internal comparator input
VRSEL
Vin1 Vin2
DAC
ANMUXPEN[7:0]
PSEL[2:0]
Reference Input 0 Reference Input 1 Reference Input 2 Reference Input 3 Reference Input 4 Reference Input 5 Reference Input 6
ANMUX
CMP
MUX
INM
CMPO
MSEL[2:0]
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
INP
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE
0 1
COS CMPO to PAD
bus clock
FILT_PER
Clock Prescaler
In the CMP block diagram: The Window Control block is bypassed when CR1[WE] = 0 If CR1[WE] = 1, the comparator output will be sampled on every bus clock when WINDOW=1 to generate COUTA. Sampling does NOT occur when WINDOW = 0. The Filter Block is bypassed when not in use. The Filter Block acts as a simple sampler if the filter is bypassed and CR0[FILTER_CNT] is set to 0x01. The Filter Block filters based on multiple samples when the filter is bypassed and CR0[FILTER_CNT] is set greater than 0x01.
If CR1[SE] = 1, the external SAMPLE input is used as sampling clock IF CR1[SE] = 0, the divided bus clock is used as sampling clock If enabled, the Filter Block will incur up to 1 bus clock additional latency penalty on COUT due to the fact that COUT (which is crossing clock domain boundaries) must be resynchronized to the bus clock. CR1[WE] and CR1[SE] are mutually exclusive.
The comparator filter and sampling features can be combined as shown in the following table. Individual modes are discussed below.
Table 33-1. Comparator Sample/Filter Controls
Mode # 1 CR1[EN] 0 CR1[WE] X CR1[SE] X CR0[FIL TER_CNT] X FPR[FILT_PER] X Operation Disabled Refer to the Disabled Mode (# 1). 2A 2B 3A 3B 1 1 1 1 0 0 0 0 0 0 1 0 0x00 X 0x01 0x01 X 0x00 X > 0x00 Continuous Mode Refer to the Continuous Mode (#s 2A & 2B). Sampled, Non-Filtered mode Sampled, Non-Filtered Mode (#s 3A & 3B) Refer to the Sampled, Non-Filtered Mode (#s 3A & 3B). 4A 4B 1 1 0 0 1 0 > 0x01 > 0x01 X > 0x00 Sampled, Filtered mode Sampled, Filtered Mode (#s 4A & 4B) Refer to the Sampled, Filtered Mode (#s 4A & 4B). 5A 5B 1 1 1 1 0 0 0x00 X X 0x00 Windowed mode Comparator output is sampled on every rising bus clock edge when SAMPLE=1 to generate COUTA Refer to the Windowed Mode (#s 5A & 5B). 6 1 1 0 0x01 0x01 - 0xFF Windowed/Resampled mode Comparator output is sampled on every rising bus clock edge when SAMPLE=1 to generate COUTA, which is then resampled on an inter val determined by FILT_PER to generate COUT. Refer to the Windowed/Resampled Mode (# 6). 7 1 1 0 > 0x01 0x01 - 0xFF Windowed/Filtered mode Comparator output is sampled on every rising bus clock edge when SAMPLE=1 to generate COUTA, which is then resampled and filtered to generate COUT. Refer to the Windowed/Filtered Mode (#7). All other combinations of CR1[EN], CR1[WE], CR1[SE], CR0[FILTER_CNT], and FPR[FILT_PER] are illegal.
For cases where a comparator is used to drive a fault input (for example, for a motorcontrol module such as FTM), it should generally be configured to operate in continuous mode, so that an external fault can immediately pass through the comparator to the target fault circuitry. Note Filtering and sampling settings should be changed only after setting CR1[SE]=0 and CR0[FILTER_CNT]=0x00. This has the effect of resetting the filter to a known state.
EN,PMODE,HYSTCTR[1:0]
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
0 INP
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE
0 1
COS CMPO to PAD
Clock Prescaler
The analog comparator block is powered and active. CMPO may be optionally inverted, but is not subject to external sampling or filtering. Both Window Control and Filter Blocks are completely bypassed. SCR[COUT] is updated continuously. The path from comparator inputs pins to output pin is operating in combinational (unclocked) mode. COUT and COUTA are identical. For control configurations which result in disabling the Filter Block, refer to .
EN,PMODE,HYSTCTR[1:0]
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
0 INP
0x01
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE=1
0 1
COS CMPO to PAD
Clock Prescaler
In Sampled, Non-Filtered mode, the analog comparator block is powered and active. The path from analog inputs to COUTA is combinational (unclocked). Windowing Control is completely bypassed. COUTA is sampled whenever a rising edge is detected on the Filter Block clock input. The only difference in operation between Sampled, Non-Filtered (# 3A) and Sampled, Non-Filtered (# 3B) is in how the clock to the Filter Block is derived. The comparator filter has no other function than sample/hold of the comparator output in this mode.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
830 Freescale Semiconductor, Inc.
INTERNAL BUS
EN,PMODE,HYSTCTR[1:0]
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
0 INP
0x01
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE=0
0 1
COS CMPO to PAD
bus clock
FILT_PER
Clock Prescaler
INTERNAL BUS
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
0 INP
> 0x01
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE=1
0 1
COS CMPO to PAD
bus clock
FILT_PER
Clock Prescaler
INTERNAL BUS
FILT_PER
EN, PMODE,HYSTCTR[1:0] COS
OPE
INV WE FILTER_CNT SE COUT IER/F CFR/F
>0x01
0 INP 1
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE=0
0 1
COS CMPO to PAD
bus clock
FILT_PER
Clock Prescaler
The only difference in operation between Sampled, Non-Filtered (# 3B) and Sampled, Filtered (# 4B) is that CR0[FILTER_CNT] is now greater than 1, which activates filter operation.
WINDOW P1 - M1
CMPO
COUTA
EN, PMODE,HYSCTR[1:0]
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
0x01 INP
+
INM
CMPO
Polarity Select
Window Control
Filter Block
Interrupt Control
IRQ COUT (TO OTHER SOC FUNCTIONS))
WINDOW/SAMPLE
1 0
COUTA CGMUX SE=0
0 1
COS CMPO to PAD
bus clock
FILT_PER
Clock Prescaler
For control configurations which result in disabling the Filter Block, refer to . When any windowed mode is active, COUTA is clocked by the bus clock whenever WINDOW = 1. The last latched value is held when WINDOW = 0.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
834 Freescale Semiconductor, Inc.
WINDOW P1 - M1
CMPO
COUTA
COUT
This mode of operation results in an unfiltered string of comparator samples where the interval between the samples is determined by FPR[FILT_PER] and the bus clock rate. Configuration for this mode is virtually identical to that for the Windowed/Filtered Mode shown in the next section. The only difference is that the value of CR0[FILTER_CNT] must be exactly one.
EN, PMODE,HYSCTR[1:0]
OPE
WE FILTER_CNT SE COUT IER/F CFR/F
INP
> 0x01
+
INM
Window Control
Filter Block
Interrupt Control
IRQ
1 0
COUTA CGMUX SE=0
0 1
COS CMPO to PAD
bus clock
FILT_PER
Clock Prescaler
5A 5B 6 7
1 1 1 1
1 1 1 1
0 0 0 0
1. TPD represents the intrinsic delay of the analog component plus the polarity select logic. TSAMPLE is the clock period of the external sample clock. Tper is the period of the bus clock.
CMP Interrupts
Vin1
Vin2
VRSEL
MUX Vin
VOSEL[5:0]
DACEN
DACO
MUX
CMP Control Register 0 (CMP0_CR0) CMP Control Register 1 (CMP0_CR1) CMP Filter Period Register (CMP0_FPR) CMP Status and Control Register (CMP0_SCR) DAC Control Register (CMP0_DACCR) MUX Control Register (CMP0_MUXCR) CMP Control Register 0 (CMP1_CR0) Table continues on the next page...
CMP Control Register 1 (CMP1_CR1) CMP Filter Period Register (CMP1_FPR) CMP Status and Control Register (CMP1_SCR) DAC Control Register (CMP1_DACCR) MUX Control Register (CMP1_MUXCR) CMP Control Register 0 (CMP2_CR0) CMP Control Register 1 (CMP2_CR1) CMP Filter Period Register (CMP2_FPR) CMP Status and Control Register (CMP2_SCR) DAC Control Register (CMP2_DACCR) MUX Control Register (CMP2_MUXCR)
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
FILTER_CNT 0 0 0
HYSTCTR 0 0
This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Comparator hard block hysteresis control 00 01 10 11 The hard block output has no hysteresis internally. The hard block output has 20 mv hysteresis internally. The hard block output has 40 mv hysteresis internally. The hard block output has 60 mv hysteresis internally.
SE 0
WE 0
PMODE 0
INV 0
COS 0
OPE 0
EN 0
Windowing Enable At any given time, either SE or WE can be set. If a write to this register attempts to set both, then SE is set and WE is cleared. However, avoid writing ones to both bit locations because this "11" case is reserved and may change in future implementations. 0 1 Windowing mode not selected. Windowing mode selected.
5 Reserved 4 PMODE
This read-only bit is reserved and always has the value zero. Power Mode Select 0 1 Low Speed (LS) comparison mode selected. High Speed (HS) comparison mode selected.
3 INV
Comparator INVERT This bit allows you to select the polarity of the analog comparator function. It is also driven to the COUT output (on both the device pin and as SCR[COUT]) when CR1[OPE]=0. 0 1 Does not invert the comparator output. Inverts the comparator output.
2 COS
Comparator Output Select 0 1 Set CMPO to equal COUT (filtered comparator output). Set CMPO to equal COUTA (unfiltered comparator output).
1 OPE
Comparator Output Pin Enable 0 1 The comparator output (CMPO) is not available on the associated CMPO output pin. The comparator output (CMPO) is available on the associated CMPO output pin.
0 EN
Comparator Module Enable The EN bit enables the Analog Comparator Module. When the module is not enabled, it remains in the off state, and consumes no power. When you select the same input from analog mux to the positive and negative port, the comparator is disabled automatically. 0 1 Analog Comparator disabled. Analog Comparator enabled.
FILT_PER 0 0 0 0
DMAEN 0
SMELB 0
IER 0
IEF 0
CFR w1c 0
CFF w1c 0
COUT
Stop Mode Edge/Level Interrupt Control This bit controls whether the CFR and CFF bits are edge sensitive or level sensitive in Stop mode. NOTE: This bit should always be programmed to 0 to keep the comparator working and to wake up the MCU. 0 1 CFR/CFF are level sensitive in Stop mode. CFR will be asserted when COUT is high. CFF will be asserted when COUT is low. CFR/CFF are edge sensitive in Stop mode. An active low-to-high transition must be seen on COUT to assert CFR, and an active high-to-low transition must be seen on COUT to assert CFF.
4 IER
Comparator Interrupt Enable Rising The IER bit enables the CFR interrupt from the CMP. When this bit is set, an interrupt will be asserted when the CFR bit is set. 0 1 Interrupt disabled. Interrupt enabled.
3 IEF
Comparator Interrupt Enable Falling The IEF bit enables the CFF interrupt from the CMP. When this bit is set, an interrupt will be asserted when the CFF bit is set. 0 1 Interrupt disabled. Interrupt enabled.
2 CFR
Analog Comparator Flag Rising During normal operation, the CFR bit is set when a rising edge on COUT has been detected. The CFR bit is cleared by writing a logic one to the bit. During Stop modes, CFR can be programmed as either edge or level sensitive via the SMELB bit. NOTE: Edge detection during Stop mode is only supported on platforms that allow peripherals to be clocked during Stop modes. If the CFR flag is active during Stop mode, then SMELB must be set to 0 for cases where it is not receiving a clock during Stop mode. 0 1 Rising edge on COUT has not been detected. Rising edge on COUT has occurred.
1 CFF
Analog Comparator Flag Falling During normal operation, the CFF bit is set when a falling edge on COUT has been detected. The CFF bit is cleared by writing a logic one to the bit. During Stop modes, CFF can be programmed as either edge or level sensitive via the SMELB bit. NOTE: Edge detection during Stop mode is only supported on platforms that allow peripherals to be clocked during Stop modes. If the CFF flag is active during Stop mode, then SMELB must be set to 0 for cases where it is not receiving a clock during Stop mode. Table continues on the next page...
Analog Comparator Output Reading the COUT bit will return the current value of the analog comparator output. The register bit is reset to zero and will read as CR1[INV] when the Analog Comparator module is disabled (CR1[EN] = 0). Writes to this bit are ignored.
DACEN 0
VRSEL 0 0 0 0
VOSEL 0 0 0
Supply Voltage Reference Source Select 0 1 Vin1 is selected as resistor ladder network supply reference Vin. Vin2 is selected as resistor ladder network supply reference Vin.
50 VOSEL
DAC Output Voltage Select This bit selects an output voltage from one of 64 distinct levels. DACO = (Vin/64) * (VOSEL[5:0] + 1), so the DACO range is from Vin/64 to Vin.
PEN 0
MEN 0 0
PSEL 0 0 0
MSEL 0 0
MMUX Enable This bit is used to enable negative MUX. When the MMUX is disabled, the MMUX output is in a high impedance state. When software selects the same input for plus and minus inputs of the comparator, both PMUX and MMUX are disabled automatically. 0 1 MMUX is disabled. MMUX is enabled.
53 PSEL
Plus Input MUX Control Determines which input is selected for the plus input of the comparator. For INx inputs, refer to Figure 33-1. NOTE: When an inappropriate operation selects the same input for both MUXes, the comparator automatically shuts down to prevent itself from becoming a noise generator. 000 001 010 011 100 101 IN0 IN1 IN2 IN3 IN4 IN5 Table continues on the next page...
Minus Input MUX Control Determines which input is selected for the minus input of the comparator. For INx inputs, refer to Figure 33-1. NOTE: When an inappropriate operation selects the same input for both MUXes, the comparator automatically shuts down to prevent itself from becoming a noise generator. 000 001 010 011 100 101 110 111 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
DAC Interrupts
34.2 Features
The DAC module features include: On-chip programmable reference generator output (voltage output from 1/4096 Vin to Vin, step is 1/4096 Vin) Vin can be selected from two reference sources Static operation in Normal Stop mode 16-word data buffer supported with configurable watermark and multiple operation modes DMA support
DACREF_2
DACREF_1
MUX
DACRFS
Vin
DACEN
AMP Buffer
4096-level
LPEN MUX
VDD Vout
Vo
DACDAT[11:0]
12
Hardware Trigger
DACSWTRG DACBFWM DACBFEN DACBFUP DACBFRP DACBFMD DACTRGSE DATA BUFFER
&
dac_interrupt
&
OR
&
DAC Data Low Register (DAC0_DAT0L) DAC Data High Register (DAC0_DAT0H) DAC Data Low Register (DAC0_DAT1L) DAC Data High Register (DAC0_DAT1H) DAC Data Low Register (DAC0_DAT2L) DAC Data High Register (DAC0_DAT2H) DAC Data Low Register (DAC0_DAT3L) DAC Data High Register (DAC0_DAT3H) DAC Data Low Register (DAC0_DAT4L) DAC Data High Register (DAC0_DAT4H)
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
400C_C00A DAC Data Low Register (DAC0_DAT5L) 400C_C00B DAC Data High Register (DAC0_DAT5H) 400C_C00C DAC Data Low Register (DAC0_DAT6L) 400C_C00D DAC Data High Register (DAC0_DAT6H) 400C_C00E DAC Data Low Register (DAC0_DAT7L) 400C_C00F 400C_C010 400C_C011 400C_C012 400C_C013 DAC Data High Register (DAC0_DAT7H) DAC Data Low Register (DAC0_DAT8L) DAC Data High Register (DAC0_DAT8H) DAC Data Low Register (DAC0_DAT9L) DAC Data High Register (DAC0_DAT9H) Table continues on the next page...
DAC Data Low Register (DAC0_DAT10L) DAC Data High Register (DAC0_DAT10H) DAC Data Low Register (DAC0_DAT11L) DAC Data High Register (DAC0_DAT11H) DAC Data Low Register (DAC0_DAT12L) DAC Data High Register (DAC0_DAT12H)
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 02h 00h 00h 0Fh 00h 00h 00h 00h
400C_C01A DAC Data Low Register (DAC0_DAT13L) 400C_C01B DAC Data High Register (DAC0_DAT13H) 400C_C01C DAC Data Low Register (DAC0_DAT14L) 400C_C01D DAC Data High Register (DAC0_DAT14H) 400C_C01E DAC Data Low Register (DAC0_DAT15L) 400C_C01F 400C_C020 400C_C021 400C_C022 400C_C023 400C_D000 400C_D001 400C_D002 400C_D003 DAC Data High Register (DAC0_DAT15H) DAC Status Register (DAC0_SR) DAC Control Register (DAC0_C0) DAC Control Register 1 (DAC0_C1) DAC Control Register 2 (DAC0_C2) DAC Data Low Register (DAC1_DAT0L) DAC Data High Register (DAC1_DAT0H) DAC Data Low Register (DAC1_DAT1L) DAC Data High Register (DAC1_DAT1H) Table continues on the next page...
DAC Data Low Register (DAC1_DAT2L) DAC Data High Register (DAC1_DAT2H) DAC Data Low Register (DAC1_DAT3L) DAC Data High Register (DAC1_DAT3H) DAC Data Low Register (DAC1_DAT4L) DAC Data High Register (DAC1_DAT4H)
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
400C_D00A DAC Data Low Register (DAC1_DAT5L) 400C_D00B DAC Data High Register (DAC1_DAT5H) 400C_D00C DAC Data Low Register (DAC1_DAT6L) 400C_D00D DAC Data High Register (DAC1_DAT6H) 400C_D00E DAC Data Low Register (DAC1_DAT7L) 400C_D00F 400C_D010 400C_D011 400C_D012 400C_D013 400C_D014 400C_D015 400C_D016 400C_D017 DAC Data High Register (DAC1_DAT7H) DAC Data Low Register (DAC1_DAT8L) DAC Data High Register (DAC1_DAT8H) DAC Data Low Register (DAC1_DAT9L) DAC Data High Register (DAC1_DAT9H) DAC Data Low Register (DAC1_DAT10L) DAC Data High Register (DAC1_DAT10H) DAC Data Low Register (DAC1_DAT11L) DAC Data High Register (DAC1_DAT11H) Table continues on the next page...
DAC Data Low Register (DAC1_DAT12L) DAC Data High Register (DAC1_DAT12H)
00h 00h 00h 00h 00h 00h 00h 00h 02h 00h 00h 0Fh
400C_D01A DAC Data Low Register (DAC1_DAT13L) 400C_D01B DAC Data High Register (DAC1_DAT13H) 400C_D01C DAC Data Low Register (DAC1_DAT14L) 400C_D01D DAC Data High Register (DAC1_DAT14H) 400C_D01E DAC Data Low Register (DAC1_DAT15L) 400C_D01F 400C_D020 400C_D021 400C_D022 400C_D023 DAC Data High Register (DAC1_DAT15H) DAC Status Register (DAC1_SR) DAC Control Register (DAC1_C0) DAC Control Register 1 (DAC1_C1) DAC Control Register 2 (DAC1_C2)
DATA[7:0] 0 0 0 0
DATA[11:8] 0 0 0 0 0 0
DACBFWMF
DACBFRPTF DACBFRPBF
DAC buffer read pointer top position flag 0 1 The DAC buffer read pointer is not zero. The DAC buffer read pointer is zero.
0 DACBFRPBF
DAC buffer read pointer bottom position flag 0 1 The DAC buffer read pointer is not equal to the DACBFUP. The DAC buffer read pointer is equal to the DACBFUP.
DACEN 0
DACRFS 0
DACTRGSEL
0 DACSWTRG
LPEN 0
DACBWIEN
DACBTIEN 0
DACBBIEN 0
DAC Reference Select 0 1 The DAC selets DACREF_1 as the reference voltage. The DAC selets DACREF_2 as the reference voltage.
5 DACTRGSEL
DAC trigger select 0 1 The DAC hardware trigger is selected. The DAC software trigger is selected.
4 DACSWTRG
DAC software trigger Active high. This is a write-only bit, read it always be 0. If DAC software trigger is selected and buffer enabled, write 1 to this bit will advance the buffer read pointer once. Table continues on the next page...
DAC low power control 0 1 high power mode. low power mode.
2 DACBWIEN
DAC buffer watermark interrupt enable 0 1 The DAC buffer watermark interrupt is disabled. The DAC buffer watermark interrupt is enabled.
1 DACBTIEN
DAC buffer read pointer top flag interrupt enable 0 1 The DAC buffer read pointer top flag interrupt is disabled. The DAC buffer read pointer top flag interrupt is enabled.
0 DACBBIEN
DAC buffer read pointer bottom flag interrupt enable 0 1 The DAC buffer read pointer bottom flag interrupt is disabled. The DAC buffer read pointer bottom flag interrupt is enabled.
DMAEN 0 0
DACBFWM 0 0 0 0
DACBFMD 0
DACBFEN 0
65 Reserved 43 DACBFWM
This read-only bitfield is reserved and always has the value zero. DAC buffer watermark select Table continues on the next page...
DAC buffer work mode select 00 01 10 11 Normal Mode Swing Mode One-Time Scan Mode Reserved
0 DACBFEN
DAC buffer enable 0 1 Buffer read pointer disabled. The converted data is always the first word of the buffer. Buffer read pointer enabled. The converted data is the word that the read pointer points to. It means converted data can be from any word of the buffer.
DACBFRP 0 0 1 1
DACBFUP 1 1
Functional Description
34.5.3 Resets
During reset the DAC is configured in the default mode. DAC is disabled.
Functional Description
1.75 V Regulator
SC[VREFEN]
1.75 V 2 BITS
SC[MODE_LV]
BANDGAP
VDDA
SC[VREFST]
DEDICATED OUTPUT PIN
VREF_OUT 100nF
REGULATION BUFFER
Introduction
35.1.1 Overview
The Voltage Reference optimizes the existing bandgap and bandgap buffer system. Unity gain amplifiers ease the design and keep power consumption low. The buffer has high power mode with high output current. In addition, the buffer is available for use with ADCs and DACs in low power mode. The voltage can be output on a dedicated output pin.1
35.1.2 Features
The Voltage Reference has the following features: Programmable buffer mode selection: Off Bandgap out Low-power buffer mode Tight-regulation buffer mode 1.2 V output at room temperature Dedicated output pin, VREF_OUT Load regulation in tight-regulation mode of 100 V/mA max Power supply rejection (PSR) of 00.1 mV DC and -60 dB AC High power output mode
NOTE The assignment of module modes to core modes is chipspecific. For module-to-core mode assignments, see the chapter that describes how modules are configured.
NOTE In Low Power buffer mode, the VREF_OUT signal is used as an internal reference without external capacitors. In Disable mode, the status of the VREF_OUT signal is high-impedence.
00h
VREFEN 0
REGEN 0
VREFST
MODE_LV 0 0
Regulator enable This bit is used to enable the 1.75 V regulator that can reduce supply variation of the Voltage Reference. 0 1 Disabled Enabled
This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Internal Voltage Reference stable This bit indicates that the Voltage Reference module has completed its startup and stabilization. 0 1 The module is disabled or not stable. The module is stable.
10 MODE_LV
Buffer Mode selection These bits select the buffer modes for the Voltage Reference module. 00 01 10 11 Bandgap on only, for stabilization and startup Low-power buffer enabled Tight-regulation buffer enabled Reserved
The VREF_OUT signal is used as an internal reference when it is used in low power mode and is used for internal peripherals only. If it used in high power mode, a 100 nF capacitor is required. The following table shows all possible function configurations of the Voltage Reference.
Table 35-4. Voltage Reference function configurations
SC[VREFEN] 0 1 1 SC[MODE_LV] X 00 01 Configuration Voltage Reference disabled Voltage Reference enabled, bandgap on only Voltage Reference enabled, low-power buffer on Voltage Reference enabled, tight-regulation buffer on Reserved Functionality Off Startup and standby Can be used for internal pe ripherals only, VREF pin will not output the reference. The 100 nF capacitor is re quired. Reserved
1 1
10 11
35.3.2.1 SC[MODE_LV]=00
The internal bandgap is on to generate an accurate 1.2 V voltage output. The bandgap requires some time for startup and stabilization. SC[VREFST] can be monitored to determine if the stabilization and startup is completed. Both low-power buffer and tight-regulation buffer are disabled under this mode, and there is no buffered voltage output. The Voltage Reference is in standby mode.
Initialization Information
35.3.2.2 SC[MODE_LV] = 01
The internal bandgap is on. The low-power buffer is enabled to generate a buffered internal 1.2 V voltage. It can be used as a reference to internal analog peripherals such as an ADC channel or analog comparator input.
35.3.2.3 SC[MODE_LV] = 10
The tight regulation buffer is enabled to generate a buffered 1.2 V voltage to VREF_OUT with load regulation less than 100 V/mA. VREF_OUT can be loaded with a 100 nF capacitor and has a maximum 1.1 mA drive strength.
35.3.2.4 SC[MODE_LV] = 11
Reserved
36.1.1 Features
Up to 15 trigger input sources and software trigger source Up to eight configurable PDB channels for ADC hardware trigger One PDB channel is associated with one ADC. One trigger output for ADC hardware trigger and up to eight pre-trigger outputs for ADC trigger select per PDB channel Trigger outputs can be enabled or disabled independently. One 16-bit delay register per pre-trigger output Optional bypass of the delay registers of the pre-trigger outputs Operation in One-Shot or Continuous modes Optional back-to-back mode operation, which enables the ADC conversions complete to trigger the next PDB channel One programmable delay interrupt One sequence error interrupt
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 871
Introduction
One channel flag and one sequence error flag per pre-trigger DMA support Up to eight DAC interval triggers One interval trigger output per DAC One 16-bit delay interval register per DAC trigger output Optional bypass the delay interval trigger registers Optional external triggers Up to eight pulse outputs (pulse-out's) Pulse-out's can be enabled or disabled independently. Programmable pulse width NOTE The number of PDB input and output triggers are chip-specific. Refer to the Chip Configuration information for details.
36.1.2 Implementation
In this chapter, the following letters refers to the number of output triggers. N Total available number of PDB channels. n PDB channel number, valid from 0 to N-1. M Total available pre-trigger per PDB channel. m Pre-trigger number, valid from 0 to M-1. X Total number of DAC interval triggers. x DAC interval trigger output number, valid from 0 to X-1. Y Total number of Pulse-Out's. y Pulse-Out number, valid value is 0 to Y-1.
NOTE The number of module output triggers to core are chip-specific. For module to core output triggers implementation, refer to the Chip Configuration information.
Introduction
Ack 0
PDBCHnDLY0
Pre-trigger 0
Ch n pre-trigger 0
BB[0], TOS[0]
EN[0]
Ack m
PDBCHnDLYm
Pre-trigger m
Ch n pre-trigger m
BB[m], TOS[m]
=
TOEx EXTx
POyDLY1
Trigger-In 14
= =
SWTRIG TRIGSEL
Pulse Generation
PDBPOEN[y]
Pulse-Out y
POyDLY2
Pulse-Out y PDBIDLY =
TOEx
PDB interrupt
In this diagram, only one PDB channel n, one DAC interval trigger x, and one Pulse-Out y is shown. The PDB enable control logic and the sequence error interrupt logic is not shown.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
874 Freescale Semiconductor, Inc.
Status and Control Register (PDB0_SC) Modulus Register (PDB0_MOD) Counter Register (PDB0_CNT) Interrupt Delay Register (PDB0_IDLY) Channel n Control Register 1 (PDB0_CH0C1) Channel n Status Register (PDB0_CH0S) Channel n Delay 0 Register (PDB0_CH0DLY0) Channel n Delay 1 Register (PDB0_CH0DLY1) Channel n Control Register 1 (PDB0_CH1C1) Channel n Status Register (PDB0_CH1S) Channel n Delay 0 Register (PDB0_CH1DLY0) Channel n Delay 1 Register (PDB0_CH1DLY1) DAC Interval Trigger n Control Register (PDB0_DACINTC0) DAC Interval n Register (PDB0_DACINT0) DAC Interval Trigger n Control Register (PDB0_DACINTC1) DAC Interval n Register (PDB0_DACINT1) Pulse-Out n Enable Register (PDB0_PO0EN) Pulse-Out n Delay Register (PDB0_PO0DLY)
0000_0000h 0000_FFFFh 0000_0000h 0000_FFFFh 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
DMAEN
Reset
PDB Sequence Error Interrupt Enable This bit enables the PDB sequence error interrupt. When this bit is set, any of the PDB channel sequence error flags generates a PDB sequence error interrupt. 0 1 PDB sequence error interrupt disabled. PDB sequence error interrupt enabled. Table continues on the next page...
SWTRIG
LDMOD
PDBEIE
0
0
15 DMAEN
Prescaler Divider Select 000 001 010 011 100 101 110 111 Counting uses the peripheral clock divided by multiplication factor selected by MULT. Counting uses the peripheral clock divided by twice of the multiplication factor selected by MULT. Counting uses the peripheral clock divided by four times of the multiplication factor selected by MULT. Counting uses the peripheral clock divided by eight times of the multiplication factor selected by MULT. Counting uses the peripheral clock divided by 16 times of the multiplication factor selected by MULT. Counting uses the peripheral clock divided by 32 times of the multiplication factor selected by MULT. Counting uses the peripheral clock divided by 64 times of the multiplication factor selected by MULT. Counting uses the peripheral clock divided by 128 times of the multiplication factor selected by MULT.
118 TRGSEL
Trigger Input Source Select Selects the trigger input source for the PDB. The trigger input source can be internal or external (EXTRG pin), or the software trigger. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Trigger-In 0 is selected Trigger-In 1 is selected Trigger-In 2 is selected Trigger-In 3 is selected Trigger-In 4 is selected Trigger-In 5 is selected Trigger-In 6 is selected Trigger-In 7 is selected Trigger-In 8 is selected Trigger-In 9 is selected Trigger-In 10 is selected Trigger-In 11 is selected Trigger-In 12 is selected Trigger-In 13 is selected Trigger-In 14 is selected Software trigger is selected
7 PDBEN
PDB Interrupt Flag This bit is set when the counter value is equal to the IDLY register. Writing zero clears this bit. PDB Interrupt Enable. This bit enables the PDB interrupt. When this bit is set and DMAEN is cleared, PDBIF generates a PDB interrupt. 0 1 PDB interrupt disabled PDB interrupt enabled
4 Reserved 32 MULT
This read-only bit is reserved and always has the value zero. Multiplication Factor Select for Prescaler This bit selects the multiplication factor of the prescaler divider for the counter clock. 00 01 10 11 Multiplication factor is 1 Multiplication factor is 10 Multiplication factor is 20 Multiplication factor is 40
1 CONT
Continuous Mode Enable This bit enables the PDB operation in Continuous mode. 0 1 PDB operation in One-Shot mode PDB operation in Continuous mode
0 LDOK
Load OK Writing 1 to this bit updates the internal registers of MOD, IDLY, CHnDLYm, DACINTx, and POyDLY with the values written to their buffers. The MOD, IDLY, CHnDLYm, DACINTx, and POyDLY will take effect according to the LDMOD. After 1 is written to LDOK bit, the values in the buffers of above registers are not effective and the buffers cannot be written until the values in buffers are loaded into their internal registers. LDOK can be written only when PDBEN is set or it can be written at the same time with PDBEN being written to 1. It is automatically cleared when the values in buffers are loaded into the internal registers or the PDBEN is cleared. Writing 0 to it has no effect.
MOD 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
CNT
IDLY 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
BB 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TOS 0 0 0 0 0 0 0 0
EN 0 0 0 0 0
PDB Channel Pre-Trigger Output Select These bits select the PDB ADC pre-trigger outputs. Only lower M pre-trigger bits are implemented in this MCU. 0 PDB channel's corresponding pre-trigger is in bypassed mode. The pre-trigger asserts one peripheral clock cycle after a rising edge is detected on selected trigger input source or software trigger is selected and SWTRIG is written with 1. PDB channel's corresponding pre-trigger asserts when the counter reaches the channel delay register plus one peripheral clock cycle after a rising edge is detected on selected trigger input source or software trigger is selected and SETRIG is written with 1.
70 EN
PDB Channel Pre-Trigger Enable These bits enable the PDB ADC pre-trigger outputs. Only lower M pre-trigger bits are implemented in this MCU. 0 1 PDB channel's corresponding pre-trigger disabled. PDB channel's corresponding pre-trigger enabled.
CF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ERR 0 0 0 0 0 0 0 0 0 0 0 0
DLY 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DLY 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TOE 0
EXT
1 0 TOE
DAC Interval Trigger Enable This bit enables the DAC interval trigger. 0 1 DAC interval trigger disabled. DAC interval trigger enabled.
INT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
POEN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DLY1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
DLY2 0 0 0 0 0 0 0 0 0
150 DLY2
Functional Description
The delay in CHnDLYm register can be optionally bypassed, if CHnC1[TOS[m]] is cleared. In this case, when the trigger input event occurs, the pre-trigger m is asserted after two peripheral clock cycles. The PDB can be configured in back-to-back (B2B) operation. B2B operation enables the ADC conversions complete to trigger the next PDB channel pre-trigger and trigger outputs, so that the ADC conversions can be triggered on next set of configuration and results registers. When B2B is enabled by setting CHnC1[BB[m]], the delay m is ignored and the pre-trigger m is asserted two peripheral cycles after the acknowledgment m is received. The acknowledgment connections in this MCU is described in Back-to-back Acknowledgement Connections. When an ADC conversion, which is triggered by one of the pre-triggers from PDB channel n, is in progress and ADCnSC1[COCO] is not set, a new trigger from PDB channel n pre-trigger m cannot be accepted by ADCn. Therefore every time when one PDB channel n pre-trigger and trigger output starts an ADC conversion, an internal lock associated with the corresponding pre-trigger is activated. The lock becomes inactive when the corresponding ADCnSC1[COCO] is set, or the corresponding PDB pre-trigger is disabled, or the PDB is disabled. The channel n trigger output is suppressed when any of the locks of the pre-triggers in channel n is active. If a new pre-trigger m asserts when there is active lock in the PDB channel n, a register flag bit, CHnS[ERR[m]], associated with the pre-trigger m is set. If SC[PDBEIE] is set, the sequence error interrupt is generated. Sequence error is typically happened because the delay m is set too short and the pre-trigger m asserts before the previous triggered ADC conversion is completed. When the PDB counter reaches the value set in IDLY register, the SC[PDBIF] flag is set. A PDB interrupt can be generated if SC[PDBIE] is set and SC[DMAEN] is cleared. If SC[DMAEN] is set, PDB requests a DMA transfer when SC[PDBIF] is set. The modulus value in MOD register, is used to reset the counter back to zero at the end of the count. If SC[CONT] bit is set, the counter will then resume a new count. Otherwise, the counter operation will cease until the next trigger input event occurs.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
888 Freescale Semiconductor, Inc.
Functional Description
MOD, IDLY
CHnDLY1 CHnDLY0
DACINTx x3
PDB counter
DACINTx x2
DACINTx 0
... ...
... ...
PDB interrupt
Figure 36-55. PDB ADC Triggers and DAC Interval Triggers Use Case
NOTE Because the DAC interval counters share the prescaler with PDB counter, PDB must be enabled if the DAC interval trigger outputs are used in the applications.
36.4.4 Pulse-Out's
PDB can generate pulse outputs of configurable width. When PDB counter reaches the value set in POyDLY[DLY1], the Pulse-Out goes high; when the counter reaches POyDLY[DLY2], it goes low. POyDLY[DLY2] can be set either greater or less than POyDLY[DLY1]. Because the PDB counter is shared by both ADC pre-trigger/trigger outputs and PulseOut generation, they have the same time base. The pulse-out connections implemented in this MCU are described in the device's Chip Configuration details.
PDB Modulus Register (MOD) PDB Interrupt Delay Register (IDLY) PDB Channel n Delay m Register (CHnDLYm) DAC Interval x Register (DACINTx) PDB Pulse-Out y Delay Register (POyDLY) The internal registers of them are buffered and any values written to them are written first to their buffers. The circumstances that cause their internal registers to be updated with the values from the buffers are summarized as below table.
Table 36-56. Circumstances of Update to the Delay Registers
SC[LDMOD] 00 01 10 11 Update to the Delay Registers The internal registers are loaded with the values from their buffers immediately after 1 is written to SC[LDOK]. The PDB counter reaches the MOD register value after 1 is written to SC[LDOK]. A trigger input event is detected after 1 is written to SC[LDOK]. Either the PDB counter reaches the MOD register value, or a trigger input event is detected, after 1 is written to SC[LDOK].
After 1 is written to SC[LDOK], the buffers cannot be written until the values in buffers are loaded into their internal registers. SC[LDOK] is self-cleared when the internal registers are loaded, so the application code can read it to determine the updates of the internal registers. The following diagrams show the cases of the internal registers being updated with SC[LDMOD] is 00 and x1.
CHnDLY1 CHnDLY0
PDB Counter SC[LDOK] Ch n pre-trigger 0 Ch n pre-trigger 1
Application Information
CHnDLY1 CHnDLY0
PDB Counter SC[LDOK] Ch n pre-trigger 0 Ch n pre-trigger 1
36.4.6 Interrupts
PDB can generate two interrupts, PDB interrupt and PDB sequence error interrupt. The following table summarizes the interrupts.
Table 36-57. PDB Interrupt Summary
Interrupt PDB Interrupt PDB Sequence Error Interrupt Flags SC[PDBIF] CHnS[ERRm] Enable Bit SC[PDBIE] = 1 and SC[DMAEN] = 0 SC[PDBEIE] = 1
36.4.7 DMA
If SC[DMAEN] is set, PDB can generate DMA transfer request when SC[PDBIF] is set. When DMA is enabled, the PDB interrupt will not be issued.
36.5.1 Impact of Using the Prescaler and Multiplication Factor on Timing Resolution
Use of prescaler and multiplication factor greater than 1 limits the count/delay accuracy in terms of peripheral clock cycles (to the modulus of the prescaler X multiplication factor). If the multiplication factor is set to 1 and the prescaler is set to 2 then the only values of total peripheral clocks that can be detected are even values; if prescaler is set to 4 then the only values of total peripheral clocks that can be decoded as detected are mod(4) and so forth. If the applications need a really long delay value and use 128, then the resolution would be limited to 128 peripheral clock cycles. Therefore, use the lowest possible prescaler and multiplication factor for a given application.
Application Information
Introduction
Several FlexTimers may be synchronized to provide a larger timer with their counters incrementing in unison, assuming the initialization, the input clocks, the initial and final counting values are the same in each FlexTimer. All main user access registers are buffered to ease the load on the executing software. A number of trigger options exist to determine which registers are updated with this user defined data.
37.1.2 Features
The FTM features include: FTM source clock is selectable Source clock can be the system clock, the fixed frequency clock, or an external clock Fixed frequency clock is an additional clock input to allow the selection of an on chip clock source other than the system clock Selecting external clock connects FTM clock to a chip level input pin therefore allowing to synchronize the FTM counter with an off chip clock source Prescaler divide-by 1, 2, 4, 8, 16, 32, 64, or 128 FTM has a 16-bit counter It can be a free-running counter or a counter with initial and final value The counting can be up or up-down Each channel can be configured for input capture, output compare, or edge-aligned PWM mode In input capture mode the capture can occur on rising edges, falling edges or both edges an input filter can be selected for some channels In output compare mode the output signal can be set, cleared, or toggled on match All channels can be configured for center-aligned PWM mode Each pair of channels can be combined to generate a PWM signal (with independent control of both edges of PWM signal)
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
896 Freescale Semiconductor, Inc.
The FTM channels can operate as pairs with equal outputs, pairs with complementary outputs, or independent channels (with independent outputs) The deadtime insertion is available for each complementary pair Generation of triggers (match trigger) Software control of PWM outputs Up to 4 fault inputs for global fault control The polarity of each channel is configurable The generation of an interrupt per channel The generation of an interrupt when the counter overflows The generation of an interrupt when the fault condition is detected Synchronized loading of write buffered FTM registers Write protection for critical registers Backwards compatible with TPM Testing of input captures for a stuck at zero and one conditions Dual edge capture for pulse and period width measurement Quadrature decoder with input filters, relative position counting and interrupt on position count or capture of position count on external event
Introduction
The following figure shows the FTM structure. The central component of the FTM is the 16-bit counter with programmable initial and final values and its counting can be up or up-down.
no clock selected (FTM counter disable) system clock fixed frequency clock external clock phase A phase B CAPTEST Quadrature decoder
INITTRIGEN CNTIN
FAULTM[1:0] FFVAL[3:0] FAULTIE FAULTnEN* FFLTRnEN*
initialization trigger
timer overflow interrupt
FTM counter
MOD
fault input n*
fault interrupt
fault condition
DECAPEN COMBINE0 CPWMS MS0B:MS0A ELS0B:ELS0A dual edge capture mode logic channel 0 input input capture mode logic
CH0IE CH0F
channel 0 interrupt
CH0TRIG
C0V
C1V
output modes logic (generation of channels 0 and 1 outputs signals in output compare, EPWM, CPWM and combine modes according to initialization, complementary mode, inverting, software output control, deadtime insertion, output mask, fault control and polarity control)
CH1F CH1IE
channel 1 interrupt
CH1TRIG
DECAPEN COMBINE3 CPWMS MS6B:MS6A ELS6B:ELS6A dual edge capture mode logic channel 6 input input capture mode logic
CH6IE CH6F
channel 6 interrupt
CH6TRIG
C6V
C7V
output modes logic (generation of channels 6 and 7 outputs signals in output compare, EPWM, CPWM and combine modes according to initialization, complementary mode, inverting, software output control, deadtime insertion, output mask, fault control and polarity control)
CH7F CH7IE
channel 7 interrupt
CH7TRIG
defined for each pair of channels. Since there are several FAULTj inputs, maximum of 4 for the FTM module, each one of these inputs is activated by the FAULTjEN bit in the FLTCTRL register.
Status and Control (FTM0_SC) Counter (FTM0_CNT) Modulo (FTM0_MOD) Channel (n) Status and Control (FTM0_C0SC) Channel (n) Value (FTM0_C0V) Channel (n) Status and Control (FTM0_C1SC) Channel (n) Value (FTM0_C1V) Channel (n) Status and Control (FTM0_C2SC) Channel (n) Value (FTM0_C2V) Channel (n) Status and Control (FTM0_C3SC) Channel (n) Value (FTM0_C3V) Channel (n) Status and Control (FTM0_C4SC) Channel (n) Value (FTM0_C4V) Channel (n) Status and Control (FTM0_C5SC) Channel (n) Value (FTM0_C5V) Channel (n) Status and Control (FTM0_C6SC)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Channel (n) Value (FTM0_C6V) Channel (n) Status and Control (FTM0_C7SC) Channel (n) Value (FTM0_C7V) Counter Initial Value (FTM0_CNTIN) Capture and Compare Status (FTM0_STATUS) Features Mode Selection (FTM0_MODE) Synchronization (FTM0_SYNC) Initial State for Channels Output (FTM0_OUTINIT) Output Mask (FTM0_OUTMASK) Function for Linked Channels (FTM0_COMBINE) Deadtime Insertion Control (FTM0_DEADTIME) FTM External Trigger (FTM0_EXTTRIG) Channels Polarity (FTM0_POL) Fault Mode Status (FTM0_FMS) Input Capture Filter Control (FTM0_FILTER) Fault Control (FTM0_FLTCTRL) Quadrature Decoder Control and Status (FTM0_QDCTRL) Configuration (FTM0_CONF) FTM Fault Input Polarity (FTM0_FLTPOL) Synchronization Configuration (FTM0_SYNCONF)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0004h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
FTM Inverting Control (FTM0_INVCTRL) FTM Software Output Control (FTM0_SWOCTRL) FTM PWM Load (FTM0_PWMLOAD) Status and Control (FTM1_SC) Counter (FTM1_CNT) Modulo (FTM1_MOD) Channel (n) Status and Control (FTM1_C0SC) Channel (n) Value (FTM1_C0V) Channel (n) Status and Control (FTM1_C1SC) Channel (n) Value (FTM1_C1V) Channel (n) Status and Control (FTM1_C2SC) Channel (n) Value (FTM1_C2V) Channel (n) Status and Control (FTM1_C3SC) Channel (n) Value (FTM1_C3V) Channel (n) Status and Control (FTM1_C4SC) Channel (n) Value (FTM1_C4V) Channel (n) Status and Control (FTM1_C5SC) Channel (n) Value (FTM1_C5V) Channel (n) Status and Control (FTM1_C6SC) Channel (n) Value (FTM1_C6V)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Channel (n) Status and Control (FTM1_C7SC) Channel (n) Value (FTM1_C7V) Counter Initial Value (FTM1_CNTIN) Capture and Compare Status (FTM1_STATUS) Features Mode Selection (FTM1_MODE) Synchronization (FTM1_SYNC) Initial State for Channels Output (FTM1_OUTINIT) Output Mask (FTM1_OUTMASK) Function for Linked Channels (FTM1_COMBINE) Deadtime Insertion Control (FTM1_DEADTIME) FTM External Trigger (FTM1_EXTTRIG) Channels Polarity (FTM1_POL) Fault Mode Status (FTM1_FMS) Input Capture Filter Control (FTM1_FILTER) Fault Control (FTM1_FLTCTRL) Quadrature Decoder Control and Status (FTM1_QDCTRL) Configuration (FTM1_CONF) FTM Fault Input Polarity (FTM1_FLTPOL) Synchronization Configuration (FTM1_SYNCONF) FTM Inverting Control (FTM1_INVCTRL)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0004h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
FTM Software Output Control (FTM1_SWOCTRL) FTM PWM Load (FTM1_PWMLOAD) Status and Control (FTM2_SC) Counter (FTM2_CNT) Modulo (FTM2_MOD) Channel (n) Status and Control (FTM2_C0SC) Channel (n) Value (FTM2_C0V) Channel (n) Status and Control (FTM2_C1SC) Channel (n) Value (FTM2_C1V) Channel (n) Status and Control (FTM2_C2SC) Channel (n) Value (FTM2_C2V) Channel (n) Status and Control (FTM2_C3SC) Channel (n) Value (FTM2_C3V) Channel (n) Status and Control (FTM2_C4SC) Channel (n) Value (FTM2_C4V) Channel (n) Status and Control (FTM2_C5SC) Channel (n) Value (FTM2_C5V) Channel (n) Status and Control (FTM2_C6SC) Channel (n) Value (FTM2_C6V) Channel (n) Status and Control (FTM2_C7SC)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Channel (n) Value (FTM2_C7V) Counter Initial Value (FTM2_CNTIN) Capture and Compare Status (FTM2_STATUS) Features Mode Selection (FTM2_MODE) Synchronization (FTM2_SYNC) Initial State for Channels Output (FTM2_OUTINIT) Output Mask (FTM2_OUTMASK) Function for Linked Channels (FTM2_COMBINE) Deadtime Insertion Control (FTM2_DEADTIME) FTM External Trigger (FTM2_EXTTRIG) Channels Polarity (FTM2_POL) Fault Mode Status (FTM2_FMS) Input Capture Filter Control (FTM2_FILTER) Fault Control (FTM2_FLTCTRL) Quadrature Decoder Control and Status (FTM2_QDCTRL) Configuration (FTM2_CONF) FTM Fault Input Polarity (FTM2_FLTPOL) Synchronization Configuration (FTM2_SYNCONF) FTM Inverting Control (FTM2_INVCTRL) FTM Software Output Control (FTM2_SWOCTRL)
0000_0000h 0000_0000h 0000_0000h 0000_0004h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
0000_0000h
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
CPWMS
TOF TOIE 0
CLKS
PS
Reset
Center-aligned PWM Select Selects CPWM mode. This mode configures the FTM to operate in up-down counting mode. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 FTM counter operates in up counting mode. FTM counter operates in up-down counting mode.
43 CLKS
Clock Source Selection Selects one of the three FTM counter clock sources. This field is write protected. It can be written only when MODE[WPDIS] = 1. 00 01 10 11 No clock selected (This in effect disables the FTM counter.) System clock Fixed frequency clock External clock
20 PS
Prescale Factor Selection Selects one of 8 division factors for the clock source selected by CLKS. The new prescaler factor affects the clock source on the next system clock cycle after the new value is updated into the register bits. This field is write protected. It can be written only when MODE[WPDIS] = 1. 000 001 010 011 100 101 110 111 Divide by 1 Divide by 2 Divide by 4 Divide by 8 Divide by 16 Divide by 32 Divide by 64 Divide by 128
Memory Map and Register Definition Addresses: FTM0_CNT 4003_8000h base + 4h offset = 4003_8004h FTM1_CNT 4003_9000h base + 4h offset = 4003_9004h FTM2_CNT 400B_8000h base + 4h offset = 400B_8004h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
COUNT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MOD 0 0 0 0 0 0 0 0 0
1 10 11
1X
10
X1
XX
10
X1
XX
10
X1
X0 X1
See the follow Dual Edge Cap ing table (Table ture Mode 37-8 ).
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
ELSB
ELSA
0 DMA 0 0 913
Reset
Channel Interrupt Enable Enables channel interrupts. 0 1 Disable channel interrupts. Use software polling. Enable channel interrupts.
5 MSB
Chapter 37 FlexTimer (FTM) Addresses: FTM0_C0V 4003_8000h base + 10h offset = 4003_8010h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VAL 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
INIT 0 0 0 0 0 0 0 0 0
Reset
Bit R W
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7 CH7F 0
0
6 CH6F 0
0
5 CH5F 0
0
4 CH4F 0
0
3 CH3F 0
0
2 CH2F 0
0
1 CH1F 0
0
0 CH0F 0
Reset
Channel 5 Flag See the register description. 0 1 No channel event has occurred. A channel event has occurred.
4 CH4F
Channel 4 Flag See the register description. 0 1 No channel event has occurred. A channel event has occurred.
3 CH3F
Channel 3 Flag See the register description. 0 1 No channel event has occurred. A channel event has occurred.
2 CH2F
Channel 2 Flag See the register description. 0 1 No channel event has occurred. A channel event has occurred.
1 CH1F
Channel 1 Flag See the register description. 0 1 No channel event has occurred. A channel event has occurred.
0 CH0F
Channel 0 Flag See the register description. 0 1 No channel event has occurred. A channel event has occurred.
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
PWMSYNC
CAPTEST
FAULTIE
FAULTM
Reset
Fault Control Mode Defines the FTM fault control mode. This field is write protected. It can be written only when MODE[WPDIS] = 1. 00 01 10 11 Fault control is disabled for all channels. Fault control is enabled for even channels only (channels 0, 2, 4, and 6), and the selected mode is the manual fault clearing. Fault control is enabled for all channels, and the selected mode is the manual fault clearing. Fault control is enabled for all channels, and the selected mode is the automatic fault clearing. Table continues on the next page...
FTMEN 0
WPDIS
INIT
PWM Synchronization Mode Selects which triggers can be used by MOD, CnV, OUTMASK, and FTM counter synchronization (PWM Synchronization ). The PWMSYNC bit configures the synchronization when SYNCMODE is zero. 0 1 No restrictions. Software and hardware triggers can be used by MOD, CnV, OUTMASK, and FTM counter synchronization. Software trigger can only be used by MOD and CnV synchronization, and hardware triggers can only be used by OUTMASK and FTM counter synchronization.
2 WPDIS
Write Protection Disable When write protection is enabled (WPDIS = 0), write protected bits can not be written. When write protection is disabled (WPDIS = 1), write protected bits can be written. The WPDIS bit is the negation of the WPEN bit. WPDIS is cleared when 1 is written to WPEN. WPDIS is set when WPEN bit is read as a 1 and then 1 is written to WPDIS. Writing 0 to WPDIS has no effect. 0 1 Write protection is enabled. Write protection is disabled.
1 INIT
Initialize the Channels Output When a 1 is written to INIT bit the channels output is initialized according to the state of their corresponding bit in the OUTINIT register. Writing a 0 to INIT bit has no effect. The INIT bit is always read as 0.
0 FTMEN
FTM Enable This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Only the TPM-compatible registers (first set of registers) can be used without any restriction. Do not use the FTM-specific registers. All registers including the FTM-specific registers (second set of registers) are available for use with no restrictions.
NOTE The software trigger (SWSYNC bit) and hardware triggers (TRIG0, TRIG1, and TRIG2 bits) have a potential conflict if used together when SYNCMODE = 0. It is recommended using only hardware or software triggers but not both at the same time, otherwise unpredictable behavior is likely to happen. The selection of the loading point (CNTMAX and CNTMIN bits) is intended to provide the update of MOD, CNTIN, and CnV registers across all enabled channels simultaneously. The use of the loading point selection together with SYNCMODE = 0 and hardware trigger selection (TRIG0, TRIG1, or TRIG2 bits) is likely to result in unpredictable behavior. The synchronization event selection also depends on the PWMSYNC (MODE register) and SYNCMODE (SYNCONF register) bits. See PWM Synchronization.
Addresses: FTM0_SYNC 4003_8000h base + 58h offset = 4003_8058h FTM1_SYNC 4003_9000h base + 58h offset = 4003_9058h FTM2_SYNC 400B_8000h base + 58h offset = 400B_8058h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
SYNCHOM
SWSYNC
CNTMAX 0
Reset
CNTMIN 0
REINIT
TRIG2
TRIG1
TRIG0
PWM Synchronization Hardware Trigger 2 Enables hardware trigger 2 to the PWM synchronization. Hardware trigger 2 happens when a rising edge is detected at the trigger 2 input signal. 0 1 Trigger is disabled. Trigger is enabled.
5 TRIG1
PWM Synchronization Hardware Trigger 1 Enables hardware trigger 1 to the PWM synchronization. Hardware trigger 1 happens when a rising edge is detected at the trigger 1 input signal. 0 1 Trigger is disabled. Trigger is enabled.
4 TRIG0
PWM Synchronization Hardware Trigger 0 Enables hardware trigger 0 to the PWM synchronization. Hardware trigger 0 happens when a rising edge is detected at the trigger 0 input signal. 0 1 Trigger is disabled. Trigger is enabled.
3 SYNCHOM
Output Mask Synchronization Selects when the OUTMASK register is updated with the value of its buffer. 0 1 OUTMASK register is updated with the value of its buffer in all rising edges of the system clock. OUTMASK register is updated with the value of its buffer only by the PWM synchronization.
2 REINIT
FTM Counter Reinitialization by Synchronization (FTM Counter Synchronization ) Determines if the FTM counter is reinitialized when the selected trigger for the synchronization is detected. The REINIT bit configures the synchronization when SYNCMODE is zero. 0 1 FTM counter continues to count normally. FTM counter is updated with its initial value when the selected trigger is detected.
1 CNTMAX
Maximum loading point enable Selects the maximum loading point to PWM synchronization (Boundary Cycle and Loading Points ). If CNTMAX is one, the selected loading point is when the FTM counter reaches its maximum value (MOD register). 0 1 The maximum loading point is disabled. The maximum loading point is enabled.
0 CNTMIN
Minimum loading point enable Selects the minimum loading point to PWM synchronization (Boundary Cycle and Loading Points ). If CNTMIN is one, the selected loading point is when the FTM counter reaches its minimum value (CNTIN register). Table continues on the next page...
CH7OI
CH6OI
CH5OI
CH4OI
CH3OI
CH2OI
CH1OI
Channel 6 Output Initialization Value Selects the value that is forced into the channel output when the initialization occurs. 0 1 The initialization value is 0. The initialization value is 1.
5 CH5OI
Channel 5 Output Initialization Value Selects the value that is forced into the channel output when the initialization occurs. 0 1 The initialization value is 0. The initialization value is 1.
4 CH4OI
Channel 4 Output Initialization Value Selects the value that is forced into the channel output when the initialization occurs. 0 1 The initialization value is 0. The initialization value is 1. Table continues on the next page...
CH0OI
Channel 2 Output Initialization Value Selects the value that is forced into the channel output when the initialization occurs. 0 1 The initialization value is 0. The initialization value is 1.
1 CH1OI
Channel 1 Output Initialization Value Selects the value that is forced into the channel output when the initialization occurs. 0 1 The initialization value is 0. The initialization value is 1.
0 CH0OI
Channel 0 Output Initialization Value Selects the value that is forced into the channel output when the initialization occurs. 0 1 The initialization value is 0. The initialization value is 1.
Channel 6 Output Mask Defines if the channel output is masked (forced to its inactive state) or unmasked (it continues to operate normally). 0 1 Channel output is not masked. It continues to operate normally. Channel output is masked. It is forced to its inactive state.
5 CH5OM
Channel 5 Output Mask Defines if the channel output is masked (forced to its inactive state) or unmasked (it continues to operate normally). 0 1 Channel output is not masked. It continues to operate normally. Channel output is masked. It is forced to its inactive state.
4 CH4OM
Channel 4 Output Mask Defines if the channel output is masked (forced to its inactive state) or unmasked (it continues to operate normally). 0 1 Channel output is not masked. It continues to operate normally. Channel output is masked. It is forced to its inactive state.
3 CH3OM
Channel 3 Output Mask Defines if the channel output is masked (forced to its inactive state) or unmasked (it continues to operate normally). 0 1 Channel output is not masked. It continues to operate normally. Channel output is masked. It is forced to its inactive state.
2 CH2OM
Channel 2 Output Mask Defines if the channel output is masked (forced to its inactive state) or unmasked (it continues to operate normally). 0 1 Channel output is not masked. It continues to operate normally. Channel output is masked. It is forced to its inactive state.
1 CH1OM
Channel 1 Output Mask Defines if the channel output is masked (forced to its inactive state) or unmasked (it continues to operate normally). 0 1 Channel output is not masked. It continues to operate normally. Channel output is masked. It is forced to its inactive state. Table continues on the next page...
FAULTEN3
FAULTEN2
SYNCEN3
SYNCEN2
DECAP3
DECAP2
COMP3
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10 DECAPEN1
0
9
0
8 COMBINE1
0
7
0
6
0
5
0
4
0
3
0
2 DECAPEN0
COMP2 0
1
DTEN3
DTEN2
0
0 COMBINE0
FAULTEN1
FAULTEN0
SYNCEN1
SYNCEN0
DECAP1
DECAP0
COMP1
Reset
COMP0 0
DTEN1
DTEN0
Deadtime Enable for n = 6 Enables the deadtime insertion in the channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The deadtime insertion in this pair of channels is disabled. The deadtime insertion in this pair of channels is enabled.
27 DECAP3
Dual Edge Capture Mode Captures for n = 6 Enables the capture of the FTM counter value according to the channel (n) input event and the configuration of the dual edge capture bits. This field applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by hardware if dual edge capture one-shot mode is selected and when the capture of channel (n+1) event is made. 0 1 The dual edge captures are inactive. The dual edge captures are active.
26 DECAPEN3
Dual Edge Capture Mode Enable for n = 6 Enables the dual edge capture mode in the channels (n) and (n+1). This bit reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in dual edge capture mode according to Table 37-7. This field applies only when FTMEN = 1. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 0 The dual edge capture mode in this pair of channels is disabled. The dual edge capture mode in this pair of channels is enabled.
25 COMP3
Complement of Channel (n) for n = 6 Enables complementary mode for the combined channels. In complementary mode the channel (n+1) output is the inverse of the channel (n) output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel (n+1) output is the same as the channel (n) output. The channel (n+1) output is the complement of the channel (n) output.
24 COMBINE3
Combine Channels for n = 6 Enables the combine feature for channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Channels (n) and (n+1) are independent. Channels (n) and (n+1) are combined. Table continues on the next page...
Synchronization Enable for n = 4 Enables PWM synchronization of registers C(n)V and C(n+1)V. 0 1 The PWM synchronization in this pair of channels is disabled. The PWM synchronization in this pair of channels is enabled.
20 DTEN2
Deadtime Enable for n = 4 Enables the deadtime insertion in the channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The deadtime insertion in this pair of channels is disabled. The deadtime insertion in this pair of channels is enabled.
19 DECAP2
Dual Edge Capture Mode Captures for n = 4 Enables the capture of the FTM counter value according to the channel (n) input event and the configuration of the dual edge capture bits. This field applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by hardware if dual edge capture one-shot mode is selected and when the capture of channel (n+1) event is made. 0 1 The dual edge captures are inactive. The dual edge captures are active.
18 DECAPEN2
Dual Edge Capture Mode Enable for n = 4 Enables the dual edge capture mode in the channels (n) and (n+1). This bit reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in dual edge capture mode according to Table 37-7. This field applies only when FTMEN = 1. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 0 The dual edge capture mode in this pair of channels is disabled. The dual edge capture mode in this pair of channels is enabled.
17 COMP2
Complement of Channel (n) for n = 4 Enables complementary mode for the combined channels. In complementary mode the channel (n+1) output is the inverse of the channel (n) output. This field is write protected. It can be written only when MODE[WPDIS] = 1. Table continues on the next page...
Combine Channels for n = 4 Enables the combine feature for channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Channels (n) and (n+1) are independent. Channels (n) and (n+1) are combined.
15 Reserved 14 FAULTEN1
This read-only bit is reserved and always has the value zero. Fault Control Enable for n = 2 Enables the fault control in channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The fault control in this pair of channels is disabled. The fault control in this pair of channels is enabled.
13 SYNCEN1
Synchronization Enable for n = 2 Enables PWM synchronization of registers C(n)V and C(n+1)V. 0 1 The PWM synchronization in this pair of channels is disabled. The PWM synchronization in this pair of channels is enabled.
12 DTEN1
Deadtime Enable for n = 2 Enables the deadtime insertion in the channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The deadtime insertion in this pair of channels is disabled. The deadtime insertion in this pair of channels is enabled.
11 DECAP1
Dual Edge Capture Mode Captures for n = 2 Enables the capture of the FTM counter value according to the channel (n) input event and the configuration of the dual edge capture bits. This field applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by hardware if dual edge capture one-shot mode is selected and when the capture of channel (n+1) event is made. 0 1 The dual edge captures are inactive. The dual edge captures are active.
10 DECAPEN1
Dual Edge Capture Mode Enable for n = 2 Enables the dual edge capture mode in the channels (n) and (n+1). This bit reconfigures the function of MSnA, ELSnB:ELSnA and ELS(n+1)B:ELS(n+1)A bits in dual edge capture mode according to Table 37-7. This field applies only when FTMEN = 1. This field is write protected. It can be written only when MODE[WPDIS] = 1. Table continues on the next page...
Complement of Channel (n) for n = 2 Enables complementary mode for the combined channels. In complementary mode the channel (n+1) output is the inverse of the channel (n) output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel (n+1) output is the same as the channel (n) output. The channel (n+1) output is the complement of the channel (n) output.
8 COMBINE1
Combine Channels for n = 2 Enables the combine feature for channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Channels (n) and (n+1) are independent. Channels (n) and (n+1) are combined.
7 Reserved 6 FAULTEN0
This read-only bit is reserved and always has the value zero. Fault Control Enable for n = 0 Enables the fault control in channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The fault control in this pair of channels is disabled. The fault control in this pair of channels is enabled.
5 SYNCEN0
Synchronization Enable for n = 0 Enables PWM synchronization of registers C(n)V and C(n+1)V. 0 1 The PWM synchronization in this pair of channels is disabled. The PWM synchronization in this pair of channels is enabled.
4 DTEN0
Deadtime Enable for n = 0 Enables the deadtime insertion in the channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The deadtime insertion in this pair of channels is disabled. The deadtime insertion in this pair of channels is enabled.
3 DECAP0
Dual Edge Capture Mode Captures for n = 0 Enables the capture of the FTM counter value according to the channel (n) input event and the configuration of the dual edge capture bits. This field applies only when FTMEN = 1 and DECAPEN = 1. DECAP bit is cleared automatically by hardware if dual edge capture one-shot mode is selected and when the capture of channel (n+1) event is made. 0 1 The dual edge captures are inactive. The dual edge captures are active. Table continues on the next page...
Complement of Channel (n) for n = 0 Enables complementary mode for the combined channels. In complementary mode the channel (n+1) output is the inverse of the channel (n) output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel (n+1) output is the same as the channel (n) output. The channel (n+1) output is the complement of the channel (n) output.
0 COMBINE0
Combine Channels for n = 0 Enables the combine feature for channels (n) and (n+1). This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Channels (n) and (n+1) are independent. Channels (n) and (n+1) are combined.
DTPS
DTVAL 0 0 0 0 0 0 0
Deadtime Value Selects the deadtime insertion value for the deadtime counter. The deadtime counter is clocked by a scaled version of the system clock. See the description of DTPS. DTVAL selects the number of deadtime counts inserted as follows: When DTVAL is 0, no counts are inserted. When DTVAL is 1, 1 count is inserted. When DTVAL is 2, 2 counts are inserted. This pattern continues up to a possible 63 counts. This field is write protected. It can be written only when MODE[WPDIS] = 1.
Memory Map and Register Definition Addresses: FTM0_EXTTRIG 4003_8000h base + 6Ch offset = 4003_806Ch FTM1_EXTTRIG 4003_9000h base + 6Ch offset = 4003_906Ch FTM2_EXTTRIG 400B_8000h base + 6Ch offset = 400B_806Ch
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reserved[31:16]
W
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6 INITTRIGEN
0
5
0
4
0
3
0
2
0
1
0
0
CH1TRIG
CH0TRIG
CH5TRIG
CH4TRIG
CH3TRIG
Reserved[15:8]
W
Reset
Initialization Trigger Enable Enables the generation of the trigger when the FTM counter is equal to the CNTIN register. 0 1 The generation of initialization trigger is disabled. The generation of initialization trigger is enabled.
5 CH1TRIG
Channel 1 Trigger Enable Enable the generation of the channel trigger when the FTM counter is equal to the CnV register. 0 1 The generation of the channel trigger is disabled. The generation of the channel trigger is enabled.
4 CH0TRIG
Channel 0 Trigger Enable Enable the generation of the channel trigger when the FTM counter is equal to the CnV register. 0 1 The generation of the channel trigger is disabled. The generation of the channel trigger is enabled. Table continues on the next page...
CH2TRIG
TRIGF
Channel 4 Trigger Enable Enable the generation of the channel trigger when the FTM counter is equal to the CnV register. 0 1 The generation of the channel trigger is disabled. The generation of the channel trigger is enabled.
1 CH3TRIG
Channel 3 Trigger Enable Enable the generation of the channel trigger when the FTM counter is equal to the CnV register. 0 1 The generation of the channel trigger is disabled. The generation of the channel trigger is enabled.
0 CH2TRIG
Channel 2 Trigger Enable Enable the generation of the channel trigger when the FTM counter is equal to the CnV register. 0 1 The generation of the channel trigger is disabled. The generation of the channel trigger is enabled.
POL7
POL6
POL5
POL4
POL3
POL2 0
POL1 0
Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
POL0 0
Channel 6 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel polarity is active high. The channel polarity is active low.
5 POL5
Channel 5 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel polarity is active high. The channel polarity is active low.
4 POL4
Channel 4 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel polarity is active high. The channel polarity is active low.
3 POL3
Channel 3 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel polarity is active high. The channel polarity is active low.
2 POL2
Channel 2 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel polarity is active high. The channel polarity is active low.
1 POL1
Channel 1 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. Table continues on the next page...
Channel 0 Polarity Defines the polarity of the channel output. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The channel polarity is active high. The channel polarity is active low.
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5 FAULTIN
0
4
0
3 FAULTF3
0
2 FAULTF2
0
1 FAULTF1
0
0 FAULTF0 0
FAULTF
WPEN
Reset
Write Protection Enable The WPEN bit is the negation of the WPDIS bit. WPEN is set when 1 is written to it. WPEN is cleared when WPEN bit is read as a 1 and then 1 is written to WPDIS. Writing 0 to WPEN has no effect. 0 1 Write protection is disabled. Write protected bits can be written. Write protection is enabled. Write protected bits cannot be written.
5 FAULTIN
Fault Inputs Represents the logic OR of the enabled fault inputs after their filter (if their filter is enabled) when fault control is enabled. 0 1 The logic OR of the enabled fault inputs is 0. The logic OR of the enabled fault inputs is 1.
4 Reserved 3 FAULTF3
This read-only bit is reserved and always has the value zero. Fault Detection Flag 3 Set by hardware when fault control is enabled, the corresponding fault input is enabled and a fault condition is detected at the fault input. Clear FAULTF3 by reading the FMS register while FAULTF3 is set and then writing a 0 to FAULTF3 while there is no existing fault condition at the the corresponding fault input. Writing a 1 to FAULTF3 has no effect. FAULTF3 bit is also cleared when FAULTF bit is cleared. If another fault condition is detected at the corresponding fault input before the clearing sequence is completed, the sequence is reset so FAULTF3 remains set after the clearing sequence is completed for the earlier fault condition. 0 1 No fault condition was detected at the fault input. A fault condition was detected at the fault input.
2 FAULTF2
Fault Detection Flag 2 Set by hardware when fault control is enabled, the corresponding fault input is enabled and a fault condition is detected at the fault input. Clear FAULTF2 by reading the FMS register while FAULTF2 is set and then writing a 0 to FAULTF2 while there is no existing fault condition at the the corresponding fault input. Writing a 1 to FAULTF2 has no effect. FAULTF2 bit is also cleared when FAULTF bit is cleared. If another fault condition is detected at the corresponding fault input before the clearing sequence is completed, the sequence is reset so FAULTF2 remains set after the clearing sequence is completed for the earlier fault condition. Table continues on the next page...
Fault Detection Flag 1 Set by hardware when fault control is enabled, the corresponding fault input is enabled and a fault condition is detected at the fault input. Clear FAULTF1 by reading the FMS register while FAULTF1 is set and then writing a 0 to FAULTF1 while there is no existing fault condition at the the corresponding fault input. Writing a 1 to FAULTF1 has no effect. FAULTF1 bit is also cleared when FAULTF bit is cleared. If another fault condition is detected at the corresponding fault input before the clearing sequence is completed, the sequence is reset so FAULTF1 remains set after the clearing sequence is completed for the earlier fault condition. 0 1 No fault condition was detected at the fault input. A fault condition was detected at the fault input.
0 FAULTF0
Fault Detection Flag 0 Set by hardware when fault control is enabled, the corresponding fault input is enabled and a fault condition is detected at the fault input. Clear FAULTF0 by reading the FMS register while FAULTF0 is set and then writing a 0 to FAULTF0 while there is no existing fault condition at the the corresponding fault input. Writing a 1 to FAULTF0 has no effect. FAULTF0 bit is also cleared when FAULTF bit is cleared. If another fault condition is detected at the corresponding fault input before the clearing sequence is completed, the sequence is reset so FAULTF0 remains set after the clearing sequence is completed for the earlier fault condition. 0 1 No fault condition was detected at the fault input. A fault condition was detected at the fault input.
Memory Map and Register Definition Addresses: FTM0_FILTER 4003_8000h base + 78h offset = 4003_8078h FTM1_FILTER 4003_9000h base + 78h offset = 4003_9078h FTM2_FILTER 400B_8000h base + 78h offset = 400B_8078h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reserved 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CH3FVAL 0 0 0 0
CH2FVAL 0 0 0 0
CH1FVAL 0 0 0 0
CH0FVAL 0 0 0
Chapter 37 FlexTimer (FTM) Addresses: FTM0_FLTCTRL 4003_8000h base + 7Ch offset = 4003_807Ch FTM1_FLTCTRL 4003_9000h base + 7Ch offset = 4003_907Ch FTM2_FLTCTRL 400B_8000h base + 7Ch offset = 400B_807Ch
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FAULT3EN
FAULT2EN
FAULT1EN
FFVAL
W
Reset
Fault Input 2 Filter Enable Enables the filter for the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Fault input filter is disabled. Fault input filter is enabled.
5 FFLTR1EN
Fault Input 1 Filter Enable Enables the filter for the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Fault input filter is disabled. Fault input filter is enabled. Table continues on the next page...
FAULT0EN
FFLTR3EN
FFLTR2EN
FFLTR1EN
FFLTR0EN
Fault Input 3 Enable Enables the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Fault input is disabled. Fault input is enabled.
2 FAULT2EN
Fault Input 2 Enable Enables the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Fault input is disabled. Fault input is enabled.
1 FAULT1EN
Fault Input 1 Enable Enables the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Fault input is disabled. Fault input is enabled.
0 FAULT0EN
Fault Input 0 Enable Enables the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Fault input is disabled. Fault input is enabled.
Chapter 37 FlexTimer (FTM) Addresses: FTM0_QDCTRL 4003_8000h base + 80h offset = 4003_8080h FTM1_QDCTRL 4003_9000h base + 80h offset = 4003_9080h FTM2_QDCTRL 400B_8000h base + 80h offset = 400B_8080h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
QUADIR
PHAFLTREN
PHBFLTREN
QUADMODE
Reset
Phase B Input Filter Enable Enables the filter for the quadrature decoder phase B input. The filter value for the phase B input is defined by the CH1FVAL field of FILTER. The phase B filter is also disabled when CH1FVAL is zero. 0 1 Phase B input filter is disabled. Phase B input filter is enabled.
5 PHAPOL
Phase A Input Polarity Selects the polarity for the quadrature decoder phase A input. 0 1 Normal polarity. Phase A input signal is not inverted before identifying the rising and falling edges of this signal. Inverted polarity. Phase A input signal is inverted before identifying the rising and falling edges of this signal. Table continues on the next page...
QUADEN 0
PHAPOL
PHBPOL
TOFDIR
Quadrature Decoder Mode Selects the encoding mode used in the quadrature decoder mode. 0 1 Phase A and phase B encoding mode. Count and direction encoding mode.
2 QUADIR
FTM Counter Direction in Quadrature Decoder Mode Indicates the counting direction. 0 1 Counting direction is decreasing (FTM counter decrement). Counting direction is increasing (FTM counter increment).
1 TOFDIR
Timer Overflow Direction in Quadrature Decoder Mode Indicates if the TOF bit was set on the top or the bottom of counting. 0 1 TOF bit was set on the bottom of counting. There was an FTM counter decrement and FTM counter changes from its minimum value (CNTIN register) to its maximum value (MOD register). TOF bit was set on the top of counting. There was an FTM counter increment and FTM counter changes from its maximum value (MOD register) to its minimum value (CNTIN register).
0 QUADEN
Quadrature Decoder Mode Enable Enables the quadrature decoder mode. In this mode, the phase A and B input signals control the FTM counter direction. The quadrature decoder mode has precedence over the other modes. (See Table 37-7.) This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 Quadrature decoder mode is disabled. Quadrature decoder mode is enabled.
Chapter 37 FlexTimer (FTM) Addresses: FTM0_CONF 4003_8000h base + 84h offset = 4003_8084h FTM1_CONF 4003_9000h base + 84h offset = 4003_9084h FTM2_CONF 400B_8000h base + 84h offset = 400B_8084h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
GTBEOUT
GTBEEN
0
BDMMODE
0 NUMTOF
Reset
Global time base enable Configures the FTM to use an external global time base signal that is generated by another FTM. 0 1 Use of an external global time base is disabled. Use of an external global time base is enabled.
This read-only bit is reserved and always has the value zero. BDM Mode Selects the FTM behavior in BDM mode. See BDM Mode. This read-only bit is reserved and always has the value zero. TOF Frequency Selects the ratio between the number of counter overflows to the number of times the TOF bit is set. NUMTOF = 0: The TOF bit is set for each counter overflow. NUMTOF = 1: The TOF bit is set for the first counter overflow but not for the next overflow. NUMTOF = 2: The TOF bit is set for the first counter overflow but not for the next 2 overflows. NUMTOF = 3: The TOF bit is set for the first counter overflow but not for the next 3 overflows. Table continues on the next page...
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FLT3POL
FLT2POL
FLT1POL 0
Reset
Fault Input 2 Polarity Defines the polarity of the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The fault input polarity is active high. A one at the fault input indicates a fault. The fault input polarity is active low. A zero at the fault input indicates a fault. Table continues on the next page...
FLT0POL 0
Fault Input 0 Polarity Defines the polarity of the fault input. This field is write protected. It can be written only when MODE[WPDIS] = 1. 0 1 The fault input polarity is active high. A one at the fault input indicates a fault. The fault input polarity is active low. A zero at the fault input indicates a fault.
HWWRBUF
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
SYNCMODE
SWRSTCNT
SWWRBUF
SWINVC
SWSOC
Reset
CNTINC
0 SWOC INVC
HWTRIGMODE
SWOM
HWRSTCNT
HWINVC
HWSOC
HWOM
0
0
19 HWINVC
Inverting control synchronization is activated by a hardware trigger. 0 1 A hardware trigger does not activate the INVCTRL register synchronization. A hardware trigger activates the INVCTRL register synchronization.
18 HWOM
Output mask synchronization is activated by a hardware trigger. 0 1 A hardware trigger does not activate the OUTMASK register synchronization. A hardware trigger activates the OUTMASK register synchronization.
17 HWWRBUF
MOD, CNTIN, and CV registers synchronization is activated by a hardware trigger. 0 1 A hardware trigger does not activate MOD, CNTIN, and CV registers synchronization. A hardware trigger activates MOD, CNTIN, and CV registers synchronization.
16 HWRSTCNT
FTM counter synchronization is activated by a hardware trigger. 0 1 A hardware trigger does not activate the FTM counter synchronization. A hardware trigger activates the FTM counter synchronization.
This read-only bitfield is reserved and always has the value zero. Software output control synchronization is activated by the software trigger. 0 1 The software trigger does not activate the SWOCTRL register synchronization. The software trigger activates the SWOCTRL register synchronization.
11 SWINVC
Inverting control synchronization is activated by the software trigger. 0 1 The software trigger does not activate the INVCTRL register synchronization. The software trigger activates the INVCTRL register synchronization.
10 SWOM
Output mask synchronization is activated by the software trigger. 0 1 The software trigger does not activate the OUTMASK register synchronization. The software trigger activates the OUTMASK register synchronization.
9 SWWRBUF
MOD, CNTIN, and CV registers synchronization is activated by the software trigger. 0 1 The software trigger does not activate MOD, CNTIN, and CV registers synchronization. The software trigger activates MOD, CNTIN, and CV registers synchronization.
8 SWRSTCNT
FTM counter synchronization is activated by the software trigger. 0 1 The software trigger does not activate the FTM counter synchronization. The software trigger activates the FTM counter synchronization.
7 SYNCMODE
Synchronization Mode Selects the PWM synchronization mode. Table continues on the next page...
This read-only bit is reserved and always has the value zero. SWOCTRL register synchronization 0 1 SWOCTRL register is updated with its buffer value at all rising edges of system clock. SWOCTRL register is updated with its buffer value by the PWM synchronization.
4 INVC
INVCTRL register synchronization 0 1 INVCTRL register is updated with its buffer value at all rising edges of system clock. INVCTRL register is updated with its buffer value by the PWM synchronization.
3 Reserved 2 CNTINC
This read-only bit is reserved and always has the value zero. CNTIN register synchronization 0 1 CNTIN register is updated with its buffer value at all rising edges of system clock. CNTIN register is updated with its buffer value by the PWM synchronization.
1 Reserved 0 HWTRIGMODE
This read-only bit is reserved and always has the value zero. Hardware Trigger Mode 0 1 FTM clears the TRIGj bit when the hardware trigger j is detected. FTM does not clear the TRIGj bit when the hardware trigger j is detected.
2 INV2EN
1 INV1EN
0 INV0EN
Chapter 37 FlexTimer (FTM) Addresses: FTM0_SWOCTRL 4003_8000h base + 94h offset = 4003_8094h FTM1_SWOCTRL 4003_9000h base + 94h offset = 4003_9094h FTM2_SWOCTRL 400B_8000h base + 94h offset = 400B_8094h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
CH7OCV
CH6OCV
CH5OCV
CH4OCV
CH3OCV
CH2OCV
CH1OCV
CH0OCV
CH7OC
CH6OC
CH5OC
CH4OC
CH3OC
CH2OC
CH1OC 0
Reset
14 CH6OCV
Channel 6 Software Output Control Value 0 1 The software output control forces 0 to the channel output. The software output control forces 1 to the channel output.
13 CH5OCV
Channel 5 Software Output Control Value 0 1 The software output control forces 0 to the channel output. The software output control forces 1 to the channel output.
12 CH4OCV
Channel 4 Software Output Control Value 0 1 The software output control forces 0 to the channel output. The software output control forces 1 to the channel output.
11 CH3OCV
Channel 3 Software Output Control Value 0 1 The software output control forces 0 to the channel output. The software output control forces 1 to the channel output.
10 CH2OCV
Channel 2 Software Output Control Value 0 1 The software output control forces 0 to the channel output. The software output control forces 1 to the channel output.
9 CH1OCV
Channel 1 Software Output Control Value Table continues on the next page...
CH0OC 0
Channel 0 Software Output Control Value 0 1 The software output control forces 0 to the channel output. The software output control forces 1 to the channel output.
7 CH7OC
Channel 7 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
6 CH6OC
Channel 6 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
5 CH5OC
Channel 5 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
4 CH4OC
Channel 4 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
3 CH3OC
Channel 3 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
2 CH2OC
Channel 2 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
1 CH1OC
Channel 1 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
0 CH0OC
Channel 0 Software Output Control Enable 0 1 The channel output is not affected by software output control. The channel output is affected by software output control.
Chapter 37 FlexTimer (FTM) Addresses: FTM0_PWMLOAD 4003_8000h base + 98h offset = 4003_8098h FTM1_PWMLOAD 4003_9000h base + 98h offset = 4003_9098h FTM2_PWMLOAD 400B_8000h base + 98h offset = 400B_8098h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
CH7SEL
CH6SEL
CH5SEL
CH4SEL
CH3SEL
CH2SEL
CH1SEL 0
Reset
This read-only bit is reserved and always has the value zero. Channel 7 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
6 CH6SEL
Channel 6 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
5 CH5SEL
Channel 5 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
4 CH4SEL
Channel 4 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
3 CH3SEL
CH0SEL 0
LDOK
Functional Description
Channel 2 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
1 CH1SEL
Channel 1 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
0 CH0SEL
Channel 0 Select 0 1 Do not include the channel in the matching process. Include the channel in the matching process.
1 0
FTM counter
channel (n) output counter overflow channel (n) match counter overflow channel (n) match counter overflow channel (n) match
37.4.2 Prescaler
The selected counter clock source passes through a prescaler that is a 7-bit counter. The value of the prescaler is selected by the PS[2:0] bits. The following figure shows an example of the prescaler counter and FTM counter.
Functional Description
prescaler counter
1 0
0 1
0 2
0 3
0 0
0 1
0 2
0 3
0 0
0 1
FTM counter
37.4.3 Counter
The FTM has a 16-bit counter that is used by the channels either for input or output modes. The FTM counter clock is the selected clock divided by the prescaler. The FTM counter has these modes of operation: up counting (see Up Counting ) up-down counting (see Up-Down Counting ) quadrature mode (see Quadrature Decoder Mode )
37.4.3.1 Up Counting
Up counting is selected when (QUADEN = 0) and (CPWMS = 0). CNTIN defines the starting value of the count and MOD defines the final value of the count (see the following figure). The value of CNTIN is loaded into the FTM counter, and the counter increments until the value of MOD is reached, at which point the counter is reloaded with the value of CNTIN. The FTM period when using up counting is (MOD CNTIN + 0x0001) period of the FTM counter clock. The TOF bit is set when the FTM counter changes from MOD to CNTIN.
-4 -3 -2 -1 0
-4 -3 -2 -1
-4 -3
period of FTM counter clock period of counting = (MOD - CNTIN + 0x0001) x period of FTM counter clock
If (CNTIN = 0x0000), the FTM counting is equivalent to TPM up counting (that is, up and unsigned counting) (see the following figure). If (CNTIN[15] = 1), then the initial value of the FTM counter is a negative number in two's complement, so the FTM counting is up and signed. Conversely if (CNTIN[15] = 0 and CNTIN 0x0000), then the initial value of the FTM counter is a positive number, so the FTM counting is up and unsigned.
Functional Description
FTM counting is up
CNTIN = 0x0000 MOD = 0x0004
FTM counter
TOF bit set TOF bit set TOF bit set TOF bit
Note FTM operation is only valid when the value of the CNTIN register is less than the value of the MOD register (either in the unsigned counting or signed counting). It is the responsibility of the software to ensure that the values in the CNTIN and MOD registers meet this requirement. Any values of CNTIN and MOD that do not satisfy this criteria can result in unpredictable behavior. MOD = CNTIN is a redundant condition. In this case, the FTM counter is always equal to MOD and the TOF bit is set in each rising edge of the FTM counter clock. When MOD = 0x0000, CNTIN = 0x0000 (for example after reset), and FTMEN = 1, the FTM counter remains stopped at 0x0000 until a non-zero value is written into the MOD or CNTIN registers. Setting CNTIN to be greater than the value of MOD is not recommended as this unusual setting may make the FTM operation difficult to comprehend. However, there is no restriction on this configuration, and an example is shown in the following figure.
FTM counting is up
MOD = 0x0005 CNTIN = 0x0015
load of CNTIN
load of CNTIN
FTM counter
0x0005 0x0015 0x0016 ... 0xFFFE 0xFFFF 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0015 0x0016 ...
TOF bit
Figure 37-170. Example of Up Counting When the Value of CNTIN Is Greater Than the Value of MOD
Functional Description
FTM counter
period of counting = 2 x (MOD - CNTIN) x period of FTM counter clock = 2 x MOD x period of FTM counter clock
Note It is expected that the up-down counting be used only with CNTIN = 0x0000.
FTM counter
... 0x0003 0x0004 ... 0xFFFE 0xFFFF 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 ...
TOF bit
If (FTMEN = 1), (QUADEN = 0), (CPWMS = 0), (CNTIN = 0x0000), and (MOD = 0xFFFF), the FTM counter is a free running counter. In this case, the FTM counter runs free from 0x0000 through 0xFFFF and the TOF bit is set when the FTM counter changes from 0xFFFF to 0x0000.
NUMTOF[4:0]
TOF counter
set TOF bit
0x00
0x00
Functional Description
is filter enabled?
0 0 1
CHnIE CHnF
rising edge
edge detector
falling edge 0 1 0
CnV
system clock
FTM counter
If the channel input does not have a filter enabled, then the input signal is always delayed 3 rising edges of the system clock (two rising edges to the synchronizer plus one more rising edge to the edge detector). In other words, the CHnF bit is set on the third rising edge of the system clock after a valid edge occurs on the channel input.
Note It is expected that the input capture mode be used only with CNTIN = 0x0000.
CHnFVAL[3:0] channel (n) input after the synchronizer Logic to control the filter counter 5-bit up counter divided by 4 Logic to define the filter output S C CLK Q filter output
system clock
If the opposite edge appears on the input signal before validation (counter overflow), the counter is reset. At the next input transition, the counter starts counting again. Any pulse that is shorter than the minimum value selected by CHnFVAL[3:0] bits ( 4 system clocks) is regarded as a glitch and is not passed on to the edge detector. A timing diagram of the input filter is shown in the following figure. The filter function is disabled when CHnFVAL[3:0] bits are zero. In this case, the input signal is delayed 3 rising edges of the system clock. If (CHnFVAL[3:0] 0000), then the input signal is delayed by the minimum pulse width (CHnFVAL[3:0] 4 system clocks) plus a further 4 rising edges of the system clock (two rising edges to the synchronizer, one rising edge to the filter output plus one more to the edge detector). In other words, CHnF is set (4 + 4 CHnFVAL[3:0]) system clock periods after a valid edge occurs on the channel input. The clock for the 5-bit counter in the channel input filter is the system clock divided by 4.
Functional Description
system clock divided by 4 channel (n) input after the synchronizer 5-bit counter CHnFVAL[3:0] = 0010 (binary value) Time filter output
Figure 37-178. Example of the Output Compare Mode when the Match Toggles the Channel Output
MOD = 0x0005 CnV = 0x0003 counter overflow CNT channel (n) output CHnF bit TOF bit ... 0 1 channel (n) match 2 3 4 counter overflow 5 0 1 channel (n) match 2 3 4 counter overflow 5 0 1 ...
Figure 37-179. Example of the Output Compare Mode when the Match Clears the Channel Output
MOD = 0x0005 CnV = 0x0003 counter overflow CNT
channel (n) output
... 0 1
counter overflow
5 0 1
counter overflow
5 0 1 ...
Figure 37-180. Example of the Output Compare Mode when the Match Sets the Channel Output
It is possible to use the output compare mode with (ELSnB:ELSnA = 0:0). In this case, when the counter reaches the value in the CnV register, the CHnF bit is set and the channel (n) interrupt is generated (if CHnIE = 1), however the channel (n) output is not modified and controlled by FTM. Note It is expected that the output compare mode be used only with CNTIN = 0x0000.
Functional Description
The CHnF bit is set and the channel (n) interrupt is generated (if CHnIE = 1) at the channel (n) match (FTM counter = CnV), that is, at the end of the pulse width. This type of PWM signal is called edge-aligned because the leading edges of all PWM signals are aligned with the beginning of the period, which is the same for all channels within an FTM.
counter overflow
period
counter overflow
counter overflow
pulse width channel (n) output channel (n) match channel (n) match channel (n) match
Figure 37-181. EPWM Period and Pulse Width with ELSnB:ELSnA = 1:0
If (ELSnB:ELSnA = 0:0) when the counter reaches the value in the CnV register, the CHnF bit is set and the channel (n) interrupt is generated (if CHnIE = 1), however the channel (n) output is not controlled by FTM. If (ELSnB:ELSnA = 1:0), then the channel (n) output is forced high at the counter overflow (when the CNTIN register value is are loaded into the FTM counter), and it is forced low at the channel (n) match (FTM counter = CnV) (see the following figure).
MOD = 0x0008 CnV = 0x0005 counter overflow CNT channel (n) output
CHnF bit TOF bit
previous value
...
counter overflow
8 0 1 2
...
If (ELSnB:ELSnA = X:1), then the channel (n) output is forced low at the counter overflow (when the CNTIN register value is loaded into the FTM counter), and it is forced high at the channel (n) match (FTM counter = CnV) (see the following figure).
counter overflow
8 0 1 2
...
If (CnV = 0x0000), then the channel (n) output is a 0% duty cycle EPWM signal and CHnF bit is not set even when there is the channel (n) match. If (CnV > MOD), then the channel (n) output is a 100% duty cycle EPWM signal and CHnF bit is not set even when there is the channel (n) match. Therefore, MOD must be less than 0xFFFF in order to get a 100% duty cycle EPWM signal. Note It is expected that the EPWM mode be used only with CNTIN = 0x0000.
Functional Description
2 x (CnV - CNTIN)
period 2 x (MOD - CNTINCNTIN)
Figure 37-184. CPWM Period and Pulse Width with ELSnB:ELSnA = 1:0
If (ELSnB:ELSnA = 0:0) when the FTM counter reaches the value in the CnV register, the CHnF bit is set and the channel (n) interrupt is generated (if CHnIE = 1), however the channel (n) output is not controlled by FTM. If (ELSnB:ELSnA = 1:0), then the channel (n) output is forced high at the channel (n) match (FTM counter = CnV) when counting down, and it is forced low at the channel (n) match when counting up (see the following figure).
MOD = 0x0008 CnV = 0x0005 counter overflow channel (n) match in down counting counter overflow channel (n) match in down counting
...
...
previous value
If (ELSnB:ELSnA = X:1), then the channel (n) output is forced low at the channel (n) match (FTM counter = CnV) when counting down, and it is forced high at the channel (n) match when counting up (see the following figure).
counter overflow channel (n) match in down counting channel (n) match in up counting
...
...
previous value
If (CnV = 0x0000) or (CnV is a negative value, that is, CnV[15] = 1) then the channel (n) output is a 0% duty cycle CPWM signal and CHnF bit is not set even when there is the channel (n) match. If (CnV is a positive value, that is, CnV[15] = 0), (CnV MOD), and (MOD 0x0000), then the channel (n) output is a 100% duty cycle CPWM signal and CHnF bit is not set even when there is the channel (n) match. This implies that the usable range of periods set by MOD is 0x0001 through 0x7FFE (0x7FFF if you do not need to generate a 100% duty cycle CPWM signal). This is not a significant limitation because the resulting period is much longer than required for normal applications. The CPWM mode must not be used when the FTM counter is a free running counter. Note It is expected that the CPWM mode be used only with CNTIN = 0x0000.
Functional Description
If (ELSnB:ELSnA = 1:0), then the channel (n) output is forced low at the beginning of the period (FTM counter = CNTIN) and at the channel (n+1) match (FTM counter = C(n +1)V). It is forced high at the channel (n) match (FTM counter = C(n)V)(see the following figure). If (ELSnB:ELSnA = X:1), then the channel (n) output is forced high at the beginning of the period (FTM counter = CNTIN) and at the channel (n+1) match (FTM counter = C(n +1)V). It is forced low at the channel (n) match (FTM counter = C(n)V)(see the following figure). In combine mode, the ELS(n+1)B and ELS(n+1)A bits are not used in the generation of the channels (n) and (n+1) output. However, if (ELSnB:ELSnA = 0:0) then the channel (n) output is not controlled by FTM, and if (ELS(n+1)B:ELS(n+1)A = 0:0) then the channel (n+1) output is not controlled by FTM.
channel (n+1) match
FTM counter
channel (n) match
The following figures illustrate the PWM signals generation using combine mode.
FTM counter MOD C(n+1)V C(n)V CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-188. Channel (n) Output If (CNTIN < C(n)V < MOD) and (CNTIN < C(n+1)V < MOD) and (C(n)V < C(n+1)V)
C(n)V CNTIN
channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-189. Channel (n) Output If (CNTIN < C(n)V < MOD) and (C(n+1)V = MOD)
FTM counter MOD
C(n+1)V
C(n)V = CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-190. Channel (n) Output If (C(n)V = CNTIN) and (CNTIN < C(n+1)V < MOD)
Functional Description
C(n)V CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1 not fully 100% duty cycle
Figure 37-191. Channel (n) Output If (CNTIN < C(n)V < MOD) and (C(n)V is Almost Equal to CNTIN) and (C(n+1)V = MOD)
FTM counter MOD C(n+1)V
C(n)V = CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1 not fully 100% duty cycle
Figure 37-192. Channel (n) Output If (C(n)V = CNTIN) and (CNTIN < C(n+1)V < MOD) and (C(n+1)V is Almost Equal to MOD)
CNTIN C(n)V channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1 0% duty cycle 100% duty cycle
Figure 37-193. Channel (n) Output If C(n)V and C(n+1)V Are Not Between CNTIN and MOD
FTM counter MOD
C(n+1)V = C(n)V
CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-194. Channel (n) Output If (CNTIN < C(n)V < MOD) and (CNTIN < C(n+1)V < MOD) and (C(n)V = C(n+1)V)
Functional Description
channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
0% duty cycle
CNTIN
channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
0% duty cycle
channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
0% duty cycle
Figure 37-197. Channel (n) Output If (CNTIN < C(n)V < MOD) and (CNTIN < C(n+1)V < MOD) and (C(n)V > C(n+1)V)
FTM counter MOD
C(n+1)V
CNTIN C(n)V channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1 0% duty cycle
Figure 37-198. Channel (n) Output If (C(n)V < CNTIN) and (CNTIN < C(n+1)V < MOD)
Functional Description
C(n)V
CNTIN C(n+1)V channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-199. Channel (n) Output If (C(n+1)V < CNTIN) and (CNTIN < C(n)V < MOD)
FTM counter C(n)V MOD
C(n+1)V
CNTIN
channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
0% duty cycle
Figure 37-200. Channel (n) Output If (C(n)V > MOD) and (CNTIN < C(n+1)V < MOD)
C(n)V
CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-201. Channel (n) Output If (C(n+1)V > MOD) and (CNTIN < C(n)V < MOD)
FTM counter C(n+1)V MOD = C(n)V
CNTIN channel (n) output with ELSnB:ELSnA = 1:0 channel (n) output with ELSnB:ELSnA = X:1
Figure 37-202. Channel (n) Output If (C(n+1)V > MOD) and (CNTIN < C(n)V = MOD)
Functional Description
FTM counter
channel (n) match
channel (n) output with ELSnB:ELSnA = 1:0 channel (n+1) output with COMP = 0 channel (n+1) output with COMP = 1
Figure 37-203. Channel (n+1) Output in Complementary Mode with (ELSnB:ELSnA = 1:0)
FTM counter
channel (n) match
channel (n) output with ELSnB:ELSnA = X:1 channel (n+1) output with COMP = 0 channel (n+1) output with COMP = 1
Figure 37-204. Channel (n+1) Output in Complementary Mode with (ELSnB:ELSnA = X:1)
If (FTMEN = 0) or (CNTINC = 0) then CNTIN register is updated at the next system clock after CNTIN was written. If (FTMEN = 1), (SYNCMODE = 1) and (CNTINC = 1) then CNTIN register is updated by the CNTIN register synchronization (CNTIN Register Synchronization ).
Functional Description
If (CLKS[1:0] 0:0 and FTMEN = 1) then CnV register is updated according to the selected mode, that is:. If the selected mode is output compare then CnV register is updated according to the SYNCEN bit. If (SYNCEN = 0) then CnV register is updated after CnV register was written at the next change of the FTM counter (end of the prescaler counting). If (SYNCEN = 1) then CnV register is updated by the CnV register synchronization (C(n)V and C(n+1)V Register Synchronization ). If the selected mode is not output compare and (SYNCEN = 1) then CnV register is updated by the CnV register synchronization (C(n)V and C(n+1)V Register Synchronization ).
In this case if two or more hardware triggers are enabled (for example, TRIG0 and TRIG1 = 1) and only trigger 1 event occurs then only TRIG1 bit is cleared. If a trigger n event occurs together with a write setting TRIGn bit then the synchronization is initiated, but TRIGn bit remains set due to the write operation.
system clock write 1 to TRIG0 bit TRIG0 bit trigger_0 input synchronized trigger_0 by system clock trigger 0 event Note
If HWTRIGMODE = 1 then the TRIGn bit is only cleared when 0 is written to it. NOTE It is expected that the HWTRIGMODE bit be 1 only with enhanced PWM synchronization (SYNCMODE = 1).
Functional Description
Cycle and Loading Points ) after that the software trigger event occurred (see the following figure). If (PWMSYNC = 0) and (REINIT = 1) then SWSYNC bit is cleared when the software trigger event occurs. If SYNCMODE = 1 then the SWSYNC bit is also cleared by FTM according to the SWRSTCNT bit. If SWRSTCNT = 0 then SWSYNC bit is cleared at the next selected loading point after that the software trigger event occurred (see the following figure). If SWRSTCNT = 1 then SWSYNC bit is cleared when the software trigger event occurs.
system clock write 1 to SWSYNC bit SWSYNC bit software trigger event PWM synchronization selected loading point
up counting mode
Functional Description
begin
SWWRBUF = 0 bit ?
=1
end
software trigger
SWSYNC bit ?
=1
SWRSTCNT bit ?
=1
end
end
In the case of legacy PWM synchronization, the MOD register synchronization depends on PWMSYNC and REINIT bits according to the following description. If (SYNCMODE = 0), (PWMSYNC = 0) and (REINIT = 0) then this synchronization is made on the next selected loading point after an enabled trigger event takes place. If the trigger event was a software trigger then the SWSYNC bit is cleared on the next selected
=0 =0
SYNCMODE bit ?
=1
HWWRBUF = 0 bit ?
=1
end
0=
TRIGn bit ?
=1
hardware trigger
HWTRIGMODE bit ?
=0
=1
HWRSTCNT bit ?
=1
loading point. If the trigger event was a hardware trigger then the trigger enable bit (TRIGn) is cleared according to Hardware Trigger. Examples with software and hardware triggers follow.
system clock write 1 to SWSYNC bit SWSYNC bit
Figure 37-209. MOD Synchronization with (SYNCMODE = 0), (PWMSYNC = 0), (REINIT = 0), and (Software Trigger Was Used)
system clock write 1 to TRIG0 bit TRIG0 bit
trigger 0 event
selected loading point MOD register is updated
Figure 37-210. MOD Synchronization with (SYNCMODE = 0), (HWTRIGMODE = 0), (PWMSYNC = 0), (REINIT = 0), and (a Hardware Trigger Was Used)
If (SYNCMODE = 0), (PWMSYNC = 0) and (REINIT = 1) then this synchronization is made on the next enabled trigger event. If the trigger event was a software trigger then the SWSYNC bit is cleared according to the following example. If the trigger event was a hardware trigger then the TRIGn bit is cleared according to Hardware Trigger. Examples with software and hardware triggers follow.
Figure 37-211. MOD Synchronization with (SYNCMODE = 0), (PWMSYNC = 0), (REINIT = 1), and (Software Trigger Was Used)
system clock write 1 to TRIG0 bit TRIG0 bit
trigger 0 event
MOD register is updated
Figure 37-212. MOD Synchronization with (SYNCMODE = 0), (HWTRIGMODE = 0), (PWMSYNC = 0), (REINIT = 1), and (a Hardware Trigger Was Used)
If (SYNCMODE = 0) and (PWMSYNC = 1) then this synchronization is made on the next selected loading point after the software trigger event takes place. The SWSYNC bit is cleared on the next selected loading point:
system clock write 1 to SWSYNC bit SWSYNC bit
Functional Description
begin
update OUTMASK register at each rising edge of system clock update OUTMASK register by PWM synchronization
0=
SYNCHOM bit ?
=1
no =
1=
SYNCMODE bit ?
=0
SWOM bit ?
software trigger
HWOM bit ?
=1
0=
SWSYNC bit ?
=1
end
end
hardware trigger
TRIGn bit ?
=1
=0
end
HWTRIGMODE bit ?
=0
=1
end
In the case of legacy PWM synchronization, the OUTMASK register synchronization depends on PWMSYNC bit according to the following description.
If (SYNCMODE = 0), (SYNCHOM = 1) and (PWMSYNC = 0) then this synchronization is done on the next enabled trigger event. If the trigger event was a software trigger then the SWSYNC bit is cleared on the next selected loading point. If the trigger event was a hardware trigger then the TRIGn bit is cleared according to Hardware Trigger. Examples with software and hardware triggers follow.
system clock write 1 to SWSYNC bit SWSYNC bit
Figure 37-215. OUTMASK Synchronization with (SYNCMODE = 0), (SYNCHOM = 1), (PWMSYNC = 0) and (Software Trigger Was Used)
system clock write 1 to TRIG0 bit TRIG0 bit
trigger 0 event
Figure 37-216. OUTMASK Synchronization with (SYNCMODE = 0), (HWTRIGMODE = 0), (SYNCHOM = 1), (PWMSYNC = 0), and (a Hardware Trigger Was Used)
If (SYNCMODE = 0), (SYNCHOM = 1) and (PWMSYNC = 1) then this synchronization is made on the next enabled hardware trigger. The TRIGn bit is cleared according to Hardware Trigger. An example with a hardware trigger follows.
trigger 0 event
Figure 37-217. OUTMASK Synchronization with (SYNCMODE = 0), (HWTRIGMODE = 0), (SYNCHOM = 1), (PWMSYNC = 1), and (a Hardware Trigger Was Used)
0=
INVC bit ?
=1
1= no =
SYNCMODE bit ?
=0
end
SWINVC bit ?
software trigger
HWINVC bit ?
=1
0=
SWSYNC bit ?
=1
end
end
hardware trigger
TRIGn bit ?
=1
=0
end
HWTRIGMODE bit ?
=0
=1
end
Functional Description
The SWOCTRL register can be updated at each rising edge of system clock (SWOC = 0) or by the enhanced PWM synchronization (SWOC = 1 and SYNCMODE = 1) according to the following flowchart. In the case of enhanced PWM synchronization, the SWOCTRL register synchronization depends on SWSOC and HWSOC bits.
begin
update SWOCTRL register at each rising edge of system clock update SWOCTRL register by PWM synchronization
0=
SWOC bit ?
=1
1= no =
SYNCMODE bit ?
=0
end
SWSOC bit ?
software trigger
HWSOC bit ?
=1
0=
SWSYNC bit ?
=1
end
end
hardware trigger
TRIGn bit ?
=1
=0
end
HWTRIGMODE bit ?
=0
=1
end
FTM counter
channel (n) match
channel (n) output (after deadtime insertion) channel (n+1) output (after deadtime insertion)
synchronization event
The FTM counter synchronization can be done by either the enhanced PWM synchronization (SYNCMODE = 1) or the legacy PWM synchronization (SYNCMODE = 0). However, it is expected that the FTM counter be synchronized only by the enhanced PWM synchronization. In the case of enhanced PWM synchronization, the FTM counter synchronization depends on SWRSTCNT and HWRSTCNT bits according to the following flowchart.
Functional Description
begin
1=
SWRSTCNT bit ?
software trigger
=0
SWSYNC bit ?
=1
end
end
In the case of legacy PWM synchronization, the FTM counter synchronization depends on REINIT and PWMSYNC bits according to the following description. If (SYNCMODE = 0), (REINIT = 1) and (PWMSYNC = 0) then this synchronization is made on the next enabled trigger event. If the trigger event was a software trigger then the SWSYNC bit is cleared according to the following example. If the trigger event was a hardware trigger then the TRIGn bit is cleared according to Hardware Trigger. Examples with software and hardware triggers follow.
=0
=0 =0
SYNCMODE bit ?
=1
HWRSTCNT bit ?
=1
hardware trigger
TRIGn bit ?
=1
=0
HWTRIGMODE bit ?
=0
=1
end
Chapter 37 FlexTimer (FTM) system clock write 1 to SWSYNC bit SWSYNC bit
FTM counter is updated with the CNTIN register value and channel outputs are forced to their initial value
Figure 37-222. FTM Counter Synchronization with (SYNCMODE = 0), (REINIT = 1), (PWMSYNC = 0), and (Software Trigger Was Used)
system clock write 1 to TRIG0 bit TRIG0 bit
trigger 0 event
FTM counter is updated with the CNTIN register value and channel outputs are forced to their initial value
Figure 37-223. FTM Counter Synchronization with (SYNCMODE = 0), (HWTRIGMODE = 0), (REINIT = 1), (PWMSYNC = 0), and (a Hardware Trigger Was Used)
If (SYNCMODE = 0), (REINIT = 1) and (PWMSYNC = 1) then this synchronization is made on the next enabled hardware trigger. The TRIGn bit is cleared according to Hardware Trigger.
system clock write 1 to TRIG0 bit TRIG0 bit
trigger 0 event
FTM counter is updated with the CNTIN register value and channel outputs are forced to their initial value
Figure 37-224. FTM Counter Synchronization with (SYNCMODE = 0), (HWTRIGMODE = 0), (REINIT = 1), (PWMSYNC = 1), and (a Hardware Trigger Was Used)
Functional Description
37.4.12 Inverting
The invert functionality swaps the signals between channel (n) and channel (n+1) outputs. The inverting operation is selected when (FTMEN = 1), (QUADEN = 0), (DECAPEN = 0), (COMBINE = 1), (COMP = 1), (CPWMS = 0), and (INVm = 1), where m represents a channel pair. The INVm bit in INVCTRL register is updated with its buffer value according to INVCTRL Register Synchronization In high-true (ELSnB:ELSnA = 1:0) combine mode, the channel (n) output is forced low at the beginning of the period (FTM counter = CNTIN), forced high at the channel (n) match and forced low at the channel (n+1) match. If the inverting is selected, the channel (n) output behavior is changed to force high at the beginning of the PWM period, force low at the channel (n) match and force high at the channel (n+1) match. See the following figure.
channel (n+1) match
FTM counter
channel (n) match
INV(m) bit
channel (n) output after the inverting
Figure 37-225. Channels (n) and (n+1) Outputs After the Inverting in High-True (ELSnB:ELSnA = 1:0) Combine Mode
Note that the ELSnB:ELSnA bits value should be consider since that they define the active state of the channels outputs. In low-true (ELSnB:ELSnA = X:1) combine mode, the channel (n) output is forced high at the beginning of the period, forced low at the channel (n) match and forced high at the channel (n+1) match. In the case the inverting is selected the channels (n) and (n+1) present waveforms as shown in the following figure.
channel (n+1) match
FTM counter
channel (n) match
INV(m) bit
channel (n) output after the inverting
Figure 37-226. Channels (n) and (n+1) Outputs After the Inverting in Low-True (ELSnB:ELSnA = X:1) Combine Mode
Note It is expected that the inverting feature be used only in combine mode.
Functional Description
Both CHnOC and CHnOCV bits in SWOCTRL register are buffered and updated with their buffer value according to SWOCTRL Register Synchronization. The following figure shows the channels (n) and (n+1) outputs signals when the software output control is used. In this case the channels (n) and (n+1) are set to combine and complementary mode.
channel (n+1) match
FTM counter
channel (n) match channel (n) output after the software output control channel (n+1) output after the software output control
Figure 37-227. Example of Software Output Control in Combine and Complementary Mode
Software output control forces the following values on channels (n) and (n+1) when the COMP bit is zero.
Table 37-242. Software Ouput Control Behavior when (COMP = 0)
CH(n)OC 0 1 1 1 1 CH(n+1)OC 0 1 1 1 1 CH(n)OCV X 0 0 1 1 CH(n+1)OCV X 0 1 0 1 Channel (n) Output is not modified by SWOC is forced to zero is forced to zero is forced to one is forced to one Channel (n+1) Output is not modified by SWOC is forced to zero is forced to one is forced to zero is forced to one
Software output control forces the following values on channels (n) and (n+1) when the COMP bit is one.
Table 37-243. Software Ouput Control Behavior when (COMP = 1)
CH(n)OC 0 CH(n+1)OC 0 CH(n)OCV X CH(n+1)OCV X Channel (n) Output is not modified by SWOC Channel (n+1) Output is not modified by SWOC
Note It is expected that the software output control feature be used only in combine mode. The CH(n)OC and CH(n+1)OC bits should be equal. The COMP bit should not be modified when software output control is enabled, that is, CH(n)OC = 1 and/or CH(n+1)OC = 1. Software output control has the same behavior with disabled or enabled FTM counter (see the CLKS bitfield description in the Status and Control register).
Functional Description
when the channel (n+1) match (FTM counter = C(n+1)V) occurs, the channel (n+1) output remains at the high value until the end of the deadtime delay when the channel (n +1) output is cleared.
channel (n+1) match
FTM counter
channel (n) match
channel (n) output (before deadtime insertion) channel (n+1) output (before deadtime insertion) channel (n) output (after deadtime insertion) channel (n+1) output (after deadtime insertion)
Figure 37-228. Deadtime Insertion with ELSnB:ELSnA = 1:0, POL(n) = 0, and POL(n+1) = 0
FTM counter
channel (n) match
channel (n) output (before deadtime insertion) channel (n+1) output (before deadtime insertion) channel (n) output (after deadtime insertion) channel (n+1) output (after deadtime insertion)
Figure 37-229. Deadtime Insertion with ELSnB:ELSnA = X:1, POL(n) = 0, and POL(n+1) = 0
NOTE It is expected that the deadtime feature be used only in combine and complementary modes.
and the deadtime delay is greater than or equal to the channel (n) duty cycle ((C(n +1)V C(n)V) system clock), then the channel (n) output is always the inactive value (POL(n) bit value). and the deadtime delay is greater than or equal to the channel (n+1) duty cycle ((MOD CNTIN + 1 (C(n+1)V C(n)V) ) system clock), then the channel (n+1) output is always the inactive value (POL(n+1) bit value). Although, in most cases the deadtime delay is not comparable to channels (n) and (n+1) duty cycle, the following figures show examples where the deadtime delay is comparable to the duty cycle.
channel (n+1) match
FTM counter
channel (n) match
channel (n) output (before deadtime insertion) channel (n+1) output (before deadtime insertion) channel (n) output (after deadtime insertion) channel (n+1) output (after deadtime insertion)
Figure 37-230. Example of the Deadtime Insertion (ELSnB:ELSnA = 1:0, POL(n) = 0, and POL(n+1) = 0) when the Deadtime Delay Is Comparable To Channel (n+1) Duty Cycle
FTM counter
channel (n) match
channel (n) output (before deadtime insertion) channel (n+1) output (before deadtime insertion) channel (n) output (after deadtime insertion) channel (n+1) output (after deadtime insertion)
Figure 37-231. Example of the Deadtime Insertion (ELSnB:ELSnA = 1:0, POL(n) = 0, and POL(n+1) = 0) when the Deadtime Delay Is Comparable To Channels (n) and (n+1) Duty Cycle
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 999
Functional Description
FTM counter
CHnOM bit
The following table shows the output mask result before the polarity control.
Table 37-244. Output Mask Result for Channel (n) (Before the Polarity Control)
CHnOM 0 Output Mask Input inactive state active state 1 inactive state active state Output Mask Result inactive state active state inactive state
Note It is expected the output mask feature be used only in combine mode.
Functional Description
(FFVAL[3:0] 0000) and (FFLTRnEN*) synchronizer 0 FLTnPOL fault input polarity control fault input n* value
D CLK
D CLK
FAULTFn*
* where n = 3, 2, 1, 0
If the fault control and fault input n are enabled and a rising edge at the fault input n signal is detected, then the FAULTFn bit is set. The FAULTF bit is the logic OR of FAULTFn[3:0] bits (see the following figure).
fault input 0 value fault input 1 value fault input 2 value fault input 3 value
FAULTIN
If the fault control is enabled (FAULTM[1:0] 0:0), a fault condition has occurred (rising edge at the logic OR of the enabled fault inputs) and (FAULTEN = 1), then channels (n) and (n+1) output are forced to their safe value (the channel (n) output is forced to the value of POL(n) and the channel (n+1) is forced to the value of POL(n+1)). The fault interrupt is generated when (FAULTF = 1) and (FAULTIE = 1). This interrupt request remains set until: Software clears the FAULTF bit (by reading FAULTF bit as 1 and writing 0 to it) Software clears the FAULTIE bit A reset occurs Note It is expected that the fault control be used only in combine mode.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1002 Freescale Semiconductor, Inc.
FTM counter
Functional Description
FTM counter
Note It is expected that the polarity control be used only in combine mode.
37.4.18 Initialization
The initialization forces the CHnOI bit value to the channel (n) output when a one is written to the INIT bit. The initialization depends on COMP and DTEN bits. The following table shows the values that channels (n) and (n+1) are forced by initialization when the COMP and DTEN bits are zero.
Table 37-245. Initialization Behavior when (COMP = 0 and DTEN = 0)
CH(n)OI 0 0 1 1 CH(n+1)OI 0 1 0 1 Channel (n) Output is forced to zero is forced to zero is forced to one is forced to one Channel (n+1) Output is forced to zero is forced to one is forced to zero is forced to one
The following table shows the values that channels (n) and (n+1) are forced by initialization when (COMP = 1) or (DTEN = 1).
Table 37-246. Initialization Behavior when (COMP = 1 or DTEN = 1)
CH(n)OI 0 1 CH(n+1)OI X X Channel (n) Output is forced to zero is forced to one Channel (n+1) Output is forced to one is forced to zero
Note It is expected that the initialization feature be used only in combine mode and with disabled FTM counter (see the description of the CLKS field in the Status and Control register).
Functional Description
CH(n)OC CH(n)OCV CH(n)OI CH(n+1)OI COMP(m) INV(m)EN CH(n+1)OC CH(n+1)OCV CH(n)OM DTEN(m) CH(n+1)OM FAULTEN(m) POL(n) POL(n+1)
inverting
deadtime insertion
output mask
fault control
NOTE The channels (n) and (n+1) are in output compare, EPWM, CPWM or combine modes.
Figure 37-237. Priority of the Features Used at the Generation of Channels (n) and (n+1) Outputs Signals
Note It is expected that the initialization feature (Initialization ) is not used with inverting (Inverting ) and software output control (Software Output Control ) features.
The FTM is able to generate multiple triggers in one PWM period. Since each trigger is generated for a specific channel, several channels are required to implement this functionality. This behavior is described in the following figure.
the beginning of new PWM cycles
MOD
FTM counter = C5V FTM counter = C4V
(a)
(b)
(c)
(d)
NOTE
(a) CH0TRIG = 0, CH1TRIG = 0, CH2TRIG = 0, CH3TRIG = 0, CH4TRIG = 0, CH5TRIG = 0 (b) CH0TRIG = 1, CH1TRIG = 0, CH2TRIG = 0, CH3TRIG = 0, CH4TRIG = 0, CH5TRIG = 0 (c) CH0TRIG = 0, CH1TRIG = 0, CH2TRIG = 0, CH3TRIG = 1, CH4TRIG = 1, CH5TRIG = 1 (d) CH0TRIG = 1, CH1TRIG = 1, CH2TRIG = 1, CH3TRIG = 1, CH4TRIG = 1, CH5TRIG = 1
Note It is expected that the channel match trigger be used only in combine mode.
Functional Description
The FTM counter is automatically updated with the CNTIN register value by the selected counting mode. When there is a write to CNT register When there is the FTM counter synchronization (FTM Counter Synchronization ) If (CNT = CNTIN), (CLKS[1:0] = 0:0), and a value different from zero is written to CLKS[1:0] bits The following figures show the cases.
CNTIN = 0x0000 MOD = 0x000F CPWMS = 0
system clock FTM counter 0x0C 0x0D 0x0E 0x0F 0x00 0x01 0x02 0x03 0x04 0x05
initialization trigger
Figure 37-239. Initialization Trigger Is Generated When the FTM Counting Achieves the CNTIN Register Value
CNTIN = 0x0000 MOD = 0x000F CPWMS = 0
system clock FTM counter 0x04 0x05 0x06 0x00 0x01 0x02 0x03 0x04 0x05 0x06
Figure 37-240. Initialization Trigger Is Generated When There Is a Write to CNT Register
system clock FTM counter 0x04 0x05 0x06 0x07 0x00 0x01 0x02 0x03 0x04 0x05
Figure 37-241. Initialization Trigger Is Generated When There Is the FTM Counter Synchronization
CNTIN = 0x0000 MOD = 0x000F CPWMS = 0
system clock FTM counter 00 0x00 0x01 0x02 0x03 0x04 0x05 01
Figure 37-242. Initialization Trigger Is Generated If (CNT = CNTIN), (CLKS[1:0] = 0:0), and a Value Different From Zero Is Written to CLKS[1:0] Bits
The initialization trigger output provides a trigger signal that is used for on-chip modules. Note It is expected that the initialization trigger be used only in combine mode.
Functional Description
When the capture test mode is enabled (CAPTEST = 1), the FTM counter is frozen and any write to CNT register updates directly the FTM counter (see the following figure). After it was written, all CnV registers are updated with the written value to CNT register and CHnF bits are set. Therefore, the FTM counter is updated with its next value according to its configuration (its next value depends on CNTIN, MOD, and the written value to FTM counter). The next reads of CnV registers return the written value to the FTM counter and the next reads of CNT register return FTM counter next value.
FTM counter clock
set CAPTEST
clear CAPTEST
0x78AD
0x78AE0x78AF 0x78B0
0x78AC
NOTE - FTM counter configuration: (FTMEN = 1), (QUADEN = 0), (CAPTEST = 1), (CPWMS = 0), (CNTIN = 0x0000), and (MOD = 0xFFFF) - FTM channel n configuration: input capture mode - (DECAPEN = 0), (COMBINE = 0), and (MSnB:MSnA = 0:0)
37.4.23 DMA
The channel generates a DMA transfer request according to DMA and CHnIE bits (see the following table).
Table 37-247. Channel DMA Transfer Request
DMA 0 0 CHnIE 0 1 Channel DMA Transfer Request The channel DMA transfer request is not gener ated. The channel DMA transfer request is not gener ated. Channel Interrupt The channel interrupt is not generated. The channel interrupt is generated if (CHnF = 1).
If DMA = 1, the CHnF bit is cleared either by channel DMA transfer done or reading CnSC while CHnF is set and then writing a zero to CHnF bit according to CHnIE bit (see the following table).
Table 37-248. Clear CHnF Bit when DMA = 1
CHnIE 0 1 How CHnF Bit Can Be Cleared CHnF bit is cleared either when the channel DMA transfer is done or by reading CnSC while CHnF is set and then writing a 0 to CHnF bit. CHnF bit is cleared when the channel DMA transfer is done.
FTMEN DECAPEN DECAP MS(n)A ELS(n)B:ELS(n)A ELS(n+1)B:ELS(n+1)A Dual edge capture mode logic
Q Filter* 1
system clock
CLK
CLK
* Filtering function for dual edge capture mode is only available in the channels 0 and 2
FTM counter
The MS(n)A bit defines if the dual edge capture mode is one-shot or continuous.
Functional Description
The ELS(n)B:ELS(n)A bits select the edge that is captured by channel (n), and ELS(n +1)B:ELS(n+1)A bits select the edge that is captured by channel (n+1). If both ELS(n)B:ELS(n)A and ELS(n+1)B:ELS(n+1)A bits select the same edge, then it is the period measurement. If these bits select different edges, then it is a pulse width measurement. In the dual edge capture mode, only channel (n) input is used and channel (n+1) input is ignored. If the selected edge by channel (n) bits is detected at channel (n) input, then CH(n)F bit is set and the channel (n) interrupt is generated (if CH(n)IE = 1). If the selected edge by channel (n+1) bits is detected at channel (n) input and (CH(n)F = 1), then CH(n+1)F bit is set and the channel (n+1) interrupt is generated (if CH(n+1)IE = 1). The C(n)V register stores the value of FTM counter when the selected edge by channel (n) is detected at channel (n) input. The C(n+1)V register stores the value of FTM counter when the selected edge by channel (n+1) is detected at channel (n) input. In this mode, the pair channels coherency mechanism ensures coherent data when the C(n)V and C(n+1)V registers are read. The only requirement is that C(n)V must be read before C(n+1)V. Note The CH(n)F, CH(n)IE, MS(n)A, ELS(n)B, and ELS(n)A bits are channel (n) bits. The CH(n+1)F, CH(n+1)IE, MS(n+1)A, ELS(n+1)B, and ELS(n+1)A bits are channel (n+1) bits. It is expected that the dual edge capture mode be used with ELS(n)B:ELS(n)A = 0:1 or 1:0, ELS(n+1)B:ELS(n+1)A = 0:1 or 1:0 and the FTM counter in free running counter mode (Free Running Counter ).
In this mode, the DECAP bit is automatically cleared by FTM when the edge selected by channel (n+1) is captured. Therefore, while DECAP bit is set, the one-shot capture is in process. When this bit is cleared, both edges were captured and the captured values are ready for reading in the C(n)V and C(n+1)V registers. Similarly, when the CH(n+1)F bit is set, both edges were captured and the captured values are ready for reading in the C(n)V and C(n+1)V registers.
Functional Description
measurement of next positive polarity pulse width. The CH(n)F bit is set when the first edge of this pulse is detected, that is, the edge selected by ELS(n)B:ELS(n)A bits. The CH(n+1)F bit is set and DECAP bit is cleared when the second edge of this pulse is detected, that is, the edge selected by ELS(n+1)B:ELS(n+1)A bits. Both DECAP and CH(n+1)F bits indicate when two edges of the pulse were captured and the C(n)V and C(n+1)V registers are ready for reading.
4 8 7 6 5 9 10 13 11 14 17 12 15 18 21 16 19 22 25 20 23 26
FTM counter
1
3 2
24 27
28
DECAPEN bit
set DECAPEN
DECAP bit
set DECAP
15
19
10
16
20
22
24
problem 1 problem 2
Note - The commands set DECAPEN, set DECAP, clear CH(n)F, and clear CH(n+1)F are made by the user. - Problem 1: channel (n) input = 1, set DECAP, not clear CH(n)F, and clear CH(n+1)F. - Problem 2: channel (n) input = 1, set DECAP, not clear CH(n)F, and not clear CH(n+1)F.
Figure 37-245. Dual Edge Capture One-Shot Mode for Positive Polarity Pulse Width Measurement
The following figure shows an example of the dual edge capture continuous mode used to measure the positive polarity pulse width. The DECAPEN bit selects the dual edge capture mode, so it keeps set in all operation mode. While the DECAP bit is set the configured measurements are made. The CH(n)F bit is set when the first edge of the positive polarity pulse is detected, that is, the edge selected by ELS(n)B:ELS(n)A bits.
The CH(n+1)F bit is set when the second edge of this pulse is detected, that is, the edge selected by ELS(n+1)B:ELS(n+1)A bits. The CH(n+1)F bit indicates when two edges of the pulse were captured and the C(n)V and C(n+1)V registers are ready for reading.
4 8 7 6 5 9 10 13 11 14 17 12 15 18 21 16 19 22 25 20 23 26
FTM counter
1
3 2
24 27
28
DECAPEN bit
set DECAPEN
DECAP bit
set DECAP
11
15
19
21
23
10
12
16
20
22
24
Note - The commands set DECAPEN, set DECAP, clear CH(n)F, and clear CH(n+1)F are made by the user.
Figure 37-246. Dual Edge Capture Continuous Mode for Positive Polarity Pulse Width Measurement
Functional Description
The period measurement can be made in one-shot capture mode (One-Shot Capture Mode ) or continuous capture mode (Continuous Capture Mode ). The following figure shows an example of the dual edge capture one-shot mode used to measure the period between two consecutive rising edges. The DECAPEN bit selects the dual edge capture mode, so it keeps set in all operation mode. The DECAP bit is set to enable the measurement of next period. The CH(n)F bit is set when the first rising edge is detected, that is, the edge selected by ELS(n)B:ELS(n)A bits. The CH(n+1)F bit is set and DECAP bit is cleared when the second rising edge is detected, that is, the edge selected by ELS(n+1)B:ELS(n+1)A bits. Both DECAP and CH(n+1)F bits indicate when two selected edges were captured and the C(n)V and C(n+1)V registers are ready for reading.
4 8 7 6 5 9 10 13 11 14 17 16 15 18 21 19 22 25
FTM counter
1
3 2
12
20 23
24 27 26
28
DECAPEN bit
set DECAPEN
DECAP bit
set DECAP
14
17
18
20
27
15
18
20
23
26
problem 1
problem 2
problem 3
Note - The commands set DECAPEN, set DECAP, clear CH(n)F, and clear CH(n+1)F are made by the user. - Problem 1: channel (n) input = 0, set DECAP, not clear CH(n)F, and not clear CH(n+1)F. - Problem 2: channel (n) input = 1, set DECAP, not clear CH(n)F, and clear CH(n+1)F. - Problem 3: channel (n) input = 1, set DECAP, not clear CH(n)F, and not clear CH(n+1)F.
Figure 37-247. Dual Edge Capture One-Shot Mode to Measure of the Period Between Two Consecutive Rising Edges
The following figure shows an example of the dual edge capture continuous mode used to measure the period between two consecutive rising edges. The DECAPEN bit selects the dual edge capture mode, so it keeps set in all operation mode. While the DECAP bit is set the configured measurements are made. The CH(n)F bit is set when the first rising edge is detected, that is, the edge selected by ELS(n)B:ELS(n)A bits. The CH(n+1)F bit is set when the second rising edge is detected, that is, the edge selected by ELS(n +1)B:ELS(n+1)A bits. The CH(n+1)F bit indicates when two edges of the period were captured and the C(n)V and C(n+1)V registers are ready for reading.
4 8 7 6 5 9 10 13 11 14 17 12 15 18 21 16 19 22 25 20 23 26
FTM counter
1
3 2
24 27
28
DECAPEN bit
set DECAPEN
DECAP bit
set DECAP
10 11
12
14 15
16
18 19 20 21 22 23
24
26
10 11 12
13
15 16
17
19 20 21 22 23 24
25
27
Note - The commands set DECAPEN, set DECAP, clear CH(n)F, and clear CH(n+1)F are made by the user.
Figure 37-248. Dual Edge Capture Continuous Mode to Measure of the Period Between Two Consecutive Rising Edges
Functional Description
dual edge capture continuous mode for positive polarity pulse width measurement. Thus, the channel (n) is configured to capture the FTM counter value when there is a rising edge at channel (n) input signal, and channel (n+1) to capture the FTM counter value when there is a falling edge at channel (n) input signal. When a rising edge occurs in the channel (n) input signal, the FTM counter value is captured into channel (n) capture buffer. The channel (n) capture buffer value is transferred to C(n)V register when a falling edge occurs in the channel (n) input signal. C(n)V register has the FTM counter value when the previous rising edge occurred, and the channel (n) capture buffer has the FTM counter value when the last rising edge occurred. When a falling edge occurs in the channel (n) input signal, the FTM counter value is captured into channel (n+1) capture buffer. The channel (n+1) capture buffer value is transferred to C(n+1)V register when the C(n)V register is read. In the following figure, the read of C(n)V returns the FTM counter value when the event 1 occurred and the read of C(n+1)V returns the FTM counter value when the event 2 occurred. C(n)V register must be read prior to C(n+1)V register in dual edge capture one-shot and continuous modes for the read coherency mechanism works properly.
event 1
event 2
2
event 3
event 4
4
event 5
5
event 6
event 7
event 8
event 9
9
C(n)V
channel (n+1) capture buffer
C(n+1)V
read C(n)V
read C(n+1)V
MOD
system clock
FTM counter
enable up/down
FTM counter
PHBFLTREN
direction
CH1FVAL[3:0]
synchronizer
TOFDIR
QUADIR
0 phase B input
D CLK Q D CLK Q
Note It is important to notice that the FTM counter is clocked by the phase A and B input signals when quadrature decoder mode is selected. Therefore it is expected that the quadrature decoder be used only with the FTM channels in input capture or output compare modes. The PHAPOL bit selects the polarity of the phase A input, and the PHBPOL bit selects the polarity of the phase B input.
Functional Description
The QUADMODE selects the encoding mode used in the quadrature decoder mode. If QUADMODE = 1, then the count and direction encoding mode (see the following figure) is enabled. In this mode, the phase B input value indicates the counting direction (FTM counter increment or decrement), and the phase A input defines the counting rate (FTM counter is updated when there is a rising edge at phase A input signal).
phase B (counting direction)
+1 +1 +1 +1 +1 +1 +1 +1 -1 -1 -1 -1 -1
FTM counter
MOD
CNTIN 0x0000
Time
If QUADMODE = 0, then the phase A and phase B encoding mode (see the following figure) is enabled. In this mode, the relationship between phase A and B signals indicates the counting direction, and phase A and B signals define the counting rate (FTM counter is updated when there is an edge either at the phase A or phase B signals). If PHAPOL = 0 and PHBPOL = 0, then the FTM counter increment happens when: there is a rising edge at phase A signal and phase B signal is at logic zero; there is a rising edge at phase B signal and phase A signal is at logic one; there is a falling edge at phase B signal and phase A signal is at logic zero; there is a falling edge at phase A signal and phase B signal is at logic one; and the FTM counter decrement happens when: there is a falling edge at phase A signal and phase B signal is at logic zero; there is a falling edge at phase B signal and phase A signal is at logic one; there is a rising edge at phase B signal and phase A signal is at logic zero; there is a rising edge at phase A signal and phase B signal is at logic one.
+1 +1 +1 +1 +1 +1 +1
+1
-1 -1 -1 -1 -1 -1
-1 +1 +1 +1 +1 +1 +1 +1
+1
-1 -1 -1 -1 -1 -1
-1 +1 +1 +1 +1 +1 +1 +1
FTM counter
MOD
CNTIN 0x0000
Time
The following figure shows the FTM counter overflow in up counting. In this case, when the FTM counter changes from MOD to CNTIN, TOF and TOFDIR bits are set. TOF bit indicates the FTM counter overflow occurred. TOFDIR indicates the counting was up when the FTM counter overflow occurred.
phase A
+1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1
FTM counter
MOD
CNTIN 0x0000 set TOF set TOFDIR set TOF set TOFDIR
Time
Figure 37-253. FTM Counter Overflow in Up Counting for Quadrature Decoder Mode
The following figure shows the FTM counter overflow in down counting. In this case, when the FTM counter changes from CNTIN to MOD, TOF bit is set and TOFDIR bit is cleared. TOF bit indicates the FTM counter overflow occurred. TOFDIR indicates the counting was down when the FTM counter overflow occurred.
Functional Description
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
FTM counter
MOD
CNTIN 0x0000 set TOF clear TOFDIR set TOF clear TOFDIR
Time
Figure 37-254. FTM Counter Overflow in Down Counting for Quadrature Decoder Mode
FTM counter
MOD
CNTIN
0x0000
Time
The following figure shows motor jittering produced by the phase B and A pulses respectively. The first highlighted transition causes a jitter on the FTM counter value near the maximum count value (MOD). The second indicated transition occurs on phase A and causes the FTM counter transition between the maximum and minimum count values which are defined by MOD and CNTIN registers.
phase A phase B
FTM counter
MOD
CNTIN 0x0000
Time
Figure 37-256. Motor Position Jittering Near Maximum and Minimum Count Value
The appropriate settings of the phase A and phase B input filters are important to avoid glitches that may cause oscillation on the FTM counter value. The preceding figures show examples of oscillations that can be caused by poor input filter setup. Thus, it is important to guarantee a minimum pulse width to avoid these oscillations.
Functional Description
Table 37-249. FTM Behavior When the Chip Is in BDM Mode (continued)
BDMMODE 10 FTM Counter Stopped CH(n)F Bit FTM Channels Output is not set The channels outputs are frozen when the chip enters in BDM mode Functional mode Writes to MOD, CNTIN, and C(n)V Registers Writes to these registers bypass the registers buffers Functional mode
11
Functional mode
can be set
Note that if BDMMODE[1:0] = 2b00 then the channels outputs remain at the value when the chip enters in BDM mode, since the FTM counter is stopped. However, the following situations modify the channels outputs in this BDM mode. Write any value to CNT register (Counter Reset ). In this case, the FTM counter is updated with the CNTIN register value and the channels outputs are updated to the initial value except for those channels set to output compare mode. FTM counter is reset by PWM synchronization mode (FTM Counter Synchronization ). In this case, the FTM counter is updated with the CNTIN register value and the channels outputs are updated to the initial value except for channels in output compare mode. In the channels outputs initialization (Initialization ), the channel (n) output is forced to the CH(n)OI bit value when the value 1 is written to INIT bit. Note It is expected that the BDMMODE[1:0] = 2b00 is not used with the fault control (Fault Control ). Even if the fault control is enabled and a fault condition exists, the channels outputs values are as defined above.
After enabling the loading points, the LDOK bit needs to be set for the load to occur. In this case the load occurs at the next enabled loading point according to the following conditions: If a new value was written to the MOD register, then the MOD register is updated with its write buffer value. If a new value was written to the CNTIN register and CNTINC = 1, then the CNTIN register is updated with its write buffer value. If a new value was written to the C(n)V register and SYNCENm = 1 where m indicates the pair channels (n) and (n+1), then the C(n)V register is updated with its write buffer value. If a new value was written to the C(n+1)V register and SYNCENm = 1 where m indicates the pair channels (n) and (n+1), then the C(n+1)V register is updates with its write buffer value.
FTM counter = MOD FTM counter = C7V FTM counter = C6V FTM counter = C5V FTM counter = C4V FTM counter = C3V FTM counter = C2V FTM counter = C1V FTM counter = C0V
(b) LDOK = 1, CH0SEL = 0, CH1SEL = 0, CH2SEL = 0, CH3SEL = 0, CH4SEL = 0, CH5SEL = 0, CH6SEL = 0, CH7SEL = 0
(c) LDOK = 0, CH0SEL = 0, CH1SEL = 0, CH2SEL = 0, CH3SEL = 1, CH4SEL = 0, CH5SEL = 0, CH6SEL = 0, CH7SEL = 0
(d) LDOK = 1, CH0SEL = 0, CH1SEL = 0, CH2SEL = 0, CH3SEL = 0, CH4SEL = 0, CH5SEL = 0, CH6SEL = 1, CH7SEL = 0
(e) LDOK = 1, CH0SEL = 1, CH1SEL = 0, CH2SEL = 1, CH3SEL = 0, CH4SEL = 1, CH5SEL = 0, CH6SEL = 1, CH7SEL = 0
(f) LDOK = 1, CH0SEL = 1, CH1SEL = 1, CH2SEL = 1, CH3SEL = 1, CH4SEL = 1, CH5SEL = 1, CH6SEL = 1, CH7SEL = 1
Functional Description
NOTE If ELSjB and ELSjA bits are different from zero, then the channel (j) output signal is generated according to the configured output mode. If ELSjB and ELSjA bits are zero, then the generated signal is not available on channel (j) output. If CHjIE = 1, then the channel (j) interrupt is generated when the channel (j) match occurs. At the intermediate load neither the channels outputs nor the FTM counter are changed. Software must set the intermediate load at a safe point in time. It is expected that the intermediate load feature be used only in combine mode.
FTM module B
FTM counter enable
gtb_in
example glue logic
gtb_in
gtb_out
GTBEOUT bit
gtb_out
The GTB functionality is implemented by the GTBEEN and GTBEOUT bits in the CONF register, the internal input signal gtb_in and the internal output signal gtb_out. The GTBEEN bit enables gtb_in to control the FTM counter enable signal: If GTBEEN = 0, each one of FTM modules works independently according to their configured mode. If GTBEEN = 1, the FTM counter update is enabled only when gtb_in is 1.
In the configuration described in the preceding figure, FTM modules A and B have their FTM counters enabled if at least one of the gtb_out signals from one of the FTM modules is 1. There are several possible configurations for the interconnection of the gtb_in and gtb_out signals (represented by the example glue logic shown in the figure). Note that these configurations are chip-dependent and implemented outside of the FTM modules. See the Chip Configuration details for the chip's specific implementation. NOTE In order to use the internal GTB signals to synchronize the FTM counter of different FTM modules, the configuration of each FTM module should guarantee that its FTM counter starts counting as soon as the gtb_in signal is 1. The GTB feature does not provide continuous synchronization of FTM counters, meaning that the FTM counters may lose synchronization during FTM operation. The GTB feature only allows the FTM counters to start their operation synchronously.
Reset Overview
When the FTM exits from reset: the FTM counter and the prescaler counter are zero and are stopped (CLKS[1:0] = 00b); the timer overflow interrupt is zero (Timer Overflow Interrupt ); the channels interrupts are zero (Channel (n) Interrupt ); the fault interrupt is zero (Fault Interrupt ); the channels are in input capture mode (Input Capture Mode ); the channels outputs are zero; the channels pins are not controlled by FTM (ELS(n)B:ELS(n)A = 0:0) ( ). The following figure shows the FTM behavior after the reset. At the reset (item 1), the FTM counter is disabled (see the description of the CLKS field in the Status and Control register), its value is updated to zero and the pins are not controlled by FTM ( ). After the reset, the FTM should be configurated (item 2). It is necessary to define the FTM counter mode, the FTM counting limits (MOD and CNTIN registers value), the channels mode and CnV registers value according to the channels mode. Thus, it is recommended to write any value to CNT register (item 3). This write updates the FTM counter with the CNTIN register value and the channels output with its initial value (except for channels in output compare mode) (Counter Reset ). The next step is to select the FTM counter clock by the CLKS[1:0] bits (item 4). It is important to highlight that the pins are only controlled by FTM when CLKS[1:0] bits are different from zero ( ).
(1) FTM reset (3) write any value to CNT register (4) write 1 to SC[CLKS]
XXXX XX
0x0000 00
0x0010
NOTES: CNTIN = 0x0010 Channel (n) is in low-true combine mode with CNTIN < C(n)V < C(n+1)V < MOD C(n)V = 0x0015
Figure 37-259. FTM Behavior After Reset When the Channel (n) Is in Combine Mode
The following figure shows an example when the channel (n) is in output compare mode and the channel (n) output is toggled when there is a match. In the output compare mode, the channel output is not updated to its initial value when there is a write to CNT register
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1028 Freescale Semiconductor, Inc.
(item 3). In this case, it is recommended to use the software output control (Software Output Control ) or the initialization (Initialization ) to update the channel output to the selected value (item 4).
(4) use of software output control or initialization to update the channel output to the zero
(1) FTM reset (3) write any value to CNT register (5) write 1 to SC[CLKS]
XXXX XX
0x0000 00
0x0010
NOTES: CNTIN = 0x0010 Channel (n) is in output compare and the channel (n) output is toggled when there is a match C(n)V = 0x0014
Figure 37-260. FTM Behavior After Reset When the Channel (n) Is in Output Compare Mode
FTM Interrupts
interrupts I
Triggers
Signal Description
38.1.2 Features
The main features of this block are: Timers can generate DMA trigger pulses Timers can generate interrupts All interrupts are maskable Independent timeout periods for each timer
PIT Module Control Register (PIT_MCR) Timer Load Value Register (PIT_LDVAL0) Current Timer Value Register (PIT_CVAL0) Timer Control Register (PIT_TCTRL0)
Timer Flag Register (PIT_TFLG0) Timer Load Value Register (PIT_LDVAL1) Current Timer Value Register (PIT_CVAL1) Timer Control Register (PIT_TCTRL1) Timer Flag Register (PIT_TFLG1) Timer Load Value Register (PIT_LDVAL2) Current Timer Value Register (PIT_CVAL2) Timer Control Register (PIT_TCTRL2) Timer Flag Register (PIT_TFLG2) Timer Load Value Register (PIT_LDVAL3) Current Timer Value Register (PIT_CVAL3) Timer Control Register (PIT_TCTRL3) Timer Flag Register (PIT_TFLG3)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
MDIS 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
FRZ 0
Freeze Allows the timers to be stopped when the device enters debug mode. 0 1 Timers continue to run in debug mode. Timers are stopped in debug mode.
TSV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Chapter 38 Periodic Interrupt Timer (PIT) Addresses: PIT_CVAL0 4003_7000h base + 104h offset = 4003_7104h PIT_CVAL1 4003_7000h base + 114h offset = 4003_7114h PIT_CVAL2 4003_7000h base + 124h offset = 4003_7124h PIT_CVAL3 4003_7000h base + 134h offset = 4003_7134h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TVL
TEN 0
TIE
Functional Description
0 TIF 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
38.4.1 General
This section gives detailed information on the internal operation of the module. Each timer can be used to generate trigger pulses as well as to generate interrupts. Each interrupt is available on a separate interrupt line.
38.4.1.1 Timers
The timers generate triggers at periodic intervals, when enabled. They load their start values, as specified in their LDVAL registers, then count down until they reach 0. Then they load their respective start value again. Each time a timer reaches 0, it will generate a trigger pulse and set the interrupt flag. All interrupts can be enabled or masked (by setting the TIE bits in the TCTRL registers). A new interrupt can be generated only after the previous one is cleared. If desired, the current counter value of the timer can be read via the CVAL registers. The counter period can be restarted, by first disabling, then enabling the timer with the TEN bit (see the following figure).
Timer Enabled Start Value = p1 Trigger Event p1 p1 p1 p1 Disable Timer Re-Enable Timer
The counter period of a running timer can be modified, by first disabling the timer, setting a new load value and then enabling the timer again (see the following figure).
Timer Enabled Start Value = p1 Trigger Event p1 p1 p2 p2 p2 Disable Re-Enable Timer, Timer Set new Load Value
It is also possible to change the counter period without restarting the timer by writing the LDVAL register with the new load value. This value will then be loaded after the next trigger event (see the following figure).
Timer Enabled Start Value = p1 Trigger Event p1 p1 p1 p2 p2 New Start Value p2 set
38.4.2 Interrupts
All of the timers support interrupt generation. Refer to the MCU specification for related vector addresses and priorities. Timer interrupts can be enabled by setting the TIE bits. The timer interrupt flags (TIF) are set to 1 when a timeout occurs on the associated timer, and are cleared to 0 by writing a 1 to that TIF bit.
The 50 MHz clock frequency equates to a clock period of 20 ns. Timer 1 needs to trigger every 5.12 ms/20 ns = 256000 cycles and timer 3 every 30 ms/20 ns = 1500000 cycles. The value for the LDVAL register trigger is calculated as: LDVAL trigger = (period / clock period) -1 This means LDVAL1 should be written with 0x0003E7FF, and LDVAL3 should be written with 0x0016E35F. The interrupt for Timer 1 is enabled by setting TIE in the TCTRL1 register. The timer is started by writing 1 to bit TEN in the TCTRL1 register. Timer 3 shall be used only for triggering. Therefore Timer 3 is started by writing a 1 to bit TEN in the TCTRL3 register, bit TIE stays at 0. The following example code matches the described setup:
// turn on PIT PIT_MCR = 0x00; // Timer 1 PIT_LDVAL1 = 0x0003E7FF; // setup timer 1 for 256000 cycles PIT_TCTRL1 = TIE; // enable Timer 1 interrupts PIT_TCTRL1 |= TEN; // start Timer 1 // Timer 3 PIT_LDVAL3 = 0x0016E35F; // setup timer 3for 1500000 cycles PIT_TCTRL3 |= TEN; // start Timer 3
39.1.1 Features
The LPTMR module's features include: 16-bit time counter or pulse counter with compare Optional interrupt can generate asynchronous wakeup from any low power mode Hardware trigger output Counter supports free-running mode or reset on compare Configurable clock source for prescaler/glitch filter Configurable input source for pulse counter Rising edge or falling edge
Low Power Timer Control Status Register (LPTMR0_CSR) Low Power Timer Prescale Register (LPTMR0_PSR) Low Power Timer Compare Register (LPTMR0_CMR) Low Power Timer Counter Register (LPTMR0_CNR)
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reset
Timer Interrupt Enable When the Timer Interrupt Enable is set, the LPTMR Interrupt is generated whenever the Timer Compare Flag is also set. 0 1 Timer Interrupt Disabled. Timer Interrupt Enabled.
54 TPS
Timer Pin Select The Timer Pin Select configures the input source to be used in Pulse Counter mode. The Timer Pin Select should only be altered when the LPTMR is disabled. 00 01 10 11 CMP0 output is selected. Pin LPTMR_ALT1 is selected. Pin LPTMR_ALT2 is selected. Pin LPTMR_ALT3 is selected. Table continues on the next page...
Timer Free Running Counter When clear the Timer Free Running Counter configures the LPTMR Counter Register to reset whenever the Timer Compare Flag is set. When set, the Timer Free Running Counter configures the LPTMR Counter Register to reset on overflow. The Timer Free Running Counter should only be altered when the LPTMR is disabled. 0 1 LPTMR Counter Register is reset whenever the Timer Compare Flag is set. LPTMR Counter Register is reset on overflow.
1 TMS
Timer Mode Select The Timer Mode Select configures the mode of the LPTMR. The Timer Mode Select should only be altered when the LPTMR is disabled. 0 1 Time Counter mode. Pulse Counter mode.
0 TEN
Timer Enable When the Timer Enable bit is clear, it resets the LPTMR internal logic (including the LPTMR Counter Register and Timer Compare Flag). When the Timer Enable bit is set, the LPTMR is enabled. When writing 1 to this bit, bits LPTMR_CSR[5:1] should not be altered. 0 1 LPTMR is disabled and internal logic is reset. LPTMR is enabled.
PBYP 0
0 PRESCALE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PCS 0 0
Prescaler Bypass When the Prescaler Bypass is set the selected prescaler clock (in Time Counter mode) or selected input source (in Pulse Counter mode) directly clocks the LPTMR Counter Register. When the Prescaler Bypass is clear, the LPTMR Counter Register is clocked by the output of the prescaler/glitch filter. The Prescaler Bypass should only be altered when the LPTMR is disabled. 0 1 Prescaler/Glitch Filter is enabled. Prescaler/Glitch Filter is bypassed.
10 PCS
COMPARE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
COUNTER
Functional description
Enable the clock source prior to the LPTMR using it. (LPO is always enabled.)
In pulse counter mode with the prescaler/glitch filter bypassed, the selected input source directly clocks the LPTMR counter register and no other clock source is required. To minimize power in this case, configure the prescaler clock source for a disabled clock (such as the internal reference clock which is disabled in low leakage modes).
Functional description
The LPTMR counter register will increment each time the glitch filter output asserts. In pulse counter mode, the maximum rate at which the LPTMR counter register can increment is once every 22 to 216 prescaler clock edges. When first enabled, the glitch filter will wait an additional one or two prescaler clock edges due to synchronization logic.
When the LPTMR is enabled, the LPTMR compare register can only be altered when the timer compare flag is set. When updating the LPTMR compare register, the LPTMR compare register must be written and the timer compare flag must be cleared before the LPTMR counter has incremented past the new LPTMR compare value.
The LPTMR counter register is reset when the LPTMR is disabled or if the counter register overflows. If the CSR[TFC] control bit is set then the LPTMR counter register is also reset whenever the CSR[TCF] status flag is set. The LPTMR counter register continues incrementing when the core is halted in debug mode. The LPTMR counter register cannot be initialized, but can be read at any time. Reading the LPTMR counter register at the same time as it is incrementing may return invalid data due to synchronization of the read data bus. If it is necessary for software to read the LPTMR counter register, it is recommended that two read accesses are performed and software verifies that the same data was returned for both reads.
Functional description
40.2 Features
The features of this module include: Four modes of operation Time; with independent control of high and low times Baseband Frequency shift key (FSK) Direct software control of CMT_IRO signal Extended space operation in time, baseband, and FSK modes
Block Diagram
Selectable input clock divider Interrupt on end of cycle Ability to disable CMT_IRO signal and use as timer interrupt
Modulator
CMT_IRO
CMT Registers
CMT Interrupts
Peripheral bus
Time -- When operating in time mode, the user independently defines the high and low times of the carrier signal to determine both period and duty cycle. Baseband -- When MSC[BASE] bit is set, the carrier output (fcg) to the modulator is held high continuously to allow for the generation of baseband protocols. Frequency shift key (FSK) -- This mode allows the carrier generator to alternate between two sets of high and low times . When operating in FSK mode, the generator will toggle between the two sets when instructed by the modulator, allowing the user to dynamically switch between two carrier frequencies without CPU intervention. A summary of the CMT modes is shown in the following table.
Table 40-1. CMT Modes of Operation
Mode MSC[MC GEN] 1 Time 1 MSC[BAS MSC[FSK E] ] 2 0
(2)
MSC[EXS Comment PC] fcg controlled by primary high and low registers.
fcg transmitted to CMT_IRO signal when modulator gate is open. fcg is always high. CMT_IRO signal high when modulator gate is open. fcg control alternates between primary high/low registers and secondary high/low registers. fcg transmitted to CMT_IRO signal when modulator gate is open. Setting MSC[EXSPC] bit causes subsequent modulator cy cles to be spaces (modulator out not asserted) for the dura tion of the modulator period (mark and space times). OC[IROL] bit controls state of CMT_IRO signal.
Baseband
FSK
1 0
X X
X X
1 X
1. To prevent spurious operation, initialize all data and control registers before beginning a transmission (MSC[MCGEN]=1). 2. These bits are not double buffered and should not be changed during a transmission (while MSC[MCGEN]=1).
NOTE The assignment of module modes to core modes is chipspecific. For module-to-core mode assignments, see the chapter that describes how modules are configured.
CMT Carrier Generator High Data Register 1 (CMT_CGH1) CMT Carrier Generator Low Data Register 1 (CMT_CGL1) CMT Carrier Generator High Data Register 2 (CMT_CGH2) CMT Carrier Generator Low Data Register 2 (CMT_CGL2) Table continues on the next page...
CMT Output Control Register (CMT_OC) CMT Modulator Status and Control Register (CMT_MSC) CMT Modulator Data Register Mark High (CMT_CMD1) CMT Modulator Data Register Mark Low (CMT_CMD2) CMT Modulator Data Register Space High (CMT_CMD3) CMT Modulator Data Register Space Low (CMT_CMD4) CMT Primary Prescaler Register (CMT_PPS) CMT Direct Memory Access (CMT_DMA)
PH x* x* x* x*
PL x* x* x* x*
SH x* x* x* x*
SL x* x* x* x*
IROL 0
CMTPOL 0
IROPEN 0 0 0
6 CMTPOL
IRO Pin Enable The IROPEN bit is used to enable and disable the CMT_IRO signal. When CMT_IRO signal is enabled, it is an output that drives out either the CMT transmitter output or the state of the IROL bit depending on whether MSC[MCGEN] bit is set or not. Also, the state of the output is either inverted or not depending on the state of the CMTPOL bit. When CMT_IRO signal is disabled, it is in a high impedance state so as not to draw any current. This signal is disabled during reset. 0 1 CMT_IRO signal disabled CMT_IRO signal enabled as output
40 Reserved
This read-only bitfield is reserved and always has the value zero.
EOCF
CMTDIV 0 0
EXSPC 0
BASE 0
FSK 0
EOCIE 0
MCGEN 0
CMT Clock Divide Prescaler The Secondary Prescaler causes the CMT to be clocked at the IF signal frequency, or the IF frequency divided by 2 ,4, or 8. Since these bits are not double buffered, they should not be changed during a transmission. 00 01 10 11 IF 1 IF 2 IF 4 IF 8
4 EXSPC
Extended Space Enable The EXSPC bit enables extended space operation. 0 1 Extended space disabled Extended space enabled
3 BASE
Baseband Enable When set, the BASE bit disables the carrier generator and forces the carrier output high for generation of baseband protocols. When BASE is cleared, the carrier generator is enabled and the carrier output toggles at the frequency determined by values stored in the carrier data registers. This bit is cleared by reset. This bit is not double buffered and should not be written to during a transmission. 0 1 Baseband mode disabled Baseband mode enabled
2 FSK
FSK Mode Select The FSK bit enables FSK operation. 0 1 CMT operates in Time or Baseband mode CMT operates in FSK mode
1 EOCIE
End of Cycle Interrupt Enable A CPU interrupt will be requested when EOCF is set if EOCIE is high. 0 1 CPU interrupt disabled CPU interrupt enabled
0 MCGEN
Modulator and Carrier Generator Enable Table continues on the next page...
MB[15:8] x* x* x* x*
MB[7:0] x* x* x* x*
SB[15:8] x* x* x* x*
SB[7:0] x* x* x* x*
PPSDIV 0 0 0 0 0 0
Functional Description
DMA 0 0 0 0
Primary Prescaler
if_clk_enable
Secondary Prescaler
divider_enable
For compatibility with previous versions of CMT, when bus clock = 8 MHz, the PPS should be configured to zero. The PPS counter is selected according to the bus clock to generate an intermediate frequency approximately equal to 8 MHz.
00 01 10 11
The possible duty cycle options depend upon the number of counts required to complete the carrier period. For example, 1.6 MHz signal has a period of 625 ns and will therefore require 5 x 125 ns counts to generate. These counts may be split between high and low times, so the duty cycles available will be 20% (one high, four low), 40% (two high, three low), 60% (three high, two low) and 80% (four high, one low). For lower frequency signals with larger periods, higher resolution (as a percentage of the total period) duty cycles are possible.
Functional Description
The carrier signal is generated by counting a register-selected number of input clocks (125 ns for an 8 MHz bus) for both the carrier high time and the carrier low time. The period is determined by the total number of clocks counted. The duty cycle is determined by the ratio of high time clocks to total clocks counted. The high and low time values are user programmable and are held in two registers. An alternate set of high/low count values is held in another set of registers to allow the generation of dual frequency FSK (frequency shift keying) protocols without CPU intervention. Note Only non-zero data values are allowed. The carrier generator will not work if any of the count values are equal to zero. MSC[MCGEN] bit must be set and MSC[BASE] bit must be cleared to enable carrier generator clocks. When MSC[BASE] bit is set, the carrier output to the modulator is held high continuously. Following figure represents the block diagram of the clock generator.
SECONDARY HIGH COUNT REGISTER PRIMARY HIGH COUNT REGISTER
=?
CMTCLK
BASE
FSK
MCGEN
CLK CLR
8-BIT UP COUNTER
=?
The high/low time counter is an 8-bit up counter. After each increment, the contents of the counter are compared with the appropriate high or low count value register. When the compare value is reached, the counter is reset to a value of 0x01, and the compare is redirected to the other count value register.
Assuming that the high time count compare register is currently active, a valid compare will cause the carrier output to be driven low. The counter will continue to increment (starting at reset value of 0x01). When the value stored in the selected low count value register is reached, the counter will again be reset and the carrier output will be driven high. The cycle repeats, automatically generating a periodic signal which is directed to the modulator . The lowest frequency (maximum period) and highest frequency (minimum period) which can be generated are defined as: fmax = fCMTCLK (2 x 1) Hz fmin = fCMTCLK (2 x (28 1)) Hz In the general case, the carrier generator output frequency is: fcg = fCMTCLK (Highcount + Lowcount) Hz Where: 0 < Highcount < 256 and 0 < Lowcount < 256 The duty cycle of the carrier signal is controlled by varying the ratio of high time to low + high time. As the input clock period is fixed, the duty cycle resolution will be proportional to the number of counts required to generate the desired carrier period.
40.7.3 Modulator
The modulator block controls the state of the infrared out signal (IRO) . The modulator output is gated on to the IRO signal when the modulator/carrier generator is enabled . When the modulator/carrier generator is disabled, the IRO signal is controlled by the state of the IRO latch. OC[CMTPOL] enables the IRO signal to be active high or active low. In CMT modes, the modulator functions as givenbelow: In Time mode, the modulator can gate the carrier onto the modulator output. In Baseband mode, the modulator can control the logic level of the modulator output. In FSK mode, the modulator can count carrier periods and instruct the carrier generator to alternate between two carrier frequencies whenever a modulation period (mark + space counts) expires.
Functional Description
The modulator provides a simple method to control protocol timing. The modulator has a minimum resolution of 1.0 s with an 8 MHz . It can count bus clocks (to provide realtime control) or it can count carrier clocks (for self-clocked protocols). The modulator includes a 17-bit down counter with underflow detection. The counter is loaded from the 16-bit modulation mark period buffer registers, CMD1 and CMD2. The most significant bit is loaded with a logic zero and serves as a sign bit. When the counter holds a positive value, the modulator gate is open and the carrier signal is driven to the transmitter block. When the counter underflows, the modulator gate is closed and a 16-bit comparator is enabled which compares the logical complement of the value of the down counter with the contents of the modulation space period register which has been loaded from the registers, CMD3 and CMD4. When a match is obtained, the cycle repeats by opening the modulator gate, reloading the counter with the contents of CMD1 and CMD2, and reloading the modulation space period register with the contents of CMD3 and CMD4. The activation of modulation space period is done when the carrier signal is low to prohibit cutting off the high pulse of a carrier signal. If the carrier signal is high, the modulator extends the mark period until the carrier signal become low. To de-assert the space period and assert the mark period, the carrier signal must have gone low to assure that a space period is not erroneously shortened. Should the contents of the modulation space period register be all zeroes, the match will be immediate and no space period will be generated (for instance, for FSK protocols that require successive bursts of different frequencies). MSC[MCGEN] must be set to enable the modulator timer.
1 6 B IT S 0
MODE
CMTCMD1:CMTCMD2
8
CLOCK CONTROL 17-BIT DOWN COUNTER *
CO UNTER
16
LO AD =?
M S B IT
MODULATOR OUT
16
FSK
EXSPC
BASE
CMTCMD3:CMTCMD4
1 6 B IT S
Functional Description
CMTCLK
C A R R IE R O U T (fcg)
M O DULATO R G ATE
MARK
SPACE
MARK
Figure 40-17. Example: CMT Output in Time and Baseband Modes with OC[CMTPOL]=0
MODULATOR GATE
MARK1
SPACE1
MARK2
SPACE2
MARK1
SPACE1
MARK2
IR O SIGNAL
Functional Description
CPU. If necessary, software should maintain tracking of the current modulation cycle (primary or secondary). The extended space period ends at the completion of the space period time of the modulation period during which MSC[EXSPC] bit is cleared. If MSC[EXSPC] bit was set during a primary modulation cycle, use the equation: texspace = (tspace)p + (tmark + tspace)s + (tmark + tspace)p +... Where the subscripts p and s refer to mark and space times for the primary and secondary modulation cycles. If MSC[EXSPC] bit was set during a secondary modulation cycle, use the equation: texspace = (tspace)s + (tmark + tspace)p + (tmark + tspace)s +...
MSC[EOCF] is set when: The modulator is not currently active and MSC[MCGEN] bit is set to begin the initial CMT transmission At the end of each modulation cycle (when the counter is reloaded from CMD1:CMD2) while MSC[MCGEN] bit is set In the case where MSC[MCGEN] bit is cleared and then set before the end of the modulation cycle, MSC[EOCF] bit will not be set when MSC[MCGEN] is set, but will become set at the end of the current modulation cycle. When MSC[MCGEN] becomes disabled, the CMT module does not set the EOC flag at the end of the last modulation cycle.
If MSC[EOCIE] bit is high when MSC[EOCF] bit is set, the CMT module will generate an interrupt request or a DMA transfer request. MSC[EOCF] bit must be cleared to prevent from being generated another event (interrupt or DMA request) after exiting the service routine. See following table.
Table 40-19. How to clear MSC[EOCF] bit
DMA[DM A] 0 1 MSC[EOCIE] X X Description MSC[EOCF] bit is cleared by reading the CMT modulator status and control register MSC followed by an access of CMD2 or CMD4. MSC[EOCF] bit is cleared by the CMT DMA transfer done.
The EOC interrupt is coincident with loading the down-counter with the contents of CMD1:CMD2 and loading the space period register with the contents of CMD3:CMD4. The EOC interrupt provides a means for the user to reload new mark/space values into the modulator data registers. Modulator data register updates will take effect at the end of the current modulation cycle. Note that the down-counter and space period register are updated at the end of every modulation cycle, irrespective of interrupt handling and the state of the EOCF flag.
Register definition
RTC Time Seconds Register (RTC_TSR) RTC Time Prescaler Register (RTC_TPR) RTC Time Alarm Register (RTC_TAR) RTC Time Compensation Register (RTC_TCR) RTC Control Register (RTC_CR)
RTC Status Register (RTC_SR) RTC Lock Register (RTC_LR) RTC Chip Configuration Register (RTC_CCR) RTC Write Access Register (RTC_WAR) RTC Read Access Register (RTC_RAR)
TSR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Register definition
TPR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TAR 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
CIC
TCV
CIR 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TCR 0 0 0 0 0
2316 TCV
158 CIR
70 TCR
Register definition
OSCE
SC16P
CLKO
SC2P
SC4P
SC8P
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 SC4P
Oscillator 4pF load configure 0 1 Disable the load. Enable the additional load.
11 SC8P
Oscillator 8pF load configure 0 1 Disable the load. Enable the additional load.
10 SC16P
Oscillator 16pF load configure 0 1 Disable the load. Enable the additional load.
9 CLKO
Clock Output 0 1 The 32kHz clock is output to other peripherals The 32kHz clock is not output to other peripherals
8 OSCE
Oscillator Enable 0 1 32.768 kHz oscillator is disabled. 32.768 kHz oscillator is enabled. After setting this bit, wait the oscillator startup time before enabling the time counter to allow the 32.768 kHz clock time to stabilize.
74 Reserved
This read-only bitfield is reserved and always has the value zero. Table continues on the next page...
SWR 0
WPE
SUP
UM
Supervisor Access 0 1 Supervisor write access only. Non-supervisor write accesses are allowed.
1 WPE
Wakeup Pin Enable 0 1 Wakeup pin is disabled. Wakeup pin is enabled and wakeup pin asserts if the SR[TIF], SR[TOF] or SR[TAF] is set and the system is powered down. The wakeup pin is not available on all devices.
0 SWR
Software Reset 0 1 No effect. Resets all RTC registers except for the SWR bit. The SWR bit is cleared after VBAT POR and software reset.
Reset
Bit R W
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
TCE 0 0 0 0 0 0
TAF
TOF
TIF
Reset
Register definition
This read-only bit is reserved and always has the value zero. Time Alarm Flag Time alarm flag is set when the TAR[TAR] equals the TSR[TSR] and the TSR[TSR] increments. This bit is cleared by writing a value to the TAR register. This flag cannot be disabled and always generates an interrupt. 0 1 Time alarm has not occurred. Time alarm has occurred.
1 TOF
Time Overflow Flag Time overflow flag is set when the time counter is enabled and overflows. The TSR and TPR do not increment and read as zero when this bit is set. This bit is cleared by writing a value to the TSR register. This flag cannot be disabled and always generates an interrupt. 0 1 Time overflow has not occurred. Time overflow has occurred and time counter is read as zero.
0 TIF
Time Invalid Flag Time invalid flag is set on V BAT POR, software reset or test mode entry. The TSR and TPR do not increment and read as zero when this bit is set. This bit is cleared by writing to the TSR register when the time counter is disabled. This flag cannot be disabled and always generates an interrupt. 0 1 Time is valid. Time is invalid and time counter is read as zero.
CRL
SRL
TCL
Control Register Lock Once cleared, this bit can only be set by V BAT POR or software reset. 0 1 Control register is locked and writes are ignored. Control register is not locked and writes complete as normal.
3 TCL
Time Compensation Lock Once cleared, this bit can only be set by V BAT POR or software reset. 0 1 Time compensation register is locked and writes are ignored. Time compensation register is not locked and writes complete as normal.
20 Reserved
This read-only bitfield is reserved and always has the value one.
CONFIG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Register definition
TPRW 1
Lock Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Writes to the lock register are ignored. Writes to the lock register complete as normal.
5 SRW
Status Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Writes to the status register are ignored. Writes to the status register complete as normal.
4 CRW
Control Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Writes to the control register are ignored. Writes to the control register complete as normal.
3 TCRW
Time Compensation Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Writes to the time compensation register are ignored. Writes to the time compensation register complete as normal.
2 TARW
Time Alarm Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. Table continues on the next page...
TSRW 1
CCRW
TCRW
TARW
CRW
SRW
LRW
Time Prescaler Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Writes to the time prescaler register are ignored. Writes to the time prescaler register complete as normal.
0 TSRW
Time Seconds Register Write Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Writes to the time seconds register are ignored. Writes to the time seconds register complete as normal.
CCRR
TCRR
TARR 1
TPRR 1
Lock Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Reads to the lock register are ignored. Reads to the lock register complete as normal.
5 SRR
Status Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. Table continues on the next page...
TSRR 1
CRR
SRR
LRR
Functional description
Control Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Reads to the control register are ignored. Reads to the control register complete as normal.
3 TCRR
Time Compensation Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Reads to the time compensation register are ignored. Reads to the time compensation register complete as normal.
2 TARR
Time Alarm Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Reads to the time alarm register are ignored. Reads to the time alarm register complete as normal.
1 TPRR
Time Prescaler Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Reads to the time prescaler register are ignored. Reads to the time prescaler register complete as normal.
0 TSRR
Time Seconds Register Read Once cleared, this bit is only set by system reset. It is not affected by V BAT POR or software reset. 0 1 Reads to the time seconds register are ignored. Reads to the time seconds register complete as normal.
The RTC includes its own analog POR block, which generates a power-on-reset signal whenever the RTC module is powered up and initializes all RTC registers to their default state. The RTC also contains its own software reset control bit which also initializes all RTC registers. An attempt to access any RTC register (except the access control registers) when VBAT is powered down or when VBAT POR is asserted, will result in a bus error.
41.3.3 Compensation
The compensation logic alters the number of 32.768 kHz clock cycles it takes for the prescaler register to overflow and increment the seconds counter. The time compensation value is used to adjust the number of clock cycles between -127 and +128. Cycles are added or subtracted from the prescaler register when the prescaler register equals 0x3FFF and then increments. The compensation Interval is used to adjust the frequency at which the time compensation value is used (between once a second to once every 256 seconds).
Functional description
Updates to the compensation register will not take effect until the next time the seconds register updates and provided the previous compensation interval has expired. When the compensation interval is set to other than once a second then the compensation is applied in the first second interval and the remaining second intervals will receive no compensation. Compensation is disabled by configuring the time compensation to zero.
41.3.4 Alarm
The alarm register and SR[TAF] allow RTC to generate an interrupt at a predefined time. The 32-bit clock alarm register is compared with the 32-bit seconds register. The SR[TAF] will set when the alarm register equals the seconds register and the seconds register increments. The alarm flag is cleared by writing the alarm register with the next value.
Functional description
41.3.9 Interrupt
The RTC Interrupt is asserted whenever the SR[TIF], SR[TOF] or SR[TAF] flags are set. It is also asserted when the VBAT power supply is powered down. The RTC Interrupt can wakeup the device from any low power mode.
42.1.1 USB
The USB is a cable bus that supports data exchange between a host computer and a wide range of simultaneously accessible peripherals. The attached peripherals share USB bandwidth through a host-scheduled, token-based protocol. The bus allows peripherals to be attached, configured, used, and detached while the host and other peripherals are in operation. USB software provides a uniform view of the system for all application software, hiding implementation details making application software more portable. It manages the dynamic attach and detach of peripherals. There is only one host in any USB system. The USB interface to the host computer system is referred to as the Host Controller. There may be multiple USB devices in any system such as joysticks, speakers, printers, etc. USB devices present a standard USB interface in terms of comprehension, response, and standard capability.
Introduction
The host initiates transactions to specific peripherals, while the device responds to control transactions. The device sends and receives data to and from the host using a standard USB data format. USB 2.0 full-speed /low-speed peripherals operate at 12Mb/s or 1.5 Mb/s. For additional information, refer to the USB 2.0 specification.
Host PC
External Hub External Hub Host Software Root Hub USB Cable
USB Cable
USB Cable
USB Cables
USB Peripherals
For additional information, refer to the On-The-Go Supplement to the USB 2.0 Specification.
Programmers Interface
BDT_PAGE Registers
END_POINT
IN
ODD
000
Start of Buffer
Buffer in Memory
describes transfers that move data from memory to the USB. The following table shows how the data direction corresponds to the USB token type in host and target device applications.
Programmers Interface
When a USB token on an enabled endpoint is received, the USB-FS uses its integrated DMA controller to interrogate the BDT. The USB-FS reads the corresponding endpoint BD entry to determine if it owns the BD and corresponding buffer in system memory. To compute the entry point in to the BDT, the BDT_PAGE registers is concatenated with the current endpoint and the TX and ODD fields to form a 32-bit address. This address mechanism is shown in the following diagrams:
Table 42-2. BDT Address Calculation Fields
Field BDT_PAGE END_POINT TX ODD Description BDT_PAGE registers in the Control Register Block END POINT field from the USB TOKEN 1 for an TX transmit transfers and 0 for an RX receive transfers This bit is maintained within the USB-FS SIE. It corresponds to the buffer currently in use. The buf fers are used in a ping-pong fashion.
RSVD
Programmers Interface
0 The microprocessor has exclusive access to the BD. The USB-FS ignores all other fields in the BD. 1 USB-FS has exclusive access to the BD. After the BD has been assigned to the USB-FS, the microprocessor should not change it in any way.
6 DATA0/1 5 KEEP/ TOK_PID[3] This bit defines if a DATA0 field (DATA0/1=0) or a DATA1 (DATA0/1=1) field was transmitted or received. It is unchanged by the USB-FS. Typically this bit is set (that is, 1) with ISO endpoints feeding a FIFO. The microprocessor is not informed that a token has been processed, the data is simply transferred to or from the FIFO. If KEEP is set, normally the NINC bit is also set to prevent address increment.
0 Bit 3 of the current token PID is written back in to the BD by the USB-FS. Allows the USB-FS to release the BD when a token has been processed. 1 This bit is unchanged by the USB-FS. If the OWN bit also is set, the BD remains owned by the USB-FS forever.
4 NINC/ TOK_PID[2]
0 1
The No Increment (NINC) bit disables the DMA engine address increment. This forces the DMA engine to read or write from the same address. This is useful for endpoints when data needs to be read from or written to a single location such as a FIFO. Typically this bit is set with the KEEP bit for ISO endpoints that are interfacing to a FIFO.
the USB-FS writes bit 2 of the current token PID to the BD. This bit is unchanged by the USB-FS.
3 DTS/ TOK_PID[1] Setting this bit enables the USB-FS to perform Data Toggle Synchronization. If KEEP=0, bit 1 of the current token PID is written back to the BD. If KEEP=1, this bit is unchanged by the USB-FS.
0 Data Toggle Synchronization is disabled. 1 Enables the USB-FS to perform Data Toggle Synchronization.
Table continues on the next page...
0 No stall issued. 1 The BDT is not consumed by the SIE (the OWN bit remains set and the rest of the BDT is unchanged).
TOK_PID[n] Bits [5:2] can also represent the current token PID. The current token PID is written back in to the BD by the USB-FS when a transfer completes. The values written back are the token PID values from the USB specification: 0x1 for an OUT token. 0x9 for an IN token. 0xd for a SETUP token. In host mode, this field is used to report the last returned PID or a transfer status indication. The possible values returned are: 10 Reserved ADDR[31:0] The Address bits represent the 32 -bit buffer address in system memory. These bits are un changed by the USB-FS. 0x3 DATA0 0xb DATA1 0x2 ACK 0xe STALL 0xa NAK 0x0 Bus Timeout 0xf Data Error
Programmers Interface
5. When the microprocessor processes the TOK_DNE interrupt, it reads from the status register all the information needed to process the endpoint. 6. At this point, the microprocessor allocates a new BD so additional USB data can be transmitted or received for that endpoint, and then processes the last BD. The following figure shows a timeline of how a typical USB token is processed after the BDT is read and OWN=1.
USB RST USB_RST Interrupt Generated SETUP TOKEN DATA SOF SOF Interrupt Generated ACK TOK_DNE Interrupt Generated IN TOKEN DATA ACK TOK_DNE Interrupt Generated OUT TOKEN USB Host Function DATA ACK TOK_DNE Interrupt Generated
The USB has two sources for the DMA overrun error:
Memory Latency
The memory latency on the BVCI initiator interface may be too high and cause the receive FIFO to overflow. This is predominantly a hardware performance issue, usually caused by transient memory access issues.
Oversized Packets
The packet received may be larger than the negotiated MaxPacket size. Typically, this is caused by a software bug. For DMA overrun errors due to oversized data packets, the USB specification is ambiguous. It assumes correct software drivers on both sides. NAKing the packet can result in retransmission of the already oversized packet data. Therefore, in response to oversized packets, the USB core continues ACKing the packet for non-isochronous transfers.
For host mode, the TOK_DNE interrupt fires and the The packet length field written back to the BDT is the Max TOK_PID field of the BDT is 1111 to indicate the DMA Packet value that represents the length of the clipped data latency error. Host mode software can decide to retry actually written to memory. or move to next scheduled item. In device mode, the BDT is not written back nor is the TOK_DNE interrupt triggered because it is assumed that a second attempt is queued and will succeed in the future. From here, the software can decide an appropriate course of action for future transactions such as stalling the endpoint, can celing the transfer, disabling the endpoint, etc.
Peripheral ID Register (USB0_PERID) Peripheral ID Complement Register (USB0_IDCOMP) Peripheral Revision Register (USB0_REV) Peripheral Additional Info Register (USB0_ADDINFO) OTG Interrupt Status Register (USB0_OTGISTAT) OTG Interrupt Control Register (USB0_OTGICR) Table continues on the next page...
OTG Status Register (USB0_OTGSTAT) OTG Control Register (USB0_OTGCTL) Interrupt Status Register (USB0_ISTAT) Interrupt Enable Register (USB0_INTEN) Error Interrupt Status Register (USB0_ERRSTAT) Error Interrupt Enable Register (USB0_ERREN) Status Register (USB0_STAT) Control Register (USB0_CTL) Address Register (USB0_ADDR) BDT Page Register 1 (USB0_BDTPAGE1) Frame Number Register Low (USB0_FRMNUML) Frame Number Register High (USB0_FRMNUMH) Token Register (USB0_TOKEN) SOF Threshold Register (USB0_SOFTHLD) BDT Page Register 2 (USB0_BDTPAGE2) BDT Page Register 3 (USB0_BDTPAGE3) Endpoint Control Register (USB0_ENDPT0) Endpoint Control Register (USB0_ENDPT1) Endpoint Control Register (USB0_ENDPT2) Endpoint Control Register (USB0_ENDPT3) Table continues on the next page...
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
Endpoint Control Register (USB0_ENDPT4) Endpoint Control Register (USB0_ENDPT5) Endpoint Control Register (USB0_ENDPT6) Endpoint Control Register (USB0_ENDPT7) Endpoint Control Register (USB0_ENDPT8) Endpoint Control Register (USB0_ENDPT9) Endpoint Control Register (USB0_ENDPT10) Endpoint Control Register (USB0_ENDPT11) Endpoint Control Register (USB0_ENDPT12) Endpoint Control Register (USB0_ENDPT13) Endpoint Control Register (USB0_ENDPT14) Endpoint Control Register (USB0_ENDPT15) USB Control Register (USB0_USBCTRL) USB OTG Observe Register (USB0_OBSERVE) USB OTG Control Register (USB0_CONTROL) USB Transceiver Control Register 0 (USB0_USBTRC0)
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h C0h 50h 00h 00h
ID
NID
Chapter 42 Universal Serial Bus OTG Controller (USBOTG) Addresses: USB0_REV 4007_2000h base + 8h offset = 4007_2008h
Bit 7 6 5 4 3 2 1 0
REV
IRQNUM
IEHOST
Memory Map/Register Definitions Addresses: USB0_OTGISTAT 4007_2000h base + 10h offset = 4007_2010h
Bit 7 6 5 4 3 SESSVLDCHG 2 B_SESS_CHG 1 0
IDCHG 0
ONEMSEC 0
0
AVBUSCHG
IDEN 0
SESSVLDEN
BSESSEN 0
AVBUSEN 0
6 ONEMSECEN
1 millisecond interrupt enable 0 1 The 1msec timer interrupt is disabled. The 1msec timer interrupt is enabled.
5 LINESTATEEN
Line State change interrupt enable 0 1 The LINE_STAT_CHG interrupt is disabled. The LINE_STAT_CHG interrupt is enabled
4 Reserved 3 SESSVLDEN
This read-only bit is reserved and always has the value zero. Session valid interrupt enable 0 1 The SESSVLDCHG interrupt is disabled. The SESSVLDCHG interrupt is enabled.
2 BSESSEN
B Session END interrupt enable 0 1 The B_SESS_CHG interrupt is disabled The B_SESS_CHG interrupt is enabled
1 Reserved 0 AVBUSEN
This read-only bit is reserved and always has the value zero. A VBUS Valid interrupt enable 0 1 The AVBUSCHG interrupt is disabled The AVBUSCHG interrupt is enabled
LINESTATESTABLE
ONEMSECEN
0 SESS_VLD BSESSEND
0 AVBUSVLD
6 ONEMSECEN
This bit is reserved for the 1msec count, but it is not useful to software.
5 This bit indicates that the internal signals that control the LINE_STATE_CHG bit (bit 5) of the LINESTATESTABLE OTGISTAT register have been stable for at least 1 millisecond. First read the LINE_STATE_CHG bit, and then read this bit. If this bit reads as 1, then the value of LINE_STATE_CHG can be considered stable. 0 1 4 Reserved 3 SESS_VLD The LINE_STAT_CHG bit is not yet stable. The LINE_STAT_CHG bit has been debounced and is stable.
This read-only bit is reserved and always has the value zero. Session valid 0 1 The VBUS voltage is below the B session Valid threshold The VBUS voltage is above the B session Valid threshold.
2 BSESSEND
B Session END 0 1 The VBUS voltage is above the B session End threshold. The VBUS voltage is below the B session End threshold.
1 Reserved 0 AVBUSVLD
This read-only bit is reserved and always has the value zero. A VBUS Valid 0 1 The VBUS voltage is below the A VBUS Valid threshold. The VBUS voltage is above the A VBUS Valid threshold.
DPHIGH 0
DPLOW 0
DMLOW 0
OTGEN 0 0
6 Reserved 5 DPLOW
This read-only bit is reserved and always has the value zero. D+ Data Line pull-down resistor enable This bit should always be enabled together with bit 4 (DMLOW) 0 1 D+ pulldown resistor is not enabled. D+ pulldown resistor is enabled.
4 DMLOW
D- Data Line pull-down resistor enable 0 1 D- pulldown resistor is not enabled. D- pulldown resistor is enabled.
3 Reserved 2 OTGEN
This read-only bit is reserved and always has the value zero. On-The-Go pullup/pulldown resistor enable 0 If USB_EN is set and HOST_MODE is clear in the Control Register (CTL), then the D+ Data Line pullup resistors are enabled. If HOST_MODE is set the D+ and D- Data Line pull-down resistors are engaged. The pull-up and pull-down controls in this register are used.
1 10 Reserved
This read-only bitfield is reserved and always has the value zero.
STALL w1c 0
ATTACH w1c 0
RESUME w1c 0
SLEEP w1c 0
TOKDNE w1c 0
SOFTOK w1c 0
ERROR w1c 0
USBRST w1c 0
2 SOFTOK
1 ERROR 0 USBRST
STALLEN 0
ATTACHEN
RESUMEEN
SLEEPEN 0
TOKDNEEN
SOFTOKEN
ERROREN USBRSTEN 0 0
6 ATTACHEN
ATTACH Interrupt Enable 0 1 The ATTACH interrupt is not enabled. The ATTACH interrupt is enabled.
5 RESUMEEN
RESUME Interrupt Enable 0 1 The RESUME interrupt is not enabled. The RESUME interrupt is enabled.
4 SLEEPEN
SLEEP Interrupt Enable 0 1 The SLEEP interrupt is not enabled. The SLEEP interrupt is enabled.
3 TOKDNEEN
TOKDNE Interrupt Enable 0 1 The TOKDNE interrupt is not enabled. The TOKDNE interrupt is enabled.
2 SOFTOKEN
SOFTOK Interrupt Enable 0 1 The SOFTOK interrupt is not enabled. The SOFTOK interrupt is enabled.
1 ERROREN
ERROR Interrupt Enable 0 1 The ERROR interrupt is not enabled. The ERROR interrupt is enabled.
0 USBRSTEN
USBRST Interrupt Enable 0 1 The USBRST interrupt is not enabled. The USBRST interrupt is enabled.
Memory Map/Register Definitions Addresses: USB0_ERRSTAT 4007_2000h base + 88h offset = 4007_2088h
Bit 7 6 5 4 3 2 1 0
BTSERR w1c 0
DMAERR w1c
BTOERR w1c 0
DFN8 w1c 0
CRC16 w1c 0
CRC5EOF w1c 0
PIDERR w1c 0
4 BTOERR
Chapter 42 Universal Serial Bus OTG Controller (USBOTG) Addresses: USB0_ERREN 4007_2000h base + 8Ch offset = 4007_208Ch
Bit 7 6 5 4 3 2 1 0
BTSERREN 0
DMAERREN
BTOERREN
DFN8EN 0
CRC16EN 0
CRC5EOFEN
PIDERREN 0
6 Reserved 5 DMAERREN
This read-only bit is reserved and always has the value zero. DMAERR Interrupt Enable 0 1 The DMAERR interrupt is not enabled. The DMAERR interrupt is enabled.
4 BTOERREN
BTOERR Interrupt Enable 0 1 The BTOERR interrupt is not enabled. The BTOERR interrupt is enabled.
3 DFN8EN
DFN8 Interrupt Enable 0 1 The DFN8 interrupt is not enabled. The DFN8 interrupt is enabled.
2 CRC16EN
CRC16 Interrupt Enable 0 1 The CRC16 interrupt is not enabled. The CRC16 interrupt is enabled.
1 CRC5EOFEN
CRC5/EOF Interrupt Enable 0 1 The CRC5/EOF interrupt is not enabled. The CRC5/EOF interrupt is enabled.
0 PIDERREN
PIDERR Interrupt Enable 0 1 The PIDERR interrupt is not enabled. The PIDERR interrupt is enabled.
ENDP
TX
ODD
2 ODD 10 Reserved
this bit is set if the last Buffer Descriptor updated was in the odd bank of the BDT. This read-only bitfield is reserved and always has the value zero.
Chapter 42 Universal Serial Bus OTG Controller (USBOTG) Addresses: USB0_CTL 4007_2000h base + 94h offset = 4007_2094h
Bit 7 6 5 TXSUSPENDTOKENBUSY 4 3 2 1 0
HOSTMODEEN
JSTATE Write
SE0
RESET
RESUME
ODDRST
Reset
5 When the USB Module is in Host mode TOKEN_BUSY is set when the USB Module is busy TXSUSPENDTOKENBUSY executing a USB token and no more token commands should be written to the Token Register. Software should check this bit before writing any tokens to the Token Register to ensure that token commands are not lost. In Target mode TXD_SUSPEND is set when the SIE has disabled packet transmission and reception. Clearing this bit allows the SIE to continue token processing. This bit is set by the SIE when a Setup Token is received allowing software to dequeue any pending packet transactions in the BDT before resuming token processing. 4 RESET Setting this bit enables the USB Module to generate USB reset signaling. This allows the USB Module to reset USB peripherals. This control signal is only valid in Host mode (HOSTMODEEN=1). Software must set RESET to 1 for the required amount of time and then clear it to 0 to end reset signaling. For more information on RESET signaling see Section 7.1.4.3 of the USB specification version 1.0. When set to 1, this bit enables the USB Module to operate in Host mode. In host mode, the USB module performs USB transactions under the programmed control of the host processor. When set to 1 this bit enables the USB Module to execute resume signaling. This allows the USB Module to perform remote wake-up. Software must set RESUME to 1 for the required amount of time and then clear it to 0. If the HOSTMODEEN bit is set, the USB module appends a Low Speed End of Packet to the Resume signaling when the RESUME bit is cleared. For more information on RESUME signaling see Section 7.1.4.5 of the USB specification version 1.0. Setting this bit to 1 resets all the BDT ODD ping/pong bits to 0, which then specifies the EVEN BDT bank. USB Enable Setting this bit causes the SIE to reset all of its ODD bits to the BDTs. Therefore, setting this bit resets much of the logic in the SIE. When host mode is enabled, clearing this bit causes the SIE to stop sending SOF tokens. 0 The USB Module is disabled. 1 The USB Module is enabled.
3 HOSTMODEEN 2 RESUME
1 ODDRST 0 USBENSOFEN
USBENSOFEN 0
Read
LSEN 0 0 0 0
ADDR 0 0 0 0
60 ADDR
BDTBA 0 0 0 0
FRM[7:0] 0 0 0 0
FRM[10:8] 0 0 0 0 0
TOKENPID 0 0 0
TOKENENDPT 0 0 0
30 TOKENENDPT
This 4 bit field holds the Endpoint address for the token command. The four bit value written must be a valid endpoint.
CNT 0 0 0 0
BDTBA 0 0 0 0
BDTBA 0 0 0 0
Chapter 42 Universal Serial Bus OTG Controller (USBOTG) Addresses: 4007_2000h base + C0h offset + (4d n), where n = 0d to 15d
Bit 7 HOSTWOHUB 6 5 4 3 2 1 0
RETRYDIS 0
EPCTLDIS 0
EPRXEN 0
EPTXEN 0
EPSTALL 0
EPHSHK 0
6 RETRYDIS
0 EPHSHK
SUSP 1
PDE 1 0 0 0
6 PDE
Enables the weak pulldowns on the USB transceiver. 0 1 Weak pulldowns are disabled on D+ and DWeak pulldowns are enabled on D+ and D-.
50 Reserved
This read-only bitfield is reserved and always has the value zero.
DPPU
DPPD
DMPD
6 DPPD
Provides observability of the D+ Pull Down signal output from the USB OTG module. 0 1 D+ pulldown disabled. D+ pulldown enabled.
5 Reserved 4 DMPD
This read-only bit is reserved and always has the value zero. Provides observability of the D- Pull Down signal output from the USB OTG module. 0 1 D- pulldown disabled. D- pulldown enabled.
31 Reserved 0 Reserved
This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value zero.
Read
Write Reset 0 0 0
4 Provides control of the DP PULLUP in the USB OTG module, if USB is configured in non-OTG DPPULLUPNONOTG device mode. 0 1 30 Reserved DP Pull up in non-OTG device mode is not enabled. DP Pull up in non-OTG device mode is enabled.
This read-only bitfield is reserved and always has the value zero.
Read
USBRESMEN
0 1 0 0 0 0 0
SYNC_DET
This bit is reserved. NOTE: Software must set this bit to 1b.
5 USBRESMEN
Asynchronous Resume Interrupt Enable This bit, when set, allows the USB module to send an asynchronous wakeup event to the MCU upon detection of resume signaling on the USB bus. The MCU then re-enables clocks to the USB module. It is used for low-power suspend mode when USB module clocks are stopped or the USB transceiver is in Suspend mode. Async wakeup only works in device mode. 0 1 USB asynchronous wakeup from suspend mode disabled. USB asynchronous wakeup from suspend mode enabled. The asynchronous resume interrupt differs from the synchronous resume interrupt in that it asynchronously detects K-state using the unfiltered state of the D+ and D- pins. This interupt should only be enabled when the Transceiver is suspended.
42 Reserved 1 SYNC_DET
This read-only bitfield is reserved and always has the value zero. Synchronous USB Interrupt Detect 0 1 Synchronous interrupt has not been detected. Synchronous interrupt has been detected.
0 USB Asynchronous Interrupt USB_RESUME_ 0 No interrupt was generated. INT 1 Interrupt was generated because of the USB asynchronous interrupt.
Host mode is intended for use in handheld-portable devices to allow easy connection to simple HID class devices such as printers and keyboards. It is NOT intended to perform the functions of a full OHCI or UHCI compatible host controller found on PC motherboards. The USB-FS is not supported by Windows 98 as a USB host controller. Host mode allows bulk, Isochronous, interrupt and control transfers. Bulk data transfers are performed at nearly the full USB bus bandwidth. Support is provided for ISO transfers, but the number of ISO streams that can be practically supported is affected by the interrupt latency of the processor servicing the token during interrupts from the SIE. Custom drivers must be written to support Host mode operation. Setting the HOST_MODE_EN bit in the CTL register enables host Mode. The USB-FS core can only operate as a peripheral device or in Host Mode. It cannot operate in both modes simultaneously. When HOST_MODE is enabled, only endpoint zero is used. All other endpoints should be disabled by software.
6. Enable SOF packet to keep the connected device from going to suspend (CTL[USB_EN=1]). 7. Start enumeration by sending a sequence of device framework commands, device frame work packets to the default control pipe of the connected device. Refer to the Universal Serial Bus Revision 2.0 specification, "Chapter 9 USB Device Framework" (http://www.usb.org/developers/docs). To complete a control transaction to a connected device: 1. Complete all steps discover a connected device 2. Set up the endpoint control register for bidirectional control transfers EP_CTL0[4:0] = 0x0d. 3. Place a copy of the device framework setup command in a memory buffer. Refer to the Universal Serial Bus Revision 2.0 specification, "Chapter 9 USB Device Framework" (http://www.usb.org/developers/docs). 4. Initialize current (even or odd) TX EP0 BDT to transfer the 8 bytes of command data for a device framework command (for example, a GET DEVICE DESCRIPTOR). Set the BDT command word to 0x00080080 Byte count to 8, own bit to 1. Set the BDT buffer address field to the start address of the 8 byte command buffer. 5. Set the USB device address of the target device in the address register (ADDR[6:0]). After the USB bus reset, the device USB address is zero. It is set to some other value (usually 1) by the Set Address device framework command. 6. Write the token register with a SETUP to Endpoint 0 the target device default control pipe (TOKEN=0xD0). This initiates a setup token on the bus followed by a data packet. The device handshake is returned in the BDT PID field after the packets complete. When the BDT is written a token done (INT_STAT[TOK_DNE]) interrupt is asserted. This completes the setup phase of the setup transaction. Refer to the Universal Serial Bus Revision 2.0 specification, "Chapter 9 USB Device Framework" (http://www.usb.org/developers/docs). 7. To initiate the data phase of the setup transaction (for example, get the data for the GET DEVICE descriptor command) set up a buffer in memory for the data to be transferred. 8. Initialize the current (even or odd) TX EP0 BDT to transfer the data.
Set the BDT command word to 0x004000C0 Byte count to the length of the data buffer in this case 64, own bit to 1, Data toggle to Data1. Set the BDT buffer address field to the start address of the data buffer 9. Write the token register with a IN or OUT token to Endpoint 0 the target device default control pipe, an IN token for a GET DEVICE DESCRIPTOR command (TOKEN=0x90). This initiates an IN token on the bus followed by a data packet from the device to the host. When the data packet completes the BDT is written and a token done (INT_STAT[TOK_DNE]) interrupt is asserted. For control transfers with a single packet data phase this completes the data phase of the setup transaction. Refer to the Universal Serial Bus Revision 2.0 specification, "Chapter 9 USB Device Framework" (http://www.usb.org/developers/docs). 10. To initiate the Status phase of the setup transaction set up a buffer in memory to receive or send the zero length status phase data packet. 11. Initialize the current (even or odd) TX EP0 BDT to transfer the status data. Set the BDT command word to 0x00000080 Byte count to the length of the data buffer in this case 0, own bit to 1, Data toggle to Data0. Set the BDT buffer address field to the start address of the data buffer 12. Write the token register with a IN or OUT token to Endpoint 0 the target device default control pipe, an OUT token for a GET DEVICE DESCRIPTOR command (TOKEN=0x10). This initiates an OUT token on the bus followed by a zero length data packet from the host to the device. When the data packet completes the BDT is written with the handshake form the device and a token done (INT_STAT[TOK_DNE]) interrupt is asserted. This completes the data phase of the setup transaction. Refer to the Universal Serial Bus Revision 2.0 specification, "Chapter 9 USB Device Framework" (http://www.usb.org/developers/docs). To send a Full speed bulk data transfer to a target device: 1. Complete all steps discover a connected device and to configure a connected device. Write the ADDR register with the address of the target device. Typically, there is only one other device on the USB bus in host mode so it is expected that the address is 0x01 and should remain constant. 2. Write the ENDPT0 to 0x1D register to enable transmit and receive transfers with handshaking enabled. 3. Setup the Even TX EP0 BDT to transfer up to 64 bytes.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1129
On-The-Go Operation
4. Set the USB device address of the target device in the address register (ADDR[6:0]). 5. Write the TOKEN register with an OUT token to the desired endpoint. The write to this register triggers the USB-FS transmit state machines to begin transmitting the TOKEN and the data. 6. Setup the Odd TX EP0 BDT to transfer up to 64 bytes. 7. Write the TOKEN register with an OUT token as in step 4. Two Tokens can be queued at a time to allow the packets to be double buffered to achieve maximum throughput. 8. Wait for the TOK_DNE interrupt. This indicates one of the BDTs has been released back to the microprocessor and that the transfer has completed. If the target device asserts NAKs, the USB-FS continues to retry the transfer indefinitely without processor intervention unless the RETRY_DIS retry disable bit is set in the EP0 control register. If the retry disable bit is set, the handshake (ACK, NAK, STALL, or ERROR (0xf)) is returned in the BDT PID field. If a stall interrupt occurs, the pending packet must be dequeued and the error condition in the target device cleared. If a RESET interrupt occurs (SE0 for more than 2.5us), the target has detached. 9. After the TOK_DNE interrupt occurs, the BDTs can be examined and the next data packet queued by returning to step 2.
A_IDLE
B_IDLE
A_WAIT_VFALL
A_WAIT_VRISE
A_PERIPHERAL
A_WAIT_BCON
A_SUSPEND
A_HOST
Figure 42-91. Dual Role A Device Flow Diagram Table 42-94. State Descriptions for the Dual Role A Device Flow
State A_IDLE Action If ID Interrupt. The cable has been un-plugged or a Type B cable has been attach ed. The device now acts as a Type B device. If the A application wants to use the bus or if the B device is doing Go to A_WAIT_VRISE an SRP as indicated by an A_SESS_VLD Interrupt or Attach or Port Turn on DRV_VBUS Status Change Interrupt check data line for 5 10 msec pulsing. A_WAIT_VRISE If ID Interrupt or if A_VBUS_VLD is false after 100 msec The cable has been changed or the A device cannot support the current required from the B device. If A_VBUS_VLD interrupt A_WAIT_BCON Go to A_WAIT_VFALL Turn off DRV_VBUS Go to A_WAIT_BCON Response Go to B_IDLE
After 200 msec without Attach or ID Interrupt. (This could wait forev Go to A_WAIT_FALL er if desired.) Turn off DRV_VBUS A_VBUS_VLD Interrupt and B device attaches Go to A_HOST Turn on Host Mode Table continues on the next page...
On-The-Go Operation
Table 42-94. State Descriptions for the Dual Role A Device Flow (continued)
State A_HOST Action Enumerate Device determine OTG Support. If A_VBUS_VLD/ Interrupt or A device is done and doesn't think he wants to do something soon or the B device disconnects Go to A_WAIT_VFALL Turn off Host Mode Turn off DRV_VBUS If the A device is finished with session or if the A device wants to allow the B device to take bus. ID Interrupt or the B device disconnects A_SUSPEND If ID Interrupt, or if 150 msec B disconnect timeout (This timeout value could be longer) or if A_VBUS_VLD\ Interrupt If HNP enabled, and B disconnects in 150 msec then B device is becoming the host. If A wants to start another session A_PERIPHERAL If ID Interrupt or if A_VBUS_VLD interrupt Go to A_SUSPEND Go to A_WAIT_BCON Go to A_WAIT_VFALL Turn off DRV_VBUS Go to A_PERIPHERAL Turn off Host Mode Go to A_HOST Go to A_WAIT_VFALL Turn off DRV_VBUS. If 3 200 msec of Bus Idle Go to A_WAIT_BCON Turn on Host Mode A_WAIT_VFALL If ID Interrupt or (A_SESS_VLD/ & b_conn/) Go to A_IDLE Response
B_IDLE
A_IDLE
B_HOST
B_SRP_INIT
B_WAIT_ACON
B_PERIPHERAL
Figure 42-92. Dual Role B Device Flow Diagram Table 42-95. State Descriptions for the Dual Role B Device Flow
State B_IDLE Action If ID\ Interrupt. A Type A cable has been plugged in and the device should now re spond as a Type A device. If B_SESS_VLD Interrupt. The A device has turned on VBUS and begins a session. If B application wants the bus and Bus is Idle for 2 ms and the B_SESS_END bit is set, the B device can perform an SRP. Go to B_PERIPHERAL Turn on DP_HIGH Go to B_SRP_INIT Pulse CHRG_VBUS Pulse DP_HIGH 5-10 ms Go to B_IDLE Go to B_WAIT_ACON Turn off DP_HIGH Go to B_HOST Turn on Host Mode If ID\ Interrupt or B_SESS_VLD/ Interrupt If the cable changes or if VBUS goes away, the host doesn't sup port us. Go to B_IDLE If 3.125 ms expires or if a Resume occurs B_HOST If ID\ Interrupt or B_SESS_VLD\ Interrupt If the cable changes or if VBUS goes away, the host doesn't sup port us. If B application is done or A disconnects Go to B_PERIPHERAL Go to B_PERIPHERAL Go to B_IDLE Go to B_IDLE Response Go to A_IDLE
B_SRP_INIT B_PERIPHERAL
If ID\ Interrupt or SRP Done (SRP must be done in less than 100 msecs.) If HNP enabled and the bus is suspended and B wants the bus, the B device can become the host. If A connects, an attach interrupt is received
B_WAIT_ACON
On-The-Go Operation
Introduction
43.1.3 Glossary
The following table shows a glossary of terms used in this document.
Table 43-2. Glossary of Terms
Term Transceiver PHY Attached Connected Suspended Component Definition Module that implements the physical layer of the USB standard (FS or LS only) Module that implements the physical layer of the USB standard (HS capable) Device is physically plugged into USB port but has not enabled either D+ or D- pullup resistor Device is physically plugged into USB port and has enabled either D+ or D- pullup resistor After 3 ms of no bus activity the USB device enters suspend mode. The hardware and software that make up a subsystem.
43.2 Introduction
The USBDCD module works with the USB transceiver to detect if the USB device is attached to a charging port (either a dedicated charging port or a charging host). System software coordinates the detection activites of the module and controls an off-chip integrated circuit that performs the battery charging.
Digital Block
Bus interface & registers
Analog Block
Voltage Comparator Control and Feedback
Timer Unit
Current Sink
D+ D-
Current Source
D- pulldown enable
Voltage Source
The USBDCD module consists of 2 main blocks: A digital block provides the programming interface (memory-mapped registers) and includes the timer unit and the analog control unit. An analog block provides the circuitry for the physical detection of the charger, including the voltage source, current source, current sink, and voltage comparator circuitry.
43.2.2 Features
The USBDCD module offers the following features: Compliant with the latest industry standard specification: USB Battery Charging Specification, Revision 1.1 Programmable timing parameters default to values required by the industry standards: Having standard default values allows for minimal configuration: Set the clock frequency before enabling the module. Programmability allows for flexibility to meet future udpates to the standards.
Introduction
1. The effect of setting the SR bit is immediate; that is, the module is disabled even if the sequence has not completed.
1. Voltage must be 3.3v +/- 10% for full functionality of the module. That is, the charger detection function does not work when this voltage is below 3.0v, and the CONTROL[START] bit should not be set.
NOTE The transceiver module also interfaces to usb_dm and usb_dp. Both modules and the USB host/hub use these signal as bidirectional, tri-state signals. Information about the signal integrity aspects of the lines including shielding, isolated return paths, input or output impedance, packaging, suggested external components, ESD, and other protections can be found in the USB 2.0 specification and in Application Information.
0 START
0 IE
SR 0
15
Reset
Bit R
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
1
0
IF Reserved
0 IACK
Reset
Start Change Detection Sequence Determines whether the charger detection sequence is initiated. 0b0 0b1 Do not start the sequence. Writes of this value have no effect. Initiate the charger detection sequence. If the sequence is already running, writes of this value have no effect.
2317 Reserved 16 IE
This read-only bitfield is reserved and always has the value zero. Interrupt Enable Enables/disables interrupts to the system. 0b0 0b1 Disable interrupts to the system. Enable interrupts to the system.
159 Reserved 8 IF
This bitfield is reserved. Interrupt Flag Determines whether an interrupt is pending 0b0 0b1 No interrupt is pending. An interrupt is pending.
71 Reserved 0 IACK
This read-only bitfield is reserved and always has the value zero. Interrupt Acknowledge Determines whether the interrupt is cleared. 0b0 0b1 Do not clear the interrupt. Clear the IF bit (interrupt flag).
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
CLOCK_SPEED
W
Reset
112 Numerical Value of Clock Speed in Binary CLOCK_SPEED The unit of measure is programmed in CLOCK_UNIT. The valid range is from 1 to 1023 when clock unit is MHz and 4 to 1023 when clock unit is KHz. Examples with CLOCK_UNIT = 1: For 48 MHz: 0b00_0011_0000 (48) (Default) For 24 MHz: 0b00_0001_1000 (24) Examples with CLOCK_UNIT = 0: For 100 kHz: 0b00_0110_0100 (100) For 500 kHz: 0b01_1111_0100 (500) 1 Reserved 0 CLOCK_UNIT This read-only bit is reserved and always has the value zero. Unit of measurement encoding for Clock Speed Specifies the unit of measure for the clock speed. 0b0 0b1 kHz Speed (between 1 kHz and 1023 kHz) MHz Speed (between 1 MHz and 1023 MHz)
CLOCK_ UNIT 1
TO
ERR
SEQ_STAT
SEQ_RES
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
Reserved
W
Reset
Timeout Flag Indicates whether the detection sequence has passed the timeout threshhold. 0b0 0b1 The detection sequence has not been running for over 1 s. It has been over 1 s since the data pin contact was detected and debounced.{
20 ERR
Error Flag Indicates whether there is an error in the detection sequence. 0b0 0b1 No sequence errors. Error in the detection sequence. See the SEQ_STAT field to determine the phase in which the error occurred. Table continues on the next page...
Charger Detection Sequence Results Reports how charger detection is attached. 0b00 0b01 0b10 No results to report. Attached to a standard host. Must comply with USB Spec 2.0 by drawing only 2.5mA (max) until connected. Attached to a charging port. The exact meaning depends on bit 18: 0: Attached to either a charging host or a dedicated charger (The charger type detection has not completed.) 1: Attached to a charging host (The charger type detection has completed.) Attached to a dedicated charger.
TSEQ_INIT 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
TUNITCON
43.4.5 USBDCD_TIMER1
Address: USBDCD_TIMER1 4003_5000h base + 14h offset = 4003_5014h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TDCD_DBNC 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0
TVDPSRC_ON 0 0 0 0 0 0 0 1 0 1 0 0 0
43.4.6 USBDCD_TIMER2
TIMER2 contains timing parameters. Note that register values can be written that are not compliant with the USB Battery Charging Specification v1.1, so care should be taken when overwriting the default values.
Address: USBDCD_TIMER2 4003_5000h base + 18h offset = 4003_5018h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TVDPSRC_CON 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0
CHECK_DM
2516 Time Period Before Enabling D+ Pullup TVDPSRC_CON Sets the amount of time (in ms) that the module waits after charging port detection before system software should enable the D+ pullup to connect to the USB host. Valid values are 1-1023, but the USB Battery Charging Specification requires a minimum value of 40 ms. 154 Reserved 30 CHECK_DM This read-only bitfield is reserved and always has the value zero. Time Before Check of D- Line Sets the amount of time (in ms) that the module waits after the device connects to the USB bus (software enables the D+ pullup) until checking the state of the D- line to determine the type of charging port. Valid values are 1-15ms.
VBUS
System Interrupt
USB Transceiver
USB Bus
USBDCD Module
D Pullup Enable
USB Controller
Battery Charger IC
Device
Figure 43-8. The USB Battery Charging Subsystem Table 43-13. USB Battery Charger Subsystem Components
Component Battery Charger IC Description The external battery charger IC regulates the charge rate to the rechargable bat tery. System software is responsible for communicating the appropriate charge rates. Charger Standard host port Charging host port Dedicated charging port Maximum Current Drawn1 up to 500 mA up to 1500 mA up to 1800 mA
1. If the USB host has suspended the USB device, system software must config ure the system to limit the current drawn from the USB bus to 2.5 mA or less. Comm Module System software USB Controller A communications module on the device can be used to control the charge rate of the battery charger IC. Coordinates the detection activities of the subsystem. The D+ pullup enable control signal plays a role during the charger type detec tion phase. System software must issue a command to the USB controller to as sert this signal. Once this pullup is enabled, the device is considered to be con nected to the USB bus. The host then attempts to enumerate it. Note that the USB controller must be used only for USB device applications when using the USBDCD module. For USB host applications the USBDCD mod ule must be disabled. Table continues on the next page...
Functional Description
1. If the USB host has suspended the USB device, system software must configure the system to limit the current drawn from the USB bus to 2.5 mA or less.
1
Charger Detection Phase
3
Data Pin Contact Detection
4
Charging Port Detection
5
Charger Type Detection
6
Timeout
T UNIT_CON_ELAPSED = T SEQ_INIT
V B U S a t p o rta b le U S B d e v ice
I DEV_HCHG_LFS I DEV_DCHG I SUSP 0m A I DP_SRC R DM_DWN
FullSpeed Portable USB Device
D e d ic a te d C h a rg e r
T UNIT_CON_ELAPSED
=1s
T SEQ_INIT
C h a rg in g H o s t
Dedicated Charger C h a rg in g H o s t
on o ff lgc_hi lgc_lo on o ff
TDCD_DBNC T VDPSRC_ON
D+
V DP_SRC I DM_SINK
CHECK_DM
1 ms
T VDPSRC_CON
D P_PU LLU P
on o ff C h a rg in g h o s t: VDAT_REF < VD- < VLGC Standard host: VD - < VDAT REF
T CON_IDPSNK_DIS
Dedicated Charging Port C h a rg in g H o s t P o rt, F S
D-
lgc_hi lgc_lo
I DP_SINK
Charging Host Port
on o ff
T VDMSRC_DIS
V DM_SRC
on o ff
T VDMSRC_EN
The following table provides an overview description of the charger detection sequence shown in the preceding figure.
Functional Description
Data Pin Contact The USBDCD module detects that the USB data pins D+ and D have made Detection contact with the USB port. Charging Port Detection Charger Type Detection Sequence Time out The USBDCD module detects if the port is a standard host or either type of charging port (charging host or dedicated charger). If attached to a charging port, detect which type. The USBDCD module did not finish the detection sequence within the timeout interval. The sequence will continue until halted by software.
Timing parameter values used in this module are listed in the following table.
Table 43-15. Timing Parameters for the Charger Detection Sequence
Parameter TDCD_DBNC1 TVDPSRC_ON1 TVDPSRC_CON
1
USB Battery Charging Spec Module Default 10 ms min (no max) 40 ms min (no max) 40 ms min (no max) N/A N/A 1s 1 - 20 ms 0 - 20 ms 0 - 20 ms 10 ms 40 ms 40 ms 1 ms 16 ms N/A From the USB host From the USB host From the USB host
Module Programmable Range 0 - 1023 ms 0 - 1023 ms 0 - 1023 ms 0 - 15 ms 0 - 1023 ms N/A N/A N/A N/A
recently plugged into a USB port, and drawing no more than 2.5 mA total system current from the USB bus. There are many allowable precursors to this set of initial conditions. For example, the device could have been powered down and subsequently powered up upon being plugged into the USB bus. Alternatively, the device could have been in a low power state that was exited due to the plugin event. Or, the device could have been operating in normal run mode, powered by a separate supply or non-rechargable battery.
Functional Description
Plug
VBUS D D+ GND
Receptacle
VBUS D D+ GND
As a result, when a portable USB device is attached to an upstream port, the portable USB device detects VBUS before the data pins have made contact. The time between power pins and data pins making contact depends on how fast the plug is inserted into the receptable. Delays of several hundred milliseconds are possible. 43.5.1.3.1 Debouncing the Data Pin Contact
When system software has initiated the charger detection sequence, as described in Initial System Conditions the USBDCD module turns on the IDP_SRC current source and enables the RDM_DWN pulldown resistor. If the data pins have not made contact, the D+ line remains high. Once the data pins make contact, the D+ line goes low and debouncing begins. Once the D+ line goes low, the module continuously samples the D+ line over the duration of the TDCD_DBNC debounce time interval.TDCD_DBNC defaults to 10 ms but can be programmed in the TIMER0[TDCD_DBNC] field. See the description of the TIMER0 Register for register information. When it has remained low for the entire interval, the debouncing is complete. However, if the D+ line returns high during the debounce interval, the module waits until the D+ line goes low again to restart the debouncing. This cycle repeats until either: the data pin contact has been successfully debounced (see Success in Detecting Data Pin Contact (Phase Completion) ), or a timeout occurs (see Charger Detection Sequence Timeout ). 43.5.1.3.2 Success in Detecting Data Pin Contact (Phase Completion)
After successfully debouncing the D+ state, the module does the following:
updates the STATUS register to reflect phase completion (See Table 43-18 for field values.) directly proceeds to the next step in the sequence: detection of a charging port See Charging Port Detection.
43.5.1.4.1
As part of the charger detection handshake with a standard USB host, the module does the following (without waiting for the TVDPSRC_CON interval to elapse):
Functional Description
Updates the STATUS register to reflect that a standard host has been detected with SEQ_RES = 01. (See Table 43-18 for field values.) Sets the CONTROL[IF] bit. Generates an interrupt if enabled (the CONTROL[IE] bit is set). At this point, control has been passed to system software via the interrupt. The rest of the sequence (detecting the type of charging port) is not applicable, so software should: 1. Read the STATUS register. 2. Set the CONTROL[IACK] bit to acknowledge the interrupt. 3. Set the CONTROL[SR] bit to issue a software reset to the module. 4. Disable the module. 5. Communicate the appropriate charge rate to the external battery charger IC; see Table 43-13. 43.5.1.4.2 Charging Port
As part of the charger detection handshake with any type of USB host, the module waits until the TVDPSRC_CON interval has elapsed before doing the following: Updates the STATUS register to reflect that a charging port has been detected with SEQ_RES = 10. (See Table 43-18 for field values.) Sets the CONTROL[IF] bit. Generates an interrupt if enabled (the CONTROL[IE] bit is set). At this point, control has passed to system software via the interrupt. Software should: 1. Read the STATUS register. 2. Set the CONTROL[IACK] bit to acknowledge the interrupt. 3. Issue a command to the USB controller to pullup the USB D+ line. 4. Wait for the module to complete the final phase of the sequence. See Charger Type Detection. 43.5.1.4.3 Error in Charging Port Detection
Updates the STATUS register to reflect the error with SEQ_RES = 00. (See Table 43-18 for field values.) Sets the CONTROL[IF] bit. Generates an interrupt if enabled (the CONTROL[IE] bit is set). Note that in this case the module does not wait for the TVDPSRC_CON interval to elapse. At this point, control has been passed to system software via the interrupt. The rest of the sequence (detecting the type of charging port) is not applicable, so software should: 1. Read the STATUS register. 2. Set the CONTROL[IACK] bit to acknowledge the interrupt. 3. Set the CONTROL[SR] bit to issue a software reset to the module. 4. Disable the module.
1. In a dedicated charger, the D+ and D- lines are shorted together through a small resistor. 2. In a charging host port, the D+ and D- lines are not shorted.
43.5.1.5.1
Functional Description
Updates the STATUS register to reflect that a dedicated charger has been detected with SEQ_RES = 11. (See Table 43-18 for field values.) Sets the CONTROL[IF] bit. Generates an interrupt if enabled (the CONTROL[IE] bit is set). At this point, control has been passed to system software via the interrupt. Software should: 1. Read the STATUS register. 2. Disable the USB controller to prevent transitions on the USB D+ or D- lines from causing spurious interrupt or wake-up events to the system. 3. Set the CONTROL[IACK] bit to acknowledge the interrupt. 4. Set the CONTROL[SR] bit to issue a software reset to the module. 5. Disable the module. 6. Communicate the appropriate charge rate to the external battery charger IC; see Table 43-13. 43.5.1.5.2 Charging Host Port
For a charging host port, the module does the following: Updates the STATUS register to reflect that a charging host port has been detected with SEQ_RES = 10. (See Table 43-18 for field values.) Sets the CONTROL[IF] bit. Generates an interrupt if enabled (the CONTROL[IE] bit is set). At this point, control has been passed to system software via the interrupt. Software should: 1. Read the STATUS register. 2. Set the CONTROL[IACK] bit to acknowledge the interrupt. 3. Set the CONTROL[SR] bit to issue a software reset to the module. 4. Disable the module. 5. Communicate the appropriate charge rate to the external battery charger IC; see Table 43-13.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1156 Freescale Semiconductor, Inc.
Functional Description
Note that the TUNITCON register field will stop incrementing when it reaches its maximum value so it will not rollover to zero and start counting up again.
The timeout interval from the time the USB ERR = 1 device attaches to a USB port until it connects SEQ_STAT = last value2 has elapsed SEQ_RES = last value2 TO = 1
1. See the description of the Status Register for register information. 2. The SEQ_STAT and SEQ_RES fields retain the values held at the time of the timeout error.
An interrupt is generated only if the CONTROL[IE] bit is set. The CONTROL[IF] bit is always set under interrupt conditions, even if the IE bit is cleared. In this case, software can poll the IF flag to determine if an interrupt condition is pending. Writes to the IF bit are ignored. To reset the IF bit, set the CONTROL[IACK] bit to acknowledge the interrupt.Writing to the IACK bit while the IF bit is cleared has no effect.
43.5.3 Resets
There are two ways to reset various register contents in this module: hardware resets and a software reset.
Initialization Information
A software reset also returns all internal logic, timers, and counters to their reset states. State Machines return to IDLE. If the module is already active (STATUS[ACTIVE] = 1), a software reset stops the sequence. Note Software should always initiate a software reset before starting the sequence (setting the CONTROL[START] bit) to ensure the module is in a known state.
The USBDCD module is compatible with systems that do not check the strength of the battery. Therefore, this module assumes that the battery is good, so the USB device must immediately connect to the USB bus by pulling the D+ line high after the USBDCD module has determined that the device is attached to a charging port. The module is also compatible with systems that do check the strength of the battery. In these systems, if it is known that the battery is weak or dead, software can delay connecting to the USB while charging at 1.5A. Once the battery is charged to the good battery threshold, software can then connect to the USB host by pulling the D+ line high.
Application Information
OUTPUT (Volt)
3.3
2.7
2.4
2.7
3.0
3.6
5.5
INPUT (Volt)
Figure 44-1. Ideal Relation Between the Regulator Output and Input Power Supply
44.1.1 Overview
A simplified block diagram for the USB Voltage Regulator module is shown below.
Introduction
STANDBY Regulator
Yes No STANDBY
Other Modules
Power Supply
reg33_in
reg33_out
RUN Regulator
Voltage Regulator Chip
This module uses 2 regulators in parallel. In run mode, the RUN regulator with the bandgap voltage reference is enabled and can provide up to 120 mA load current. In run mode, the STANDBY regulator and the low power reference are also enabled, but a switch disconnects its output from the external pin. In STANDBY mode, the RUN regulator is disabled and the STANDBY regulator output is connected to the external pin supplying up to 3 mA load current. Internal power mode signals control whether the module is in RUN or STANDBY mode.
44.1.2 Features
Low drop-out linear voltage regulator with one power channel (3.3V). Low drop-out voltage: 300 mV. Output current: 120 mA. Three different power modes: RUN, STANDBY and SHUTDOWN. Low quiescent current in RUN mode. Typical value is around 120 uA (one thousand times smaller than the maximum load current). Very low quiescent current in STANDBY mode. Typical value is around 1 uA. Automatic current limiting if the load current is greater than 290 mA. Automatic power-up once some voltage is applied to the regulator input.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1164 Freescale Semiconductor, Inc.
Pass-through mode for regulator input voltages less than 3.6 V Small output capacitor: 2.2 uF Stable with aluminum, tantalum or ceramic capacitors.
Registers
RAM
CAN Tx
CAN Bus
CAN Rx
Chip
Introduction
45.1.1 Overview
The CAN protocol was primarily, but not only, designed to be used as a vehicle serial data bus, meeting the specific requirements of this field: real-time processing, reliable operation in the EMI environment of a vehicle, cost-effectiveness and required bandwidth. The FlexCAN module is a full implementation of the CAN protocol specification, Version 2.0 B, which supports both standard and extended message frames. The Message Buffers are stored in an embedded RAM dedicated to the FlexCAN module. See the Chip Configuration details for the actual number of Message Buffers configured in the MCU. The CAN Protocol Engine (PE) sub-module manages the serial communication on the CAN bus, requesting RAM access for receiving and transmitting message frames, validating received messages and performing error handling. The Controller Host Interface (CHI) sub-module handles Message Buffer selection for reception and transmission, taking care of arbitration and ID matching algorithms. The Bus Interface Unit (BIU) sub-module controls the access to and from the internal interface bus, in order to establish connection to the CPU and to other blocks. Clocks, address and data buses, interrupt outputs and test signals are accessed through the Bus Interface Unit.
Full featured Rx FIFO with storage capacity for up to 6 frames and automatic internal pointer handling Transmission abort capability Programmable clock source to the CAN Protocol Interface, either bus clock or crystal oscillator Unused structures space can be used as general purpose RAM space Listen-only mode capability Programmable loop-back mode supporting self-test operation Programmable transmission priority scheme: lowest ID, lowest buffer number or highest priority Time Stamp based on 16-bit free-running timer Global network time, synchronized by a specific message Maskable interrupts Independent of the transmission medium (an external transceiver is assumed) Short latency time due to an arbitration scheme for high-priority messages Low power modes, with programmable wake up on bus activity Furthermore, the new major features below are also provided in addition to the previous FlexCAN version: Remote request frames may be handled automatically or by software Safe mechanism for ID Filter configuration in Normal Mode CAN bit time settings and configuration bits can only be written in "Freeze" mode Tx mailbox status (Lowest priority buffer or empty buffer) IDHIT register for received frames SYNC bit status to inform that the module is synchronous with CAN bus Debug Registers CRC status for transmitted message Rx FIFO Global Mask register
Introduction
Selectable priority of reception between Mailboxes and Rx FIFO during matching process Powerful Rx FIFO ID filtering, capable of matching incoming IDs against either 128 extended, 256 standard or 512 partial (8 bits) IDs, with up to 32 individual masking capability 100% backward compatibility with previous FlexCAN version
recessive state (logic '1'). FlexCAN behaves as it normally does when transmitting and treats its own transmitted message as a message received from a remote node. In this mode, FlexCAN ignores the bit sent during the ACK slot in the CAN frame acknowledge field to ensure proper reception of its own message. Both transmit and receive interrupts are generated. Module Disable Mode: This low power mode is entered when the MDIS bit in the MCR Register is asserted by the CPU and the LPM_ACK is asserted by the FlexCAN. When disabled, the module requests to disable the clocks to the CAN Protocol Engine and Controller Host Interface sub-modules. Exit from this mode is done by negating the MDIS bit in the MCR Register. See Module Disable Mode for more information. Doze Mode: This low power mode is entered when the DOZE bit in MCR is asserted and Doze Mode is requested at MCU level and the LPM_ACK bit in the MCR Register is asserted by the FlexCAN. When in Doze Mode, the module requests to disable the clocks to the CAN Protocol Engine and the CAN Controller-Host Interface submodules. Exit from this mode happens when the DOZE bit in MCR is negated, when the MCU is removed from Doze Mode, or when activity is detected on the CAN bus and the Self Wake Up mechanism is enabled. See Doze Mode for more information. Stop Mode: This low power mode is entered when Stop Mode is requested at MCU level and the LPM_ACK bit in the MCR Register is asserted by the FlexCAN. When in Stop Mode, the module puts itself in an inactive state and then informs the CPU that the clocks can be shut down globally. Exit from this mode happens when the Stop Mode request is removed or when activity is detected on the CAN bus and the Self Wake Up mechanism is enabled. See Stop Mode for more information.
45.2.1 CAN Rx
This pin is the receive pin from the CAN bus transceiver. Dominant state is represented by logic level '0'. Recessive state is represented by logic level '1'.
45.2.2 CAN Tx
This pin is the transmit pin to the CAN bus transceiver. Dominant state is represented by logic level '0'. Recessive state is represented by logic level '1'.
The FlexCAN module can store CAN messages for transmission and reception using Mailboxes and Rx FIFO structures. This module's memory map includes sixteen 128-bit message buffers (MBs) that occupy the range from offset 0x80 to 0x17F.
CANx memory map
Absolute address (hex) 4002_4000 Register name Width Access (in bits) 32 R/W Reset value Section/ page 45.3.2/ 1177
D890_000Fh
Control 1 Register (CAN0_CTRL1) Free Running Timer (CAN0_TIMER) Rx Mailboxes Global Mask Register (CAN0_RXMGMASK) Rx 14 Mask Register (CAN0_RX14MASK) Rx 15 Mask Register (CAN0_RX15MASK) Error Counter (CAN0_ECR) Error and Status 1 Register (CAN0_ESR1) Interrupt Masks 2 Register (CAN0_IMASK2) Interrupt Masks 1 Register (CAN0_IMASK1) Interrupt Flags 2 Register (CAN0_IFLAG2) Interrupt Flags 1 Register (CAN0_IFLAG1) Control 2 Register (CAN0_CTRL2) Error and Status 2 Register (CAN0_ESR2) CRC Register (CAN0_CRCR) Rx FIFO Global Mask Register (CAN0_RXFGMASK) Rx FIFO Information Register (CAN0_RXFIR) Rx Individual Mask Registers (CAN0_RXIMR0) Rx Individual Mask Registers (CAN0_RXIMR1) Rx Individual Mask Registers (CAN0_RXIMR2) Rx Individual Mask Registers (CAN0_RXIMR3)
0000_0000h 0000_0000h FFFF_ FFFFh FFFF_ FFFFh FFFF_ FFFFh 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0048_0000h 0000_0000h 0000_0000h FFFF_ FFFFh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh
Rx Individual Mask Registers (CAN0_RXIMR4) Rx Individual Mask Registers (CAN0_RXIMR5) Rx Individual Mask Registers (CAN0_RXIMR6) Rx Individual Mask Registers (CAN0_RXIMR7) Rx Individual Mask Registers (CAN0_RXIMR8) Rx Individual Mask Registers (CAN0_RXIMR9) Rx Individual Mask Registers (CAN0_RXIMR10) Rx Individual Mask Registers (CAN0_RXIMR11) Rx Individual Mask Registers (CAN0_RXIMR12) Rx Individual Mask Registers (CAN0_RXIMR13) Rx Individual Mask Registers (CAN0_RXIMR14) Rx Individual Mask Registers (CAN0_RXIMR15) Module Configuration Register (CAN1_MCR) Control 1 Register (CAN1_CTRL1) Free Running Timer (CAN1_TIMER) Rx Mailboxes Global Mask Register (CAN1_RXMGMASK) Rx 14 Mask Register (CAN1_RX14MASK) Rx 15 Mask Register (CAN1_RX15MASK) Error Counter (CAN1_ECR) Error and Status 1 Register (CAN1_ESR1)
0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh D890_000Fh 0000_0000h 0000_0000h FFFF_ FFFFh FFFF_ FFFFh FFFF_ FFFFh 0000_0000h 0000_0000h
Interrupt Masks 2 Register (CAN1_IMASK2) Interrupt Masks 1 Register (CAN1_IMASK1) Interrupt Flags 2 Register (CAN1_IFLAG2) Interrupt Flags 1 Register (CAN1_IFLAG1) Control 2 Register (CAN1_CTRL2) Error and Status 2 Register (CAN1_ESR2) CRC Register (CAN1_CRCR) Rx FIFO Global Mask Register (CAN1_RXFGMASK) Rx FIFO Information Register (CAN1_RXFIR) Rx Individual Mask Registers (CAN1_RXIMR0) Rx Individual Mask Registers (CAN1_RXIMR1) Rx Individual Mask Registers (CAN1_RXIMR2) Rx Individual Mask Registers (CAN1_RXIMR3) Rx Individual Mask Registers (CAN1_RXIMR4) Rx Individual Mask Registers (CAN1_RXIMR5) Rx Individual Mask Registers (CAN1_RXIMR6) Rx Individual Mask Registers (CAN1_RXIMR7) Rx Individual Mask Registers (CAN1_RXIMR8) Rx Individual Mask Registers (CAN1_RXIMR9) Rx Individual Mask Registers (CAN1_RXIMR10)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0048_0000h 0000_0000h 0000_0000h FFFF_ FFFFh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh 0000_000Xh
Rx Individual Mask Registers (CAN1_RXIMR11) Rx Individual Mask Registers (CAN1_RXIMR12) Rx Individual Mask Registers (CAN1_RXIMR13) Rx Individual Mask Registers (CAN1_RXIMR14) Rx Individual Mask Registers (CAN1_RXIMR15)
SOFTRST
WAKMSK
SLFWAK
WRNEN
LPMACK
FRZACK
SRXDIS 0
1
Reserved
DOZE
SUPV
RFEN
FRZ
Reset
Bit
1
15
1
14
0
13
1
12
1
11
0
10
0
9
0
8
1
7
0
6
0
5
1
4
0
3
0
2
0 LPRIOEN AEN
0 IDAM
0 MAXMB
Reset
IRMQ 0
0
HALT
MDIS
Freeze Enable The FRZ bit specifies the FlexCAN behavior when the HALT bit in the MCR Register is set or when Debug Mode is requested at MCU level. When FRZ is asserted, FlexCAN is enabled to enter Freeze Mode. Negation of this bit field causes FlexCAN to exit from Freeze Mode. 0 1 Not enabled to enter Freeze Mode Enabled to enter Freeze Mode
29 RFEN
Rx FIFO Enable This bit controls whether the Rx FIFO feature is enabled or not. When RFEN is set, MBs 0 to 5 cannot be used for normal reception and transmission because the corresponding memory region (0x80-0xDC) is used by the FIFO engine as well as additional MBs (up to 32, depending on CTRL2[RFFN] setting) which are used as Rx FIFO ID Filter Table elements. RFEN also impacts the definition of the minimum number of peripheral clocks per CAN bit as described in the table "Minimum Ratio Between Peripheral Clock Frequency and CAN Bit Rate" (in section "Arbitration and Matching Timing"). This bit can only be written in Freeze mode as it is blocked by hardware in other modes. 0 1 Rx FIFO not enabled Rx FIFO enabled
28 HALT
Halt FlexCAN Assertion of this bit puts the FlexCAN module into Freeze Mode. The CPU should clear it after initializing the Message Buffers and Control Register. No reception or transmission is performed by FlexCAN before this bit is cleared. Freeze Mode cannot be entered while FlexCAN is in any of the low power modes. 0 1 No Freeze Mode request. Enters Freeze Mode if the FRZ bit is asserted.
27 NOTRDY
FlexCAN Not Ready This read-only bit indicates that FlexCAN is either in Disable Mode, Doze Mode, Stop Mode or Freeze Mode. It is negated once FlexCAN has exited these modes. 0 1 FlexCAN module is either in Normal Mode, Listen-Only Mode or Loop-Back Mode. FlexCAN module is either in Disable Mode, Doze Mode, Stop Mode or Freeze Mode.
26 WAKMSK
Wake Up Interrupt Mask This bit enables the Wake Up Interrupt generation. 0 1 Wake Up Interrupt is disabled. Wake Up Interrupt is enabled.
25 SOFTRST
Soft Reset When this bit is asserted, FlexCAN resets its internal state machines and some of the memory mapped registers. The following registers are reset: MCR (except the MDIS bit), TIMER, ECR, ESR1, ESR2, IMASK1, IMASK2, IFLAG1, IFLAG2 and CRCR. Configuration registers that control the interface to the Table continues on the next page...
Freeze Mode Acknowledge This read-only bit indicates that FlexCAN is in Freeze Mode and its prescaler is stopped. The Freeze Mode request cannot be granted until current transmission or reception processes have finished. Therefore the software can poll the FRZACK bit to know when FlexCAN has actually entered Freeze Mode. If Freeze Mode request is negated, then this bit is negated once the FlexCAN prescaler is running again. If Freeze Mode is requested while FlexCAN is in any of the low power modes, then the FRZACK bit will only be set when the low power mode is exited. NOTE: FRZACK will be asserted within 178 CAN bits from the freeze mode request by the CPU, and negated within 2 CAN bits after the freeze mode request removal (see Section "Protocol Timing"). 0 1 FlexCAN not in Freeze Mode, prescaler running FlexCAN in Freeze Mode, prescaler stopped
23 SUPV
Supervisor Mode This bit configures the FlexCAN to be either in Supervisor or User Mode. The registers affected by this bit are marked as S/U in the Access Type column of the module memory map. Reset value of this bit is 1, so the affected registers start with Supervisor access allowance only. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. 0 1 FlexCAN is in User Mode. Affected registers allow both Supervisor and Unrestricted accesses. FlexCAN is in Supervisor Mode. Affected registers allow only Supervisor access. Unrestricted access behaves as though the access was done to an unimplemented register location.
22 SLFWAK
Self Wake Up This bit enables the Self Wake Up feature when FlexCAN is in Doze Mode or Stop Mode. If this bit had been asserted by the time FlexCAN entered Doze Mode or Stop Mode, then FlexCAN will look for a recessive to dominant transition on the bus during these modes. If a transition from recessive to dominant is detected during Doze Mode, FlexCAN requests to resume its clocks and, if enabled to do so, generates a Wake Up interrupt to the CPU. If a transition from recessive to dominant is detected during Stop Mode, then FlexCAN generates, if enabled to do so, a Wake Up interrupt to the CPU so that it can set out of Stop Mode globally and FlexCAN can request to resume the clocks. This bit cannot be written while the module is in Doze Mode or Stop Mode as it is blocked by hardware. 0 1 FlexCAN Self Wake Up feature is disabled. FlexCAN Self Wake Up feature is enabled.
21 WRNEN
Low Power Mode Acknowledge This read-only bit indicates that FlexCAN is either in Disable Mode, Doze Mode or Stop Mode. Either of these low power modes can not be entered until all current transmission or reception processes have finished, so the CPU can poll the LPMACK bit to know when FlexCAN has actually entered low power mode. NOTE: LPMACK will be asserted within 180 CAN bits from the low power mode request by the CPU, and negated within 2 CAN bits after the low power mode request removal (see Section "Protocol Timing"). 0 1 FlexCAN is not in any of the low power modes. FlexCAN is either in Disable Mode, Doze Mode or Stop mode.
19 Reserved 18 DOZE
This bit is reserved. Doze Mode Enable This bit defines whether FlexCAN is allowed to enter low power mode when Doze Mode is requested at MCU level . This bit is automatically reset when FlexCAN wakes up from Doze Mode upon detecting activity on the CAN bus (self wake-up enabled). 0 1 FlexCAN is not enabled to enter low power mode when Doze Mode is requested. FlexCAN is enabled to enter low power mode when Doze Mode is requested.
17 SRXDIS
Self Reception Disable This bit defines whether FlexCAN is allowed to receive frames transmitted by itself. If this bit is asserted, frames transmitted by the module will not be stored in any MB, regardless if the MB is programmed with an ID that matches the transmitted frame, and no interrupt flag or interrupt signal will be generated due to the frame reception. This bit can only be written in Freeze mode as it is locked by hardware in other modes. 0 1 Self reception enabled Self reception disabled
16 IRMQ
Individual Rx Masking and Queue Enable This bit indicates whether Rx matching process will be based either on individual masking and queue or on masking scheme with RXMGMASK, RX14MASK and RX15MASK, RXFGMASK. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. 0 1 Individual Rx masking and queue feature are disabled. For backward compatibility, the reading of C/S word locks the MB even if it is EMPTY. Individual Rx masking and queue feature are enabled.
1514 Reserved
This read-only bitfield is reserved and always has the value zero. Table continues on the next page...
Abort Enable This bit is supplied for backwards compatibility reasons. When asserted, it enables the Tx abort feature. This feature guarantees a safe procedure for aborting a pending transmission, so that no frame is sent in the CAN bus without notification. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. CAUTION: Writing the Abort code into Rx Mailboxes can cause unpredictable results when the MCR[AEN] is asserted. 0 1 Abort disabled Abort enabled
This read-only bitfield is reserved and always has the value zero. ID Acceptance Mode This 2-bit field identifies the format of the Rx FIFO ID Filter Table Elements. Note that all elements of the table are configured at the same time by this field (they are all the same format). This field can only be written in Freeze mode as it is blocked by hardware in other modes. 00 01 10 11 Format A: One full ID (standard and extended) per ID Filter Table element. Format B: Two full standard IDs or two partial 14-bit (standard and extended) IDs per ID Filter Table element. Format C: Four partial 8-bit Standard IDs per ID Filter Table element. Format D: All frames rejected.
7 Reserved 60 MAXMB
This read-only bit is reserved and always has the value zero. Number of the Last Message Buffer This 7-bit field defines the number of the last Message Buffers that will take part in the matching and arbitration processes. The reset value (0x0F) is equivalent to 16 MB configuration. This field can only be written in Freeze Mode as it is blocked by hardware in other modes. Number of the last MB = MAXMB NOTE: MAXMB must be programmed with a value smaller than the parameter NUMBER_OF_MB, otherwise the number of the last effective Message Buffer will be: (NUMBER_OF_MB - 1) Additionally, the value of MAXMB must encompass the FIFO size defined by CTRL2[RFFN]. MAXMB also impacts the definition of the minimum number of peripheral clocks per CAN bit as described in Table "Minimum Ratio Between Peripheral Clock Frequency and CAN Bit Rate" (in Section "Arbitration and Matching Timing").
PRESDIV
W
RJW
PSEG1
PSEG2
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
BOFFREC
RWRNMSK
TWRNMSK
BOFFMSK
ERRMSK
CLKSRC
TSYN
LBUF
0 SMP
LPB
LOM
PROPSEG
Reset
Error Mask This bit provides a mask for the Error Interrupt. 0 1 Error interrupt disabled Error interrupt enabled
13 CLKSRC
CAN Engine Clock Source This bit selects the clock source to the CAN Protocol Engine (PE) to be either the peripheral clock (driven by the PLL) or the crystal oscillator clock. The selected clock is the one fed to the prescaler to generate the Serial Clock (Sclock). In order to guarantee reliable operation, this bit can only be written in Disable mode as it is blocked by hardware in other modes. 0 1 The CAN engine clock source is the oscillator clock. Under this condition, the oscillator clock frequency must be lower than the bus clock. The CAN engine clock source is the peripheral clock.
12 LPB
Loop Back Mode This bit configures FlexCAN to operate in Loop-Back Mode. In this mode, FlexCAN performs an internal loop back that can be used for self test operation. The bit stream output of the transmitter is fed back internally to the receiver input. The Rx CAN input pin is ignored and the Tx CAN output goes to the recessive state (logic 1). FlexCAN behaves as it normally does when transmitting, and treats its own transmitted message as a message received from a remote node. In this mode, FlexCAN ignores the bit sent during the ACK slot in the CAN frame acknowledge field, generating an internal acknowledge bit to ensure proper reception of its own message. Both transmit and receive interrupts are generated. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. NOTE: In this mode, the MCR[SLFDIS] cannot be asserted because this will impede the self reception of a transmitted message. 0 1 Loop Back disabled Loop Back enabled
11 TWRNMSK
Tx Warning Interrupt Mask This bit provides a mask for the Tx Warning Interrupt associated with the TWRNINT flag in the Error and Status Register. This bit is read as zero when MCR[WRNEN] bit is negated. This bit can only be written if MCR[WRNEN] bit is asserted. 0 1 Tx Warning Interrupt disabled Tx Warning Interrupt enabled
10 RWRNMSK
Rx Warning Interrupt Mask This bit provides a mask for the Rx Warning Interrupt associated with the RWRNINT flag in the Error and Status Register. This bit is read as zero when MCR[WRNEN] bit is negated. This bit can only be written if MCR[WRNEN] bit is asserted. Table continues on the next page...
This read-only bitfield is reserved and always has the value zero. CAN Bit Sampling This bit defines the sampling mode of CAN bits at the Rx input. This bit can only be written in Freeze mode as it is locked by hardware in other modes. 0 1 Just one sample is used to determine the bit value. Three samples are used to determine the value of the received bit: the regular one (sample point) and 2 preceding samples; a majority rule is used.
6 BOFFREC
Bus Off Recovery This bit defines how FlexCAN recovers from Bus Off state. If this bit is negated, automatic recovering from Bus Off state occurs according to the CAN Specification 2.0B. If the bit is asserted, automatic recovering from Bus Off is disabled and the module remains in Bus Off state until the bit is negated by the user. If the negation occurs before 128 sequences of 11 recessive bits are detected on the CAN bus, then Bus Off recovery happens as if the BOFFREC bit had never been asserted. If the negation occurs after 128 sequences of 11 recessive bits occurred, then FlexCAN will re-synchronize to the bus by waiting for 11 recessive bits before joining the bus. After negation, the BOFFREC bit can be re-asserted again during Bus Off, but it will only be effective the next time the module enters Bus Off. If BOFFREC was negated when the module entered Bus Off, asserting it during Bus Off will not be effective for the current Bus Off recovery. 0 1 Automatic recovering from Bus Off state enabled, according to CAN Spec 2.0 part B Automatic recovering from Bus Off state disabled
5 TSYN
Timer Sync This bit enables a mechanism that resets the free-running timer each time a message is received in Message Buffer 0. This feature provides means to synchronize multiple FlexCAN stations with a special SYNC message (i.e., global network time). If the RFEN bit in MCR is set (Rx FIFO enabled), the first available Mailbox, according to CTRL2[RFFN] setting, is used for timer synchronization instead of MB0. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. 0 1 Timer Sync feature disabled Timer Sync feature enabled
4 LBUF
Lowest Buffer Transmitted First This bit defines the ordering mechanism for Message Buffer transmission. When asserted, the LPRIOEN bit does not affect the priority arbitration. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. 0 1 Buffer with highest priority is transmitted first. Lowest number buffer is transmitted first.
3 LOM
Listen-Only Mode This bit configures FlexCAN to operate in Listen-Only Mode. In this mode, transmission is disabled, all error counters are frozen and the module operates in a CAN Error Passive mode. Only messages acknowledged by another CAN station will be received. If FlexCAN detects a message that has not been acknowledged, it will flag a BIT0 error (without changing the REC), as if it was trying to acknowledge the message. Table continues on the next page...
Propagation Segment This 3-bit field defines the length of the Propagation Segment in the bit time. The valid programmable values are 07. This field can only be written in Freeze mode as it is blocked by hardware in other modes. Propagation Segment Time = (PROPSEG + 1) * Time-Quanta. Time-Quantum = one Sclock period.
Memory Map/Register Definition Addresses: CAN0_TIMER 4002_4000h base + 8h offset = 4002_4008h CAN1_TIMER 400A_4000h base + 8h offset = 400A_4008h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TIMER 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MG[31:0] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 1 1 1
0 1 1
1. RTR bit of the Incoming Frame. It is saved into an auxiliary MB called Rx Serial Message Buffer (Rx SMB). 2. If the CTRL2[EACEN] bit is negated, the RTR bit of Mailbox is never compared with the RTR bit of the incoming frame. 3. If the CTRL2[EACEN] bit is negated, the IDE bit of Mailbox is always compared with the IDE bit of the incoming frame. 0 1 The corresponding bit in the filter is "don't care." The corresponding bit in the filter is checked.
1. RTR bit of the Incoming Frame. It is saved into an auxiliary MB called Rx Serial Message Buffer (Rx SMB). 2. If the CTRL2[EACEN] bit is negated, the RTR bit of Mailbox is never compared with the RTR bit of the incoming frame. 3. If the CTRL2[EACEN] bit is negated, the IDE bit of Mailbox is always compared with the IDE bit of the incoming frame.
RX14M[31:0] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
RX15M[31:0] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Memory Map/Register Definition Addresses: CAN0_ECR 4002_4000h base + 1Ch offset = 4002_401Ch CAN1_ECR 400A_4000h base + 1Ch offset = 400A_401Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
RXERRCNT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TXERRCNT 0 0 0 0 0 0
Chapter 45 CAN (FlexCAN) Addresses: CAN0_ESR1 4002_4000h base + 20h offset = 4002_4020h CAN1_ESR1 400A_4000h base + 20h offset = 400A_4020h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 SYNCH 17 16
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
CRCERR
FRMERR
BIT1ERR
BIT0ERR
ACKERR
STFERR
RXWRN
TXWRN
IDLE
BOFFINT
TX
FLTCONF
RX
Reset
Tx Warning Interrupt Flag If the WRNEN bit in MCR is asserted, the TWRNINT bit is set when the TXWRN flag transitions from 0 to 1, meaning that the Tx error counter reached 96. If the corresponding mask bit in the Control Register (TWRNMSK) is set, an interrupt is generated to the CPU. This bit is cleared by writing it to 1. When WRNEN is negated, this flag is masked. CPU must clear this flag before disabling the bit. Otherwise it will be set when the WRNEN is set again. Writing 0 has no effect. This flag is not generated during Bus Off state. This bit is not updated during Freeze mode. 0 1 No such occurrence The Tx error counter transitioned from less than 96 to greater than or equal to 96.
16 RWRNINT
Rx Warning Interrupt Flag If the WRNEN bit in MCR is asserted, the RWRNINT bit is set when the RXWRN flag transitions from 0 to 1, meaning that the Rx error counters reached 96. If the corresponding mask bit in the Control Register (RWRNMSK) is set, an interrupt is generated to the CPU. This bit is cleared by writing it to 1. Table continues on the next page...
WAKINT 0
ERRINT
RWRNINT 0
0
TWRNINT
Bit1 Error This bit indicates when an inconsistency occurs between the transmitted and the received bit in a message. NOTE: This bit is not set by a transmitter in case of arbitration field or ACK slot, or in case of a node sending a passive error flag that detects dominant bits. 0 1 No such occurrence At least one bit sent as recessive is received as dominant.
14 BIT0ERR
Bit0 Error This bit indicates when an inconsistency occurs between the transmitted and the received bit in a message. 0 1 No such occurrence At least one bit sent as dominant is received as recessive.
13 ACKERR
Acknowledge Error This bit indicates that an Acknowledge Error has been detected by the transmitter node, i.e., a dominant bit has not been detected during the ACK SLOT. 0 1 No such occurrence An ACK error occurred since last read of this register.
12 CRCERR
Cyclic Redundancy Check Error This bit indicates that a CRC Error has been detected by the receiver node, i.e., the calculated CRC is different from the received. 0 1 No such occurrence A CRC error occurred since last read of this register.
11 FRMERR
Form Error This bit indicates that a Form Error has been detected by the receiver node, i.e., a fixed-form bit field contains at least one illegal bit. 0 1 No such occurrence A Form Error occurred since last read of this register.
10 STFERR
Stuffing Error This bit indicates that a Stuffing Error has been detected. 0 1 No such occurrence A Stuffing Error occurred since last read of this register. Table continues on the next page...
Rx Error Warning This bit indicates when repetitive errors are occurring during message reception. This bit is not updated during Freeze mode. 0 1 No such occurrence RXERRCNT is greater than or equal to 96.
7 IDLE
This bit indicates when CAN bus is in IDLE state. See the table in the overall CAN_ESR1 register description. 0 1 No such occurrence CAN bus is now IDLE.
6 TX
FlexCAN in Transmission This bit indicates if FlexCAN is transmitting a message. See the table in the overall CAN_ESR1 register description. 0 1 FlexCAN is not transmitting a message. FlexCAN is transmitting a message.
54 FLTCONF
Fault Confinement State This 2-bit field indicates the Confinement State of the FlexCAN module. If the LOM bit in the Control Register is asserted, after some delay that depends on the CAN bit timing the FLTCONF field will indicate Error Passive. The very same delay affects the way how FLTCONF reflects an update to ECR register by the CPU. It may be necessary up to one CAN bit time to get them coherent again. Since the Control Register is not affected by soft reset, the FLTCONF field will not be affected by soft reset if the LOM bit is asserted. 00 01 1x Error Active Error Passive Bus Off
3 RX
FlexCAN in Reception This bit indicates if FlexCAN is receiving a message. See the table in the overall CAN_ESR1 register description. 0 1 FlexCAN is not receiving a message. FlexCAN is receiving a message.
2 BOFFINT
Bus Off Interrupt This bit is set when FlexCAN enters Bus Off state. If the corresponding mask bit in the Control Register (BOFFMSK) is set, an interrupt is generated to the CPU. This bit is cleared by writing it to 1. Writing 0 has no effect. Table continues on the next page...
Error Interrupt This bit indicates that at least one of the Error Bits (bits 15-10) is set. If the corresponding mask bit CTRL1[ERRMSK] is set, an interrupt is generated to the CPU. This bit is cleared by writing it to 1. Writing 0 has no effect. 0 1 No such occurrence Indicates setting of any Error Bit in the Error and Status Register
0 WAKINT
Wake-Up Interrupt When FlexCAN is in Doze Mode or Stop Mode and a recessive to dominant transition is detected on the CAN bus and if the MCR[WAKMSK] bit is set, an interrupt is generated to the CPU. This bit is cleared by writing it to 1. When SLFWAK is negated, this flag is masked. The CPU must clear this flag before disabling the bit. Otherwise it will be set when the SLFWAK is set again. Writing 0 has no effect. 0 1 No such occurrence Indicates a recessive to dominant transition received on the CAN bus when the FlexCAN module is in Doze Mode or Stop Mode
BUFHM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BUFLM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Memory Map/Register Definition Addresses: CAN0_IFLAG2 4002_4000h base + 2Ch offset = 4002_402Ch CAN1_IFLAG2 400A_4000h base + 2Ch offset = 400A_402Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUFHI 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Chapter 45 CAN (FlexCAN) Addresses: CAN0_IFLAG1 4002_4000h base + 30h offset = 4002_4030h CAN1_IFLAG1 400A_4000h base + 30h offset = 400A_4030h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
BUF7I
BUF6I
BUF5I 0 0
BUF31TO8I 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BUF4TO0I 0 0 0 0
Buffer MB7 Interrupt or "Rx FIFO Overflow" When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags the interrupt for MB7. NOTE: This flag is cleared by the FlexCAN whenever the bit MCR[RFEN] is changed by CPU writes. The BUF7I flag represents "Rx FIFO Overflow" when MCR[RFEN] is set. In this case, the flag indicates that a message was lost because the Rx FIFO is full. Note that the flag will not be asserted when the Rx FIFO is full and the message was captured by a Mailbox. 0 1 No occurrence of MB7 completing transmission/reception (when MCR[RFEN]=0) or of Rx FIFO overflow (when MCR[RFEN]=1) MB7 completed transmission/reception (when MCR[RFEN]=0) or Rx FIFO overflow (when MCR[RFEN]=1)
6 BUF6I
Buffer MB6 Interrupt or "Rx FIFO Warning" When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags the interrupt for MB6. NOTE: This flag is cleared by the FlexCAN whenever the bit MCR[RFEN] is changed by CPU writes. The BUF6I flag represents "Rx FIFO Warning" when MCR[RFEN] is set. In this case, the flag indicates when the number of unread messages within the Rx FIFO is increased to 5 from 4 due to the reception of a new one, meaning that the Rx FIFO is almost full. Note that if the flag is cleared while the number of unread messages is greater than 4, it does not assert again until the number of unread messages within the Rx FIFO is decreased to be equal to or less than 4. 0 1 No occurrence of MB6 completing transmission/reception (when MCR[RFEN]=0) or of Rx FIFO almost full (when MCR[RFEN]=1) MB6 completed transmission/reception (when MCR[RFEN]=0) or Rx FIFO almost full (when MCR[RFEN]=1)
5 BUF5I
Buffer MB5 Interrupt or "Frames available in Rx FIFO" When the RFEN bit in the MCR is cleared (Rx FIFO disabled), this bit flags the interrupt for MB5. NOTE: This flag is cleared by the FlexCAN whenever the bit MCR[RFEN] is changed by CPU writes. The BUF5I flag represents "Frames available in Rx FIFO" when MCR[RFEN] is set. In this case, the flag indicates that at least one frame is available to be read from the Rx FIFO. Table continues on the next page...
Buffer MBi Interrupt or "reserved" When the RFEN bit in the MCR is cleared (Rx FIFO disabled), these bits flag the interrupts for MB4 to MB0. NOTE: These flags are cleared by the FlexCAN whenever the bit MCR[RFEN] is changed by CPU writes. The BUF4TO0I flags are reserved when MCR[RFEN] is set. 0 1 The corresponding buffer has no occurrence of successfully completed transmission or reception (when MCR[RFEN]=0). The corresponding buffer has successfully completed transmission or reception (when MCR[RFEN]=0).
WRMFRZ
RFFN
TASD
RRS
0 0
15
Reset
Bit R
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
1
6
0
5
0
4
1
3
0
2
0
1
Reset
EACEN 0
0
MRP
Number of Rx FIFO Filters This 4-bit field defines the number of Rx FIFO filters, as shown in the following table. The maximum selectable number of filters is determined by the MCU. This field can only be written in Freeze mode as it is blocked by hardware in other modes. This field must not be programmed with values that make the number of Message Buffers occupied by Rx FIFO and ID Filter exceed the number of Mailboxes present, defined by MCR[MAXMB]. NOTE: Each group of eight filters occupies a memory space equivalent to two Message Buffers which means that the more filters are implemented the less Mailboxes will be available. Considering that the Rx FIFO occupies the memory space originally reserved for MB0-5, RFFN should be programmed with a value correponding to a number of filters not greater than the number of available memory words which can be calculated as follows: (SETUP_MB - 6) x 4 where SETUP_MB is the least between NUMBER_OF_MB and MAXMB. The number of remaining Mailboxes available will be: (SETUP_MB - 8) - (RFFN x 2) If the Number of Rx FIFO Filters programmed through RFFN exceeds the SETUP_MB value (memory space available) the exceeding ones will not be functional. RFFN[3: 0] Number of Rx FIFO fil ters 8 16 24 32 40 48 56 64 72 80 88 96 Message Buf fers occupied by Rx FIFO and ID Filter Table MB 0-7 MB 0-9 MB 0-11 MB 0-13 MB 0-15 MB 0-17 MB 0-19 MB 0-21 MB 0-23 MB 0-25 MB 0-27 MB 0-29 Remaining Available Mail boxes1 MB 8-63 MB 10-63 MB 12-63 MB 14-63 MB 16-63 MB 18-63 MB 20-63 MB 22-63 MB 24-63 MB 26-63 MB 28-63 MB 30-63 Rx FIFO ID Filter Rx FIFO ID Filter Table Elements Af Table Elements Af fected by Rx Indi fected by Rx FIFO vidual Masks2 Global Mask5 Elements 0-7 Elements 0-9 Elements 0-11 Elements 0-13 Elements 0-15 Elements 0-17 Elements 0-19 Elements 0-21 Elements 0-23 Elements 0-25 Elements 0-27 Elements 0-29 none Elements 10-15 Elements 12-23 Elements 14-31 Elements 16-39 Elements 18-47 Elements 20-55 Elements 22-63 Elements 24-71 Elements 26-79 Elements 28-87 Elements 30-95
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xA 0xB
1. The number of the last remaining available mailboxes is defined by the least value between the parameter NUMBER_OF_MB minus 1 and the MCR[MAXMB] field. 2. If Rx Individual Mask Registers are not enabled then all Rx FIFO filters are affected by the Rx FIFO Global Mask. 2319 TASD Tx Arbitration Start Delay This 5-bit field indicates how many CAN bits the Tx arbitration process start point can be delayed from the first bit of CRC field on CAN bus. This field can only be written in Freeze mode as it is blocked by hardware in other modes. This field is useful to optimize the transmit performance based on factors such as: peripheral/serial clock ratio, CAN bit timing and number of MBs. The duration of an arbitration process, in terms of CAN bits, is directly proportional to the number of available MBs and CAN baud rate and inversely proportional to the peripheral clock frequency. The optimal arbitration timing is that in which the last MB is scanned right before the first bit of the Intermission field of a CAN frame. Therefore, if there are few MBs and the system/serial clock ratio is high and the CAN baud rate is low then the arbitration can be delayed and vice-versa. If TASD is 0 then the arbitration start is not delayed, thus the CPU has less time to configure a Tx MB for the next arbitration, but more time is reserved for arbitration. In the other hand, if TASD is 24 then the CPU can configure a Tx MB later and less time is reserved for arbitration. If too little time is reserved for arbitration the FlexCAN may be not able to find winner MBs in time to compete with other nodes for the CAN bus. If the arbitration ends too much time before the first bit of Intermission field then there is a chance that the CPU reconfigures some Tx MBs and the winner MB is not the best to be transmitted. The optimal configuration for TASD can be calculated as: TASD = 25 - {fCANCLK x [MAXB + 3 - (RFEN x 8) - (RFEN x RFFN x 2)] x 2} / {fSYS x [1+(PSEG1+1)+(PSEG2+1)+(PROPSEG+1)] x (PRESDIV+1)} where: fCANCLK is the Protocol Engine (PE) Clock (see section "Protocol Timing"), in Hz; fSYS is the peripheral clock, in Hz; MAXMB is the value in CTRL1[MAXMB] field; RFEN is the value in CTRL1[RFEN] bit; RFFN is the value in CTRL2[RFFN] field; PSEG1 is the value in CTRL1[PSEG1] field; PSEG2 is the value in CTRL1[PSEG2] field; PROPSEG is the value in CTRL1[PROPSEG] field; PRESDIV is the value in CTRL1[PRESDIV] field. See Section "Arbitration process" and Section "Protocol Timing" for more details. Table continues on the next page...
Remote Request Storing If this bit is asserted Remote Request Frame is submitted to a matching process and stored in the corresponding Message Buffer in the same fashion of a Data Frame. No automatic Remote Response Frame will be generated. If this bit is negated the Remote Request Frame is submitted to a matching process and an automatic Remote Response Frame is generated if a Message Buffer with CODE=0b1010 is found with the same ID. This bit can only be written in Freeze mode as it is locked by hardware in other modes. 0 1 Remote Response Frame is generated. Remote Request Frame is stored.
16 EACEN
Entire Frame Arbitration Field Comparison Enable for Rx Mailboxes This bit controls the comparison of IDE and RTR bits whithin Rx Mailboxes filters with their corresponding bits in the incoming frame by the matching process. This bit does not affect matching for Rx FIFO. This bit can only be written in Freeze mode as it is blocked by hardware in other modes. 0 1 Rx Mailbox filters IDE bit is always compared and RTR is never compared despite mask bits. Enables the comparison of both Rx Mailbox filters IDE and RTR bit with their corresponding bits within the incoming frame. Mask bits do apply.
150 Reserved
This read-only bitfield is reserved and always has the value zero.
1. The number of the last remaining available mailboxes is defined by the least value between the parameter NUMBER_OF_MB minus 1 and the MCR[MAXMB] field. 2. If Rx Individual Mask Registers are not enabled then all Rx FIFO filters are affected by the Rx FIFO Global Mask.
Memory Map/Register Definition Addresses: CAN0_ESR2 4002_4000h base + 38h offset = 4002_4038h CAN1_ESR2 400A_4000h base + 38h offset = 400A_4038h
Bit R W 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
LPTM
Reset
Bit R W
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
VPS
IMB
Reset
15 Reserved 14 VPS
Inactive Mailbox If ESR2[VPS] is asserted, this bit indicates whether there is any inactive Mailbox (CODE field is either 0b1000 or 0b0000). This bit is asserted in the following cases: During arbitration, if an LPTM is found and it is inactive. If IMB is not asserted and a frame is transmitted successfully. This bit is cleared in all start of arbitration (see Section "Arbitration process"). Table continues on the next page...
This read-only bitfield is reserved and always has the value zero.
MBCRC
TXCRC
If Rx FIFO is enabled RXFGMASK is used to mask the Rx FIFO ID Filter Table elements that do not have a corresponding RXIMR according to CTRL2[RFFN] field setting. This register can only be written in Freeze mode as it is locked by hardware in other modes.
Addresses: CAN0_RXFGMASK 4002_4000h base + 48h offset = 4002_4048h CAN1_RXFGMASK 400A_4000h base + 48h offset = 400A_4048h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FGM[31:0] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
FGM[29:1] -
FGM[29:16], FGM[13:0] -
FGM[0] -
1. If MCR[IDAM] field is equivalent to the format B only the fourteen most significant bits of the Identifier of the incoming frame are compared with the Rx FIFO filter. 2. If MCR[IDAM] field is equivalent to the format C only the eight most significant bits of the Identifier of the incoming frame are compared with the Rx FIFO filter. 0 1 The corresponding bit in the filter is "dont care." The corresponding bit in the filter is checked.
1. If MCR[IDAM] field is equivalent to the format B only the fourteen most significant bits of the Identifier of the incoming frame are compared with the Rx FIFO filter. 2. If MCR[IDAM] field is equivalent to the format C only the eight most significant bits of the Identifier of the incoming frame are compared with the Rx FIFO filter.
IDHIT
x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
RXIMR can only be written by the CPU while the module is in Freeze Mode; otherwise, they are blocked by hardware. The Individual Rx Mask Registers are not affected by reset and must be explicitly initialized prior to any reception.
Addresses: 4002_4000h base + 880h offset + (4d n), where n = 0d to 15d
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MI[31:0] x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x* x*
CODE
DLC
CODE Message Buffer Code This 4-bit field can be accessed (read or write) by the CPU and by the FlexCAN module itself, as part of the message buffer matching and arbitration process. The encoding is shown in Table 45-109 and Table 45-110. See Functional Description for additional information.
Table 45-109. Message Buffer Code for Rx buffers
CODE Descrip tion 0b0000: INAC TIVE- MB is not active. 0b0100: EMPTY MB is active and empty. Rx Code BEFORE receive New Frame INACTIVE SRV1 Rx Code AFTER successful recep tion2 RRS3 Comment
MB does not par ticipate in the matching process. When a frame is received success fully (after move-in process. Refer to Section "Move-in" for details), the CODE field is auto matically updated to FULL.
EMPTY
FULL
Yes
The act of reading the C/S word fol lowed by unlocking the MB (SRV) does not make the code return to EMPTY. It remains FULL. If a new frame is moved to the MB after the MB was serviced, the code still re mains FULL. Refer to Section "Match ing Process" for matching details related to FULL code. If the MB is FULL and a new frame is moved to this MB before the CPU service it, the CODE field is auto matically updated to OVERRUN. Re fer to Section "Matching Proc ess" for details about overrun be havior.
No
OVERRUN
Yes
If the CODE field indicates OVER RUN and CPU has serviced the MB, when a new frame is moved to the MB, the code re turns to FULL. If the CODE field already indicates OVERRUN, and another new frame must be moved, the MB will be overwritten again, and the code will remain OVER RUN. Refer to Section "Matching Process" for details about overrun be havior. A Remote Answer was configured to recognize a remote request frame re ceived, after that a MB is set to trans mit a response frame. The code is automatically changed to TANSWER (0b1110). Refer to Section "Matching Process" for de tails. If CTRL2[RRS] is ne gated, transmit a response frame whenever a remote request frame with the same ID is re ceived. This code is ignor ed during matching and arbitration process. Refer to Section "Matching Process for details.
No
OVERRUN
0b1010: RANSW ER4 - A frame was configured to rec ognize a Remote Request Frame and transmit a Re sponse Frame in return.
RANSWER
TANSW ER(0b1110)
Indicates that the MB is being upda ted, it will be nega ted automatically and does not inter fere on the next CODE.
1. SRV: Serviced MB. MB was read and unlocked by reading TIMER or other MB. 2. A frame is considered successful reception after the frame to be moved to MB (move-in process). Refer to Section "Movein" for details) 3. Remote Request Stored bit from CTRL2 register. Refer to Section "Control 2 Register (CTRL2)" for details. 4. Code 0b1010 is not considered Tx and a MB with this code should not be aborted. 5. Note that for Tx MBs, the BUSY bit should be ignored upon read, except when AEN bit is set in the MCR register. If this bit is asserted, the corresponding MB does not participate in the matching process.
ABORT
DATA
INACTIVE
REMOTE
EMPTY
SRR Substitute Remote Request Fixed recessive bit, used only in extended format. It must be set to '1' by the user for transmission (Tx Buffers) and will be stored with the value received on the CAN bus for Rx receiving buffers. It can be received as either recessive or dominant. If FlexCAN receives this bit as dominant, then it is interpreted as arbitration loss. 1 = Recessive value is compulsory for transmission in Extended Format frames 0 = Dominant is not a valid value for transmission in Extended Format frames IDE ID Extended Bit This bit identifies whether the frame format is standard or extended. 1 = Frame format is extended 0 = Frame format is standard RTR Remote Transmission Request This bit affects the behavior of Remote Frames and is part of the reception filter. Refer to Table 45-109 , Table 45-110 and the description of the RRS bit in Control 2 Register (CTRL2) for additional details.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1211
If FlexCAN transmits this bit as '1' (recessive) and receives it as '0' (dominant), it is interpreted as arbitration loss. If this bit is transmitted as '0' (dominant), then if it is received as '1' (recessive), the FlexCAN module treats it as bit error. If the value received matches the value transmitted, it is considered as a successful bit transmission. 1 = Indicates the current MB may have a Remote Request Frame to be transmitted if MB is Tx. If the MB is Rx then incoming Remote Request Frames may be stored. 0 = Indicates the current MB has a Data Frame to be transmitted.. In Rx MB it may be considered in matching processes. DLC Length of Data in Bytes This 4-bit field is the length (in bytes) of the Rx or Tx data, which is located in offset 0x8 through 0xF of the MB space (see Table 45-108 ). In reception, this field is written by the FlexCAN module, copied from the DLC (Data Length Code) field of the received frame. In transmission, this field is written by the CPU and corresponds to the DLC field value of the frame to be transmitted. When RTR=1, the Frame to be transmitted is a Remote Frame and does not include the data field, regardless of the DLC field. TIME STAMP Free-Running Counter Time Stamp This 16-bit field is a copy of the Free-Running Timer, captured for Tx and Rx frames at the time when the beginning of the Identifier field appears on the CAN bus. PRIO Local priority This 3-bit field is only used when LPRIO_EN bit is set in MCR and it only makes sense for Tx mailboxes. These bits are not transmitted. They are appended to the regular ID to define the transmission priority. See Arbitration process. ID Frame Identifier In Standard Frame format, only the 11 most significant bits (28 to 18) are used for frame identification in both receive and transmit cases. The 18 least significant bits are ignored. In Extended Frame format, all bits are used for frame identification in both receive and transmit cases. DATA BYTE 0-7 Data Field Up to eight bytes can be used for a data frame. For Rx frames, the data is stored as it is received from the CAN bus. DATA BYTE (n) is valid only if n is less than DLC as shown in the table below. For Tx frames, the CPU prepares the data field to be transmitted within the frame.
DLC
TIME STAMP ID Extended Data Byte 2 Data Byte 6 Data Byte 3 Data Byte 7
Each ID Filter Table Element occupies an entire 32-bit word and can be compound by one, two or four Identifier Acceptance Filters (IDAF) depending on the MCR[IDAM] field setting. The following figures show the IDAF indexation. The following figures show the three different formats of the ID table elements. Note that all elements of the table must have the same format. See Rx FIFO for more information.
Table 45-113. ID Table structure
For mat A 31 RT R RT R 30 IDE RXIDB_0 (Standard = 29-19, Extended = 29-16) RXIDC_0 (Std/Ext = 31-24) RXIDC_1 (Std/Ext = 23-16) 29 24 23 16 15 RXIDA (Standard = 29-19, Extended = 29-1) RT R IDE RXIDB_1 (Standard = 13-3, Extended = 13-0) RXIDC_2 (Std/Ext = 15-8) RXIDC_3 (Std/Ext = 7-0) 14 13 8 7 1 0
IDE
= Unimplemented or Reserved
RTR Remote Frame This bit specifies if Remote Frames are accepted into the FIFO if they match the target ID. 1 = Remote Frames can be accepted and data frames are rejected 0 = Remote Frames are rejected and data frames can be accepted
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1214 Freescale Semiconductor, Inc.
IDE Extended Frame Specifies whether extended or standard frames are accepted into the FIFO if they match the target ID. 1 = Extended frames can be accepted and standard frames are rejected 0 = Extended frames are rejected and standard frames can be accepted RXIDA Rx Frame Identifier (Format A) Specifies an ID to be used as acceptance criteria for the FIFO. In the standard frame format, only the 11 most significant bits (29 to 19 ) are used for frame identification. In the extended frame format, all bits are used. RXIDB_0, RXIDB_1 Rx Frame Identifier (Format B) Specifies an ID to be used as acceptance criteria for the FIFO. In the standard frame format, the 11 most significant bits (a full standard ID) (29 to 19 and 13 to 3 ) are used for frame identification. In the extended frame format, all 14 bits of the field are compared to the 14 most significant bits of the received ID. RXIDC_0, RXIDC_1, RXIDC_2, RXIDC_3 Rx Frame Identifier (Format C) Specifies an ID to be used as acceptance criteria for the FIFO. In both standard and extended frame formats, all 8 bits of the field are compared to the 8 most significant bits of the received ID.
Functional Description
Before proceeding with the functional description, an important concept must be explained. A Message Buffer is said to be "active" at a given time if it can participate in both the Matching and Arbitration processes. An Rx MB with a 0b0000 code is inactive (refer to Table 45-109 ). Similarly, a Tx MB with a 0b1000 or 0b1001 code is also inactive (refer to Table 45-110 ). An MB not programmed with 0b0000, 0b1000 or 0b1001 can be temporarily deactivated (will not participate in the current arbitration or matching run) when the CPU writes to the C/S field of that MB (see Message Buffer Deactivation ).
When the Abort feature is enabled (MCR[AEN] is asserted), after the Interrupt Flag is asserted for a MB configured as transmit buffer, the MB is blocked, therefore the CPU is not able to update it until the Interrupt Flag is negated by CPU. This means that the CPU must clear the corresponding IFLAG before starting to prepare this MB for a new transmission or reception.
Functional Description
If MCR[LPRIO_EN] bit is negated the arbitration value is built in the exact sequence of bits as they would be transmitted in a CAN frame (see the following table) in such a way that the Local Priority is disabled.
Table 45-114. Composition of the arbitration value when Local Priority is disabled
Format Standard (IDE = 0) Standard ID (11 bits) Mailbox Arbitration Value (32 bits) RTR (1 bit) SRR (1 bit) IDE (1 bit) IDE (1 bit) - (18 bits) Extended ID[17:0] (18 bits) - (1 bit) RTR (1 bit)
45.4.2.2.2
If Local Priority is desired MCR[LPRIO_EN] must be asserted. In this case the Mailbox PRIO field is included at the very left of the arbitration value (see the following table).
Table 45-115. Composition of the arbitration value when Local Priority is enabled
Format Standard (IDE = 0) Extended (IDE = 1) PRIO (3 bits) PRIO (3 bits) Standard ID (11 bits) Extended ID[28:18] (11 bits) Mailbox Arbitration Value (35 bits) RTR (1 bit) SRR (1 bit) IDE (1 bit) IDE (1 bit) - (18 bits) Extended ID[17:0] (18 bits) - (1 bit) RTR (1 bit)
As the PRIO field is the most significant part of the arbitration value Mailboxes with low PRIO values have higher priority than Mailboxes with high PRIO values regardless the rest of their arbitration values. Note that the PRIO field is not part of the frame on the CAN bus. Its purpose is only to affect the internal arbitration process.
Functional Description
after arbitration process has finished, then TX arbitration machine begins a new arbitration process. If there is a pending arbitration and BusIdle state starts then an arbitration process is triggered. In this case the first and second C/S write in BusIdle will not restart the arbitration process. It is possible that there is not enough time to finish arbitration in WaitForBusIdle state and the next state is Idle. In this case the scan is not interrupted, and it is completed during BusIdle state. During this arbitration C/S write does not cause arbitration restart. Arbitration winner deactivation during a valid arbitration window. Upon Leave Freeze Mode (first bit of the WaitForBusIdle state). If there is a resynchronization during WaitForBusIdle arbitration process is restarted. Arbitration process stops in the following situation: All Mailboxes were scanned. A Tx active Mailbox is found in case of Lowest Buffer feature enabled. Arbitration winner inactivation or abort during any arbitration process. There was not enough time to finish Tx arbitration process. For instance, a deactivation was performed near the end of frame). In this case arbitration process is pending. Error or Overload flag in the bus . Low Power or Freeze Mode request in Idle state Arbitration is considered pending as described below: It was not possible to finish arbitration process in time. C/S write during arbitration if write is performed in a MB which number is lower than the Tx arbitration pointer . Any C/S write if there is no Tx Arbitration process in progress. Rx Match has just updated a Rx Code to Tx Code. Entering Busoff state. C/S write during arbitration has the following effect: If C/S write is performed in the arbitration winner, a new process is restarted immediately. If C/S write is performed in a MB whose number is higher than the Tx arbitration pointer, the ongoing arbitration process will scan this MB as normal.
Functional Description
The CPU should synchronize to frame reception by the status flag bit for the specific Mailbox in one of the IFLAG Registers and not by the CODE field of that Mailbox. Polling the CODE field does not work because once a frame was received and the CPU services the Mailbox (by reading the C/S word followed by unlocking the Mailbox), the CODE field will not return to EMPTY. It will remain FULL, as explained in Table 45-109 . If the CPU tries to workaround this behavior by writing to the C/S word to force an EMPTY code after reading the Mailbox without a prior safe inactivation, a newly received frame matching the filter of that Mailbox may be lost. CAUTION In summary: never do polling by reading directly the C/S word of the Mailboxes. Instead, read the IFLAG registers. Note that the received frames Identifier field is always stored in the matching Mailbox, thus the contents of the ID field in an Mailbox may change if the match was due to masking. Note also that FlexCAN does receive frames transmitted by itself if there exists a matching Rx Mailbox, provided the MCR[SRXDIS] bit is not asserted. If the MCR[SRXDIS] bit is asserted, FlexCAN will not store frames transmitted by itself in any MB, even if it contains a matching MB, and no interrupt flag or interrupt signal will be generated due to the frame reception. To be able to receive CAN frames through the Rx FIFO, the CPU must enable and configure the Rx FIFOduring Freeze Mode (see Rx FIFO ). Upon receiving the Frames Available in Rx FIFO interrupt (see the description of the IFLAG[BUF5I] "Frames available in Rx FIFO" bit in the IMASK1 register), the CPU should service the received frame using the following procedure: 1. Read the Control and Status word (optional needed only if a mask was used for IDE and RTR bits) 2. Read the ID field (optional needed only if a mask was used) 3. Read the Data field 4. Read the RXFIR register (optional) 5. Clear the Frames Available in Rx FIFO interrupt by writing 1 to IFLAG[BUF5I] bit (mandatory releases the MB and allows the CPU to read the next Rx FIFO entry)
Functional Description
Mailbox Mailbox
1 1
0 1
cmp cmp
no_cmp no_cmp
cmp cmp_msk
Mailbox
cmp_msk
cmp_msk
cmp_msk
FIFO5
cmp_msk
cmp_msk
cmp_msk
1. For Mailbox structure, If SMB[IDE] is asserted, the ID is 29 bits (ID Standard + ID Extended). If SMB[IDE] is negated, the ID is only 11 bits (ID Standard). For FIFO structure, the ID depends on IDAM. 2. cmp: Compares the SMB contents with the MB contents regardless the masks. 3. no_cmp: The SMB contents are not compared with the MB contents 4. cmp_msk: Compares the SMB contents with MB contents taking into account the masks. 5. SMB[IDE] and SMB[RTR] are not taken into account when IDAM is type C.
A reception structure is free-to-receive when any of the following conditions is satisfied: the CODE field of the Mailbox is EMPTY; the CODE field of the Mailbox is either FULL or OVERRUN and it has already been serviced (the C/S word was read by the CPU and unlocked as described in Message Buffer Lock Mechanism ); the CODE field of the Mailbox is either FULL or OVERRUN and a inactivation (see Message Buffer Inactivation ) is performed; the Rx FIFO is not full. The scan order for Mailboxes and Rx FIFO is from the matching element with lowest number to the higher ones. The matching winner search for Mailboxes is affected by the MCR[IRMQ] bit. If it is negated the matching winner is the first matched Mailbox regardless if it is free-toreceive or not. If it is asserted, the matching winner is selected according to the priority below: 1. the first free-to-receive matched Mailbox; 2. the last non free-to-receive matched Mailbox. It is possible to select the priority of scan between Mailboxes and Rx FIFO by the CTRL2[MRP] bit. If the selected priority is Rx FIFO first:
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1224 Freescale Semiconductor, Inc.
if the Rx FIFO is a matched structure and is free-to-receive then the Rx FIFO is the matching winner regardless of the scan for Mailboxes; otherwise (the Rx FIFO is not a matched structure or is not free-to-receive), then the matching winner is searched among Mailboxes as described above. If the selected priority is Mailboxes first: if a free-to-receive matched Mailbox is found, it is the matching winner regardless the scan for Rx FIFO; if no matched Mailbox is found, then the matching winner is searched in the scan for the Rx FIFO; If both conditions above are not satisfied and a non free-to-receive matched Mailbox is found then the matching winner determination is conditioned by the MCR[IRMQ] bit: if MCR[IRMQ] bit is negated the matching winner is the first matched Mailbox; if MCR[IRMQ] bit is asserted the matching winner is the Rx FIFO if it is a free-toreceive matched structure, otherwise the matching winner is the last non free-toreceive matched Mailbox. See the following table for a summary of matching possibilities.
Table 45-117. Matching Possibilities and Resulting Reception Structures
RFEN IRMQ MRP Matched in MB Matched in FIFO Reception Structure Description
No FIFO, only MB, match is always MB first 0 0 0 0 0 0 0 1 1 1 X1 X X X X None2 Free4 None Free NotFree -3 None FirstMB None FirstMb LastMB Overrun Frame lost by no match Frame lost by no match
FIFO enabled, no match in FIFO is as if FIFO does not exist 1 1 1 1 1 0 0 1 1 1 X X X X X None Free None Free NotFree None5 None None None None None FirstMB None FirstMb LastMB Overrun Frame lost by no match Frame lost by no match
Functional Description
1 1 1 1
0 0 0 0
0 0 1 1
FirstMB FirstMB FIFO None Frame lost by FIFO full (FIFO Overflow)
1 1
0 0
1 1
X X
1 1
1 1
0 0
X None
NotFull Full
1 1 1 1 1 1 1. 2. 3. 4.
1 1 1 1 1 1
0 0 1 1 1 1
This is a dont care condition. Matched in MB None means that the frame has not matched any MB (free-to-receive or non-free-to-receive). This is a forbidden condition. Matched in MB Free means that the frame matched at least one MB free-to-receive regardless of whether it has matched MBs non-free-to-receive. 5. Matched in FIFO None means that the frame has not matched any filter in FIFO. It is as if the FIFO didnt exist (CTRL2[RFEN]=0). 6. Matched in FIFO NotFull means that the frame has matched a FIFO filter and has empty slots to receive it. 7. Matched in FIFO Full means that the frame has matched a FIFO filter but couldnt store it because it has no empty slots to receive it.
If a non-safe Mailbox inactivation (see Message Buffer Inactivation ) occurs during matching process and the Mailbox inactivated is the temporary matching winner then the temporary matching winner is invalidated. The matching elements scan is not stopped nor restarted, it continues normally. The consequence is that the current matching process works as if the matching elements compared before the inactivation did not exist, therefore a message may be lost.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1226 Freescale Semiconductor, Inc.
Suppose, for example, that the FIFO is disabled, IRMQ is enabled and there are two MBs with the same ID, and FlexCAN starts receiving messages with that ID. Let us say that these MBs are the second and the fifth in the array. When the first message arrives, the matching algorithm will find the first match in MB number 2. The code of this MB is EMPTY, so the message is stored there. When the second message arrives, the matching algorithm will find MB number 2 again, but it is not "free-to-receive", so it will keep looking and find MB number 5 and store the message there. If yet another message with the same ID arrives, the matching algorithm finds out that there are no matching MBs that are "free-to-receive", so it decides to overwrite the last matched MB, which is number 5. In doing so, it sets the CODE field of the MB to indicate OVERRUN. The ability to match the same ID in more than one MB can be exploited to implement a reception queue (in addition to the full featured FIFO) to allow more time for the CPU to service the MBs. By programming more than one MB with the same ID, received messages will be queued into the MBs. The CPU can examine the Time Stamp field of the MBs to determine the order in which the messages arrived. Matching to a range of IDs is possible by using ID Acceptance Masks. FlexCAN supports individual masking per MB. Refer to the description of the Rx Individual Mask Registers (RXIMRx). During the matching algorithm, if a mask bit is asserted, then the corresponding ID bit is compared. If the mask bit is negated, the corresponding ID bit is "don't care". Please note that the Individual Mask Registers are implemented in RAM, so they are not initialized out of reset. Also, they can only be programmed while the module is in Freeze Mode; otherwise, they are blocked by hardware. FlexCAN also supports an alternate masking scheme with only four mask registers (RGXMASK, RX14MASK, RX15MASK and RXFGMASK) for backwards compatibility. This alternate masking scheme is enabled when the IRMQ bit in the MCR Register is negated.
45.4.5.1 Move-in
The move-in process is the copy of a message received by an Rx SMB to a Rx Mailbox or FIFO that has matched it. If the move destination is the Rx FIFO, attributes of the message are also copied to the RXFIR FIFO. Each Rx SMB has its own move-in process,
Functional Description
but only one is performed at a given time as described ahead. The move-in starts only when the message held by the Rx SMB has a corresponding matching winner (see Section "Matching Process") and all of the following conditions are true: the CAN bus has reached or let past either: the second bit of Intermission field next to the frame that carried the message that is in the Rx SMB; the first bit of an overload frame next to the frame that carried the message that is in the Rx SMB; there is no ongoing matching process; the destination Mailbox is not locked by the CPU; there is no ongoing move-in process from another Rx SMB. If more than one movein processes are to be started at the same time both are performed and the newest substitutes the oldest. The term pending move-in is used throughout the document and stands for a move-to-be that still does not satisfy all of the aforementioned conditions. The move-in is cancelled and the Rx SMB is able to receive another message if any of the following conditions is satisfied: the destination Mailbox is inactivated after the CAN bus has reached the first bit of Intermission field next to the frame that carried the message and its matching process has finished; there is a previous pending move-in to the same destination Mailbox; the Rx SMB is receiving a frame transmitted by the FlexCAN itself and the selfreception is disabled (MCR[SRXDIS] bit is asserted); any CAN protocol error is detected. Note that the pending move-in is not cancelled if the module enters Freeze or Low Power Mode. It only stays on hold waiting for exiting Freeze and Low Pwer Mode and to be unlocked. If an MB is unlocked during Freeze Mode, the move-in happens immediately. The move-in process is the execution by the FlexCAN of the following steps: 1. 2. 3. 4. 5. if the message is destined to the Rx FIFO, push IDHIT into the RXFIR FIFO; reads the words DATA0-3 and DATA4-7 from the Rx SMB; writes it in the words DATA0-3 and DATA4-7 of the Rx Mailbox; reads the words Control/Status and ID from the Rx SMB; writes it in the words Control/Status and ID of the Rx Mailbox, updating the CODE field.
The move-in process is not atomic, in such a way that it is immediately cancelled by the inactivation of the destination Mailbox (see Section "Message Buffer Inactivation") and in this case the Mailbox may be left partially updated, thus incoherent. The exception is if the move-in destination is an Rx FIFO Message Buffer, then the process cannot be cancelled. The BUSY Bit (least significant bit of the CODE field) of the destination Message Buffer is asserted while the move-in is being performed to alert the CPU that the Message Buffer content is temporarily incoherent.
45.4.5.2 Move-out
The move-out process is the copy of the content from a Tx Mailbox to the Tx SMB when a message for transmission is available (see Section "Arbitration process"). The move-out occurs in the following conditions: the first bit of Intermission field; during Bussoff field when TX Error Counter is in the 124 to 128 range; during BusIdle field during Wait For Bus Idle field
The move-out process is not atomic. Only the CPU has priority to access the memory concurrently out of BusIdle state. In BusIdle, the move-out has the lowest priority to the concurrent memory accesses.
Functional Description
Mailbox that is currently being transmitted, or to a Mailbox that was already loaded into the SMB for transmission, the write operation is blocked and the MB is kept active, but the abort request is captured and kept pending until one of the following conditions are satisfied: The module loses the bus arbitration There is an error during the transmission The module is put into Freeze Mode The module enters in BusOff state There is an overload frame If none of conditions above are reached, the MB is transmitted correctly, the interrupt flag is set in the IFLAG register and an interrupt to the CPU is generated (if enabled). The abort request is automatically cleared when the interrupt flag is set. On the other hand, if one of the above conditions is reached, the frame is not transmitted; therefore, the abort code is written into the CODE field, the interrupt flag is set in the IFLAG and an interrupt is (optionally) generated to the CPU. If the CPU writes the abort code before the transmission begins internally, then the write operation is not blocked; therefore, the MB is updated and the interrupt flag is set. In this way the CPU just needs to read the abort code to make sure the active MB was safely inactivated. Although the AEN bit is asserted and the CPU wrote the abort code, in this case the MB is inactivated and not aborted, because the transmission did not start yet. One Mailbox is only aborted when the abort request is captured and kept pending until one of the previous conditions are satisfied. The abort procedure can be summarized as follows: CPU checks the corresponding IFLAG and clears it, if asserted. CPU writes 0b1001 into the CODE field of the C/S word. CPU waits for the corresponding IFLAG indicating that the frame was either transmitted or aborted. CPU reads the CODE field to check if the frame was either transmitted (CODE=0b1000) or aborted (CODE=0b1001). It is necessary to clear the corresponding IFLAG in order to allow the MB to be reconfigured.
Functional Description
it reads the Control and Status word of another MB regardless of its code, or when the CPU writes into C/S word from locked MB. The MB locking is done to prevent a new frame to be written into the MB while the CPU is reading it. NOTE The locking mechanism only applies to Rx MBs that are not part of FIFO and have a code different than INACTIVE (0b0000) or EMPTY1 (0b0100). Also, Tx MBs can not be locked. Suppose, for example, that the FIFO is disabled and the second and the fifth MBs of the array are programmed with the same ID, and FlexCAN has already received and stored messages into these two MBs. Suppose now that the CPU decides to read MB number 5 and at the same time another message with the same ID is arriving. When the CPU reads the Control and Status word of MB number 5, this MB is locked. The new message arrives and the matching algorithm finds out that there are no "free-to-receive" MBs, so it decides to override MB number 5. However, this MB is locked, so the new message can not be written there. It will remain in the SMB waiting for the MB to be unlocked, and only then will be written to the MB. If the MB is not unlocked in time and yet another new message with the same ID arrives, then the new message overwrites the one on the SMB and there will be no indication of lost messages either in the CODE field of the MB or in the Error and Status Register. While the message is being moved-in from the SMB to the MB, the BUSY bit on the CODE field is asserted. If the CPU reads the Control and Status word and finds out that the BUSY bit is set, it should defer accessing the MB until the BUSY bit is negated. Note If the BUSY bit is asserted or if the MB is empty, then reading the Control and Status word does not lock the MB. Inactivation takes precedence over locking. If the CPU inactivates a locked Rx MB, then its lock status is negated and the MB is marked as invalid for the current matching round. Any pending message on the SMB will not be transferred anymore to the MB. An MB is unlocked when the CPU reads the Free Running Timer Register (see Section "Free Running Timer Register (TIMER)"), or the C/S word of another MB. Lock and unlock mechanisms have the same functionality in both Normal and Freeze modes.
1.
In previous FlexCAN versions, reading the C/S word locked the MB even if it was EMPTY. This behavior is maintained when the IRMQ bit is negated.
An unlock during Normal or Freeze mode results in the move-in of the pending message. However, the move-in is postponed if an unlock occurs during any of the low power modes (see in Section "Modes of Operation" specific information on Module Disable, Doze or Stop modes) and it will take place only when the module resumes to Normal or Freeze modes.
45.4.7 Rx FIFO
The receive-only FIFO is enabled by asserting the RFEN bit in the MCR. The reset value of this bit is zero to maintain software backward compatibility with previous versions of the module that did not have the FIFO feature. The FIFO is 6-message deep, therefore when the FIFO is enabled, the memory region occupied by the first 6 Message Buffers is reserved for use of the FIFO engine (see Rx FIFO Structure ). The CPU can read the received messages sequentially, in the order they were received, by repeatedly reading a Message Buffer structure at the output of the FIFO. The IFLAG[BUF5I] (Frames available in Rx FIFO) is asserted when there is at least one frame available to be read from the FIFO. An interrupt is generated if it is enabled by the corresponding mask bit. Upon receiving the interrupt, the CPU can read the message (accessing the output of the FIFO as a Message Buffer) and the RXFIR register and then clear the interrupt. If there are more messages in the FIFO the act of clearing the interrupt updates the output of the FIFO with the next message and update the RXFIR with the attributes of that message, reissuing the interrupt to the CPU. Otherwise, the flag remains negated. The output of the FIFO is only valid whilst the IFLAG[BUF5I] is asserted. The IFLAG[BUF6I] (Rx FIFO Warning) is asserted when the number of unread messages within the Rx FIFO is increased to 5 from 4 due to the reception of a new one, meaning that the Rx FIFO is almost full. The flag remains asserted until the CPU clears it. The IFLAG[BUF7I] (Rx FIFO Overflow) is asserted when an incoming message was lost because the Rx FIFO is full. Note that the flag will not be asserted when the Rx FIFO is full and the message was captured by a Mailbox. The flag remains asserted until the CPU clears it. Clearing one of those three flags does not affect the state of the other two. An interrupt is generated if an IFLAG bit is asserted and the corresponding mask bit is asserted too.
Functional Description
A powerful filtering scheme is provided to accept only frames intended for the target application, thus reducing the interrupt servicing work load. The filtering criteria is specified by programming a table of up to 128 32-bit registers, according to CTRL2[RFFN] setting, that can be configured to one of the following formats (see also Rx FIFO Structure ): Format A: 128 IDAFs (extended or standard IDs including IDE and RTR) Format B: 256 IDAFs (standard IDs or extended 14-bit ID slices including IDE and RTR) Format C: 512 IDAFs (standard or extended 8-bit ID slices) Note A chosen format is applied to all entries of the filter table. It is not possible to mix formats within the table. Every frame available in the FIFO has a corresponding IDHIT (Identifier Acceptance Filter Hit Indicator) that can be read by accessing the RXFIR register. The RXFIR[IDHIT] field refers to the message at the output of the FIFO and is valid while the IFLAG[BUF5I] flag is asserted. The RXFIR register must be read only before clearing the flag, which guarantees that the information refers to the correct frame within the FIFO. Up to thirty two elements of the filter table are individually affected by the Individual Mask Registers (RXIMRx), according to the setting of CTRL2[RFFN], allowing very powerful filtering criteria to be defined. If the IRMQ bit is negated, then the FIFO filter table is affected by RXFGMASK.
When a remote request frame is received by FlexCAN, it can be treated in three ways, depending on Remote Request Storing (CTRL2[RRS]) and Rx FIFO Enable (MCR[RFEN]) bits: If RRS is negated the frame's ID is compared to the IDs of the Transmit Message Buffers with the CODE field 0b1010. If there is a matching ID, then this mailbox frame will be transmitted. Note that if the matching mailbox has the RTR bit set, then FlexCAN will transmit a remote frame as a response. The received remote request frame is not stored in a receive buffer. It is only used to trigger a transmission of a frame in response. The mask registers are not used in remote frame matching, and all ID bits (except RTR) of the incoming received frame should match. In the case that a remote request frame was received and matched a mailbox, this message buffer immediately enters the internal arbitration process, but is considered as normal Tx mailbox, with no higher priority. The data length of this frame is independent of the DLC field in the remote frame that initiated its transmission. If RRS is asserted the frame's ID is compared to the IDs of the receive mailboxes with the CODE field 0b0100, 0b0010 or 0b0110. If there is a matching ID, then this mailbox will store the remote frame in the same fashion of a data frame. No automatic remote response frame will be generated. The mask registers are used in the matching process. If RFEN is asserted FlexCAN will not generate an automatic response for remote request frames that match the FIFO filtering criteria. If the remote frame matches one of the target IDs, it will be stored in the FIFO and presented to the CPU. Note that for filtering formats A and B, it is possible to select whether remote frames are accepted or not. For format C, remote frames are always accepted (if they match the ID). Remote Request Frames are considered as normal frames, and generate a FIFO overflow when a successful reception occurs and the FIFO is already full.
Functional Description
Prescaler (1 .. 256)
CLK_SRC
The crystal oscillator clock should be selected whenever a tight tolerance (up to 0.1%) is required in the CAN bus timing. The crystal oscillator clock has better jitter performance than PLL generated clocks. The FlexCAN module supports a variety of means to setup bit timing parameters that are required by the CAN protocol. The Control Register has various fields used to control bit timing parameters: PRESDIV, PROPSEG, PSEG1, PSEG2 and RJW. See the description of the Control 1 Register (CTRL1). The PRESDIV field controls a prescaler that generates the Serial Clock (Sclock), whose period defines the 'time quantum' used to compose the CAN waveform. A time quantum is the atomic unit of time handled by the CAN engine.
f Tq = (Prescaler Value)
A bit time is subdivided into three segments2 (reference Figure 45-105 and Table 45-118 ): SYNC_SEG: This segment has a fixed length of one time quantum. Signal edges are expected to happen within this section Time Segment 1: This segment includes the Propagation Segment and the Phase Segment 1 of the CAN standard. It can be programmed by setting the PROPSEG and the PSEG1 fields of the CTRL1 Register so that their sum (plus 2) is in the range of 4 to 16 time quanta Time Segment 2: This segment represents the Phase Segment 2 of the CAN standard. It can be programmed by setting the PSEG2 field of the CTRL1 Register (plus 1) to be 2 to 8 time quanta long
f CANCLK
Bit Rate =
NRZ Signal
SYN C _SEG 1
Time Segment 1 (PROP_SEG + PSEG1 + 2) 4 ... 16 8 ... 25 Time Quanta = 1 Bit Time
Transmit Point
Whenever CAN bit is used as a measure of duration (e.g. MCR[FRZACK] and MCR[LPMACK]), the number of peripheral clocks in one CAN bit can be calculated as:
2. For further explanation of the underlying concepts please refer to ISO/DIS 115191, Section 10.3. Reference also the Bosch CAN 2.0A/B protocol specification dated September 1991 for bit timing.
Functional Description
NCCP =
where: NCCP is the number of peripheral clocks in one CAN bit; fCANCLK is the Protocol Engine (PE) Clock (see Figure "CAN Engine Clocking Scheme"), in Hz; fSYS is the frequency of operation of the system (CHI) clock, in Hz; PSEG1 is the value in CTRL1[PSEG1] field; PSEG2 is the value in CTRL1[PSEG2] field; PROPSEG is the value in CTRL1[PROPSEG] field; PRESDIV is the value in CTRL1[PRESDIV] field. For example, 180 CAN bits = 180 x NCCP peripheral clock periods.
Table 45-118. Time Segment Syntax
Syntax SYNC_SEG Transmit Point Sample Point Description System expects transitions to occur on the bus during this period. A node in transmit mode transfers a new value to the CAN bus at this point. A node samples the bus at this point. If the three samples per bit option is selected, then this point marks the position of the third sample.
The following table gives an overview of the CAN compliant segment settings and the related parameter values.
Table 45-119. CAN Standard Compliant Bit Time Segment Settings
Time Segment 1 5 .. 10 4 .. 11 5 .. 12 6 .. 13 7 .. 14 8 .. 15 9 .. 16 Time Segment 2 2 3 4 5 6 7 8 Re-synchronization Jump Width 1 .. 2 1 .. 3 1 .. 4 1 .. 4 1 .. 4 1 .. 4 1 .. 4
Note It is the user's responsibility to ensure the bit time settings are in compliance with the CAN standard. For bit time calculations, use an IPT (Information Processing Time) of 2, which is the value implemented in the FlexCAN module.
EOF (7)
Interm
Move-in Window
CRC (15)
Arbitration Window (25 bits)
EOF (7)
Interm
Window
Move-out
BusOff
0 1 2 3 ... 123 124
TASD Count
125
126
...
128
Figure 45-108. Arbitration at the end of Bus Off and Move-Out Time Windows
Functional Description
NOTE The matching and arbitration timing shown in the preceding figures do not take into account the delay caused by the concurrent memory access due to the CPU or other internal peripheral. When doing matching and arbitration, FlexCAN needs to scan the whole Message Buffer memory during the available time slot. In order to have sufficient time to do that, the following requirements must be observed: A valid CAN bit timing must be programmed, as indicated in Table 45-119 The peripheral clock frequency can not be smaller than the oscillator clock frequency, i.e. the PLL can not be programmed to divide down the oscillator clock There must be a minimum ratio between the peripheral clock frequency and the CAN bit rate, as specified in the following table
Table 45-120. Minimum Ratio Between Peripheral Clock Frequency and CAN Bit Rate
Number of Message Buffers 16 and 32 64 16 32 64 RFEN 0 0 1 1 1 Minimum Number of Peripheral Clocks per CAN bit 16 25 16 17 30
A direct consequence of the first requirement is that the minimum number of time quanta per CAN bit must be 8, so the oscillator clock frequency should be at least 8 times the CAN bit rate. The minimum frequency ratio specified in the preceding table can be achieved by choosing a high enough peripheral clock frequency when compared to the oscillator clock frequency, or by adjusting one or more of the bit timing parameters (PRESDIV, PROPSEG, PSEG1, PSEG2). As an example, taking the case of 64 MBs, if the oscillator and peripheral clock frequencies are equal and the CAN bit timing is programmed to have 8 time quanta per bit, then the prescaler factor (PRESDIV + 1) should be at least 2. For prescaler factor equal to one and CAN bit timing with 8 time quanta per bit, the ratio between peripheral and oscillator clock frequencies should be at least 2.
Functional Description
Exiting Freeze Mode is done in one of the following ways: CPU negates the FRZ bit in the MCR Register The MCU is removed from Debug Mode and/or the HALT bit is negated The FRZ_ACK bit is negated after the protocol engine recognizes the negation of the freeze request. Once out of Freeze Mode, FlexCAN tries to re-synchronize to the CAN bus by waiting for 11 consecutive recessive bits.
Functional Description
Doze Mode request. It also sets the WAK_INT bit in the ESR Register and, if enabled by the WAK_MSK bit in MCR, generates a Wake Up interrupt to the CPU. FlexCAN will then wait for 11 consecutive recessive bits to synchronize to the CAN bus. As a consequence, it will not receive the frame that woke it up. The following table details the effect of SLF_WAK and WAK_MSK upon wake-up from Doze Mode.
Table 45-121. Wake-up from Doze Mode
SLF_WAK 0 0 1 1 1 1 WAK_INT 0 0 1 1 WAK_MSK 0 1 0 1 FlexCAN Clocks Ena bled No No No No Yes Yes Wake-up Interrupt Generated No No No No No Yes
Exiting Stop Mode is done in one of the following ways: CPU resuming the clocks and removing the Stop Mode request CPU resuming the clocks and Stop Mode request as a result of the Self Wake mechanism In the Self Wake mechanism, if the SLF_WAK bit in MCR Register was set at the time FlexCAN entered Stop Mode, then upon detection of a recessive to dominant transition on the CAN bus, FlexCAN sets the WAK_INT bit in the ESR Register and, if enabled by the WAK_MSK bit in MCR, generates a Wake Up interrupt to the CPU. Upon receiving the interrupt, the CPU should resume the clocks and remove the Stop Mode request. FlexCAN will then wait for 11 consecutive recessive bits to synchronize to the CAN bus. As a consequence, it will not receive the frame that woke it up. The following table details the effect of SLF_WAK and WAK_MSK upon wake-up from Stop Mode. Note that wake-up from Stop Mode only works when both bits are asserted. After the CAN protocol engine recognizes the negation of the Stop Mode request, the FlexCAN negates the LPM_ACK bit.
Table 45-122. Wake-up from Stop Mode
SLF_WAK 0 0 1 1 1 1 WAK_INT 0 0 1 1 WAK_MSK 0 1 0 1 MCU Clocks Enabled No No No No No Yes Wake-up Interrupt Generated No No No No No Yes
45.4.10 Interrupts
Each one of the message buffers can be an interrupt source, if its corresponding IMASK bit is set. There is no distinction between Tx and Rx interrupts for a particular buffer, under the assumption that the buffer is initialized for either transmission or reception. Each of the buffers has assigned a flag bit in the IFLAG Registers. The bit is set when the corresponding buffer completes a successful transmission/reception and is cleared when the CPU writes it to '1' (unless another interrupt is generated at the same time).
Functional Description
Note It must be guaranteed that the CPU only clears the bit causing the current interrupt. For this reason, bit manipulation instructions (BSET) must not be used to clear interrupt flags. These instructions may cause accidental clearing of interrupt flags which are set after entering the current interrupt service routine. If the Rx FIFO is enabled (bit RFEN on MCR set), the interrupts corresponding to MBs 0 to 7 have a different behavior. Bit 7 of the IFLAG1 becomes the "FIFO Overflow" flag; bit 6 becomes the FIFO Warning flag, bit 5 becomes the "Frames Available in FIFO flag" and bits 4-0 are unused. See the description of the Interrupt Flags 1 Register (IFLAG1) for more information. A combined interrupt for all MBs is generated by an Or of all the interrupt sources from MBs. This interrupt gets generated when any of the MBs or FIFO generates an interrupt. In this case the CPU must read the IFLAG Registers to determine which MB or FIFO caused the interrupt. The other interrupt sources (Bus Off, Error, Tx Warning, Rx Warning, and Wake Up) generate interrupts like the MB ones, and can be read from both the Error and Status Register 1 and 2. The Bus Off, Error, Tx Warning and Rx Warning interrupt mask bits are located in the Control 1 Register; the Wake-Up interrupt mask bit is located in the MCR.
Read and write access to RAM located positions during Low Power Mode results in access error. If MAXMB is programmed with a value smaller than the available number of MBs, then the unused memory space can be used as general purpose RAM space. Note that reserved words within RAM cannot be used. As an example, suppose FlexCAN is configured with 16 MBs, RFFN is 0x0, and MAXMB is programmed with zero. The maximum number of MBs in this case becomes one. The RAM starts at 0x0080, and the space from 0x0080 to 0x008F is used by the one MB. The memory space from 0x0090 to 0x017F is available. The space between 0x0180 and 0x087F is reserved. The space from 0x0880 to 0x0883 is used by the one Individual Mask and the available memory in the Mask Registers space would be from 0x0884 to 0x08BF. From 0x08C0 through 0x09DF there are reserved words for internal use which cannot be used as general purpose RAM. As a general rule, free memory space for general purpose depends only on MAXMB. Note Unused MB space must not be used as general purpose RAM while FlexCAN is transmitting and receiving CAN frames.
Initialization/Application Information
to know when the reset has completed. Also, soft reset can not be applied while clocks are shut down in any of the low power modes. The low power mode should be exited and the clocks resumed before applying soft reset. The clock source (CLK_SRC bit) should be selected while the module is in Disable Mode. After the clock source is selected and the module is enabled (MDIS bit negated), FlexCAN automatically goes to Freeze Mode. In Freeze Mode, FlexCAN is unsynchronized to the CAN bus, the HALT and FRZ bits in MCR Register are set, the internal state machines are disabled and the FRZ_ACK and NOT_RDY bits in the MCR Register are set. The Tx pin is in recessive state and FlexCAN does not initiate any transmission or reception of CAN frames. Note that the Message Buffers and the Rx Individual Mask Registers are not affected by reset, so they are not automatically initialized. For any configuration change/initialization it is required that FlexCAN is put into Freeze Mode (see Freeze Mode ). The following is a generic initialization sequence applicable to the FlexCAN module: Initialize the Module Configuration Register Enable the individual filtering per MB and reception queue features by setting the IRMQ bit Enable the warning interrupts by setting the WRN_EN bit If required, disable frame self reception by setting the SRX_DIS bit Enable the Rx FIFO by setting the RFEN bit Enable the abort mechanism by setting the AEN bit Enable the local priority feature by setting the LPRIO_EN bit Initialize the Control Register Determine the bit timing parameters: PROPSEG, PSEG1, PSEG2, RJW Determine the bit rate by programming the PRESDIV field Determine the internal arbitration mode (LBUF bit) Initialize the Message Buffers The Control and Status word of all Message Buffers must be initialized
If Rx FIFO was enabled, the ID filter table must be initialized Other entries in each Message Buffer should be initialized as required Initialize the Rx Individual Mask Registers Set required interrupt mask bits in the IMASK Registers (for all MB interrupts), in CTRL Register (for Bus Off and Error interrupts) and in MCR Register for Wake-Up interrupt Negate the HALT bit in MCR Starting with the last event, FlexCAN attempts to synchronize to the CAN bus.
Initialization/Application Information
Introduction
eDMA
INTC
Clock/Reset
SPI
DMA and Interrupt Control
PUSHR POPR
CMD
Data
RX FIFO Data
32 Shift Register
TX FIFO
32
SOUT SIN
SCK
PCS[x]/SS/PCSS
46.1.2 Features
The DSPI supports these SPI features: Full-duplex, three-wire synchronous transfers Master and slave modes Data streaming operation in slave mode with continuous slave selection Buffered transmit operation using the TX FIFO with depth of 4 entries Buffered receive operation using the RX FIFO with depth of 4 entries TX and RX FIFOs can be disabled individually for low-latency updates to SPI queues
Visibility into TX and RX FIFOs for ease of debugging Programmable transfer attributes on a per-frame basis: 2 transfer attribute registers Serial clock with programmable polarity and phase Various programmable delays Programmable serial frame size of 4 to 16 bits, expandable by software control Continuously held chip select capability 6 Peripheral Chip Selects, expandable to 64 with external demultiplexer Deglitching support for up to 32 Peripheral Chip Select with external demultiplexer DMA support for adding entries to TX FIFO and removing entries from RX FIFO: TX FIFO is not full (TFFF) RX FIFO is not empty (RFDF) 6 Interrupt conditions: End of queue reached (EOQF) TX FIFO is not full (TFFF) Transfer of current frame complete (TCF) Attempt to transmit with an empty Transmit FIFO (TFUF) RX FIFO is not empty (RFDF) Frame received while Receive FIFO is full (RFOF) Global interrupt request line Modified SPI transfer formats for communication with slower peripheral devices Power-saving architectural features Support for stop mode Support for doze mode
Introduction
Done
Data Data
DMA Controller
Addr/Ctrl Data
DSPI
TX FIFO
Shift Register
Slave mode Module disable mode MCU-specific modes: External stop mode Debug mode The DSPI enters module-specific modes when the host writes a DSPI register. The MCUspecific modes are controlled by signals, external to the DSPI. The MCU-specific modes are modes that an MCU may enter in parallel to the DSPI block-specific modes.
DSPI Module Configuration Register (SPI0_MCR) DSPI Transfer Count Register (SPI0_TCR) DSPI Clock and Transfer Attributes Register (In Master Mode) (SPI0_CTAR0) DSPI Clock and Transfer Attributes Register (In Slave Mode) (SPI0_CTAR0_SLAVE) DSPI Clock and Transfer Attributes Register (In Master Mode) (SPI0_CTAR1) DSPI Status Register (SPI0_SR) DSPI DMA/Interrupt Request Select and Enable Register (SPI0_RSER) DSPI PUSH TX FIFO Register In Master Mode (SPI0_PUSHR) DSPI PUSH TX FIFO Register In Slave Mode (SPI0_PUSHR_SLAVE) DSPI POP RX FIFO Register (SPI0_POPR) DSPI Transmit FIFO Registers (SPI0_TXFR0) DSPI Transmit FIFO Registers (SPI0_TXFR1) DSPI Transmit FIFO Registers (SPI0_TXFR2) DSPI Transmit FIFO Registers (SPI0_TXFR3) DSPI Receive FIFO Registers (SPI0_RXFR0) DSPI Receive FIFO Registers (SPI0_RXFR1)
0000_4001h 0000_0000h 7800_0000h 7800_0000h 7800_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
DSPI Receive FIFO Registers (SPI0_RXFR2) DSPI Receive FIFO Registers (SPI0_RXFR3) DSPI Module Configuration Register (SPI1_MCR) DSPI Transfer Count Register (SPI1_TCR) DSPI Clock and Transfer Attributes Register (In Master Mode) (SPI1_CTAR0) DSPI Clock and Transfer Attributes Register (In Slave Mode) (SPI1_CTAR0_SLAVE) DSPI Clock and Transfer Attributes Register (In Master Mode) (SPI1_CTAR1) DSPI Status Register (SPI1_SR) DSPI DMA/Interrupt Request Select and Enable Register (SPI1_RSER) DSPI PUSH TX FIFO Register In Master Mode (SPI1_PUSHR) DSPI PUSH TX FIFO Register In Slave Mode (SPI1_PUSHR_SLAVE) DSPI POP RX FIFO Register (SPI1_POPR) DSPI Transmit FIFO Registers (SPI1_TXFR0) DSPI Transmit FIFO Registers (SPI1_TXFR1) DSPI Transmit FIFO Registers (SPI1_TXFR2) DSPI Transmit FIFO Registers (SPI1_TXFR3) DSPI Receive FIFO Registers (SPI1_RXFR0) DSPI Receive FIFO Registers (SPI1_RXFR1) DSPI Receive FIFO Registers (SPI1_RXFR2) DSPI Receive FIFO Registers (SPI1_RXFR3)
0000_0000h 0000_0000h 0000_4001h 0000_0000h 7800_0000h 7800_0000h 7800_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
DSPI Module Configuration Register (SPI2_MCR) DSPI Transfer Count Register (SPI2_TCR) DSPI Clock and Transfer Attributes Register (In Master Mode) (SPI2_CTAR0) DSPI Clock and Transfer Attributes Register (In Slave Mode) (SPI2_CTAR0_SLAVE) DSPI Clock and Transfer Attributes Register (In Master Mode) (SPI2_CTAR1)
0000_4001h 0000_0000h 7800_0000h 7800_0000h 7800_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
400A_C02C DSPI Status Register (SPI2_SR) 400A_C030 400A_C034 400A_C034 400A_C038 DSPI DMA/Interrupt Request Select and Enable Register (SPI2_RSER) DSPI PUSH TX FIFO Register In Master Mode (SPI2_PUSHR) DSPI PUSH TX FIFO Register In Slave Mode (SPI2_PUSHR_SLAVE) DSPI POP RX FIFO Register (SPI2_POPR)
400A_C03C DSPI Transmit FIFO Registers (SPI2_TXFR0) 400A_C040 400A_C044 400A_C048 DSPI Transmit FIFO Registers (SPI2_TXFR1) DSPI Transmit FIFO Registers (SPI2_TXFR2) DSPI Transmit FIFO Registers (SPI2_TXFR3)
400A_C07C DSPI Receive FIFO Registers (SPI2_RXFR0) 400A_C080 400A_C084 400A_C088 DSPI Receive FIFO Registers (SPI2_RXFR1) DSPI Receive FIFO Registers (SPI2_RXFR2) DSPI Receive FIFO Registers (SPI2_RXFR3)
PCSSE
DCONF
FRZ
ROOE
MSTR
MTFE
0 PCSIS[5:0]
Reset
Bit R
0
15
0
14
0
13
0
12
0
11 0 CLR_ TXF
0
10 0 CLR_ RXF
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
DIS_RXF
DIS_TXF
DOZE
SMPL_PT
Reset
Continuous SCK Enable Enables the Serial Communication Clock (SCK) to run continuously. 0 1 Continuous SCK disabled. Continuous SCK enabled.
2928 DCONF
DSPI Configuration Selects among the different configurations of the DSPI. 00 01 SPI Reserved Table continues on the next page...
HALT 1
MDIS
Freeze Enables the DSPI transfers to be stopped on the next frame boundary when the device enters Debug mode. 0 1 Do not halt serial transfers in debug mode. Halt serial transfers in debug mode.
26 MTFE
Modified Timing Format Enable Enables a modified transfer format to be used. 0 1 Modified SPI transfer format disabled. Modified SPI transfer format enabled.
25 PCSSE
Peripheral Chip Select Strobe Enable Enables the PCS[5]/ PCSS to operate as a PCS Strobe output signal. 0 1 PCS[5]/PCSS is used as the Peripheral Chip Select[5] signal. PCS[5]/PCSS is used as an active-low PCS Strobe signal.
24 ROOE
Receive FIFO Overflow Overwrite Enable In the RX FIFO overflow condition, configures the DSPI to ignore the incoming serial data or overwrite existing data. If the RX FIFO is full and new data is received, the data from the transfer, generating the overflow, is ignored or shifted into the shift register. 0 1 Incoming data is ignored. Incoming data is shifted into the shift register.
This read-only bitfield is reserved and always has the value zero. Peripheral Chip Select x Inactive State Determines the inactive state of PCSx. 0 1 The inactive state of PCSx is low. The inactive state of PCSx is high.
15 DOZE
Doze Enable Provides support for an externally controlled Doze mode power-saving mechanism. 0 1 Doze mode has no effect on DSPI. Doze mode disables DSPI.
14 MDIS
Module Disable Allows the clock to be stopped to the non-memory mapped logic in the DSPI effectively putting the DSPI in a software controlled power-saving state. The reset value of the MDIS bit is parameterized, with a default reset value of "0". Table continues on the next page...
Disable Transmit FIFO When the TX FIFO is disabled, the transmit part of the DSPI operates as a simplified double-buffered SPI. 0 1 Tx FIFO is enabled. Tx FIFO is disabled.
12 DIS_RXF
Disable Receive FIFO When the RX FIFO is disabled, the receive part of the DSPI operates as a simplified double-buffered SPI. 0 1 Rx FIFO is enabled. Rx FIFO is disabled.
11 CLR_TXF
Clear TX FIFO Flushes the TX FIFO. Writing a 1 to CLR_TXF clears the TX FIFO Counter. The CLR_TXF bit is always read as zero. 0 1 Do not clear the Tx FIFO counter. Clear the Tx FIFO counter.
10 CLR_RXF
Flushes the RX FIFO. Writing a 1 to CLR_RXF clears the RX Counter. The CLR_RXF bit is always read as zero. 0 1 Do not clear the Rx FIFO counter. Clear the Rx FIFO counter.
98 SMPL_PT
Sample Point Controls when the DSPI master samples SIN in Modified Transfer Format. 00 01 10 11 0 system clocks between SCK edge and SIN sample 1 system clock between SCK edge and SIN sample 2 system clocks between SCK edge and SIN sample Reserved
This read-only bitfield is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Halt Starts and stops DSPI transfers. 0 1 Start transfers. Stop transfers.
SPI_TCNT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
150 Reserved
46.3.3 DSPI Clock and Transfer Attributes Register (In Master Mode) (SPIx_CTARn)
CTAR registers are used to define different transfer attributes. The number of CTAR registers is parameterized in the RTL and can be from two to eight registers. Do not write to the CTAR registers while the DSPI is in the Running state. In master mode, the CTAR registers define combinations of transfer attributes such as frame size, clock phase and polarity, data bit ordering, baud rate, and various delays. In slave mode, a subset of the bitfields in CTAR0 are used to set the slave transfer attributes. When the DSPI is configured as an SPI master, the CTAS field in the command portion of the TX FIFO entry selects which of the CTAR register is used. When the DSPI is configured as an SPI bus slave, the CTAR0 register is used.
Chapter 46 SPI (DSPI) Addresses: SPI0_CTAR0 4002_C000h base + Ch offset = 4002_C00Ch SPI0_CTAR1 4002_C000h base + 10h offset = 4002_C010h SPI1_CTAR0 4002_D000h base + Ch offset = 4002_D00Ch SPI1_CTAR1 4002_D000h base + 10h offset = 4002_D010h SPI2_CTAR0 400A_C000h base + Ch offset = 400A_C00Ch SPI2_CTAR1 400A_C000h base + 10h offset = 400A_C010h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
LSBFE
CPHA
CPOL
DBR
W
FMSZ
PCSSCK
PASC
PDT
PBR
Reset
Bit R
0
15
1
14
1
13
1
12
1
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
CSSCK
W
ASC
DT
BR
Reset
Frame Size The number of bits transferred per frame is equal to the FMSZ field value plus 1. The minimum valid FMSZ field value is 3. Clock Polarity Selects the inactive state of the Serial Communications Clock (SCK). This bit is used in both master and slave mode. For successful communication between serial devices, the devices must have identical clock polarities. When the Continuous Selection Format is selected, switching between clock polarities without stopping the DSPI can cause errors in the transfer due to the peripheral device interpreting the switch of clock polarity as a valid clock edge. 0 1 The inactive state value of SCK is low. The inactive state value of SCK is high.
26 CPOL
25 CPHA
Clock Phase Selects which edge of SCK causes data to change and which edge causes data to be captured. This bit is used in both master and slave mode. For successful communication between serial devices, the devices must have identical clock phase settings. In Continuous SCK mode, the bit value is ignored and the transfers are done as if the CPHA bit is set to 1. 0 1 Data is captured on the leading edge of SCK and changed on the following edge. Data is changed on the leading edge of SCK and captured on the following edge.
24 LSBFE
LBS First Specifies whether the LSB or MSB of the frame is transferred first. 0 1 Data is transferred MSB first. Data is transferred LSB first.
2322 PCSSCK
PCS to SCK Delay Prescaler Selects the prescaler value for the delay between assertion of PCS and the first edge of the SCK. See the CSSCK field description for information on how to compute the PCS to SCK Delay. 00 01 10 11 PCS to SCK Prescaler value is 1. PCS to SCK Prescaler value is 3. PCS to SCK Prescaler value is 5. PCS to SCK Prescaler value is 7.
2120 PASC
After SCK Delay Prescaler Selects the prescaler value for the delay between the last edge of SCK and the negation of PCS. See the ASC field description for information on how to compute the After SCK Delay. 00 01 10 11 Delay after Transfer Prescaler value is 1. Delay after Transfer Prescaler value is 3. Delay after Transfer Prescaler value is 5. Delay after Transfer Prescaler value is 7. Table continues on the next page...
Baud Rate Prescaler Selects the prescaler value for the baud rate. This field is used only in master mode. The baud rate is the frequency of the SCK. The system clock is divided by the prescaler value before the baud rate selection takes place. See the BR field description for details on how to compute the baud rate. 00 01 10 11 Baud Rate Prescaler value is 2. Baud Rate Prescaler value is 3. Baud Rate Prescaler value is 5. Baud Rate Prescaler value is 7.
1512 CSSCK
PCS to SCK Delay Scaler Selects the scaler value for the PCS to SCK delay. This field is used only in master mode. The PCS to SCK Delay is the delay between the assertion of PCS and the first edge of the SCK. The delay is a multiple of the system clock period, and it is computed according to the following equation: tCSC = (1/fSYS) x PCSSCK x CSSCK The following table lists the delay scaler values.
46.3.4 DSPI Clock and Transfer Attributes Register (In Slave Mode) (SPIx_CTARn_SLAVE)
When the DSPI is configured as an SPI bus slave, the CTAR0 register is used.
Addresses: SPI0_CTAR0_SLAVE 4002_C000h base + Ch offset = 4002_C00Ch SPI1_CTAR0_SLAVE 4002_D000h base + Ch offset = 4002_D00Ch SPI2_CTAR0_SLAVE 400A_C000h base + Ch offset = 400A_C00Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
FMSZ 0 1 1 1 1
CPHA
CPOL
26 CPOL
This read-only bitfield is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero.
TXRXS
EOQF
RFOF
TCF
RFDF
TFUF
TFFF
w1c 0
15
w1c
w1c 0
13
w1c 0
11
w1c 0
10
w1c 0
8
w1c 0
2
Reset
Bit R
0
14
0
12
0
9
0
7
0
6
0
5
0
4
0
3
0
1
0
0
TXCTR
TXNXTPTR
RXCTR
POPNXTPTR
Reset
TX and RX Status Reflects the run status of the DSPI. 0 1 Transmit and receive operations are disabled (DSPI is in stopped state). Transmit and receive operations are enabled (DSPI is in running state).
29 Reserved 28 EOQF
This read-only bit is reserved and always has the value zero. End of Queue Flag Indicates that the last entry in a queue has been transmitted when the DSPI is in master mode. The EOQF bit is set when the TX FIFO entry has the EOQ bit set in the command halfword and the end of the transfer is reached. The EOQF bit remains set until cleared by writing a 1 to it. When the EOQF bit is set, the TXRXS bit is automatically cleared. 0 1 EOQ is not set in the executing command. EOQ is set in the executing SPI command.
27 TFUF
Transmit FIFO Underflow Flag Indicates an underflow condition in the TX FIFO. The transmit underflow condition is detected only for DSPI blocks operating in slave mode and SPI configuration. TFUF is set when the TX FIFO of a DSPI operating in SPI slave mode is empty and an external SPI master initiates a transfer. The TFUF bit remains set until cleared by writing 1 to it. 0 1 No Tx FIFO underflow. Tx FIFO underflow has occurred.
26 Reserved 25 TFFF
This read-only bit is reserved and always has the value zero. Transmit FIFO Fill Flag Provides a method for the DSPI to request more entries to be added to the TX FIFO. The TFFF bit is set while the TX FIFO is not full. The TFFF bit can be cleared by writing 1 to it or by acknowledgement from the DMA controller to the TX FIFO full request. 0 1 Tx FIFO is full. Tx FIFO is not full.
This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Receive FIFO Drain Flag Provides a method for the DSPI to request that entries be removed from the RX FIFO. The bit is set while the RX FIFO is not empty. The RFDF bit can be cleared by writing 1 to it or by acknowledgement from the DMA controller when the RX FIFO is empty. 0 1 Rx FIFO is empty. Rx FIFO is not empty.
This read-only bit is reserved and always has the value zero. TX FIFO Counter Indicates the number of valid entries in the TX FIFO. The TXCTR is incremented every time the PUSHR is written. The TXCTR is decremented every time a SPI command is executed and the SPI data is transferred to the shift register. Transmit Next Pointer Indicates which TX FIFO Entry is transmitted during the next transfer. The TXNXTPTR field is updated every time SPI data is transferred from the TX FIFO to the shift register. RX FIFO Counter Indicates the number of entries in the RX FIFO. The RXCTR is decremented every time the POPR is read. The RXCTR is incremented every time data is transferred from the shift register to the RX FIFO. Pop Next Pointer Contains a pointer to the RX FIFO entry to be returned when the POPR is read. The POPNXTPTR is updated when the POPR is read.
118 TXNXTPTR
74 RXCTR
30 POPNXTPTR
Chapter 46 SPI (DSPI) Addresses: SPI0_RSER 4002_C000h base + 30h offset = 4002_C030h SPI1_RSER 4002_D000h base + 30h offset = 4002_D030h SPI2_RSER 400A_C000h base + 30h offset = 400A_C030h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
TFFF_DIRS
EOQF_RE
RFOF_RE
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
RFDF_RE
TFUF_RE
TFFF_RE
TCF_RE
0
1
Reset
This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. DSPI Finished Request Enable Enables the EOQF flag in the SR to generate an interrupt request. 0 1 EOQF interrupt requests are disabled. EOQF interrupt requests are enabled.
27 TFUF_RE
Transmit FIFO Underflow Request Enable Enables the TFUF flag in the SR to generate an interrupt request. 0 1 TFUF interrupt requests are disabled. TFUF interrupt requests are enabled.
26 Reserved 25 TFFF_RE
This read-only bit is reserved and always has the value zero. Transmit FIFO Fill Request Enable Enables the TFFF flag in the SR to generate a request. The TFFF_DIRS bit selects between generating an interrupt request or a DMA request. Table continues on the next page...
RFDF_DIRS
0
0
Transmit FIFO Fill DMA or Interrupt Request Select Selects between generating a DMA request or an interrupt request. When the TFFF flag bit in the SR is set and the TFFF_RE bit in the RSER register is set, this bit selects between generating an interrupt request or a DMA request. 0 1 TFFF flag generates interrupt requests. TFFF flag generates DMA requests.
This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. This read-only bit is reserved and always has the value zero. Receive FIFO Overflow Request Enable Enables the RFOF flag in the SR to generate an interrupt request. 0 1 RFOF interrupt requests are disabled. RFOF interrupt requests are enabled.
18 Reserved 17 RFDF_RE
This read-only bit is reserved and always has the value zero. Receive FIFO Drain Request Enable Enables the RFDF flag in the SR to generate a request. The RFDF_DIRS bit selects between generating an interrupt request or a DMA request. 0 1 RFDF interrupt or DMA requests are disabled RFDF interrupt or DMA requests are enabled
16 RFDF_DIRS
Receive FIFO Drain DMA or Interrupt Request Select. Selects between generating a DMA request or an interrupt request. When the RFDF flag bit in the SR is set, and the RFDF_RE bit in the RSER is set, the RFDF_DIRS bit selects between generating an interrupt request or a DMA request. 0 1 Interrupt request. DMA request.
150 Reserved
This read-only bitfield is reserved and always has the value zero.
CONT
CTAS 0 0 0
EOQ
0 PCS[5:0] TXDATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Clock and Transfer Attributes Select. Selects which CTAR register to use in master mode to specify the transfer attributes for the associated SPI frame. In SPI slave mode, CTAR0 is used. See the Chip Configuration chapter to determine how many CTAR registers this device has. You should not program a value in this field for a register that is not present. 000 001 010 011 100 101 110 111 CTAR0 CTAR1 Reserved Reserved Reserved Reserved Reserved Reserved
27 EOQ
End Of Queue Host software uses this bit to signal to the DSPI that the current SPI transfer is the last in a queue. At the end of the transfer, the EOQF bit in the SR is set. Table continues on the next page...
Clear Transfer Counter. Clears the SPI_TCNT field in the TCR register. The SPI_TCNT field is cleared before the DSPI starts transmitting the current SPI frame. 0 1 Do not clear the TCR[SPI_TCNT] field. Clear the TCR[SPI_TCNT] field.
This read-only bitfield is reserved and always has the value zero. This read-only bitfield is reserved and always has the value zero. Select which PCS signals are to be asserted for the transfer. Refer to the chip configuration chapter for the number of PCS signals used in this MCU. 0 1 Negate the PCS[x] signal. Assert the PCS[x] signal.
150 TXDATA
Transmit Data Holds SPI data to be transferred according to the associated SPI command.
TXDATA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RXDATA
TXCMD_TXDATA
TXDATA
Functional Description
RXDATA
The CTARn registers hold clock and transfer attributes. The SPI configuration allows to select which CTAR to use on a frame by frame basis by setting a field in the SPI command. See DSPI Clock and Transfer Attributes Registers for information on the fields of the CTAR registers. Typical master to slave connections are shown in the following figure. When a data transfer operation is performed, data is serially shifted a predetermined number of bit positions. Because the modules are linked, data is exchanged between the master and the slave. The data that was in the master shift register is now in the shift register of the slave, and vice versa. At the end of a transfer, the TCF bit in the SR is set to indicate a completed transfer.
DSPI Master SIN Shift Register SOUT SCK Baud Rate Generator PCSx SS SOUT SIN SCK Shift Register DSPI Slave
Generally more than one slave device can be connected to the DSPI master. 6 Peripheral Chip Select (PCS) signals of the DSPI masters can be used to select which of the slaves to communicate with. Refer to the chip configuration chapter for the number of PCS signals used in this MCU. The three DSPI configurations share transfer protocol and timing properties which are described independently of the configuration in Transfer Formats . The transfer rate and delay settings are described in DSPI Baud Rate and Clock Delay Generation.
Functional Description
The TXRXS bit in the SR indicates what state the DSPI in. The bit is set if the module in RUNNING state. The DSPI is started (DSPI transitions to RUNNING) when all of the following conditions are true: SR[EOQF] bit is clear MCU is not in the debug mode or the MCR[FRZ] bit is clear MCR[HALT] bit is clear The DSPI stops (transitions from RUNNING to STOPPED) after the current frame when any one of the following conditions exist: SR[EOQF] bit is set MCU in the debug mode and the MCR[FRZ] bit is set MCR[HALT] bit is set State transitions from RUNNING to STOPPED occur on the next frame boundary if a transfer is in progress, or immediately if no transfers are in progress.
Functional Description
Host software or other intelligent blocks can add (push) entries to the TX FIFO by writing to the PUSHR. When the TX FIFO is not full, the TX FIFO Fill Flag (TFFF) in the SR is set. The TFFF bit is cleared when TX FIFO is full and the DMA controller indicates that a write to PUSHR is complete. Writing a '1' to the TFFF bit also clears it. The TFFF can generate a DMA request or an interrupt request. See Transmit FIFO Fill Interrupt or DMA Request for details. The DSPI ignores attempts to push data to a full TX FIFO, the state of the TX FIFO does not change and no error condition is indicated. 46.4.2.4.2 Draining the TX FIFO
The TX FIFO entries are removed (drained) by shifting SPI data out through the shift register. Entries are transferred from the TX FIFO to the shift register and shifted out as long as there are valid entries in the TX FIFO. Every time an entry is transferred from the TX FIFO to the shift register, the TX FIFO Counter decrements by one. At the end of a transfer, the TCF bit in the SR is set to indicate the completion of a transfer. The TX FIFO is flushed by writing a '1' to the CLR_TXF bit in MCR.
If an external bus master initiates a transfer with a DSPI slave while the slave's DSPI TX FIFO is empty, the Transmit FIFO Underflow Flag (TFUF) in the slave's SR is set. See Transmit FIFO Underflow Interrupt Request for details.
The RX FIFO is filled with the received SPI data from the shift register. While the RX FIFO is not full, SPI frames from the shift register are transferred to the RX FIFO. Every time a SPI frame is transferred to the RX FIFO the RX FIFO Counter is incremented by one. If the RX FIFO and shift register are full and a transfer is initiated, the RFOF bit in the SR is set indicating an overflow condition. Depending on the state of the ROOE bit in the MCR, the data from the transfer that generated the overflow is either ignored or shifted in to the shift register. If the ROOE bit is set, the incoming data is shifted in to the shift register. If the ROOE bit is cleared, the incoming data is ignored.
Functional Description
46.4.2.5.2
Host CPU or a DMA can remove (pop) entries from the RX FIFO by reading the DSPI POP RX FIFO Register (POPR). A read of the POPR decrements the RX FIFO Counter by one. Attempts to pop data from an empty RX FIFO are ignored and the RX FIFO Counter remains unchanged. The data, read from the empty RX FIFO, is undetermined. When the RX FIFO is not empty, the RX FIFO Drain Flag (RFDF) in the SR is set. The RFDF bit is cleared when the RX_FIFO is empty and the DMA controller indicates that a read from POPR is complete or by writing a '1' to it.
1 Prescaler
1+DBR Scaler
SCK
Functional Description
When in non-continuous clock mode the tDT delay is configured according to the equation specified in the CTAR[DT] bitfield description. When in continuous clock mode, the delay is fixed at 1 SCK period.
PCSx PCSS
tPCSSCK
tPASC
The delay between the assertion of the PCS signals and the assertion of PCSS is selected by the PCSSCK field in the CTAR based on the following formula:
At the end of the transfer the delay between PCSS negation and PCS negation is selected by the PASC field in the CTAR based on the following formula:
The following table shows an example of how to compute the tpcssck delay.
Table 46-110. Peripheral Chip Select Strobe Assert Computation Example
fsys 100 MHz PCSSCK 0b11 Prescaler 7 Delay before Transfer 70.0 ns
The following table shows an example of how to compute the tpasc delay.
The PCSS signal is not supported when Continuous Serial Communication SCK mode are enabled.
Functional Description
10 11 12 13
14
15 16
Master and Slave Sample Master SOUT/ Slave SIN Master SIN/ Slave SOUT PCSx/SS
tCSC
Bit 4 Bit 5 Bit 6 MSB first (LSBFE = 0): MSB Bit 3 Bit 2 Bit 1 MSB first (LSBFE = 1): LSB tCSC = PCS to SCK delay tASC = After SCK delay tDT = Delay after Transfer (Minimum CS idle time)
Bit 3 Bit 4
Bit 2 Bit 5
Bit 1 Bit 6
LSB MSB
The master initiates the transfer by placing its first data bit on the SOUT pin and asserting the appropriate peripheral chip select signals to the slave device. The slave responds by placing its first data bit on its SOUT pin. After the tCSC delay elapses, the master outputs the first edge of SCK. The master and slave devices use this edge to sample the first input data bit on their serial data input signals. At the second edge of the SCK the master and slave devices place their second data bit on their serial data output signals. For the rest of the frame the master and the slave sample their SIN pins on the odd-numbered clock edges and changes the data on their SOUT pins on the even-numbered clock edges. After the last clock edge occurs a delay of tASC is inserted before the master negates the PCS signals. A delay of tDT is inserted before a new frame transfer can be initiated by the master.
10 11 12 13 14
15 16
tCSC
tASC tDT
Bit 4 Bit 5 Bit 3 MSB first (LSBFE = 0): MSB Bit 6 Bit 1 Bit 2 LSB first (LSBFE = 1): LSB Bit 4 Bit 3 P tCSC = CS to SCK delay tASC = After SCK delay tDT = Delay after Transfer (minimum CS negation time)
Bit 2 Bit 5
Bit 1 Bit 6
LSB MSB
The master initiates the transfer by asserting the PCS signal to the slave. After the tCSC delay has elapsed, the master generates the first SCK edge and at the same time places valid data on the master SOUT pin . The slave responds to the first SCK edge by placing its first data bit on its slave SOUT pin. At the second edge of the SCK the master and slave sample their SIN pins. For the rest of the frame the master and the slave change the data on their SOUT pins on the oddnumbered clock edges and sample their SIN pins on the even-numbered clock edges. After the last clock edge occurs a delay of tASC is inserted before the master negates the PCS signal. A delay of tDT is inserted before a new frame transfer can be initiated by the master.
Functional Description
PCSx
t ASC t DT t CSC
t ASC = After SCK delay t DT = Delay after Transfer (minimum CS negation time)
When the CONT bit = 1, the PCS signal remains asserted for the duration of the two transfers. The Delay between Transfers (tDT) is not inserted between the transfers. The following figure shows the timing diagram for two four-bit transfers with CPHA = 1 and CONT = 1.
SCK (CPOL = 0)
SCK (CPOL = 1)
t ASC tCSC
t ASC
When using DSPI with continuous selection follow these rules: all transmit commands must have the same PCSn bits programming the CTARs, selected by transmit commands, must be programmed with the same transfer attributes. Only FMSZ field can be programmed differently in these CTARs.
Functional Description
It is recommended to keep the baud rate the same while using the Continuous SCK. Switching clock polarity between frames while using Continuous SCK can cause errors in the transfer. Continuous SCK operation is not guaranteed if the DSPI is put into the External Stop mode or Module Disable mode. Enabling Continuous SCK disables the PCS to SCK delay and the Delay after Transfer (tDT) is fixed to one SCK cycle. The following figure is the timing diagram for Continuous SCK format with Continuous Selection disabled.
SCK (CPOL = 0)
SCK (CPOL = 1)
Master SOUT Master SIN
PCS
tDT
If the CONT bit in the TX FIFO entry is set, PCS remains asserted between the transfers. Under certain conditions, SCK can continue with PCS asserted, but with no data being shifted out of SOUT (SOUT pulled high). This can cause the slave to receive incorrect data. Those conditions include: Continuous SCK with CONT bit set, but no data in the transmit FIFO. Continuous SCK with CONT bit set and entering STOPPED state (refer to Start and Stop of DSPI Transfers ). Continuous SCK with CONT bit set and entering Stop mode or Module Disable mode. The following figure shows timing diagram for Continuous SCK format with Continuous Selection enabled.
SCK (CPOL = 0)
SCK (CPOL = 1)
Master SOUT Master SIN
Functional Description
Each condition has a flag bit in the DSPI Status Register (SR) and an Request Enable bit in the DSPI DMA/Interrupt Request Select and Enable Register (RSER). The TX FIFO Fill Flag (TFFF) and RX FIFO Drain Flag (RFDF) generate interrupt requests or DMA requests depending on the TFFF_DIRS and RFDF_DIRS bits in the RSER. The DSPI module also provides a global interrupt request line, which is asserted when any of individual interrupt requests lines is asserted.
Initialization/Application Information
5. Disable DSPI DMA transfers by disabling the DMA enable request for the DMA channel assigned to TX FIFO and RX FIFO. This is done by clearing the corresponding DMA enable request bits in the DMA Controller. 6. Ensure all received data in RX FIFO has been transferred to memory receive queue by reading the RXCNT in SR or by checking RFDF in the SR after each read operation of the POPR. 7. Modify DMA descriptor of TX and RX channels for new queues 8. Flush TX FIFO by writing a '1' to the CLR_TXF bit in the MCR. Flush RX FIFO by writing a '1' to the CLR_RXF bit in the MCR. 9. Clear transfer count either by setting CTCNT bit in the command word of the first entry in the new queue or via CPU writing directly to SPI_TCNT field in the TCR. 10. Enable DMA channel by enabling the DMA enable request for the DMA channel assigned to the DSPI TX FIFO, and RX FIFO by setting the corresponding DMA set enable request bit. 11. Enable serial transmission and serial reception of data by clearing the EOQF bit.
Initialization/Application Information
Initialization/Application Information
TX FIFO Base
Shift Register
SOUT
+1
TX FIFO Counter
-1
46.5.5.1 Address Calculation for the First-in Entry and Last-in Entry in the TX FIFO
The memory address of the first-in entry in the TX FIFO is computed by the following equation:
The memory address of the last-in entry in the TX FIFO is computed by the following equation: TX FIFO Base - Base address of TX FIFO TXCTR - TX FIFO Counter TXNXTPTR - Transmit Next Pointer TX FIFO Depth - Transmit FIFO depth, implementation specific
46.5.5.2 Address Calculation for the First-in Entry and Last-in Entry in the RX FIFO
The memory address of the first-in entry in the RX FIFO is computed by the following equation:
The memory address of the last-in entry in the RX FIFO is computed by the following equation: RX FIFO Base - Base address of RX FIFO RXCTR - RX FIFO counter POPNXTPTR - Pop Next Pointer RX FIFO Depth - Receive FIFO depth, implementation specific
Initialization/Application Information
47.1.1 Features
The I2C module has these distinctive features: Compatible with The I2C-Bus Specification Multimaster operation Software programmable for one of 64 different serial clock frequencies Software-selectable acknowledge bit Interrupt-driven byte-by-byte data transfer Arbitration-lost interrupt with automatic mode switching from master to slave Calling address identification interrupt START and STOP signal generation and detection Repeated START signal generation and detection Acknowledge bit generation and detection Bus busy detection General call recognition 10-bit address extension Support for System Management Bus (SMBus) Specification, version 2 Programmable glitch input filter Low power mode wakeup on slave address match
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1303
Introduction
Module Enable
Address Interrupt
Write/Read DATA_MUX
ADDR_DECODE
STATUS_REG
DATA_REG
Input Sync START STOP Arbitration Control Clock Control In/Out Data Shift Register
Address Compare
SCL
SDA
I2C
system.
I2C Address Register 1 (I2C0_A1) I2C Frequency Divider register (I2C0_F) I2C Control Register 1 (I2C0_C1) I2C Status Register (I2C0_S) I2C Data I/O register (I2C0_D) I2C Control Register 2 (I2C0_C2) I2C Programmable Input Glitch Filter register (I2C0_FLT) I2C Range Address register (I2C0_RA) I2C SMBus Control and Status register (I2C0_SMB) I2C Address Register 2 (I2C0_A2) I2C SCL Low Timeout Register High (I2C0_SLTH) I2C SCL Low Timeout Register Low (I2C0_SLTL) I2C Address Register 1 (I2C1_A1) I2C Frequency Divider register (I2C1_F) I2C Control Register 1 (I2C1_C1) I2C Status Register (I2C1_S) I2C Data I/O register (I2C1_D) Table continues on the next page...
00h 00h 00h 80h 00h 00h 00h 00h 00h C2h 00h 00h 00h 00h 00h 80h 00h
I2C Control Register 2 (I2C1_C2) I2C Programmable Input Glitch Filter register (I2C1_FLT) I2C Range Address register (I2C1_RA) I2C SMBus Control and Status register (I2C1_SMB) I2C Address Register 2 (I2C1_A2) I2C SCL Low Timeout Register High (I2C1_SLTH) I2C SCL Low Timeout Register Low (I2C1_SLTL)
AD[7:1] 0 0 0 0
0 Reserved
MULT 0 0 0 0
ICR 0 0 0
Clock rate Prescales the bus clock for bit rate selection. This field and the MULT field determine the I2C baud rate, the SDA hold time, the SCL start hold time, and the SCL stop hold time. For a list of values corresponding to each ICR setting, see I2C Divider and Hold Values. The SCL divider multiplied by multiplier factor (mul) determines the I2C baud rate. I2C baud rate = bus speed (Hz)/(mul SCL divider) The SDA hold time is the delay from the falling edge of SCL (I2C clock) to the changing of SDA (I2C data). SDA hold time = bus period (s) mul SDA hold value The SCL start hold time is the delay from the falling edge of SDA (I2C data) while SCL is high (start condition) to the falling edge of SCL (I2C clock). SCL start hold time = bus period (s) mul SCL start hold value The SCL stop hold time is the delay from the rising edge of SCL (I2C clock) to the rising edge of SDA (I2C data) while SCL is high (stop condition). SCL stop hold time = bus period (s) mul SCL stop hold value
IICEN 0
IICIE 0
MST 0
TX 0
TXAK 0
0 RSTA 0
WUEN 0
DMAEN 0
5 MST
Master mode select When the MST bit is changed from a 0 to a 1, a START signal is generated on the bus and master mode is selected. When this bit changes from a 1 to a 0, a STOP signal is generated and the mode of operation changes from master to slave. 0 1 Slave mode Master mode
4 TX
Transmit mode select Selects the direction of master and slave transfers. In master mode this bit must be set according to the type of transfer required. Therefore, for address cycles, this bit is always set. When addressed as a slave this bit must be set by software according to the SRW bit in the status register. 0 1 Receive Transmit
3 TXAK
Transmit acknowledge enable Specifies the value driven onto the SDA during data acknowledge cycles for both master and slave receivers. The value of the FACK bit affects NACK/ACK generation. Table continues on the next page...
Repeat START Writing a one to this bit generates a repeated START condition provided it is the current master. This bit will always be read as zero. Attempting a repeat at the wrong time results in loss of arbitration. Wakeup enable The I2C module can wake the MCU from low power mode with no peripheral bus running when slave address matching occurs. 0 1 Normal operation. No interrupt generated when address matching in low power mode. Enables the wakeup function in low power mode.
1 WUEN
0 DMAEN
DMA enable The DMAEN bit enables or disables the DMA function. 0 1 All DMA signalling disabled. DMA transfer is enabled and the following conditions trigger the DMA request:While FACK = 0, a data byte is received, either address or data is transmitted. (ACK/NACK automatic)While FACK = 0, the first byte received matches the A1 register or is general call address.If any address matching occurs, IAAS and TCF are set. If the direction of transfer is known from master to slave, then it is not required to check the SRW. With this assumption, DMA can also be used in this case. In other cases, if the master reads data from the slave, then it is required to rewrite the C1 register operation. With this assumption, DMA cannot be used.When FACK = 1, an address or a data byte is transmitted.
TCF
IAAS 0
BUSY
ARBL w1c
RAM 0
SRW
IICIF w1c
RXAK
Addressed as a slave This bit is set by one of the following conditions: The calling address matches the programmed slave primary address in the A1 register or range address in the RA register (which must be set to a nonzero value). GCAEN is set and a general call is received. SIICAEN is set and the calling address matches the second programmed slave address. ALERTEN is set and an SMBus alert response address is received RMEN is set and an address is received that is within the range between the values of the A1 and RA registers. This bit sets before the ACK bit. The CPU must check the SRW bit and set TX/RX accordingly. Writing the C1 register with any value clears this bit. 0 1 Not addressed Addressed as a slave
5 BUSY
Bus busy Indicates the status of the bus regardless of slave or master mode. This bit is set when a START signal is detected and cleared when a STOP signal is detected. 0 1 Bus is idle Bus is busy
4 ARBL
Arbitration lost This bit is set by hardware when the arbitration procedure is lost. The ARBL bit must be cleared by software, by writing a one to it. 0 1 Standard bus operation. Loss of arbitration.
3 RAM
Range address match This bit is set by any of the following conditions: Any nonzero calling address is received that matches the address in the RA register. The RMEN bit is set and the calling address is within the range of values of the A1 and RA registers. Writing the C1 register with any value clears this bit. 0 1 Not addressed Addressed as a slave
2 SRW
Slave read/write When addressed as a slave, SRW indicates the value of the R/W command bit of the calling address sent to the master. Table continues on the next page...
Interrupt flag This bit sets when an interrupt is pending. This bit must be cleared by software or by writing a 1 to it in the interrupt routine. One of the following events can set this bit: One byte transfer including ACK/NACK bit completes if FACK = 0 One byte transfer excluding ACK/NACK bit completes if FACK = 1. An ACK or NACK is sent on the bus by writing 0 or 1 to TXAK after this bit is set in receive mode Match of slave address to calling address including primary slave address, range slave address, alert response address, second slave address, or general call address. Arbitration lost In SMBus mode, any timeouts except SCL and SDA high timeouts 0 1 No interrupt pending Interrupt pending
0 RXAK
Receive acknowledge 0 1 Acknowledge signal was received after the completion of one byte of data transmission on the bus No acknowledge signal detected
DATA 0 0 0 0
GCAEN 0
ADEXT 0
HDRS 0
SBRC 0
RMEN 0 0
AD[10:8] 0 0
Address extension Controls the number of bits used for the slave address. 0 1 7-bit address scheme 10-bit address scheme
5 HDRS
High drive select Controls the drive capability of the I2C pads. 0 1 Normal drive mode High drive mode Table continues on the next page...
Range address matching enable This bit controls slave address matching for addresses between the values of the A1 and RA registers. When this bit is set, a slave address match occurs for any address greater than the value of the A1 register and less than or equal to the value of the RA register. 0 1 Range mode disabled. No address match occurs for an address within the range of values of the A1 and RA registers. Range mode enabled. Address matching occurs when a slave receives an address within the range of values of the A1 and RA registers.
20 AD[10:8]
Slave address Contains the upper three bits of the slave address in the 10-bit address scheme. This field is only valid when the ADEXT bit is set.
FLT 0 0 0 0 0 0
RAD 0 0 0 0
0 Reserved
FACK 0
ALERTEN 0
SIICAEN 0
TCKSEL 0
SLTF w1c 0
SHTF1
SHTF2 w1c
SHTF2IE 0
SMBus alert response address enable Enables SMBus alert response address. 0 1 Disabled Enabled
5 SIICAEN
Second I2C address enable Enables or disables SMBus device default address 0 1 Disabled Enabled
4 TCKSEL
Timeout counter clock select Selects the clock source of the timeout counter 0 1 Bus clock / 64 frequency Bus clock frequency
3 SLTF
SCL low timeout flag This bit is set when the SLT register (consisting of the SLTH and SLTL registers) is loaded with a nonzero value (LoValue) and an SCL low timeout occurs. Software clears this bit by writing a logic 1 to it. NOTE: The low timeout function is disabled when the SLT register's value is zero. 0 1 No low timeout occurs Low timeout occurs
2 SHTF1
SCL high timeout flag 1 This read-only bit sets when SCL and SDA are held high more than clock LoValue / 512, which indicates the bus is free. This bit is cleared automatically. 0 1 No SCL high and SDA high timeout occurs SCL high and SDA high timeout occurs
1 SHTF2
SCL high timeout flag 2 This bit sets when SCL is held high and SDA is held low more than clock LoValue/512. Software clears this bit by writing a 1 to it. 0 1 No SCL high and SDA low TIMEOUT occurs SCL high and SDA low TIMEOUT occurs
0 SHTF2IE
SAD 0 0 0 1
0 Reserved
SSLT[15:8] 0 0 0 0
Functional Description
SSLT[7:0] 0 0 0 0
The STOP signal should not be confused with the CPU STOP instruction. The following figure illustrates I2C bus system communication.
M SB SCL 1
LSB
M SB
LSB
SDA
XXX
D7
D6
D5
D4
D3
D2
D1
D0
Start Signal
D a ta B y te
SCL
M SB 1
LSB
M SB
LSB
SDA
A D 7 A D 6 A D 5 A D 4 A D 3 A D 2 A D 1 R /W
XX
Repeated Start Signal
A D 7 A D 6 A D 5 A D 4 A D 3 A D 2 A D 1 R /W
No Stop Ack Signal Bit
Start Signal
C a llin g A d d re s s
N e w C a llin g A d d re s s
Read/ W rite
Functional Description
No two slaves in the system may have the same address. If the I2C module is the master, it must not transmit an address that is equal to its own slave address. The I2C module cannot be master and slave at the same time. However, if arbitration is lost during an address cycle, the I2C module reverts to slave mode and operates correctly even if it is being addressed by another master.
Functional Description
D e la y SCL1
S ta rt C o u n tin g H ig h P e rio d
SCL2
SCL
In te rn a l C o u n te r R e s e t
47.4.1.8 Handshaking
The clock synchronization mechanism can be used as a handshake in data transfers. A slave device may hold SCL low after completing a single byte transfer (9 bits). In this case, it halts the bus clock and forces the master clock into wait states until the slave releases SCL.
Functional Description
R/W 0
A1
A2
Data
...
Data
A/A
After the master-transmitter has sent the first byte of the 10-bit address, the slave-receiver sees an I2C interrupt. User software must ensure that for this interrupt, the contents of the Data register are ignored and not treated as valid data.
the slave considers that it has been addressed as a transmitter and generates acknowledge A3. The slave-transmitter remains addressed until it receives a STOP condition (P) or a repeated START condition (Sr) followed by a different slave address. After a repeated START condition (Sr), all other slave devices also compare the first seven bits of the first byte of the slave address with their own addresses and test the eighth (R/W) bit. However, none of them are addressed because R/W = 1 (for 10-bit devices), or the 11110XX slave address (for 7-bit devices) does not match.
Table 47-43. Master-Receiver Addresses a Slave-Transmitter with a 10-bit Address
S
R/W 0
A1
A2
Sr
R/W 1
A3
Data
...
Data
After the master-receiver has sent the first byte of the 10-bit address, the slave-transmitter sees an I2C interrupt. User software must ensure that for this interrupt, the contents of the Data register are ignored and not treated as valid data.
Functional Description
47.4.4.1 Timeouts
The TTIMEOUT,MIN parameter allows a master or slave to conclude that a defective device is holding the clock low indefinitely or a master is intentionally trying to drive devices off the bus. It is highly recommended that a slave device release the bus (stop driving the bus and let SCL and SDA float high) when it detects any single clock held low longer than TTIMEOUT,MIN. Devices that have detected this condition must reset their communication and be able to receive a new START condition within the timeframe of TTIMEOUT,MAX. SMBus defines a clock low timeout, TTIMEOUT, of 35 ms, specifies TLOW:SEXT as the cumulative clock low extend time for a slave device, and specifies TLOW:MEXT as the cumulative clock low extend time for a master device. 47.4.4.1.1 SCL Low Timeout
If the SCL line is held low by a slave device on the bus, no further communication is possible. Furthermore, the master cannot force the SCL line high to correct the error condition. To solve this problem, the SMBus protocol specifies that devices participating in a transfer must detect any clock cycle held low longer than a timeout value condition. Devices that have detected the timeout condition must reset the communication. When the I2C module is an active master, if it detects that SMBCLK low has exceeded the value of TTIMEOUT,MIN, it must generate a stop condition within or after the current data byte in the transfer process. When the I2C module is a slave, if it detects the TTIMEOUT,MIN condition, it resets its communication and is then able to receive a new START condition. 47.4.4.1.2 SCL High Timeout
When the I2C module has determined that the SMBCLK and SMBDAT signals have been high for at least THIGH:MAX, it assumes that the bus is idle. A HIGH timeout can occur in two ways:
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1326 Freescale Semiconductor, Inc.
1. HIGH timeout detected after a STOP condition appears on the bus 2. HIGH timeout detected after a START condition, but before a STOP condition appears on the bus Any master detecting either scenario can assume the bus is free when SHTF1 rises. A HIGH timeout occurs in scenario 2 if a master ever detects that both the BUSY bit is high and SHTF1 is high. When the SMBDAT signal is low and the SMBCLK signal is high for a period of time, the other kind of timeout occurs. The time period must be defined in software. SHTF2 is used as the flag when the time limit is reached. This flag is also an interrupt resource, so it also triggers IICIF. 47.4.4.1.3 CSMBCLK TIMEOUT MEXT and CSMBCLK TIMEOUT SEXT
The following figure illustrates the definition of the timeout intervals TLOW:SEXT and TLOW:MEXT. When in master mode, the I2C module must not cumulatively extend its clock cycles for a period greater than TLOW:MEXT within a byte, where each byte is defined as START-to-ACK, ACK-to-ACK, or ACK-to-STOP. When CSMBCLK TIMEOUT MEXT occurs, SMBus MEXT rises and also triggers the SLTF.
Start T LOW:SEXT Stop
T LOW:MEXT
ClkAck
T LOW:MEXT
ClkAck
T LOW:MEXT
SCL
SDA
A master is allowed to abort the transaction in progress to any slave that violates the TLOW:SEXT or TTIMEOUT,MIN specifications. To abort the transaction, the master issues a STOP condition at the conclusion of the byte transfer in progress. When a slave, the I2C module must not cumulatively extend its clock cycles for a period greater than TLOW:SEXT during any message from the initial START to the STOP. When CSMBCLK TIMEOUT SEXT occurs, SEXT rises and also triggers SLTF.
Functional Description
NOTE CSMBCLK TIMEOUT SEXT and CSMBCLK TIMEOUT MEXT are optional functions that are implemented in the second step.
47.4.5 Resets
The I2C module is disabled after a reset. The I2C module cannot cause a core reset.
47.4.6 Interrupts
The I2C module generates an interrupt when any of the events in the following table occur, provided that the IICIE bit is set. The interrupt is driven by the IICIF bit (of the I2C Status Register) and masked with the IICIE bit (of the I2C Control Register 1). The IICIF bit must be cleared (by software) by writing 1 to it in the interrupt routine. The SMBus timeouts interrupt is driven by SLTF and masked with the IICIE bit. The SLTF bit must be cleared by software by writing 1 to it in the interrupt routine. You can determine the interrupt type by reading the Status Register. NOTE In master receive mode, the FACK bit must be set to zero before the last byte transfer.
Table 47-44. Interrupt Summary
Interrupt Source Complete 1-byte transfer Match of received calling address Arbitration lost SMBus SCL low timeout interrupt flag SMBus SCL high SDA low timeout interrupt flag Wakeup from stop interrupt Status TCF IAAS ARBL SLTF SHTF2 IAAS Flag IICIF IICIF IICIF IICIF IICIF IICIF Local Enable IICIE IICIE IICIE IICIE IICIE & SHTF2IE IICIE & WUEN
Functional Description
Initialization/Application Information
If the DMAEN bit is set, the only arbitration lost is to another I2C module (error), and SCL low timeouts (error) generate CPU interrupts. All other events initiate a DMA transfer. NOTE Before the last byte of master receive mode, TXAK must be set to send a NACK after the last bytes transfer. Therefore, the DMA must be disabled before the last bytes transfer. NOTE In 10-bit address mode transmission, the addresses to send occupy 2-3 bytes. During this transfer period, the DMA must be disabled because the C1 register is written to send a repeat start or to change the transfer direction.
Module Initialization (Master) 1. Write: Frequency Divider register to set the I2C baud rate (example provided in this chapter) 2. Write: Control Register 1 to enable the I2C module and interrupts 3. Initialize RAM variables (IICEN = 1 and IICIE = 1) for transmit data 4. Initialize RAM variables used to achieve the routine shown in the following figure 5. Write: Control Register 1 to enable TX 6. Write: Control Register 1 to enable MST (master mode) 7. Write: Data register with the address of the target slave (the LSB of this byte determines whether the communication is master receive or transmit)
The routine shown in the following figure can handle both master and slave I2C operations. For slave operation, an incoming I2C message that contains the proper address begins I2C communication. For master operation, communication must be initiated by writing the Data register.
Initialization/Application Information
Clear IICIF
Master mode?
Rx
Arbitration lost? N
Clear ARBL
IIAAS=1? Y
Y Y
End of address cycle (master Rx)?
Y (read)
SRW=1? N (write)
Tx/Rx? Tx
Set TXACK
Y Set TX mode
Switch to Rx mode
Set Rx mode
Switch to Rx mode
RTI
Notes: 1. If general call is enabled, check to determine if the received address was a general call address (0x00). If the received address was a general call address, the general call must be handled by user software. 2. When 10-bit addressing addresses a slave, the slave sees an interrupt following the first byte of the extended address. Ensure that for this interrupt, the contents of the Data register are ignored and not treated as a valid data transfer.
SLTF or SHTF2=1?
N FACK=1? Y Y
Clear IICIF
Master mode?
Rx
Arbitration lost? N
Y Clear ARBL
2nd to last byte to be read? N Delay (note 2) Read data from Data reg and soft CRC
IAAS=1? Y
IAAS=1?
Y Y
End of address cycle (master Rx)?
Y (read)
SRW=1? N (write)
Tx/Rx? Tx
Clear IICIF
Delay (note 2) Read data from Data reg and soft CRC
Clear IICIF
Delay (note 2) Read data from Data reg and soft CRC
Switch to Rx mode
Set Tx mode
Switch to Rx mode
RTI
Notes: 1. If general call or SIICAEN is enabled, check to determine if the received address is a general call address (0x00) or an SMBus device default address. In either case, they must be handled by user software. 2. In receive mode, one bit time delay may needed before the first and second data reading.
Initialization/Application Information
48.1.1 Features
The UART includes these distinctive features: Full-duplex operation Standard mark/space non-return-to-zero (NRZ) format Selectable IrDA 1.4 return-to-zero-inverted (RZI) format with programmable pulse widths by configuring baud rate 13-bit baud rate selection with /32 fractional divide, based on module clock frequency Programmable 8-bit or 9-bit data format Separately enabled transmitter and receiver Programmable transmitter output polarity Programmable receive input polarity 13-bit break character option 11-bit break character detection option Parameterizable buffer support 1,4,8,16,32,64 and 128 data words for each transmit and receive
Introduction
Independent FIFO structure for transmit and receive Two receiver wakeup methods: Idle line wakeup Address mark wakeup Address match feature in receiver to reduce address mark wakeup ISR overhead Ability to select MSB or LSB to be first bit on wire Hardware flow control support for request to send (RTS) and clear to send (CTS) signals Support for ISO 7816 protocol for interfacing with SIM cards and smart cards Support of T=0 and T=1 protocols Automatic retransmission of NACK'd packets with programmable retry threshold Support for 11 and 12 ETU transfers Detection of initial packet and automated transfer parameter programing Interrupt-driven operation with seven ISO-7816 specific interrupts Wait time violated Character wait time violated Block wait time violated Initial frame detected Transmit error threshold exceeded Receive error threshold exceeded Guard time violated Interrupt-driven operation with 12 flags (not specific to ISO-7816 support): Transmitter data buffer at or below watermark Transmission complete Receiver data buffer at or above watermark
Idle receiver input Receiver data buffer overrun Receiver data buffer underflow Transmit data buffer overflow Noise error Framing error Parity error Active edge on receive pin LIN break detect Receiver framing error detection Hardware parity generation and checking 1/16 bit-time noise detection DMA interface
If the C1[UARTSWAI] bit is cleared, the UART operates normally when the CPU is in wait mode. If the C1[UARTSWAI] bit is set, UART clock generation ceases and the UART module enters a power-conservation state when the CPU is in wait mode. The C1[UARTSWAI] bit does not initiate any power down or power up procedures for the smartcard (ISO-7816) interface. Setting C1[UARTSWAI] does not affect the state of the C2[RE], or C2[TE]. If C1[UARTSWAI] is set, any transmission or reception in progress stops at wait mode entry. The transmission or reception resumes when either an internal or external interrupt brings the CPU out of wait mode. Exiting wait mode by reset aborts any transmission or reception in progress and resets the UART.
UART Baud Rate Registers:High (UART0_BDH) UART Baud Rate Registers: Low (UART0_BDL) UART Control Register 1 (UART0_C1) UART Control Register 2 (UART0_C2) UART Status Register 1 (UART0_S1) UART Status Register 2 (UART0_S2) UART Control Register 3 (UART0_C3) UART Data Register (UART0_D) UART Match Address Registers 1 (UART0_MA1) UART Match Address Registers 2 (UART0_MA2) UART Control Register 4 (UART0_C4) UART Control Register 5 (UART0_C5) UART Extended Data Register (UART0_ED) UART Modem Register (UART0_MODEM) UART Infrared Register (UART0_IR) UART FIFO Parameters (UART0_PFIFO) UART FIFO Control Register (UART0_CFIFO) UART FIFO Status Register (UART0_SFIFO) UART FIFO Transmit Watermark (UART0_TWFIFO) Table continues on the next page...
00h 04h 00h 00h C0h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h C0h 00h
UART FIFO Transmit Count (UART0_TCFIFO) UART FIFO Receive Watermark (UART0_RWFIFO) UART FIFO Receive Count (UART0_RCFIFO) UART 7816 Control Register (UART0_C7816) UART 7816 Interrupt Enable Register (UART0_IE7816) UART 7816 Interrupt Status Register (UART0_IS7816) UART 7816 Wait Parameter Register (UART0_WP7816T0) UART 7816 Wait Parameter Register (UART0_WP7816T1) UART 7816 Wait N Register (UART0_WN7816) UART 7816 Wait FD Register (UART0_WF7816) UART 7816 Error Threshold Register (UART0_ET7816) UART 7816 Transmit Length Register (UART0_TL7816) UART Baud Rate Registers:High (UART1_BDH) UART Baud Rate Registers: Low (UART1_BDL) UART Control Register 1 (UART1_C1) UART Control Register 2 (UART1_C2) UART Status Register 1 (UART1_S1) UART Status Register 2 (UART1_S2) UART Control Register 3 (UART1_C3) UART Data Register (UART1_D) Table continues on the next page...
00h 01h 00h 00h 00h 00h 0Ah 0Ah 00h 01h 00h 00h 00h 04h 00h 00h C0h 00h 00h 00h
UART Match Address Registers 1 (UART1_MA1) UART Match Address Registers 2 (UART1_MA2) UART Control Register 4 (UART1_C4) UART Control Register 5 (UART1_C5) UART Extended Data Register (UART1_ED) UART Modem Register (UART1_MODEM) UART Infrared Register (UART1_IR) UART FIFO Parameters (UART1_PFIFO) UART FIFO Control Register (UART1_CFIFO) UART FIFO Status Register (UART1_SFIFO) UART FIFO Transmit Watermark (UART1_TWFIFO) UART FIFO Transmit Count (UART1_TCFIFO) UART FIFO Receive Watermark (UART1_RWFIFO) UART FIFO Receive Count (UART1_RCFIFO) UART 7816 Control Register (UART1_C7816) UART 7816 Interrupt Enable Register (UART1_IE7816) UART 7816 Interrupt Status Register (UART1_IS7816) UART 7816 Wait Parameter Register (UART1_WP7816T0) UART 7816 Wait Parameter Register (UART1_WP7816T1) UART 7816 Wait N Register (UART1_WN7816) Table continues on the next page...
00h 00h 00h 00h 00h 00h 00h 00h 00h C0h 00h 00h 01h 00h 00h 00h 00h 0Ah 0Ah 00h
UART 7816 Wait FD Register (UART1_WF7816) UART 7816 Error Threshold Register (UART1_ET7816) UART 7816 Transmit Length Register (UART1_TL7816) UART Baud Rate Registers:High (UART2_BDH) UART Baud Rate Registers: Low (UART2_BDL) UART Control Register 1 (UART2_C1) UART Control Register 2 (UART2_C2) UART Status Register 1 (UART2_S1) UART Status Register 2 (UART2_S2) UART Control Register 3 (UART2_C3) UART Data Register (UART2_D) UART Match Address Registers 1 (UART2_MA1) UART Match Address Registers 2 (UART2_MA2) UART Control Register 4 (UART2_C4) UART Control Register 5 (UART2_C5) UART Extended Data Register (UART2_ED) UART Modem Register (UART2_MODEM) UART Infrared Register (UART2_IR) UART FIFO Parameters (UART2_PFIFO) UART FIFO Control Register (UART2_CFIFO) Table continues on the next page...
01h 00h 00h 00h 04h 00h 00h C0h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
UART FIFO Status Register (UART2_SFIFO) UART FIFO Transmit Watermark (UART2_TWFIFO) UART FIFO Transmit Count (UART2_TCFIFO) UART FIFO Receive Watermark (UART2_RWFIFO) UART FIFO Receive Count (UART2_RCFIFO) UART 7816 Control Register (UART2_C7816) UART 7816 Interrupt Enable Register (UART2_IE7816) UART 7816 Interrupt Status Register (UART2_IS7816) UART 7816 Wait Parameter Register (UART2_WP7816T0) UART 7816 Wait Parameter Register (UART2_WP7816T1) UART 7816 Wait N Register (UART2_WN7816) UART 7816 Wait FD Register (UART2_WF7816) UART 7816 Error Threshold Register (UART2_ET7816) UART 7816 Transmit Length Register (UART2_TL7816) UART Baud Rate Registers:High (UART3_BDH) UART Baud Rate Registers: Low (UART3_BDL) UART Control Register 1 (UART3_C1) UART Control Register 2 (UART3_C2) UART Status Register 1 (UART3_S1) UART Status Register 2 (UART3_S2) Table continues on the next page...
C0h 00h 00h 01h 00h 00h 00h 00h 0Ah 0Ah 00h 01h 00h 00h 00h 04h 00h 00h C0h 00h
UART Control Register 3 (UART3_C3) UART Data Register (UART3_D) UART Match Address Registers 1 (UART3_MA1) UART Match Address Registers 2 (UART3_MA2) UART Control Register 4 (UART3_C4) UART Control Register 5 (UART3_C5) UART Extended Data Register (UART3_ED) UART Modem Register (UART3_MODEM) UART Infrared Register (UART3_IR) UART FIFO Parameters (UART3_PFIFO) UART FIFO Control Register (UART3_CFIFO) UART FIFO Status Register (UART3_SFIFO) UART FIFO Transmit Watermark (UART3_TWFIFO) UART FIFO Transmit Count (UART3_TCFIFO) UART FIFO Receive Watermark (UART3_RWFIFO) UART FIFO Receive Count (UART3_RCFIFO) UART 7816 Control Register (UART3_C7816) UART 7816 Interrupt Enable Register (UART3_IE7816) UART 7816 Interrupt Status Register (UART3_IS7816) UART 7816 Wait Parameter Register (UART3_WP7816T0) Table continues on the next page...
00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h C0h 00h 00h 01h 00h 00h 00h 00h 0Ah
UART 7816 Wait Parameter Register (UART3_WP7816T1) UART 7816 Wait N Register (UART3_WN7816) UART 7816 Wait FD Register (UART3_WF7816) UART 7816 Error Threshold Register (UART3_ET7816) UART 7816 Transmit Length Register (UART3_TL7816) UART Baud Rate Registers:High (UART4_BDH) UART Baud Rate Registers: Low (UART4_BDL) UART Control Register 1 (UART4_C1) UART Control Register 2 (UART4_C2) UART Status Register 1 (UART4_S1) UART Status Register 2 (UART4_S2) UART Control Register 3 (UART4_C3) UART Data Register (UART4_D) UART Match Address Registers 1 (UART4_MA1) UART Match Address Registers 2 (UART4_MA2) UART Control Register 4 (UART4_C4) UART Control Register 5 (UART4_C5) UART Extended Data Register (UART4_ED) UART Modem Register (UART4_MODEM) UART Infrared Register (UART4_IR) Table continues on the next page...
0Ah 00h 01h 00h 00h 00h 04h 00h 00h C0h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h
UART FIFO Parameters (UART4_PFIFO) UART FIFO Control Register (UART4_CFIFO) UART FIFO Status Register (UART4_SFIFO) UART FIFO Transmit Watermark (UART4_TWFIFO) UART FIFO Transmit Count (UART4_TCFIFO) UART FIFO Receive Watermark (UART4_RWFIFO) UART FIFO Receive Count (UART4_RCFIFO) UART 7816 Control Register (UART4_C7816) UART 7816 Interrupt Enable Register (UART4_IE7816) UART 7816 Interrupt Status Register (UART4_IS7816) UART 7816 Wait Parameter Register (UART4_WP7816T0) UART 7816 Wait Parameter Register (UART4_WP7816T1) UART 7816 Wait N Register (UART4_WN7816) UART 7816 Wait FD Register (UART4_WF7816) UART 7816 Error Threshold Register (UART4_ET7816) UART 7816 Transmit Length Register (UART4_TL7816) UART Baud Rate Registers:High (UART5_BDH) UART Baud Rate Registers: Low (UART5_BDL) UART Control Register 1 (UART5_C1) UART Control Register 2 (UART5_C2) Table continues on the next page...
00h 00h C0h 00h 00h 01h 00h 00h 00h 00h 0Ah 0Ah 00h 01h 00h 00h 00h 04h 00h 00h
UART Status Register 1 (UART5_S1) UART Status Register 2 (UART5_S2) UART Control Register 3 (UART5_C3) UART Data Register (UART5_D) UART Match Address Registers 1 (UART5_MA1) UART Match Address Registers 2 (UART5_MA2) UART Control Register 4 (UART5_C4) UART Control Register 5 (UART5_C5) UART Extended Data Register (UART5_ED) UART Modem Register (UART5_MODEM) UART Infrared Register (UART5_IR) UART FIFO Parameters (UART5_PFIFO) UART FIFO Control Register (UART5_CFIFO) UART FIFO Status Register (UART5_SFIFO) UART FIFO Transmit Watermark (UART5_TWFIFO) UART FIFO Transmit Count (UART5_TCFIFO) UART FIFO Receive Watermark (UART5_RWFIFO) UART FIFO Receive Count (UART5_RCFIFO) UART 7816 Control Register (UART5_C7816) UART 7816 Interrupt Enable Register (UART5_IE7816) Table continues on the next page...
C0h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h 00h C0h 00h 00h 01h 00h 00h 00h
UART 7816 Interrupt Status Register (UART5_IS7816) UART 7816 Wait Parameter Register (UART5_WP7816T0) UART 7816 Wait Parameter Register (UART5_WP7816T1) UART 7816 Wait N Register (UART5_WN7816) UART 7816 Wait FD Register (UART5_WF7816) UART 7816 Error Threshold Register (UART5_ET7816) UART 7816 Transmit Length Register (UART5_TL7816)
LBKDIE 0
RXEDGIE 0
SBR 0 0 0 0 0
RxD Input Active Edge Interrupt Enable RXEDGIE enables the Receive input active edge, RXEDGIF, to generate a interrupt requests. 0 1 Hardware interrupts from RXEDGIF disabled (use polling). RXEDGIF interrupt request enabled.
5 Reserved 40 SBR
This read-only bit is reserved and always has the value zero. UART Baud Rate Bits The baud rate for the UART is determined by these 13 bits. See Baud rate generation for details. NOTE: The baud rate generator is disabled until the C2[TE] bit or the C2[RE] bit is set for the first time after reset.The baud rate generator is disabled when SBR = 0. NOTE: Writing to BDH has no effect without writing to BDL, since writing to BDH puts the data in a temporary location until BDL is written.
SBR 0 1 0 0
LOOPS 0
UARTSWAI 0
RSRC 0
M 0
WAKE 0
ILT 0
PE 0
PT 0
UART Stops in Wait Mode 0 1 UART clock continues to run in wait mode. UART clock freezes while CPU is in wait mode.
5 RSRC
9-bit or 8-bit Mode Select This bit must be set when 7816E is set/enabled. 0 1 Normal - start + 8 data bits (MSB/LSB first as determined by MSBF) + stop. Use - start + 9 data bits (MSB/LSB first as determined by MSBF) + stop.
3 WAKE
Receiver Wakeup Method Select WAKE determines which condition wakes the UART: address mark in the most significant bit position of a received data character or an idle condition on the receive pin input signal. 0 1 Idle-line wakeup. Address-mark wakeup.
2 ILT
Idle Line Type Select ILT determines when the receiver starts counting logic 1s as idle character bits. The counting begins either after a valid start bit or after the stop bit. If the count begins after the start bit, then a string of logic 1s preceding the stop bit can cause false recognition of an idle character. Beginning the count after the stop bit avoids false idle character recognition, but requires properly synchronized transmissions. NOTE: In the case where UART is programmed with ILT = 1, a logic of 1'b0 is automatically shifted after a received stop bit thus resetting the idle count. NOTE: In the case where UART is programmed for IDLE line wakeup (RWU = 1 and WAKE = 0), ILT has no effect on when the receiver starts counting logic 1s as idle character bits. In idle line wakeup an idle character is recognized at anytime the receiver sees 10, 11, or 12 1s depending on the M, PE, and C4[M10] bits. 0 1 Idle character bit count starts after start bit. Idle character bit count starts after stop bit.
1 PE
Parity Enable Enables the parity function. When parity is enabled, parity function inserts a parity bit in the bit position immediately preceding the stop bit. This bit must be set when 7816E is set/enabled. 0 1 Parity function disabled. Parity function enabled.
0 PT
Parity Type PT determines whether the UART generates and checks for even parity or odd parity. With even parity, an even number of 1s clears the parity bit and an odd number of 1s sets the parity bit. With odd parity, an odd number of 1s clears the parity bit and an even number of 1s sets the parity bit.This bit must be cleared when 7816E is set/enabled. 0 1 Even parity. Odd parity.
TIE 0
TCIE 0
RIE 0
ILIE 0
TE 0
RE 0
RWU 0
SBK 0
Transmission Complete Interrupt Enable TCIE enables the transmission complete flag, S1[TC], to generate interrupt requests. 0 1 TC interrupt requests disabled. TC interrupt requests enabled.
5 RIE
Receiver Full Interrupt or DMA Transfer Enable RIE enables the S1[RDRF] flag, to generate interrupt requests or DMA transfer requests, based on the state of C5[RDMAS]. 0 1 RDRF interrupt and DMA transfer requests disabled. RDRF interrupt or DMA transfer requests enabled
4 ILIE
Idle Line Interruptor Enable ILIE enables the idle line flag, S1[IDLE], to generate interrupt requests, based on the state of C5[ILDMAS]. 0 1 IDLE interrupt requests disabled. IDLE interrupt requests enabled. Table continues on the next page...
Receiver Enable RE enables the UART receiver. 0 1 Receiver off. Receiver on.
1 RWU
Receiver Wakeup Control This bit can be set to place the UART receiver in a standby state. RWU automatically clears when an RWU event occurs (an IDLE event when C1[WAKE] is clear or an address match when C1[WAKE] is set). This bit must be cleared when 7816E is set. NOTE: RWU should only be set with C1[WAKE] = 0 (wakeup on idle) if the channel is currently not idle. This can be determined by the S2[RAF] flag. If set to wake up an IDlE event and the channel is already idle, it is possible that the UART will discard data since data must be received (or a LIN break detect) after an IDLE is detected before IDLE is allowed to reasserted. 0 1 Normal operation. RWU enables the wakeup function and inhibits further receiver interrupt requests. Normally, hardware wakes the receiver by automatically clearing RWU.
0 SBK
Send Break Toggling SBK sends one break character (10, 11, or 12 logic 0s, if S2[BRK13] is cleared; 13 or 14 logic 0s, if S2[BRK13] is set). See Transmitting break characters for the number of logic 0s for the different configurations. Toggling implies clearing the SBK bit before the break character has finished transmitting. As long as SBK is set, the transmitter continues to send complete break characters (10, 11, or 12 bits, or 13 or 14 bits).This bit must be cleared when 7816E is set. 0 1 Normal transmitter operation. Queue break character(s) to be sent.
TDRE
TC
RDRF
IDLE
OR
NF
FE
PF
Transmit Complete Flag TC is cleared when there is a transmission in progress or when a preamble or break character is loaded. TC is set when the transmit buffer is empty and no data, preamble, or break character is being transmitted. When TC is set, the transmit data output signal becomes idle (logic 1). When 7816E is set/ enabled this bit is set after any NACK signal has been received but prior to any corresponding guard times expiring. TC is cleared by reading S1 with TC set and then doing one of the following: Writing to the UART data register (D) to transmit new data Queuing a preamble by clearing and then setting the C2[TE] bit. Queuing a break character by writing 1 to SBK in C2 0 1 Transmitter active (sending data, a preamble, or a break). Transmitter idle (transmission activity complete).
5 RDRF
Receive Data Register Full Flag RDRF is set when the number of datawords in the receive buffer is equal to or more than the number indicated by TWFIFO[TXWATER]. A dataword that is in the process of being received is not included in the count. RDRF is prevented from setting while S2[LBKDE] is set. Additionally, when S2[LBKDE] is set, datawords that are received will be stored in the receive buffer but will over-write each other. To clear RDRF, read S1 when RDRF is set and then read the UART data register (D). For more efficient interrupt and DMA operation all data except the final value to be read from the buffer using D/C3[T8]/ED. The S1 should then be read and the final data value read, resulting in the clearing of the RDRF flag. Even if the RDRF flag is set, data will continue to be received until an overrun condition occurs. 0 1 The number of datawords in the receive buffer is less than the number indicated by RXWATER. The number of datawords in the receive buffer is equal to or greater than the number indicated by RXWATER at some point in time since this flag was last cleared.
4 IDLE
Idle Line Flag IDLE is set when 10 consecutive logic 1s (if C1[M] = 0), 11 consecutive logic 1s (if C1[M] = 1 and C4[M10] = 0), or 12 consecutive logic 1s (if C1[M] = 1, C4[M10] = 1, and C1[PE] = 1) appear on the receiver input. After the IDLE flag is cleared, a frame must received (although not necessarily stored in the data buffer, for example if C2[RWU] is set) or a LIN break character must set the S2[LBKDIF] flag before an idle condition can set the IDLE flag. To clear IDLE, read UART status S1 with IDLE set and then read D. Idle detection is not supported when 7816E is set/enabled and hence this flag is ignored. NOTE: When the receiver wakeup bit (RWU) is set and WAKE is cleared, an idle line condition sets the IDLE flag if RWUID is set, else the IDLE flag does not get set. 0 1 Receiver input is either active now or has never become active since the IDLE flag was last cleared. Receiver input has become idle or the flag has not been cleared since it last asserted.
3 OR
Noise Flag NF is set when the UART detects noise on the receiver input. NF bit does not get set in the case of an overrun or while the LIN break detect feature is enabled (S2[LBKDE] = 1). When NF is set, it only indicates that a dataword has been received with noise since the last time it was cleared. There is no guarantee that the first dataword read from the receive buffer has noise or that there is only one dataword in the buffer that was received with noise unless the receive buffer has a depth of one. To clear NF, read S1 and then read the UART data register (D). 0 1 No noise detected since the last time this flag was cleared. If the receive buffer has a depth greater than 1 then there may be data in the receiver buffer that was received with noise. At least one dataword was received with noise detected since the last time the flag was cleared.
1 FE
Framing Error Flag FE is set when a logic 0 is accepted as the stop bit. FE bit does not set in the case of an overrun or while the LIN break detect feature is enabled (S2[LBKDE] = 1). FE inhibits further data reception until it is cleared. To clear FE, read S1 with FE set and then read the UART data register (D). The last data in the receive buffer represents the data that was received with the frame error enabled. However, framing errors are not supported when 7816E is set/enabled. However, if this flag is set, data will still not be received in 7816 mode. 0 1 No framing error detected. Framing error.
0 PF
Parity Error Flag PF is set when PE is set, S2[LBKDE] is disabled, and the parity of the received data does not match its parity bit. The PF is not set in the case of an overrun condition. When the PF bit is set it only indicates that a dataword was received with parity error since the last time it was cleared. There is no guarantee that the first dataword read from the receive buffer has a parity error or that there is only one dataword in the buffer that was received with a parity error unless the receive buffer was a depth of one. To clear PF, read S1 and then read the UART data register (D). Within the receive buffer structure the received dataword is tagged if it was received with a parity error. That information is available by reading the ED register prior to reading the D register. 0 No parity error has been detected since the last time this flag was cleared. If the receive buffer has a depth greater than 1 then there may be data in the receive buffer what was received with a parity error. At least one dataword was received with a parity error since the last time this flag was cleared.
LBKDIF 0
RXEDGIF 0
MSBF 0
RXINV 0
RWUID 0
BRK13 0
LBKDE 0
RAF
RxD Pin Active Edge Interrupt Flag RXEDGIF is set when an active edge (falling if RXINV = 0, rising if RXINV=1) on the RxD pin occurs. RXEDGIF is cleared by writing a 1 to it. See RXEDGIF description for additional details. NOTE: The active edge is only detected when in two wire mode and on receive data coming from the RxD pin. 0 1 No active edge on the receive pin has occurred. An active edge on the receive pin has occurred.
5 MSBF
Most Significant Bit First Setting this bit reverses the order that bits are transmitted and received on the wire. This bit does not affect the polarity of the bits, the location of the parity bit or the location of the start or stop bits.This bit is automatically set or cleared when C7816[INIT] and C7816[ISO7816E] are enabled and an initial character is detected. Table continues on the next page...
4 RXINV
Receive Data Inversion Setting this bit, reverses the polarity of the received data input. In NRZ format, a one is represented by a mark and a zero is represented by a space for normal polarity, and the opposite for inverted polarity. In IrDA format, a zero is represented by short high pulse in the middle of a bit time remaining idle low for a one for normal polarity, and a zero is represented by short low pulse in the middle of a bit time remaining idle high for a one for inverted polarity.This bit is automatically set or cleared when C7816[INIT] and C7816[ISO7816E] are enabled and an initial character is detected. NOTE: Setting RXINV inverts the RxD input for: data bits, start and stop bits, break, and idle. When C7816[ISO7816E] is set/enabled then only the data bits and the parity bit are inverted. 0 1 Receive data is not inverted. Receive data is inverted.
3 RWUID
Receive Wakeup Idle Detect When RWU is set and WAKE is cleared, this bit controls whether the idle character that wakes the receiver sets the S1[IDLE] bit.This bit must be cleared when C7816[ISO7816E] is set/enabled. 0 1 The S1[IDLE] bit is not set upon detection of an idle character. The S1[IDLE] bit is set upon detection of an idle character.
2 BRK13
Break Transmit Character Length This bit determines whether the transmit break character is 10, 11, or 12 bits long, or 13 or 14 bits long. Refer to Transmitting break characters for the length of the break character for the different configurations. The detection of a framing error is not affected by this bit. 0 1 Break character is 10, 11, or 12 bits long. Break character is 13 or 14 bits long.
1 LBKDE
LIN Break Detection Enable LBKDE selects a longer break character detection length. While LBKDE is set, the S1[RDRF], S1[NF], S1[FE], and S1[PF] flags are prevented from setting. When LBKDE is set, see Overrun operation in most modes. The LBKDE bit must be cleared when C7816[ISO7816E] is set. 0 1 Break character is detected at length of 10 bit times (C1[M] = 0), 11 (C1[M] = 1 and C4[M10] = 0), or 12 (C1[M] = 1, C4[M10] = 1, and S1[PE] = 1). Break character is detected at length of 11 bits times (if C1[M] = 0 or 12 bits time (if C1[M] = 1).
0 RAF
Receiver Active Flag RAF is set when the UART receiver detects a logic 0 during the RT1 time period of the start bit search. RAF is cleared when the receiver detects an idle character when C7816[ISO7816E] is cleared/disabled. When C7816[ISO7816E] is enabled the RAF is cleared if the C7816[TTYPE] = 0 expires or the C7816[TTYPE] = 1 expires. NOTE: In the case when C7816[ISO7816E] is set and C7816[TTYPE] = 0, it is possible to configure the guard time to be 12. However, in the event that a NACK is required to be transmitted the data Table continues on the next page...
R8
T8 0
TXDIR 0
TXINV 0
ORIE 0
NEIE 0
FEIE 0
PEIE 0
6 T8
Transmit Data Inversion. Setting this bit reverses the polarity of the transmitted data output. In NRZ format, a one is represented by a mark and a zero is represented by a space for normal polarity, and the opposite for inverted polarity. In IrDA format, a zero is represented by short high pulse in the middle of a bit time remaining idle low for a one for normal polarity, and a zero is represented by short low pulse in the middle of a bit time remaining idle high for a one for inverted polarity. This bit is automatically set or cleared when C7816[INIT] and C7816[ISO7816E] are enabled and an initial character is detected. NOTE: Setting TXINV inverts all transmitted values, including idle, break, start, and stop bits. In loop mode, if TXINV is set, the receiver gets the transmit inversion bit when RXINV is disabled.When C7816[ISO7816E] is set/enabled then only the transmitted data bits and parity bit are inverted. 0 1 Transmit data is not inverted. Transmit data is inverted.
3 ORIE
Overrun Error Interrupt Enable This bit enables the overrun error flag (S1[OR]) to generate interrupt requests. 0 1 OR interrupts are disabled. OR interrupt requests are enabled.
2 NEIE
Noise Error Interrupt Enable This bit enables the noise flag (S1[NF]) to generate interrupt requests. 0 1 NF interrupt requests are disabled. NF interrupt requests are enabled.
1 FEIE
Framing Error Interrupt Enable This bit enables the framing error flag (S1[FE]) to generate interrupt requests. 0 1 FE interrupt requests are disabled. FE interrupt requests are enabled.
0 PEIE
Parity Error Interrupt Enable This bit enables the parity error flag (S1[PF]) to generate interrupt requests. 0 1 PF interrupt requests are disabled. PF interrupt requests are enabled.
NOTE In 8-bit or 9-bit data format, only UART data register (D) needs to be accessed in order to clear the S1[RDRF] bit (assuming receiver buffer level is less than RWFIFO[RXWATER]). The C3 register only needs to be read (prior to the D register) if the ninth bit of data needs to be captured. Likewise the ED register only needs to be read (prior to the D register) if the additional flag data for the dataword needs to be captured. NOTE In the normal 8-bit mode (M bit cleared) if the parity is enabled, you get seven data bits and one parity bit. That one parity bit will be loaded into the D register. So if you care about only the data bits, you have to mask off the parity bit from the value you read out of this register. NOTE When transmitting in 9-bit data format and using 8-bit write instructions, write first to transmit bit 8 in UART control register 3 (C3[T8]), then D. A write to C3[T8] stores the data in a temporary register. If D register is written first then the new data on data bus is stored in D register, while the temporary value (written by last write to C3[T8]) gets stored in C3[T8] register.
Addresses: UART0_D 4006_A000h base + 7h offset = 4006_A007h UART1_D 4006_B000h base + 7h offset = 4006_B007h UART2_D 4006_C000h base + 7h offset = 4006_C007h UART3_D 4006_D000h base + 7h offset = 4006_D007h UART4_D 400E_A000h base + 7h offset = 400E_A007h UART5_D 400E_B000h base + 7h offset = 400E_B007h
Bit 7 6 5 4 3 2 1 0
RT 0 0 0 0
MA 0 0 0 0
MA 0 0 0 0
MAEN1 0
MAEN2 0
M10 0 0 0
BRFA 0 0 0
6 MAEN2
Match Address Mode Enable 2 Refer to Match address operation for more information. 0 1 All data received is transferred to the data buffer if MAEN1 is cleared. All data received with the most significant bit cleared, is discarded. All data received with the most significant bit set, is compared with contents of MA2 register. If no match occurs, the data is discarded. If match occurs, data is transferred to the data buffer.This bit must be cleared when C7816[ISO7816E] is set/enabled.
5 M10
10-bit Mode select The M10 bit causes a tenth, non-memory mapped bit to be part of the serial transmission. This tenth bit is generated and interpreted as a parity bit. The M10 bit does not affect the LIN send or detect break Table continues on the next page...
Baud Rate Fine Adjust This bit field is used to add more timing resolution to the average baud frequency, in increments of 1/32. Refer to Baud rate generation for more information.
TDMAS 0
RDMAS 0 0 0
This read-only bit is reserved and always has the value zero. Table continues on the next page...
This read-only bitfield is reserved and always has the value zero.
Chapter 48 Universal asynchronous receiver/transmitter (UART) Addresses: UART0_ED 4006_A000h base + Ch offset = 4006_A00Ch UART1_ED 4006_B000h base + Ch offset = 4006_B00Ch UART2_ED 4006_C000h base + Ch offset = 4006_C00Ch UART3_ED 4006_D000h base + Ch offset = 4006_D00Ch UART4_ED 400E_A000h base + Ch offset = 400E_A00Ch UART5_ED 400E_B000h base + Ch offset = 400E_B00Ch
Bit 7 6 5 4 3 2 1 0
NOISY
PARITYE
6 PARITYE
The current received dataword contained in D and C3[R8] was received with a parity error. 0 1 The dataword was received without a parity error. The dataword was received with a parity error.
50 Reserved
This read-only bitfield is reserved and always has the value zero.
Module Memory Map Addresses: UART0_MODEM 4006_A000h base + Dh offset = 4006_A00Dh UART1_MODEM 4006_B000h base + Dh offset = 4006_B00Dh UART2_MODEM 4006_C000h base + Dh offset = 4006_C00Dh UART3_MODEM 4006_D000h base + Dh offset = 4006_D00Dh UART4_MODEM 400E_A000h base + Dh offset = 400E_A00Dh UART5_MODEM 400E_B000h base + Dh offset = 400E_B00Dh
Bit 7 6 5 4 3 2 1 0
RXRTSE 0 0 0
TXRTSPOL 0
TXRTSE 0
TXCTSE 0
2 TXRTSPOL
Transmitter request-to-send polarity Controls the polarity of the transmitter RTS. TXRTSPOL does not affect the polarity of the receiver RTS. RTS will remain negated in the active low state unless TXRTSE is set. 0 1 Transmitter RTS is active low. Transmitter RTS is active high.
1 TXRTSE
Transmitter request-to-send enable Controls RTS before and after a transmission. 0 1 The transmitter has no effect on RTS. When a character is placed into an empty transmitter data buffer(FIFO), RTS asserts one bit time before the start bit is transmitted. RTS deasserts one bit time after all characters in the transmitter data buffer(FIFO) and shift register are completely sent, including the last stop bit.
0 TXCTSE
Transmitter clear-to-send enable TXCTSE controls the operation of the transmitter. TXCTSE can be set independently from the state of TXRTSE and RXRTSE. 0 1 CTS has no effect on the transmitter. Enables clear-to-send operation. The transmitter checks the state of CTS each time it is ready to send a character. If CTS is asserted, the character is sent. If CTS is deasserted, the signal TXD remains in the mark state and transmission is delayed until CTS is asserted. Changes in CTS as a character is being sent do not affect its transmission.
IREN 0 0 0 0
TNP 0
Transmitter narrow pulse These bits enable whether the UART transmits a 1/16, 3/16, 1/32 or 1/4 narrow pulse. 00 01 10 11 3/16. 1/16. 1/32. 1/4.
NOTE For UART0, the TXFIFOSIZE and RXFIFOSIZE reset to 010b, for other UARTs, those two fields reset to 000b.
Addresses: UART0_PFIFO 4006_A000h base + 10h offset = 4006_A010h UART1_PFIFO 4006_B000h base + 10h offset = 4006_B010h UART2_PFIFO 4006_C000h base + 10h offset = 4006_C010h UART3_PFIFO 4006_D000h base + 10h offset = 4006_D010h UART4_PFIFO 400E_A000h base + 10h offset = 400E_A010h UART5_PFIFO 400E_B000h base + 10h offset = 400E_B010h
Bit 7 6 5 4 3 2 1 0
TXFE 0 0
TXFIFOSIZE
RXFE 0 0 0
RXFIFOSIZE
Transmit FIFO. Buffer Depth The maximum number of transmit datawords that can be stored in the transmit buffer. This field is read only. 000 001 010 011 100 101 110 111 Transmit FIFO/Buffer Depth = 1 Dataword. Transmit FIFO/Buffer Depth = 4 Datawords. Transmit FIFO/Buffer Depth = 8 Datawords. Transmit FIFO/Buffer Depth = 16 Datawords. Transmit FIFO/Buffer Depth = 32 Datawords. Transmit FIFO/Buffer Depth = 64 Datawords. Transmit FIFO/Buffer Depth = 128 Datawords. Reserved.
3 RXFE
Receive FIFO Enable When this bit is set the built in FIFO structure for the receive buffer is enabled. The size of the FIFO structure is indicated by the RXFIFOSIZE field. If this bit is not set then the receive buffer operates as a FIFO of depth one dataword regardless of the value in RXFIFOSIZE. Both C2[TE] and C2[RE] must be cleared prior to changing this bit. Additionally TXFLUSH and RXFLUSH commands should be issued immediately after changing this bit. Table continues on the next page...
Receive FIFO. Buffer Depth The maximum number of receive datawords that can be stored in the receive buffer before an overrun occurs. This field is read only. 000 001 010 011 100 101 110 111 Receive FIFO/Buffer Depth = 1 Dataword. Receive FIFO/Buffer Depth = 4 Datawords. Receive FIFO/Buffer Depth = 8 Datawords. Receive FIFO/Buffer Depth = 16 Datawords. Receive FIFO/Buffer Depth = 32 Datawords. Receive FIFO/Buffer Depth = 64 Datawords. Receive FIFO/Buffer Depth = 128 Datawords. Reserved.
0 TXFLUSH 0
0 RXFLUSH 0 0 0
TXOFE 0 0 0
RXUFE 0
Receive FIFO/Buffer Flush Writing to this bit causes all data that is stored in the receive FIFO/buffer to be flushed. This does not affect data that is in the receive shift register. 0 1 No flush operation occurs. All data in the receive FIFO/buffer is cleared out.
52 Reserved 1 TXOFE
This read-only bitfield is reserved and always has the value zero. Transmit FIFO Overflow Interrupt Enable When this bit is set the TXOF flag will generate an interrupt to the host. 0 1 TXOF flag does not generate an interrupt to the host. TXOF flag generates an interrupt to the host.
0 RXUFE
Receive FIFO Underflow Interrupt Enable When this bit is set the RXUF flag will generate an interrupt to the host. 0 1 RXUF flag does not generate an interrupt to the host. RXUF flag generates an interrupt to the host.
TXEMPT
RXEMPT
TXOF 0 0 0
RXUF 0
Receive Buffer/FIFO Empty This status bit asserts when there is no data in the receive FIFO/Buffer. This bit does not take into account data that is in the receive shift register. 0 1 Receive buffer is not empty. Receive buffer is empty.
52 Reserved 1 TXOF
This read-only bitfield is reserved and always has the value zero. Transmitter Buffer Overflow Flag This flag indicates that more data has been written to the transmit buffer than it can hold. This bit will assert regardless of the value of CFIFO[TXOFE]. However, an interrupt will only be issued to the host if the CFIFO[TXOFE] bit is set. This flag is cleared by writing a "1". 0 1 No transmit buffer overflow has occurred since the last time the flag was cleared. At least one transmit buffer overflow has occurred since the last time the flag was cleared.
0 RXUF
Receiver Buffer Underflow Flag This flag indicates that more data has been read from the receive buffer than was present. This bit will assert regardless of the value of CFIFO[RXUFE]. However, an interrupt will only be issued to the host if the CFIFO[RXUFE] bit is set. This flag is cleared by writing a "1". 0 1 No receive buffer underflow has occurred since the last time the flag was cleared. At least one receive buffer underflow has occurred since the last time the flag was cleared.
Module Memory Map Addresses: UART0_TWFIFO 4006_A000h base + 13h offset = 4006_A013h UART1_TWFIFO 4006_B000h base + 13h offset = 4006_B013h UART2_TWFIFO 4006_C000h base + 13h offset = 4006_C013h UART3_TWFIFO 4006_D000h base + 13h offset = 4006_D013h UART4_TWFIFO 400E_A000h base + 13h offset = 400E_A013h UART5_TWFIFO 400E_B000h base + 13h offset = 400E_B013h
Bit 7 6 5 4 3 2 1 0
TXWATER 0 0 0 0
TXCOUNT
RXWATER 0 0 0 1
Module Memory Map Addresses: UART0_RCFIFO 4006_A000h base + 16h offset = 4006_A016h UART1_RCFIFO 4006_B000h base + 16h offset = 4006_B016h UART2_RCFIFO 4006_C000h base + 16h offset = 4006_C016h UART3_RCFIFO 4006_D000h base + 16h offset = 4006_D016h UART4_RCFIFO 400E_A000h base + 16h offset = 400E_A016h UART5_RCFIFO 400E_B000h base + 16h offset = 400E_B016h
Bit 7 6 5 4 3 2 1 0
RXCOUNT
ONACK 0 0
ANACK 0
INIT 0
TTYPE 0
ISO_7816E
Generate NACK on Error When this bit is set, the receiver will automatically generate a NACK response if a parity occurs or if INIT is set and an invalid initial character is detected. A NACK is only generated if TTYPE = 0. If ANACK is set the UART will attempt to retransmit the data indefinitely. To stop retransmission attempts, clear C2[TE] or ISO_7816E and do not set until S1[TC] set C2[TE] again. 0 1 No NACK is automatically generated. A NACK is automatically generated if a parity error is detected or if an invalid initial character is detected.
2 INIT
Detect Initial Character When this bit is set, all received characters will be searched for a valid initial character. If an invalid initial character is identified then a NACK will be sent if ANACK is set. All received data is discarded and error flags blocked (Si[NF], S1[OR], S1[FE], S1[PF], IS7816[WT], IS7816[CWT], IS7816[BWT], IS7816[GTV]) until a valid initial character is detected. Upon detection of a valid initial character the configuration values S2[MSBF], C3[TXINV] and S2[RXINV] and automatically updated to reflect the initial character that was received. The actual INIT data value is not stored in the receive buffer. Additionally, upon detection of a valid initial character the IS7816[INITD] flag is set and an interrupt issued as programed by the IE7816[INITDE] bit. When a valid initial character is detected the INIT bit is automatically cleared. 0 1 Normal operating mode. Receiver does not seek to identify initial character. Receiver searches for initial character.
1 TTYPE
Transfer Type This bit indicates the transfer protocol being used. 0 1 T = 0 Per the ISO-7816 specification. T = 1 Per the ISO-7816 specification.
0 ISO_7816E
ISO-7816 Functionality Enabled This bit indicates that the UART is operating according to the ISO-7816 protocol. NOTE: This bit should only be modified when no transmit or receive is occurring. If this bit is changed during a data transfer the data being transmitted or received may be transferred incorrectly. 0 1 ISO-7816 functionality is turned off / not enabled. ISO-7816 functionality is turned on / enabled.
WTE 0
CWTE 0
BWTE 0
INITDE 0
GTVE 0
TXTE 0
RXTE 0
6 CWTE
Character Wait Timer Interrupt Enable 0 1 The assertion of the IS7816[CWT] bit will not result in the generation of an interrupt. The assertion of the IS7816[CWT] bit will result in the generation of an interrupt.
5 BWTE
Block Wait Timer Interrupt Enable 0 1 The assertion of the IS7816[BWT] bit will not result in the generation of an interrupt. The assertion of the IS7816[BWT] bit will result in the generation of an interrupt.
4 INITDE
Initial Character Detected Interrupt Enable 0 1 The assertion of the IS7816[INITD] bit will not result in the generation of an interrupt. The assertion of the IS7816[INITD] bit will result in the generation of an interrupt.
3 Reserved 2 GTVE
This read-only bit is reserved and always has the value zero. Guard Timer Violated Interrupt Enable 0 1 The assertion of the IS7816[GTV] bit will not result in the generation of an interrupt. The assertion of the IS7816[GTV] bit will result in the generation of an interrupt. Table continues on the next page...
0 RXTE
Receive Threshold Exceeded Interrupt Enable 0 1 The assertion of the IS7816[RXT] bit will not result in the generation of an interrupt. The assertion of the IS7816[RXT] bit will result in the generation of an interrupt.
WT 0
CWT 0
BWT 0
INITD 0
GTV 0
TXT 0
RXT 0
Block Wait Timer Interrupt This flag indicates that the block wait time, the time between the leading edge of first received character of a block and the leading edge of the last character the previously transmitted block. This flag only asserts when C7816[TTYPE] = 1.This interrupt is cleared by writing '1'. 0 1 Block wait time (BWT) has not been violated. Block wait tTime (BWT) has been violated.
4 INITD
Initial Character Detected Interrupt This flag indicates that a valid initial character was received. This interrupt is cleared by writing `1'. 0 1 A valid initial character has not been received. A valid initial character has been received.
3 Reserved 2 GTV
This read-only bit is reserved and always has the value zero. Guard Timer Violated Interrupt This flag indicates that one or more of the character guard time, block guard time or guard time were violated. This interrupt is cleared by writing `1'. 0 1 A guard time (GT, CGT or BGT) has not been violated. A guard time (GT, CGT or BGT) has been violated.
1 TXT
Transmit Threshold Exceeded Interrupt This flag indicates that the transmit NACK threshold has been exceeded as indicated by the ET7816[TXTHRESHOLD] field. Regardless if this flag is set, the UART will continue to retransmit indefinitely. This flag only asserts when C7816[TTYPE] = 0. If 7816E is cleared/disabled, ANACK is cleared/disabled, C2[TE] is cleared/disabled, C7816[TTYPE] = 1 or packet is transferred without receiving a NACK the internal NACK detection counter is cleared and the count restarts from zero upon the next received NACK. This interrupt is cleared by writing `1'. 0 1 The number of retries and corresponding NACKS does not exceed the value in the ET7816[TXTHRESHOLD] field. The number of retries and corresponding NACKS exceeds the value in the ET7816[TXTHRESHOLD] field.
0 RXT
Receive Threshold Exceeded Interrupt This flag indicates that there were more than ET7816[RXTHRESHOLD] consecutive NACKS generated in response to parity errors on received data. This flag requires ANACK to be set. Additionally, this flag only asserts when C7816[TTYPE] = 0. Clearing this bit also resets the counter keeping track of consecutive NACKS. The UART will continue to attempt to receive data regardless of if this flag is set. If 7816E is cleared/disabled, RE is cleared/disabled, C7816[TTYPE] = 1 or packet is received without needing to Table continues on the next page...
WI 1 0 1 0
Module Memory Map Addresses: UART0_WP7816T1 4006_A000h base + 1Bh offset = 4006_A01Bh UART1_WP7816T1 4006_B000h base + 1Bh offset = 4006_B01Bh UART2_WP7816T1 4006_C000h base + 1Bh offset = 4006_C01Bh UART3_WP7816T1 4006_D000h base + 1Bh offset = 4006_D01Bh UART4_WP7816T1 400E_A000h base + 1Bh offset = 400E_A01Bh UART5_WP7816T1 400E_B000h base + 1Bh offset = 400E_B01Bh
Bit 7 6 5 4 3 2 1 0
CWI 0 0 1 0
BWI 1 0
30 BWI
GTN 0 0 0 0
GTFD 0 0 0 1
Module Memory Map Addresses: UART0_ET7816 4006_A000h base + 1Eh offset = 4006_A01Eh UART1_ET7816 4006_B000h base + 1Eh offset = 4006_B01Eh UART2_ET7816 4006_C000h base + 1Eh offset = 4006_C01Eh UART3_ET7816 4006_D000h base + 1Eh offset = 4006_D01Eh UART4_ET7816 400E_A000h base + 1Eh offset = 400E_A01Eh UART5_ET7816 400E_B000h base + 1Eh offset = 400E_B01Eh
Bit 7 6 5 4 3 2 1 0
TXTHRESHOLD 0 0 0 0
RXTHRESHOLD 0 0 0
Chapter 48 Universal asynchronous receiver/transmitter (UART) Addresses: UART0_TL7816 4006_A000h base + 1Fh offset = 4006_A01Fh UART1_TL7816 4006_B000h base + 1Fh offset = 4006_B01Fh UART2_TL7816 4006_C000h base + 1Fh offset = 4006_C01Fh UART3_TL7816 4006_D000h base + 1Fh offset = 4006_D01Fh UART4_TL7816 400E_A000h base + 1Fh offset = 400E_A01Fh UART5_TL7816 400E_B000h base + 1Fh offset = 400E_B01Fh
Bit 7 6 5 4 3 2 1 0
TLEN 0 0 0 0
Functional description
48.4.1 Transmitter
INTERNAL BUS
MODULE CLOCK
BAUDRATE GENERATE
SBR12:0
BRFA4:0
R485 CONTRAL
CTS_B
SHIFT DIRECTION
PE PT
TxD Pin Control Tx port en Tx output buffer en Tx input buffer en DMA Done
TXDIR SBK TE
7816 LOGIC
LOOP CONTROL
LOOPS RSRC
Functional description
Hardware supports odd or even parity. When parity is enabled, the bit immediately preceding the stop bit is the parity bit. When the transmit shift register is not transmitting a frame, the transmit data output signal goes to the idle condition, logic 1. If at any time software clears the C2[TE] bit, the transmitter enable signal goes low and the transmit signal goes idle. If software clears C2[TE] while a transmission is in progress, the character in the transmit shift register continues to shift out, provided S1[TC] flag was cleared during the data write sequence. To clear the S1[TC] flag, the S1 register must be read followed by a write to UARTx_D register. If the S1[TC] flag is cleared during character transmission and the C2[TE] bit is cleared, the transmission enable signal is deasserted at the completion of current frame. Following this, the transmit data out signal enters the idle state even if there is data pending in the UART transmit data buffer. To ensure that all the data written in the FIFO is transmitted on the link before clearing C2[TE], wait for the S1[TC] flag to set. Alternatively, the same can be achieved by setting TWFIFO[TXWATER] to 0x0 and waiting for S1[TDRE] to set.
As long as C2[SBK] is set, transmitter logic continuously loads break characters into the transmit shift register. After software clears the C2[SBK] bit, the shift register finishes transmitting the last break character and then transmits at least one logic 1. The automatic logic 1 at the end of a break character guarantees the recognition of the start bit of the next character. Break bits are not supported when C7816[ISO_7816E] is set/enabled.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1390 Freescale Semiconductor, Inc.
NOTE When queueing a break character the break character will be transmitted following the completion of the data value currently being shifted out from the shift register. This means that if data is queued in the data buffer to be transmitted, the break character will preempt that queued data. The queued data will then be transmitted after the break character is complete.
Functional description
If the clear-to-send operation is disabled, the transmitter ignores the state of CTS. Also, if the transmitter is forced to send a continuous low condition because it is sending a break character, the transmitter ignores the state of CTS regardless of whether the clear-to-send operation is enabled. The transmitter's CTS signal can also be enabled even if the same UART receiver's RTS signal is disabled.
C1 in transmission
TXD
C1
C2
C3
Break
C4
C5
C2
C5
Functional description
48.4.2 Receiver
INTERNAL BUS
BRFA4:0
DATA BUFFER
RE RAF
STOP
START
MODULE CLOCK
PE PT
From Transmitter
PARITY LOGIC
WAKEUP LOGIC
RxD
the data word. All necessary bit ordering is handled automatically by the module hence the format of the data read from receive data buffer is completely independent of the S2[MSBF] setting.
Functional description
After every start bit. After the receiver detects a data bit change from logic 1 to logic 0 (after the majority of data bit samples at RT8, RT9, and RT10 returns a valid logic 1 and the majority of the next RT8, RT9, and RT10 samples returns a valid logic 0). To locate the start bit, data recovery logic does an asynchronous search for a logic 0 preceded by three logic 1s. When the falling edge of a possible start bit occurs, the RT clock begins to count to 16.
START BIT Rx pin input SAMPLES 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 LSB
DATA SAMPLING
RT CLOCK
RT7 RT8 RT9 RT2 RT3 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT2 RT3 RT4 RT6 RT12 RT13 RT14 RT15
To verify the start bit and to detect noise, data recovery logic takes samples at RT3, RT5, and RT7 when C7816[ISO_7816E] is cleared/disabled and RT8, RT9 and RT10 when C7816[ISO_7816E] is set/enabled. The following table summarizes the results of the start bit verification samples.
Table 48-228. Start bit verification
RT3, RT5, and RT7 samples RT8, RT9, RT10 samples when 7816E 000 001 010 011 100 101 110 111 Start bit verification Yes Yes Yes No Yes No No No Noise flag 0 1 1 0 1 0 0 0
RT11
RT10
RT16
RT5
RT1
RT4
If start bit verification is not successful, the RT clock is reset and a new search for a start bit begins. To determine the value of a data bit and to detect noise, recovery logic takes samples at RT8, RT9, and RT10. The following table summarizes the results of the data bit samples.
Table 48-229. Data bit recovery
RT8, RT9, and RT10 samples 000 001 010 011 100 101 110 111 Data bit determination 0 0 0 1 0 1 1 1 Noise flag 0 1 1 1 1 1 1 0
Note The RT8, RT9, and RT10 samples do not affect start bit verification. If any or all of the RT8, RT9, and RT10 start bit samples are logic 1s following a successful start bit verification, the noise flag (S1[NF]) is set and the receiver assumes that the bit is a start bit (logic 0). With the exception of when C7816[ISO_7816E] is set/enabled, where the values of RT8, RT9 and RT10 exclusively determine if a start bit exists. To verify a stop bit and to detect noise, recovery logic takes samples at RT8, RT9, and RT10. The following table summarizes the results of the stop bit samples. In the event that C7816[ISO_7816E] is set/enabled and C7816[TTYPE] = 0, verification of a stop bit does not take place. Rather, starting with RT8 the receiver transmits a NACK as programmed until time RT9 of the following time period. Framing Error detection is not supported when C7816[ISO_7816E] is set/enabled.
Table 48-230. Stop bit recovery
RT8, RT9, and RT10 samples 000 001 010 011 Framing error flag 1 1 1 0 Table continues on the next page... Noise flag 0 1 1 1
Functional description
In the following figure, the verification samples RT3 and RT5 determine that the first low detected was noise and not the beginning of a start bit. In this example C7816[ISO_7816E] = 0. The RT clock is reset and the start bit search begins again. The noise flag is not set because the noise occurred before the start bit was found.
START BIT Rx pin input SAMPLES 1 1 1 0 1 1 1 0 0 0 0 0 0 0 LSB
RT CLOCK
RT1 RT2 RT1 RT1 RT1 RT1 RT2 RT3 RT4 RT5 RT1 RT1 RT2 RT3 RT4 RT5 RT6 RT7 RT8 RT9 RT10 RT11 RT12 RT13 RT14 RT15
In the following figure, verification sample at RT3 is high. In this example C7816[ISO_7816E] = 0. The RT3 sample sets the noise flag. Although the perceived bit time is misaligned, the data samples RT8, RT9, and RT10 are within the bit time and data recovery is successful.
RT16
RT3
PERCEIVED START BIT ACTUAL START BIT Rx pin input SAMPLES 1 1 1 1 1 0 1 0 0 0 0 0 LSB
RT CLOCK
RT1 RT1 RT1 RT1 RT1 RT1 RT2 RT3 RT4 RT5 RT6 RT7 RT8 RT9 RT10
In the following figure, a large burst of noise is perceived as the beginning of a start bit, although the test sample at RT5 is high. In this example C7816[ISO_7816E] = 0. The RT5 sample sets the noise flag. Although this is a worst-case misalignment of perceived bit time, the data samples RT8, RT9, and RT10 are within the bit time and data recovery is successful.
PERCEIVED START BIT ACTUAL START BIT Rx pin input SAMPLES 1 1 1 0 0 1 0 0 0 0 LSB
RT CLOCK
RT1 RT2 RT3 RT4 RT5 RT6 RT7 RT8 RT1 RT1 RT1 RT1 RT2 RT3 RT4 RT5 RT6 RT7 RT8 RT9 RT10 RT11 RT12 RT13 RT14 RT15
RT11
RT12
RT13
RT14
RT15
RT16
RT1
RT2
RT3
RT4
RT5
RT6
The following figure shows the effect of noise early in the start bit time. In this example C7816[ISO_7816E] = 0. Although this noise does not affect proper synchronization with the start bit time, it does set the noise flag.
RT16
RT9
RT7
Functional description
LSB
RT CLOCK
RT6 RT7 RT8 RT9 RT1
RT1
RT2
RT1
RT1
RT1
RT1
RT1
RT1
RT1
RT1
RT1
RT1
RT2
RT3
RT5
RT10
RT11
RT12
RT13
RT14
RT15
The following figure shows a burst of noise near the beginning of the start bit that resets the RT clock. In this example C7816[ISO_7816E] = 0. The sample after the reset is low but is not preceded by three high samples that would qualify as a falling edge. Depending on the timing of the start bit search and on the data, the frame may be missed entirely or it may set the framing error flag.
START BIT NO START BIT FOUND 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 LSB
RT CLOCK
RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT4 RT5 RT6 RT7 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT2
RT16
RT4
In the following figure, a noise burst makes the majority of data samples RT8, RT9, and RT10 high. In this example C7816[ISO_7816E] = 0. This sets the noise flag but does not reset the RT clock. In start bits only, the RT8, RT9, and RT10 data samples are ignored. In this example, if C7816[ISO_7816E] = 1 then a start bit would not have been detected at all since at least two of the three samples (RT8, RT9, RT10) were high.
RT3
RT1
RT1
RT3
LSB
RT CLOCK
RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT1 RT2 RT3 RT4 RT5 RT6 RT7 RT8 RT9
RT10
RT11
RT12
RT13
RT14
RT15
RT16
RT1
RT2
RT3
Functional description
While C4[LBKDE] is set, it will have these effects on the UART registers: Prevents the S1[RDRF], S1[FE], S1[NF], and S1[PF] flags from being set. However, if they are already set they will remain set. Sets the LIN break detect interrupt flag, S2[LBKDIF] if a LIN break character is received. Break characters are not detected or supported when C7816[ISO_7816E] is set/enabled.
C1 in reception
RXD
C1
C2
C3
C4
C1
C3
C1 C2
C3
When S2[RXINV] is cleared, the first rising edge of the received character corresponds to the start bit. The infrared decoder resets its counter. At this time, the receiver also begins its start bit detection process. Once the start bit is detected, the receiver synchronizes its bit times to this start bit time. For the rest of the character reception, the infrared decoder's counter and the receiver's bit time counter count independently from each other. 48.4.2.8.2 Noise filtering
Any further rising edges detected during the first half of the infrared decoder counter are ignored by the decoder. Any pulses less than one RT clocks can be undetected by it regardless of whether it is seen in the first or second half of the count.
Functional description
48.4.2.8.3
Low-bit detection
During the second half of the decoder count, a rising edge is decoded as a '0', which is sent to the receiver. The decoder counter also is reset. 48.4.2.8.4 High-bit detection
At 16-RT clocks after the previous rising edge, if a rising edge is not seen, then the decoder sends a `1' to the receiver. If the next bit is a `0' which arrives late, then a low-bit is detected according to Low-bit detection. The value sent to the receiver is changed from `1' to a `0'. If what then appears to be a noise pulse occurs outside of the receiver's bit time sampling period, then the lateness of a `0' is not recorded as noise.
The following figure shows how much a slow received frame can be misaligned without causing a noise error or a framing error. The slow stop bit begins at RT8 instead of RT1 but arrives in time for the stop bit data samples at RT8, RT9, and RT10.
MSB
RECEIVER RT CLOCK
STOP
RT11
RT13
RT14
DATA SAMPLES
RT15
RT10
RT12
RT16
RT1
RT2
RT3
RT4
RT5
RT6
RT7
RT8
RT9
For an 8-bit data character, data sampling of the stop bit takes the receiver 154 RT cycles (9 bit times 16 RT cycles + 10 RT cycles). With the misaligned character shown in the above figure, the receiver counts 154 RT cycles at the point when the count of the transmitting device is 147 RT cycles (9 bit times 16 RT cycles + 3 RT cycles). The maximum percent difference between the receiver count and the transmitter count of a slow 8-bit data character with no errors is: ((154 147) 154) 100 = 4.54% For a 9-bit data character, data sampling of the stop bit takes the receiver 170 RT cycles (10 bit times 16 RT cycles + 10 RT cycles). With the misaligned character shown in the above figure, the receiver counts 170 RT cycles at the point when the count of the transmitting device is 163 RT cycles (10 bit times 16 RT cycles + 3 RT cycles). The maximum percent difference between the receiver count and the transmitter count of a slow 9-bit character with no errors is: ((170 163) 170) 100 = 4.12% 48.4.2.9.2 Fast data tolerance
The following figure shows how much a fast received frame can be misaligned. The fast stop bit ends at RT10 instead of RT16 but is still sampled at RT8, RT9, and RT10.
STOP
RECEIVER RT CLOCK
RT11
RT13
RT14
DATA SAMPLES
For an 8-bit data character, data sampling of the stop bit takes the receiver 154 RT cycles (9 bit times 16 RT cycles + 10 RT cycles). With the misaligned character shown in the above figure, the receiver counts 154 RT cycles at the point when the count of the transmitting device is 160 RT cycles (10 bit times 16 RT cycles).
RT15
RT10
RT12
RT16
RT1
RT2
RT3
RT4
RT5
RT6
RT7
RT8
RT9
Functional description
The maximum percent difference between the receiver count and the transmitter count of a fast 8-bit character with no errors is: ((154 160) 154) 100 = 3.90% For a 9-bit data character, data sampling of the stop bit takes the receiver 170 RT cycles (10 bit times 16 RT cycles + 10 RT cycles). With the misaligned character shown in the above figure, the receiver counts 170 RT cycles at the point when the count of the transmitting device is 176 RT cycles (11 bit times 16 RT cycles). The maximum percent difference between the receiver count and the transmitter count of a fast 9-bit character with no errors is: ((170 176) 170) 100 = 3.53%
In this wakeup method, an idle condition on the unsynchronized receiver input signal clears the C2[RWU] bit and wakes the UART. The initial frame or frames of every message contain addressing information. All receivers evaluate the addressing information, and receivers for which the message is addressed process the frames that follow. Any receiver for which a message is not addressed can set its C2[RWU] bit and return to the standby state. The C2[RWU] bit remains set and the receiver remains on standby until another idle character appears on the unsynchronized receiver input signal. Idle line wakeup requires that messages be separated by at least one idle character and that no message contains idle characters. When C2[RWU] is one and S2[RWUID] is zero, the idle character that wakes the receiver does not set the S1[IDLE] flag or the receive data register full flag, S1[RDRF]. The receiver wakes and waits for the first data character of the next message which will
be stored in the receive data buffer. When S2[RWUID] and C2[RWU] bits are set and C1[WAKE] is cleared, any idle condition sets the S1[IDLE] flag and generates an interrupt if enabled. Idle Input Line Wakeup is not supported when C7816[ISO_7816E] is set/enabled. 48.4.2.10.2 Address mark wakeup (C1[WAKE] = 1)
In this wakeup method, a logic 1 in the bit position immediately preceding the stop bit of a frame clears the C2[RWU] bit and wakes the UART. The logic 1 in the bit position immediately proceeding the stop bit marks a frame as an address frame that contains addressing information. All receivers evaluate the addressing information, and the receivers for which the message is addressed process the frames that follow. Any receiver for which a message is not addressed can set its C2[RWU] bit and return to the standby state. The C2[RWU] bit remains set and the receiver remains on standby until another address frame appears on the unsynchronized receiver input signal. The logic 1 in the bit position immediately preceding the stop bit clears the receiver's C2[RWU] bit before the stop bit is received and places the received data into the receiver data buffer. Address mark wakeup allows messages to contain idle characters but requires that the bit position immediately preceding the stop bit be reserved for use in address frames. If module is in standby mode and nothing triggers to wake the UART, no error flag is set even though an invalid error condition is detected on the receiving data line. Address mark wakeup is not supported when C7816[ISO_7816E] is set/enabled. 48.4.2.10.3 Match address operation
Match address operation is enabled when the C4[MAEN1] or C4[MAEN2] bit is set. In this function, a frame received by the RX pin with a logic 1 in the bit position immediately preceding the stop bit is considered an address and is compared with the associated MA1 or MA2 register. The frame is only transferred to the receive buffer, and S1[RDRF] is set, if the comparison matches. All subsequent frames received with a logic 0 in the bit position immediately preceding the stop bit are considered to be data associated with the address and are transferred to the receive data buffer. If no marked address match occurs then no transfer is made to the receive data buffer, and all following frames with logic zero in the bit position immediately preceding the stop bit are also discarded. If both the C4[MAEN1] and C4[MAEN2] bits are negated, the receiver operates normally and all data received is transferred to the receive data buffer. Match Address operation functions in the same way for both MA1 and MA2 registers.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1407
Functional description
If only one of C4[MAEN1] and C4[MAEN2] is asserted, a marked address is compared only with the associated match register and data is transferred to the receive data buffer only on a match. If C4[MAEN1] and C4[MAEN2] are asserted, a marked address is compared with both match registers and data is transferred only on a match with either register. Address match operation is not supported when C7816[ISO_7816E] is set/enabled.
0 19/32=0.59375 0
Table 48-232. Baud rates (example: module clock = 10.2 MHz) (continued)
Bits SBR (decimal) 33 66 133 266 531 1062 2125 4250 5795 Bits BRFA 00110 00000 00000 00000 00000 00000 00000 00000 00000 BRFD value Receiver clock (Hz) 307,344.6 154,545.5 76,691.7 38,345.9 19,209.0 9604.5 4800.0 2400.0 1760.1 Transmitter clock (Hz) 19,209.04 9659.1 4793.2 2396.6 1200.6 600.3 300.0 150.0 110.0 Target Baud rate 19,200 9600 4800 2400 1200 600 300 150 110 Error (%) 0.047 0.62 0.14 0.14 0.11 0.05 0.00 0.00 0.00
6/32=0.1875 0 0 0 0 0 0 0 0
Functional description
1. The address bit identifies the frame as an address character. See Receiver wakeup.
1. The address bit identifies the frame as an address character. 2. The address bit identifies the frame as an address character.
Note Unless in 9-bit mode with M10 set, do not use address mark wakeup with parity enabled.
Functional description
The most significant bit can be used for address mark wakeup.
ADDRESS MARK START BIT 6 BIT 7 STOP BIT BIT
BIT 1
BIT 2
BIT 3
BIT 4
BIT 5
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
48.4.4.3.2
Figure 48-233. Seven bits of data with LSB first and parity
START BIT 6 BIT
BIT 5 BIT 4 BIT 3 BIT 2 BIT 1
Figure 48-234. Seven bits of data with MSB first and parity
48.4.4.3.3
The most significant bit can be used for address mark wakeup.
ADDRESS MARK START BIT 8 STOP BIT 7 BIT BIT
BIT 1
BIT 2
BIT 3
BIT 4
BIT 5
BIT 6
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
48.4.4.3.4
Figure 48-237. Eight bits of data with LSB first and parity
START BIT 7 BIT START BIT 0 PARITY STOP BIT BIT
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
Figure 48-238. Eight bits of data with MSB first and parity
48.4.4.3.5
The most significant memory-mapped bit can be used for address mark wakeup.
ADDRESS MARK BIT 7 BIT 8 PARITY STOP BIT
BIT 1
BIT 2
BIT 3
BIT 4
BIT 5
BIT 6
START BIT
Figure 48-239. Nine bits of data with LSB first and parity
ADDRESS MARK START BIT 8 BIT 7 BIT
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
START BIT
Figure 48-240. Nine bits of data with MSB first and parity
Functional description
RXD
Enable single-wire operation by setting the C1[LOOPS] bit and the receiver source bit, C1[RSRC]. Setting the C1[LOOPS] bit disables the path from the unsynchronized receiver input signal to the receiver. Setting the C1[RSRC] bit connects the receiver input to the output of the TXD pin driver. Both the transmitter and receiver must be enabled (C2[TE] = 1 and C2[RE] = 1). When C7816[ISO_7816EN] is set, it is not a requirement that both C2[TE] and C2[RE] are set.
Enable loop operation by setting the C1[LOOPS] bit and clearing the C1[RSRC] bit. Setting the C1[LOOPS] bit disables the path from the unsynchronized receiver input signal to the receiver. Clearing the C1[RSRC] bit connects the transmitter output to the receiver input. Both the transmitter and receiver must be enabled (C2[TE] = 1 and C2[RE] = 1). When C7816[ISO_7816EN] is set, it is not a requirement that both C2[TE] and C2[RE] are set.
Functional description
When the C7816[INIT] bit is set, the receiver will search all received data for the first valid initial character. All data received which is not a valid initial character will be ignored and all flags resulting from the invalid data will be blocked from asserting. If the C7816[ANACK] bit is set, a NACK will be returned for invalid received initial characters and a RXT interrupt will be generated as programmed.
48.4.7.2 Protocol T = 0
When T = 0 protocol is selected, a relatively complex error detection scheme is used. Data characters are formatted as illustrated in the following figure. This scheme is also used for answer to reset and PPS formats.
ISO 7816 FORMAT WITHOUT PARITY ERROR (T=0) START BIT BIT 0
BIT 1 BIT 2 BIT 3 BIT 4 BIT 5 BIT 6
PARITY
BIT 1 BIT 2 BIT 3 BIT 4 BIT 5 BIT 6 BIT 7 BIT
As with other protocols supported by the UART the data character includes a start bit. However, in this case there are two stop bits rather than the typical single stop bit. In addition to a standard even parity check, the receiver has the ability to generate and return a NACK during the second half of the first stop bit period. The NACK must be at least one time period (ETU) in length and no more than 2 time periods (ETU) in length. The transmitter must wait for at least two time units (ETU) after detection of the error signal before attempting to retransmit the character. It is assumed that the UART and device (smartcard) know in advance which device is receiving and which is transmitting. No special mechanism is supplied by the UART to control receive and transmit in the mode other than the C2[TE] and C2[RE] bits.
48.4.7.3 Protocol T = 1
When T = 1 protocol is selected the NACK error detection scheme is not used. Rather, the parity bit is used on a character basis and a CRC or LRC is used on the block basis (i.e. each group of characters). As such, in this mode the data format allows for a single stop bit although additional inactive bit periods may be present between the stop bit and the next start bit. Data characters are formatted as illustrated in the following figure.
ISO 7816 FORMAT (T=1) START BIT BIT 0 PARITY
BIT 1 BIT 2 BIT 3 BIT 4 BIT 5 BIT 6 BIT 7 BIT
The smallest data unit that is transferred is a block. A block is made up of several data characters and may vary in size depending on the block type. The UART does not provide a mechanism to decode the block type. As part of the block, an LRC or CRC is included. The UART does not calculate the CRC or LRC for transmitted blocks nor does it verify the validity of the CRC or LRC for received blocks. The 7816 protocol requires that the initiator and the smartcard (device) alternate turns in transmitting and receiving blocks. When the UART detects that the last character in a block has been transmitted it will automatically clear the C2[TE] bit and enter receive mode. Hence, software must program the transmit buffer with the next data to be transmitted and then enable the C2[TE] bit once software has determined that the last character of the received block has been received. The UART detects that the last character of the transmit block has been sent when TL7816[TLEN] = 0 and four additional characters have been sent. The four additional characters are made up of three prior to TL7816[TLEN] decrementing (prologue) and one after TL7816[TLEN] = 0, the final character of the epilogue.
Functional description
Wait time (WT) is defined as the maximum allowable time between the leading edge of a character transmitted by the device (smartcard) and the leading edge of the previous character that was transmitted by the UART or the device. Likewise character wait time (CWT) is defined as the maximum allowable time between the leading edge of two characters within the same block, and block wait time (BWT) is defined as the maximum time between the leading edge character of the last block received by the device/ smartcard and the leading edge of the first character transmitted by the device/smartcard. Guard time (GT) is defined as the minimum allowable time between the leading edge of two consecutive characters. Character guard time (CGT) is the minimum allowable time between the leading edges of two consecutive characters in the same direction (transmission or reception). Block guard time (BGT) is the minimum allowable time between the leading edges of two consecutive characters in opposite directions (transmission then reception or reception then transmission). The GT and WT counters reset whenever C7816[TTYPE] = 1 or C7816[ISO_7816E] = 0 or a new dataword start bit has been received or transmitted as specified by the counter descriptions. The CWT, CGT, BWT, BGT counters reset whenever C7816[TTYPE] = 0 or C7816[ISO_7816E] = 0 or a new dataword start bit has been received or transmitted as specified by the counter descriptions. When C7816[TTYPE] = 1 some of the counter values require an assumption regarding the first data transferred when the UART first starts. This assumption is required when the 7816E has been disabled, when transition from C7816[TTYPE] = 0 to C7816[TTYPE] = 1 or when coming out of reset. In this case, it is assumed that the previous (non-existent) transfer was a received transfer. The UART will automatically handle GT, CGT and BGT such that the UART will not send a packet prior to the corresponding guard time expiring.
Table 48-237. Wait and guard time calculations
Parameter Wait time (WT) Character wait time (CWT) Block wait time (BWT) Guard time (GT) Reset value [ETU] 9600 Not used Not used 12 C7816[TTYPE] = 0 [ETU] WI 960 GTFD Not used Not used GTN not wqual to 255 12 + GTN GTN wqual to 255 12 Table continues on the next page... C7816[TTYPE] = 1 [ETU] Not used 11 + 2CWI 11 + 2BWI 960 GTFD Not used
Reset
The polarity of transmitted pulses and expected receive pulses can be inverted so that a direct connection can be made to external IrDA transceiver modules that use active low pulses. The infrared submodule receives its clock sources from the UART. One of these two clocks are selected in the infrared submodule in order to generate either 3/16, 1/16, 1/32 or 1/4 narrow pulses during transmission.
48.5 Reset
All registers reset to a particular value are indicated in Memory map and register definition.
RXEDGIF description also outlines additional details regarding the RXEDGIF interrupt because of its complexity of operation. Any of the UART interrupt requests listed in the table can be used to bring the CPU out of wait mode. .
Table 48-238. UART interrupt sources
Interrupt Source Transmitter Transmitter Receiver Receiver Receiver Receiver Receiver Receiver Receiver Receiver Receiver Transmitter Receiver Receiver Receiver Receiver Receiver Receiver Receiver Flag TDRE TC IDLE RDRF LBKDIF RXEDGIF OR NF FE PF RXUF TXOF WT CWT BWT INITD TXT RXT GTV Local enable TIE TCIE ILIE RIE LBKDIE RXEDGIE ORIE NEIE FEIE PEIE RXUFE TXOFE WTWE CWTE BWTE INITDE TXTE RXTE GTVE DMA select TDMAS = 0 RDMAS = 0 -
DMA operation
When a flag is configured for a DMA request, its associated DMA request is asserted when the flag is set. When the S1[RDRF] flag is configured as a DMA request, the clearing mechanism of reading S1 register followed by reading D register does not clear the associated flag. The DMA request remains asserted until an indication is received that the DMA transactions are done. When this indication is received, the flag bit and the associated DMA request are cleared. If the DMA operation failed to remove the situation that caused the DMA request another request will be issued.
Application information
7816 specific and UART generic parameters to match and configuration data that was received during the answer on reset period. Once the new settings have been programed (including the new baud rate and C7816[TTYPE]) the C2[RE] and C2[TE] can be reenabled as required.
Application information
a. Select a baud rate. Write this value to the UART baud registers (BDH/L) to begin the baud rate generator. Remember that the baud rate generator is disabled when the baud rate is zero. Writing to the BDH register has no effect without also writing to BDL register. b. Write to C1 register to configure word length, parity, and other configuration bits (LOOPS, RSRC, M, WAKE, ILT, PE, PT). Write to C4, MA1 and MA2 register to configure. c. Enable the transmitter, interrupts, receiver, and wakeup as required by writing to the C2 register bits (TIE, TCIE, RIE, ILIE, TE, RE, RWU, SBK), S2 register bits (MSBF, BRK13) and C3 register bits (ORIE, NEIE, PEIE, FEIE). A preamble or idle character is then shifted out of the transmitter shift register. 2. Transmit procedure for each byte: a. Monitor the S1[TDRE] flag by reading the S1 or responding to the TDRE interrupt. Or monitor the amount of free space in the transmit buffer directly using TCFIFO[TXCOUNT]. b. If the TDRE flag is set, or there is space in the transmit buffer, write the data to be transmitted to (C3[T8]/D). A new transmission will not result until data exists in the transmit buffer. 3. Repeat step 2 for each subsequent transmission. Note During normal operation, the S1[TDRE] flag is set when the shift register is loaded with the next data to be transmitted from the transmit buffer and the number of datawords contained in the transmit buffer is less than or equal to the value in TWFIFO[TXWATER], which occurs 9/16ths of a bit time after the start of the stop bit of the previous frame. To separate messages with preambles with minimum idle line time, use this sequence between messages: 1. Write the last dataword of the first message to C3[T8]/D. 2. Wait for the S1[TDRE] flag to go high (with TWFIFO[TXWATER] = 0), indicating the transfer of the last frame to the transmit shift register. 3. Queue a preamble by clearing and then setting the C2[TE] bit. 4. Write the first (and subsequent) datawords of the second message to C3[T8]/D.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1426 Freescale Semiconductor, Inc.
Application information
When LIN break detect (LBKDE) is asserted the S1[OR] flag has significantly different behavior than in other modes. The S1[OR] bit will set, regardless of how much space is actually available in the data buffer, if a LIN break character has been detected and the corresponding flag (S2[LBKDIF]) is not cleared before the first data character is received after the S2[LBKDIF] asserted. This behavior is intended to allow software sufficient time to read the LIN break character from the data buffer to ensure that a break character was actually detected. The checking of the break character was used on some older implementations and is hence supported for legacy reasons. Applications that do not require this checking can simply clear the S2[LBKDIF] without checking the stored value to ensure it is a break character.
UART
The transmitter's CTS signal can be used for hardware flow control whether its RTS signal is used for hardware flow control, transceiver driver enable, or not at all.
RXD RECEIVER
RO RE_B RECEIVER
A B
Application information
In the figure, the receiver enable signal is tied asserted. Another option for that connection is to connect RTS_B to both DE and RE_B. The transceiver's receiver is disabled while driving. A pullup can pull RXD to a non-floating value during this time. This option can be refined further by operating the UART in single-wire mode, freeing the RXD pin for other uses.
application codes from previous versions is used, they should be reviewed and modified to take the following items into account. Depending on the application code, additional items that not listed here may also need to be considered. 1. Various reserved registers and register bits were used (i.e. MSFB and M10). 2. This module now generates an error when invalid address spaces are used. 3. While documentation indicated otherwise, in some cases it was possible for S1[IDLE] to assert even if S1[OR] was set. 4. The S1[OR] flag will only be set if the data buffer (FIFO) does not have sufficient room. Previously, the data buffer was always a fixed size of one and the S1[OR] flag would set so long as the S1[RDRF] flag was set even if there was room in the data buffer. While the clearing mechanism is has remained the save for the S1[RDRF] flag, keeping the OR flag assertion tied to the RDRF event rather than the data buffer being full would have greatly reduced the usefulness of the buffer when its size is larger than one. 5. Previously when the C2[RWU] was set (and WAKE = 0), the IDLE flag could reassert up to every bit period. causing an interrupt and requiring the host processor to reassert the C2[RWU] bit. This behavior was modified. Now, when the C2[RWU] is set (and WAKE = 0) at least one non-idle bit must be detected before an idle can be detected. This means that if the C2[RWU] is asserted while the channel is idle, it will only cleared as a result of an idle being detected after at least one non-idle bit has been detected.
Application information
49.2 Overview
49.2.1 Supported types of cards
Different types of cards supported by the SDHC are described briefly as follows: The multi-media card (MMC) is a universal low cost data storage and communication media that is designed to cover a wide area of applications including mobile video and gaming. Old MMC cards are based on a 7-pin serial bus with a single data pin, while the new high speed MMC communication is based on an advanced 11-pin serial bus designed to operate in the low voltage range. The secure digital card (SD) is an evolution of the old MMC technology. It is specifically designed to meet the security, capacity, performance, and environment requirements inherent in newly emerging audio and video consumer electronic devices. The physical form factor, pin assignment and data transfer protocol are forward compatible with the old MMC (with some additions). Under the SD protocol, it can be categorized into memory card, I/O card and combo card, which has both memory and I/O functions. The memory card invokes a copyright protection mechanism that complies with the security of the SDMI standard. The I/O card, which is also known as SDIO card, provides high-speed data I/O with low power consumption for mobile electronic devices. For the sake of simplicity, the figure does not show cards with reduced size or mini cards.
Overview
Transceiver
DMA Interface
Card Slot
Crossbar switch
Peripheral bus
Power Supply
CE-ATA is a hard drive interface that is optimized for embedded applications storage. The device is layered on the top of the MMC protocol stack using the same physical interface. The interface electrical and signaling definition is defined like that in the MMC specification. Refer to the CE-ATA specification for more details.
Advanced DMA
CMD
CMD Channel State Machine Logic Control CRC CMD/ Data Channel Tx/Rx Handler
Interface
Peripheral bus
R/W
Register Bank
Clocks
Interrupt
49.2.3 Features
The features of the SDHC module include the following: Conforms to the SD Host Controller Standard Specification version 2.0 including test event register support Compatible with the MMC System Specification version 4.2/4.3 Compatible with the SD Memory Card Specification version 2.0 and supports the high capacity SD memory card Compatible with the SDIO Card Specification version 2.0 Compatible with the CE-ATA Card Specification version 1.0
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1435
Overview
Designed to work with CE-ATA, SD memory, miniSD memory, SDIO, miniSDIO, SD Combo, MMC, MMC plus, and MMC RS cards Card bus clock frequency up to 52 MHz Supports 1-bit / 4-bit SD and SDIO modes, 1-bit / 4-bit / 8-bit MMC modes, 1-bit / 4-bit / 8-bit CE-ATA devices Up to 200 Mbps of data transfer for SD/SDIO cards using 4 parallel data lines Up to 416 Mbps of data transfer for MMC cards using 8 parallel data lines in SDR (single data rate) mode Supports single block, multi-block read and write Supports block sizes of 1 ~ 4096 bytes Supports the write protection switch for write operations Supports both synchronous and asynchronous abort (both hardware and software CMD12) Supports pause during the data transfer at block gap Supports SDIO read wait and suspend resume operations Supports auto CMD12 for multi-block transfer Host can initiate non-data transfer command while data transfer is in progress Allows cards to interrupt the host in 1-bit and 4-bit SDIO modes, also supports interrupt period Embodies a fully configurable 128x32-bit FIFO for read/write data Supports internal and external DMA capabilities Support voltage selection by configuring vendor specific register bit Supports advanced DMA to perform linked memory access
MMC 1-bit MMC 4-bit MMC 8-bit CE-ATA 1-bit CE-ATA 4-bit CE-ATA 8-bit Identification mode (up to 400 kHz) MMC full speed mode (up to 20 MHz) MMC high speed mode (up to 52 MHz) SD/SDIO full speed mode (up to 25 MHz) SD/SDIO high speed mode (up to 50 MHz)
SDHC_CMD
I/O
SDHC_D0 SDHC_D1
DAT0 line or busy-state I/O detect 8-bit mode: DAT1 line 4-bit mode: DAT1 line or interrupt detect 1-bit mode: Interrupt detect I/O
SDHC_D2
4-/8-bit mode: DAT2 line or read wait 1-bit mode: Read wait
I/O
DMA System Address Register (SDHC_DSADDR) Block Attributes Register (SDHC_BLKATTR) Command Argument Register (SDHC_CMDARG) Transfer Type Register (SDHC_XFERTYP) Command Response 0 (SDHC_CMDRSP0) Command Response 1 (SDHC_CMDRSP1)
Command Response 2 (SDHC_CMDRSP2) Command Response 3 (SDHC_CMDRSP3) Buffer Data Port Register (SDHC_DATPORT) Present State Register (SDHC_PRSSTAT) Protocol Control Register (SDHC_PROCTL) System Control Register (SDHC_SYSCTL) Interrupt Status Register (SDHC_IRQSTAT) Interrupt Status Enable Register (SDHC_IRQSTATEN) Interrupt Signal Enable Register (SDHC_IRQSIGEN) Auto CMD12 Error Status Register (SDHC_AC12ERR) Host Controller Capabilities (SDHC_HTCAPBLT) Watermark Level Register (SDHC_WML)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0020h 0000_8008h 0000_0000h 117F_013Fh 0000_0000h 0000_0000h 07F3_0000h 0010_0010h
400B_1050
32
0000_0000h
ADMA Error Status Register (SDHC_ADMAES) ADMA System Address Register (SDHC_ADSADDR) Vendor Specific Register (SDHC_VENDOR) MMC Boot Register (SDHC_MMCBOOT) Host Controller Version (SDHC_HOSTVER)
32 32 32 32 32
Memory map and register definition Address: SDHC_DSADDR 400B_1000h base + 0h offset = 400B_1000h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DSADDR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BLKCNT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BLKSIZE 0 0 0 0 0 0 0 0 0 0 0 0 0 0
This read-only bitfield is reserved and always has the value zero. Transfer Block Size This register specifies the block size for block data transfers. Values ranging from 1 byte up to the maximum buffer size can be set. It can be accessed only when no transaction is executing (that is after a transaction has stopped). Read operations during transfers may return an invalid value, and write operations will be ignored. 000h 001h 002h 003h 004h ... 1FFh 200h ... 800h ... 1000h No data transfer 1 Byte 2 Bytes 3 Bytes 4 Bytes 511 Bytes 512 Bytes 2048 Bytes 4096 Bytes
Memory map and register definition Address: SDHC_CMDARG 400B_1000h base + 8h offset = 400B_1008h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CMDARG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The following table shows the summary of how register settings determine the type of data transfer.
Table 49-7. Transfer Type Register Setting for Various Transfer Types
Multi/Single block select 0 1 1 1 Block count ena ble Don't care 0 1 1 Block count Don't care Don't care Positive number Zero Function Single transfer Infinite transfer Multiple transfer No data transfer
The following table shows the relationship between the XFERTYP[CICEN] and XFERTYP[CCCEN], in regards to the XFERTYP[RSPTYP] as well as the name of the response type.
Table 49-8. Relationship Between Parameters and the Name of the Response Type
Response type (RSPTYP) 00 01 10 10 11 Index check enable (CI CEN) 0 0 0 1 1 CRC check enable (CCCEN) 0 1 0 1 1 Name of response type No Response IR2 R3,R4 R1,R5,R6 R1b,R5b
NOTE In the SDIO specification, response type notation for R5b is not defined. R5 includes R5b in the SDIO specification. But R5b is defined in this specification to specify that the SDHC will check the busy status after receiving a response. For example, usually CMD52 is used with R5, but the I/O abort command shall be used with R5b. The CRC field for R3 and R4 is expected to be all 1 bits. The CRC check shall be disabled for these response types.
Memory map and register definition Address: SDHC_XFERTYP 400B_1000h base + Ch offset = 400B_100Ch
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DPSEL
CICEN
CCCEN
0 CMDINX CMDTYP
0 RSPTYP
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
MSBSEL
DTDSEL
AC12EN
Reset
2322 CMDTYP
DMAEN 0
BCEN
Command Index Check Enable If this bit is set to 1, the SDHC will check the index field in the response to see if it has the same value as the command index. If it is not, it is reported as a command index error. If this bit is set to 0, the index field is not checked. 0b 1b Disable Enable
19 CCCEN
Command CRC Check Enable If this bit is set to 1, the SDHC shall check the CRC field in the response. If an error is detected, it is reported as a Command CRC Error. If this bit is set to 0, the CRC field is not checked. The number of bits checked by the CRC field value changes according to the length of the response. 0b 1b Disable Enable
This read-only bit is reserved and always has the value zero. Response Type Select 00b 01b 10b 11b No response Response length 136 Response length 48 Response length 48, check busy after response
This read-only bitfield is reserved and always has the value zero. Multi/Single Block Select This bit enables multiple block DAT line data transfers. For any other commands, this bit shall be set to 0. If this bit is 0, it is not necessary to set the block count register. 0b 1b Single block Multiple blocks
4 DTDSEL
Data Transfer Direction Select This bit defines the direction of DAT line data transfers. The bit is set to 1 by the host driver to transfer data from the SD card to the SDHC and is set to 0 for all other commands. Table continues on the next page...
This read-only bit is reserved and always has the value zero. Auto CMD12 Enable Multiple block transfers for memory require a CMD12 to stop the transaction. When this bit is set to 1, the SDHC will issue a CMD12 automatically when the last block transfer has completed. The host driver shall not set this bit to issue commands that do not require CMD12 to stop a multiple block data transfer. In particular, secure commands defined in File Security Specification (see reference list) do not require CMD12. In single block transfer, the SDHC will ignore this bit no matter if it is set or not. 0b 1b Disable Enable
1 BCEN
Block Count Enable This bit is used to enable the Block Count register, which is only relevant for multiple block transfers. When this bit is 0, the internal counter for block is disabled, which is useful in executing an infinite transfer. 0b 1b Disable Enable
0 DMAEN
DMA Enable This bit enables DMA functionality. If this bit is set to 1, a DMA operation shall begin when the host driver sets the DPSEL bit of this register. Whether the simple DMA, or the advanced DMA, is active depends on the PROCTL[DMAS]. 0b 1b Disable Enable
CMDRSP0
CMDRSP1
CMDRSP2
OCR register for memory OCR register for I/O etc. SDIO response New published RCA[31:16] and card status[15:0]
This table shows that most responses with a length of 48 (R[47:0]) have 32-bit of the response data (R[39:8]) stored in the CMDRSP0 register. Responses of type R1b (auto CMD12 responses) have response data bits (R[39:8]) stored in the CMDRSP3 register. Responses with length 136 (R[135:0]) have 120-bit of the response data (R[127:8]) stored in the CMDRSP0, 1, 2, and 3 registers. To be able to read the response status efficiently, the SDHC only stores part of the response data in the command response registers. This enables the host driver to efficiently read 32-bit of response data in one read cycle on a 32-bit bus system. Parts of the response, the index field and the CRC, are checked by the SDHC (as specified by the XFERTYP[CICEN] and the XFERTYP[CCCEN] bits) and generate an error interrupt if any error is detected. The bit range for the CRC check depends on the response length. If the response length is 48, the SDHC will check R[47:1], and if the response length is 136 the SDHC will check R[119:1]. Since the SDHC may have a multiple block data transfer executing concurrently with a CMD_wo_DAT command, the SDHC stores the auto CMD12 response in the CMDRSP3 register. The CMD_wo_DAT response is stored in CMDRSP0. This allows the SDHC to avoid overwriting the Auto CMD12 response with the CMD_wo_DAT and vice versa. When the SDHC modifies part of the command response registers, as shown in the table above, it preserves the unmodified bits.
Address: SDHC_CMDRSP3 400B_1000h base + 1Ch offset = 400B_101Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CMDRSP3
DATCONT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Memory map and register definition Address: SDHC_PRSSTAT 400B_1000h base + 24h offset = 400B_1024h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DLSL
CLSL
CINS
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
IPGOFF
HCKOFF
PEROFF
SDOFF
SDSTB
CDIHB 0
BWEN
BREN
RTA
DLA
Reset
CMD Line Signal Level This status is used to check the CMD line level to recover from errors, and for debugging. The reset value is effected by the external pullup/pulldown resistor, by default, the read value of this bit after reset is 1b, when the command line is pulled up. This read-only bitfield is reserved and always has the value zero. Card Inserted This bit indicates whether a card has been inserted. The SDHC debounces this signal so that the host driver will not need to wait for it to stabilize. Changing from a 0 to 1 generates a card insertion interrupt in Table continues on the next page...
CIHB 0
WTA
This read-only bitfield is reserved and always has the value zero. Buffer Read Enable This status bit is used for non-DMA read transfers. The SDHC may implement multiple buffers to transfer data efficiently. This read only flag indicates that valid data exists in the host side buffer. If this bit is high, valid data greater than the watermark level exist in the buffer. A change of this bit from 1 to 0 occurs when any read from the buffer is made. A change of this bit from 0 to1 occurs when there is enough valid data ready in the buffer and the buffer read ready interrupt has been generated and enabled. 0b 1b Read disable Read enable
10 BWEN
Buffer Write Enable This status bit is used for non-DMA write transfers. The SDHC can implement multiple buffers to transfer data efficiently. This read only flag indicates if space is available for write data. If this bit is 1, valid data greater than the watermark level can be written to the buffer. A change of this bit from 1 to 0 occurs when any write to the buffer is made. A change of this bit from 0 to 1 occurs when the buffer can hold valid data greater than the write watermark level and the buffer write ready interrupt is generated and enabled. 0b 1b Write disable Write enable
9 RTA
Read Transfer Active This status bit is used for detecting completion of a read transfer. This bit is set for either of the following conditions: After the end bit of the read command. When writing a 1 to the PROCTL[CREQ] to restart a read transfer. A transfer complete interrupt is generated when this bit changes to 0. This bit is cleared for either of the following conditions: When the last data block as specified by block length is transferred to the system, that is all data are read away from SDHC internal buffer. When all valid data blocks have been transferred from SDHC internal buffer to the system and no current block transfers are being sent as a result of the stop at block gap request being set to 1. 0b 1b No valid data Transferring data
8 WTA
Write Transfer Active This status bit indicates a write transfer is active. If this bit is 0, it means no valid write data exists in the SDHC. This bit is set in either of the following cases: After the end bit of the write command. When writing 1 to the PROCTL[CREQ] to restart a write transfer. This bit is cleared in either of the following cases: Table continues on the next page...
SD Clock Gated Off Internally This status bit indicates that the SD clock is internally gated off, because of buffer over/under-run or read pause without read wait assertion, or the driver has cleared SYSCTL[SDCLKEN] bit to stop the SD clock. This bit is for the host driver to debug data transaction on the SD bus. 0b 1b SD clock is active SD clock is gated off
6 PEROFF
SDHC clock Gated Off Internally This status bit indicates that the SDHC clock is internally gated off. This bit is for the host driver to debug transaction on the SD bus. When INITA bit is set, SDHC sending 80 clock cycles to the card, the SDCLKEN bit must be 1 to enable the output card clock, otherwise the SDHC clock will never be gate off, so SDHC clock and bus clock will be always active. 0b 1b SDHC clock is active SDHC clock is gated off
5 HCKOFF
System Clock Gated Off Internally This status bit indicates that the system clock is internally gated off. This bit is for the host driver to debug during a data transfer. 0b 1b System clock is active System clock is gated off
4 IPGOFF
Bus Clock Gated Off Internally This status bit indicates that the bus clock is internally gated off. This bit is for the host driver to debug. 0b 1b Bus clock is active Bus clock is gated off Table continues on the next page...
Data Line Active This status bit indicates whether one of the DAT lines on the SD bus is in use. In the case of read transactions: This status indicates if a read transfer is executing on the SD bus. Changes in this value from 1 to 0, between data blocks, generates a block gap event interrupt in the interrupt status register. This bit will be set in either of the following cases: After the end bit of the read command. When writing a 1 to the PROCTL[CREQ] to restart a read transfer. This bit will be cleared in either of the following cases: 1. When the end bit of the last data block is sent from the SD bus to the SDHC. 2. When the read wait state is stopped by a suspend command and the DAT2 line is released. The SDHC will wait at the next block gap by driving read wait at the start of the interrupt cycle. If the read wait signal is already driven (data buffer cannot receive data), the SDHC can wait for a current block gap by continuing to drive the read wait signal. It is necessary to support read wait in order to use the suspend / resume function. This bit will remain 1 during read wait. In the case of write transactions: This status indicates that a write transfer is executing on the SD bus. Changes in this value from 1 to 0 generate a transfer complete interrupt in the interrupt status register. This bit will be set in either of the following cases: After the end bit of the write command. When writing to 1 to the PROCTL[CREQ] to continue a write transfer. This bit will be cleared in either of the following cases: When the SD card releases write busy of the last data block, the SDHC will also detect if the output is not busy. If the SD card does not drive the busy signal after the CRC status is received, the SDHC shall assume the card drive Not busy. When the SD card releases write busy, prior to waiting for write transfer, and as a result of a stop at block gap request. In the case of command with busy pending: This status indicates that a busy state follows the command and the data line is in use. This bit will be cleared when the DAT0 line is released. 0b 1b DAT line inactive DAT line active
1 CDIHB
Command Inhibit (DAT) This status bit is generated if either the DLA or the RTA is set to 1. If this bit is 0, it indicates that the SDHC can issue the next SD/MMC Command. Commands with a busy signal belong to CDIHB (e.g. R1b, R5b type). Except in the case when the command busy is finished, changing from 1 to 0 generates a transfer complete interrupt in the interrupt status register. Table continues on the next page...
Command Inhibit (CMD) If this status bit is 0, it indicates that the CMD line is not in use and the SDHC can issue a SD/MMC Command using the CMD line. This bit is set also immediately after the transfer type register is written. This bit is cleared when the command response is received. Even if the CDIHB bit is set to 1, Commands using only the CMD line can be issued if this bit is 0. Changing from 1 to 0 generates a command complete interrupt in the interrupt status register. If the SDHC cannot issue the command because of a command conflict error (Refer to command CRC error) or because of a command not issued by auto CMD12 error, this bit will remain 1 and the command complete is not set. The status of issuing an auto CMD12 does not show on this bit. 0b 1b Can issue command using only CMD line Cannot issue command
Chapter 49 Secured digital host controller (SDHC) Address: SDHC_PROCTL 400B_1000h base + 28h offset = 400B_1028h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
CDSS
D3CD
CDTL
0 DMAS
EMODE
DTW
Reset
Wakeup Event Enable On SD Card Insertion This bit enables a wakeup event, via IRQSTAT[CINS]. FN_WUS (Wake Up Support) in CIS does not effect this bit. When this bit is set, the IRQSTATEN[CINSEN] and the SDHC interrupt can be asserted without SD_CLK toggling. When the wakeup feature is not enabled, the SD_CLK must be active in order to assert the IRQSTATEN[CINSEN] and the SDHC interrupt. 0b 1b Disabled Enabled
24 WECINT
Wakeup Event Enable On Card Interrupt This bit enables a wakeup event, via IRQSTAT[CINT]. This bit can be set to 1 if FN_WUS (Wake Up Support) in CIS is set to 1. When this bit is set, the card interrupt status and the SDHC interrupt can be asserted without SD_CLK toggling. When the wakeup feature is not enabled, the SD_CLK must be active in order to assert the card interrupt status and the SDHC interrupt. 0b 1b Disabled Enabled
2320 Reserved
This read-only bitfield is reserved and always has the value zero. Table continues on the next page...
LCTL 0
SABGREQ
WECINS
WECINT
WECRM
RWCTL
CREQ
0 IABG
0
0
Read Wait Control The read wait function is optional for SDIO cards. If the card supports read wait, set this bit to enable use of the read wait protocol to stop read data using the DAT[2] line. Otherwise the SDHC has to stop the SD Clock to hold read data, which restricts commands generation. When the host driver detects an SDIO card insertion, it shall set this bit according to the CCCR of the card. If the card does not support read wait, this bit shall never be set to 1, otherwise DAT line conflicts may occur. If this bit is set to 0, stop at block gap during read operation is also supported, but the SDHC will stop the SD Clock to pause reading operation. 0b 1b Disable read wait control, and stop SD clock at block gap when SABGREQ bit is set. Enable read wait control, and assert read wait without stopping SD clock at block gap when SABGREQ bit is set.
17 CREQ
Continue Request This bit is used to restart a transaction which was stopped using the PROCTL[SABGREQ]. When a suspend operation is not accepted by the card, it is also by setting this bit to restart the paused transfer. To cancel stop at the block gap, set PROCTL[SABGREQ] to 0 and set this bit to 1 to restart the transfer. The SDHC automatically clears this bit, therefore it is not necessary for the host driver to set this bit to 0. If both PROCTL[SABGREQ] and this bit are 1, the continue request is ignored. 0b 1b No effect Restart
16 SABGREQ
Stop At Block Gap Request This bit is used to stop executing a transaction at the next block gap for both DMA and non-DMA transfers. Until the IRQSTATEN[TCSEN] is set to 1, indicating a transfer completion, the host driver shall leave this bit set to 1. Clearing both the PROCTL[SABGREQ] and PROCTL[CREQ] does not cause the transaction to restart. Read Wait is used to stop the read transaction at the block gap. The SDHC will honor the PROCTL[SABGREQ] for write transfers, but for read transfers it requires that the SDIO card support read wait. Therefore, the host driver shall not set this bit during read transfers unless the SDIO card supports read wait and has set the PROCTL[RWCTL] to 1, otherwise the SDHC will stop the SD bus clock to pause the read operation during block gap. In the case of write transfers in which the host driver writes data to the data port register, the host driver shall set this bit after all block data is written. If this bit is set to 1, the host driver shall not write data to the data port register after a block is sent. Once this bit is set, the host driver shall not clear this bit before the IRQSTATEN[TCSEN] is set, otherwise the SDHC's behavior is undefined. This bit effects PRSSTAT[RTA], PRSSTAT[WTA], PRSSTAT[CDIHB]. 0b 1b Transfer Stop Table continues on the next page...
Card Detect Signal Selection This bit selects the source for the card detection. 0b 1b Card detection level is selected (for normal purpose) Card detection test level is selected (for test purpose)
6 CDTL
Card Detect Test Level This is bit is enabled while the CDSS is set to 1 and it indicates card insertion. 0b 1b Card detect test level is 0, no card inserted Card detect test level is 1, card inserted
54 EMODE
Endian Mode The SDHC supports all four endian modes in data transfer. 00b 01b 10b 11b Big endian mode Half word big endian mode Little endian mode Reserved
3 D3CD
DAT3 as Card Detection Pin If this bit is set, DAT3 should be pulled down to act as a card detection pin. Be cautious when using this feature, because DAT3 is also a chip-select for the SPI mode. A pulldown on this pin and CMD0 may set the card into the SPI mode, which the SDHC does not support. Note: Keep this bit set if SDIO interrupt is used. 0b 1b DAT3 does not monitor card Insertion DAT3 as card detection pin
21 DTW
Data Transfer Width This bit selects the data width of the SD bus for a data transfer. The host driver shall set it to match the data width of the card. Possible data transfer width is 1-bit, 4-bits or 8-bits. 00b 01b 10b 11b 1-bit mode 4-bit mode 8-bit mode Reserved
0 LCTL
RSTD
RSTC
RSTA
INITA
0 DTOCV
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
SDCLKEN
HCKEN 0
PEREN
SDCLKFS
W
DVS
Reset
IPGEN 0
Software Reset For CMD Line Only part of the command circuit is reset. The following registers and bits are cleared by this bit: PRSSTAT[CIHB] IRQSTAT[CC] 0b 1b No reset Reset
24 RSTA
Software Reset For ALL This reset effects the entire host controller except for the card detection circuit. Register bits of type ROC, RW, RW1C, RWAC are cleared. During its initialization, the host driver shall set this bit to 1 to reset the SDHC. The SDHC shall reset this bit to 0 when the capabilities registers are valid and the host driver can read them. Additional use of software reset for all does not affect the value of the capabilities registers. After this bit is set, it is recommended that the host driver reset the external card and re-initialize it. 0b 1b No reset Reset
This read-only bitfield is reserved and always has the value zero. Data Timeout Counter Value This value determines the interval by which DAT line timeouts are detected. Refer to the IRQSTAT[DTOE] for information on factors that dictate time-out generation. Time-out clock frequency will be generated by dividing the base clock SDCLK value by this value. The host driver can clear the IRQSTATEN[DTOESEN] to prevent inadvertent time-out events. 0000b 0001b ... SDCLK x 213 SDCLK x 214 Table continues on the next page...
SDCLK Frequency Select This register is used to select the frequency of the SDCLK pin. The frequency is not programmed directly, rather this register holds the prescaler (this register) and divisor (next register) of the base clock frequency register. Setting 00h bypasses the frequency prescaler of the SD Clock. Multiple bits must not be set, or the behavior of this prescaler is undefined. The two default divider values can be calculated by the frequency of SDHC clock and the following divisor bits. The frequency of SDCLK is set by the following formula: Clock frequency = (Base clock) / (prescaler x divisor) For example, if the base clock frequency is 96 MHz, and the target frequency is 25 MHz, then choosing the prescaler value of 01h and divisor value of 1h will yield 24 MHz, which is the nearest frequency less than or equal to the target. Similarly, to approach a clock value of 400 kHz, the prescaler value of 08h and divisor value of eh yields the exact clock value of 400 kHz. The reset value of this bit field is 80h, so if the input base clock (SDHC clock) is about 96 MHz, the default SD clock after reset is 375 kHz. According to the SD Physical Specification Version 1.1 and the SDIO Card Specification Version 1.2, the maximum SD clock frequency is 50 MHz and shall never exceed this limit. Only the following settings are allowed: 01h 02h 04h 08h 10h 20h 40h 80h Base clock divided by 2 Base clock divided by 4 Base clock divided by 8 Base clock divided by 16 Base clock divided by 32 Base clock divided by 64 Base clock divided by 128 Base clock divided by 256
74 DVS
Divisor This register is used to provide a more exact divisor to generate the desired SD clock frequency. Note the divider can even support odd divisor without deterioration of duty cycle. The setting are as following: 0h 1h ... Eh Fh Divisor by 1 Divisor by 2 Divisor by 15 Divisor by 16
3 SDCLKEN
SD Clock Enable The host controller shall stop SDCLK when writing this bit to 0. SDCLK frequency can be changed when this bit is 0. Then, the host controller shall maintain the same clock frequency until SDCLK is stopped (stop at SDCLK = 0). If the IRQSTAT[CINS] is cleared, this bit should be cleared by the host driver to save power. Peripheral Clock Enable Table continues on the next page...
2 PEREN
System Clock Enable If this bit is set, system clock will always be active and no automatic gating is applied. When this bit is cleared, system clock will be automatically off when no data transfer is on the SD bus. 0b 1b System clock will be internally gated off System clock will not be automatically gated off
0 IPGEN
IPG Clock Enable If this bit is set, bus clock will always be active and no automatic gating is applied. The bus clock will be internally gated off, if none of the following factors are met: The cmd part is reset, or Data part is reset, or Soft reset, or The cmd is about to send, or Clock divisor is just updated, or Continue request is just set, or This bit is set, or Card insertion is detected, or Card removal is detected, or Card external interrupt is detected, or The SDHC clock is not gated off NOTE: The bus clock will not be auto gated off if the SDHC clock is not gated off. So clearing only this bit has no effect unless the PEREN bit is also cleared. 0b 1b Bus clock will be internally gated off Bus clock will not be automatically gated off
The table below shows the relationship between the Transfer Complete and the Data Timeout Error.
Table 49-20. SDHC status for data timeout error/transfer complete bit combinations
Transfer complete 0 0 1 Data timeout error 0 1 X Meaning of the status X Timeout occurred dur ing transfer Data transfer complete
The table below shows the relationship between the command CRC error (CCE) and command timeout error (CTOE).
Table 49-21. SDHC status for CCE/CTOE Bit Combinations
Command complete 0 0 1 1 Command timeout er Meaning of the status ror 0 1 0 1 No error Response timeout error Response CRC error CMD line conflict
Chapter 49 Secured digital host controller (SDHC) Address: SDHC_IRQSTAT 400B_1000h base + 30h offset = 400B_1030h
Bit 31 30 29 28 27 26 25 24 AC12E 23 22 21 20 19 18 17 16
DTOE
DCE
CIE
CCE
w1c
w1c
w1c 0
7
w1c 0
5
w1c 0
4
w1c 0
3
w1c 0
2
w1c 0
1
w1c 0
0
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
6
CINS
CINT
BRR
DINT
BWR
CRM
BGE
TC
CC
w1c 0 0 0 0 0 0 0 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
w1c 0
Reset
This read-only bitfield is reserved and always has the value zero. Auto CMD12 Error Occurs when detecting that one of the bits in the Auto CMD12 Error Status register has changed from 0 to 1. This bit is set to 1, not only when the errors in Auto CMD12 occur, but also when the Auto CMD12 is not executed due to the previous command error. 0b 1b No Error Error
23 Reserved 22 DEBE
This read-only bit is reserved and always has the value zero. Data End Bit Error Occurs either when detecting 0 at the end bit position of read data, which uses the DAT line, or at the end bit position of the CRC. Table continues on the next page...
CTOE
DEBE
CEBE
DMAE
Data CRC Error Occurs when detecting a CRC error when transferring read data, which uses the DAT line, or when detecting the Write CRC status having a value other than 010. 0b 1b No Error Error
20 DTOE
Data Timeout Error Occurs when detecting one of following time-out conditions. Busy time-out for R1b,R5b type Busy time-out after Write CRC status Read Data time-out 0b 1b No Error Time out
19 CIE
Command Index Error Occurs if a Command Index error occurs in the command response. 0b 1b No Error Error
18 CEBE
Command End Bit Error Occurs when detecting that the end bit of a command response is 0. 0b 1b No Error End Bit Error Generated
17 CCE
Command CRC Error Command CRC Error is generated in two cases. If a response is returned and the Command Timeout Error is set to 0 (indicating no time-out), this bit is set when detecting a CRC error in the command response. The SDHC detects a CMD line conflict by monitoring the CMD line when a command is issued. If the SDHC drives the CMD line to 1, but detects 0 on the CMD line at the next SDCLK edge, then the SDHC shall abort the command (Stop driving CMD line) and set this bit to 1. The Command Timeout Error shall also be set to 1 to distinguish CMD line conflict. 0b 1b No Error CRC Error Generated
16 CTOE
Command Timeout Error Occurs only if no response is returned within 64 SDCLK cycles from the end bit of the command. If the SDHC detects a CMD line conflict, in which case a Command CRC Error shall also be set, this bit shall be set without waiting for 64 SDCLK cycles. This is because the command will be aborted by the SDHC. 0b 1b No Error Time out Table continues on the next page...
Card Removal This status bit is set if the Card Inserted bit in the Present State register changes from 1 to 0. When the host driver writes this bit to 1 to clear this status, the status of the Card Inserted in the Present State register should be confirmed. Because the card state may possibly be changed when the host driver clears this bit and the interrupt event may not be generated. When this bit is cleared, it will be set again if no card is inserted. In order to leave it cleared, clear the Card Removal Status Enable bit in Interrupt Status Enable register. 0b 1b Card state unstable or inserted Card removed
6 CINS
Card Insertion This status bit is set if the Card Inserted bit in the Present State register changes from 0 to 1. When the host driver writes this bit to 1 to clear this status, the status of the Card Inserted in the Present State register should be confirmed. Because the card state may possibly be changed when the host driver clears this bit and the interrupt event may not be generated. When this bit is cleared, it will be set again if a card is inserted. In order to leave it cleared, clear the Card Inserted Status Enable bit in Interrupt Status Enable register. 0b 1b Card state unstable or removed Card inserted
5 BRR
Buffer Read Ready This status bit is set if the Buffer Read Enable bit, in the Present State register, changes from 0 to 1. Refer to the Buffer Read Enable bit in the Present State register for additional information. 0b 1b Not ready to read buffer Ready to read buffer
4 BWR
Buffer Write Ready This status bit is set if the Buffer Write Enable bit, in the Present State register, changes from 0 to 1. Refer to the Buffer Write Enable bit in the Present State register for additional information. Table continues on the next page...
DMA Interrupt Occurs only when the internal DMA finishes the data transfer successfully. Whenever errors occur during data transfer, this bit will not be set. Instead, the DMAE bit will be set. Either Simple DMA or ADMA finishes data transferring, this bit will be set. 0b 1b No DMA Interrupt DMA Interrupt is generated
2 BGE
Block Gap Event If the PROCTL[SABGREQ] is set, this bit is set when a read or write transaction is stopped at a block gap. If PROCTL[SABGREQ] is not set to 1, this bit is not set to 1. In the case of a read transaction: This bit is set at the falling edge of the DAT line active status (When the transaction is stopped at SD Bus timing). The read wait must be supported in order to use this function. In the case of write transaction: This bit is set at the falling edge of write transfer active status (After getting CRC status at SD bus timing). 0b 1b No block gap event Transaction stopped at block gap
1 TC
Transfer Complete This bit is set when a read or write transfer is completed. In the case of a read transaction: This bit is set at the falling edge of the read transfer active status. There are two cases in which this interrupt is generated. The first is when a data transfer is completed as specified by the data length (after the last data has been read to the host system). The second is when data has stopped at the block gap and completed the data transfer by setting the PROCTL[SABGREQ] (after valid data has been read to the host system). In the case of a write transaction: This bit is set at the falling edge of the DAT line active status. There are two cases in which this interrupt is generated. The first is when the last data is written to the SD card as specified by the data length and the busy signal is released. The second is when data transfers are stopped at the block gap, by setting the PROCTL[SABGREQ], and the data transfers are completed. (after valid data is written to the SD card and the busy signal released). 0b 1b Transfer not complete Transfer complete
0 CC
Command Complete This bit is set when you receive the end bit of the command response (except Auto CMD12). Refer to the PRSSTAT[CIHB]. 0b 1b Command not complete Command complete
DEBESEN
CEBESEN
AC12ESEN
DMAESEN
DTOESEN
Reset
Bit R
0
15
0
14
0
13
1
12
0
11
0
10
0
9
1
8
0
7
1
6
1
5
1
4
1
3
1
2
1
1
CINTSEN
DINTSEN
BWRSEN
CRMSEN
BGESEN
BRRSEN
CINSEN
Reset
CCSEN 1
TCSEN
CTOESEN
DCESEN
CCESEN
CIESEN
1
0
23 Reserved 22 DEBESEN
This read-only bit is reserved and always has the value zero. Data End Bit Error Status Enable 0b 1b Masked Enabled
21 DCESEN
20 DTOESEN
19 CIESEN
18 CEBESEN
17 CCESEN
16 CTOESEN
This read-only bitfield is reserved and always has the value zero. Card Interrupt Status Enable If this bit is set to 0, the SDHC will clear the interrupt request to the system. The card interrupt detection is stopped when this bit is cleared and restarted when this bit is set to 1. The host driver should clear the this bit before servicing the card interrupt and should set this bit again after all interrupt requests from the card are cleared to prevent inadvertent interrupts. 0b 1b Masked Enabled Table continues on the next page...
6 CINSEN
5 BRRSEN
4 BWRSEN
3 DINTSEN
2 BGESEN
1 TCSEN
0 CCSEN
Memory map and register definition Address: SDHC_IRQSIGEN 400B_1000h base + 38h offset = 400B_1038h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DTOEIEN
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
CINSIEN
CINTIEN
BWRIEN
DINTIEN
CRMIEN
BGEIEN
BRRIEN
Reset
This read-only bitfield is reserved and always has the value zero. Auto CMD12 Error Interrupt Enable 0b 1b Masked Enabled
23 Reserved 22 DEBEIEN
This read-only bit is reserved and always has the value zero. Data End Bit Error Interrupt Enable 0b 1b Masked Enabled
21 DCEIEN
20 DTOEIEN
19 CIEIEN
Command Index Error Interrupt Enable 0b 1b Masked Enabled Table continues on the next page...
CCIEN 0
TCIEN
CTOEIEN 0
0
DEBEIEN
CEBEIEN
AC12EIEN
DMAEIEN
DCEIEN
CCEIEN
CIEIEN
17 CCEIEN
16 CTOEIEN
This read-only bitfield is reserved and always has the value zero. Card Interrupt Enable 0b 1b Masked Enabled
7 CRMIEN
6 CINSIEN
5 BRRIEN
4 BWRIEN
3 DINTIEN
2 BGEIEN
1 TCIEN
Transfer Complete Interrupt Enable 0b 1b Masked Enabled Table continues on the next page...
Changes in Auto CMD12 Error Status register can be classified in three scenarios: 1. When the SDHC is going to issue an auto CMD12. Set bit 0 to 1 if the auto CMD12 can't be issued due to an error in the previous command. Set bit 0 to 0 if the auto CMD12 is issued. 2. At the end bit of an auto CMD12 response. Check errors correspond to bits 1-4. Set bits 1-4 corresponding to detected errors. Clear bits 1-4 corresponding to detected errors. 3. Before reading the auto CMD12 error status bit 7.
Set bit 7 to 1 if there is a command that can't be issued. Clear bit 7 if there is no command to issue. The timing for generating the auto CMD12 error and writing to the command register are asynchronous. After that, bit 7 shall be sampled when the driver is not writing to the command register. So it is suggested to read this register only when the IRQSTAT[AC12E] is set. An Auto CMD12 error interrupt is generated when one of the error bits (0-4) is set to 1. The command not issued by auto CMD12 error does not generate an interrupt.
Address: SDHC_AC12ERR 400B_1000h base + 3Ch offset = 400B_103Ch
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7 CNIBAC12E
0
6
0
5
0
4
0
3
0
2
0
1
0
0
AC12EBE
AC12TOE
AC12CE
Reset
AC12NE 0
AC12IE
Auto CMD12 CRC Error Occurs when detecting a CRC error in the command response. 0b 1b No CRC error CRC Error met in auto CMD12 Response
2 AC12EBE
Auto CMD12 End Bit Error Occurs when detecting that the end bit of command response is 0 which should be 1. 0b 1b No error End bit error generated
1 AC12TOE
Auto CMD12 Timeout Error Occurs if no response is returned within 64 SDCLK cycles from the end bit of the command. If this bit is set to 1, the other error status bits (2-4) have no meaning. 0b 1b No error Time out
0 AC12NE
Auto CMD12 Not Executed If memory multiple block data transfer is not started, due to a command error, this bit is not set because it is not necessary to issue an auto CMD12. Setting this bit to 1 means the SDHC cannot issue the auto CMD12 to stop a memory multiple block data transfer due to some error. If this bit is set to 1, other error status bits (1-4) have no meaning. 0b 1b Executed Not executed
Chapter 49 Secured digital host controller (SDHC) Address: SDHC_HTCAPBLT 400B_1000h base + 40h offset = 400B_1040h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 ADMAS 19 18 17 16
SRS
DMAS
VS18
VS30
VS33
HSS
MBL
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
1
10
1
9
1
8
1
7
1
6
1
5
1
4
0
3
0
2
1
1
1
0
Reset
Voltage Support 3.0 V This bit shall depend on the host system ability. 0b 1b 3.0 V not supported 3.0 V supported
24 VS33
Voltage Support 3.3 V This bit shall depend on the host system ability. 0b 1b 3.3 V not supported 3.3 V supported
23 SRS
Suspend/Resume Support This bit indicates whether the SDHC supports suspend / resume functionality. If this bit is 0, the suspend and resume mechanism, as well as the read Wwait, are not supported, and the host driver shall not issue either suspend or resume commands. 0b 1b Not supported Supported Table continues on the next page...
High Speed Support This bit indicates whether the SDHC supports high speed mode and the host system can supply a SD Clock frequency from 25 MHz to 50 MHz. 0b 1b High speed not supported High speed supported
20 ADMAS
ADMA Support This bit indicates whether the SDHC supports the ADMA feature. 0b 1b Advanced DMA not supported Advanced DMA supported
This read-only bit is reserved and always has the value zero. Max Block Length This value indicates the maximum block size that the host driver can read and write to the buffer in the SDHC. The buffer shall transfer block size without wait cycles. 000b 001b 010b 011b 512 bytes 1024 bytes 2048 bytes 4096 bytes
150 Reserved
This read-only bitfield is reserved and always has the value zero.
WRWML 0 0 0 0 0 1 0 0 0 0 0
RDWML 0 0 0 0 0 1 0 0 0 0
Memory map and register definition Address: SDHC_FEVT 400B_1000h base + 50h offset = 400B_1050h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
DTOE
DCE
CIE
CCE
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
AC12EBE
CNIBAC12E
AC12TOE
AC12CE
Reset
AC12NE 0
AC12IE
CTOE 0
0
DEBE
CEBE
DMAE
AC12E
CINT
For recovering from this error, the host driver requires the ADMA state to identify the error descriptor address as follows: ST_STOP: Previous location set in the ADMA System Address register is the error descriptor address. ST_FDS: Current location set in the ADMA System Address register is the error descriptor address. ST_CADR: This state is never set because it only increments the descriptor pointer and doesnt generate an ADMA error. ST_TFR: Previous location set in the ADMA System Address register is the error descriptor address. In case of a write operation, the host driver should use the ACMD22 to get the number of the written block, rather than using this information, since unwritten data may exist in the host controller. The host controller generates the ADMA error interrupt when it detects invalid descriptor data (valid = 0) in the ST_FDS state. The host driver can distinguish this error by reading the valid bit of the error descriptor.
Table 49-30. ADMA Error State Coding
D01-D00 ADMA error state (when error has oc curred) ST_STOP (Stop DMA) Contents of ADMA system address reg ister Holds the address of the next executable de scriptor command
00
01 10 11
ST_FDS (fetch descrip Holds the valid descrip tor) tor address ST_CADR (change ad dress) ST_TFR (Transfer Da ta) No ADMA error is gen erated Holds the address of the next executable de scriptor command
Chapter 49 Secured digital host controller (SDHC) Address: SDHC_ADMAES 400B_1000h base + 54h offset = 400B_1054h
Bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3 ADMADCE
0
2
0
1
0
0
ADMALME
ADMAES
Reset
ADMA Length Mismatch Error This error occurs in the following 2 cases: While the block count enable is being set, the total data length specified by the descriptor table is different from that specified by the block count and block length. Total data length can not be divided by the block length. 0b 1b No error Error
10 ADMAES
ADMA Error State (when ADMA Error is occurred.) This field indicates the state of the ADMA when an error has occurred during an ADMA data transfer.
ADSADDR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 Reserved
INTSTVAL
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0 EXTDMAEN
Reset
VOLTSEL 0
External DMA Request Enable Enable the request to external DMA. When the internal DMA (either simple DMA or advanced DMA) is not in use, and this bit is set, SDHC will send out DMA request when the internal buffer is ready. This bit is particularly useful when transferring data by CPU polling mode, and it is not allowed to send out the external DMA request. By default, this bit is set. 0 1 In any scenario, SDHC does not send out external DMA request. When internal DMA is not active, the external DMA request will be sent out.
Memory map and register definition Address: SDHC_MMCBOOT 400B_1000h base + C4h offset = 400B_10C4h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
BOOTBLKCNT
W
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
BOOTMODE
BOOTACK
BOOTEN
AUTOSABGEN
DTOCVACK
Reset
5 BOOTMODE
4 BOOTACK
30 DTOCVACK
Boot ACK time out counter value. 0000b 0001b 0010b 0011b 0100b 0101b 0110b SDCLK x 2^8 SDCLK x 2^9 SDCLK x 2^10 SDCLK x 2^11 SDCLK x 2^12 SDCLK x 2^13 SDCLK x 2^14 Table continues on the next page...
VVN
SVN
Specification Version Number These status bits indicate the host controller specification version. 01h All others SD host specification version 2.0, supports test event register and ADMA. Reserved
Functional description
Status Sync
Tx / Rx FIFO
SD Bus I/F
AHB Bus
Internal DMA
Sync FIFOs
There are 3 transfer modes to access the data buffer: CPU polling mode:
For a host read operation, when the number of words received in the buffer meets or exceeds the RDWML watermark value, then by polling the IRQSTAT[BRR] bit the host driver can read the DATPORT register to fetch the amount of words set in the WML register from the buffer. The write operation is similar. External DMA mode: For a read operation, when there are more words received in the buffer than the amount set in the RDWML register, a DMA request is sent out to inform the external DMA to fetch the data. The request will be immediately de-asserted when there is an access on the DATPORT register. If the number of words in the buffer after the current burst meets or exceeds RDWML value, then the DMA request is asserted again. So for instance if there are twice as many words in the buffer than the RDWML value, there are two successive DMA requests with only one cycle of de-assertion between. The write operation is similar. Note the accesses CPU polling mode and external DMA mode both use the IP bus, and if the external DMA is enable, in both modes an external DMA request is sent out whenever the buffer is ready. Internal DMA mode (includes simple and advanced DMA access's): The internal DMA access, either by simple or advanced DMA, is over the crossbar switch bus. For internal DMA access mode, the external DMA request will never be sent out. For a read operation, when there are more words in the buffer than the amount set in the WML register, the internal DMA starts fetching data over the crossbar switch bus. Except INCR4 and INCR8, the burst type is always INCR mode and the burst length depends on the shortest of following factors: 1. Burst length configured in the burst length field of the WML register 2. Watermark level boundary 3. Block size boundary 4. Data boundary configured in the current descriptor (if the ADMA is active) 5. 1 KB address boundary Write operation is similar.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1487
Functional description
Sequential and contiguous access is necessary to ensure the pointer address value is correct. Random or skipped access is not possible. The byte order, by reset, is little endian mode. The actually byte order is swapped inside the buffer, according to the endian mode configured by software, as illustrated in the following diagrams. For a host write operation, byte order is swapped after data is fetched from the buffer and ready to send to the SD bus. For a host read operation, byte order is swapped before the data is stored into the buffer.
System IP Bus or System AHB Bus 31-24 23-16 15-8 7-0
7-0
15-8
23-16
31-24
Figure 49-28. Data swap between system bus and SDHC data buffer in byte little endian mode
15-8
7-0
31-24
23-16
7-0
15-8
23-16
31-24
Figure 49-29. Data swap between system bus and SDHC data buffer in half word big endian mode
When internal DMA is used, the SDHC will not inform the system before all the required number of bytes are transferred (if no error was encountered). When an error occurs during the data transfer, the SDHC will abort the data transfer and abandon the current block. The host driver should read the contents of the DSADDR to get the starting address of the abandoned data block. If the current data transfer is in multi block mode, the SDHC will not automatically send CMD12, even though the XFERTYP[AC12EN] bit is set. The host driver shall send CMD12 in this scenario and re-start the write operation from that address. It is recommended that a software reset for data be applied before the transfer is re-started after error recovery. The SDHC will not start data transmission until the number of words set in the WML register can be held in the buffer. If the buffer is empty and the host system does not write data in time, the SDHC will stop the SD_CLK to avoid the data buffer under-run situation.
Functional description
For any write transfer mode, the SDHC will not start data transmission until the number of words set in the WML register are in the buffer. If the buffer is full and the Host System does not read data in time, the SDHC will stop the SDHC_DCLK to avoid the data buffer over-run situation.
The following diagram illustrates the dividing of large data transfers. Assuming a kind of WLAN SDIO card only supports block size up to 64 bytes. Although the SDHC supports a block size of up to 4096 bytes, the SDIO can only accept a block size less than64 bytes, so the data must be divided (see example below).
544 Bytes WLAN Frame 802. .11 MAC header IV Frame Body ICV FCS
WLAN Frame is divided equally into 64 byte blocks plus the remainder 32 bytes
Data 64 bytes Data 64 bytes Data 64 bytes Data 32 bytes
Functional description
immediately de-asserted when an access to the DATPORT register is made. If the buffer's data still meets the watermark condition, the DMA request is asserted again after a cycle. Because the DMA burst length can't change during a data transfer for an external DMA transfer, the watermark level (read or write) must be a divisor of the block size. If it is not, transferring of the block may cause buffer under-run (read operation) or over-run (write operation). For example, if the block size is 512 bytes, the watermark level of read (or write) must be a power of two between 1 and 128. For processor core polling access, as the last access in the block transfer can be controlled by software, there is no such issue. The watermark level can be any value, even larger than the block size (but no greater than 128 words). This is because the actual number of bytes transferred by the software can be controlled and does not exceed the block size in each transfer. The SDHC also supports non-word aligned block size, as long as the card supports that block size. In this case, the watermark level should be set as the number of words. For example, if the block size is 31 bytes, the watermark level can be set to any number of word. For this case, the BLKATTR[BLKSIZE] bits shall be set as 1fh. For the CPU polling access, the burst length can be 1 to 128 words, without restriction. This is because the software will transfer 8 words, and the SDHC will also set the IRQSTAT[BWR] or IRQSTAT[BRR] bits when the remaining data does not violate data buffer. Refer to DMA burst length for more details about the dynamic watermark level of the data buffer. For the above example, even though 8 words are transferred via the DATPORT register, the SDHC will transfer only 31 bytes over the SD bus, as required by the BLKATTR[BLKSIZE] bits. In this data transfer, with non-word aligned block size, the endian mode should be set cautiously, or invalid data will be transferred to/from the card.
eSDHC Registers
Buffer Control
D MA Engine
Functional description
words, and the next burst length will be 6 words again. This is because the next block starts, which is 31 bytes, more than 6 words. The host driver writer may take this variable burst length into account. It is also acceptable to configure the burst length as the divisor of the block size, so that each time the burst length will be the same.
Valid/Invalid descriptor. Nop descriptor. Set data length descriptor. Set data address descriptor. Link descriptor. Interrupt flag and end flag in descriptor. For ADMA2, including the following descriptors: Valid/Invalid descriptor. Nop descriptor. Rsv descriptor. Set data length & address descriptor. Link descriptor. Interrupt flag and end flag in descriptor. ADMA2 deals with the lower 32-bit first, and then the higher 32-bit. If the 'Valid' flag of descriptor is 0, it will ignore the high 32-bit. Address field shall be set on word aligned(lower 2-bit is always set to 0). Data length is in byte unit. ADMA will start read/write operation after it reaches the tran state, using the data length and data address analyzed from most recent descriptor(s). For ADMA1, the valid data length descriptor is the last set type descriptor before tran type descriptor. Every tran type will trigger a transfer, and the transfer data length is extracted from the most recent set type descriptor. If there is no set type descriptor after the previous trans descriptor, the data length will be the value for previous transfer, or 0 if no set descriptor is ever met. For ADMA2, tran type descriptor contains both data length and transfer data address, so only a tran type descriptor can start a data transfer
Table 49-35. Format of the ADMA1 descriptor table
Address/page field 31 Address or data length 12 Address/page field 11 000000 6 5 Act2 4 Act1 Attribute field 3 0 2 Int 1 End 0 Valid
Functional description
Valid = 1 indicates this line of descriptor is effective. If Valid = 0 generate ADMA error Inter rupt and stop ADMA. End = 1 indicates current descriptor is the ending one. Int = 1 generates DMA interrupt when this descriptor is processed.
System Memory
Descriptor Table
Attribute Tran Link Attribute Set Tran, End Address
Address/Length
Address Address/Length
State Machine
Figure 49-32. Concept and access method of ADMA1 descriptor table Table 49-36. Format of the ADMA2 descriptor table
Address field 63 32-bit address Act2 0 0 1 32 Length 31 16-bit length Act1 0 1 0 Reserved 16 15 0000000000 Symbol nop rsv tran 06 05 Act2 04 Act1 03 0 Attribute field 02 Int 01 End 00 Valid
Operation Don't care Same as nop. Read this line and go to next one Transfer data with address and length set in this descriptor line
Valid = 1 indicates this line of descriptor is effective. If valid = 0 generate ADMA error interrupt and stop ADMA. End = 1 indicates current descriptor is the ending one. Int = 1 generates DMA interrupt when this descriptor is done.
System Memory
Descriptor Table
Length Attribute Tran Link
Address
Address1 Length1
System Address Register Data Length (invisible) Data Address (invisible) DMA Interrupt Flags State Machine SDMA Transfer Complete
Address2 Length2
Address Address3
49.5.2.4.2
ADMA interrupt
If the 'interrupt' flag of descriptor is set, ADMA will generate an interrupt according to different type descriptor: For ADMA1: Set type descriptor: interrupt is generated when data length is set. Tran type descriptor: interrupt is generated when this transfer is complete. Link type descriptor: interrupt is generated when new descriptor address is set. Nop type descriptor: interrupt is generated just after this descriptor is fetched. For ADMA2: Tran type descriptor: interrupt is generated when this transfer is complete.
Functional description
Link type descriptor: interrupt is generated when new descriptor address is set. Nop/Rsv type descriptor: interrupt is generated just after fetch this descriptor. 49.5.2.4.3 ADMA error
The ADMA stops whenever any error is encountered. These errors include: Fetching descriptor error Transfer error Data length mismatch error ADMA descriptor error will be generated when it fails to detect 'valid' flag in the descriptor. If ADMA descriptor error occurs, the interrupt is not generated even if the 'interrupt' flag of this descriptor is set. When XFERTYP[BCEN] bit is set, data length set in buffer must equal to the whole data length set in descriptor nodes, otherwise data length mismatch error will be generated. If XFERTYP[BCEN] bit is not set, the whole data length set in descriptor should be times of block length, otherwise, when all data set in the descriptor nodes are done not at block boundary, the data mismatch error will occur.
The SD protocol unit consists of four sub modules: 1. SD transceiver. 2. SD clock and monitor. 3. Command agent. 4. Data agent.
49.5.3.1 SD transceiver
In the SD protocol unit, the transceiver is the main control module. It consists of a FSM and control module, from which the control signals for all other three modules are generated.
Functional description
CRC OUT
There are three clocks inside the SDHC: 1. Bus clock. 2. SDHC clock. 3. System clock. The module monitors the activities of all other modules, supplies the clocks for them, and when enabled, automatically gates off the corresponding clocks.
Base
DIV
SD_CLK (SD_CLK_2X*)
The first stage outputs an intermediate clock (DIV), which can be base, base/2, base/3, ..., or base/16. The second stage is a prescaler, and outputs the actual clock (SDHC_CLK). This clock is the driving clock for all sub modules of the SD protocol unit, and the sync FIFOs to synchronize with the data rate from the internal data buffer. The frequency of the clock output from this stage, can be DIV, DIV/2, DIV/4,..., or DIV/256. Thus the highest frequency of the SDHC_CLK is base, and the next highest is base/2, while the lowest frequency is base/4096. If the base clock is of equal duty ratio (usually true), the duty cycle of SDHC_CLK is also 50%, even when the compound divisor is an odd value.
Functional description
The SDIO status bit is cleared by resetting the SDIO interrupt. Writing to this bit would have no effects. In 1-bit mode, the SDHC will detect the SDIO interrupt with or without the SD clock (to support wakeup). In 4-bit mode, the interrupt signal is sampled during the interrupt period, so there are some sample delays between the interrupt signal from the SDIO card and the interrupt to the host system interrupt controller. When the SDIO status has been set, and the host driver needs to service this interrupt, so the SDIO bit in the interrupt control register of SDIO card will be cleared. This is required to clear the SDIO interrupt status latched in the SDHC and to stop driving the interrupt signal to the system interrupt controller. The host driver must issue a CMD52 to clear the card interrupt. After completion of the card interrupt service, the SDIO Interrupt Enable bit is set to 1, and the SDHC starts sampling the interrupt signal again. The following diagram illustrates the SDIO card interrupt scheme and for the sequences of software and hardware events that take place during a card interrupt handling procedure.
IP Bus IRQ to CPU Start Enable card IRQ in Host eSDHC Registers SDIO IRQ Status SDIO IRQ Enable Command/ Response Handling Detect and steer card IRQ Read IRQ Status Register Disable Card IRQ in Host Interrogate and service Card IRQ Yes
Response Error?
Figure 49-36. Card interrupt scheme and card interrupt detection and handling procedure
Functional description
Note To make the interrupt a wakeup event, when all the clocks to the SDHC are disabled or when the whole system is in low power mode, the corresponding wakeup enabled bit needs to be set. Refer to protocol control register for more information.
Functional description
RESP
CMD2
RESP
CMD3
RESP
DAT[0]
010
512bytes +CRC
512bytes +CRC
Boot termininted
50ms max
Min 8 clocks + 48 clocks = 56 clocks required from CMD singal high to next MMC command
1 sec.max
Within 1 second after CMD0 with the argument of 0xFFFFFFFA is issued, the slave starts to send the first boot data to the master on the DAT line(s). If boot acknowledge is enabled, the slave has to send the acknowledge pattern '010' to the master within 50ms after the CMD0 with the argument of 0xFFFFFFFA is received. If boot acknowledge is disabled, theslave will not send out acknowledge pattern '010'. The master can terminate boot mode by issuing CMD0 (Reset). Boot operation will be terminated when all contents of the enabled boot data are sent to the master. After boot operation is executed, the slave shall be ready for CMD1 operation and the master needs to start a normal MMC initialization sequence by sending CMD1.
CLK CMD DAT[0]
CMD01 CMD0/Reset CMD1 RESP CMD2 RESP CMD3 RESP
010
512bytes +CRC
512bytes +CRC
50ms max
1 sec.max
NOTE 1.
Initialization/application of SDHC
For the sake of simplicity, the function wait_for_response is implemented here by means of polling. For an effective and formal way, the response is usually checked after the command complete interrupt is received. By doing this, make sure the corresponding interrupt status bits are enabled. For some scenarios, the response time-out is expected. For instance, after all cards respond to CMD3 and go to the standby state, no response to the host when CMD2 is sent. The host driver shall deal with 'fake' errors like this with caution.
(1)
Check IRQSTAT[CINS]
Y es, card presents
(2)
Here is the card detection sequence: Set the CINSIEN bit to enable card detection interrupt When an interrupt from the SDHC is received, check the IRQSTAT[CINS] bit in the Interrupt Status register to see if it was caused by card insertion Clear the CINSIEN bit to disable the card detection interrupt and ignore all card insertion interrupts afterwards To detect a CE-ATA device, after completing the normal MMC reset and initialization procedures, the host driver shall issue CMD 60 to check for a CE-ATA signature. If the device responds to the command with the CE-ATA signature, a CE-ATA device has been found. Then the driver should query EXT_CSD register byte 504 (S_CMD_SET) in the MMC register space. If the ATA bit (bit 4) is set, then the MMC device is an ATA device. If the device indicates that it is an ATA device, the Driver should set the ATA bit (bit 4) of the EXT_CSD register byte 191 (CMD_SET) to activate the ATA command set for use. To choose the command set, the driver shall issue CMD6. It is possible that the CE-ATA device does not support the ATA mode, so the driver shall not issue ATA command to the device.
Initialization/application of SDHC
49.6.2.2 Reset
The host consists of three types of resets: Hardware reset (card and host) which is driven by POR (power on reset) Software reset (host only) is proceed by the write operation on the SYSCTL[RSTD], SYSCTL[RSTC], or SYSCTL[RSTA] bits to reset the data part, command part, or all parts of the host controller, respectively Card reset (card only). The command, "Go_Idle_State" (CMD0), is the software reset command for all types of MMC cards, SD Memory cards, and CE-ATA cards. This command sets each card into the idle state regardless of the current card state. For an SD I/O Card, CMD52 is used to write an I/O reset in the CCCR. The cards are initialized with a default relative card address (RCA = 0x0000) and with a default driver stage register setting (lowest speed, highest driving current capability). After the card is reset, the host needs to validate the voltage range of the card.The following diagram illustrates the software flow to reset both the SDHC and the card. For CE-ATA device that supports ATA mode, before issuing CMD0 to reset the MMC layer, two CMD39 should be issued back-to-back to the ATA control register. The first CMD39 shall have the SRST bit set to one. The second CMD39 command shall have the SRST bit cleared to zero.
write 1 to RSTA bit to reset SDHC
V oltage V alidation
Figure 49-40. Flow chart for reset of the SDHC and SD I/O card
software_reset() { set_bit(SYSCTRL, RSTA); // software reset the Host set DTOCV and SDCLKFS bit fields to get the SD_CLK of frequency around 400kHz configure IO pad to set the power voltage of external card to around 3.0V poll bits CIHB and CDIHB bits of PRSSTAT to wait both bits are cleared set_bit(SYSCTRL, INTIA); // send 80 clock ticks for card to power up send_command(CMD_GO_IDLE_STATE, <other parameters>); // reset the card with CMD0
Initialization/application of SDHC prefix if (no error calling wait_for_response(APP_CMD, <...>) { // CMD55 is accepted send_command(SD_APP_OP_COND, <voltage range>, <...>); // ACMD41, to set voltage range for memory part or SD card wait_for_response(SD_APP_OP_COND); // voltage range is set if (card type is UNKNOWN) label the card as SD; return; // } // end of if (no error ... else if (errors other than time-out occur) { // command/response pair is corrupted deal with it by program specific manner; } // of else if (response time-out else { // CMD55 is refuse, it must be MMC card or CE-ATA card if (card is already labelled as SDCombo) { // change label re-label the card as SDIO; ignore the error or report it; return; // card is identified as SDIO card } // of if (card is ... send_command(SEND_OP_COND, <voltage range>, <...>); if (RESP_TIMEOUT == wait_for_response(SEND_OP_COND)) { // CMD1 is not accepted, either label the card as UNKNOWN; return; } // of if (RESP_TIMEOUT ... if (check for CE-ATA signature succeeded) { // the card is CE-ATA store CE-ATA specific info from the signature; label the card as CE-ATA; } // of if (check for CE-ATA ... else label the card as MMC; } // of else }
The host repeats the identification process with CMD2 and CMD3 for each card in the system until the last CMD2 gets no response from any of the cards in system. For MMC operation, the host starts the card identification process in open-drain mode with the identification clock rate lower than 400 kHz and the power voltage higher than 2.7 V. The open drain driver stages on the CMD line allow parallel card operation during card identification. After the bus is activated the host will request the cards to send their valid operation conditions (CMD1). The response to CMD1 is the "wired OR" operation on the condition restrictions of all cards in the system. Incompatible cards are sent into the inactive state. The host then issues the broadcast command All_Send_CID (CMD2), asking all cards for their unique card identification (CID) number. All unidentified cards (the cards in ready state) simultaneously start sending their CID numbers serially, while bit-wise monitoring their outgoing bit stream. Those cards, whose outgoing CID bits do not match the corresponding bits on the command line in any one of the bit periods, stop sending their CID immediately and must wait for the next identification cycle. Since the CID is unique for each card, only one card can be successfully send its full CID to the host. This card then goes into the identification state. Thereafter, the host issues Set_Relative_Addr (CMD3) to assign to the card a relative card address (RCA). Once the RCA is received the card state changes to the standby state, and the card does not react in further identification cycles, and its output driver switches from open-drain to push-pull. The host repeats the process, mainly CMD2 and CMD3, until the host receives a time-out condition to recognize the completion of the identification process. For CE-ATA operation (same interface as MMC cards):
card_registry() { do { // decide RCA for each card until response time-out if(card is labelled as SDCombo or SDIO) { // for SDIO card like device send_command(SET_RELATIVE_ADDR, 0x00, <...>); // ask SDIO card to publish its RCA retrieve RCA from response; } // end if (card is labelled as SDCombo ... else if (card is labelled as SD) { // for SD card send_command(ALL_SEND_CID, <...>); if (RESP_TIMEOUT == wait_for_response(ALL_SEND_CID)) break; send_command(SET_RELATIVE_ADDR, <...>); retrieve RCA from response; } // else if (card is labelled as SD ... else if (card is labelled as MMC or CE-ATA) { // treat CE-ATA as MMC send_command(ALL_SEND_CID, <...>); rca = 0x1; // arbitrarily set RCA, 1 here for example, this RCA is also the relative address to access the CE-ATA card send_command(SET_RELATIVE_ADDR, 0x1 << 16, <...>); // send RCA at upper 16 bits } // end of else if (card is labelled as MMC ... } while (response is not time-out); }
Initialization/application of SDHC
During a block write (CMD24 - 27, CMD60, CMD61), one or more blocks of data are transferred from the host to the card with a CRC appended to the end of each block by the host. If the CRC fails, the card shall indicate the failure on the dat line. The transferred data will be discarded and not written, and all further transmitted blocks (in multiple block write mode) will be ignored. If the host uses partial blocks whose accumulated length is not block aligned and block misalignment is not allowed (CSD parameter WRITE_BLK_MISALIGN is not set, and the CE-ATA card does not support partial block write, either), the card detects the block misalignment error and aborts the programming before the beginning of the first misaligned block. The card sets the ADDRESS_ERROR error bit in the status register, and while ignoring all further data transfer, waits in the Receive-data-State for a stop command. For a CE-ATA card, check the CE-ATA card specification for its behavior in block misalignment. The write operation is also aborted if the host tries to write over a write protected area. For MMC and SD cards, programming of the CID and CSD registers does not require a previous block length setting. The transferred data is also CRC protected. If a part of the CSD or CID register is stored in ROM, then this unchangeable part must match the corresponding part of the receive buffer. If this match fails, then the card will report an error and not change any register contents. For all types of cards, some may require long and unpredictable periods of time to write a block of data. After receiving a block of data and completing the CRC check, the card will begin writing and hold the DAT line low if its write buffer is full and unable to accept new data from a new WRITE_BLOCK command. The host may poll the status of the card with a SEND_STATUS command (CMD13) or other means for SDIO and CEATA cards at any time, and the card will respond with its status. The responded status indicates whether the card can accept new data or whether the write process is still in progress. The host may deselect the card by issuing a CMD7 (to select a different card) to place the card into the Standby State and release the DAT line without interrupting the
write operation. When re-selecting the card, it will reactivate the busy indication by pulling DAT to low if the programming is still in progress and the write buffer is unavailable. The software flow to write to a card incorporates the internal DMA and the write operation is a multi-block write with the Auto CMD12 enabled. For the other two methods (by means of external DMA or CPU polling status) with different transfer methods, the internal DMA parts should be removed and the alternative steps should be straightforward. The software flow to write to a card is described below: 1. Check the card status, wait until the card is ready for data. 2. Set the card block length/size: a. For SD/MMC cards, use SET_BLOCKLEN (CMD16) b. For SDIO cards or the I/O portion of SDCombo cards, use IO_RW_DIRECT (CMD52) to set the I/O Block Size bit field in the CCCR register (for function 0) or FBR register (for functions 1~7) c. For CE-ATA cards, configure bits 1~0 in the scrControl register 3. Set the eSDHC block length register to be the same as the block length set for the card in Step 2. 4. Set the eSDHC number block register (NOB), nob is 5 (for instance). 5. Disable the buffer write ready interrupt, configure the DMA settings and enable the eSDHC DMA when sending the command with data transfer. The AC12EN bit should also be set. 6. Wait for the Transfer Complete interrupt. 7. Check the status bit to see if a write CRC error occurred, or some another error, that occurred during the auto12 command sending and response receiving. 49.6.3.1.2 Write with pause
The write operation can be paused during the transfer. Instead of stopping the SD_CLK at any time to pause all the operations, which is also inaccessible to the host driver, the driver can set the PROCTL[SABGREQ] to pause the transfer between the data blocks. As there is no time-out condition in a write operation during the data blocks, a write to all types of cards can be paused in this way, and if the DAT0 line is not required to de-assert to release the busy state, no suspend command is needed.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1515
Initialization/application of SDHC
Like in the flow described in Normal write , the write with pause is shown with the same kind of write operation: 1. Check the card status, wait until card is ready for data. 2. Set the card block length/size: a. For SD/MMC, use SET_BLOCKLEN (CMD16) b. For SDIO cards or the I/O portion of SDCombo cards, use IO_RW_DIRECT(CMD52) to set the I/O Block Size bit field in the CCCR register (for function 0) or FBR register (for functions 1~7) c. For CE-ATA cards, configure bits 1~0 in the scrControl register 3. Set the SDHC block length register to be the same as the block length set for the card in Step 2. 4. Set the SDHC number block register (NOB), nob is 5 (for instance). 5. Disable the buffer write ready interrupt, configure the DMA settings and enable the SDHC DMA when sending the command with data transfer. The XFERTYP[AC12EN] bit should also be set. 6. Set the PROCTL[SABGREQ] bit. 7. Wait for the transfer complete interrupt. 8. Clear the PROCTL[SABGREQ] bit. 9. Check the status bit to see if a write CRC error occurred. 10. Set the PROCTL[CREQ] bit to continue the write operation. 11. Wait for the transfer complete interrupt. 12. Check the status bit to see if a write CRC error occurred, or some another error, that occurred during the auto12 command sending and response receiving. The number of blocks left during the data transfer is accessible by reading the contents of the BLKATTR[BLKCNT] . As the data transfer and the setting of the PROCTL[SABGREQ] bit are concurrent, and the delay of register read and the register setting, the actual number of blocks left may not be exactly the value read earlier. The driver shall read the value of BLKATTR[BLKCNT] after the transfer is paused and the transfer complete interrupt is received.
It is also possible the last block has begun when the stop at block gap request is sent to the buffer. In this case, the next block gap is actually the end of the transfer. These types of requests are ignored and the Driver should treat this as a non-pause transfer and deal with it as a common write operation. When the write operation is paused, the data transfer inside the host system is not stopped, and the transfer is active until the data buffer is full. Because of this (if not needed), it is recommended to avoid using the suspend command for the SDIO card. This is because when such a command is sent, the SDHC thinks the system will switch to another function on the SDIO card, and flush the data buffer. The SDHC takes the resume command as a normal command with data transfer, and it is left for the driver to set all the relevant registers before the transfer is resumed. If there is only one block to send when the transfer is resumed, the XFERTYP[MSBSEL] and XFERTYP[BCEN] bits are set as well as the XFERTYP[AC12EN] bit. However, the SDHC will automatically send a CMD12 to mark the end of the multi-block transfer.
For block reads, the basic unit of data transfer is a block whose maximum size is stored in areas defined by the corresponding card specification. A CRC is appended to the end of each block, ensuring data transfer integrity. The CMD17, CMD18, CMD53, CMD60, CMD61, and so on, can initiate a block read. After completing the transfer, the card returns to the transfer state. For multi blocks read, data blocks will be continuously transferred until a stop command is issued. The software flow to read from a card incorporates the internal DMA and the read operation is a multi-block read with the Auto CMD12 enabled. For the other two methods (by means of external DMA or CPU polling status) with different transfer methods, the internal DMA parts should be removed and the alternative steps should be straightforward. The software flow to read from a card is described below: 1. Check the card status, wait until card is ready for data. 2. Set the card block length/size: a. For SD/MMC, use SET_BLOCKLEN (CMD16)
Initialization/application of SDHC
b. For SDIO cards or the I/O portion of SDCombo cards, use IO_RW_DIRECT(CMD52) to set the I/O block size bit field in the CCCR register (for function 0) or FBR register (for functions 1~7) c. For CE-ATA cards, configure bits 1~0 in the scrControl register 3. Set the SDHC block length register to be the same as the block length set for the card in Step 2. 4. Set the SDHC number block register (NOB), nob is 5 (for instance). 5. Disable the buffer read ready interrupt, configure the DMA settings and enable the SDHC DMA when sending the command with data transfer. The XFERTYP[AC12EN] bit should also be set: 6. Wait for the transfer complete interrupt. 7. Check the status bit to see if a read CRC error occurred, or some another error, occurred during the auto12 command sending and response receiving. 49.6.3.2.2 Read with pause
The read operation is not generally able to pause. Only the SDIO card (and SDCombo card working under I/O mode) supporting the read and wait feature can pause during the read operation. If the SDIO card support read wait (SRW bit in CCCR register is 1), the Driver can set the SABGREQ bit in the Protocol Control register to pause the transfer between the data blocks. Before setting the SABGREQ bit, make sure the RWCTL bit in the Protocol Control register is set, otherwise the eSDHC will not assert the Read Wait signal during the block gap and data corruption occurs. It is recommended to set the RWCTL bit once the Read Wait capability of the SDIO card is recognized. Like in the flow described in Normal read , the read with pause is shown with the same kind of read operation: 1. Check the SRW bit in the CCR register on the SDIO card to confirm the card supports Read Wait. 2. Set the RWCTL bit. 3. Check the card status and wait until the card is ready for data. 4. Set the card block length/size: a. For SD/MMC, use SET_BLOCKLEN (CMD16)
b. For SDIO cards or the I/O portion of SDCombo cards, use IO_RW_DIRECT(CMD52) to set the I/O Block Size bit field in the CCCR register (for function 0) or FBR register (for functions 1~7) c. For CE-ATA cards, configure bits 1~0 in the scrControl register 5. Set the SDHC block length register to be the same as the block length set for the card in Step 2. 6. Set the SDHC number block register (NOB), nob is 5 (for instance). 7. Disable the buffer read ready interrupt, configure the DMA setting and enable the eSDHC DMA when sending the command with data transfer. The AC12EN bit should also be set 8. Set the SABGREQ bit. 9. Wait for the Transfer Complete interrupt. 10. Clear the SABGREQ bit. 11. Check the status bit to see if read CRC error occurred. 12. Set the CREQ bit to continue the read operation. 13. Wait for the Transfer Complete interrupt. 14. Check the status bit to see if a read CRC error occurred, or some another error, occurred during the auto12 command sending and response receiving. Like the write operation, it is possible to meet the ending block of the transfer when paused. In this case, the SDHC will ignore the Stop At Block Gap Request and treat it as a command read operation. Unlike the write operation, there is no remaining data inside the buffer when the transfer is paused. All data received before the pause will be transferred to the Host System. No matter if the Suspend Command is sent or not, the internal data buffer is not flushed. If the Suspend Command is sent and the transfer is later resumed by means of a Resume Command, the SDHC takes the command as a normal one accompanied with data transfer. It is left for the Driver to set all the relevant registers before the transfer is resumed. If there is only one block to send when the transfer is resumed, the MSBSEL and BCEN bits of the Transfer Type register are set, as well as the AC12EN bit. However, the SDHC will automatically send the CMD12 to mark the end of multi-block transfer.
Initialization/application of SDHC
After setting the PROCTL[SABGREQ] bit, the host driver may send a suspend command to switch to another function of the SDIO card. The SDHC does not monitor the content of the response, so it doesn't know if the suspend command succeeded or not. Accordingly, it doesn't de-assert read wait for read pause. To solve this problem, the driver shall not mark the suspend command as a "suspend", (i.e. setting the XFERTYP[CMDTYP] bits to 01). Instead, the driver shall send this command as if it were a normal command, and only when the command succeeds, and the BS bit is set in the response, can the driver send another command marked as "suspend" to inform the SDHC that the current transfer is suspended. As shown in the following sequence for suspend operation: 1. Set the PROCTL[SABGREQ] bit to pause the current data transfer at block gap. 2. After the IRQSTAT[BGE] bit is set, send the suspend command to suspend the active function. The XFERTYP[CMDTYP] bit field must be 2'b00. 3. Check the BS bit of the CCCR in the response. If it is 1, repeat this step until the BS bit is cleared or abandon the suspend operation according to the Driver strategy. 4. Send another normal I/O command to the suspended function. The XFERTYP[CMDTYP] of this command must be 2'b01, so the SDHC can detect this special setting and be informed that the paused operation has successfully suspended. If the paused transfer is a read operation, the SDHC stops driving DAT2 and goes to the idle state. 5. Save the context registers in the system memory for later use, including the DMA system address register (for internal DMA operation), and the block attribute register. 6. Begin operation for another function on the SDIO card. 49.6.3.3.2 Resume
1. To resume the suspended function, restore the context register with the saved value in step #5 of the suspend operation above. 2. Send the resume command. In the transfer type register, all bit fields are set to the value as if this were another ordinary data transfer, instead of a transfer resume (except the CMDTYP is set to 2'b10). 3. If the resume command has responded, the data transfer will be resumed.
Initialization/application of SDHC
49.6.3.5.1
CRC error
It is possible at the end of a block transfer, that a write CRC status error or read CRC error occurs. For this type of error the latest block received shall be discarded. This is because the integrity of the data block is not guaranteed. It is recommended to discard the following data blocks and re-transfer the block from the corrupted one. For a multi-block transfer, the host driver shall issue a CMD12 to abort the current process and start the transfer by a new data command. In this scenario, even when the XFERTYP[AC12EN] and BCEND bits are set, the SDHC does not automatically send a CMD12 because the last block is not transferred. On the other hand, if it is within the last block that the CRC error occurs, an auto CMD12 will be sent by the SDHC. In this case, the driver shall resend or re-obtain the last block with a single block transfer. 49.6.3.5.2 Internal DMA error
During the data transfer with internal simple DMA, if the DMA engine encounters some error on the system bus, the DMA operation is aborted and DMA error interrupt is sent to the host system. When acknowledged by such an interrupt, the driver shall calculate the start address of data block in which the error occurs. The start address can be calculated by either: 1. Read the DMA system address register. The error occurs during the previous burst. Taking the block size, the previous burst length and the start address of the next burst transfer into account, it is straight forward to obtain the start address of the corrupted block. 2. Read the BLKCNT field of the block attribute register. By the number of blocks left, the total number to transfer, the start address of transfer, and the size of each block, the start address of corrupted block can be determined. When the BCEN bit is not set, the contents of the block attribute register does not change, so this method does not work. When a DMA error occurs, it is recommended to abort the current transfer by means of a CMD12 (for multi block transfer), apply a reset for data, and re-start the transfer from the corrupted block to recover from the error. 49.6.3.5.3 ADMA error
There are three kinds of possible ADMA errors. The transfer, invalid descriptor, and data-length mismatch errors. Whenever these errors occur, the DMA transfer stops and the corresponding error status bit is set. For acknowledging the status, the host driver should recover the error as shown below and re-transfer from the place of interruption.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1522 Freescale Semiconductor, Inc.
1. Transfer error: Such errors may occur during data transfer or descriptor fetch. For either scenario, it is recommended to retrieve the transfer context, reset for the data part and re-transfer the block that was corrupted, or the next block if no block is corrupted. 2. Invalid descriptor error: For such errors, it is recommended to retrieve the transfer context, reset for the data part and re-create the descriptor chain from the invalid descriptor and issue a new transfer. As the data to transfer now may be less than the previous setting, the data length configured in the new descriptor chain should match the new value. 3. Data-length mismatch error: It is similar to recover from this error. The host driver polls relating registers to retrieve the transfer context, apply a reset for the data part, configure a new descriptor chain, and make another transfer if there is data left. Like the previous scenario of the invalid descriptor error, the data length must match the new transfer. 49.6.3.5.4 Auto CMD12 error
After the last block of the multi block transfer is sent or received, and the XFERTYP[AC12EN] bit is set when the data transfer is initiated by the data command, the SDHC automatically sends a CMD12 to the card to stop the transfer. When errors with this command occur, it is recommended to the driver to deal with the situations in the following manner: 1. Auto CMD12 response time-out. It is not certain whether the command is accepted by the card or not. The driver should clear the IRQSTAT[AC12E] bits and re-send the CMD12 until it is accepted by the card. 2. Auto CMD12 response CRC error. Since card responds to the CMD12, the card will abort the transfer. The driver may ignore the error and clear the IRQSTAT[AC12E] bit. 3. Auto CMD12 conflict error or not sent. The command is not sent, so the driver shall send a CMD12 manually.
Initialization/application of SDHC
command and its response is finished, and it is possible that some additional external interrupt behaviors are defined. The SDHC only monitors the DAT[1] line and supports the SDIO interrupt. When the SDIO interrupt is captured by the SDHC, and the host system is informed by the SDHC asserting the SDHC interrupt line, the interrupt service from the host driver is called. As the interrupt factor is controlled by the external card, the interrupt from the SDIO card must be served before the IRQSTAT[CINT] bit is cleared by written 1. Refer to Card interrupt handling for the card interrupt handling flow.
Chapter 49 Secured digital host controller (SDHC) change clock divisor value or configure the system clock feeding into eSDHC to generate the card_clk of around 50MHz; (data transactions like normal peers) } disable_sdio_high_speed_mode(void) { send CMD52 to clear bit EHS at address 0x13 and read after write to confirm EHS bit is cleared; change clock divisor value or configure the system clock feeding into eSDHC to generate the card_clk of the desired value below 25MHz; (data transactions like normal peers) }
Initialization/application of SDHC disable_mmc_high_speed_mode(void) { send CMD6 with argument 0x2B90100; set BLKCNT field to 1 (block), set BLKSIZE field to 512 (bytes); send CMD8 to get EXT_CSD value of MMC; check if HS_TIMING byte (byte number 185) is 0; if (HS_TIMING is not 0) report the function switch failed and return; change clock divisor value or configure the system clock feeding into eSDHC to generate the card_clk of the desired value below 20MHz; (data transactions like normal peers) }
Chapter 49 Secured digital host controller (SDHC) if (to generate interrupt for this descriptor) { Set Int bit to 1; } Set Valid bit to 1;
Initialization/application of SDHC
4. Software need to configure PROCTL[DTW]. 5. Software need to configure CMDARG to set argument if needed(no need in normal fast boot). 6. Software need to configure XFERTYP register to start the boot process . In normal boot mode, XFERTYP[CMDINX], XFERTYP[CMDTYP], XFERTYP[RSPTYP], XFERTYP[CICEN], XFERTYP[CCCEN], XFERTYP[AC12EN], XFERTYP[BCEN] and XFERTYP[DMAEN] are kept default value. XFERTYP[DPSEL] bit is set to 1, XFERTYP[DTDSEL] is set to 1, XFERTYP[MSBSEL] is set to 1. Note XFERTYP[DMAEN] should be configured as 0 in polling mode. And if XFERTYP[BCEN] is configured as 1, better to configure BLKATTR[BLKSIZE] to the max value. 7. When the step 6 is configured, boot process will begin. Software need to poll the data buffer ready status to read the data from buffer in time. If boot time-out happened(ack time out or the first data read time out), Interrupt will be triggered, and software need to configure MMCBOOT[]BOOTEN] to 0 to disable boot. Thus will make CMD high, and then after at least 56 clocks, it is ready to begin normal initialization process. 8. If no time out, software need to decide the data read is finished and then configure MMCBOOT[]BOOTEN] to 0 to disable boot. This will make CMD line high and command completed asserted. After at least 56 clocks, it is ready to begin normal initialization process. 9. Reset the host and then can begin the normal process.
5. Software need to configure CMDARG register to set argument to 0xFFFFFFFA. 6. Software need to configure XFERTYP register to start the boot process by CMD0 with 0xFFFFFFFA argument . In alternative boot, CMDINX, CMDTYP, RSPTYP, CICEN, CCCEN, AC12EN, BCEN and DMAEN are kept default value. DPSEL bit is set to 1, DTDSEL is set to 1, MSBSEL is set to 1. Note DMAEN should be configured as 0 in polling mode. And if BCEN is configured as 1 in polling mode, better to configure blk no in Bock Attributes Register to the max value. 7. When the step 6 is configured, boot process will begin. Software need to poll the data buffer ready status to read the data from buffer in time. If boot time out (ack data time out in 50ms or data time out in 1s), host will send out the interrupt and software need to send CMD0 with reset and then configure boot enable bit to 0 to stop this process. After command completed, configure MMCBOOT[BOOTEN] to 0 to disable boot. After at least 8 clocks from command completed, card is ready for identification step. 8. If no time out, software need to decide when to stop the boot process, and send out the CMD0 with reset and then after command completed, configure MMCBOOT[BOOTEN] to stop the process. After 8 clocks from command completed, slave(card) is ready for identification step. 9. Reset the host and then can begin the normal process.
Initialization/application of SDHC
block count that need to trans first time), that host will stop at block gap when card block counter is equal to this value. And need to configure MMCBOOT[DTOCVACK] to select the ack timeout value according to the sd clk frequence. 3. Software then need to configure BLKATTR register to set block size/no. In DMA mode, it is better to set block number to the max value(16'hffff). 4. Software need to configure PROCTL[DTW]. 5. Software enable ADMA2 by configuring PROCTL[DMAS]. 6. Software need to set at least three pairs ADMA2 descriptor in boot memory (ie, in IRAM, at least 6 words). The first pair descriptor define the start address (ie, IRAM) and data length(ie,512byte*VALUE1) of first part boot code. Software also need to set the second pair descriptor, the second start address (any value that is writable), data length is suggest to set 1~2word (record as VAULE2). Note: the second couple desc also transfer useful data even at lease 1 word. Because our ADMA2 can't support 0 data_length data transfer descriptor. 7. Software need to configure CMDARG register to set argument to 0xFFFFFFFA in alternative fast boot, and don't need set in normal fast boot. 8. Software need to configure XFERTYP register to start the boot process . XFERTYP[CMDINX], XFERTYP[CMDTYP], XFERTYP[RSPTYP], XFERTYP[CICEN], XFERTYP[CCCEN], XFERTYP[AC12EN], XFERTYP[BCEN] and XFERTYP[DMAEN] are kept default value. XFERTYP[DPSEL] bit is set to 1, XFERTYP[DTDSEL] is set to 1, XFERTYP[MSBSEL] is set to 1. XFERTYP[DMAEN] is configured as 1 in DMA mode. And if XFERTYP[BCEN] is configured as 1, better to configure blk no in BLKATTR register to the max value. 9. When the step 8 is configured, boot process will begin, the first VAULE1 block number data has transfer. Software need to polling IRQSTAT[TC] bit to determine first transfer is end. Also software need to polling IRQSTAT[BGE] bit to determine if first transfer stop at block gap. 10. When IRQSTAT[TC] and IRQSTAT[BGE] bits are 1, . SW can analyzes the first code of VAULE1 block, initializes the new memory device, if required, and sets the third pair of descriptors to define the start address and length of the remaining part of boot code (VAULE3 the remain boot code block). Remember set the last descriptor with END. 11. Software need to configure MMCBOOT register (offset 0xc4) again. Set MMCBOOT[BOOTEN] bit to 1; and MMCBOOT[BOOTMODE] bit to 0 (normal fast boot), to 1(alternative boot); and MMCBOOT[BOOTACK] bit to select the ack
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1530 Freescale Semiconductor, Inc.
mode or not. In DMA mode, configure MMCBOOT[AUTOSABGEN] bit to 1 for enable automatically stop at block gap feature. Also configure MMCBOOT[BOOTBLKCNT] bit to set the (VAULE1+1+VAULE3), that host will stop at block gap when card block counter is equal to this value. And need to configure MMCBOOT[DTOCVACK] bit to select the ack timeout value according to the sd clk frequence. 12. Software need to clear IRQSTAT[TC] and IRQSTAT[BGE] bit. And software need to clear PROCTL[SABGREQ], and set PROCTL[CREQ] to 1 to resume the data transfer. Host will transfer the VALUE2 and VAULE3 data to the destination that is set by descriptor. 13. Software need to polling IRQSTAT[BGE] bit to determine if the fast boot is over. Note 1. When ADMA boot flow is started, for SDHC, it is like a normal ADMA read operation. So setting ADMA2 descriptor as the normal ADMA2 transfer. 2. Need a few words length memory to keep descriptor. 3. For the 1~2 words data in second descriptor setting, it is the useful data, so software need to deal the data due to the application case.
Initialization/application of SDHC
CMD2
bcr
R2
ALL_SEND_CID
CMD31
ac
R1 R6 (SDIO) -
CMD4
bc
CMD5
bc
R4
IO_SEND_OP_COND
CMD62
adtc
[31] Mode 0: Check function 1: Switch function [30:8] Reserved for function groups 6 ~ 3 (All 0 or 0xFFFF) [7:4] Function group1 for command system [3:0] Function group2 for access mode
R1
SWITCH_FUNC
CMD63
ac
[31:26] Set to 0 [25:24] Access [23:16] Index [15:8] Value [7:3] Set to 0 [2:0] Cmd Set
R1b
SWITCH
Switches the mode of opera tion of the selected card or modifies the EXT_CSD regis ters. Refer to "The MultiMe diaCard System Specification Version 4.0 Final draft 2" for more details.
CMD7
ac
R1b
SELECT/DESE LECT_CARD
Toggles a card between the stand-by and transfer states or between the programming and disconnect states. In both cases, the card is selec ted by its own relative ad dress and gets deselected by any other address. Address 0 deselects all.
CMD9
ac
R2
SEND_CSD
CMD10
ac
R2
SEND_CID
CMD11
adtc
R1
READ_DAT_UN TIL_STOP
CMD12 CMD13
ac ac
R1b R1
CMD14 CMD15
Reserved ac [31:6] RCA [15:0] stuff bits GO_INAC TIVE_STATE Sets the card to inactive state in order to protect the card stack against communication breakdowns. Sets the block length (in bytes) for all following block commands (read and write). Default block length is speci fied in the CSD. Reads a block of the size se lected by the SET_BLOCK LEN command. Continuously transfers data blocks from card to host until interrupted by a stop com mand.
CMD16
ac
R1
SET_BLOCKLEN
CMD17
adtc
R1
CMD18
adtc
R1
CMD19 CMD20
Reserved adtc [31:0] data address R1 WRITE_DAT_UN TIL_STOP Writes data stream from the host, starting at the given ad dress, until a STOP_TRANS MISION follows.
CMD21-23 CMD24
Reserved adtc [31:0] data address R1 WRITE_BLOCK Writes a block of the size se lected by the SET_BLOCK LEN command.
Initialization/application of SDHC
CMD26
adtc
R1
CMD27 CMD28
adtc ac
R1 R1b
PROGRAM_CSD SET_WRITE_PROT
CMD29
ac
R1b
CLR_WRITE_PROT
CMD30
adtc
SEND_WRITE_PROT
Reserved ac ac [31:0] data address [31:0] data address R1 R1 TAG_SEC TOR_START TAG_SECTOR_END Sets the address of the first sector of the erase group. Sets the address of the last sector in a continuous range within the selection of a sin gle sector to be selected for erase. Removes one previously se lected sector from the erase selection.
CMD34
ac
R1
UNTAG_SECTOR
CMD35
ac
R1
TAG_ERASE_GROUP Sets the address of the first _START erase group within a range to be selected for erase. TAG_ERASE_GROUP Sets the address of the last _END erase group within a continu ous range to be selected for erase.
CMD36
ac
R1
CMD38 CMD39
ac ac
[31:0] stuff bits [31:0] RCA [15] register write flag [14:8] register address [7:0] register data
R1b R4
R5
GO_IRQ_STATE
R1b
LOCK_UNLOCK
Used to set/reset the pass word or lock/unlock the card. The size of the data block is set by the SET_BLOCK_LEN command.
CMD43~51 CMD52
Reserved ac [31:0] stuff bits R5 IO_RW_DIRECT Access a single register with in the total 128k of register space in any I/O function. Accesses a multiple I/O regis ter with a single command. Allows the reading or writing of a large number of I/O reg isters.
CMD53
ac
R5
IO_RW_EXTENDED
CMD54 CMD55
Reserved ac [31:16] RCA [15:0] stuff bits R1 APP_CMD Indicates to the card that the next command is an applica tion specific command rather that a standard command. Used either to transfer a data block to the card or to get a data block from the card for general purpose / application specific commands. The size of the data block is set by the SET_BLOCK_LEN com mand.
CMD56
adtc
R1b
GEN_CMD
CMD57~59
Initialization/application of SDHC
CMD61
adtc
R1b
RW_MULTI PLE_BLOCK
CMD62~63 ACMD64
Reserved ac [31:2] stuff bits [1:0] bus width R1 SET_BUS_WIDTH Defines the data bus width ('00'=1bit or '10'=4bit bus) to be used for data transfer. The allowed data bus widths are given in SCR register. Send the SD memory card status.
ACMD135 ACMD226
adtc adtc
R1 R1
SD_STATUS
SEND_NUM_WR_SEC Send the number of the writ TORS ten sectors (without errors). Responds with 32-bit plus the CRC data block. SET_WR_BLK_ERAS E_COUNT SD_APP_OP_COND Asks the accessed card to send its operating condition register (OCR) contents in the response on the CMD line. Reads the SD Configuration Register (SCR).
ACMD237 ACMD418
R1 R3
ACMD429 ACMD5110
R1 R1
1. CMD3 differs for MMC and SD cards. For MMC cards, it is referred to as SET_RELATIVE_ADDR, with a response type of R1. For SD cards, it is referred to as SEND_RELATIVE_ADDR, with a response type of R6 (with RCA inside). 2. CMD6 differs completely between high speed MMC cards and high speed SD cards. Command SWITCH_FUNC is for high speed SD cards. 3. Command SWITCH is for high speed MMC cards as well as for CE-ATA cards over the MMC interface. The Index field can contain any value from 0-255, but only values 0-191 are valid. If the Index value is in the 192-255 range the card does not perform any modification and the SWITCH_ERROR status bit in the EXT_CSD register is set. The Access Bits are shown in Table 49-38. 4. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module).
Chapter 49 Secured digital host controller (SDHC) 5. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module). 6. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module). 7. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module). 8. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module). 9. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module). 10. ACMDs shall be preceded with the APP_CMD command. (Commands listed are used for SD only, other SD commands not listed are not supported on this module).
The Access Bits for the EXT_CSD Access Modes are shown in the following table.
Table 49-38. EXT_CSD Access Modes
Bits 00 01 10 11 Access Name Command Set Set Bits Clear Bits Write Byte Operation The command set is changed according to the Cmd Set field of the argument The bits in the pointed byte are set, according to the 1 bits in the Value field. The bits in the pointed byte are cleared, according to the 1 bits in the Value field. The Value field is written into the pointed byte.
Software restrictions
of each block. For example, for read operation, if the WML[RDWML] is 4, indicating the watermark level is 16 bytes, block size is 40 bytes, and the block number is 2, then the access times for the burst sequence in the whole transfer process must be 4, 4, 2, 4, 4, 2.
Software restrictions
Overview
Tx Clock Generator
STCK
Tx and RX
Control
STFS
SRCK/SYS_CLK
Control Reg
Rx Sync Generator
SRFS
STXD
SRXD
50.1.2 Features
The I2S includes the following features: Independent (asynchronous) or shared (synchronous) transmit and receive sections with separate or shared internal/external clocks and frame syncs, operating in master or slave mode. Normal mode operation using frame sync Network mode operation allowing multiple devices to share the port with as many as thirty-two time slots Gated clock mode operation requiring no frame sync 2 sets of transmit and receive FIFOs. Each of the four FIFOs is 15x32 bits. The two sets of Tx/Rx FIFOs can be used in network mode to provide 2 independent channels for transmission and reception
Programmable data interface modes such as I2S, lsb- and msb-aligned Programmable word length (8, 10, 12, 16, 18, 20, 22 or 24 bits) Program options for frame sync and clock generation Programmable I2S modes (master, slave or normal). Oversampling clock available as output from SRCK in I2S master mode AC97 support Completely separate clock and frame sync selections for the receive and transmit sections. In the AC97 standard, the clock is taken from an external source and frame sync is generated internally. External network clock input for I2S master mode. Programmable oversampling clock of the sampling frequency available as output in master mode at SRCK, when operated in synchronous mode. Programmable internal clock divider Transmit and receive time slot mask registers for reduced CPU overhead I2S power-down feature
Overview
I2S mode AC97 mode AC97 fixed mode (ACNT[FV] = 0) AC97 variable mode (ACNT[FV] = 1) These modes can be programmed by several bits in the I2S control registers. The following table lists these operating modes and some of the typical applications in which they can be used:
Table 50-1. I2S Operating Modes
TX, RX Sections Asynchronous Asynchronous Synchronous Synchronous Synchronous Serial clock Continuous Continuous Continuous Continuous Gated Mode Normal Network Normal Network Normal Typical application Multiple synchronous CODECs TDM codec or DSP networks Multiple synchronous codecs TDM codec or DSP network SPI-type devices: DSP to MCU
The transmit and receive sections of the I2S can be synchronous or asynchronous. In synchronous mode, the transmitter and the receiver use a common clock and frame synchronization signal. Masking of slots for transmit and receive section can differ in synchronous mode. Also the RCR[RXBIT0, RSHFD] bits can continue affecting shiftingin of received data in synchronous mode. In asynchronous mode, the transmitter and receiver each has its own clock and frame synchronization signals. Continuous or gated clock mode can be selected. In continuous mode, the clock runs continuously. In gated clock mode, the clock is only functioning during transmission. Normal or network mode can also be selected. In normal mode, the I2S functions with one data word of I/O per frame. In network mode, any number from two to thirty-two data words of I/O per frame can be used. Network mode is typically used in star timedivision-multiplex networks with other processors or codecs, allowing interface to time division multiplexed networks without additional logic. Use of gated clock mode is not allowed in network mode. These distinctions result in the basic operating modes that allow the I2S to communicate with a wide variety of devices. The I2S supports both normal and network modes, and these can be selected independently of whether the transmitter and receiver are synchronous or asynchronous. Typically, these protocols are used in a periodic manner, where data transfers at regular intervals, such as at the sampling rate of an external codec. Both modes use the concept
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1544 Freescale Semiconductor, Inc.
of a frame. The beginning of the frame is marked with a frame sync when programmed with continuous clock. The RCCR[DC] or TCCR[DC] bits determine the length of the frame, depending on whether data is being transmitted or received. The number of words transferred per frame depends on the mode of the I2S. In normal mode, one data word is transferred per frame. In network mode, the frame divides into two to 32 time slots. In each time slot, one data word is optionally transferred. Apart from the above basic modes of operation, I2S supports the following modes which require some specific programming. I2S mode AC97 mode AC97 fixed mode AC97 variable mode In non-I2S slave modes (external frame sync), the I2S's programmed word length setting should be equal to the word length setting of the master. In I2S slave mode, the I2S's programmed word length setting can be lesser than or equal to the word length setting of the I2S master (external codec). In slave modes, the I2S's programmed frame length setting (TCCR[DC] or RCCR[DC] bits) can be lesser than or equal to the frame length setting of the master (external codec). See Detailed operating mode descriptions for more details on the above modes.
SRXD STCK
I I/O
STFS
I/O
STXD
The following figure shows the main I2S configurations. These ports support all transmit and receive functions with continuous or gated clock as shown. Note Gated clock implementations do not require the use of the frame sync ports (STFS and SRFS).
I2S internal continuous clock for TX/RX (RCR[RXDIR] = 1,TCR[TXDIR] = 1, RCR[RFDIR] = 1,TCR[TFDIR] = 1, CR[SYN] = 0)
I2S STXD SRXD STCK STFS SRCK SRFS
I2S external continuous clock for TX/RX (RCR[RXDIR] = 0,TCR[TXDIR] = 0, RCR[RFDIR] = 0,TCR[TFDIR] = 0, CR[SYN] = 0)
I2S STXD
The following figure shows an example of the port signals for an 8-bit data transfer. Continuous and gated clock signals are shown, as well as the bit-length frame sync signal and the word-length frame sync signal.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1547
STFS, SRFS
Gated STCK
STXD
I2S Transmit Data Registers 0 (I2S0_TX0) I2S Transmit Data Registers 1 (I2S0_TX1) I2S Receive Data Registers 0 (I2S0_RX0) I2S Receive Data Registers 1 (I2S0_RX1) I2S Control Register (I2S0_CR) I2S Interrupt Status Register (I2S0_ISR)
I2S Interrupt Enable Register (I2S0_IER) I2S Transmit Configuration Register (I2S0_TCR) I2S Receive Configuration Register (I2S0_RCR) I2S Transmit Clock Control Registers (I2S0_TCCR) I2S Receive Clock Control Registers (I2S0_RCCR) I2S FIFO Control/Status Register (I2S0_FCSR) I2S AC97 Control Register (I2S0_ACNT) I2S AC97 Command Address Register (I2S0_ACADD) I2S AC97 Command Data Register (I2S0_ACDAT) I2S AC97 Tag Register (I2S0_ATAG) I2S Transmit Time Slot Mask Register (I2S0_TMSK) I2S Receive Time Slot Mask Register (I2S0_RMSK) I2S AC97 Channel Status Register (I2S0_ACCST)
0000_3003h 0000_0200h 0000_0200h 0004_0000h 0004_0000h 0081_0081h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
4002_F054
32
0000_0000h
4002_F058
32
0000_0000h
50.3.21/ 1584
Chapter 50 Integrated interchip sound (I2S) Addresses: I2S0_TX0 4002_F000h base + 0h offset = 4002_F000h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
TX0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TX1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RX0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RX1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Reset
Bit R
0
15
0
14
0
13
0
12
0
11 RFRCLKDIS
0
10 TFRCLKDIS
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
SYSCLKEN
SYNCTXFS
CLKIST
TCHEN
I2SMODE
SYN
NET
RE
TE
Reset
Receive Frame Clock Disable. This bit provides the option to keep the frame-sync and clock enabled or to disable them after the receive frame in which the receiver is disabled. Writing to this bit has effect only when CR[RE] is disabled.The receiver is disabled by clearing the CR[RE] bit. 0 1 Continue frame-sync/clock generation after current frame during which CR[RE] is cleared. This may be required when Frame-sync and Clocks are required from I2S, even when no data is to be received. Stop frame-sync/clock generation at next frame boundary. This will be effective also in case where receiver is already disabled in current or previous frames. Table continues on the next page...
SSIEN 0
Clock Idle State. This bit controls the idle state of the transmit clock port during I2S internal gated mode. Note: When Clock idle state is `1' the clock polarity should always be negedge triggered and when clock idle = `0' the clock polarity should always be positive edge triggered. 0 1 Clock idle state is `0'. Clock idle state is `1'.
8 TCHEN
Two-Channel Operation Enable. This bit allows I2S to operate in the two-channel mode.In this mode while receiving, the RXSR transfers data to RX0 and RX1 alternately and while transmitting, data is alternately transferred from TX0 and TX1 to TXSR. For an even number of slots, two-channel operation can be enabled to optimize usage of both FIFOs or disabled as in the case of odd number of active slots. This feature is especially useful in I2S mode, where data for left speaker can be placed in Tx-FIFO0 and for right speaker in Tx-FIFO1. 0 1 Two-channel mode disabled. Two-channel mode enabled.
7 SYSCLKEN
System Clock (Oversampling Clock) Enable. When set, this bit allows the I2S to output the (network clock) at the SRCK port, provided that synchronous mode, and transmit internal clock mode are set. The relationship between bit clock and network clock is determined by DIV2, PSR, and PM bits. This feature is especially useful in I2S master mode to output oversampling clock on SRCK port. 0 1 Network clock not output on SRCK port. Network clock output on SRCK port.
65 I2SMODE
I2S Mode Select These bits allow the I2S to operate in normal, I2S master or I2S slave mode. 00 01 10 11 Normal mode I2S master mode I2S slave mode Normal mode
4 SYN
Synchronous Mode. This bit controls whether I2S is in synchronous mode or not. In synchronous mode, the transmit and receive sections of I2S share a common clock port (STCK) and frame sync port (STFS). 0 1 Asynchronous mode selected. Synchronous mode selected. Table continues on the next page...
Receive Enable. Enables the receive section of the I2S. When this bit is enabled, data reception starts with the arrival of the next frame sync. If data is being received when this bit is cleared, data reception continues until the end of the current frame and then stops. If this bit is set again before the second to last bit of the last time slot in the current frame, then reception continues without interruption. CR[RE] should not be toggled in the same frame. 0 1 Receive section disabled. Receive section enabled.
1 TE
Transmit Enable. This control bit enables the transmit section of the I2S. It enables the transfer of the contents of the TX registers to the TXSR and also enables the internal transmit clock. The transmit section is enabled when this bit is set and a frame boundary is detected. When this bit is cleared, the transmitter continues to send data until the end of the current frame and then stops. Data can be written to the TX registers with the CR[TE] bit cleared (the corresponding TDE bit will be cleared). If the CR[TE] bit is cleared and then set again before the second to last bit of the last time slot in the current frame, data transmission continues without interruption. The normal transmit enable sequence is to write data to the TX register(s) and then set the CR[TE] bit. The normal disable sequence is to clear the CR[TE] and IER[TIE] bits after the TDE bit is set. In gated clock mode, clearing the CR[TE] bit results in the clock stopping after the data currently in TXSR has shifted out. When the CR[TE] bit is set, the clock starts immediately (for internal gated clock mode). CR[TE] should not be toggled in the same frame. After enabling/disabling transmission, I2S expects 4 setup clock cycles before arrival of frame-sync for frame-sync to be accepted by I2S. In case of fewer clock cycles, there is high probability of the frame-sync to get missed. NOTE: If continuos clock is not provided, I2S expects 6 clock cycles before arrival of frame-sync for frame-sync to be accepted by I2S. 0 1 Transmit section disabled. Transmit section enabled.
0 SSIEN
I2S Enable. This bit is used to enable/disable the I2S. When disabled, all I2S status bits are preset to the same state produced by the power-on reset, all control bits are unaffected, the contents of Tx and Rx FIFOs are cleared. When I2S is disabled, all internal clocks are disabled (except register access clock). 0 1 I2S is disabled. I2S is enabled.
0 RFRC TRFC
CMDDU
CMDAU
RXT
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
ROE1
ROE0
RDR1
RDR0
TDE1
TDE0
TUE1
TUE0
RFF1
RFF0
TFE1 1
TFS
RFS
TLS
RLS
w1c 0 0 1 1 0
w1c 0
w1c 0
w1c 0 0 0 0 0 0 0 1
Reset
TFE0
Transmit Frame Complete. This flag is set at the end of the frame during which transmitter is disabled. If transmit frame and clock are not disabled in the same frame, this flag is also set at the end of the frame in which transmit frame and clock are disabled. See description of CR[TFRCLKDIS] bit for more details on how to disable transmit frame and clock or keep them enabled after transmitter is disabled. 0 1 End of frame not reached. End of frame reached after disabling CR[TE] or disabling CR[TFRCLKDIS], when transmitter is already disabled.
This read-only bitfield is reserved and always has the value zero. Command Address Register Updated. This bit causes the command address Updated interrupt (when IER[CMDAUEN] bit is set). This status bit is set each time there is a difference in the previous and current value of the received command address. This bit is cleared on reading the ACADD register. 0 1 No change in ACADD register. ACADD register updated with different value.
17 CMDDU
Command Data Register Updated. This bit causes the command data updated interrupt (when IER[CMDDUEN] bit is set). This status bit is set each time there is a difference in the previous and current value of the received command data. This bit is cleared on reading the ACDAT register. 0 1 No change in ACDAT register. ACDAT register updated with different value.
16 RXT
Receive Tag Updated. This status bit is set each time there is a difference in the previous and current value of the received tag. It causes the receive tag interrupt (if IER[RXTEN] bit is set). This bit is cleared on reading the ATAG register. 0 1 No change in ATAG register. ATAG register updated with different value.
15 RDR1
Receive Data Ready 1. This flag bit is set when RX1 or Rx FIFO 1 is loaded with a new value and two-channel mode is selected. RDR1 is cleared when the core reads the RX1 register. If Rx FIFO 1 is enabled, RDR1 is cleared when the FIFO is empty. If IER[RIE] and IER[RDR1EN] are set, a receive data 1 interrupt request is issued on setting of RDR1 bit in case Rx FIFO1 is disabled, if the FIFO is enabled, the interrupt is issued on RFF1 assertion. The RDR1 bit is cleared by POR and I2S reset. 0 1 No new data for core to read. New data for core to read. Table continues on the next page...
Transmit Data Register Empty 1. This flag is set whenever data is transferred to TXSR from TX1 register and two-channel mode is selected. If Tx FIFO1 is enabled, this occurs when there is at least one empty slot in TX1 or Tx FIFO1. If Tx FIFO1 is not enabled, this occurs when the contents of TX1 are transferred to TXSR. The TDE1 bit is cleared when the core writes to TX1. If IER[TIE] and IER[TDE1EN] are set, an I2S transmit data 1 interrupt request is issued on setting of TDE1 bit. The TDE1 bit is cleared by POR and I2S reset. 0 1 Data available for transmission. Data needs to be written by the core for transmission.
12 TDE0
Transmit Data Register Empty 0. This flag is set whenever data is transferred to TXSR from TX0 register. If Tx FIFO 0 is enabled, this occurs when there is at least one empty slot in TX0 or Tx FIFO 0. If Tx FIFO 0 is not enabled, this occurs when the contents of TX0 are transferred to TXSR. The TDE0 bit is cleared when the core writes to TX0. If IER[TIE] and TIE[TDE0EN] are set, an I2S transmit data 0 interrupt request is issued on setting of TDE0 bit. The TDE0 bit is cleared by POR and I2S reset. 0 1 Data available for transmission. Data needs to be written by the core for transmission.
11 ROE1
Receiver Overrun Error 1. This flag is set when the RXSR is filled and ready to transfer to RX1 register or to Rx FIFO 1 (when enabled) and these are already full and Two-Channel mode is selected. If Rx FIFO 1 is enabled, this is indicated by RFF1 flag, else this is indicated by the RDR1 flag. The RXSR is not transferred in this case. The ROE1 flag causes an interrupt if IER[RIE] and IER[ROE1EN] are set. The ROE1 bit is cleared by POR and I2S reset. It is also cleared by writing `1' to this bit. Clearing the CR[RE] bit does not affect the ROE1 bit. 0 1 No overrun detected Receiver overrun error occurred
10 ROE0
Receiver Overrun Error 0. This flag is set when the RXSR is filled and ready to transfer to RX0 register or to Rx FIFO 0 (when enabled) and these are already full. If Rx FIFO 0 is enabled, this is indicated by RFF0 flag, else this is indicated by the RDR0 flag. The RXSR is not transferred in this case. The ROE0 flag causes an interrupt if IER[RIE] and IER[ROE0EN] are set. The ROE0 bit is cleared by POR and I2S reset. It is also cleared by writing `1' to this bit. Clearing the CR[RE] bit does not affect the ROE0 bit. Table continues on the next page...
Transmitter Underrun Error 1. This flag is set when the TXSR is empty (no data to be transmitted), the TDE1 flag is set, a transmit time slot occurs and the I2S is in two-channel mode. When a transmit underrun error occurs, the previous data is retransmitted. In Network mode, each time slot requires data transmission (unless masked through TMSK register), when the transmitter is enabled (CR[TE] is set). The TUE1 flag causes an interrupt if IER[TIE] and IER[TUE1EN] are set. The TUE1 bit is cleared by POR and I2S reset. It is also cleared by writing `1' to this bit. 0 1 No underrun detected Transmitter underrun error occurred
8 TUE0
Transmitter Underrun Error 1. This flag is set when the TXSR is empty (no data to be transmitted), the TDE0 flag is set and a transmit time slot occurs. When a transmit underrun error occurs, the previous data is retransmitted. In Network mode, each time slot requires data transmission (unless masked through TMSK register), when the transmitter is enabled (CR[TE] is set). The TUE0 flag causes an interrupt if IER[TIE] and IER[TUE0EN] are set. The TUE0 bit is cleared by POR and I2S reset. It is also cleared by writing `1' to this bit. 0 1 No underrun detected Transmitter underrun error occurred
7 TFS
Transmit Frame Sync. This flag indicates the occurrence of transmit frame sync. Data written to the TX registers during the time slot when the TFS flag is set, is sent during the second time slot (in network mode) or in the next first time slot (in normal mode). In network mode, the TFS bit is set during transmission of the first time slot of the frame and is then cleared when starting transmission of the next time slot. In normal mode, this bit is high for the first time slot. This flag causes an interrupt if IER[TIE] and IER[TFSEN] are set. The TFS bit is cleared by POR and I2S reset. 0 1 No occurrence of transmit frame sync. Transmit frame sync occurred during transmission of last word written to TX registers.
6 RFS
Receive Frame Sync. This flag indicates the occurrence of receive frame sync. In network mode, the RFS bit is set when the first slot of the frame is being received. It is cleared when the next slot begins to be received. In normal mode, this bit is always high. This flag causes an interrupt if IER[RIE] and IER[RFSEN] are set. The RFS bit is cleared by POR and I2S reset. 0 1 No occurrence of receive frame sync. Receive frame sync occurred during reception of next word in RX registers.
5 TLS
Transmit Last Time Slot. This flag indicates the last time slot in a frame. When set, it indicates that the current time slot is the last time slot of the frame. TLS is set at the start of the last transmit time slot and causes the I2S to issue an interrupt (if IER[TIE] and TLSEN are set). TLS is not generated when frame rate is 1 in normal mode of operation. TLS is cleared when the ISR is read with this bit set. The TLS bit is cleared by POR and I2S reset. Table continues on the next page...
Receive Last Time Slot. This flag indicates the last time slot in a frame. When set, it indicates that the current time slot is the last receive time slot of the frame. RLS is set at the end of the last time slot and causes the I2S to issue an interrupt (if IER[RIE] and IER[RLSEN] are set). RLS is cleared when the ISR is read with this bit set. The RLS bit is cleared by POR and I2S reset. 0 1 Current time slot is not last time slot of frame. Current time slot is the last receive time slot of frame.
3 RFF1
Receive FIFO Full 1. This flag is set when Rx FIFO1 is enabled, the data level in Rx FIFO1 reaches the selected Rx FIFO WaterMark 1 (RFWM1) threshold and the I2S is in two-channel mode. The setting of RFF1 only causes an interrupt when IER[RIE] and IER[RFF1EN] are set, Rx FIFO1 is enabled and the two-channel mode is selected. RFF1 is automatically cleared when the amount of data in Rx FIFO1 falls below the threshold. The RFF1 bit is cleared by POR and I2S reset. When Rx FIFO1 contains 15 words, the maximum it can hold, all further data received (for storage in this FIFO) is ignored until the FIFO contents are read. 0 1 Space available in receive FIFO1. Receive FIFO1 is full.
2 RFF0
Receive FIFO Full 0. This flag is set when Rx FIFO0 is enabled and the data level in Rx FIFO0 reaches the selected Rx FIFO WaterMark 0 (RFWM0) threshold. The setting of RFF0 only causes an interrupt when IER[RIE] and IER[RFF0EN] are set and Rx FIFO0 is enabled. RFF0 is automatically cleared when the amount of data in Rx FIFO0 falls below the threshold. The RFF0 bit is cleared by POR and I2S reset. When Rx FIFO0 contains 15 words, the maximum it can hold, all further data received (for storage in this FIFO) is ignored until the FIFO contents are read. 0 1 Space available in receive FIFO0. Receive FIFO0 is full.
1 TFE1
Transmit FIFO Empty 1. This flag is set when the empty slots in Tx FIFO exceed or are equal to the selected Tx FIFO WaterMark 1 (TFWM1) threshold and the two-channel mode is selected. The setting of TFE1 only causes an interrupt when IER[TIE] and IER[TFE1EN] are set, Tx FIFO1 is enabled and two-channel mode is selected. The TFE1 bit is automatically cleared when the data level in Tx FIFO1 becomes more than the amount specified by the watermark bits. The TFE1 bit is set by POR and I2S reset. 0 1 Transmit FIFO1 has data for transmission. Transmit FIFO1 is empty.
0 TFE0
Transmit FIFO Empty 0. This flag is set when the empty slots in Tx FIFO exceed or are equal to the selected Tx FIFO WaterMark 0 (TFWM0) threshold. The setting of TFE0 only causes an interrupt when IER[TIE] and IER[TFE0EN] are set and Tx FIFO0 is enabled. The TFE0 bit is automatically cleared when the data level in Tx FIFO0 becomes more than the amount specified by the watermark bits. The TFE0 bit is set by POR and I2S reset. Table continues on the next page...
RFRC_EN
TFRC_EN
RDMAE
TDMAE
RIE
TIE
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
RDR1EN
RDR0EN
ROE1EN
ROE0EN
TDE1EN
TDE0EN
TUE1EN
TUE0EN
RFF1EN
RFF0EN
TFE1EN
Reset
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
22 RDMAE
TFE0EN 1
RFSEN
RLSEN
TFSEN
TLSEN
RXTEN 0
0
Receive Interrupt Enable. This control bit allows the I2S to issue receiver related interrupts to the core. 0 1 I2S receiver interrupt requests disabled. I2S receiver interrupt requests enabled.
20 TDMAE
Transmit DMA Enable. This bit allows I2S to request for DMA transfers. When enabled, DMA requests are generated when any of the ISR[TFE0/1] bits are set and if the corresponding TCR[TFEN] bit is also set. If the corresponding FIFO is disabled, a DMA request is generated when the corresponding TDE bit is set. 0 1 I2S transmitter DMA requests disabled. I2S transmitter DMA requests enabled.
19 TIE
Transmit Interrupt Enable. This control bit allows the I2S to issue transmitter data related interrupts to the core. 0 1 I2S transmitter interrupt requests disabled. I2S transmitter interrupt requests enabled.
18 CMDAUEN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
17 CMDDUEN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
16 RXTEN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
15 RDR1EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt. Table continues on the next page...
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
12 TDE0EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
11 ROE1EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
10 ROE0EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
9 TUE1EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
8 TUE0EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
7 TFSEN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
6 RFSEN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
4 RLSEN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
3 RFF1EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
2 RFF0EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
1 TFE1EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
0 TFE0EN
Enable Bit. Each bit controls whether the corresponding status bit in ISR can issue an interrupt to the core or not. 0 1 Corresponding status bit cannot issue interrupt. Corresponding status bit can issue interrupt.
Chapter 50 Integrated interchip sound (I2S) Addresses: I2S0_TCR 4002_F000h base + 1Ch offset = 4002_F01Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 TXBIT0 8 7 6 5 4 3 2 1 0
TSCKP
TSHFD
TFEN1
TFEN0
TXDIR
TFDIR
Transmit FIFO Enable 1. This bit enables transmit FIFO 1. When enabled, the FIFO allows 15 samples to be transmitted by the I2S (per channel) (a 9th sample can be shifting out) before TDE1 bit is set. When the FIFO is disabled, an interrupt is generated when a single sample is transferred to the transmit shift register (provided the interrupt is enabled). 0 1 Transmit FIFO 1 disabled. Transmit FIFO 1 enabled.
7 TFEN0
Transmit FIFO Enable 0. This bit enables transmit FIFO 0. When enabled, the FIFO allows 15 samples to be transmitted by the I2S per channel (a 9th sample can be shifting out) before TDE0 bit is set. When the FIFO is disabled, an interrupt is generated when a single sample is transferred to the transmit shift register (provided the interrupt is enabled). 0 1 Transmit FIFO 0 disabled. Transmit FIFO 0 enabled.
6 TFDIR
Transmit Frame Direction. This bit controls the direction and source of the transmit frame sync signal. Internally generated frame sync signal is sent out through the STFS port and external frame sync is taken from the same port. 0 1 Frame sync is external. Frame sync generated internally.
5 TXDIR
Transmit clock direction This bit controls the direction and source of the clock signal used to clock the TXSR. Internally generated clock is output through the STCK port. External clock is taken from this port. 0 1 Transmit clock is external. Transmit clock generated internally Table continues on the next page...
TEFS 0
TFSL
TFSI
Transmit Clock Polarity. This bit controls which bit clock edge is used to clock out data for the transmit section. NOTE: TSCKP is 0 CLKIST = 0; TSCKP is 1CLKIST = 1 0 1 Data clocked out on rising edge of bit clock. Data clocked out on falling edge of bit clock.
2 TFSI
Transmit Frame Sync Invert. This bit controls the active state of the frame sync I/O signal for the transmit section of I2S. 0 1 Transmit frame sync is active high. Transmit frame sync is active low.
1 TFSL
Transmit Frame Sync Length. This bit controls the length of the frame sync signal to be generated or recognized for the transmit section. The length of a word-long frame sync is same as the length of the data word selected by WL[3:0]. 0 1 Transmit frame sync is one-word long. Transmit frame sync is one-clock-bit long.
0 TEFS
Transmit Early Frame Sync. This bit controls when the frame sync is initiated for the transmit section. The frame sync signal is deasserted after one bit-for-bit length frame sync and after one word-for-word length frame sync. In case of synchronous operation, the frame sync can also be initiated on receiving the first bit of data. 0 1 Transmit frame sync initiated as the first bit of data is transmitted. Transmit frame sync is initiated one bit before the data is transmitted.
Chapter 50 Integrated interchip sound (I2S) Addresses: I2S0_RCR 4002_F000h base + 20h offset = 4002_F020h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 RXBIT0 8 7 6 5 4 3 2 1 0
RSCKP
RSHFD
RXEXT
RFEN1
RFEN0
RXDIR
RFDIR
Receive Bit 0. This control bit allows I2S to receive the data word at bit position 0 or 15/31 in the receive shift register. The shifting data direction can be MSB or LSB first, controlled by the RSHFD bit. 0 1 Shifting with respect to bit 31 (if word length = 16, 18, 20, 22 or 24) or bit 15 (if word length = 8, 10 or 12) of receive shift register (MSB aligned). Shifting with respect to bit 0 of receive shift register (LSB aligned).
8 RFEN1
Receive FIFO Enable 1. This bit enables receive FIFO 1. When enabled, the FIFO allows 15 samples to be received by the I2S per channel (a 16th sample can be shifting in) before RDR1 bit is set. When the FIFO is disabled, an interrupt is generated when a single sample is received by the I2S (provided the interrupt is enabled). 0 1 Receive FIFO 1 disabled. Receive FIFO 1 enabled.
7 RFEN0
Receive FIFO Enable 0. This bit enables receive FIFO 0. When enabled, the FIFO allows 15 samples to be received by the I2S (per channel) (a 16th sample can be shifting in) before RDR0 bit is set. When the FIFO is disabled, an interrupt is generated when a single sample is received by the I2S (provided the interrupt is enabled). 0 1 Receive FIFO 0 disabled. Receive FIFO 0 enabled.
6 RFDIR
Receive Frame Direction. This bit controls the direction and source of the receive frame sync signal. Internally generated frame sync signal is sent out through the SRFS port and external frame sync is taken from the same port. 0 1 Frame Sync is external. Frame Sync generated internally.
5 RXDIR
REFS 0
RFSL
RFSI
Receive Shift Direction. This bit controls whether the MSB or LSB will be received first in a sample. NOTE: The CODEC device labels the MSB as bit 0, whereas the Core labels the LSB as bit 0. Therefore, when using a standard CODEC, Core MSB (CODEC LSB) is shifted in first (RSHFD cleared). 0 1 Data received MSB first. Data received LSB first.
3 RSCKP
Receive Clock Polarity. This bit controls which bit clock edge is used to latch in data for the receive section. 0 1 Data latched on falling edge of bit clock. Data latched on rising edge of bit clock.
2 RFSI
Receive Frame Sync Invert. This bit controls the active state of the frame sync I/O signal for the receive section of I2S. 0 1 Receive frame sync is active high. Receive frame sync is active low.
1 RFSL
Receive Frame Sync Length. This bit controls the length of the frame sync signal to be generated or recognized for the receive section. The length of a word-long frame sync is same as the length of the data word selected by WL[3:0]. 0 1 Receive frame sync is one-word long. Receive frame sync is one-clock-bit long.
0 REFS
Receive Early Frame Sync. This bit controls when the frame sync is initiated for the receive section. The frame sync is disabled after one bit-for-bit length frame sync and after one word-for-word length frame sync. 0 1 Receive frame sync initiated as the first bit of data is received. Receive frame sync is initiated one bit before the data is received.
DIV2
PSR
WL 0 0 0 0 0 0
DC 0 0 0 0 0 0
PM 0 0 0 0 0
Prescaler Range. This bit controls a fixed divide-by-eight prescaler in series with the variable prescaler. It extends the range of the prescaler for those cases where a slower bit clock is required. 0 1 Prescaler bypassed. Prescaler used to divide clock by 8.
1613 WL
Word Length Control. Specifies the number of bits per data word being transferred by the I2S. These bits control the Word Length Divider in the Clock Generator. They also control the frame sync pulse length when the FSL bit is Table continues on the next page...
Frame Rate Divider Control. These bits are used to control the divide ratio for the programmable frame rate dividers. The divide ratio works on the word clock. In Normal mode, this ratio determines the word transfer rate. In Network mode, this ratio sets the number of words per frame. The divide ratio ranges from 1 to 32 in Normal mode and from 2 to 32 in Network mode. In Normal mode, a divide ratio of 1 (DC=00000) provides continuous periodic data word transfer. A bit-length frame sync must be used in this case. These bits can be programmed with values ranging from "00000" to "11111" to control the number of words in a frame.
70 PM
Prescaler Modulus Select. These bits control the prescale divider in the clock generator. This prescaler is used only in Internal Clock mode to divide the internal clock . The bit clock output is available at the clock port. A divide ratio from 1 to 256 (PM[7:0] = 0x00 to 0xFF) can be selected.
DIV2
PSR
WL 0 0 0 0 0 0
DC 0 0 0 0 0 0
PM 0 0 0 0 0
Prescaler Range. This bit controls a fixed divide-by-eight prescaler in series with the variable prescaler. It extends the range of the prescaler for those cases where a slower bit clock is required. 0 1 Prescaler bypassed. Prescaler used to divide clock by 8.
1613 WL
Word Length Control. These bits are used to control the length of the data words being transferred by the I2S. These bits control the Word Length Divider in the Clock Generator. They also control the frame sync pulse length when the Table continues on the next page...
Frame Rate Divider Control. These bits are used to control the divide ratio for the programmable frame rate dividers. The divide ratio works on the word clock. In Normal mode, this ratio determines the word transfer rate. In Network mode, this ratio sets the number of words per frame. The divide ratio ranges from 1 to 32 in Normal mode and from 2 to 32 in Network mode. In Normal mode, a divide ratio of 1 (DC=00000) provides continuous periodic data word transfer. A bit-length frame sync must be used in this case. These bits can be programmed with values ranging from "00000" to "11111" to control the number of words in a frame.
70 PM
Prescaler Modulus Select. These bits control the prescale divider in the clock generator. This prescaler is used only in Internal Clock mode to divide the internal clock . The bit clock output is available at the clock port. A divide ratio from 1 to 256 (PM[7:0] = 0x00 to 0xFF) can be selected.
1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RFCNT1 0 0 0 0 0
TFCNT1 0 0 0 1
RFWM1 0 0 0 0
TFWM1 0 0 1 0
RFCNT0 0 0 0 0
TFCNT0 0 0 0 1
RFWM0 0 0 0 0
TFWM0 0 0 1
Transmit FIFO Counter1. These bits indicate the number of data words in Transmit FIFO. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 data word in transmit FIFO. 1 data word in transmit FIFO. 2 data word in transmit FIFO. 3 data word in transmit FIFO. 4 data word in transmit FIFO. 5 data word in transmit FIFO. 6 data word in transmit FIFO. 7 data word in transmit FIFO. 8 data word in transmit FIFO. 9 data word in transmit FIFO. 10 data word in transmit FIFO. 11 data word in transmit FIFO. 12 data word in transmit FIFO. 13 data word in transmit FIFO. 14 data word in transmit FIFO. 15 data word in transmit FIFO.
2320 RFWM1
Receive FIFO Full WaterMark 1. These bits control the threshold at which the RFF1 flag will be set. The RFF1 flag is set whenever the data level in Rx FIFO 1 reaches the selected threshold. 0000 0001 0010 0011 0100 0101 0110 0111 Reserved RFF set when at least one data word have been written to the Receive FIFO Set when RxFIFO = 1,2.....15 data words RFF set when more than or equal to 2 data word have been written to the Receive FIFO. Set when RxFIFO = 2,3.....15 data words RFF set when more than or equal to 3 data word have been written to the Receive FIFO. Set when RxFIFO = 3,4.....15 data words RFF set when more than or equal to 4 data word have been written to the Receive FIFO. Set when RxFIFO = 4,5.....15 data words RFF set when more than or equal to 5 data word have been written to the Receive FIFO. Set when RxFIFO = 5,6.....15 data words RFF set when more than or equal to 6 data word have been written to the Receive. Set when RxFIFO = 6,7......15 data words RFF set when more than or equal to 7 data word have been written to the Receive FIFO. Set when RxFIFO = 7,8......15 data words Table continues on the next page...
Transmit FIFO Empty WaterMark 1. These bits control the threshold at which the TFE1 flag will be set. The TFE1 flag is set whenever the empty slots in Tx FIFO exceed or are equal to the selected threshold. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 Reserved TFE set when there are more than or equal to 1 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 14 data. TFE set when there are more than or equal to 2 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 13 data. TFE set when there are more than or equal to 3 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 12 data. TFE set when there are more than or equal to 4 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 11 data. TFE set when there are more than or equal to 5 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 10 data. TFE set when there are more than or equal to 6 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 9 data. TFE set when there are more than or equal to 7 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 8 data. TFE set when there are more than or equal to 8 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 7 data. TFE set when there are more than or equal to 9 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 6 data. TFE set when there are more than or equal to 10 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 5 data. TFE set when there are more than or equal to 11 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 4 data. TFE set when there are more than or equal to 12 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 3 data. TFE set when there are more than or equal to 13 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 2 data. Table continues on the next page...
Receive FIFO Counter 0. These bits indicate the number of data words in Receive FIFO 0. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1000 1001 1010 1011 1100 1101 1110 1111 0 data word in receive FIFO. 1 data word in receive FIFO. 2 data word in receive FIFO. 3 data word in receive FIFO. 4 data word in receive FIFO. 5 data word in receive FIFO. 6 data word in receive FIFO. 7 data word in receive FIFO. 8 data word in receive FIFO. 8 data word in receive FIFO. 9 data word in receive FIFO. 10 data word in receive FIFO. 11 data word in receive FIFO. 12 data word in receive FIFO. 13 data word in receive FIFO. 14 data word in receive FIFO. 15 data word in receive FIFO.
118 TFCNT0
Transmit FIFO Counter 0. These bits indicate the number of data words in Transmit FIFO 0. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0 data word in transmit FIFO. 1 data word in transmit FIFO. 2 data word in transmit FIFO. 3 data word in transmit FIFO. 4 data word in transmit FIFO. 5 data word in transmit FIFO. 6 data word in transmit FIFO. 7 data word in transmit FIFO. 8 data word in transmit FIFO. 9 data word in transmit FIFO. 10 data word in transmit FIFO. 11 data word in transmit FIFO. 12 data word in transmit FIFO. 13 data word in transmit FIFO. 14 data word in transmit FIFO. 15 data word in transmit FIFO.
74 RFWM0
Transmit FIFO Empty WaterMark 0. These bits control the threshold at which the TFE0 flag will be set. The TFE0 flag is set whenever the empty slots in Tx FIFO exceed or are equal to the selected threshold. 0000 0001 0010 0011 0100 0101 Reserved TFE set when there are more than or equal to 1 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 14 data. TFE set when there are more than or equal to 2 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 13 data. TFE set when there are more than or equal to 3 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 12 data. TFE set when there are more than or equal to 4 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 11 data. TFE set when there are more than or equal to 5 empty slots in Transmit FIFO. (default) Transmit FIFO empty is set when TxFIFO 10 data. Table continues on the next page...
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FRDIV
W
WR
RD
TIF
FV
Reset
AC97EN 0
Read Command. This bit specifies whether the next frame will carry an AC97 Read Command or not. The programmer should take care that only one of the bits (WR or RD) is set at a time. When this bit is set, the corresponding tag bit (corresponding to Command Address slot of the next Tx frame) is automatically set. This bit is automatically cleared by the I2S after completing transmission of a frame. 0 1 Next frame will not have a Read Command. Next frame will have a Read Command.
2 TIF
Tag in FIFO. This bit controls the destination of the information received in AC97 tag slot (Slot #0). 0 1 Tag info stored in ATAG register. Tag info stored in ATAG register and Rx FIFO 0.
1 FV
Fixed/Variable Operation. This bit selects whether the I2S is in AC97 Fixed mode or AC97 Variable mode. 0 1 AC97 Fixed Mode AC97 Variable Mode.
0 AC97EN
AC97 Mode Enable. This bit is used to enable I2S AC97 operation. 0 1 AC97 mode disabled. I2S in AC97 mode.
ACADD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ACDAT 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ATAG 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TMSK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RMSK 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ACCST
0 ACCEN
Functional description
0 ACCDIS
Conditions for data transmission from the I2S in normal mode are: 1. I2S enabled (CR[SSIEN] = 1) 2. Enable FIFO and configure transmit and receive watermark if the FIFO is used 3. Write data to transmit data register (TX) 4. Transmitter enabled (CR[TE] = 1) 5. Frame sync active (for continuous clock case) 6. Bit clock begins (for gated clock case) When the above conditions occur in normal mode, the next data word transfers into the transmit shift register (TXSR) from the transmit data register 0 (TX0), or from the transmit FIFO 0 register, if enabled. In continuous clock mode, the data word is transmitted on arrival of frame-sync preceded by clocks.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1585
Functional description
In gated-external mode, the data word in transmitted on the external clock . In gated-internal mode, the data word is transmitted whenever data is available in the transmit FIFO. If transmit FIFO 0 is not enabled and the transmit data register empty enable (IER[TDE0EN]) and transmit interrupt enable (IER[TIE]) bits are set, transmit interrupt 0 occurs when the word in I2S_TX0 is shifted to transmit shift (TXSR) register. If transmit FIFO 0 is enabled and the transmit FIFO full enable (IER[TFF0EN]) and transmit interrupt enable (IER[TIE]) bits are set, transmit interrupt 0 occurs when the number of empty slots in transmit FIFO 0 are equal to or exceed the selected threshold value (transmit FIFO 0 watermark (FCSR[TFWM0]). If transmit FIFO 0 is enabled and filled with data, 15 data words can be transferred before the core must write new data to the TX0 register. The STXD port is disabled except during the data transmission period. For a continuous clock, the optional frame sync output and clock outputs are not disabled, even if the receiver and transmitter are disabled. 50.4.1.1.2 Normal mode receive
The conditions for data reception from the I2S are: 1. I2S enabled (CR[SSIEN] = 1) 2. Enable receive FIFO (optional) 3. Receiver enabled (CR[RE] = 1) 4. Frame sync active (for continuous clock case) 5. Bit clock begins (for gated clock case) With the above conditions in normal mode with a continuous clock, each time the frame sync signal is generated (or detected) a data word is clocked in. With the above conditions and a gated clock, each time the clock begins, a data word is clocked in. If receive FIFO 0 is not enabled and receive interrupt enable (IER[RIE]) and received data 0 ready enable (IER[RDR0EN]) bits are set, receive interrupt 0 occurs when received data word is transferred from the receive shift register (RXSR) to the receive data register 0 (RX0), thus setting the receive data ready 0 (RDR0) flag.
If receive FIFO 0 is enabled and receive interrupt enable (IER[RIE]) and received FIFO 0 full enable (IER[RDR0EN]) bits are set, receive interrupt 0 occurs when the received data word is transferred to the receive FIFO 0 and receive FIFO 0 reaches the selected threshold. This results in receive FIFO full 0 (RFF0) flag to set. The core has to read the data from the receive data register 0 (RX0) (if receive FIFO 0 is disabled) before a new data word is transferred from the receive shift register (RXSR). Otherwise, the receive overrun error 0 (IER[ROE0EN]) bit is set. If receive FIFO 0 is enabled, the receive overrun error 0 (ROE0) bit sets when the receive FIFO 0 data level reaches the selected threshold and a new data word is ready to transfer to the receive FIFO 0. The following figure shows transmitter and receiver timing for an 8-bit word in the first time slot in normal mode and continuous clock with a late word length frame sync. The transmit data register is loaded with the data to be transmitted. On arrival of the clock, this data is transferred to the transmit shift register which is transmitted on arrival of the frame-sync on the STXD output. Simultaneously, the receive shift register shifts in the received data available on the SRXD input. At the end of the time slot, this data is transferred to the receive data register.
Continuos CLK
FS
TX DATA REG
STXD SRXD
RX DATA REG
The following figure shows a similar case for internal (I2S generates clock) gated clock mode.
Functional description
Note A pull-down resistor is required in the gated clock mode, because the clock port is disabled between transmissions. The Tx data register is loaded with the data to be transmitted. On arrival of the clock, this data is transferred to the transmit shift register which gets transmitted on the STXD output. Simultaneously, the receive shift register shifts in the received data available on the SRXD input and at the end of the time slot, this data is transferred to the Rx data register. In internal gated clock mode, the Tx data line and clock output port are put in the high-impedance state at the end of transmission of the last bit (at the completion of the complete clock cycle). Whereas, in external gated clock mode, the Tx data line is tristated at the last inactive edge of the incoming bit clock (during the last bit in a data word).
STXD SRXD
RX DATA
The following figure shows a case for external (I2S receives clock) gated clock mode
STXD SRXD
RX DATA
Functional description
In network mode, data can be transmitted in any time slot. The distinction of the network mode is that each time slot is identified with respect to the frame sync (data word time). This time slot identification allows the option of transmitting data during the time slot by writing to the TX registers or ignoring the time slot as determined by TMSK register bits. The receiver is treated in the same manner and received data is only transferred to the receive data register/FIFO if the corresponding time slot is enabled through RMSK. By using the TMSK and RMSK registers, software only has to service the I2S during valid time slots. This eliminates any overhead associated with unused time slots. In the two-channel mode, the second set of transmit and receive FIFOs and data registers create two separate channels. These channels are completely independent with their own set of interrupts and DMA requests, which are identical to the ones available for the default channel. In this mode, data is transmitted/received in enabled time slots alternately from/to FIFO 0 and FIFO 1, starting from FIFO 0. The first data word is taken from FIFO 0 and transmitted in the first enabled time slot and subsequently, data is loaded from FIFO 1 and FIFO 0 alternately and transmitted. Similarly, the first received data is sent to FIFO 0 and subsequent data is sent to FIFO 1 and FIFO 0 alternately. Time slots are selected through the transmit and receive time slot mask registers (TMSK and RMSK). For using this mode of operation, the CR[TCHEN] bit must be set. 50.4.1.2.1 Network mode transmit
The transmit portion of I2S is enabled when the CR[SSIEN and TE] bits are set. However, for continuous clock, when the CR[TE] bit is set, the transmitter is enabled only after detection of a new frame sync (transmission starts from the next frame boundary). Normal start-up sequence for transmission: 1. Enable network mode 2. Enable I2S 3. Write the data to be transmitted to the TX register. This clears the ISR[TDE] flag 4. Set the CR[TE] bit to enable the transmitter on the next frame boundary (for continuous clock) 5. Enable transmit interrupts Alternatively, the user may decide not to transmit in a time slot by configuring the TMSK[STMSK]. The ISR[TDE] flag is cleared as data is shifted from TX register to TXSR, but the STXD port remains disabled during the time slots. When the next frame sync is detected or generated (continuous clock), the data word in TXSR and is shifted
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1590 Freescale Semiconductor, Inc.
out (transmitted). When the TX register is empty, the ISR[TDE] bit is set, which causes a transmitter interrupt (in case the FIFO is disabled) to be sent if the TIE bit is set. Software can poll the ISR[TDE] bit or use interrupts to reload the TX register with new data for the next time slot. Failing to reload the TX register before the TXSR is finished shifting (empty) causes a transmitter underrun and the TUE error bit is set. In case the FIFO is enabled, the ISR[TFE] flag is set in accordance with the watermark setting and this flag causes the transmitter interrupt to occur. Clearing the TE bit disables the transmitter after completion of transmission of the current frame. Setting the TE bit enables transmission from the next frame. During that time the STXD port is disabled. The TE bit should be cleared after the ISR[TDE] bit is set to ensure that all pending data is transmitted. To summarize, the network mode transmitter generates interrupts every enabled time slot (when FIFO is disabled) and requires the processor to respond to each enabled time slot. These responses may be: Write data in data register to enable transmission in the next time slot. Configure the time slot register to disable transmission in the next time slot (unless time slot is already masked by TMSK[STMSK] register bit). Do nothingtransmit underrun occurs at the beginning of the next time slot and the previous data is re-transmitted. In two-channel mode, both channels (data registers, FIFOs, interrupts, and DMA requests) operate in the same manner, as described above. The only difference is interrupts related to the second channel are generated only if this mode of operation is selected (ISR[TDE1] is low by default). 50.4.1.2.2 Network mode receive
The receiver portion of the I2S is enabled when the CR[SSIEN and RE] bits are set. However, the receive enable only takes place during that time slot if RE is enabled before the second to last bit of the word. If the RE bit is cleared, the receiver is disabled at the end of the current frame. The I2S module is capable of finding the start of the next frame automatically. When the word is completely received, it is transferred to the RX register, which sets the ISR[RDR] bit. This causes a receive interrupt to occur if the receiver interrupt is enabled (IER[RIE] is set) and receive data ready is enabled (IER[RDR0EN] and IER[RDR1EN] is set). The second data word (second time slot in the frame) begins shifting in immediately after the transfer of the first data word to the RX register. The processor has to read the data from the receive data register (which clears ISR[RDR]) before the second data word is completely received (ready to transfer to RX data register) or a receive overrun error occurs (the ISR[ROE] bit is set).
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1591
Functional description
An interrupt can occur after the reception of each enabled data word or the user can poll the ISR[RDR] flag. The response can be: Read RX and use the data. Read RX and ignore the data. Do nothingthe receiver overrun exception occurs at the end of the current time slot. Note For a continuous clock, the optional frame sync output and clock output signals are not affected, even if the transmitter or receiver is disabled. TE and RE do not disable the bit clock or the frame sync generation. To disable the bit clock and the frame sync generation, the CR[SSIEN] bit can be cleared, or CR[TFRCLKDIS]/CR[RFRCLKDIS] bits can be set, or the port control logic external to the I2S can be reconfigured. In two-channel mode, both channels (data registers, FIFOs, interrupts and DMA requests) operate in the same manner, as described above. The only difference is second channel interrupts are generated only in this mode of operation. The following figure shows the transmitter and receiver timing for an 8-bit word with continuous clock, FIFO disabled, three words per frame sync in network mode. Note The transmitter repeats the value 0x5E because of an underrun condition For the receive section, data received on the SRXD pin is transferred to the Rx Data register at the end of each time slot. If the FIFO is disabled, the ISR[RDR] flag sets and causes a receiver interrupt if the CR[RE], IER[RIE], and IER[RDREN] bits are set. If the FIFO is enabled, then the ISR[RFF] flag generates interrupts (this flag is set in accordance with the watermark settings). In this example all time slots are enabled. The receive data ready flag is set after reception of the first data (0x55). Because the flag is not cleared (Rx data register is not read), the receive overrun error (ROE) flag is set on reception of the next data (0x5E). The ISR[ROE] flag is cleared by writing one to the corresponding interrupt status bit in I2S status register.
CLK
0xD6
0x7B
STXD
0x5E
0x5E
0xD6
0xD6
0xD6
0x7B
TDE TUE
SRXD
0x55
0x5E
0xD6
0x12
0x34
$7B
0x55
0x5E
0xD6
0x12
ROE
Note: Processor must write 1 to the corresponding TUE/ROE Interrupt status bit in ISR to clear TUE/ROE Interrupt
Functional description
normal mode), the internal bit clock is enabled onto the appropriate clock port. This allows data to be transferred out in periodic intervals in gated clock mode. With an external clock, the I2S module waits for a clock signal to be received. After the clock begins, valid data is shifted in. Ensure all RCCR[DC] bits are cleared when the module is used in gated mode. In gated mode the ISR[TFS], ISR[RFS], ISR[TLS], ISR[RLS], ISR[TRFC] and ISR[RFRC] bits are not generated. For gated clock operated in external clock mode, proper clock signalling must apply to the I2S STCK for it to function properly. When TCR[TSCKP] is cleared, CR[CLKIST] must be set. When TCR[TSCKP] is set, CR[CLKIST] value must be cleared. If the I2S uses rising edge transition to clock data (TCR[TSCKP] = 0) and the falling edge transition to latch data (RCR[RSCKP] = 0), the clock must be in an active low state when idle. If the I2S uses falling edge transition to clock data (TCR[TSCKP] = 1) and the rising edge transition to latch data (RCR[RSCKP] = 1), the clock must be in a active high state when idle. The following diagrams illustrate the different edge clocking/latching.
STCK STXD SRXD TCR[TSCKP] = 0, RCR[RSCKP] = 0
Figure 50-50. Internal gated mode timing - rising edge clocking/falling edge latching
Figure 50-51. Internal gated mode timing - falling edge clocking/rising edge latching
STCK
STXD
SRXD TCR[TSCKP] = 0, RCR[RSCKP] = 0
Figure 50-52. External gated mode timing - rising edge clocking/falling edge latching
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1594 Freescale Semiconductor, Inc.
Figure 50-53. External gated mode timing - falling edge clocking/rising edge latching
Note The bit clock signals must not have timing glitches. If a single glitch occurs, all ensuing transfers are out of synchronization. In external gated mode, even though the transmit data line is tri-stated at the last non-active edge of the bit clock, the round trip delay should sufficiently take care of hold time requirements at the external receiver.
Serial clock Frame sync Serial data Word (n-1) Right channel msb Word (n) Left channel lsb msb Word (n+1) Right channel
Figure 50-54. I2S mode timing - serial clock, frame sync and serial data
Select I2S mode using the options listed in the following table.
Functional description
In normal (non-I2S) mode operation, no register bits are forced to any particular state internally, and the user can program the I2S to work in any operating condition. When I2S modes are entered (CR[I2SMODE] = 01 or 10), these settings are recommended: Synchronous mode (CR[SYN] =1) Tx shift direction: msb transmitted first (TCR[TSHFD] = 0) Rx shift direction: msb received first (RCR[RSHFD] = 0) Tx data clocked at falling edge of the clock (TCR[TSCKP] = 1) Rx data latched at rising edge of the clock (RCR[RSCKP] = 1) Tx frame sync active low (TCR[TFSI] = 1) Rx frame sync active low (RCR[RFSI] = 1) Tx frame sync initiated one bit before data is transmitted (TCR[TEFS] = 1) Rx frame sync initiated one bit before data is received (RCR[REFS] = 1) Tx frame rate should be 2 (TCCR[DC] = 1) Rx frame rate should be 2 (RCCR[DC] = 1) 50.4.1.4.1 I2S master mode
In I2S master mode (CR[I2SMODE] = 01b), the following additional settings are recommended: Internal generated bit clock (TCR[TXDIR] = 1) Internal generated frame sync (TCR[TFDIR] = 1) The processor automatically performs these settings in I2S master mode: Network mode is selected (CR[NET] = 1)
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1596 Freescale Semiconductor, Inc.
Tx frame sync length set to one-word-long-frame (TCR[TFSL]=0) Rx frame sync length set to one-word-long-frame (RCR[RFSL]=0) Tx shifting w.r.t. bit 0 of TXSR (TCR[TXBIT0] = 1) Rx shifting w.r.t. bit 0 of RXSR (RCR[RXBIT0] = 1) Set the TCCR[PM, PSR, DIV2, WL, DC] to configure the bit clock and frame sync. The word length is fixed to 32 in I2S master mode and the RCCR[WL] bits determine the number of bits that contain valid data (out of the 32 transmitted/received bits in each channel). 50.4.1.4.2 I2S slave mode
In I2S slave mode (CR[I2SMODE] = 10b), the following additional settings are recommended: External generated bit clock (TCR[TXDIR] = 0) External generated frame sync (TCR[TFDIR] = 0) The processor automatically performs these settings in I2S slave mode: Normal mode is selected (CR[NET] = 0) Tx frame sync length set to one-bit-long-frame (TCR[TFSL] = 1) Rx frame sync length set to one-bit-long-frame (RCR[RFSL] = 1) Tx shifting w.r.t. bit 0 of TXSR (TCR[TXBIT0] = 1) Rx shifting w.r.t. bit 0 of RXSR (RCR[RXBIT0] = 1) Set the TCCR[WL, DC] bits to configure the data transmission. The word length is variable in I2S slave mode and the RCCR[WL] bits determine the number of bits that contain valid data. The actual word length is determined by the external codec. The external I2S master sends a frame sync according to the I2S protocol (early, word wide, and active low). The I2S internally operates so each frame sync transition is the start of a new frame (the RCCR[WL] bits determine the number of bits to be transmitted/received). After one data word has been transferred, the I2S waits for the next frame sync transition to start operation in the next time slot. Transmit and receive mask bits should not be used in I2S slave mode.
Functional description
Rx frame sync length is one-word-long-frame (RCR[RFSL] = 0) Tx frame sync initiated one bit before data is transmitted (TCR[TEFS] = 1) Rx frame sync initiated one bit before data is received (RCR[REFS] = 1) Tx shifting w.r.t. bit 0 of TXSR (TCR[TXBIT0] = 1) Rx shifting w.r.t. bit 0 of RXSR (RCR[RXBIT0] = 1) Tx FIFO is enabled (TCR[TFEN0] = 1) Rx FIFO is enabled (RCR[RFEN0] = 1) Internally-generated frame sync (TCR[TFDIR] = 1) Externally-generated bit clock (TCR[TXDIR] = 0) Any alteration of these bits does not affect the operational conditions of the I2S unless AC97 mode is deselected. Hence, the only control bits that need to be set to configure the data transmission/reception are the TCCR[WL, DC] bits. In AC97 mode, the WL bits can only legally take the values corresponding to 16-bit (truncated data) or 20-bit time slots. If the WL bits are set to select 16-bit time slots while receiving, the I2S pads the transmit data (four least significant bits) with zeros and while receiving, the I2S stores only the 16 most significant bits in the Rx FIFO. Follow the sequence for programming the I2S to work in AC97 mode: 1. Program the TCCR[WL] bits to a value corresponding to 16 or 20 bits. The WL bit setting is only for the data portion of the AC97 frame (slots #3 through #12). The tag slot (slot #0) is always 16 bits wide and the command address and command data slots (slots #1 and #2) are always 20 bits wide. 2. Select the number of time slots through the TCCR[DC] bits. For AC97 operation, the DC bits should be set to a value of 0xC, resulting in 13 time slots per frame. 3. Write data to be transmitted in Tx FIFO 0 (through Tx data register 0) and Tx FIFO 1 while using two-channel mode (CR[TCHEN] = 1). 4. Program the ACNT[FV, TIF, RD, WR, and FRDIV] bits 5. Update the contents of ACADD, ACDAT, and ATAG (for fixed mode only) registers 6. Enable AC97 mode (ACNT[AC97EN])
Functional description
After the I2S starts transmitting and receiving data (after being configured in AC97 mode), the processor needs to service the interrupts when they are raised (updates to command address/data or tag registers, reading of received data, and writing more data for transmission). Further details regarding fixed and variable mode implementation appear in the following sections. While using AC97 in two-channel mode (CR[TCHEN] = 1), it is recommended that the received tag is not stored in the Rx FIFO (ACNT[TIF] = 0). If you need to update the ATAG register and also issue a RD/WR command (in a single frame), it is recommended that the ATAG register is updated prior to issuing a RD/WR command. 50.4.1.5.1 AC97 fixed mode (ACNT[FV] = 0)
In fixed mode, I2S transmits in accordance with the AC97 frame rate divider bits (ACNT[FRDIV) that decide the number of frames for which the I2S should be idle, after operating for one frame. The following shows the slot assignments in a valid transmit frame:. Slot 0: The tag value (written by the user program) Slot 1: If RD/WR command, command address Slot 2: If WR command, command data Slot 312: Transmit FIFO data, depending on the valid slots indicated by the TAG value While receiving, bit 15 of the tag slot is checked to see if the codec is ready. If this bit is set, the frame is received. The received tag provides the information about slots containing valid data. If the corresponding tag bit is valid, the command address (slot #1) and command data (slot #2) values are stored in the corresponding registers. The received data (slot #312) is then stored in the receive FIFO (for valid slots). 50.4.1.5.2 AC97 variable mode (ACNT[FV] = 1)
In variable mode, the transmit slots that should contain data in the current frame are determined by the SLOTREQ bits received in the previous frame. While receiving, if the codec is ready, the frame is received and the SLOTREQ bits are stored for scheduling transmission in the next frame. The ACCST, ACCEN and ACCDIS registers helps determine which transmit slots are active. This information is used to ensure that I2S does not transmit data for powereddown/inactive channels.
Functional description
Word divider (/8, /10, /12, /16, /18, /20, /22, /24)
Word clock
Frame clock
PSR
Prescaler (/1 or /8)
TXDIR(1=output)
PM[7:0]
WL[3:0]
The following figure shows the frame sync generator block for the transmit section. When internally generated, both receive and transmit frame sync are generated from the word clock and are defined by the frame rate divider (DC) bits and the word length (WL) bits of the TCCR. The receive section contains an equivalent circuit for the frame sync generator.
DC[4:0]
Word Clock
Frame Rate Frame Sync
TFSL
TFSI
TFDIR(1=output)
STFS
TFDIR(0=input)
I2S
From this, the frame clock frequency can be calculated:
Functional description
For example, if the I2S oversampling clock (network clock) is 12.288 MHz, in 8-bit word normal mode with DC = 1, PM = 47, PSR = 0, DIV2 = 1, a bit clock rate of 64 kHz is generated. Since the 8-bit word rate is equal to one (i.e. normal mode), the sampling rate (or frame sync rate) would then be 64/(18) = 8 kHz. In the next example, the oversampling clock (network clock) clock is 11.2896 MHz. A 16-bit word network mode with TCCR[DC] = 1, TCCR[PM] = 3, TCCR[PSR] = 0, TCCR[DIV2] = 0, a bit clock rate of 1.4112 MHz is generated. Since the 16-bit word rate is equal to two, the sampling rate (or frame sync rate) would be 1.4112/(216) = 44.1 kHz. The following table shows examples of programming the TCCR[PSR] and TCCR[PM] bits to generate various bit clock (STCK) frequencies.
Table 50-51. I2S bit clock and frame rate as a function of PSR, PM, and DIV2
Bits/ word 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 Words/ frame 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4 1 2 4 1 2 MCLK/network clock freq (MHz) 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 12.288 11.2896 11.2896 DIV2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 TCCR PSR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 PM 47 23 11 31 15 7 23 11 5 15 7 3 11 5 2 15 3 1 31 15 WL 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 DC 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3 0 1 3 0 1 Bit clock (kHz) STCK 128 256 512 192 384 768 256 512 1024 384 768 1536 512 1024 2048 768 1536 3072 176.4 352.8 Frame rate (kHz) 8 8 8 12 12 12 16 16 16 24 24 24 32 32 32 48 48 48 11.025 11.025
Table 50-51. I2S bit clock and frame rate as a function of PSR, PM, and DIV2 (continued)
Bits/ word 16 16 16 16 16 16 16 Words/ frame 4 1 2 4 1 2 4 MCLK/network clock freq (MHz) 11.2896 11.2896 11.2896 11.2896 11.2896 11.2896 11.2896 DIV2 0 0 0 0 0 0 0 TCCR PSR 0 0 0 0 0 0 0 PM 7 15 7 3 7 3 1 WL 7 7 7 7 7 7 7 DC 3 0 1 3 0 1 3 Bit clock (kHz) STCK 705.6 352.8 705.6 1411.2 705.6 1411.2 2822.4 Frame rate (kHz) 11.025 22.05 22.05 22.05 44.1 44.1 44.1
The table below shows an example of programming clock controller divider ratios to generate the appropriate oversampling clock and peripheral clock frequencies for various sampling rates. In these examples, the master mode is selected either by setting I2S master bit (CR[I2SMODE] = 01b) or individually programming the I2S in network, synchronous, transmit internal mode. (The table specifically illustrates the I2S mode frequencies/sample rates). The oversampling clock is network clock. I2S master mode requires a 32-bit word length, regardless of the actual data type. Consequently, the fixed I2S frame rate of 64 bits per frame (word length (TCCR[WL]) can be any value) and TCCR[DC] = 1 are assumed.
Table 50-52. I2S system clock, bit clock, frame clock in master mode
Sampling/frame rate (kHz) 44.10 22.05 11.025 48.00 MCLK/network Over- sampling rate 384 384 384 256 clock freq (MHz) 16.934 16.934 16.934 12.288 DIV2 0 0 0 0 TCCR PS R 0 0 0 0 PM 2 5 11 1 Bit clk (kHz) STCK 2822.33 1411.17 705.58 3072
Functional description
In addition, if lsb alignment is selected, the receive data can be zero-extended or signextended. In zero-extension, all bits above the most significant bit are 0s. This format is useful when data is stored in a pure integer format. In sign-extension, all bits above the most significant bit are equal to the most significant bit. This format is useful when data is stored in a fixed-point integer format (which implies fractional values). The RCR[RXEXT] bit controls receive data extension. Transmit data used with lsb alignment has no concept of sign/zero-extension. Unused bits above the most significant bit are simply ignored. When configured in I2S or AC97 mode, the I2S forces the selection of lsb alignment. However, RXEXT chooses zero-extension and sign-extension.
Functional description
(two per channel in two-channel mode) are available: receive data with exception status and receive data without exception. The following table shows the conditions under which these interrupts are generated.
Table 50-54. I2S receive data interrupts
Interrupt RIE Receive data 0 interrupts (n = 0) Receive data 0 (with exception status) Receive data 0 (without exception) 1 1 1 0 1 1 ROEn RFFn/RDRn
Receive data 1 interrupts (n = 1) Receive data 1 (with exception status) Receive data 1 (without exception) 1 1 1 0 1 1
Transmit data 1 interrupts (n = 1) Transmit data 0 (with exception status) Transmit data 0 (without exception) 1 1 1 0 1 1
Functional description
If CR[TFRCLKDIS or RFRCLKDIS] bit is not set while CR[TE or RE] is cleared, the I2S continues generating frame sync and clock signals (if direction is from the I2S), Upun setting CR[TFRCLKDIS or RFRCLKDIS], the I2S stops driving these signals at the end of the current frame. Following this, the TFRC/RFRC status bits are set to indicate the frame completion state. The following figure is illustrates a transmission case where: TCR[TXDIR] and TCR[TFDIR] are set CR[TFRCLKDIS] is set a few frames after clearing CR[TE] ISR[TRFC] is set at the frame boundary after CR[TE] is cleared. Once software services this interrupt and later sets CR[TFRCLKDIS] bit, the ISR[TRFC] bit is set again at next frame boundary.
50.4.7 Reset
The I2S is affected by the following types of reset: Power-on resetThis reset clears the CR[SSIEN] bit, which disables the I2S. All other status and control bits in the I2S are affected as described in Memory map/ register definition. I2S resetThe I2S reset is generated when the CR[SSIEN] bit is cleared. The I2S status bits are reset to the same state produced by the power-on reset. The I2S control bits, including those in CR register, are unaffected. The I2S reset is useful for selective reset of the I2S, without changing the present I2S control bits and without affecting other peripherals.
Initialization/application information
Table 50-56. I2S control bits requiring I2S to be disabled before change (continued)
Control Register RCR TCR Bit [9]=RXBIT0 [9]=TXBIT0 [8]=RFEN1 [8]=TFEN1 [7]=RFEN0 [7]=TFEN0 [6]=RFDIR [6]=TFDIR [5]=RXDIR [5]=TXDIR [4]=RSHFD [4]=TSHFD [3]=RSCKP [3]=TSCKP [2]=RFSI [2]=TFSI [1]=RFSL [1]=TFSL [0]=REFS [0]=TEFS RCCR TCCR [16]=WL3 [15]=WL2 [14]=WL1 [13]=WL0 ACNT [1]=FV [10:5]=FRDIV PHCONFIG [10:7]=CLKSRCSEL [0:2]=GAINSEL
51.1.1 Features
Rapid general purpose input and output Pin input data register visible in all digital pin-muxing modes Pin output data register with corresponding set/clear/toggle registers Pin data direction register Zero wait state access to GPIO registers
Introduction
NOTE Not all pins within each port are implemented on each device.
0000_0000h
400F_F004
32
0000_0000h
400F_F008
32
0000_0000h
51.2.3/ 1619
400F_F00C
32
0000_0000h
51.2.4/ 1620
Port Data Input Register (GPIOA_PDIR) Port Data Direction Register (GPIOA_PDDR) Port Data Output Register (GPIOB_PDOR)
400F_F044
32
0000_0000h
400F_F048
32
0000_0000h
51.2.3/ 1619
400F_F04C
32
0000_0000h
51.2.4/ 1620 51.2.5/ 1620 51.2.6/ 1621 51.2.1/ 1618 51.2.2/ 1618
Port Data Input Register (GPIOB_PDIR) Port Data Direction Register (GPIOB_PDDR) Port Data Output Register (GPIOC_PDOR)
32 32 32
400F_F084
32
0000_0000h
400F_F088
32
0000_0000h
51.2.3/ 1619
400F_F08C
32
0000_0000h
51.2.4/ 1620 51.2.5/ 1620 51.2.6/ 1621 51.2.1/ 1618 51.2.2/ 1618
Port Data Input Register (GPIOC_PDIR) Port Data Direction Register (GPIOC_PDDR) Port Data Output Register (GPIOD_PDOR) Port Set Output Register (GPIOD_PSOR)
32 32 32 32
400F_F0C8
32
0000_0000h
32
0000_0000h
51.2.4/ 1620 51.2.5/ 1620 51.2.6/ 1621 51.2.1/ 1618 51.2.2/ 1618
Port Data Input Register (GPIOD_PDIR) Port Data Direction Register (GPIOD_PDDR) Port Data Output Register (GPIOE_PDOR)
32 32 32
400F_F104
32
0000_0000h
400F_F108
32
0000_0000h
51.2.3/ 1619
400F_F10C
32
0000_0000h
400F_F110 400F_F114
Port Data Input Register (GPIOE_PDIR) Port Data Direction Register (GPIOE_PDDR)
32 32
0000_0000h 0000_0000h
PDO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 PTSO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 PTCO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 PTTO 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PDI
PDD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Functional description
The pin data input registers return the synchronized pin state after any enabled digital filter in the port control and interrupt module. The input pin synchronizers are shared with the port control and interrupt module, so that if the corresponding port control and interrupt module is disabled then synchronizers are also disabled. This reduces power consumption when a port is not required for general purpose input functionality.
52.2 Features
Support as many as 16 input capacitive touch sensing pins with individual result registers Automatic detection of electrode capacitance change with programmable upper and lower threshold Automatic periodic scan unit with different duty cycles for run and low power modes Full support with FSL touch sensing SW library (TSS) for the implementation of keypads, rotaries and sliders Operation across all low power modes: Wait,Stop, VLPR, VLPW, VLPS, LLS,VLLS{3,2,1} Capability to wake up MCU from low power modes Configurable interrupts: End-of-scan or out-of-range interrupt TSI error interrupts: pad short to VDD/VSS or conversion overrun Compensate temperature and supply voltage variations Stand alone operation not requiring any external crystal even in low power modes Configurable integration of each electrode capacitance measurement from 1 to 4096 times
Overview
Programmable electrode oscillator and TSI Reference Oscillator for high sensitivity, small scan time and low power functionality Only uses one pin per electrode implementation with no external hardware required
52.3 Overview
This section presents an overview of the TSI module. The following figure presents the simplified TSI module block diagram.
External Electrodes
Cap Switch
PAD15
STPE
STM LPSCNITV
SMOD
OUTRGF
TSICHnLTH TSICHnHTH
The electrode oscillator charges and discharges the pin capacitance with a programmable 5-bit binary current source in order to accommodate different sizes of electrode capacitance. The electrode oscillator frequency, before being compared to that of the reference oscillator, goes through a prescaler and modulo counter to decrease its frequency and consecutively increase the measurement resolution and noise robustness. The following figure presents the simplified block diagram of how the electrode capacitance is measured.
Capacitance Measurement Unit CAPTRM REFCHRG DELVOL
EXTCHRG DELVOL
PS
Electrode Capacitance
TSICHnCNT
Prescaler
NSCN
Modes of operation
application that all electrodes were scanned. If a new electrode scan is started while the previous one is still in progress, an overrun error flag is generated, TSI continues the previous scan sequence and the latest trigger is ignored.
EXTCHRG DELVOL
PS
TSICHnCNT
Cap Switch
NSCN
PAD15
STPE
LPSCNITV MCGIRCLK OSCERCLK BUS CLK LLS/VLLSx Modes 2 Windowed Comparators Touch and Error Detection Error Interrupt EXTERF OUTRGF out of range interrupt
OVRF LPOCLK VLPOSCCLK TSICHnHTH TSICHnLTH PEN[15:0] overrun interrupt end of scan interrupt Touch Detection Unit
52.5.1 TSI_IN[15:0]
When TSI functionality is enabled by the PEN[PEN], the TSI analog portion uses corresponding TSICHn to connect external on-board touch capacitors. The connection between the pin and the touch pad must be kept as short as possible to reduce distribution capacity on board that will add to the system base capacitance.
General Control and Status Register (TSI0_GENCS) SCAN control register (TSI0_SCANC) Pin enable register (TSI0_PEN) Status Register (TSI0_STATUS) Counter Register (TSI0_CNTR1)
Counter Register (TSI0_CNTR3) Counter Register (TSI0_CNTR5) Counter Register (TSI0_CNTR7) Counter Register (TSI0_CNTR9) Counter Register (TSI0_CNTR11) Counter Register (TSI0_CNTR13) Counter Register (TSI0_CNTR15) Channel n threshold register (TSI0_THRESHLD0) Channel n threshold register (TSI0_THRESHLD1) Channel n threshold register (TSI0_THRESHLD2) Channel n threshold register (TSI0_THRESHLD3) Channel n threshold register (TSI0_THRESHLD4) Channel n threshold register (TSI0_THRESHLD5) Channel n threshold register (TSI0_THRESHLD6) Channel n threshold register (TSI0_THRESHLD7) Channel n threshold register (TSI0_THRESHLD8) Channel n threshold register (TSI0_THRESHLD9) Channel n threshold register (TSI0_THRESHLD10) Channel n threshold register (TSI0_THRESHLD11) Channel n threshold register (TSI0_THRESHLD12)
0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
Channel n threshold register (TSI0_THRESHLD13) Channel n threshold register (TSI0_THRESHLD14) Channel n threshold register (TSI0_THRESHLD15)
0 LPCLKS
Reserved
LPSCNITV
NSCN
PS
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
OUTRGF
EXTERF
Reserved
Reserved
SCNIP
OVRF
EOSF
TSIEN
ESOR
w1c 0
w1c
w1c
w1c 0 0 0 0
Reset
SWTS
STPE 0
TSIIE
ERIE
STM
2724 LPSCNITV
TSI Low Power Mode Scan Interval 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 1 ms scan interval 5 ms scan interval 10 ms scan interval 15 ms scan interval 20 ms scan interval 30 ms scan interval 40 ms scan interval 50 ms scan interval 75 ms scan interval 100 ms scan interval 125 ms scan interval 150 ms scan interval 200 ms scan interval 300 ms scan interval 400 ms scan interval 500 ms scan interval
2319 NSCN
Number of Consecutive Scans per Electrode 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 1 time per electrode 2 times per electrode 3 times per electrode 4 times per electrode 5 times per electrode 6 times per electrode 7 times per electrode 8 times per electrode 9 times per electrode 10 times per electrode 11 times per electrode 12 times per electrode 13 times per electrode 14 times per electrode 15 times per electrode 16 times per electrode 17 times per electrode 18 times per electrode 19 times per electrode 20 times per electrode 21 times per electrode 22 times per electrode 23 times per electrode Table continues on the next page...
Electrode oscillator prescaler 000 001 010 011 100 101 110 111 Electrode oscillator frequency divided by 1 Electrode oscillator frequency divided by 2 Electrode oscillator frequency divided by 4 Electrode oscillator frequency divided by 8 Electrode oscillator frequency divided by 16 Electrode oscillator frequency divided by 32 Electrode oscillator frequency divided by 64 Electrode oscillator frequency divided by 128
End of scan flag Write 1 to clear the flag. Out of Range Flag Write 1 to clear the flag. External electrode error occurred 0 1 No short Short to VDD or VSS occured on the electrodes
12 OVRF
This read-only bitfield is reserved and always has the value zero. Scan-in-progress status Indicates if a scanning process is in progress. This bit is read-only and is changed automatically by the TSI module. Software trigger start Setting this bit starts a scan sequence. Writing zero to this bit has no effect. TSI module enable 0 1 TSI disabled TSI enabled Table continues on the next page...
8 SWTS 7 TSIEN
5 ERIE
TSI error interrupt Enable Caused by a short or overrun error. 0 1 Error interrupt disabled Error interrupt enabled
4 ESOR
End-of-scan or out-of-range interrupt select 0 1 Out-of-range interrupt selected End-of-scan interrupt selected
Reserved This bit is reserved. Reserved This bit is reserved. Scan trigger mode 0 1 Software trigger scan Periodical scan
0 STPE
TSI stop enable while in low-power modes (STOP, VLPS, LLS, and VLLS{3,2,1}) 0 1 Disable TSI when MCU enters low-power modes Allow TSI to continue running in all low power modes
Memory map and register definition Addresses: TSI0_SCANC 4004_5000h base + 4h offset = 4004_5004h
Bit R 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
REFCHRG
W
CAPTRM
EXTCHRG
DELVOL
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5 AMCLKDIV
0
4
0
3
0
2
0
1
0
0
0 SMOD
AMCLKS
AMPSC
Reset
Internal capacitance trim value 000 001 010 011 100 101 110 111 0.5 pF internal reference capacitance 0.6 pF internal reference capacitance 0.7 pF internal reference capacitance 0.8 pF internal reference capacitance 0.9 pF internal reference capacitance 1.0 pF internal reference capacitance 1.1 pF internal reference capacitance 1.2 pF internal reference capacitance
2319 EXTCHRG
External oscillator charge current select 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 1 A charge current 2 A charge current 3 A charge current 4 A charge current 5 A charge current 6 A charge current 7 A charge current 8 A charge current 9 A charge current 10 A charge current 11 A charge current 12 A charge current 13 A charge current 14 A charge current 15 A charge current 16 A charge current 17 A charge current 18 A charge current 19 A charge current 20 A charge current 21 A charge current 22 A charge current 23 A charge current 24 A charge current 25 A charge current 26 A charge current 27 A charge current 28 A charge current 29 A charge current 30 A charge current 31 A charge current 32 A charge current Table continues on the next page...
158 SMOD
76 Reserved 5 AMCLKDIV
This read-only bitfield is reserved and always has the value zero. Active mode clock divider 0 1 Divider set to 1 Divider set to 2048
43 AMCLKS
Active mode clock source 00 01 10 11 Bus Clock MCGIRCLK OSCERCLK Not valid
20 AMPSC
Active mode prescaler 000 001 010 011 100 101 110 111 Input clock source divided by 1 Input clock source divided by 2 Input clock source divided by 4 Input clock source divided by 8 Input clock source divided by 16 Input clock source divided by 32 Input clock source divided by 64 Input clock source divided by 128
Chapter 52 Touch sense input (TSI) Addresses: TSI0_PEN 4004_5000h base + 8h offset = 4004_5008h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PEN15
PEN14
PEN13
PEN12
PEN11
PEN10
PEN9
PEN8
PEN7
PEN6
PEN5
PEN4
PEN3
PEN2 0
PEN1 0
LPSP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TSI pin 15 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
14 PEN14
TSI pin 14 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
13 PEN13
TSI pin 13 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
12 PEN12
TSI pin 12 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI Table continues on the next page...
PEN0 0
10 PEN10
TSI pin 10 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
9 PEN9
TSI pin 9 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
8 PEN8
TSI pin 8 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
7 PEN7
TSI pin 7 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
6 PEN6
TSI pin 6 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
5 PEN5
TSI pin 5 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
4 PEN4
TSI pin 4 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
3 PEN3
TSI pin 3 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
2 PEN2
TSI pin 2 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
1 PEN1
TSI pin 1 enable 0 1 The corresponding pin is not used by TSI The corresponding pin is used by TSI
0 PEN0
ERROF9
ERROF8
ERROF7
ERROF6
ERROF5
ERROF4
ERROF3
ERROF2
ERROF1
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
Reset
Bit
0
15 ORNGF15
0
14 ORNGF14
0
13 ORNGF13
0
12 ORNGF12
0
11 ORNGF11
0
10 ORNGF10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
ORNGF9
ORNGF8
ORNGF7
ORNGF6
ORNGF5
ORNGF4
ORNGF3
ORNGF2
ORNGF1
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
w1c
Reset
30 ERROF14
29 ERROF13
ORNGF0
ERROF0
0
0
27 ERROF11
26 ERROF10
25 ERROF9
24 ERROF8
23 ERROF7
22 ERROF6
21 ERROF5
20 ERROF4
19 ERROF3
18 ERROF2
17 ERROF1
15 ORNGF15
14 ORNGF14
13 ORNGF13
12 ORNGF12
11 ORNGF11
10 ORNGF10
9 ORNGF9
8 ORNGF8
7 ORNGF7
6 ORNGF6
5 ORNGF5
3 ORNGF3
2 ORNGF2
1 ORNGF1 0 ORNGF0
CNTN1
CNTN
LTHH 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
HTHH 0 0 0 0 0 0 0 0 0
Functional descriptions
Delta Voltage
(DELVOL)
The current source applied to the pad capacitance is 5-bit binary controlled by the SCANC[EXTCHRG]. The hysteresis delta voltage is also configurable and is 3-bit binary controlled by the SCANC[DELVOL]. The figure below shows the voltage amplitude waveform of the electrode capacitance charging and discharging with a programmable current.
Electrode Capacitor Charging and Discharging with constant current
Electrode Voltage
Time
Felec
Where: I: constant current Celec: electrode capacitance V: Hysteresis delta voltage
2 * Celec * V
So by this equation, for example, an electrode with Celec= 20 pF, with a current source of I = 16 A and V = 600 mV will have the following oscillation frequency:
Felec
16 A 2 * 20pF * 600mV
0.67MHz
The current source and hysteresis delta voltage are used to accommodate the TSI electrode oscillator frequency with different electrode capacitance sizes.
Tcap_samp
PS * NSCN F elec
Using Equation 1.
Tcap_samp
2 * PS * NSCN * Celec * V I
Functional descriptions
Where: PS: prescaler value NSCN: number of scan I: constant current Celec: electrode capacitance V: Hysteresis delta voltage By this equation, an electrode with C = 20 pF, with a current source of I = 16 A and V = 600 mV, PS = 2 and NSCN = 16 will have the following sampling time:
Fref_osc
Where: Cref: Internal reference capacitor Iref: Reference oscillator current source V : Hysteresis delta voltage
Iref 2 *Cref * V
Fref_osc
10.0MHz
TSICHnCNT
Functional descriptions
52.7.3.4.1
In active mode periodic scan the scan following clocks can be selected: BUS_CLK, MCGIRCLK and OSCERCLK. The bit field SCANC[AMCLKS] selects the TSI clock source for the active mode scan. The scan period is determined by the SCANC[SMOD] value. SMOD is the modulo of the counter that determines the scan period. The following figure presents the scan sequence performed by the TSI module. Every active electrode is scanned sequentially, stating with the TSI_IN[0] and ending with the TSI_IN[15] pin, if they are active. When the electrode scan unit starts a scan sequence, all the active electrodes will be scanned sequentially where each electrode has the scanned time defined by GENCS[NSCN]. The counter value is the sum of the total scan times of that electrode.
First Active Electrode Second Active Electrode Last Active Electrode
Scan States
1st Scan
...
Last Scan 1st Scan
...
Last Scan
...
1st Scan
...
Last Scan
... ...
... ...
...
... ...
52.7.3.4.2
In low power periodic scan, the scan period is define by the 4-bit binary GENCS[LPSCNITV]. The TSI module is enabled in low power modes only if the bit GENCS[STPE] is 1. Only one electrode pin is functional in the low power mode scan and its defined by the bit-field PEN[LPSP].
Functional descriptions
52.7.3.4.3
End-of-scan interrupt
The electrode scan unit sets the EOSF flag in the GENCS registers once all the active electrode scan finishes. The EOSF flag generates an end-of-scan interrupt request if it is enabled.. The interrupt is asserted if enabled by GENCS[TSIIE] and GENCS[ESOR] bits. The GENCS[EOSF] indicates that all active electrode scans are finished and the respective capacitance results are in the TSICHnCNT registers. The GENCS[EOSF] is cleared by writing one to it. 52.7.3.4.4 Over-run interrupt
If an electrode scan is in progress and there is a scan trigger, the electrode scan unit generates an over-run error by asserting the GENCS[OVRF]. If the TSI error interrupt is active by setting the GENCS[ERIE] bit a interrupt request is asserted. The OVRF flag is cleared by writing 1 to it.
Table 52-64. TSI Module funtionality in MCU operation modes
MCU operation mode Run Wait Stop VLPR VLPW VLPS LLS VLLS3 VLLS2 VLLS1 TSI clock sources BUSCLK, MCGIRCLK, OSCERCLK BUSCLK, MCGIRCLK, OSCERCLK MCGIRCLK, OS CERCLK BUSCLK, MCGIRCLK, OSCERCLK BUSCLK, MCGIRCLK, OSCERCLK MCGIRCLK, OS CERCLK LPOCLK, VLPOSCCLK LPOCLK, VLPOSCCLK LPOCLK, VLPOSCCLK LPOCLK, VLPOSCCLK TSI operation mode when TSIEN = 1 Active mode Active mode Active mode Active mode Active mode Active mode Low power mode Low power mode Low power mode Low power mode Functional electrode pins All All All All All All Determined by PEN[LPSP] Determined by PEN[LPSP] Determined by PEN[LPSP] Determined by PEN[LPSP] Required STPE state Dont care Dont care 1 Dont care Dont care 1 1 1 1 1
The GENCS[OUTRGF] flag generates a TSI interrupt request if the GENCS[TSIIE] bit is set and GENCS[ESOR] bit is cleared. With this configuration, after the end-ofelectrode scan, the TSI interrupt is only requested if there is a capacitance change. The capacitance change is detected when the result register gets outside the window defined by the TSI_THRESHLD register. If the electrodes capacitance does not vary, the TSI Interrupt do not interrupt the CPU.
Application information
TSI sensitivity
For the example provided, Iref = 2 A, PS = 2; NSCN = 16, Cref = 1.0 pF and I =1 A, the TSIsensitivity = 64 count/pF
53.1.1 Features
The LCD controller features include: LCD waveforms functional in all low-power modes 64 LCD pins with selectable frontplane/backplane configuration Generate up to 63 frontplane signals Generate up to 8 backplanes signals
Introduction
Programmable LCD frame frequency Programmable blink modes and frequency All segments blank during blink period Alternate display for each LCD segment in x4 or less mode Blink operation in low-power modes Programmable LCD duty cycle from static to 1/8 Programmable LCD power supply switch, making it an ideal solution for batterypowered and board-level applications Charge pump requires only four external capacitors Internal LCD power using VDD Internal VIREG regulated power supply option for 3 V or 5 V LCD glass External VLL3 power supply option Internal regulated voltage source with a 4-bit trim register to apply contrast control Integrated charge pump for generating LCD bias voltages Hardware configurable to drive 3 V or 5 V LCD panels On-chip generation of bias voltages Waveform storage registers (WF) Low power consumption in standby modes Backplane reassignment to assist in vertical scrolling on dot-matrix displays Software configurable LCD frame frequency interrupt Support for segment fault detection
NOTE LCD End of Frame wakeup is not supported in LLS and VLLSx modes. NOTE The clock source and power modes are chip-specific. For the clock source and power-mode assignments, see the chapter that describes how modules are configured.
Alternate Clock
A LT DI V
Prescaler
LCLK DUTY
SOURCE
LCDIF
Default Clock = 3 2. 7 68 k Hz
BRATE LADJ
Backplane Sequencer
A LT
BL INK BM ODE
Fault Detection
FDPRS FDBPEN FDSWW FDPIND
8 BP Phases
L CD W avefor m Register s
M UX PEN BPEN V DD
Buffer
VIREG HREFSEL
Charge Pump
V SUPPLY RV EN
CPSEL
V cap1
0.1 F
Vcap2
53.2.1 LCD_P[63:0]
When LCD functionality is enabled by the PEN[63:0] bits in the PEN registers, the corresponding LCD_P[63:0] pin generates a frontplane or backplane waveform depending on the configuration of the backplane-enable bit field (BPEN[63:0]).
LCD general control register (LCD_GCR) LCD auxiliary register (LCD_AR) LCD fault detect control register (LCD_FDCR) LCD fault detect status register (LCD_FDSR) LCD pin enable register (LCD_PENL) LCD pin enable register (LCD_PENH) LCD backplane enable register (LCD_BPENL) LCD backplane enable register (LCD_BPENH) LCD waveform register (LCD_WF3TO0) LCD waveform register (LCD_WF7TO4) LCD waveform register (LCD_WF11TO8) LCD waveform register (LCD_WF15TO12) LCD waveform register (LCD_WF19TO16) LCD waveform register (LCD_WF23TO20) LCD waveform register (LCD_WF27TO24) LCD waveform register (LCD_WF31TO28) LCD waveform register (LCD_WF35TO32) LCD waveform register (LCD_WF39TO36) LCD waveform register (LCD_WF43TO40) LCD waveform register (LCD_WF47TO44)
0835_0003h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h 0000_0000h
LCD waveform register (LCD_WF51TO48) LCD waveform register (LCD_WF55TO52) LCD waveform register (LCD_WF59TO56) LCD waveform register (LCD_WF63TO60)
RVTRIM
HREFSEL
CPSEL
RVEN
0 LADJ 0 1
5
VSUPPLY
Reset
Bit R
0
15
0
14
0
13
0
12
1
11
0
10
0
9
0
8
0
7
0
6
1
4
0
3
1
2
0
1
1
0
ALTDIV
SOURCE
LCDWAIT
LCDSTP
FDCIEN
LCDIEN
LCDEN
LCLK
DUTY
Reset
Reserved This read-only bitfield is reserved and always has the value zero. Regulated voltage trim This 4-bit trim register is used to adjust the regulated input. Each bit in the register has equal weight. The regulated input is changed by 1.5% for each count. Charge pump or resistor bias select Selects the LCD controller charge pump or a resistor network to supply the LCD voltages VLL1, VLL2, and VLL3. 0 1 LCD charge pump is disabled. Resistor network selected. (The internal 1/3-bias is forced.) LCD charge pump is selected. Resistor network disabled. (The internal 1/3-bias is forced.)
23 CPSEL
22 HREFSEL
High reference select When using the VIREG inputs, this bit configures internal circuits to supply VLL1. 0 1 Divide input, VIREG = 1.0 V for 3 V glass. Do not divide the input, VIREG = 1.67 V for 5 V glass.
2120 LADJ
Load adjust The load adjust bits are used to configure the LCD controller to handle different LCD glass capacitance. For CPSEL = 0 Adjust the resistor bias network for different LCD glass capacitance. 00 Low Load (LCD glass capacitance 2000 pF or lower). 01 Low Load (LCD glass capacitance 2000 pF or lower). 10 High Load (LCD glass capacitance 8000 pF or lower). 11 High Load (LCD glass capacitance 8000 pF or lower). Table continues on the next page...
LCD frame frequency interrupt enable Enables an LCD interrupt event that coincides with the LCD controller frame frequency. 0 1 No interrupt request is generated by this event. When LCDIF bit is set, this event causes an interrupt request.
14 FDCIEN
LCD fault detection complete interrupt enable Enables an LCD interrupt event when fault detection is completed. 0 1 No interrupt request is generated by this event. When a fault is detected and FDCF bit is set, this event causes an interrupt request.
1312 ALTDIV
LCD alternate clock divider This bit is used as a clock divider to divide the alternate clock before it is selected as LCD clock source. 0 1 2 3 Divide factor = 1 (No divide) Divide factor = 8 Divide factor = 64 Divide factor = 512 Table continues on the next page...
LCD driver, charge pump, resistor bias network, and voltage regulator while in Stop mode. 0 1 Allows the LCD driver, charge pump, resistor bias network, and voltage regulator to continue running during Stop mode. Disables the LCD driver, charge pump, resistor bias network, and voltage regulator when MCU goes into Stop mode.
7 LCDEN
LCD driver enable LCDEN starts LCD controller waveform generator. 0 1 All frontplane and backplane pins are disabled. The LCD controller system is also disabled, and all LCD waveform generation clocks are stopped. VLL3 is connected to VDD internally. LCD controller driver system is enabled, and frontplane and backplane waveforms are generated. All LCD pins, LCD_Pn, enabled using the LCD pin enable register, output an LCD driver waveform.The backplane pins output an LCD driver backplane waveform based on the settings of DUTY[2:0]. Charge pump or resistor bias is enabled.
6 SOURCE
LCD clock source select The LCD controller has two possible clock sources. This bit is used to select which clock source is the basis for LCD clock. NOTE: The clock sources are chip-specific. For the clock source assignments, see the chapter that describes how modules are configured. 0 1 Selects the default clock as the LCD clock source. Selects the alternate clock as the LCD clock source.
53 LCLK
LCD clock prescaler Used as a clock divider to generate the LCD controller frame frequency. LCD controller duty-cycle configuration is used to determine the LCD controller frame frequency. LCD controller frame frequency calculations are provided in LCD controller base clock and frame frequency. LCD controller frame frequency = * Y) where: 30 < LCD clock < 39.063 kHz Y = 2, 2, 3, 3, 4, 5, 8, 16 chosen by module duty cycle configuration Table continues on the next page... LCD clock/ ((DUTY + 1) * 8 * (4 + LCLK[2:0])
Reset
Bit
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
LCDIF
ALT
BMODE
BLANK
0 BLINK
BRATE
w1c
Reset
Reserved This read-only bitfield is reserved and always has the value zero. Blink command Starts or stops LCD controller blinking. 0 1 Disables blinking. Starts blinking at blinking frequency specified by LCD blink rate calculation.
6 ALT
Alternate display mode For four backplanes or less, the LCD backplane sequencer changes to output an alternate display. ALT bit is ignored if DUTY[2:0] is 101 or greater. 0 1 Normal display mode. Alternate display mode.
5 BLANK
Blank display mode Asserting this bit clears all segments in the LCD display. 0 1 Normal or alternate display mode. Blank display mode.
4 Reserved 3 BMODE
Reserved This read-only bit is reserved and always has the value zero. Blink mode Selects the blink mode displayed during the blink period. 0 1 Display blank during the blink period. Display alternate display during blink period (Ignored if duty is 5 or greater).
20 BRATE
Blink-rate configuration Selects frequency at which the LCD display blinks when the BLINK bit is asserted. The following equation provides an expression for the LCD controller blink rate and shows how BRATE bit field is used in the LCD blink-rate calculation. LCD controller blink rate = LCD clock / 2(12
+ BRATE)
Reset
Bit R
0
15
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FDBPEN
FDEN
0 FDPRS FDSWW
FDPINID
Reset
Fault detect sample window width Table continues on the next page...
Reserved This read-only bit is reserved and always has the value zero. Fault detect enable If LCDEN is 1, asserting FDEN inserts a test frame after normal LCD refresh frame is completed. After the test frame is done, Fault detection complete flag (FDCF) is set. When the test frame is done, a normal LCD refresh frame starts. FDEN is one-shot register, it clears after FDCF is set. To initiate another fault detection, FDEN must be set again. 0 1 Disable fault detection. Enable fault detection.
6 FDBPEN
Fault detect backplane enable Enable "backplane" timing for the fault detect circuit. FDBPEN = 0 generates frontplane timing. This bit specifies the type of pin selected under fault detect test. 0 1 Type of the selected pin under fault detect test is frontplane. Type of the selected pin under fault detect test is backplane.
50 FDPINID
Fault detect pin ID Specifies the LCD pin to be checked by pull-up fault detection. 0 1 ... 63 Fault detection for LCD_P0 pin. Fault detection for LCD_P1 pin. Fault detection for LCD_P63 pin.
Chapter 53 LCD Controller (SLCD) Address: LCD_FDSR 400B_E000h base + Ch offset = 400B_E00Ch
Bit R W 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
Reset
Bit R W
0
15 FDCF w1c
0
14
0
13
0
12
0
11
0
10
0
9
0
8
0
7
0
6
0
5
0
4
0
3
0
2
0
1
0
0
FDCNT
Reset
Reserved This read-only bitfield is reserved and always has the value zero. Fault detect counter Contains how many one/high are sampled inside the fault detect sample window. 0 1 2 ... 254 255 No "one" samples. 1 "one" samples. 2 "one" samples. 254 "one" samples. 255 or more "one" samples. The FDCNT can overflow. Therefore, FDSWW and FDPRS must be reconfigured for proper sampling.
NOTE The reset value of this register depends on the reset type: POR -- 0x0000_0000
Addresses: LCD_PENL 400B_E000h base + 10h offset = 400B_E010h LCD_PENH 400B_E000h base + 14h offset = 400B_E014h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PEN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
BPEN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Memory map and register definition Address: LCD_WF3TO0 400B_E000h base + 20h offset = 400B_E020h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WF3 0 0 0 0 0 0 0 0 0 0 0
WF2 0 0 0 0 0 0 0 0
WF1 0 0 0 0 0 0 0 0
WF0 0 0 0 0 0
WF7 0 0 0 0 0 0 0 0 0 0 0
WF6 0 0 0 0 0 0 0 0
WF5 0 0 0 0 0 0 0 0
WF4 0 0 0 0 0
WF11 0 0 0 0 0 0 0 0 0 0 0
WF10 0 0 0 0 0 0 0 0
WF9 0 0 0 0 0 0 0 0
WF8 0 0 0 0 0
NOTE The reset value of this register depends on the reset type: POR -- 0x0000_0000
Address: LCD_WF15TO12 400B_E000h base + 2Ch offset = 400B_E02Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WF15 0 0 0 0 0 0 0 0 0 0 0
WF14 0 0 0 0 0 0 0 0
WF13 0 0 0 0 0 0 0 0
WF12 0 0 0 0 0
WF19 0 0 0 0 0 0 0 0 0 0 0
WF18 0 0 0 0 0 0 0 0
WF17 0 0 0 0 0 0 0 0
WF16 0 0 0 0 0
WF23 0 0 0 0 0 0 0 0 0 0 0
WF22 0 0 0 0 0 0 0 0
WF21 0 0 0 0 0 0 0 0
WF20 0 0 0 0 0
NOTE The reset value of this register depends on the reset type: POR -- 0x0000_0000
Address: LCD_WF27TO24 400B_E000h base + 38h offset = 400B_E038h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WF27 0 0 0 0 0 0 0 0 0 0 0
WF26 0 0 0 0 0 0 0 0
WF25 0 0 0 0 0 0 0 0
WF24 0 0 0 0 0
WF31 0 0 0 0 0 0 0 0 0 0 0
WF30 0 0 0 0 0 0 0 0
WF29 0 0 0 0 0 0 0 0
WF28 0 0 0 0 0
WF35 0 0 0 0 0 0 0 0 0 0 0
WF34 0 0 0 0 0 0 0 0
WF33 0 0 0 0 0 0 0 0
WF32 0 0 0 0 0
NOTE The reset value of this register depends on the reset type: POR -- 0x0000_0000
Address: LCD_WF39TO36 400B_E000h base + 44h offset = 400B_E044h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WF39 0 0 0 0 0 0 0 0 0 0 0
WF38 0 0 0 0 0 0 0 0
WF37 0 0 0 0 0 0 0 0
WF36 0 0 0 0 0
WF43 0 0 0 0 0 0 0 0 0 0 0
WF42 0 0 0 0 0 0 0 0
WF41 0 0 0 0 0 0 0 0
WF40 0 0 0 0 0
WF47 0 0 0 0 0 0 0 0 0 0 0
WF46 0 0 0 0 0 0 0 0
WF45 0 0 0 0 0 0 0 0
WF44 0 0 0 0 0
NOTE The reset value of this register depends on the reset type: POR -- 0x0000_0000
Address: LCD_WF51TO48 400B_E000h base + 50h offset = 400B_E050h
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WF51 0 0 0 0 0 0 0 0 0 0 0
WF50 0 0 0 0 0 0 0 0
WF49 0 0 0 0 0 0 0 0
WF48 0 0 0 0 0
WF55 0 0 0 0 0 0 0 0 0 0 0
WF54 0 0 0 0 0 0 0 0
WF53 0 0 0 0 0 0 0 0
WF52 0 0 0 0 0
WF59 0 0 0 0 0 0 0 0 0 0 0
WF58 0 0 0 0 0 0 0 0
WF57 0 0 0 0 0 0 0 0
WF56 0 0 0 0 0
Functional description
NOTE The reset value of this register depends on the reset type: POR -- 0x0000_0000
Address: LCD_WF63TO60 400B_E000h base + 5Ch offset = 400B_E05Ch
Bit R W Reset 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
WF63 0 0 0 0 0 0 0 0 0 0 0
WF62 0 0 0 0 0 0 0 0
WF61 0 0 0 0 0 0 0 0
WF60 0 0 0 0 0
Power-supply configurations Fault detection configuration The LCD controller also provides an LCD pin enable control. Setting the LCD pin enable bit in the PENn register for a particular LCD_Pn pin enables the LCD controller functionality of that pin once the LCDEN bit is set. When the backplane enable bit in the BPENn is set, the associated pin operates as a backplane. The WFyTOx registers can then activate (display) the corresponding LCD segments on an LCD panel. The WFyTOx registers control the on/off state for the segments controlled by the LCD pins defined as front planes and the active phase for the backplanes. Blank display modes do not use the data from the WFyTOx registers. When using the WFyTOx register for frontplane operation, writing a 0 turns the segment off. For pins enabled as backplane, the bits in WFn fields assign the phases of the backplane (A-H) for the corresponding backplane pin. For a detailed description of LCD controller operation for a basic seven-segment LCD display, see LCD seven segment example description.
Functional description
LCLK[2:0]
(2 12
Alternate Clock
BRATE[2:0])
Blink Frequency
4 6(2LADJ[1:0])
ALTDIV
LCDCLK
2 x (4 LCLK[2:0]) x Y)
LCD Base Clock
(DUTY+1)
LADJ[1:0]
An external 32.768 kHz clock input is required to achieve lowest power consumption.
Functional description
The value of LCLK is important because it is used to generate the LCD controller frame frequency. The following two tables show LCD controller frame frequency calculations that consider several possible LCD controller configurations of LCLK[2:0] and DUTY[2:0]. The LCD controller frame frequency is defined as the number of times the LCD segments are energized per second. The LCD controller frame frequency must be selected to prevent the LCD display from flickering (LCD controller frame frequency is too low) or ghosting (LCD controller frame frequency is too high). To avoid these issues, an LCD controller frame frequency in the range of 28 to 58 Hz is required. LCD controller frame frequencies less than 28 Hz or greater than 58 Hz are out of specification, and so are invalid. Selecting lower values for the LCD base and frame frequency results in lower current consumption for the LCD controller. The LCD controller base clock frequency is the LCD controller frame frequency multiplied by the number of backplane phases that are being generated. The number of backplane phases is selected using the DUTY[2:0] bits. The LCD controller base clock is used by the backplane sequencer to generate the LCD waveform data for the enabled phases (A-H).
Table 53-31. LCD controller frame frequency calculations for clock input ~ 32.768 kHz
Duty cycle Y LCLK[2:0] 0 1 2 3 4 5 6 7 64 51.2 42.7 36.6 32 28.4 25.6 23.3 64 51.2 42.7 36.6 32 28.4 25.6 23.3 68.3 54.6 45.5 39 34.1 30.3 27.3 24.8 64 51.2 42.7 36.6 32 28.4 25.6 23.3 68.3 54.6 45.5 39 34.1 30.3 27.3 24.8 56.9 45.5 37.9 32.5 28.4 25.3 22.8 20.7 73.1 58.5 48.8 41.8 36.6 32.5 29.3 26.6 64 51.2 42.7 36.6 32 28.4 25.6 23.3 1/1 16 1/2 8 1/3 5 1/4 4 1/5 3 1/6 3 1/7 2 1/8 2
Table 53-32. LCD controller frame frequency calculations for clock input ~ 39.063 kHz
Duty cycle Y LCLK[2:0] 0 1 2 3 4 5 6 7 76.3 61 50.9 43.6 38.1 33.9 30.5 27.7 76.3 61 50.9 43.6 38.1 33.9 30.5 27.7 81.4 65.1 54.3 46.5 40.7 36.2 32.6 29.6 76.3 61 50.9 43.6 38.1 33.9 30.5 27.7 81.4 65.1 54.3 46.5 40.7 36.2 32.6 29.6 67.8 54.3 45.2 38.8 33.9 30.1 27.1 24.7 87.2 69.8 58.1 49.8 43.6 38.8 34.9 31.7 76.3 61 50.9 43.6 38.1 33.9 30.5 27.7 1/1 16 1/2 8 1/3 5 1/4 4 1/5 3 1/6 3 1/7 2 1/8 2
NOTE The shaded entries in above tables are out of specification and invalid.
53.4.1.4.1
Duty=1/2:DUTY[2:0] = 001 LCD_P[1:0] enabled as backplanes: BPEN0 =1 and BPEN1 =1 in the BPEN0 LCD_P0 assigned to Phase A: WF0 = 0x01 LCD_P1 assigned to Phase B: WF1 = 0x02, WF1TO0 = 0x00000201
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1685
Functional description
1 Frame
Phase B A
Phase B A
Phase B A
Phase B A
Base_Clk
Frame Interrupt
LCD_P0/BP0
VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL1 VLL2 VLL3 VLL3 VLL2 VLL1 0 VLL1 VLL2 VLL3
LCD_P1/BP1
BP0-FPn (OFF)
BP1-FPn (ON)
53.4.1.4.2
Duty = 1/4: DUTY[2:0] = 011 LCD_P[3:0] enabled as backplanes: BPEN0 = 0x0F LCD_P0 assigned to Phase A: WF0 = 0x01 LCD_P1 assigned to Phase B: WF1 = 0x02 LCD_P2 assigned to Phase C: WF2 = 0x04 LCD_P3 assigned to Phase D: WF3 = 0x08, , WF3TO0 = 0x08040201
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1686 Freescale Semiconductor, Inc.
1 Frame A Base_Clk B
C
Phase D A
Phase D A
Frame Interrupt VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL1 VLL2 VLL3 VLL3 VLL2 VLL1 0 VLL1 VLL2 VLL3
LCD_P0/BP0
LCD_P1/BP1
LCD_P2/BP2
LCD_P3/BP3
WFn(0x09) =00001001
BP0FPn (ON)
BP1FPn (OFF)
53.4.1.4.3
Duty = 1/8:DUTY[2:0] = 111 LCD_P[7:0] enabled as backplanes: BPEN0 = 0xFF LCD_P0 assigned to Phase A: WF0 = 0x01 LCD_P1 assigned to Phase B: WF1 = 0x02
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1687
Functional description
LCD_P2 assigned to Phase C: WF2 = 0x04 LCD_P3 assigned to Phase D: WF3 = 0x08 LCD_P4 assigned to Phase E: WF4 = 0x10 LCD_P5 assigned to Phase F: WF5 = 0x20 LCD_P6 assigned to Phase G: WF6 = 0x40 LCD_P7 assigned to Phase H: WF7 = 0x80, WF7TO4 = 0x80402010, WF3TO0 =0x08040201
1 Frame
A Base_Clk
Phase E D
Phase D E
H VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL3 VLL2 VLL1 0 VLL1 VLL2 VLL3 VLL3 VLL2 VLL1 0 VLL1 VLL2 VLL3
LCD_P0/BP0
LCD_P1/BP1
LCD_P2/BP2
LCD_P3/BP3
LCD_P4/BP4
LCD_P5/BP5
LCD_P6/BP6
LCD_P7/BP7
WFn(0x69)
BP0FPn (ON)
BP1FPn (OFF)
Functional description
The LCD segments are controlled by the data placed in the WFyTOx registers, as described in the preceding section.
Blank display mode
The WF data is bypassed and the frontplane and backplane pins are configured to clear all segments.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
1690 Freescale Semiconductor, Inc.
The backplane sequence is modified for duty cycles of 1/4, 1/3, 1/2, and 1/1. For four backplanes or less, the backplane sequence is modified as shown below. The altered sequence allows two complete displays to be placed in the WFyTOx registers. The first display is placed in phases A-D and the second in phases E-H in the case of four backplanes. If the LCD duty cycle is five backplanes or greater, the ALT bit is ignored and creates a blank display. Refer to Table 53-35 for additional information. NOTE For alternate display modes, both the segment data and the backplane configuration must be configured for both the upper and lower nibble. For Example, if LCD_P0 is configured as backplane 0 (phase A) then for proper operation in Alternate Display mode, the WF3TO0 should be set to 0x00000011 to set both BPEWF0 and BPAWF0. Using the alternate display function an inverse display can be accomplished for x4 mode and less by placing inverse data in the alternate phases of the WFyTOx registers.
Table 53-34. Alternate display backplane sequence
Duty 1/1 1/2 1/3 1/4 Backplane sequence A AB ABC ABCD Alt. backplane sequence E EF EFG EFGH
Functional description
1. For alternate display modes, both the segment data and the backplane configuration must be configured for both the upper and lower nibble. For Example, if LCD_P0 is configured as backplane 0 (phase A) then for proper operation in Alternate Display mode, the WF3to0 should be set to 0x00000011 to set both BPEWF0 and BPAWF0.
VSUPPLY[1:0] indicates the state of internal signals used to configure power switches as shown in the table in the following figure. The block diagram in the following figure illustrates several potential operational modes for the LCD controller including configuration of the LCD controller power supply source using VDD, internal regulated voltage VIREG or an external supply on the VLL3 . VLL3 should never be externally driven to any level other than VDD. Upon Reset the VSUPPLY[1:0] bits are configured to connect VLL3 to VDD. This configuration should be changed to match the application requirements before the LCD controller is enabled.
VDD
powersw1 powersw2
~CPSEL
VIREG
HREFSEL
~CPSEL
RVEN
~CPSEL
VLL1
VLL2 VLL3
Figure 53-32. LCD charge pump block diagram Table 53-37. LCD power supply configuration options
VSUPPLY[1:0] 00 Configuration Drive VLL2 internally from VDD Table continues on the next page... powersw1 1 powersw2 0
Functional description
Note The charge pump is optimized for 1/3 bias mode operation only. The charge pump requires external capacitance for its operation. To provide this external capacitance, the Vcap1 and Vcap2 external pins are provided. It is recommended that a ceramic capacitor be used. Proper orientation is imperative when using a polarized capacitor. The recommended value for the external capacitor is 0.1 F.
For 3 V glass operation, VDD must be equal to 2 V. For 5 V glass operation, VDD must be equal to 3.33 V. Charge pump is used to generate VLL1 and VLL3. 00 X 1 0
For 3 V glass operation, VDD must be equal to 3 V. For 5 V glass operation, VDD must be equal to 5 V. Charge pump is used to generate VLL1 and VLL2. 01 X 1 0
For 3 V glass operation, VLL3 must be equal to 3 V. Charge pump is used to generate VLL1 and VLL2. For 5 V glass operation, VLL3 must be equal to 5 V. Charge pump is used to generate VLL1 and VLL2.
11
VLL3 is driven externally for 5 V LCD glass opera tion. VLL3 must be equal to VDD. This operation is not al lowed for 1.8 V to 3.6 V parts. VLL3 is driven externally for 3 V LCD glass opera tion.
11
Charge pump is disabled. Resistor Bias Network en Resistor Bias network is used to create abled. VLL1 and VLL2. VLL3 is driven externally for 5 V LCD glass opera tion. Resistor Bias net work enabled. VLL3 must be equal to VDD. This operation is not al lowed for 1.8 V to 3.6 V parts. For 5 V glass operation VLL3 must be equal to 5 V. Charge pump is disabled. Resistor Bias network is used to create VLL1 and VLL2.
11
RVEN 0 0 0
Functional description
VIREG is connected to VLL1 For 5 V glass operation, HREFSEL = 1, for 5 V glass operation. VIREG = 1.67 V. The HREFSEL bit is used to select 1.0 V or 1.67 V range for VIREG. VIREG is connected to VLL1 internally. Charge pump is used to generate VLL2 and VLL3. . 11 1 1 1
VIREG is connected to VLL1 For 3 V glass operation, HREFSEL= 0, for 3 V glass operation. VIREG = 1 V. The HREFSEL bit is used to select 1.0 V or 1.67 V range for VIREG VIREG is connected to VLL1 internally. Charge pump is used to generate VLL2 and VLL3. . 11 0 1 1
53.4.4.1.1
When VSUPPLY[1:0] = 11, powersw1, powersw2, are deasserted. VDD is not available to power the LCD controller internally, so the LCD controller requires an external power source for VLL1, VLL2, and VLL3 when the charge pump is disabled. If the charge pump is enabled, external power must be applied to VLL3. With this configuration, the charge pump generates the other LCD bias voltages VLL1 and VLL2. Internal VIREG If the charge pump is enabled, the internal regulated voltage, VIREG, can be used as an input to generate the LCD bias voltages. In this state, external voltage source should not be connected to VLL1, VLL2, or VLL3. VIREG is controlled by the LCD general control register (GCR). Figure 53-32 shows that VIREG is connected to VLL1 when the RVEN bit is set. VLL1 is connected to the internal charge pump. Using the charge pump, the value of VLL1 is tripled and output as VLL3. For 3 V LCD glass, VLL3 should be approximately 3 V; while for 5 V LCD glass, VLL3 should be approximately 5 V. The HREFSEL bit in the GCR is used to set VIREG to approximately 1.0 V or 1.67 V as shown in the following table. The GCR contains trim bits that can be used to make changes to the regulated voltage. The trim can be used to increase or decrease the regulated voltage by 1.5% for each count. A total of 12% of change can be done to the regulated voltage.
RVEN
The following table shows the selected LCD bias voltages VLL1, VLL2, and VLL3 values based on the value of VIREG.
Table 53-39. Bias voltage typical values
HREFSELL HREFSEL = 0 HREFSEL = 1 VIREG 1.0 V 1.67 V VLL1 = Vref 1.0 V 1.67 V VLL2= 2 Vref 2.0 V 3.33 V VLL3 = 3 Vref 3.0 V 5.0 V
53.4.4.1.2
VDD is used as the LCD controller power supply when VSUPPLY[1:0] = 00 or 11 (as shown in the following table ). When powering the LCD controller using VDD, the charge pump must be enabled (CPSEL = 1). The following table provides recommendations regarding configuration of the VSUPPLY[1:0] bit field when using both 3 V and 5 V LCD panels.
Table 53-40. VDD switch option
VSUPPLY[1:0] 00 VDD switch option VLL2 is generated from VDD Recommend use for 3 V LCD panels Invalid LCD configuration Recommend use for 5 V LCD panels VLL1 = 1.67 V VDD = VLL2 = 3.3 V VLL3 = 5 V 01 VLL3 is generated from VDD VLL1 = 1 V VLL2 = 2 V VDD = VLL3 = 3 V Invalid LCD configuration
53.4.5 Resets
During a reset, the LCD controller is configured in the default mode. The default mode includes the following settings: LCDEN is cleared, thereby forcing all frontplane and backplane driver outputs to the high impedance state. 1/4 duty
Functional description
1/3 bias LCLK[2:0], VSUPPLY[1:0], CPSEL, RVEN, and BRATE[2:0] revert to their reset values, VLL3 is internally connected to VDD
53.4.6 Interrupts
When an LCD controller frame-frequency interrupt event occurs, the LCDIF bit in the AR is asserted. The LCDIF bit remains asserted until software clears the LCD controller frame frequency interrupt. The interrupt can be cleared by software writing a 1 to the LCDIF bit. The LCD controller frame frequency interrupt is not available in all low power modes. If both the LCDIF bit in the AR and the LCDIEN bit in the GCR are set, an LCD interrupt signal asserts. When a fault detection complete event occurs, FDCF bit is set. the FDCF bit remains asserted until software writes 1 to clear. if both FDCF and FDCIEN bits are set, an LCD interrupt signal is asserted.
VSS
VSS
VSS
VSS pull up
pull up
VDD
pull up
oben 1->0
pull up
PAD_In
pull up pull up
Vpad
VDD
Rpull-up Csegments
VSS
VDD Vt
Most failures, where a LCD segment is either unexpectedly on or off, result in an erroneous information that can mislead a user and cause a dangerous situation. The LCD Display Fault Detect circuit's (LFD) function finds faults in the LCD display, display connector, and board connections between the MCU and the display.
Functional description
VSS
VSS
VSS
VDD
pull up
pull up
oben 1->0
VSS
Vt
Csegments
t If theres any open case in connection or panel, the C segments will become smaller, which makes the pull-up time less
VSS
VSS
VSS
VDD
pull up
oben 1->0
pull up
shorten case
0000000000000000000
If theres any short case between BP and FP, Vpad wi ll be shorten to VSS and never be pulled up.
This circuit works by measuring the capacitance of the LCD frontplane (FP) or backplane (BP) connection and comparing it to a reference number. This reference number is usually measured at the user's production facility (by this circuit) and stored for later comparison in the flash. The comparison must account for fluctuations due to temperature, voltage, and other environmental effects. Intelligent software may be able to account for these effects more accurately by using time-dependent algorithms; but the basic comparison to a factory-measured number should be sufficient for most applications. This circuit can measure the following: FP or BP rise time response changes, including pad, pin, board, and all pixels connected to the measured FP or BP.
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1701
Functional description
Short circuits in the FP or BP connection (all silicon or board locations), see Figure 53-35. Excessive leakage in the FP or BP connection (silicon or board). Supply connectivity through the driver for the VSS level. Opens in the FP or BP connection (bondwire, package, silicon, or board), see Figure 53-35. The purpose of this circuit is not to: Measure independent pixel capacitances. Measure voltage levels or contrast. Measure the open connections between the FP/BP and the VLL1, VLL2, and VLL3 drivers. If there is any open case in connection or panel, the Csegments becomes smaller, which changes the rise time response. Pullup fault detection can be performed while LCDEN is asserted. 1. Set the target pin number by writing FDCR[FDPINID[5:0]]. 2. Set FDCR[FDBPEN], if the target pin is working as BP. Or set FDCR[FDBPEN] as 0, if the target pin is working as FP. 3. Select the sample clock frequency by setting FDCR[FDPRS[2:0]]. 4. Set the sample window by writing to FDCR[FDSWW[2:0]]. 5. Enable the detection by writing 1 to FDCR[FDEN]. 6. Waiting until the FDSR[FDCF] bit is asserted (by polling or by interrupt). 7. Read the FDSR[FDCNT]. 8. Write 1 to clear FSCR[FDCF].
pad pull up enable all BP LCD pins output enable all BP LCD pins
pull up enable all FP LCD pins
output enable all FP LCD pins reversed wavefrom for purpose of no DC Vss
Vdd with pull up
Vss
Functional description
pad pull up enable all FP LCD pins output enable all FP LCD pins
pull up enable all BP LCD pins
output enable all BP LCD pins reversed wavefrom for purpose of no DC Vss
Vdd with pull up
LCD[FDPINID]
Note The voltage waveforms applied to the LCD electrodes must have no DC component. Therefore, a reversed pullup voltage waveform should be applied before the pullup detect waveform. Fault detection occupies one frame and the pullup time is halfframe duration. You must ensure that the fault detection window set by the sample window width is less than half-frame duration.
Initialization section
l. Select and configure LCD frame frequency (LCLK[2:0]). 2. AR a. Configure display mode (ALT and BLANK bits). b. Configure blink mode (BMODE). c. Configure blink frequency (BRATE[2:0]). 3. PENn a. Enable LCD controller pins (PEN[63:0] bits). 4. BPENn a. Enable LCD pins to operate as an LCD backplane (BPEN[63:0]). 5. WFyTOx a. Initialize WFyTOx registers with backplane configuration and an initial display screen. 6. GCR a. Enable LCD controller (LCDEN bit).
3.3 V
5V
100
50 Hz
Alternate 0.5 Hz
These examples illustrate the flexibility of the LCD controller to be configured to meet a wide range of application requirements including: Clock inputs/sources LCD power supply LCD glass operating voltage LCD segment count Varied blink modes/frequencies LCD frame rate
None
The table below lists the setup values required to initialize the LCD as specified by example 1:
Initialization section
Alternate 0.5 Hz
The table below lists the required setup values required to initialize the LCD as specified by example 2:
Initialization section
Blank 2.0 Hz
The table below lists the required setup values required to initialize the LCD as specified by example 3:
Table 53-47. Initialization register values for example 3
Register GCR Bit or bit field CPSEL LADJ[1:0] Binary value 1 00 Comment Enable charge pump. Adjust the resistor bias network for different LCD glass capacitance. or Configure LCD charge pump clock source. VSUPPLY[1:0] LCDIEN LCDWAIT LCDSTP LCDEN SOURCE LCLK[2:0] DUTY[2:0] RVEN RVTRIM[3:0] AR BLINK ALT BLANK BMODE BRATE[2:0] 11 0 0 0 0 0 101 111 1 XXXX X X X 0 010 When VSUPPLY[1:0] = 11, the LCD can be powered via VLL3 (see Table 53-38 ). LCD Frame Interrupts disabled. LCD is "off" in Wait mode. LCD is "off" in Stop mode. Initialization is done before initializing the LCD controller. Selects LCD clock source (32.768 kHz crystal). For 1/8 duty cycle, select closest value to the desired 30 Hz LCD frame frequency (see Table 53-31 ). For 168 segments (8x21), select 1/8 duty cycle. Enable VIREG so it can be used to supply the LCD. Trim value is determined by characterization. Blinking is turned on or off during LCD operation. Alternate bit is configured during LCD operation. Blank bit is configured during LCD operation. Blink to a blank mode. Select 2 Hz blink frequency using Table 53-36 .
Application information
Display Mode Select Blink Enable and Command Blink Mode Select
AR
ALT BLANK
BMODE
LCD_P[28:4] LCD_P[3:0]
Segment Energize
WFyTOx WFn
GCR
AR
LCDIEN
LCDIF
Initialization Options
Module Enable GCR LCDEN Input Clock Source
GCR SOURCE
Frame Frequency
GCR LCLK[2:0] DUTY[2:0] Blink Rate & Mode AR BMODE BRATE[2:0] Backplane Assignment WFyTOx WFn
CTYP = 0.1F
Low Power GCR LCDWAIT LCDSTP Backplane Enable BPEN[3 :0] BPEN[63:0] Vcap1 0.1 F Vcap2
Application information
LCD_P5 and 3 frontplane pins (LCD_P0, LCD_P1, and LCD_P2) WFyTOx registers contents and output waveforms are also shown. Output waveforms are illustrated in the following two figures.
FP Connection a BP Connection a BP0 (a, b COMMONED) )
g f d
FP2 (b, c COMMONED) FP1 (a, d, g COMMONED) FP0 (e, f COMMONED) The above segment assignments are provided by the specification for the LCD glass for this example. For this LCD controller any of the LCD pins can be configured to be Frontplane 0-2 or Backplane 0-2. For this example, set LCD_P0 as FP0, LCD_P1 as FP1, and LCD_P2 as FP2. For this example, set LCD_P3 as BP0, LCD_P4 as BP1 and LCD_P5 as BP2. Backplane assignment is done in the LCD waveform registers as shown below: WF3 WF4 WF5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0
With the above conditions the segment assignment is shown below: WF0 WF1 WF2 e d f g c a b
To display the character "4": WF0 = XXXXX01X, WF1 = XXXXX010, WF2 =XXXXXX11 WF0 WF1 WF2 X X X X X X X X X X X X X X X 0 0 X 1 1 1 X f 0 e 1 a g d b c
X = don't care
V2 V1 V0 V3
LCD_P0/FP0
V2 V1 V0 V3
LCD_P1/FP1
LCD_P2/FP2
V2 V1 V0
Application information
VLL3 V2 V1
BP1FP0
V0 V1 V2 V3
BP2FP0
V0 V1 V2 V3
NOTE: Contrast control configuration when LCD is powered using internal VDD
LCD_P[28:8] LCD_P[7:0]
Power Supply
IC
VLL3 VLL2
VDD
R
Vcap1
Vcap2
Application information
Introduction
54.2 Introduction
The JTAGC block provides the means to test chip functionality and connectivity while remaining transparent to system logic when not in test mode. Testing is performed via a boundary scan technique, as defined in the IEEE 1149.1-2001 standard. All data input to and output from the JTAGC block is communicated in serial format.
TMS
TCK
TDI
Boundary Scan Register 5-Bit TAP Instruction Decoder
TDO
54.2.2 Features
The JTAGC block is compliant with the IEEE 1149.1-2001 standard, and supports the following features: IEEE 1149.1-2001 Test Access Port (TAP) interface 4 pins (TDI, TMS, TCK, and TDO) An 4-bit instruction register that supports several IEEE 1149.1-2001 defined instructions as well as several public and private device-specific instructions. Refer to JTAGC Block Instructions for a list of supported instructions. The size of the Instruction register is parameterized to support a different mix of instructions. Test data registers: a bypass register, a boundary scan register, and a device identification register. A TAP controller state machine that controls the operation of the data registers, instruction register and associated circuitry.
54.2.3.1 Reset
The JTAGC block is placed in reset when either power-on reset is asserted, JCOMP is negated, or the TMS input is held high for enough consecutive rising edges of TCK to sequence the TAP controller state machine into the Test-Logic-Reset state. Holding TMS high for 5 consecutive rising edges of TCK guarantees entry into the Test-Logic-Reset state regardless of the current TAP controller state. Asserting power-on reset or setting JCOMP to a value other than the value required to enable the JTAGC block results in asynchronous entry into the reset state. While in reset, the following actions occur:
The TAP controller is forced into the Test-Logic-Reset state, thereby disabling the test logic and allowing normal operation of the on-chip system logic to continue unhindered The instruction register is loaded with the IDCODE instruction
1. TDO output buffer enable is negated when the JTAGC is not in the Shift-IR or Shift-DR states. A weak pull may be implemented at the TDO pad for use when JTAGC is inactive.
Register Definition
1. The Reset value for the Instruction Register will automatically be IDCODE.
PRN Part Revision Number Bits [31:28] contain the revision number of the part. DC Design Center Bits [27:22] indicate the design center. PIN Part Identification Number Bits [21:12] contain the part number of the device. MIC Manufacturer Identity Code
K40 Sub-Family Reference Manual, Rev. 3, 4 Nov 2010
Freescale Semiconductor, Inc. 1725
Functional Description
Bits [11:1] contain the reduced Joint Electron Device Engineering Council (JEDEC) ID. Bit [0] IDCODE Register ID Bit [0] identifies this register as the device identification register and not the bypass register
LSB TDO
Functional Description
RUN-TEST/IDLE
0
SELECT-DR-SCAN
0 1
CAPTURE-DR
0
1
CAPTURE-IR
SHIFT-DR 0 1 1 EXIT1-DR
SHIFT-IR
0 1 1
EXIT1-IR
PAUSE-DR 0 1 0
PAUSE-IR
0 1
EXIT2-DR
EXIT2-IR
UPDATE-DR
UPDATE-IR
1 0
1 0
NOTE: The value shown adjacent to each state transition in this figure represents the value of TMS at the time of a rising edge of TCK.
Functional Description
Reserved 1
1. The manufacturer reserves the right to change the decoding of reserved instruction codes in the future
sampled data is viewed by shifting it through the boundary scan register to the TDO output during the Shift-DR state. Both the data capture and the shift operation are transparent to system operation. Secondly, the PRELOAD portion of the instruction initializes the boundary scan register cells before selecting the EXTEST or CLAMP instructions to perform boundary scan tests. This is achieved by shifting in initialization data to the boundary scan register during the Shift-DR state. The initialization data is transferred to the parallel outputs of the boundary scan register cells on the falling edge of TCK in the Update-DR state. The data is applied to the external output pins by the EXTEST or CLAMP instruction. System operation is not affected.
Initialization/Application Information
1. Set the JCOMP signal to the JTAGC enable value, thereby enabling the JTAGC TAP controller 2. Load the appropriate instruction for the test or action to be performed
Initialization/Application Information
Web Support:
http://www.freescale.com/support
Information in this document is provided solely to enable system and software implementers to use Freescale Semiconductor products. There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits or integrated circuits based on the information in this document. Freescale Semiconductor reserves the right to make changes without further notice to any products herein. Freescale Semiconductor makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Freescale Semiconductor assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. Typical parameters that may be provided in Freescale Semiconductor data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All operating parameters, including Typicals, must be validated for each customer application by customers technical experts. Freescale Semiconductor does not convey any license under its patent rights nor the rights of others. Freescale Semiconductor products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications intended to support or sustain life, or for any other application in which the failure of the Freescale Semiconductor product could create a situation where personal injury or death may occur. Should Buyer purchase or use Freescale Semiconductor products for any such unintended or unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized use, even if such claim alleges that Freescale Semiconductor was negligent regarding the design or manufacture of the part.
Japan:
Freescale Semiconductor Japan Ltd. Headquarters ARCO Tower 15F 1-8-1, Shimo-Meguro, Meguro-ku, Tokyo 153-0064 Japan 0120 191014 or +81 3 5437 9125 support.japan@freescale.com
Asia/Pacific:
Freescale Semiconductor China Ltd. Exchange Building 23F No. 118 Jianguo Road Chaoyang District Beijing 100022 China +86 10 5879 8000 support.asia@freescale.com Freescale Semiconductor Literature Distribution Center P.O. Box 5405 Denver, Colorado 80217 1-800-441-2447 or +1-303-675-2140 Fax: +1-303-675-2150 LDCForFreescaleSemiconductor@hibbertgroup.com
Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc. ARM is the registered trademark of ARM Limited. ARM Cortex-M4 is the trademark of ARM Limited. All other product or service names are the property of their respective owners. Freescale Semiconductor, Inc. 2010. All rights reserved. K40P144M100SF2RM Rev. 3 11/2010