U s e r ’ s M a n u a l , V 2 . 1, Au g . 2 0 0 8 XC2300 Derivatives 1 6 / 3 2 - B i t S i n g l e -C h i p M i c r o c o n t r o l l e r w i t h 32-Bit Performance V o l u m e 2 ( o f 2 ): P e r i p h e r a l U n i t s M i c r o c o n t r o l l e rs Edition 2008-08 Published by Infineon Technologies AG 81726 Munich, Germany © 2008 Infineon Technologies AG All Rights Reserved. Legal Disclaimer The information given in this document shall in no event be regarded as a guarantee of conditions or characteristics. With respect to any examples or hints given herein, any typical values stated herein and/or any information regarding the application of the device, Infineon Technologies hereby disclaims any and all warranties and liabilities of any kind, including without limitation, warranties of non-infringement of intellectual property rights of any third party. Information For further information on technology, delivery terms and conditions and prices, please contact the nearest Infineon Technologies Office (www.infineon.com). Warnings Due to technical requirements, components may contain dangerous substances. For information on the types in question, please contact the nearest Infineon Technologies Office. Infineon Technologies components may be used in life-support devices or systems only with the express written approval of Infineon Technologies, if a failure of such components can reasonably be expected to cause the failure of that life-support device or system or to affect the safety or effectiveness of that device or system. Life support devices or systems are intended to be implanted in the human body or to support and/or maintain and sustain and/or protect human life. If they fail, it is reasonable to assume that the health of the user or other persons may be endangered. U s e r ’ s M a n u a l , V 2 . 1, Au g . 2 0 0 8 XC2300 Derivatives 1 6 / 3 2 - B i t S i n g l e -C h i p M i c r o c o n t r o l l e r w i t h 32-Bit Performance V o l u m e 2 ( o f 2 ): P e r i p h e r a l U n i t s M i c r o c o n t r o l l e rs XC2300 Derivatives Peripheral Units (Vol. 2 of 2) XC2300 Revision History: V2.1, 2008-08 Previous Version(s): V2.0, 2007-12 V1.0, 2007-06 (XC2000) V0.1, 2007-03, Draft Version Page Subjects (major changes since last revision) 14-1ff Several formal updates and minor description improvements 15-1ff Minor description improvements, ID register added 17-1ff Several formal updates, ID register added We Listen to Your Comments Any information within this document that you feel is wrong, unclear or missing at all? Your feedback will help us to continuously improve the quality of this document. Please send your proposal (including a reference to this document) to: [email protected] User’s Manual V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Summary Of Chapters Summary Of Chapters This User’s Manual consists of two Volumes, “System Units” and “Peripheral Units”. For a quick overview this table of chapters summarizes both volumes, so you immediately can find the reference to the desired section in the corresponding document ([1] or [2]). Summary Of Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0-1 [1] Table Of Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0-2 [1] 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 [1] 2 Architectural Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 [1] 3 Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 [1] 4 Central Processing Unit (CPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 [1] 5 Interrupt and Trap Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 [1] 6 System Control Unit (SCU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 [1] 7 Parallel Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 [1] 8 Dedicated Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 [1] 9 The External Bus Controller EBC . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 [1] 10 Startup Configuration and Bootstrap Loading . . . . . . . . . . . . . . . 10-1 [1] 11 Debug System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-1 [1] 12 Instruction Set Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1 [1] 13 Device Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 [1] 14 The General Purpose Timer Units . . . . . . . . . . . . . . . . . . . . . . . . . 14-1 [2] 15 Real Time Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 [2] 16 Analog to Digital Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-1 [2] 17 Capture/Compare Unit 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1 [2] 18 Capture/Compare Unit 6 (CCU6) . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [2] 19 Universal Serial Interface Channel . . . . . . . . . . . . . . . . . . . . . . . . . 19-1 [2] 20 Controller Area Network (MultiCAN) Controller . . . . . . . . . . . . . . 20-1 [2] Keyword Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-1 [2] Register Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-7 [2] User’s Manual L-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents Table Of Contents This User’s Manual consists of two Volumes, “System Units” and “Peripheral Units”. For your convenience this table of contents (and also the keyword and register index) lists both volumes, so you can immediately find the reference to the desired section in the corresponding document ([1] or [2]). Summary Of Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0-1 [1] Table Of Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0-2 [1] 1 1.1 1.2 1.3 1.4 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 [1] Members of the 16-bit Microcontroller Family . . . . . . . . . . . . . . . . . . . 1-3 [1] Summary of Basic Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5 [1] Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-9 [1] Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-10 [1] 2 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2 2.3 2.4 2.5 2.6 Architectural Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 [1] Basic CPU Concepts and Optimizations . . . . . . . . . . . . . . . . . . . . . . . 2-2 [1] High Instruction Bandwidth/Fast Execution . . . . . . . . . . . . . . . . . . . 2-4 [1] Powerful Execution Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5 [1] High Performance Branch-, Call-, and Loop-Processing . . . . . . . . . 2-6 [1] Consistent and Optimized Instruction Formats . . . . . . . . . . . . . . . . 2-7 [1] Programmable Multiple Priority Interrupt System . . . . . . . . . . . . . . 2-8 [1] Interfaces to System Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9 [1] On-Chip System Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10 [1] On-Chip Peripheral Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-15 [1] Clock Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-32 [1] Power Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-33 [1] On-Chip Debug Support (OCDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-34 [1] 3 3.1 3.2 3.3 3.4 3.4.1 3.4.2 3.5 3.6 3.7 3.8 3.9 3.9.1 Memory Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 [1] Address Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 [1] Special Function Register Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5 [1] Data Memory Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9 [1] Program Memory Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11 [1] Program/Data SRAM (PSRAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-12 [1] Non-Volatile Program Memory (Flash) . . . . . . . . . . . . . . . . . . . . . 3-13 [1] System Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14 [1] IO Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 [1] External Memory Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 [1] Crossing Memory Boundaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17 [1] Embedded Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-18 [1] Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-18 [1] User’s Manual L-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9 3.9.10 3.10 3.10.1 3.10.2 3.10.3 3.11 Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Details of Command Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . Data Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protection Handling Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protection Handling Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . EEPROM Emulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recommendations for Optimized Flash Usage . . . . . . . . . . . . . . . On-Chip Program Memory Control . . . . . . . . . . . . . . . . . . . . . . . . . . Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Reporting Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Retention Memories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.1 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1 4.3.2 4.3.3 4.3.4 4.4 4.5 4.5.1 4.5.2 4.6 4.7 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.8 4.8.1 4.8.2 4.8.3 4.9 4.9.1 Central Processing Unit (CPU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 [1] Components of the CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 [1] Instruction Fetch and Program Flow Control . . . . . . . . . . . . . . . . . . . . 4-5 [1] Branch Detection and Branch Prediction Rules . . . . . . . . . . . . . . . . 4-7 [1] Correctly Predicted Instruction Flow . . . . . . . . . . . . . . . . . . . . . . . . 4-7 [1] Incorrectly Predicted Instruction Flow . . . . . . . . . . . . . . . . . . . . . . . 4-9 [1] Instruction Processing Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-11 [1] Pipeline Conflicts Using General Purpose Registers . . . . . . . . . . . 4-13 [1] Pipeline Conflicts Using Indirect Addressing Modes . . . . . . . . . . . 4-15 [1] Pipeline Conflicts Due to Memory Bandwidth . . . . . . . . . . . . . . . . 4-17 [1] Pipeline Conflicts Caused by CPU-SFR Updates . . . . . . . . . . . . . 4-20 [1] CPU Configuration Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-26 [1] Use of General Purpose Registers . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29 [1] GPR Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-31 [1] Context Switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-33 [1] Code Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-37 [1] Data Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-39 [1] Short Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-39 [1] Long Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-41 [1] Indirect Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-44 [1] DSP Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-46 [1] The System Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-52 [1] Standard Data Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-56 [1] 16-bit Adder/Subtracter, Barrel Shifter, and 16-bit Logic Unit . . . . 4-60 [1] Bit Manipulation Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-60 [1] Multiply and Divide Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-62 [1] DSP Data Processing (MAC Unit) . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-64 [1] MAC Unit Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-65 [1] User’s Manual L-3 3-20 [1] 3-22 [1] 3-25 [1] 3-35 [1] 3-38 [1] 3-45 [1] 3-47 [1] 3-49 [1] 3-49 [1] 3-51 [1] 3-51 [1] 3-53 [1] 3-64 [1] 3-65 [1] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 4.9.2 4.9.3 4.9.4 4.9.5 4.9.6 4.9.7 4.9.8 4.9.9 4.9.10 4.9.11 4.10 Representation of Numbers and Rounding . . . . . . . . . . . . . . . . . . The 16-bit by 16-bit Signed/Unsigned Multiplier and Scaler . . . . . Concatenation Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . One-bit Scaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The 40-bit Adder/Subtracter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Data Limiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Accumulator Shifter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The 40-bit Signed Accumulator Register . . . . . . . . . . . . . . . . . . . . The MAC Unit Status Word MSW . . . . . . . . . . . . . . . . . . . . . . . . . The Repeat Counter MRW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Constant Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.1 5.2 5.3 5.4 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 5.5 5.6 5.7 5.8 5.9 5.10 5.11 Interrupt and Trap Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 [1] Interrupt System Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2 [1] Interrupt Arbitration and Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4 [1] Interrupt Vector Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-11 [1] Operation of the Peripheral Event Controller Channels . . . . . . . . . . 5-20 [1] The PECC Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-20 [1] The PEC Source and Destination Pointers . . . . . . . . . . . . . . . . . . 5-24 [1] PEC Transfer Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-26 [1] Channel Link Mode for Data Chaining . . . . . . . . . . . . . . . . . . . . . . 5-28 [1] PEC Interrupt Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-29 [1] Prioritization of Interrupt and PEC Service Requests . . . . . . . . . . . . 5-31 [1] Context Switching and Saving Status . . . . . . . . . . . . . . . . . . . . . . . . 5-33 [1] Interrupt Node Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-36 [1] External Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-37 [1] OCDS Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-39 [1] Service Request Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-40 [1] Trap Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-42 [1] 6 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.1.7 6.2 6.2.1 6.2.2 6.3 6.3.1 System Control Unit (SCU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 [1] Clock Generation Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2 [1] Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2 [1] Trimmed Current Controlled Wake-up Clock (OSC_WU) . . . . . . . . 6-4 [1] High Precision Oscillator Circuit (OSC_HP) . . . . . . . . . . . . . . . . . . 6-4 [1] Phase-Locked Loop (PLL) Module . . . . . . . . . . . . . . . . . . . . . . . . . 6-5 [1] Clock Control Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-15 [1] External Clock Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-20 [1] CGU Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-23 [1] Wake-up Timer (WUT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-44 [1] Wake-up Timer Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-44 [1] WUT Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-46 [1] Reset Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-49 [1] Reset Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-49 [1] User’s Manual L-4 4-65 [1] 4-66 [1] 4-66 [1] 4-66 [1] 4-66 [1] 4-67 [1] 4-67 [1] 4-68 [1] 4-70 [1] 4-72 [1] 4-74 [1] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.7 6.7.1 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.8.6 6.8.7 6.8.8 6.9 6.9.1 6.9.2 6.9.3 6.10 6.10.1 6.11 6.11.1 6.11.2 6.11.3 6.11.4 6.12 6.12.1 6.12.2 General Reset Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-50 [1] Debug Reset Assertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-53 [1] Coupling of Reset Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-53 [1] Reset Request Trigger Sources . . . . . . . . . . . . . . . . . . . . . . . . . . 6-54 [1] Module Reset Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-56 [1] Reset Controller Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-58 [1] External Service Request (ESR) Pins . . . . . . . . . . . . . . . . . . . . . . . . 6-68 [1] General Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-68 [1] ESR Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-72 [1] ESR Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-76 [1] Power Supply and Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-77 [1] Supply Watchdog (SWD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-79 [1] Monitoring the Voltage Level of a Core Domain . . . . . . . . . . . . . . 6-85 [1] Controlling the Voltage Level of a Core Domain . . . . . . . . . . . . . . 6-92 [1] Handling the Power System . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-102 [1] Global State Controller (GSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-103 [1] GSC Control Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-103 [1] GSC Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-107 [1] Software Boot Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-112 [1] Start-up Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-112 [1] External Request Unit (ERU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-113 [1] Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-113 [1] ERU Pin Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-115 [1] External Request Select Unit (ERSx) . . . . . . . . . . . . . . . . . . . . . 6-119 [1] Event Trigger Logic (ETLx) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-120 [1] Connecting Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-122 [1] Output Gating Unit (OGUy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-123 [1] ERU Output Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-127 [1] ERU Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-129 [1] SCU Interrupt Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-136 [1] Interrupt Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-136 [1] SCU Interrupt Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-137 [1] Interrupt Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-138 [1] Temperature Compensation Unit . . . . . . . . . . . . . . . . . . . . . . . . . . 6-157 [1] Temperature Compensation Registers . . . . . . . . . . . . . . . . . . . . 6-159 [1] Watchdog Timer (WDT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-161 [1] Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-161 [1] Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-161 [1] Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-162 [1] WDT Kernel Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-166 [1] SCU Trap Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-170 [1] Trap Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-170 [1] SCU Trap Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-171 [1] User’s Manual L-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 6.12.3 6.13 6.13.1 6.14 6.14.1 6.14.2 6.15 6.15.1 6.15.2 6.15.3 6.16 6.17 6.17.1 SCU Trap Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory Content Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parity Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Access Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Protection Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . Miscellaneous System Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . System Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Identification Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Marker Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SCU Register Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clock Generation Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7.1 7.1.1 7.1.2 7.1.3 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.3 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 7.3.8 7.3.9 7.3.10 7.3.11 7.3.12 7.3.13 7.4 Parallel Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 [1] General Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2 [1] Basic Port Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2 [1] Input Stage Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5 [1] Output Driver Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5 [1] Port Register Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 [1] Pad Driver Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6 [1] Port Output Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-9 [1] Port Output Modification Register . . . . . . . . . . . . . . . . . . . . . . . . . 7-10 [1] Port Input Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-12 [1] Port Input/Output Control Registers . . . . . . . . . . . . . . . . . . . . . . . . 7-13 [1] Port Digital Input Disable Register . . . . . . . . . . . . . . . . . . . . . . . . . 7-16 [1] Port Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17 [1] Port 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-18 [1] Port 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-19 [1] Port 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-20 [1] Port 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-22 [1] Port 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-23 [1] Port 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-24 [1] Port 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-25 [1] Port 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-26 [1] Port 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-27 [1] Port 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-28 [1] Port 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-29 [1] Port 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-31 [1] Port 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-32 [1] Pin Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-33 [1] 8 Dedicated Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 [1] User’s Manual L-6 6-172 [1] 6-182 [1] 6-182 [1] 6-191 [1] 6-191 [1] 6-194 [1] 6-196 [1] 6-196 [1] 6-197 [1] 6-202 [1] 6-203 [1] 6-209 [1] 6-209 [1] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 9 9.1 9.2 9.2.1 9.2.2 9.2.3 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.3.7 9.3.8 9.3.9 9.4 The External Bus Controller EBC . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 [1] External Bus Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-3 [1] Timing Principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4 [1] Basic Bus Cycle Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4 [1] Bus Cycle Phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-7 [1] Bus Cycle Examples: Fastest Access Cycles . . . . . . . . . . . . . . . . . 9-9 [1] Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-11 [1] Configuration Register Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 9-11 [1] The EBC Mode Register 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-14 [1] The EBC Mode Register 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-16 [1] The Timing Configuration Registers TCONCSx . . . . . . . . . . . . . . 9-17 [1] The Function Configuration Registers FCONCSx . . . . . . . . . . . . . 9-20 [1] The Address Window Selection Registers ADDRSELx . . . . . . . . . 9-23 [1] Ready Controlled Bus Cycles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-26 [1] External Bus Arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-28 [1] Shutdown Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-32 [1] LXBus Access Control and Signal Generation . . . . . . . . . . . . . . . . . 9-33 [1] 10 10.1 10.2 10.2.1 10.2.2 10.2.3 10.2.4 10.3 10.3.1 10.3.2 10.3.3 10.4 10.5 10.5.1 10.6 10.6.1 10.6.2 10.6.3 10.6.4 10.6.5 Startup Configuration and Bootstrap Loading . . . . . . . . . . . . . . . 10-1 [1] Start-Up Mode Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1 [1] Device Status after Start-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-2 [1] Registers modified by the Start-Up Procedure . . . . . . . . . . . . . . . 10-2 [1] System Frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4 [1] Watchdog Timer handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-4 [1] Start-up Error state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-5 [1] Special Start-up Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-6 [1] Supplementary Start-up Information from/to the User . . . . . . . . . . 10-6 [1] Support for Power-saving Modes . . . . . . . . . . . . . . . . . . . . . . . . . 10-8 [1] Preparing to activate Parity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-8 [1] Internal Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 [1] External Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-11 [1] Specific Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-13 [1] Bootstrap Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-14 [1] General Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-14 [1] Bootstrap Loaders using UART Protocol . . . . . . . . . . . . . . . . . . . 10-16 [1] Synchronous Serial Channel Bootstrap Loader . . . . . . . . . . . . . . 10-23 [1] CAN Bootstrap Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-26 [1] Summary of Bootstrap Loader Modes . . . . . . . . . . . . . . . . . . . . . 10-29 [1] 11 11.1 11.1.1 11.2 11.2.1 Debug System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debug Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Routing of Debug Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OCDS Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debug Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User’s Manual L-7 11-1 [1] 11-2 [1] 11-3 [1] 11-5 [1] 11-6 [1] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 11.2.2 11.3 11.3.1 11.4 Debug Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-8 [1] Cerberus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-9 [1] Functional Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-9 [1] Boundary-Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11-11 [1] 12 Instruction Set Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-1 [1] 13 Device Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1 [1] 14 14.1 14.1.1 14.1.2 14.1.3 14.1.4 14.1.5 14.1.6 14.1.7 14.2 14.2.1 14.2.2 14.2.3 14.2.4 14.2.5 14.2.6 14.2.7 14.2.8 14.3 14.4 The General Purpose Timer Units . . . . . . . . . . . . . . . . . . . . . . . . . 14-1 [2] Timer Block GPT1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2 [2] GPT1 Core Timer T3 Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-4 [2] GPT1 Core Timer T3 Operating Modes . . . . . . . . . . . . . . . . . . . . . 14-8 [2] GPT1 Auxiliary Timers T2/T4 Control . . . . . . . . . . . . . . . . . . . . . 14-15 [2] GPT1 Auxiliary Timers T2/T4 Operating Modes . . . . . . . . . . . . . 14-18 [2] GPT1 Clock Signal Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-27 [2] GPT1 Timer Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-30 [2] Interrupt Control for GPT1 Timers . . . . . . . . . . . . . . . . . . . . . . . . 14-31 [2] Timer Block GPT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-32 [2] GPT2 Core Timer T6 Control . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-34 [2] GPT2 Core Timer T6 Operating Modes . . . . . . . . . . . . . . . . . . . . 14-38 [2] GPT2 Auxiliary Timer T5 Control . . . . . . . . . . . . . . . . . . . . . . . . 14-41 [2] GPT2 Auxiliary Timer T5 Operating Modes . . . . . . . . . . . . . . . . . 14-44 [2] GPT2 Register CAPREL Operating Modes . . . . . . . . . . . . . . . . . 14-48 [2] GPT2 Clock Signal Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-54 [2] GPT2 Timer Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-57 [2] Interrupt Control for GPT2 Timers and CAPREL . . . . . . . . . . . . . 14-58 [2] Miscellaneous Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-59 [2] Interfaces of the GPT Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-62 [2] 15 15.1 15.2 15.3 15.4 15.5 15.6 15.7 15.8 Real Time Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1 [2] Defining the RTC Time Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-2 [2] RTC Run Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-5 [2] RTC Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-7 [2] 48-bit Timer Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11 [2] System Clock Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-11 [2] Cyclic Interrupt Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-12 [2] RTC Interrupt Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-13 [2] Miscellaneous Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-15 [2] 16 16.1 16.1.1 16.1.2 16.1.3 Analog to Digital Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Feature Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User’s Manual L-8 16-1 [2] 16-1 [2] 16-2 [2] 16-3 [2] 16-4 [2] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 16.1.4 16.1.5 16.1.6 16.1.7 16.1.8 16.1.9 16.2 16.2.1 16.2.2 16.2.3 16.2.4 16.2.5 16.2.6 16.2.7 16.2.8 16.2.9 16.2.10 16.2.11 16.2.12 16.2.13 16.2.14 16.2.15 16.2.16 16.2.17 16.2.18 16.3 16.3.1 16.3.2 16.3.3 16.3.4 ADC Kernel Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-5 [2] Conversion Request Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-7 [2] Conversion Result Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-9 [2] Interrupt Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-10 [2] Electrical Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-11 [2] Transfer Characteristics and Error Definitions . . . . . . . . . . . . . . . 16-14 [2] Operating the ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-15 [2] Register Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-16 [2] Mode Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-19 [2] Module Activation and Power Saving Modes . . . . . . . . . . . . . . . 16-21 [2] Clocking Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-22 [2] General ADC Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-23 [2] Request Source Arbiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-32 [2] Arbiter Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-36 [2] Scan Request Source Handling . . . . . . . . . . . . . . . . . . . . . . . . . . 16-38 [2] Scan Request Source Registers . . . . . . . . . . . . . . . . . . . . . . . . . 16-42 [2] Sequential Request Source Handling . . . . . . . . . . . . . . . . . . . . . 16-46 [2] Sequential Source Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-51 [2] Channel-Related Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-62 [2] Channel-Related Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-67 [2] Conversion Result Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-77 [2] Conversion Result-Related Registers . . . . . . . . . . . . . . . . . . . . . 16-85 [2] External Multiplexer Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-95 [2] Synchronized Conversions for Parallel Sampling . . . . . . . . . . . . 16-97 [2] Additional Feature Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-100 [2] Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-103 [2] Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-103 [2] Interrupt Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-103 [2] Analog Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-104 [2] Digital Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-107 [2] 17 17.1 17.2 17.3 17.3.1 17.4 17.5 17.5.1 17.5.2 17.5.3 17.5.4 17.5.5 Capture/Compare Unit 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1 [2] The CAPCOM2 Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-4 [2] CAPCOM2 Timer Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-10 [2] Capture/Compare Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-11 [2] Capture/Compare Registers for the CAPCOM2 (CC31 … CC16) 17-11 [2] Capture Mode Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-14 [2] Compare Mode Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-15 [2] Compare Mode 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-16 [2] Compare Mode 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-16 [2] Compare Mode 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-19 [2] Compare Mode 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-19 [2] Double-Register Compare Mode . . . . . . . . . . . . . . . . . . . . . . . . 17-24 [2] User’s Manual L-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 17.6 17.7 17.8 17.9 17.10 17.10.1 17.11 Compare Output Signal Generation . . . . . . . . . . . . . . . . . . . . . . . . Single Event Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Staggered and Non-Staggered Operation . . . . . . . . . . . . . . . . . . . . CAPCOM2 Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . External Input Signal Requirements . . . . . . . . . . . . . . . . . . . . . . . . Miscellaneous Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interfaces of the CAPCOM Units . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18.1 18.1.1 18.1.2 18.1.3 18.2 18.2.1 18.2.2 18.2.3 18.2.4 18.2.5 18.2.6 18.2.7 18.2.8 18.2.9 18.3 18.3.1 18.3.2 18.3.3 18.3.4 18.3.5 18.3.6 18.4 18.5 18.6 18.6.1 18.6.2 18.6.3 18.6.4 18.7 18.7.1 18.7.2 18.7.3 18.7.4 18.8 Capture/Compare Unit 6 (CCU6) . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [2] Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1 [2] Feature Set Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-2 [2] Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-3 [2] Register Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-4 [2] Operating Timer T12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-7 [2] T12 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-8 [2] T12 Counting Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-10 [2] T12 Compare Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-14 [2] Compare Mode Output Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-21 [2] T12 Capture Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-26 [2] T12 Shadow Register Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . 18-30 [2] Timer T12 Operating Mode Selection . . . . . . . . . . . . . . . . . . . . . 18-31 [2] T12 related Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-32 [2] Capture/Compare Control Registers . . . . . . . . . . . . . . . . . . . . . . 18-37 [2] Operating Timer T13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-49 [2] T13 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-49 [2] T13 Counting Scheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-52 [2] T13 Compare Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-57 [2] Compare Mode Output Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-59 [2] T13 Shadow Register Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . 18-60 [2] T13 related Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-62 [2] Trap Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-65 [2] Multi-Channel Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-67 [2] Hall Sensor Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-69 [2] Hall Pattern Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-70 [2] Hall Pattern Compare Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-72 [2] Hall Mode Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-73 [2] Hall Mode for Brushless DC-Motor Control . . . . . . . . . . . . . . . . . 18-75 [2] Modulation Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-77 [2] Modulation Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-77 [2] Trap Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-79 [2] Passive State Level Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-82 [2] Multi-Channel Mode Registers . . . . . . . . . . . . . . . . . . . . . . . . . . 18-83 [2] Interrupt Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-88 [2] User’s Manual L-10 17-27 [2] 17-29 [2] 17-31 [2] 17-36 [2] 17-38 [2] 17-39 [2] 17-42 [2] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 18.8.1 18.8.2 18.9 18.9.1 18.9.2 18.9.3 18.10 18.10.1 18.10.2 18.10.3 18.10.4 Interrupt Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-88 [2] Interrupt Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-90 [2] General Module Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-102 [2] Mode Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-102 [2] Input Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-105 [2] General Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-106 [2] Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-113 [2] Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-113 [2] Interrupt Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-114 [2] Synchronous Start Feature . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-115 [2] Digital Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-116 [2] 19 19.1 19.1.1 19.1.2 19.1.3 19.1.4 19.1.5 19.1.6 19.1.7 19.2 19.2.1 19.2.2 19.2.3 19.2.4 19.2.5 19.2.6 19.2.7 19.2.8 19.2.9 19.2.10 19.2.11 19.2.12 19.2.13 19.2.14 19.3 19.3.1 19.3.2 19.3.3 19.3.4 19.3.5 19.4 Universal Serial Interface Channel . . . . . . . . . . . . . . . . . . . . . . . . . 19-1 [2] Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-1 [2] Feature Set Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-2 [2] Channel Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-5 [2] Input Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-6 [2] Output Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-7 [2] Baud Rate Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-8 [2] Channel Events and Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-9 [2] Data Shifting and Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-9 [2] Operating the USIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-13 [2] Register Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-13 [2] Operating the USIC Communication Channel . . . . . . . . . . . . . . . 19-18 [2] Channel Control and Configuration Registers . . . . . . . . . . . . . . . 19-26 [2] Protocol Related Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-34 [2] Operating the Input Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-37 [2] Input Stage Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-39 [2] Operating the Baud Rate Generator . . . . . . . . . . . . . . . . . . . . . . 19-42 [2] Baud Rate Generator Registers . . . . . . . . . . . . . . . . . . . . . . . . . 19-47 [2] Operating the Transmit Data Path . . . . . . . . . . . . . . . . . . . . . . . . 19-52 [2] Operating the Receive Data Path . . . . . . . . . . . . . . . . . . . . . . . . 19-56 [2] Transfer Control and Status Registers . . . . . . . . . . . . . . . . . . . . 19-58 [2] Data Buffer Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-70 [2] Operating the FIFO Data Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . 19-80 [2] FIFO Buffer and Bypass Registers . . . . . . . . . . . . . . . . . . . . . . . 19-90 [2] Asynchronous Serial Channel (ASC = UART) . . . . . . . . . . . . . . . . 19-111 [2] Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-111 [2] Frame Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-112 [2] Operating the ASC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-115 [2] ASC Protocol Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-123 [2] Hardware LIN Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-129 [2] Synchronous Serial Channel (SSC) . . . . . . . . . . . . . . . . . . . . . . . 19-131 [2] User’s Manual L-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 19.4.1 19.4.2 19.4.3 19.4.4 19.4.5 19.4.6 19.5 19.5.1 19.5.2 19.5.3 19.5.4 19.5.5 19.6 19.6.1 19.6.2 19.6.3 19.6.4 19.6.5 19.7 19.7.1 19.7.2 19.7.3 19.7.4 19.7.5 19.7.6 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating the SSC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating the SSC in Master Mode . . . . . . . . . . . . . . . . . . . . . . Operating the SSC in Slave Mode . . . . . . . . . . . . . . . . . . . . . . . SSC Protocol Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SSC Timing Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inter-IC Bus Protocol (IIC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating the IIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Symbol Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Flow Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IIC Protocol Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IIS Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating the IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating the IIS in Master Mode . . . . . . . . . . . . . . . . . . . . . . . Operating the IIS in Slave Mode . . . . . . . . . . . . . . . . . . . . . . . . IIS Protocol Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . USIC Implementation in XC2300 . . . . . . . . . . . . . . . . . . . . . . . . . . Implementation Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Channel Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Module Identification Registers . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input/Output Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20.1 20.1.1 20.1.2 20.2 20.2.1 20.2.2 20.2.3 20.2.4 20.2.5 20.2.6 20.2.7 20.2.8 20.2.9 20.3 20.3.1 20.3.2 Controller Area Network (MultiCAN) Controller . . . . . . . . . . . . . . 20-1 [2] MultiCAN Short Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1 [2] Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1 [2] CAN Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-2 [2] CAN Functional Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-3 [2] Conventions and Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-3 [2] Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-3 [2] CAN Node Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-9 [2] Message Object List Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-13 [2] CAN Node Analysis Features . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-18 [2] Message Acceptance Filtering . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-21 [2] Message Postprocessing Interface . . . . . . . . . . . . . . . . . . . . . . . 20-24 [2] Message Object Data Handling . . . . . . . . . . . . . . . . . . . . . . . . . . 20-28 [2] Message Object Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-35 [2] MultiCAN Kernel Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-44 [2] Register Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-44 [2] Global MultiCAN Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-49 [2] User’s Manual L-12 19-131 [2] 19-139 [2] 19-142 [2] 19-149 [2] 19-151 [2] 19-157 [2] 19-160 [2] 19-160 [2] 19-164 [2] 19-170 [2] 19-173 [2] 19-178 [2] 19-184 [2] 19-184 [2] 19-188 [2] 19-193 [2] 19-197 [2] 19-198 [2] 19-204 [2] 19-204 [2] 19-205 [2] 19-205 [2] 19-206 [2] 19-208 [2] 19-210 [2] V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Table Of Contents 20.3.3 20.3.4 20.4 20.4.1 20.4.2 20.4.3 20.4.4 20.5 20.5.1 20.5.2 20.5.3 20.5.4 20.5.5 20.5.6 20.5.7 CAN Node Specific Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-62 [2] Message Object Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-79 [2] General Control and Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-102 [2] Clock Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-102 [2] Port Input Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-103 [2] Suspend Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-104 [2] Interrupt Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-105 [2] MultiCAN Module Implementation . . . . . . . . . . . . . . . . . . . . . . . . . 20-106 [2] Interfaces of the CAN Module . . . . . . . . . . . . . . . . . . . . . . . . . . 20-106 [2] Module Clock Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-107 [2] Mode Control Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-116 [2] Mode Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-117 [2] Mode Control Register Description . . . . . . . . . . . . . . . . . . . . . . 20-119 [2] Connection of External Signals . . . . . . . . . . . . . . . . . . . . . . . . . 20-122 [2] MultiCAN Module Register Address Map . . . . . . . . . . . . . . . . . 20-125 [2] Keyword Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-1 [2] Register Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22-7 [2] User’s Manual L-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14 The General Purpose Timer Units The General Purpose Timer Unit blocks GPT1 and GPT2 have very flexible multifunctional timer structures which may be used for timing, event counting, pulse width measurement, pulse generation, frequency multiplication, and other purposes. They incorporate five 16-bit timers that are grouped into the two timer blocks GPT1 and GPT2. Each timer in each block may operate independently in a number of different modes such as gated timer or counter mode, or may be concatenated with another timer of the same block. Each block has alternate input/output functions and specific interrupts associated with it. Block GPT1 contains three timers/counters: The core timer T3 and the two auxiliary timers T2 and T4. The maximum resolution is fGPT/4. The auxiliary timers of GPT1 may optionally be configured as reload or capture registers for the core timer. These registers are listed in Section 14.1.6. • • • • fGPT/4 maximum resolution 3 independent timers/counters Timers/counters can be concatenated 4 operating modes: – Timer Mode – Gated Timer Mode – Counter Mode – Incremental Interface Mode • Reload and Capture functionality • Separate interrupt lines Block GPT2 contains two timers/counters: The core timer T6 and the auxiliary timer T5. The maximum resolution is fGPT/2. An additional Capture/Reload register (CAPREL) supports capture and reload operation with extended functionality. These registers are listed in Section 14.2.7. The core timer T6 may be concatenated with timers of the CAPCOM units (T7 and T8). The following list summarizes the features which are supported: • • • • fGPT/2 maximum resolution 2 independent timers/counters Timers/counters can be concatenated 3 operating modes: – Timer Mode – Gated Timer Mode – Counter Mode • Extended capture/reload functions via 16-bit capture/reload register CAPREL • Separate interrupt lines User’s Manual GPT, V2.1 14-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1 Timer Block GPT1 From a programmer’s point of view, the GPT1 block is composed of a set of SFRs as summarized below. Those portions of port and direction registers which are used for alternate functions by the GPT1 block are shaded. Data Registers Control Registers Interrupt Control T2 T2CON T2IC T3 T3CON T3IC T4 T4CON T2CON T4IC Miscellaneous ID KSCCFG T2CON Tx TxCON TxIC GPT1 Timer x Register GPT1 Capture/Reload Register GPT1 Timer x Interrupt Ctrl . Reg. KSCCFG ID Kernel State Configuration Register Module Identification Register mc_gpt1_registers.vsd Figure 14-1 SFRs Associated with Timer Block GPT1 All three timers of block GPT1 (T2, T3, T4) can run in one of 4 basic modes: Timer Mode, Gated Timer Mode, Counter Mode, or Incremental Interface Mode. All timers can count up or down. Each timer of GPT1 is controlled by a separate control register TxCON. Each timer has an input pin TxIN (alternate pin function) associated with it, which serves as the gate control in gated timer mode, or as the count input in counter mode. The count direction (up/down) may be programmed via software or may be dynamically altered by a signal at the External Up/Down control input TxEUD (alternate pin function). An overflow/underflow of core timer T3 is indicated by the Output Toggle Latch T3OTL, whose state may be output on the associated pin T3OUT (alternate pin function). The auxiliary timers T2 and T4 may additionally be concatenated with the core timer T3 (through T3OTL) or may be used as capture or reload registers for the core timer T3. The current contents of each timer can be read or modified by the CPU by accessing the corresponding timer count registers T2, T3, or T4, located in the non-bitaddressable SFR space (see Section 14.1.6). When any of the timer registers is written to by the CPU in the state immediately preceding a timer increment, decrement, reload, or capture operation, the CPU write operation has priority in order to guarantee correct results. User’s Manual GPT, V2.1 14-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units The interrupts of GPT1 are controlled through the Interrupt Control Registers TxIC. These registers are not part of the GPT1 block. The input and output lines of GPT1 are connected to pins of ports P3 and P5. The control registers for the port functions are located in the respective port modules. Note: The timing requirements for external input signals can be found in Section 14.1.5, Section 14.4 summarizes the module interface signals, including pins. T3CON.BPS1 f GPT 2n: 1 Basic clock Interrupt Request (T2IRQ) Aux. Timer T2 T2IN T2EUD T2 Mode Control U/D Reload Capture Interrupt Request (T3IRQ) T3IN Toggle Latch T3 Mode Control Core Timer T3 T3OTL T3OUT U/D T3EUD Capture Reload T4IN T4EUD T4 Mode Control Aux. Timer T4 Interrupt Request (T4IRQ) U/D mc_gpt0101_bldiax1.vsd Figure 14-2 GPT1 Block Diagram (n = 2 … 5) User’s Manual GPT, V2.1 14-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.1 GPT1 Core Timer T3 Control The current contents of the core timer T3 are reflected by its count register T3. This register can also be written to by the CPU, for example, to set the initial start value. The core timer T3 is configured and controlled via its bitaddressable control register T3CON. GPT12E_T3CON Timer 3 Control Register 15 14 T3 T3 R CH DIR DIR rh rwh 13 12 11 T3 ED GE BPS1 rwh rw SFR (FF42H/A1H) 10 9 8 7 T3 T3 T3 T3 OTL OE UDE UD rwh rw rw rw 6 Reset Value: 0000H 5 4 3 2 1 T3R T3M T3I rw rw rw 0 Field Bits Type Description T3RDIR 15 rh Timer T3 Rotation Direction Flag 0 Timer T3 counts up 1 Timer T3 counts down T3CHDIR 14 rwh Timer T3 Count Direction Change Flag This bit is set each time the count direction of timer T3 changes. T3CHDIR must be cleared by SW. 0 No change of count direction was detected 1 A change of count direction was detected T3EDGE 13 rwh Timer T3 Edge Detection Flag The bit is set each time a count edge is detected. T3EDGE must be cleared by SW. 0 No count edge was detected 1 A count edge was detected BPS1 [12:11] rw User’s Manual GPT, V2.1 GPT1 Block Prescaler Control Selects the basic clock for block GPT1 (see also Section 14.1.5) 00B fGPT/8 01B fGPT/4 10B fGPT/32 11B fGPT/16 14-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description T3OTL 10 rwh Timer T3 Overflow Toggle Latch Toggles on each overflow/underflow of T3. Can be set or reset by software (see separate description) T3OE 9 rw Overflow/Underflow Output Enable 0B Alternate Output Function Disabled State of T3 toggle latch is output on pin T3OUT 1B T3UDE 8 rw Timer T3 External Up/Down Enable1) 0B Input T3EUD is disconnected 1B Direction influenced by input T3EUD T3UD 7 rw Timer T3 Up/Down Control1) 0B Timer T3 counts up 1B Timer T3 counts down T3R 6 rw Timer T3 Run Bit 0B Timer T3 stops 1B Timer T3 runs T3M [5:3] rw Timer T3 Mode Control (Basic Operating Mode) 000B Timer Mode 001B Counter Mode 010B Gated Timer Mode with gate active low 011B Gated Timer Mode with gate active high 100B Reserved. Do not use this combination. 101B Reserved. Do not use this combination. 110B Incremental Interface Mode (Rotation Detection Mode) 111B Incremental Interface Mode (Edge Detection Mode) T3I [2:0] rw Timer T3 Input Parameter Selection Depends on the operating mode, see respective sections for encoding: Table 14-7 for Timer Mode and Gated Timer Mode Table 14-2 for Counter Mode Table 14-3 for Incremental Interface Mode 1) See Table 14-1 for encoding of bits T3UD and T3UDE. User’s Manual GPT, V2.1 14-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer T3 Run Control The core timer T3 can be started or stopped by software through bit T3R (Timer T3 Run Bit). This bit is relevant in all operating modes of T3. Setting bit T3R will start the timer, clearing bit T3R stops the timer. In gated timer mode, the timer will only run if T3R = 1 and the gate is active (high or low, as programmed). Note: When bit T2RC or T4RC in timer control register T2CON or T4CON is set, bit T3R will also control (start and stop) the auxiliary timer(s) T2 and/or T4. Count Direction Control The count direction of the GPT1 timers (core timer and auxiliary timers) can be controlled either by software or by the external input pin TxEUD (Timer Tx External Up/Down Control Input). These options are selected by bits TxUD and TxUDE in the respective control register TxCON. When the up/down control is provided by software (bit TxUDE = 0), the count direction can be altered by setting or clearing bit TxUD. When bit TxUDE = 1, pin TxEUD is selected to be the controlling source of the count direction. However, bit TxUD can still be used to reverse the actual count direction, as shown in Table 14-1. The count direction can be changed regardless of whether or not the timer is running. Note: When pin TxEUD is used as external count direction control input, it must be configured as input (its corresponding direction control bit must be cleared). Table 14-1 GPT1 Timer Count Direction Control Pin TxEUD Bit TxUDE Bit TxUD Count Direction Bit TxRDIR X 0 0 Count Up 0 X 0 1 Count Down 1 0 1 0 Count Up 0 1 1 0 Count Down 1 0 1 1 Count Down 1 1 1 1 Count Up 0 User’s Manual GPT, V2.1 14-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer 3 Output Toggle Latch The overflow/underflow signal of timer T3 is connected to a block named ‘Toggle Latch’, shown in the timer mode diagrams. Figure 14-3 illustrates the details of this block. An overflow or underflow of T3 will clock two latches: The first latch represents bit T3OTL in control register T3CON. The second latch is an internal latch toggled by T3OTL’s output. Both latch outputs are connected to the input control blocks of the auxiliary timers T2 and T4. The output level of the shadow latch will match the output level of T3OTL, but is delayed by one clock cycle. When the T3OTL value changes, this will result in a temporarily different output level from T3OTL and the shadow latch, which can trigger the selected count event in T2 and/or T4. When software writes to T3OTL, both latches are set or cleared simultaneously. In this case, both signals to the auxiliary timers carry the same level and no edge will be detected. Bit T3OE (overflow/underflow output enable) in register T3CON enables the state of T3OTL to be monitored via an external pin T3OUT. When T3OTL is linked to an external port pin (must be configured as output), T3OUT can be used to control external HW. If T3OE = 1, pin T3OUT outputs the state of T3OTL. If T3OE = 0, pin T3OUT outputs a high level (as long as the T3OUT alternate function is selected for the port pin). The trigger signals can serve as an input for the counter function or as a trigger source for the reload function of the auxiliary timers T2 and T4. As can be seen from Figure 14-3, when latch T3OTL is modified by software to determine the state of the output line, also the internal shadow latch is set or cleared accordingly. Therefore, no trigger condition is detected by T2/T4 in this case. Set/Clear (SW) 1 Core Timer Overflow/ Underflow 1 Shadow Latch TxOTL Toggle Latch Logic 0 MUX TxOE TxOUT To Port Logic To Aux. Timer Input Logic mc_gpt0106_otl.vsd Figure 14-3 Block Diagram of the Toggle Latch Logic of Core Timer T3 User’s Manual GPT, V2.1 14-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.2 GPT1 Core Timer T3 Operating Modes Timer T3 can operate in one of several modes. Timer 3 in Timer Mode Timer mode for the core timer T3 is selected by setting bitfield T3M in register T3CON to 000B. In timer mode, T3 is clocked with the module’s input clock fGPT divided by two programmable prescalers controlled by bitfields BPS1 and T3I in register T3CON. Please see Section 14.1.5 for details on the input clock options. T3IRQ fGPT Prescaler BPS1 fT3 T3I Count Core Timer T3 Toggle Latch T3OUT to T2/T4 T3R T3UD 0 =1 MUX 1 Up/Down T3EUD T3UDE MCB05391 Figure 14-4 Block Diagram of Core Timer T3 in Timer Mode User’s Manual GPT, V2.1 14-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Gated Timer Mode Gated timer mode for the core timer T3 is selected by setting bitfield T3M in register T3CON to 010B or 011B. Bit T3M.0 (T3CON.3) selects the active level of the gate input. The same options for the input frequency are available in gated timer mode as in timer mode (see Section 14.1.5). However, the input clock to the timer in this mode is gated by the external input pin T3IN (Timer T3 External Input). To enable this operation, the associated pin T3IN must be configured as input, that is, the corresponding direction control bit must contain 0. T3IRQ fGPT Prescaler BPS1 Gate Ctrl. T3I fT3 Count Core Timer T3 Toggle Latch to T2/T4 T3R T3IN T3OUT T3UD 0 =1 MUX 1 Up/Down T3EUD T3UDE MCB05392 Figure 14-5 Block Diagram of Core Timer T3 in Gated Timer Mode If T3M = 010B, the timer is enabled when T3IN shows a low level. A high level at this line stops the timer. If T3M = 011B, line T3IN must have a high level in order to enable the timer. Additionally, the timer can be turned on or off by software using bit T3R. The timer will only run if T3R is 1 and the gate is active. It will stop if either T3R is 0 or the gate is inactive. Note: A transition of the gate signal at pin T3IN does not cause an interrupt request. User’s Manual GPT, V2.1 14-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Counter Mode Counter Mode for the core timer T3 is selected by setting bitfield T3M in register T3CON to 001B. In counter mode, timer T3 is clocked by a transition at the external input pin T3IN. The event causing an increment or decrement of the timer can be a positive, a negative, or both a positive and a negative transition at this line. Bitfield T3I in control register T3CON selects the triggering transition (see Table 14-2). T3IRQ Edge Count T3IN Core Timer T3 Toggle Latch T3OUT Select T3I to T2/T4 T3R T3UD 0 =1 MUX Up/Down 1 T3EUD T3UDE MCB05393 Figure 14-6 Block Diagram of Core Timer T3 in Counter Mode Table 14-2 GPT1 Core Timer T3 (Counter Mode) Input Edge Selection T3I Triggering Edge for Counter Increment/Decrement 000B None. Counter T3 is disabled 001B Positive transition (rising edge) on T3IN 010B Negative transition (falling edge) on T3IN 011B Any transition (rising or falling edge) on T3IN 1XXB Reserved. Do not use this combination For counter mode operation, pin T3IN must be configured as input (the respective direction control bit DPx.y must be 0). The maximum input frequency allowed in counter mode depends on the selected prescaler value. To ensure that a transition of the count input signal applied to T3IN is recognized correctly, its level must be held high or low for a minimum number of module clock cycles before it changes. This information can be found in Section 14.1.5. User’s Manual GPT, V2.1 14-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Incremental Interface Mode Incremental interface mode for the core timer T3 is selected by setting bitfield T3M in register T3CON to 110B or 111B. In incremental interface mode, the two inputs associated with core timer T3 (T3IN, T3EUD) are used to interface to an incremental encoder. T3 is clocked by each transition on one or both of the external input pins to provide 2-fold or 4-fold resolution of the encoder input. T3IN Edge Count Core Timer T3 Toggle Latch T3OUT Select to T2/T4 T3R T3I T3 EDGE T3 RDIR _ >1 T3IRQ T3UD 0 =1 T3EUD MUX Change Detect T3UDE T3CH DIR 1 Phase Detect T3M T3M MCB05394 Figure 14-7 Block Diagram of Core Timer T3 in Incremental Interface Mode Bitfield T3I in control register T3CON selects the triggering transitions (see Table 14-3). The sequence of the transitions of the two input signals is evaluated and generates count pulses as well as the direction signal. So T3 is modified automatically according to the speed and the direction of the incremental encoder and, therefore, its contents always represent the encoder’s current position. The interrupt request (T3IRQ) generation mode can be selected: In Rotation Detection Mode (T3M = 110B), an interrupt request is generated each time the count direction of T3 changes. In Edge Detection Mode (T3M = 111B), an interrupt request is generated each time a count edge for T3 is detected. Count direction, changes in the count direction, and count requests are monitored by status bits T3RDIR, T3CHDIR, and T3EDGE in register T3CON. User’s Manual GPT, V2.1 14-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Table 14-3 Core Timer T3 (Incremental Interface Mode) Input Edge Selection T3I Triggering Edge for Counter Increment/Decrement 000B None. Counter T3 stops. 001B Any transition (rising or falling edge) on T3IN. 010B Any transition (rising or falling edge) on T3EUD. 011B Any transition (rising or falling edge) on any T3 input (T3IN or T3EUD). 1XXB Reserved. Do not use this combination. The incremental encoder can be connected directly to the XC2300 without external interface logic. In a standard system, however, comparators will be employed to convert the encoder’s differential outputs (such as A, A) to digital signals (such as A). This greatly increases noise immunity. Note: The third encoder output T0, which indicates the mechanical zero position, may be connected to an external interrupt input and trigger a reset of timer T3 (for example via PEC transfer from ZEROS). Signal Conditioning Encoder Controller A A A B B B T0 T0 T0 T3Input T3Input Interrupt MCS04372 Figure 14-8 Connection of the Encoder to the XC2300 For incremental interface operation, the following conditions must be met: • • • • Bitfield T3M must be 110B or 111B. Both pins T3IN and T3EUD must be configured as input. Pin T4IN must be configured as input, if used for T0. Bit T3UDE must be 1 to enable automatic external direction control. The maximum count frequency allowed in incremental interface mode depends on the selected prescaler value. To ensure that a transition of any input signal is recognized correctly, its level must be held high or low for a minimum number of module clock cycles before it changes. This information can be found in Section 14.1.5. User’s Manual GPT, V2.1 14-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units As in incremental interface mode two input signals with a 90° phase shift are evaluated, their maximum input frequency can be half the maximum count frequency. In incremental interface mode, the count direction is automatically derived from the sequence in which the input signals change, which corresponds to the rotation direction of the connected sensor. Table 14-4 summarizes the possible combinations. Table 14-4 GPT1 Core Timer T3 (Incremental Interface Mode) Count Direction Level on Respective T3IN Input other Input Rising ↑ Falling ↓ T3EUD Input Rising ↑ Falling ↓ High Down Up Up Down Low Up Down Down Up Figure 14-9 and Figure 14-10 give examples of T3’s operation, visualizing count signal generation and direction control. They also show how input jitter is compensated, which might occur if the sensor rests near to one of its switching points. Forward Jitter Backward Jitter Forward T3IN T3EUD Contents of T3 Up Down Up Note: This example shows the timer behaviour assuming that T3 counts upon any transition on input, i.e. T3I = '011 B'. MCT04373 Figure 14-9 Evaluation of Incremental Encoder Signals, 2 Count Inputs User’s Manual GPT, V2.1 14-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Forward Jitter Backward Jitter Forward T3IN T3EUD Contents of T3 Up Down Up Note: This example shows the timer behaviour assuming that T3 counts upon any transition on input T3IN, i.e. T3I = '001B'. MCT04374 Figure 14-10 Evaluation of Incremental Encoder Signals, 1 Count Input Note: Timer T3 operating in incremental interface mode automatically provides information on the sensor’s current position. Dynamic information (speed, acceleration, deceleration) may be obtained by measuring the incoming signal periods (see “Combined Capture Modes” on Page 14-53). User’s Manual GPT, V2.1 14-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.3 GPT1 Auxiliary Timers T2/T4 Control Auxiliary timers T2 and T4 have exactly the same functionality. They can be configured for timer mode, gated timer mode, counter mode, or incremental interface mode with the same options for the timer frequencies and the count signal as the core timer T3. In addition to these 4 counting modes, the auxiliary timers can be concatenated with the core timer, or they may be used as reload or capture registers in conjunction with the core timer. The start/stop function of the auxiliary timers can be remotely controlled by the T3 run control bit. Several timers may thus be controlled synchronously. The current contents of an auxiliary timer are reflected by its count register T2 or T4, respectively. These registers can also be written to by the CPU, for example, to set the initial start value. The individual configurations for timers T2 and T4 are determined by their bitaddressable control registers T2CON and T4CON, which are organized identically. Note that functions which are present in all 3 timers of block GPT1 are controlled in the same bit positions and in the same manner in each of the specific control registers. Note: The auxiliary timers have no output toggle latch and no alternate output function. GPT12E_T2CON Timer 2 Control Register 15 14 T2 T2 R CH DIR DIR rh rwh Field SFR (FF40H/A0H) 13 12 11 10 T2 ED GE T2 IR DIS - - T2 T2 T2 RC UDE UD rwh rw - - rw Bits 14 T4 T4 R CH DIR DIR rh rwh 8 rw 7 rw 5 4 3 2 1 T2R T2M T2I rw rw rw SFR (FF44H/A2H) 13 12 11 10 T4 ED GE T4 IR DIS - - T4 T4 T4 RC UDE UD rwh rw - - rw User’s Manual GPT, V2.1 6 0 Type Description GPT12E_T4CON Timer 4 Control Register 15 9 Reset Value: 0000H 9 8 rw 7 rw 14-15 6 Reset Value: 0000H 5 4 3 2 1 T4R T4M T4I rw rw rw 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description TxRDIR 15 rh Timer Tx Rotation Direction 0B Timer x counts up 1B Timer x counts down TxCHDIR 14 rwh Timer Tx Count Direction Change This bit is set each time the count direction of timer Tx changes. TxCHDIR must be cleared by SW. No change in count direction was detected 0B 1B A change in count direction was detected TxEDGE 13 rwh Timer Tx Edge Detection The bit is set each time a count edge is detected. TxEDGE must be cleared by SW. No count edge was detected 0B 1B A count edge was detected TxIRDIS 12 rw Timer Tx Interrupt Request Disable 0B Interrupt generation for TxCHDIR and TxEDGE interrupts in Incremental Interface Mode is enabled Interrupt generation for TxCHDIR and 1B TxEDGE interrupts in Incremental Interface Mode is disabled TxRC 9 rw Timer Tx Remote Control 0B Timer Tx is controlled by its own run bit TxR 1B Timer Tx is controlled by the run bit T3R of core timer 3, not by bit TxR TxUDE 8 rw Timer Tx External Up/Down Enable1) 0B Input TxEUD is disconnected Direction influenced by input TxEUD 1B TxUD 7 rw Timer Tx Up/Down Control1) 0B Timer Tx counts up 1B Timer Tx counts down TxR 6 rw Timer Tx Run Bit 0B Timer Tx stops 1B Timer Tx runs Note: This bit only controls timer Tx if bit TxRC = 0. User’s Manual GPT, V2.1 14-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description TxM [5:3] rw Timer Tx Mode Control (Basic Operating Mode) 000B Timer Mode 001B Counter Mode 010B Gated Timer Mode with gate active low 011B Gated Timer Mode with gate active high 100B Reload Mode 101B Capture Mode 110B Incremental Interface Mode (Rotation Detect.) 111B Incremental Interface Mode (Edge Detection) TxI [2:0] rw Timer Tx Input Parameter Selection Depends on the operating mode, see respective sections for encoding: Table 14-7 for Timer Mode and Gated Timer Mode Table 14-2 for Counter Mode Table 14-3 for Incremental Interface Mode 1) See Table 14-1 for encoding of bits TxUD and TxUDE. Timer T2/T4 Run Control Each of the auxiliary timers T2 and T4 can be started or stopped by software in two different ways: • Through the associated timer run bit (T2R or T4R). In this case it is required that the respective control bit TxRC = 0. • Through the core timer’s run bit (T3R). In this case the respective remote control bit must be set (TxRC = 1). The selected run bit is relevant in all operating modes of T2/T4. Setting the bit will start the timer, clearing the bit stops the timer. In gated timer mode, the timer will only run if the selected run bit is set and the gate is active (high or low, as programmed). Note: If remote control is selected T3R will start/stop timer T3 and the selected auxiliary timer(s) synchronously. Count Direction Control The count direction of the GPT1 timers (core timer and auxiliary timers) is controlled in the same way, either by software or by the external input pin TxEUD. Please refer to the description in Table 14-1. Note: When pin TxEUD is used as external count direction control input, it must be configured as input (its corresponding direction control bit must be cleared). User’s Manual GPT, V2.1 14-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.4 GPT1 Auxiliary Timers T2/T4 Operating Modes The operation of the auxiliary timers in the basic operating modes is almost identical with the core timer’s operation, with very few exceptions. Additionally, some combined operating modes can be selected. Timers T2 and T4 in Timer Mode Timer mode for an auxiliary timer Tx is selected by setting its bitfield TxM in register TxCON to 000B. fGPT fTx Prescaler BPS1 Count Auxiliary Timer Tx TxIRQ TxI TxR T3R 0 MUX 1 TxRC TxUD 0 =1 MUX 1 Up/Down TxEUD TxUDE x = 2, 4 MCB05395 Figure 14-11 Block Diagram of an Auxiliary Timer in Timer Mode User’s Manual GPT, V2.1 14-18 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timers T2 and T4 in Gated Timer Mode Gated timer mode for an auxiliary timer Tx is selected by setting bitfield TxM in register TxCON to 010B or 011B. Bit TxM.0 (TxCON.3) selects the active level of the gate input. Note: A transition of the gate signal at line TxIN does not cause an interrupt request. fGPT Prescaler BPS1 Gate Ctrl. fTx Count Auxiliary Timer Tx TxIRQ TxI TxIN TxM TxR T3R 0 MUX 1 TxRC TxUD 0 =1 MUX 1 Up/Down TxEUD TxUDE x = 2, 4 MCB05396 Figure 14-12 Block Diagram of an Auxiliary Timer in Gated Timer Mode Note: There is no output toggle latch for T2 and T4. Start/stop of an auxiliary timer can be controlled locally or remotely. User’s Manual GPT, V2.1 14-19 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timers T2 and T4 in Counter Mode Counter mode for an auxiliary timer Tx is selected by setting bitfield TxM in register TxCON to 001B. In counter mode, an auxiliary timer can be clocked either by a transition at its external input line TxIN, or by a transition of timer T3’s toggle latch T3OTL. The event causing an increment or decrement of a timer can be a positive, a negative, or both a positive and a negative transition at either the respective input pin or at the toggle latch. Bitfield TxI in control register TxCON selects the triggering transition (see Table 14-5). TxIN T3 Toggle Latch 0 Edge MUX Count 1 Auxiliary Timer Tx TxIRQ Select TxI.2 TxR T3R TxI 0 MUX 1 TxRC TxUD 0 =1 MUX 1 Up/Down TxEUD TxUDE x = 2, 4 MCB05397 Figure 14-13 Block Diagram of an Auxiliary Timer in Counter Mode Table 14-5 GPT1 Auxiliary Timer (Counter Mode) Input Edge Selection T2I/T4I Triggering Edge for Counter Increment/Decrement X00B None. Counter Tx is disabled 001B Positive transition (rising edge) on TxIN 010B Negative transition (falling edge) on TxIN 011B Any transition (rising or falling edge) on TxIN 101B Positive transition (rising edge) of T3 toggle latch T3OTL 110B Negative transition (falling edge) of T3 toggle latch T3OTL 111B Any transition (rising or falling edge) of T3 toggle latch T3OTL Note: Only state transitions of T3OTL which are caused by the overflows/underflows of T3 will trigger the counter function of T2/T4. Modifications of T3OTL via software will NOT trigger the counter function of T2/T4. User’s Manual GPT, V2.1 14-20 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units For counter operation, pin TxIN must be configured as input (the respective direction control bit DPx.y must be 0). The maximum input frequency allowed in counter mode depends on the selected prescaler value. To ensure that a transition of the count input signal applied to TxIN is recognized correctly, its level must be held high or low for a minimum number of module clock cycles before it changes. This information can be found in Section 14.1.5. Timers T2 and T4 in Incremental Interface Mode Incremental interface mode for an auxiliary timer Tx is selected by setting bitfield TxM in the respective register TxCON to 110B or 111B. In incremental interface mode, the two inputs associated with an auxiliary timer Tx (TxIN, TxEUD) are used to interface to an incremental encoder. Tx is clocked by each transition on one or both of the external input pins to provide 2-fold or 4-fold resolution of the encoder input. TxIN Edge Count Auxiliary Timer Tx Tx Edge Tx RDIR Overflow Underflow Select TxI TxR T3R 0 MUX 1 TxRC & TxUD 0 =1 TxEUD MUX Change Detect TxUDE TxCH DIR 1 Phase Detect _ >1 TxIRQ TxM & TxM TxIRDIS MCB05398 Figure 14-14 Block Diagram of an Auxiliary Timer in Incremental Interface Mode The operation of the auxiliary timers T2 and T4 in incremental interface mode and the interrupt generation are the same as described for the core timer T3. The descriptions, figures and tables apply accordingly. User’s Manual GPT, V2.1 14-21 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer Concatenation Using the toggle bit T3OTL as a clock source for an auxiliary timer in counter mode concatenates the core timer T3 with the respective auxiliary timer. This concatenation forms either a 32-bit or a 33-bit timer/counter, depending on which transition of T3OTL is selected to clock the auxiliary timer. • 32-bit Timer/Counter: If both a positive and a negative transition of T3OTL are used to clock the auxiliary timer, this timer is clocked on every overflow/underflow of the core timer T3. Thus, the two timers form a 32-bit timer. • 33-bit Timer/Counter: If either a positive or a negative transition of T3OTL is selected to clock the auxiliary timer, this timer is clocked on every second overflow/underflow of the core timer T3. This configuration forms a 33-bit timer (16-bit core timer + T3OTL + 16-bit auxiliary timer). As long as bit T3OTL is not modified by software, it represents the state of the internal toggle latch, and can be regarded as part of the 33-bit timer. The count directions of the two concatenated timers are not required to be the same. This offers a wide variety of different configurations. T3, which represents the low-order part of the concatenated timer, can operate in timer mode, gated timer mode or counter mode in this case. T3IRQ fGPT T3IN Operating Mode Control BPS1 TxIN 0 MUX TxI Count Core Timer T3 T3R T3OUT Auxiliary Timer Tx TxIRQ Up/Down Edge Count 1 Select TxI.2 Toggle Latch TxI TxR T3R 0 MUX Up/Down 1 TxRC x = 2, 4 MCA05399 Figure 14-15 Concatenation of Core Timer T3 and an Auxiliary Timer User’s Manual GPT, V2.1 14-22 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Auxiliary Timer in Reload Mode Reload Mode for an auxiliary timer Tx is selected by setting bitfield TxM in the respective register TxCON to 100B. In reload mode, the core timer T3 is reloaded with the contents of an auxiliary timer register, triggered by one of two different signals. The trigger signal is selected the same way as the clock source for counter mode (see Table 14-5), i.e. a transition of the auxiliary timer’s input TxIN or the toggle latch T3OTL may trigger the reload. Note: When programmed for reload mode, the respective auxiliary timer (T2 or T4) stops independently of its run flag T2R or T4R. The timer input pin TxIN must be configured as input if it shall trigger a reload operation. T3IRQ fGPT T3IN Operating Mode Control BPS1 TxIN 0 MUX TxI Count T3R Edge 1 Core Timer T3 Toggle Latch T3OUT Up/Down Reload TxIRQ Select TxI.2 TxI Auxiliary Timer Tx x = 2, 4 MCA05400 Figure 14-16 GPT1 Auxiliary Timer in Reload Mode Upon a trigger signal, T3 is loaded with the contents of the respective timer register (T2 or T4) and the respective interrupt request flag (T2IR or T4IR) is set. Note: When a T3OTL transition is selected for the trigger signal, the interrupt request flag T3IR will also be set upon a trigger, indicating T3’s overflow or underflow. Modifications of T3OTL via software will NOT trigger the counter function of T2/T4. To ensure that a transition of the reload input signal applied to TxIN is recognized correctly, its level must be held high or low for a minimum number of module clock cycles, detailed in Section 14.1.5. The reload mode triggered by the T3 toggle latch can be used in a number of different configurations. The following functions can be performed, depending on the selected active transition: User’s Manual GPT, V2.1 14-23 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units • If both a positive and a negative transition of T3OTL are selected to trigger a reload, the core timer will be reloaded with the contents of the auxiliary timer each time it overflows or underflows. This is the standard reload mode (reload on overflow/underflow). • If either a positive or a negative transition of T3OTL is selected to trigger a reload, the core timer will be reloaded with the contents of the auxiliary timer on every second overflow or underflow. • Using this “single-transition” mode for both auxiliary timers allows to perform very flexible Pulse Width Modulation (PWM). One of the auxiliary timers is programmed to reload the core timer on a positive transition of T3OTL, the other is programmed for a reload on a negative transition of T3OTL. With this combination the core timer is alternately reloaded from the two auxiliary timers. Figure 14-17 shows an example for the generation of a PWM signal using the “singletransition” reload mechanism. T2 defines the high time of the PWM signal (reloaded on positive transitions) and T4 defines the low time of the PWM signal (reloaded on negative transitions). The PWM signal can be output on pin T3OUT if T3OE = 1. With this method, the high and low time of the PWM signal can be varied in a wide range. Note: The output toggle latch T3OTL is accessible via software and may be changed, if required, to modify the PWM signal. However, this will NOT trigger the reloading of T3. User’s Manual GPT, V2.1 14-24 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Auxiliary Timer T2 T2IN 0 Edge MUX 1 Reload T2IRQ Select T2I.2 T2I T3IRQ fGPT T3IN Operating Mode Control BPS1 T4IN 0 MUX T3I Count T3R Edge 1 Core Timer T3 Toggle Latch T3OUT Up/Down Reload T4IRQ Select T4I.2 T4I Auxiliary Timer T4 MCA05401 Figure 14-17 GPT1 Timer Reload Configuration for PWM Generation Note: Although possible, selecting the same reload trigger event for both auxiliary timers should be avoided. In such a case, both reload registers would try to load the core timer at the same time. If this combination is selected, T2 is disregarded and the contents of T4 is reloaded. User’s Manual GPT, V2.1 14-25 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Auxiliary Timer in Capture Mode Capture mode for an auxiliary timer Tx is selected by setting bitfield TxM in the respective register TxCON to 101B. In capture mode, the contents of the core timer T3 are latched into an auxiliary timer register in response to a signal transition at the respective auxiliary timer’s external input pin TxIN. The capture trigger signal can be a positive, a negative, or both a positive and a negative transition. The two least significant bits of bitfield TxI select the active transition (see Table 14-5). Bit 2 of TxI is irrelevant for capture mode and must be cleared (TxI.2 = 0). Note: When programmed for capture mode, the respective auxiliary timer (T2 or T4) stops independently of its run flag T2R or T4R. T3IRQ fGPT T3IN Operating Mode Control BPS1 T3I Count T3R Edge TxIN Core Timer T3 Up/Down Toggle Latch T3OUT to Ty Capture TxIRQ Select TxI Auxiliary Timer Tx x = 2, 4 y = 4, 2 MCA05402 Figure 14-18 GPT1 Auxiliary Timer in Capture Mode Upon a trigger (selected transition) at the corresponding input pin TxIN the contents of the core timer are loaded into the auxiliary timer register and the associated interrupt request flag TxIR will be set. For capture mode operation, the respective timer input pin TxIN must be configured as input. To ensure that a transition of the capture input signal applied to TxIN is recognized correctly, its level must be held high or low for a minimum number of module clock cycles, detailed in Section 14.1.5. User’s Manual GPT, V2.1 14-26 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.5 GPT1 Clock Signal Control All actions within the timer block GPT1 are triggered by transitions of its basic clock. This basic clock is derived from the system clock by a basic block prescaler, controlled by bitfield BPS1 in register T3CON (see Figure 14-2). The count clock can be generated in two different ways: • Internal count clock, derived from GPT1’s basic clock via a programmable prescaler, is used for (gated) timer mode. • External count clock, derived from the timer’s input pin(s), is used for counter mode. For both ways, the basic clock determines the maximum count frequency and the timer’s resolution: Table 14-6 Basic Clock Selection for Block GPT1 Block Prescaler1) BPS1 = 01B BPS1 = 00B2) BPS1 = 11B BPS1 = 10B Prescaling Factor for GPT1: F(BPS1) F(BPS1) =4 F(BPS1) =8 F(BPS1) = 16 F(BPS1) = 32 Maximum External Count Frequency fGPT/8 fGPT/16 fGPT/32 fGPT/64 Input Signal Stable Time 4 × tGPT 8 × tGPT 16 × tGPT 32 × tGPT 1) Please note the non-linear encoding of bitfield BPS1. 2) Default after reset. Internal Count Clock Generation In timer mode and gated timer mode, the count clock for each GPT1 timer is derived from the GPT1 basic clock by a programmable prescaler, controlled by bitfield TxI in the respective timer’s control register TxCON. The count frequency fTx for a timer Tx and its resolution rTx are scaled linearly with lower clock frequencies, as can be seen from the following formula: f GPT f Tx = -------------------------------------------<Txl> F ( BPS1 ) × 2 <Txl> F ( BPS1 ) × 2 r Tx [ µs ] = --------------------------------------------f GPT [ MHz ] [14.1] The effective count frequency depends on the common module clock prescaler factor F(BPS1) as well as on the individual input prescaler factor 2<TxI>. Table 14-7 summarizes the resulting overall divider factors for a GPT1 timer that result from these cascaded prescalers. User’s Manual GPT, V2.1 14-27 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Table 14-8 lists a timer’s parameters (such as count frequency, resolution, and period) resulting from the selected overall prescaler factor and the applied system frequency. Note that some numbers may be rounded. Table 14-7 GPT1 Overall Prescaler Factors for Internal Count Clock Individual Prescaler for Tx Common Prescaler for Module Clock1) BPS1 = 01B BPS1 = 00B BPS1 = 11B BPS1 = 10B TxI = 000B 4 8 16 32 TxI = 001B 8 16 32 64 TxI = 010B 16 32 64 128 TxI = 011B 32 64 128 256 TxI = 100B 64 128 256 512 TxI = 101B 128 256 512 1024 TxI = 110B 256 512 1024 2048 TxI = 111B 512 1024 2048 4096 1) Please note the non-linear encoding of bitfield BPS1. Table 14-8 GPT1 Timer Parameters System Clock = 10 MHz Overall Divider Factor System Clock = 40 MHz Frequency Resolution Period 2.5 MHz 400 ns 26.21 ms 4 10.0 MHz 100 ns 6.55 ms 1.25 MHz 800 ns 52.43 ms 8 5.0 MHz 200 ns 13.11 ms 625.0 kHz 1.6 µs 104.9 ms 16 2.5 MHz 400 ns 26.21 ms 312.5 kHz 3.2 µs 209.7 ms 32 1.25 MHz 800 ns 52.43 ms 156.25 kHz 6.4 µs 419.4 ms 64 625.0 kHz 1.6 µs 104.9 ms 78.125 kHz 12.8 µs 838.9 ms 128 312.5 kHz 3.2 µs 209.7 ms 39.06 kHz 25.6 µs 1.678 s 256 156.25 kHz 6.4 µs 419.4 ms 19.53 kHz 51.2 µs 3.355 s 512 78.125 kHz 12.8 µs 838.9 ms 9.77 kHz 102.4 µs 6.711 s 1024 39.06 kHz 25.6 µs 1.678 s 4.88 kHz 204.8 µs 13.42 s 2048 19.53 kHz 51.2 µs 3.355 s 2.44 kHz 409.6 µs 26.84 s 4096 9.77 kHz 102.4 µs 6.711 s User’s Manual GPT, V2.1 14-28 Frequency Resolution Period V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units External Count Clock Input The external input signals of the GPT1 block are sampled with the GPT1 basic clock (see Figure 14-2). To ensure that a signal is recognized correctly, its current level (high or low) must be held active for at least one complete sampling period, before changing. A signal transition is recognized if two subsequent samples of the input signal represent different levels. Therefore, a minimum of two basic clock periods are required for the sampling of an external input signal. Thus, the maximum frequency of an input signal must not be higher than half the basic clock. Table 14-9 summarizes the resulting requirements for external GPT1 input signals. Table 14-9 GPT1 External Input Signal Limits System Clock = 10 MHz Input Max. Input Min. Level Frequ. Frequency Hold Time Factor 1.25 MHz 400 ns 625.0 kHz 800 ns 312.5 kHz 1.6 µs 156.25 kHz 3.2 µs fGPT/8 fGPT/16 fGPT/32 fGPT/64 GPT1 Input System Clock = 40 MHz Divider Phase Max. Input Min. Level BPS1 Duration Frequency Hold Time 01B 4 × tGPT 5.0 MHz 100 ns 00B 8 × tGPT 2.5 MHz 200 ns 11B 16 × tGPT 1.25 MHz 400 ns 10B 32 × tGPT 625.0 kHz 800 ns These limitations are valid for all external input signals to GPT1, including the external count signals in counter mode and incremental interface mode, the gate input signals in gated timer mode, and the external direction signals. User’s Manual GPT, V2.1 14-29 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.6 GPT1 Timer Registers GPT12E_T2 Timer 2 Count Register GPT12E_T3 Timer 3 Count Register GPT12E_T4 Timer 4 Count Register 15 14 13 12 11 10 SFR (FE40H/20H) Reset Value: 0000H SFR (FE42H/21H) Reset Value: 0000H SFR (FE44H/22H) Reset Value: 0000H 9 8 7 6 5 4 3 2 1 0 Txvalue rwh Field Bits Type Description Txvalue [15:0] rwh User’s Manual GPT, V2.1 Current timer value 14-30 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.1.7 Interrupt Control for GPT1 Timers When a timer overflows from FFFFH to 0000H (when counting up), or when it underflows from 0000H to FFFFH (when counting down), its interrupt request flag (T2IR, T3IR or T4IR) in register TxIC will be set. This will cause an interrupt to the respective timer interrupt vector (T2INT, T3INT or T4INT) or trigger a PEC service, if the respective interrupt enable bit (T2IE, T3IE or T4IE in register TxIC) is set. There is an interrupt control register for each of the three timers. GPT12E_T2IC Timer 2 Intr. Ctrl. Reg. SFR (FF60H/B0H) 15 14 13 12 11 10 9 - - - - - - - - - - - - - - GPT12E_T3IC Timer 3 Intr. Ctrl. Reg. 8 7 6 Reset Value: 0000H 5 GPX T2IR T2IE rw rwh 4 3 14 13 12 11 10 9 - - - - - - - - - - - - - - GPT12E_T4IC Timer 4 Intr. Ctrl. Reg. 8 7 rw rw Reset Value: 0000H 5 GPX T3IR T3IE rw rwh 4 3 14 13 12 11 10 9 - - - - - - - - - - - - - - 8 7 GPX T4IR T4IE rw rwh rw 1 0 GLVL rw rw rw 6 2 ILVL SFR (FF64H/B2H) 15 0 GLVL rw 6 1 ILVL SFR (FF62H/B1H) 15 2 Reset Value: 0000H 5 4 3 2 1 0 ILVL GLVL rw rw Note: Please refer to the general Interrupt Control Register description for an explanation of the control fields. User’s Manual GPT, V2.1 14-31 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2 Timer Block GPT2 From a programmer’s point of view, the GPT2 block is represented by a set of SFRs as summarized below. Those portions of port and direction registers which are used for alternate functions by the GPT2 block are shaded. Control Registers Interrupt Control T5 T5CON T5IC T6 T6CON T6IC Data Registers CAPREL Miscellaneous ID CRIC KSCCFG Tx CAPREL TxCON TxIC GPT2 Timer x Register GPT2 Capture/Reload Register GPT2 Timer x Control Register GPT2 Timer x Interrupt Ctrl . Reg. KSCCFG ID Kernel State Configuration Register Module Identification Register mc_gpt2_registers.vsd Figure 14-19 SFRs Associated with Timer Block GPT2 Both timers of block GPT2 (T5, T6) can run in one of 3 basic modes: Timer Mode, Gated Timer Mode, or Counter Mode. All timers can count up or down. Each timer of GPT2 is controlled by a separate control register TxCON. Each timer has an input pin TxIN (alternate pin function) associated with it, which serves as the gate control in gated timer mode, or as the count input in counter mode. The count direction (up/down) may be programmed via software or may be dynamically altered by a signal at the External Up/Down control input TxEUD (alternate pin function). An overflow/underflow of core timer T6 is indicated by the Output Toggle Latch T6OTL, whose state may be output on the associated pin T6OUT (alternate pin function). The auxiliary timer T5 may additionally be concatenated with core timer T6 (through T6OTL). The Capture/Reload register CAPREL can be used to capture the contents of timer T5, or to reload timer T6. A special mode facilitates the use of register CAPREL for both functions at the same time. This mode allows frequency multiplication. The capture function is triggered by the input pin CAPIN, or by GPT1 timer’s T3 input lines T3IN and T3EUD. The reload function is triggered by an overflow or underflow of timer T6. Overflows/underflows of timer T6 may also clock the timers of the CAPCOM units. The current contents of each timer can be read or modified by the CPU by accessing the corresponding timer count registers T5 or T6, located in the non-bitaddressable SFR User’s Manual GPT, V2.1 14-32 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units space (see Section 14.2.7). When any of the timer registers is written to by the CPU in the state immediately preceding a timer increment, decrement, reload, or capture operation, the CPU write operation has priority in order to guarantee correct results. The interrupts of GPT2 are controlled through the Interrupt Control Registers TxIC. These registers are not part of the GPT2 block. The input and output lines of GPT2 are connected to pins of Ports P3 and P5. The control registers for the port functions are located in the respective port modules. Note: The timing requirements for external input signals can be found in Section 14.2.6, Section 14.4 summarizes the module interface signals, including pins. T6CON.BPS2 f GPT 2n: 1 Basic clock Interrupt Request (T5IR) GPT2 Timer T5 T5IN T5EUD T5 Mode Control U/D Clear Capture CAPIN T3IN/ T3EUD CAPREL Mode Control GPT2 CAPREL Interrupt Request (CRIR) Reload Interrupt Request (T6IR) Clear Toggle FF GPT2 Timer T6 T6IN T6 Mode Control U/D T6OTL T6OUT T6OUF T6EUD mc_gpt0108_bldiax4.vsd Figure 14-20 GPT2 Block Diagram User’s Manual GPT, V2.1 14-33 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.1 GPT2 Core Timer T6 Control The current contents of the core timer T6 are reflected by its count register T6. This register can also be written to by the CPU, for example, to set the initial start value. The core timer T6 is configured and controlled via its bitaddressable control register T6CON. GPT12E_T6CON Timer 6 Control Register 15 14 13 12 11 T6 T6 SR CLR - BPS2 rw - rw rw SFR (FF48H/A4H) 10 9 8 7 T6 T6 T6 T6 OTL OE UDE UD rwh rw rw rw 6 Reset Value: 0000H 5 4 3 2 1 T6R T6M T6I rw rw rw 0 Field Bits Type Description T6SR 15 rw Timer 6 Reload Mode Enable 0B Reload from register CAPREL Disabled 1B Reload from register CAPREL Enabled T6CLR 14 rw Timer T6 Clear Enable Bit 0B Timer T6 is not cleared on a capture event 1B Timer T6 is cleared on a capture event BPS2 [12:11] rw GPT2 Block Prescaler Control Selects the basic clock for block GPT2 (see also Section 14.2.6) 00B fGPT/4 01B fGPT/2 10B fGPT/16 11B fGPT/8 T6OTL 10 rwh Timer T6 Overflow Toggle Latch Toggles on each overflow/underflow of T6. Can be set or reset by software (see separate description) T6OE 9 rw Overflow/Underflow Output Enable 0B Alternate Output Function Disabled 1B State of T6 toggle latch is output on pin T6OUT T6UDE 8 rw Timer T6 External Up/Down Enable1) 0B Input T6EUD is disconnected 1B Direction influenced by input T6EUD User’s Manual GPT, V2.1 14-34 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description T6UD 7 rw Timer T6 Up/Down Control1) 0B Timer T6 counts up 1B Timer T6 counts down T6R 6 rw Timer T6 Run Bit Timer T6 stops 0B Timer T6 runs 1B T6M [5:3] rw Timer T6 Mode Control (Basic Operating Mode) 000B Timer Mode 001B Counter Mode 010B Gated Timer Mode with gate active low 011B Gated Timer Mode with gate active high 100B Reserved. Do not use this combination. 101B Reserved. Do not use this combination. 110B Reserved. Do not use this combination. 111B Reserved. Do not use this combination. T6I [2:0] rw Timer T6 Input Parameter Selection Depends on the operating mode, see respective sections for encoding: Table 14-15 for Timer Mode and Gated Timer Mode Table 14-11 for Counter Mode 1) See Table 14-10 for encoding of bits T6UD and T6UDE. User’s Manual GPT, V2.1 14-35 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer T6 Run Control The core timer T6 can be started or stopped by software through bit T6R (timer T6 run bit). This bit is relevant in all operating modes of T6. Setting bit T6R will start the timer, clearing bit T6R stops the timer. In gated timer mode, the timer will only run if T6R = 1 and the gate is active (high or low, as programmed). Note: When bit T5RC in timer control register T5CON is set, bit T6R will also control (start and stop) the Auxiliary Timer T5. Count Direction Control The count direction of the GPT2 timers (core timer and auxiliary timer) can be controlled either by software or by the external input pin TxEUD (Timer Tx External Up/Down Control Input). These options are selected by bits TxUD and TxUDE in the respective control register TxCON. When the up/down control is provided by software (bit TxUDE = 0), the count direction can be altered by setting or clearing bit TxUD. When bit TxUDE = 1, pin TxEUD is selected to be the controlling source of the count direction. However, bit TxUD can still be used to reverse the actual count direction, as shown in Table 14-10. The count direction can be changed regardless of whether or not the timer is running. Table 14-10 GPT2 Timer Count Direction Control Pin TxEUD Bit TxUDE Bit TxUD Count Direction X 0 0 Count Up X 0 1 Count Down 0 1 0 Count Up 1 1 0 Count Down 0 1 1 Count Down 1 1 1 Count Up User’s Manual GPT, V2.1 14-36 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer 6 Output Toggle Latch The overflow/underflow signal of timer T6 is connected to a block named ‘Toggle Latch’, shown in the timer mode diagrams. Figure 14-21 illustrates the details of this block. An overflow or underflow of T6 will clock two latches: The first latch represents bit T6OTL in control register T6CON. The second latch is an internal latch toggled by T6OTL’s output. Both latch outputs are connected to the input control block of the auxiliary timer T5. The output level of the shadow latch will match the output level of T6OTL, but is delayed by one clock cycle. When the T6OTL value changes, this will result in a temporarily different output level from T6OTL and the shadow latch, which can trigger the selected count event in T5. When software writes to T6OTL, both latches are set or cleared simultaneously. In this case, both signals to the auxiliary timers carry the same level and no edge will be detected. Bit T6OE (overflow/underflow output enable) in register T6CON enables the state of T6OTL to be monitored via an external pin T6OUT. When T6OTL is linked to an external port pin (must be configured as output), T6OUT can be used to control external HW. If T6OE = 1, pin T6OUT outputs the state of T6OTL. If T6OE = 0, pin T6OUT outputs a high level (while it selects the timer output signal). As can be seen from Figure 14-21, when latch T6OTL is modified by software to determine the state of the output line, also the internal shadow latch is set or cleared accordingly. Therefore, no trigger condition is detected by T5 in this case. Set/Clear (SW) 1 Core Timer Overflow/ Underflow 1 Shadow Latch TxOTL Toggle Latch Logic 0 MUX TxOE TxOUT To Port Logic To Aux. Timer Input Logic mc_gpt0106_otl.vsd Figure 14-21 Block Diagram of the Toggle Latch Logic of Core Timer T6 Note: T6 is also used to clock the timers in the CAPCOM units. For this purpose, there is a direct internal connection between the T6 overflow/underflow line and the CAPCOM timers (signal T6OUF). User’s Manual GPT, V2.1 14-37 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.2 GPT2 Core Timer T6 Operating Modes Timer T6 can operate in one of several modes. Timer 6 in Timer Mode Timer mode for the core timer T6 is selected by setting bitfield T6M in register T6CON to 000B. In this mode, T6 is clocked with the module’s input clock fGPT divided by two programmable prescalers controlled by bitfields BPS2 and T6I in register T6CON. Please see Section 14.2.6 for details on the input clock options. T6IRQ fGPT Prescaler fT6 Count Core Timer T6 Toggle Latch T6OUT to T5/ BPS2 T6I CAPREL T6R T6OUF T6UD 0 =1 MUX 1 Up/Down T6EUD T6UDE MCB05403_X4 Figure 14-22 Block Diagram of Core Timer T6 in Timer Mode User’s Manual GPT, V2.1 14-38 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Gated Timer Mode Gated timer mode for the core timer T6 is selected by setting bitfield T6M in register T6CON to 010B or 011B. Bit T6M.0 (T6CON.3) selects the active level of the gate input. The same options for the input frequency are available in gated timer mode as in timer mode (see Section 14.2.6). However, the input clock to the timer in this mode is gated by the external input pin T6IN (Timer T6 External Input). To enable this operation, the associated pin T6IN must be configured as input (the corresponding direction control bit must contain 0). T6IRQ fGPT Prescaler BPS2 Gate Ctrl. fT6 Count Core Timer T6 Toggle Latch T6OUT to T5, T6I T6R T6IN Clear CAPREL T6OUF T6UD 0 =1 MUX 1 Up/Down T6EUD T6UDE MCB05404_X4 Figure 14-23 Block Diagram of Core Timer T6 in Gated Timer Mode If T6M = 010B, the timer is enabled when T6IN shows a low level. A high level at this line stops the timer. If T6M = 011B, line T6IN must have a high level in order to enable the timer. Additionally, the timer can be turned on or off by software using bit T6R. The timer will only run if T6R is 1 and the gate is active. It will stop if either T6R is 0 or the gate is inactive. Note: A transition of the gate signal at pin T6IN does not cause an interrupt request. User’s Manual GPT, V2.1 14-39 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Counter Mode Counter mode for the core timer T6 is selected by setting bitfield T6M in register T6CON to 001B. In counter mode, timer T6 is clocked by a transition at the external input pin T6IN. The event causing an increment or decrement of the timer can be a positive, a negative, or both a positive and a negative transition at this line. Bitfield T6I in control register T6CON selects the triggering transition (see Table 14-11). T6IRQ Edge Count T6IN Core Timer T6 Toggle Latch T6OUT Select to T5, T6R T6I Clear CAPREL T6OUF T6UD 0 =1 MUX 1 Up/Down T6EUD T6UDE MCB05405_X4 Figure 14-24 Block Diagram of Core Timer T6 in Counter Mode Table 14-11 GPT2 Core Timer T6 (Counter Mode) Input Edge Selection T6I Triggering Edge for Counter Increment/Decrement 000B None. Counter T6 is disabled 001B Positive transition (rising edge) on T6IN 010B Negative transition (falling edge) on T6IN 011B Any transition (rising or falling edge) on T6IN 1XXB Reserved. Do not use this combination For counter mode operation, pin T6IN must be configured as input (the respective direction control bit DPx.y must be 0). The maximum input frequency allowed in counter mode depends on the selected prescaler value. To ensure that a transition of the count input signal applied to T6IN is recognized correctly, its level must be held high or low for a minimum number of module clock cycles before it changes. This information can be found in Section 14.2.6. User’s Manual GPT, V2.1 14-40 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.3 GPT2 Auxiliary Timer T5 Control Auxiliary timer T5 can be configured for timer mode, gated timer mode, or counter mode with the same options for the timer frequencies and the count signal as the core timer T6. In addition to these 3 counting modes, the auxiliary timer can be concatenated with the core timer. The contents of T5 may be captured to register CAPREL upon an external or an internal trigger. The start/stop function of the auxiliary timers can be remotely controlled by the T6 run control bit. Several timers may thus be controlled synchronously. The current contents of the auxiliary timer are reflected by its count register T5. This register can also be written to by the CPU, for example, to set the initial start value. The individual configurations for timer T5 are determined by its bitaddressable control register T5CON. Some bits in this register also control the function of the CAPREL register. Note that functions which are present in all timers of block GPT2 are controlled in the same bit positions and in the same manner in each of the specific control registers. Note: The auxiliary timer has no output toggle latch and no alternate output function. GPT12E_T5CON Timer 5 Control Register 15 14 13 12 SFR (FF46H/A3H) 11 10 T5 T5 SC CLR CI - CT3 rw rw - rw rw 9 8 7 T5 T5 T5 RC UDE UD rw rw rw 6 Reset Value: 0000H 5 4 3 2 1 T5R T5M T5I rw rw rw Field Bits Type Description T5SC 15 rw Timer 5 Capture Mode Enable 0B Capture into register CAPREL Disabled 1B Capture into register CAPREL Enabled T5CLR 14 rw Timer T5 Clear Enable Bit 0B Timer T5 is not cleared on a capture event 1B Timer T5 is cleared on a capture event CI [13:12] rw User’s Manual GPT, V2.1 0 Register CAPREL Capture Trigger Selection1) 00B Capture disabled 01B Positive transition (rising edge) on CAPIN2) or any transition on T3IN 10B Negative transition (falling edge) on CAPIN or any transition on T3EUD 11B Any transition (rising or falling edge) on CAPIN or any transition on T3IN or T3EUD 14-41 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description CT3 10 rw Timer T3 Capture Trigger Enable 0B Capture trigger from input line CAPIN 1B Capture trigger from T3 input lines T3IN and/or T3EUD T5RC 9 rw Timer T5 Remote Control Timer T5 is controlled by its own run bit T5R 0B 1B Timer T5 is controlled by the run bit T6R of core timer 6, not by bit T5R T5UDE 8 rw Timer T5 External Up/Down Enable3) 0B Input T5EUD is disconnected 1B Direction influenced by input T5EUD T5UD 7 rw Timer T5 Up/Down Control3) 0B Timer T5 counts up 1B Timer T5 counts down T5R 6 rw Timer T5 Run Bit 0B Timer T5 stops 1B Timer T5 runs Note: This bit only controls timer T5 if bit T5RC = 0. T5M [5:3] rw Timer T5 Mode Control (Basic Operating Mode) 000B Timer Mode 001B Counter Mode 010B Gated Timer Mode with gate active low 011B Gated Timer Mode with gate active high 1XXB Reserved. Do not use this combination T5I [2:0] rw Timer T5 Input Parameter Selection Depends on the operating mode, see respective sections for encoding: Table 14-15 for Timer Mode and Gated Timer Mode Table 14-11 for Counter Mode 1) To define the respective trigger source signal, also bit CT3 must be regarded (see Table 14-13). 2) Rising edge must be selected if capturing is triggered by the internal GPT1 read signals (see register PISEL and “Combined Capture Modes” on Page 14-53). 3) See Table 14-10 for encoding of bits T5UD and T5UDE. User’s Manual GPT, V2.1 14-42 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer T5 Run Control The auxiliary timer T5 can be started or stopped by software in two different ways: • Through the associated timer run bit (T5R). In this case it is required that the respective control bit T5RC = 0. • Through the core timer’s run bit (T6R). In this case the respective remote control bit must be set (T5RC = 1). The selected run bit is relevant in all operating modes of T5. Setting the bit will start the timer, clearing the bit stops the timer. In gated timer mode, the timer will only run if the selected run bit is set and the gate is active (high or low, as programmed). Note: If remote control is selected T6R will start/stop timer T6 and the auxiliary timer T5 synchronously. User’s Manual GPT, V2.1 14-43 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.4 GPT2 Auxiliary Timer T5 Operating Modes The operation of the auxiliary timer in the basic operating modes is almost identical with the core timer’s operation, with very few exceptions. Additionally, some combined operating modes can be selected. Timer T5 in Timer Mode Timer Mode for the auxiliary timer T5 is selected by setting its bitfield T5M in register T5CON to 000B. fGPT fT5 Prescaler BPS2 Count T5I Auxiliary Timer T5 T5IRQ Clear T5R T6R 0 MUX 1 T5RC T5UD 0 =1 MUX 1 Up/Down T5EUD T5UDE MCB05406_X4 Figure 14-25 Block Diagram of Auxiliary Timer T5 in Timer Mode User’s Manual GPT, V2.1 14-44 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer T5 in Gated Timer Mode Gated timer mode for the auxiliary timer T5 is selected by setting bitfield T5M in register T5CON to 010B or 011B. Bit T5M.0 (T5CON.3) selects the active level of the gate input. Note: A transition of the gate signal at line T5IN does not cause an interrupt request. fGPT Prescaler BPS2 Gate Ctrl. fT5 Count Auxiliary Timer T5 T5IRQ T5I T5IN Clear T5R T6R 0 MUX 1 T5RC T5UD 0 =1 MUX 1 Up/Down T5EUD T5UDE MCB05407_X4 Figure 14-26 Block Diagram of Auxiliary Timer T5 in Gated Timer Mode Note: There is no output toggle latch for T5. Start/stop of the auxiliary timer can be controlled locally or remotely. Timer T5 in Counter Mode Counter mode for auxiliary timer T5 is selected by setting bitfield T5M in register T5CON to 001B. In counter mode, the auxiliary timer can be clocked either by a transition at its external input line T5IN, or by a transition of timer T6’s toggle latch T6OTL. The event causing an increment or decrement of a timer can be a positive, a negative, or both a positive and a negative transition at either the respective input pin or at the toggle latch. Bitfield T5I in control register T5CON selects the triggering transition (see Table 14-12). User’s Manual GPT, V2.1 14-45 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units T5IN T6 Toggle Latch 0 Edge MUX Count 1 Auxiliary Timer T5 T5IRQ Select T5I.2 T5R T6R T5I 0 Clear MUX 1 T5RC T5UD 0 =1 MUX Up/Down 1 T5EUD T5UDE MCB05408_X4 Figure 14-27 Block Diagram of Auxiliary Timer T5 in Counter Mode Table 14-12 GPT2 Auxiliary Timer (Counter Mode) Input Edge Selection T5I Triggering Edge for Counter Increment/Decrement X00B None. Counter T5 is disabled 001B Positive transition (rising edge) on T5IN 010B Negative transition (falling edge) on T5IN 011B Any transition (rising or falling edge) on T5IN 101B Positive transition (rising edge) of T6 toggle latch T6OTL 110B Negative transition (falling edge) of T6 toggle latch T6OTL 111B Any transition (rising or falling edge) of T6 toggle latch T6OTL Note: Only state transitions of T6OTL which are caused by the overflows/underflows of T6 will trigger the counter function of T5. Modifications of T6OTL via software will NOT trigger the counter function of T5. For counter operation, pin T5IN must be configured as input (the respective direction control bit DPx.y must be 0). The maximum input frequency allowed in counter mode depends on the selected prescaler value. To ensure that a transition of the count input signal applied to T5IN is recognized correctly, its level must be held high or low for a minimum number of module clock cycles before it changes. This information can be found in Section 14.2.6. User’s Manual GPT, V2.1 14-46 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Timer Concatenation Using the toggle bit T6OTL as a clock source for the auxiliary timer in counter mode concatenates the core timer T6 with the auxiliary timer T5. This concatenation forms either a 32-bit or a 33-bit timer/counter, depending on which transition of T6OTL is selected to clock the auxiliary timer. • 32-bit Timer/Counter: If both a positive and a negative transition of T6OTL are used to clock the auxiliary timer, this timer is clocked on every overflow/underflow of the core timer T6. Thus, the two timers form a 32-bit timer. • 33-bit Timer/Counter: If either a positive or a negative transition of T6OTL is selected to clock the auxiliary timer, this timer is clocked on every second overflow/underflow of the core timer T6. This configuration forms a 33-bit timer (16-bit core timer + T6OTL + 16-bit auxiliary timer). As long as bit T6OTL is not modified by software, it represents the state of the internal toggle latch, and can be regarded as part of the 33-bit timer. The count directions of the two concatenated timers are not required to be the same. This offers a wide variety of different configurations. T6, which represents the low-order part of the concatenated timer, can operate in timer mode, gated timer mode or counter mode in this case. T6IRQ fGPT T6IN Operating Mode Control BPS2 T5IN 0 MUX T6I Count Core Timer T6 Clear T6R Edge Select T5I.2 T5I T5R T6R 0 MUX T6OUT Auxiliary Timer T5 T5IRQ Up/Down Count 1 Toggle Latch Clear Up/Down 1 T5RC MCA05409 Figure 14-28 Concatenation of Core Timer T6 and Auxiliary Timer T5 User’s Manual GPT, V2.1 14-47 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.5 GPT2 Register CAPREL Operating Modes The Capture/Reload register CAPREL can be used to capture the contents of timer T5, or to reload timer T6. A special mode facilitates the use of register CAPREL for both functions at the same time. This mode allows frequency multiplication. The capture function is triggered by the input pin CAPIN or by GPT1 timer’s T3 input lines T3IN and T3EUD. The reload function is triggered by an overflow or underflow of timer T6. In addition to the capture function, the capture trigger signal can also be used to clear the contents of timers T5 and T6 individually. The functions of register CAPREL are controlled via several bit(field)s in the timer control registers T5CON and T6CON. GPT2 Capture/Reload Register CAPREL in Capture Mode Capture mode for register CAPREL is selected by setting bit T5SC in control register T5CON (set bitfield CI in register T5CON to a non-zero value to select a trigger signal). In capture mode, the contents of the auxiliary timer T5 are latched into register CAPREL in response to a signal transition at the selected external input pin(s). Bit CT3 selects the external input line CAPIN or the input lines T3IN and/or T3EUD of GPT1 timer T3 as the source for a capture trigger. Either a positive, a negative, or both a positive and a negative transition at line CAPIN can be selected to trigger the capture function, or transitions on input T3IN or input T3EUD or both inputs, T3IN and T3EUD. The active edge is controlled by bitfield CI in register T5CON. Table 14-13 summarizes these options. Table 14-13 CAPREL Register Input Edge Selection CT3 CI Triggering Signal/Edge for Capture Mode X 00B None. Capture Mode is disabled. 0 01B Positive transition (rising edge) on CAPIN. 0 10B Negative transition (falling edge) on CAPIN. 0 11B Any transition (rising or falling edge) on CAPIN. 1 01B Any transition (rising or falling edge) on T3IN. 1 10B Any transition (rising or falling edge) on T3EUD. 1 11B Any transition (rising or falling edge) on T3IN or T3EUD. User’s Manual GPT, V2.1 14-48 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Count Clock Auxiliary Timer T5 T5IRQ Clear Up/Down Edge CAPIN T5CLR Select 0 MUX Capture 1 T3IN T3EUD Signal Select CT3 T5SC CAPREL Register CI CRIRQ Clear T6 T6CLR MCA05410X11 Figure 14-29 GPT2 Register CAPREL in Capture Mode When a selected trigger is detected, the contents of the auxiliary timer T5 are latched into register CAPREL and the interrupt request line CRIRQ is activated. The same event can optionally clear timer T5 and/or timer T6. This option is enabled by bit T5CLR in register T5CON and bit T6CLR in register T6CON, respectively. If TxCLR = 0 the contents of timer Tx is not affected by a capture. If TxCLR = 1 timer Tx is cleared after the current timer T5 value has been latched into register CAPREL. Note: Bit T5SC only controls whether or not a capture is performed. If T5SC is cleared the external input pin(s) can still be used to clear timer T5 and/or T6, or as external interrupt input(s). This interrupt is controlled by the CAPREL interrupt control register CRIC. When capture triggers T3IN or T3EUD are enabled (CT3 = 1), register CAPREL captures the contents of T5 upon transitions of the selected input(s). These values can be used to measure T3’s input signals. This is useful, for example, when T3 operates in User’s Manual GPT, V2.1 14-49 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units incremental interface mode, in order to derive dynamic information (speed, acceleration) from the input signals. For capture mode operation, the selected pins CAPIN, T3IN, or T3EUD must be configured as input. To ensure that a transition of a trigger input signal applied to one of these inputs is recognized correctly, its level must be held high or low for a minimum number of module clock cycles, detailed in Section 14.2.6. GPT2 Capture/Reload Register CAPREL in Reload Mode Reload mode for register CAPREL is selected by setting bit T6SR in control register T6CON. In reload mode, the core timer T6 is reloaded with the contents of register CAPREL, triggered by an overflow or underflow of T6. This will not activate the interrupt request line CRIRQ associated with the CAPREL register. However, interrupt request line T6IRQ will be activated, indicating the overflow/underflow of T6. CAPREL Register Reload T6SR T6IRQ Count Clock Core Timer T6 Up/Down Toggle Latch T6OUT T6OUF to T5 MCA05411 Figure 14-30 GPT2 Register CAPREL in Reload Mode User’s Manual GPT, V2.1 14-50 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units GPT2 Capture/Reload Register CAPREL in Capture-And-Reload Mode Since the reload function and the capture function of register CAPREL can be enabled individually by bits T5SC and T6SR, the two functions can be enabled simultaneously by setting both bits. This feature can be used to generate an output frequency that is a multiple of the input frequency. Count Clock Auxiliary Timer T5 T5IRQ Clear Up/Down Edge CAPIN T5CLR Select 0 MUX Capture 1 T3IN T3EUD Edge CT3 T5SC CAPREL Register Select CI CRIRQ Reload Clear T6SR T6IRQ T6CLR Count Clock Core Timer T6 Toggle Latch Up/Down T6OUT T6OUF to T5 MCA05412X11 Figure 14-31 GPT2 Register CAPREL in Capture-And-Reload Mode This combined mode can be used to detect consecutive external events which may occur aperiodically, but where a finer resolution, that means, more ‘ticks’ within the time between two external events is required. For this purpose, the time between the external events is measured using timer T5 and the CAPREL register. Timer T5 runs in timer mode counting up with a frequency of e.g. fGPT/32. The external events are applied to pin CAPIN. When an external event occurs, User’s Manual GPT, V2.1 14-51 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units the contents of timer T5 are latched into register CAPREL and timer T5 is cleared (T5CLR = 1). Thus, register CAPREL always contains the correct time between two events, measured in timer T5 increments. Timer T6, which runs in timer mode counting down with a frequency of e.g. fGPT/4, uses the value in register CAPREL to perform a reload on underflow. This means, the value in register CAPREL represents the time between two underflows of timer T6, now measured in timer T6 increments. Since (in this example) timer T6 runs 8 times faster than timer T5, it will underflow 8 times within the time between two external events. Thus, the underflow signal of timer T6 generates 8 ‘ticks’. Upon each underflow, the interrupt request line T6IRQ will be activated and bit T6OTL will be toggled. The state of T6OTL may be output on pin T6OUT. This signal has 8 times more transitions than the signal which is applied to pin CAPIN. Note: The underflow signal of Timer T6 can furthermore be used to clock one or more of the timers of the CAPCOM units, which gives the user the possibility to set compare events based on a finer resolution than that of the external events. This connection is accomplished via signal T6OUF. Capture Correction A certain deviation of the output frequency is generated by the fact that timer T5 will count actual time units (e.g. T5 running at 1 MHz will count up to the value 64H/100D for a 10 kHz input signal), while T6OTL will only toggle upon an underflow of T6 (i.e. the transition from 0000H to FFFFH). In the above mentioned example, T6 would count down from 64H, so the underflow would occur after 101 timing ticks of T6. The actual output frequency then is 79.2 kHz, instead of the expected 80 kHz. Another possibility is to use T6 overflows. In this case, T5 counts down and T6 counts up. Upon a signal transition on pin CAPIN, the count value in T5 is captured into CAPREL and T5 is cleared to 0000H. In its next clock cycle, T5 underflows to FFFFH, and continues to count down with the following clocks. T6 is reloaded from CAPREL upon an overflow, and continues to count up with its following clock cycles (8 times faster in the above example). In this case, T5 and T6 count the same number of steps with their respective internal count frequency. In the above example, T5 running at 1 MHz will count down to the value FF9CH/-100D for a 10 kHz input signal applied at CAPIN, while T6 counts up from FF9CH through FFFFH to 0000H. So the overflow occurs after 100 timing ticks of T6, and the actual output frequency at T6OUT then is the expected 80 kHz. However, in this case CAPREL does not directly contain the time between two CAPIN events, but rather its 2's complement. Software will have to convert this value, if it is required for the operation. User’s Manual GPT, V2.1 14-52 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Combined Capture Modes For incremental interface applications in particular, several timer features can be combined to obtain dynamic information such as speed, acceleration, or deceleration. The current position itself can be obtained directly from the timer register (T2, T3, T4). The time information to determine the dynamic parameters is generated by capturing the contents of the free-running timer T5 into register CAPREL: Capturing on sensor signal transitions is available for timer T3 inputs. This mode is selected by setting bit CT3 and selecting the intended signal(s) via bitfield CI in register T5CON. CAPREL then indicates the time between two selected transitions (measured in T5 counts). These operating modes directly support the measurement of position and rotational speed. Acceleration and deceleration can then be determined by evaluating subsequent speed measurements. User’s Manual GPT, V2.1 14-53 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.6 GPT2 Clock Signal Control All actions within the timer block GPT2 are triggered by transitions of its basic clock. This basic clock is derived from the system clock by a basic block prescaler, controlled by bitfield BPS2 in register T6CON (see Figure 14-20). The count clock can be generated in two different ways: • Internal count clock, derived from GPT2’s basic clock via a programmable prescaler, is used for (gated) timer mode. • External count clock, derived from the timer’s input pin(s), is used for counter mode. For both ways, the basic clock determines the maximum count frequency and the timer’s resolution: Table 14-14 Basic Clock Selection for Block GPT2 BPS2 = 00B2) BPS2 = 11B BPS2 = 10B Prescaling Factor F(BPS2) for GPT2: F(BPS2) = 2 F(BPS2) =4 F(BPS2) =8 F(BPS2) = 16 Maximum External fGPT/4 Count Frequency fGPT/8 fGPT/16 fGPT/32 4 × tGPT 8 × tGPT 16 × tGPT Block Prescaler1) Input Signal Stable Time BPS2 = 01B 2 × tGPT 1) Please note the non-linear encoding of bitfield BPS2. 2) Default after reset. Internal Count Clock Generation In timer mode and gated timer mode, the count clock for each GPT2 timer is derived from the GPT2 basic clock by a programmable prescaler, controlled by bitfield TxI in the respective timer’s control register TxCON. The count frequency fTx for a timer Tx and its resolution rTx are scaled linearly with lower clock frequencies, as can be seen from the following formula: f GPT f Tx = -------------------------------------------<Txl> F ( BPS2 ) × 2 <Txl> F ( BPS2 ) × 2 r Tx [ µs ] = --------------------------------------------f GPT [ MHz ] [14.2] The effective count frequency depends on the common module clock prescaler factor F(BPS2) as well as on the individual input prescaler factor 2<TxI>. Table 14-15 summarizes the resulting overall divider factors for a GPT2 timer that result from these cascaded prescalers. User’s Manual GPT, V2.1 14-54 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Table 14-15 GPT2 Overall Prescaler Factors for Internal Count Clock Individual Prescaler for Tx Common Prescaler for Module Clock1) BPS2 = 01B BPS2 = 00B BPS2 = 11B BPS2 = 10B TxI = 000B 2 4 8 16 TxI = 001B 4 8 16 32 TxI = 010B 8 16 32 64 TxI = 011B 16 32 64 128 TxI = 100B 32 64 128 256 TxI = 101B 64 128 256 512 TxI = 110B 128 256 512 1024 TxI = 111B 256 512 1024 2048 1) Please note the non-linear encoding of bitfield BPS2. Table 14-16 lists a timer’s parameters (such as count frequency, resolution, and period) resulting from the selected overall prescaler factor and the applied system frequency. Note that some numbers may be rounded. Table 14-16 GPT2 Timer Parameters System Clock = 10 MHz Overall Divider Factor System Clock = 40 MHz Frequency Resolution Period 5.0 MHz 200 ns 13.11 ms 2 20.0 MHz 50 ns 3.28 ms 2.5 MHz 400 ns 26.21 ms 4 10.0 MHz 100 ns 6.55 ms 1.25 MHz 800 ns 52.43 ms 8 5.0 MHz 200 ns 13.11 ms 625.0 kHz 1.6 µs 104.9 ms 16 2.5 MHz 400 ns 26.21 ms 312.5 kHz 3.2 µs 209.7 ms 32 1.25 MHz 800 ns 52.43 ms 156.25 kHz 6.4 µs 419.4 ms 64 625.0 kHz 1.6 µs 104.9 ms 78.125 kHz 12.8 µs 838.9 ms 128 312.5 kHz 3.2 µs 209.7 ms 39.06 kHz 25.6 µs 1.678 s 256 156.25 kHz 6.4 µs 419.4 ms 19.53 kHz 51.2 µs 3.355 s 512 78.125 kHz 12.8 µs 838.9 ms 9.77 kHz 102.4 µs 6.711 s 1024 39.06 kHz 25.6 µs 1.678 s 4.88 kHz 204.8 µs 13.42 s 2048 19.53 kHz 51.2 µs 3.355 s User’s Manual GPT, V2.1 14-55 Frequency Resolution Period V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units External Count Clock Input The external input signals of the GPT2 block are sampled with the GPT2 basic clock (see Figure 14-20). To ensure that a signal is recognized correctly, its current level (high or low) must be held active for at least one complete sampling period, before changing. A signal transition is recognized if two subsequent samples of the input signal represent different levels. Therefore, a minimum of two basic clock periods are required for the sampling of an external input signal. Thus, the maximum frequency of an input signal must not be higher than half the basic clock. Table 14-17 summarizes the resulting requirements for external GPT2 input signals. Table 14-17 GPT2 External Input Signal Limits System Clock = 10 MHz Input Max. Input Min. Level Frequ. Frequency Hold Time Factor 2.5 MHz 200 ns 1.25 MHz 400 ns 625.0 kHz 800 ns 312.5 kHz 1.6 µs fGPT/4 fGPT/8 fGPT/16 fGPT/32 GPT2 Divider BPS1 Input System Clock = 40 MHz Phase Max. Input Min. Level Duration Frequency Hold Time 01B 2 × tGPT 10.0 MHz 50 ns 00B 4 × tGPT 5.0 MHz 100 ns 11B 8 × tGPT 2.5 MHz 200 ns 10B 16 × tGPT 1.25 MHz 400 ns These limitations are valid for all external input signals to GPT2, including the external count signals in counter mode and the gate input signals in gated timer mode. User’s Manual GPT, V2.1 14-56 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.7 GPT2 Timer Registers GPT12E_T5 Timer 5 Count Register GPT12E_T6 Timer 6 Count Register 15 14 13 12 11 10 SFR (FE46H/23H) Reset Value: 0000H SFR (FE48H/24H) Reset Value: 0000H 9 8 7 6 5 4 3 2 1 0 Txvalue rwh Field Bits Type Description Txvalue [15:0] rwh Current timer value GPT12E_CAPREL Capture/Reload Register 15 14 13 12 11 SFR (FE4AH/25H) 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 CapRelvalue rwh Field Bits CapRelva [15:0] lue User’s Manual GPT, V2.1 Type Description rwh Current reload value or Captured value 14-57 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.2.8 Interrupt Control for GPT2 Timers and CAPREL When a timer overflows from FFFFH to 0000H (when counting up), or when it underflows from 0000H to FFFFH (when counting down), its interrupt request flag (T5IR or T6IR) in register TxIC will be set. Whenever a transition according to the selection in bit field CI is detected at pin CAPIN, interrupt request flag CRIR in register CRIC is set. Setting any request flag will cause an interrupt to the respective timer or CAPREL interrupt vector (T5INT, T6INT or CRINT) or trigger a PEC service, if the respective interrupt enable bit (T5IE or T6IE in register TxIC, CRIE in register CRIC) is set. There is an interrupt control register for each of the two timers and for the CAPREL register. GPT12E_T5IC Timer 5 Intr. Ctrl. Reg. SFR (FF66H/B3H) 15 14 13 12 11 10 9 - - - - - - - - - - - - - - GPT12E_T6IC Timer 6 Intr. Ctrl. Reg. 8 7 6 Reset Value: 0000H 5 GPX T5IR T5IE rw rwh 4 3 14 13 12 11 10 9 - - - - - - - - - - - - - - GPT12E_CRIC CAPREL Intr. Ctrl. Reg. 8 7 rw rw Reset Value: 0000H 5 GPX T6IR T6IE rw rwh 4 3 14 13 12 11 10 9 - - - - - - - - - - - - - - 8 7 GPX CRIR CRIE rw rwh rw 1 0 GLVL rw rw rw 6 2 ILVL SFR (FF6AH/B5H) 15 0 GLVL rw 6 1 ILVL SFR (FF68H/B4H) 15 2 Reset Value: 0000H 5 4 3 2 1 0 ILVL GLVL rw rw Note: Please refer to the general Interrupt Control Register description for an explanation of the control fields. User’s Manual GPT, V2.1 14-58 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.3 Miscellaneous Registers The following registers are not assigned to a specific timer block. They control general functions and/or give general information: • Register KSCCFG controls the overall operation of the timer module • Register ID indicates the module version GPT12E_KSCCFG Kernel State Configuration Register SFR(FE1CH) 15 14 BP COM 0 w r 13 12 11 10 COMCFG BP SUM 0 rw w r 9 8 Reset Value: 0000H 7 6 SUMCFG BP NOM 0 NOMCFG 0 rw w r rw r Field Bits Type Description MODEN 0 rw 5 4 3 2 1 0 BP MOD MOD EN EN w rw Module Enable This bit enables the module kernel clock and the module functionality. 0B The module is switched off. It does not react on mode control actions and the module clock is switched off immediately (without stop condition). The module does not react on read accesses and ignores write accesses. 1B The module is switched on and can operate. After writing 1 to MODEN, it is recommended to read register KSCCFG to avoid pipeline effects in the control block before accessing other GPT registers. Note: This bit is reset by an application reset. BPMODEN 1 w Bit Protection for MODEN This bit enables the write access to the bit MODEN. It always reads 0. It is only active during the write access cycle. 0B MODEN is not changed. 1B MODEN is updated with the written value. Note: This bit is reset by an application reset. User’s Manual GPT, V2.1 14-59 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description NOMCFG [5:4] rw Normal Operation Mode Configuration This bit field defines the kernel mode applied in normal operation mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 00 or 11. Note: This bit is reset by an application reset. BPNOM 7 w Bit Protection for NOMCFG This bit enables the write access to the bit field NOMCFG. It always reads 0. It is only active during the write access cycle. 0B NOMCFG is not changed. 1B NOMCFG is updated with the written value. Note: This bit is reset by an application reset. SUMCFG [9:8] rw Suspend Mode Configuration This bit field defines the kernel mode applied in suspend mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 01. Note: This bit is reset by a debug reset. BPSUM 11 w Bit Protection for SUMCFG This bit enables the write access to the bit field SUMCFG. It always reads 0. It is only active during the write access cycle. 0B SUMCFG is not changed. 1B SUMCFG is updated with the written value. Note: This bit is reset by a debug reset. COMCFG [13:12] rw Clock Off Mode Configuration This bit field defines the kernel mode applied in clock off mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 10. Note: This bit is reset by an application reset. User’s Manual GPT, V2.1 14-60 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Field Bits Type Description BPCOM 15 w Bit Protection for COMCFG This bit enables the write access to the bit field COMCFG. It always reads 0. It is only active during the write access cycle. 0B COMCFG is not changed. 1B COMCFG is updated with the written value. Note: This bit is reset by an application reset. 0 [3:2], 6, 10, 14 Reserved; returns 0 if read; should be written with 0; r GPT12E_ID Module Identification Register 15 14 13 12 11 10 MEM (FFE6H) 9 8 7 Reset Value: 58XXH 6 5 4 3 MOD_TYPE MOD_REV r r 2 1 0 Field Bits Type Description MOD_REV [7:0] r Module Revision Number MOD_REV defines the revision number. The value of a module revision starts with 01H (first revision). MOD_TYPE [15:8] r Module Identification Number This bitfield defines the module identification number (58H = GPT12E). User’s Manual GPT, V2.1 14-61 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units 14.4 Interfaces of the GPT Module Besides the described intra-module connections, the timer unit blocks GPT1 and GPT2 are connected to their environment in two basic ways (see Figure 14-32): • Internal connections interface the timers with on-chip resources such as clock generation unit, interrupt controller, or other timers. The GPT module is clocked with the XC2300 system clock, so fGPT = fSYS. • External connections interface the timers with external resources via port pins. f SYS = fGPT T2IN GSC Ctrl. T2IRQ T4IRQ T5IRQ T6IRQ T2EUD P4.3 T4IN P4.6 T4EUD P4.7 T3IN T3IRQ Interrupt Control Unit General Purpose Timer Units CRIRQ T3EUD T3OUT T5IN T6OFL P5.3 P5.4 P6.1, P6.3, P7.0 P15.2 T6IN P15.4 T5EUD P15.3 T6EUD CAPCOM2 Unit P4.2 Port Logic System Control Unit CAPIN T6OUT P15.5 P2.10 P6.2, P7.0, MC_GPT0105_MODINTERFACE Figure 14-32 GPT Module Interfaces Port pins to be used for timer input signals must be switched to input (bitfield PC in the respective port control register must be 0xxxB). Port pins to be used for timer output signals must be switched to output and the alternate timer output signal must be selected (bitfield PC in the respective port control register must be 1xxxB). Note: For a description of the port control registers, please refer to Chapter 7. Interrupt nodes to be used for timer interrupt requests must be enabled and programmed to a specific interrupt level. User’s Manual GPT, V2.1 14-62 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) The General Purpose Timer Units Table 14-18 GPT Digital Connections in XC2300 Signal from/to Module I/O to GPT Can be used to/as T2IN P4.2 I count input signal for timer T2 T2EUD P4.3 I direction input signal for timer T2 T2IRQ ICU O interrupt request from timer T2 T3IN P5.3 I count input signal for timer T3 T3EUD P5.4 I direction input signal for timer T3 T3OUT P7.0 O count output signal for timer T3 P6.1 O P6.3 O T3IRQ ICU O interrupt request from timer T3 T4IN P4.6 I count input signal for timer T4 T4EUD P4.7 I direction input signal for timer T4 T4IRQ ICU O interrupt request from timer T4 T5IN P15.2 I count input signal for timer T5 T5EUD P15.3 I direction input signal for timer T5 T5IRQ ICU O interrupt request from timer T5 T6IN P15.4 I count input signal for timer T6 T6EUD P15.5 I direction input signal for timer T6 T6OUT P7.0 O count output signal for timer T6 P6.2 O T6IRQ ICU O interrupt request from timer T6 T6OFL CAPCOM2, SCU(GSC) O over/under-flow signal from timer T6 CAPIN P2.10 I input capture signal CRIRQ ICU O interrupt request from capture control User’s Manual GPT, V2.1 14-63 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15 Real Time Clock The Real Time Clock (RTC) module of the XC2300 basically consists of a chain of prescalers and timers. Its count clock is derived from the auxiliary oscillator or from the prescaled main oscillator. The RTC serves various purposes: • • • 48-bit timer for long term measurements System clock to determine the current time and date (the RTC’s structure supports the direct representation of time and date) Cyclic time based interrupt (can be generated by any timer of the chain) A number of programming options as well as interrupt request signals adjust the operation of the RTC to the application’s requirements. The RTC can continue its operation while the XC2300 is in certain power-saving modes, such that real time date and time information is provided. Control Registers Counter Registers Interrupt Control RTC_T14REL E RTC_T14 E RTC_ISNC E RTCCLKCON RTC_RELH E RTC_RTCH E RTC_IC E RTC_KSCCFG E RTC_RELL E RTC_RTCL T2CON E RTC_CON RTC_CON RTCCLKCON RTC_ISNC RTC_IC RTC_KSCCFG E Data Registers Real Time Clock Control Register RTC Clock Control Register Interrupt Subnode Control Reg. RTC Interrupt Control Register Kernel State Configuration Reg. RTC_T14 RTC_T14REL RTC_RTCH/L RTC_RELH/L Timer T14 Count Register Timer T14 Reload Register RTC Count Registers, High/Low RTC Reload Registers High/Low mc_rtcregx2k.vsd Figure 15-1 SFRs Associated with the RTC Module The RTC module consists of a chain of 3 divider blocks: • • • a selectable 8:1 divider (on - off) the reloadable 16-bit timer T14 the 32-bit RTC timer block (accessible via RTC_RTCH and RTC_RTCL), made of: – the reloadable 10-bit timer CNT0 – the reloadable 6-bit timer CNT1 – the reloadable 6-bit timer CNT2 – the reloadable 10-bit timer CNT3 All timers count upwards. Each of the five timers can generate an interrupt request. All requests are combined to a common node request. Note: The RTC registers are only affected by a power reset in order to maintain the correct system time even when system or application resets are executed. User’s Manual RTC_X8, V2.2 15-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15.1 Defining the RTC Time Base The timer chain of the RTC is clocked with the count clock signal fRTC which is derived from internal sources (oscillators or PLL) or external sources (pins). The currently active clock source is selected by bitfield RTCCLKSEL in register RTCCLKCON. Optionally prescaled by a factor of 32 and/or 8, this is the basic RTC clock. Depending on the operating mode, timer T14 may provide the count increments used by the application and thus determine the input frequency of the RTC timer, that is, the RTC time base (see also Table 15-2). The RTC is also supplied with the system clock fSYS of the XC2300. This clock signal is used to control the RTC’s logic blocks and its bus interface. To synchronize properly to the count clock, the system clock must run at least four times faster than the count clock, this means fSYS ≥ 4 × fCNT. 32:1 fRTC 0 MUX 8:1 MUX 0 1 RUN 1 REFCLK fSYS fCNT RTC Count Clock PRE Async Mode 1 Sync Mode 0 MUX RTC Module Clock RTCCM MC_RTCCLOCK_XX Figure 15-2 RTC Clock Supply Block Diagram For an example, Table 15-1 lists the interrupt period range and the T14 reload values (for a time base of 1 s and 1 ms): Table 15-1 Oscillator Frequency 32.768 kHz User’s Manual RTC_X8, V2.2 RTC Time Base Examples T14 Intr. Period Min. Max. 30.52 µs 16.0 s Reload Value A Reload Value B T14REL Base T14REL Base 8000H/F000H 1.000 s FFDFH/ FFFCH 1.007 ms/ 0.977 ms 15-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock Note: Select one value from the reload value pairs, depending if the 8:1 prescaler is disabled/enabled. Asynchronous Operation When the system clock frequency becomes lower than 4 × fCNT proper synchronization is not possible and count events may be missed. This can be the case, when the XC2300 reduces the system frequency to save power consumption. In these cases the RTC can be switched to Asynchronous Mode (by clearing bit RTCCM in register RTCCLKCON). In this mode the count registers are directly controlled by the count clock independent of the system clock (hence the name). Asynchronous operation ensures correct time-keeping even during power-save modes. However, as no synchronization between the count registers and the bus interface can be maintained in asynchronous mode, the RTC registers cannot be written. Read accesses may interfere with count events and, therefore, must be verified (e.g. by reading the same value with three consecutive read accesses). Note: The access restrictions in asynchronous mode are only meaningful if the system clock is not switched off, of course. Switching Clocking Modes The clocking mode of the RTC (synchronous or asynchronous) is selected via bit RTCCM in register RTCCLKCON. After reset, the RTC operates in Synchronous Mode (RTCCM = 1). The selected clocking mode also affects the access to RTC registers. Bit ACCPOS in register RTC_CON indicates if full register access is possible (ACCPOS = 1, default after reset) or not (ACCPOS = 0). This also indicates the current clocking mode. Attention: Software should poll bit ACCPOS to determine the proper transition to the intended clocking mode. After switching to Asynchronous Mode (RTCCM = 0), bit ACCPOS = 0 indicates proper operation in Asynchronous Mode. In this case the system clock can be stopped or reduced. Note: The clock source for asynchr. mode operation must be selected before switching to asynchr. mode and must only be changed in synchronous mode. After switching to Synchronous Mode, (RTCCM = 1), bit ACCPOS = 1 indicates proper operation in Synchronous Mode. In this case the RTC registers can again be accessed properly (read and write). Note: The RTC might lose a counting event (edge of fCNT) when switching from synchronous mode to asynchronous mode while the 8:1 prescaler is disabled. For these applications it is, therefore, recommended to set up the RTC with the 8:1 prescaler enabled. User’s Manual RTC_X8, V2.2 15-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock Increased RTC Accuracy through Software Correction The accuracy of the XC2300’s RTC is determined by the oscillator frequency and by the respective prescaling factor (excluding or including T14 and the 8:1 prescaler). The accuracy limit generated by the prescaler is due to the quantization of a binary counter (where the average is zero), while the accuracy limit generated by the oscillator frequency is due to the difference between the ideal and real frequencies (and therefore accumulates over time). This effect is predictable and can be compensated. The total accuracy of the RTC can be further increased via software for specific applications that demand a high time accuracy. The key to the improved accuracy is knowledge of the exact oscillator frequency. The relation of this frequency to the expected ideal frequency is a measure of the RTC’s deviation. The number of cycles, N, after which this deviation causes an error of ±1 cycle can be easily computed. So, the only action is to correct the count by ±1 after each series of N cycles. The correction may be made cyclically, for instance, within an interrupt service routine, or by evaluating a formula when the RTC registers are read (for this the respective “last” RTC value must be available somewhere). Note: For the majority of applications, however, the standard accuracy provided by the RTC’s structure will be more than sufficient. Adjusting the current RTC value would require reading and then writing the complete 48-bit value. This can only be accomplished by three successive accesses each. To avoid the hassle of reading/writing multi-word values, the RTC incorporates a correction option to simply add or suppress one count pulse. This is done by setting bit T14INC or T14DEC, respectively, in register RTC_CON. This will add an extra count pulse (T14INC) upon the next count event, or suppress the next count event (T14DEC). The respective bit remains set until its associated action has been performed and is automatically cleared by hardware after this event. Note: Setting both bits, T14INC and T14DEC, at the same time will have no effect on the count values. User’s Manual RTC_X8, V2.2 15-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15.2 RTC Run Control If the RTC shall operate bit RUN in register RTC_CON must be set (default after reset). Bit RUN can be cleared, for example, to exclude certain operation phases from time keeping. Note: A valid count clock fRTC is required for proper RTC operation, of course. The RTC is reset by a power reset, a system/application reset does not affect the RTC registers and its operation (RTC_IC will be reset, however). The initialization software must ensure the proper RTC operating mode. Initialization and Disabling of the RTC Upon a Power-on Reset, register RTC_CON adopts its reset value of 8003H, which enables the RTC and both prescalers (factor = 8 × 32 = 256). The RTC’s clocking mode (synchronous/asynchronous) is selected bit RTCCM in register RTCCLKCON. Upon a Power-on Reset, register RTCCLKCON adopts its reset value of 0006H, which selects synchronous operation mode and the WUT as the clock source. For an application reset that is followed by an initialization of the RTC module, the following steps are recommended: • • • • select synchronous RTC clocking mode, i.e. set bit RTCCLKCON.RTCCM select the intended (running) clock source make sure that bit ACCPOS is set, before writing to RTC registers initialize the RTC When the RTC module is not used and shall be disabled after a Power-on Reset, the following steps are recommended: • • stop the RTC by clearing its run bit RTC_CON.RUN disable the RTC module by clearing its enable bit RTC_KSCCFG.MODEN. When the RTC module operates in asynchronous mode and shall stop in a power saving mode, software must make sure that no active clock signal is selected by the RTC clock multiplexer. User’s Manual RTC_X8, V2.2 15-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock The RTC control register RTC_CON selects the basic operation of the RTC module. RTC_CON Control Register ESFR (F110H/88H) Reset Value: 8003H 15 14 13 12 11 10 9 8 7 6 5 ACC POS - - - - - - - - - - rh - - - - - - - - - - 4 3 2 1 0 REF T14 T14 PRE RUN CLK INC DEC rw rwh rwh rw rw Field Bits Type Description ACCPOS 15 rh RTC Register Access Possible 0 No write access is possible, only asynchronous reads 1 Registers can be read and written REFCLK 4 rw RTC Input Source Prescaler (32:1) Disable 0 Input Prescaler enabled 1 Input Prescaler disabled T14INC 3 rwh Increment Timer T14 Value Setting this bit to 1 adds one count pulse upon the next count event, thus incrementing T14. This bit is cleared by hardware after incrementation. T14DEC 2 rwh Decrement Timer T14 Value Setting this bit to 1 suppresses the next count event, thus decrementing T14. This bit is cleared by hardware after decrementation. PRE 1 rw RTC Input Source Prescaler (8:1) Enable 0 Prescaler disabled 1 Prescaler enabled RUN 0 rw RTC Run Bit 0 RTC stopped 1 RTC runs User’s Manual RTC_X8, V2.2 15-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15.3 RTC Operating Modes The RTC can be configured for several operating modes according to the purpose it is meant to serve. These operating modes are configured by selecting appropriate reload values and interrupt signals. fRTC : 32 RUN MUX MUX :8 PRE REFCLK RTCINT Interrupt Sub Node fCNT CNT INT0 CNT INT1 CNT INT2 CNT INT3 REL-Register T14REL 10 Bits 6 Bits 6 Bits 10 Bits T14 10 Bits 6 Bits 6 Bits 10 Bits T14-Register CNT-Register MCB05568_XX Figure 15-3 RTC Block Diagram RTC Register Access The actual value of the RTC is indicated by the three registers T14, RTCL, and RTCH. As these registers are concatenated to build the RTC counter chain, internal overflows occur while the RTC is running. When reading or writing the RTC value, such internal overflows must be taken into account to avoid reading/writing corrupted values. Care must be taken, when reading the timer(s), as this requires up to three read accesses to the different registers with an inherent time delay between the accesses. An User’s Manual RTC_X8, V2.2 15-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock overflow from T14 to RTCL and/or from RTCL to RTCH might occur between the accesses, which needs to be taken into account appropriately. For example, reading/writing 0000H from/to RTCH and then accessing RTCL could produce a corrupted value as RTCL may overflow before it can be accessed. In this case, RTCH would be 0001H. The same precautions must be taken for T14 and T14REL. Timer T14 and its reload register are accessed via dedicated locations. The four RTC counters CNT3 … CNT0 are accessed via the two 16-bit RTC timer registers, RTCH and RTCL. The associated four reload values REL3 … REL0 are accessed via the two 16-bit RTC reload registers, RELH and RELL. Prescaler T14 and T14 Reload Registers RTC_T14 T14 Count Register 15 14 13 12 ESFR(F0D2H/69H) 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 T14CNT rwh Field Bits Typ Description T14CNT [15:0] rwh T14 counter RTC_T14REL T14 Reload Register 15 14 13 12 ESFR(F0D0H/68H) 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 T14REL rw Field Bits Typ Description T14REL [15:0] rw T14 reload value User’s Manual RTC_X8, V2.2 15-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock RTC_RTCH RTC Timer High Register 15 14 13 12 11 ESFR (F0D6H/6BH) 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 CNT3 CNT2 rwh rwh 1 0 Field Bits Type Description CNTx (x = 3 … 2) [15:6], [5:0] rwh RTC Timer Count Section CNTx An overflow of bitfield CNT2 triggers a count pulse to count section CNT3 followed by a reload of CNT2 from bitfield REL2. In addition, an interrupt request is triggered. RTC_RTCL RTC Timer Low Register 15 14 13 12 11 ESFR (F0D4H/6AH) 10 8 7 6 5 4 CNT1 CNT0 rwh rwh Field Bits CNTx (x = 1 … 0) [15:10], rwh [9:0] User’s Manual RTC_X8, V2.2 9 Reset Value: 0000H Type 3 2 1 0 Description RTC Timer Count Section CNTx An overflow of bitfield CNTx triggers a count pulse to the next count section CNTx+1 followed by a reload of CNTx from bitfield RELx. In addition, an interrupt request is triggered. 15-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock RTC_RELH RTC Reload High Register 15 14 13 12 11 ESFR (F0CEH/67H) 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 REL3 REL2 rw rw 1 Field Bits Type Description RELx (x = 3 … 2) [15:6], [5:0] rw RTC Reload Value RELx This bitfield is copied to bitfield CNTx upon an overflow of count section CNTx. RTC_RELL RTC Reload Low Register 15 14 13 12 11 ESFR (F0CCH/66H) 10 9 8 7 6 Reset Value: 0000H 5 4 REL1 REL0 rw rw Field Bits Type RELx (x = 1 … 0) [15:10], rw [9:0] 0 3 2 1 0 Description RTC Reload Value RELx This bitfield is copied to bitfield CNTx upon an overflow of count section CNTx. Note: The registers of the RTC receive their reset values only upon a power reset. User’s Manual RTC_X8, V2.2 15-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15.4 48-bit Timer Operation The concatenation of timers T14 and COUNT0 … COUNT3 can be regarded as a 48-bit timer which is clocked with the RTC input frequency, optionally divided by the prescaler. The reload registers T14REL, RELL, and RELH must be cleared to produce a true binary 48-bit timer. However, any other reload value may be used. Reload values other than zero must be used carefully, due to the individual sections of the RTC timer with their own individual overflows and reload values. The maximum usable timespan is 248 (≈ 1014) T14 input clocks. Assuming no prescaler, this would equal more than 200 years at a count frequency of 32 kHz. 15.5 System Clock Operation A real time system clock can be maintained that keeps on running also during power saving modes (optionally) that maintain a suitable clock signal and supply voltage and indicates the current time and date. This is possible because the RTC module is only reset and cleared by a power reset. The resolution for this clock information is determined by the input clock of timer T14. By selecting appropriate reload values each cascaded timer can represent directly a part of the current time and/or date. Due to its width, T14 can adjust the RTC to the intended range of operation (time or date). The maximum usable timespan is achieved when T14REL is loaded with 0000H and so T14 divides by 216. System Clock Example The RTC count clock is 32.768 kHz. By selecting appropriate reload values the RTC timers directly indicate the current time (see Figure 15-4 and Table 15-2). 3E8H 04H 04H 018H FFDFH REL3 REL2 REL1 REL0 T14REL fCNT = CNT3 CNT2 CNT1 CNT0 T14 Hours Minutes Seconds 1/1000 Seconds Prescaler 32.768 kHz MCA05414 Figure 15-4 RTC Configuration Example Note: This setup can generate an interrupt request every millisecond, every second, every minute, every hour, or every day. User’s Manual RTC_X8, V2.2 15-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock Each timer in the chain divides the clock by (2<timer_width> - <reload_value>) : 1, as the timers count up. Table 15-2 shows the reload values which must be chosen for a specific scenario (i.e. operating mode of the RTC). Table 15-2 Reload Value Scenarios Day of the Week Time of Day (Figure 15-4) REL3 Formula 2 10 - 24 REL2 REL1 6 6 REL0 2 - 60 2 - 60 2 10 - 1000 T14REL 216 - 33 Rel. Value 3E8H 04H 04H 018H FFDFH Function h m s 1/1000 s Prescaler Intr. Period day hour minute second millisec.1) Formula 210 - 7 26 - 24 26 - 60 210 - 60 216 - 32768 Rel. Value 3F9H 28H 04H 3C4H 8000H Function day h m s Prescaler Intr. Period week day hour minute second 1) T14 errors in the first example (ms) can be compensated either by choosing an adapted value for REL0, or by using software correction. 15.6 Cyclic Interrupt Generation The RTC module can generate an interrupt request whenever one of the timers overflows and is reloaded. This interrupt request may be used, for example, to provide a system time tick independent of the CPU frequency without loading the general purpose timers. The interrupt cycle time can be adjusted by choosing appropriate reload values and by enabling the appropriate interrupt request. In this mode, the other operating modes can be combined. For example, a reload value of T14REL = F9C0H (216 - 1600) generates a T14 interrupt request every 50 ms. Still the subsequent timers can be configured to represent the time or build a binary counter, however with a different time base. User’s Manual RTC_X8, V2.2 15-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15.7 RTC Interrupt Generation The overflow signals of each timer of the RTC timer chain can generate an interrupt request. The RTC’s interrupt subnode control register ISNC combines these requests to activate the common RTC interrupt request line RTC_IRQ. Each timer overflow sets its associated request flag in register ISNC. Individual enable bits for each request flag determine whether this request also activates the common interrupt line. The enabled requests are ORed together on this line (see Figure 15-5). The common interrupt request signal is delayed by 2 system clock cycles due to synchronization. The interrupt handler can determine the source of an interrupt request via the specific request flags and must clear them after appropriate processing (not cleared by hardware). The common node request bit is automatically cleared when the interrupt handler is vectored to. Note: If only one source is enabled, no additional software check is required, of course. Both the individual request and the common interrupt node must be enabled. Register RTC_ISNC CNT3 Overflow Set SW Clear CNT2 Overflow Set SW Clear CNT1 Overflow Set SW Clear CNT0 Overflow Set SW Clear T14 Overflow Set SW Clear CNT3 IR CNT2 IR CNT1 IR CNT0 IR T14 IR & CNT3 IE & CNT2 IE & CNT1 IE _ >1 Interrupt Request RTC_IRQ & CNT0 IE & T14 IE MCB05415 Figure 15-5 Interrupt Block Diagram User’s Manual RTC_X8, V2.2 15-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock RTC_ISNC Interrupt Subnode Ctrl. Reg. ESFR (F10CH/86H) 15 14 13 12 11 10 - - - - - - CNT CNT CNT CNT CNT CNT CNT CNT T14 T14 3IR 3IE 2IR 2IE 1IR 1IE 0IR 0IE IR IE - - - - - - rwh Type 9 8 rw 7 rwh 6 Reset Value: 0000H rw 5 rwh 4 3 rw rwh 2 1 rw 0 rwh Field Bits CNTxIR (x = 3 … 0) 9, 7, 5, rwh 3 Section CNTx Interrupt Request Flag 0 No request pending 1 This source has raised an interrupt request CNTxIE (x = 3 … 0) 8, 6, 4, rw 2 Section CNTx Interrupt Enable Control Bit 0 Interrupt request is disabled 1 Interrupt request is enabled T14IR 1 rwh T14 Overflow Interrupt Request Flag 0 No request pending 1 This source has raised an interrupt request T14IE 0 rw T14 Overflow Interrupt Enable Control Bit 0 Interrupt request is disabled 1 Interrupt request is enabled rw Description Note: The interrupt request flags in register ISNC must be cleared by software. They are not cleared automatically when the service routine is entered. RTC_IC RTC Interrupt Ctrl. Reg. ESFR (F19CH/CEH) 15 14 13 12 11 10 9 8 - - - - - - - GPX - - - - - - - rw 7 6 RTC RTC IR IE rwh rw Reset Value: 0000H 5 4 3 2 1 0 ILVL GLVL rw rw Note: Please refer to the general Interrupt Control Register description for an explanation of the control fields. Register RTC_IC is not part of the RTC module and is reset with any application reset. User’s Manual RTC_X8, V2.2 15-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock 15.8 Miscellaneous Registers RTC_KSCCFG Kernel State Configuration Register ESFR (F010H) 15 14 BP COM 0 w r 13 12 11 10 BP COMCFG SUM rw 0 w r 9 8 7 BP SUMCFG NOM rw w Field Bits Type Description MODEN 0 rw Reset Value: 0001H 6 5 4 3 2 0 NOMCFG 0 r rw r 1 0 BP MOD MOD EN EN w rw Module Enable This bit enables the module kernel clock and the module functionality. 0B The module is switched off. It does not react on mode control actions and the module clock is switched off immediately (without stop condition). The module does not react on read accesses and ignores write accesses. 1B The module is switched on and can operate. After writing 1 to MODEN, it is recommended to read register KSCCFG to avoid pipeline effects in the control block before accessing other RTC registers. Note: This bit is reset by an application reset. BPMODEN 1 w Bit Protection for MODEN This bit enables the write access to the bit MODEN. It always reads 0. It is only active during the write access cycle. 0B MODEN is not changed. 1B MODEN is updated with the written value. Note: This bit is reset by an application reset. User’s Manual RTC_X8, V2.2 15-15 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock Field Bits Type Description NOMCFG [5:4] rw Normal Operation Mode Configuration This bit field defines the kernel mode applied in normal operation mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 00 or 11. Note: This bit is reset by an application reset. BPNOM 7 w Bit Protection for NOMCFG This bit enables the write access to the bit field NOMCFG. It always reads 0. It is only active during the write access cycle. 0B NOMCFG is not changed. 1B NOMCFG is updated with the written value. Note: This bit is reset by an application reset. SUMCFG [9:8] rw Suspend Mode Configuration This bit field defines the kernel mode applied in suspend mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 01. Note: This bit is reset by a debug reset. BPSUM 11 w Bit Protection for SUMCFG This bit enables the write access to the bit field SUMCFG. It always reads 0. It is only active during the write access cycle. 0B SUMCFG is not changed. 1B SUMCFG is updated with the written value. Note: This bit is reset by a debug reset. COMCFG [13:12] rw Clock Off Mode Configuration This bit field defines the kernel mode applied in clock off mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 10. Note: This bit is reset by an application reset. User’s Manual RTC_X8, V2.2 15-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Real Time Clock Field Bits Type Description BPCOM 15 w Bit Protection for COMCFG This bit enables the write access to the bit field COMCFG. It always reads 0. It is only active during the write access cycle. 0B COMCFG is not changed. 1B COMCFG is updated with the written value. Note: This bit is reset by an application reset. 0 [3:2], 6, 10, 14 r Reserved; returns 0 if read; should be written with 0; ID Identification Register 15 14 13 12 MEM (FFF8H/FCH) 11 10 9 8 7 6 Reset Value: 5AXXH 5 4 3 MOD_TYPE MOD_REV r r 2 1 0 Field Bits Typ Description MOD_REV [7:0] r Module Revision Number MOD_REV defines the revision number. The value of a module revision starts with 01H (first revision). MOD_TYPE [15:8] r Module Type This bit field defines the module identification number (5AH = RTC). User’s Manual RTC_X8, V2.2 15-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16 Analog to Digital Converter The Analog to Digital Converter module (ADC) of the XC2300 allows the conversion of analog input values into discrete digital values based on the successive approximation method. With this method, the conversion result is elaborated bit by bit, starting with the most significant bit. An analog to digital conversion requires a certain number of clock cycles (see Section 16.1.4 and the respective Data Sheet). This chapter is structured as follows: • • • Introduction (see Section 16.1) Operating the ADC (see Section 16.2) Module implementation in XC2300 (see Section 16.3) 16.1 Introduction This section gives an overview about the feature set of the ADC module and introduces the general structure. It describes the: • • • • • • • • • ADC block diagram with two kernels (see Section 16.1.1) Feature set description (see Section 16.1.2) Abbreviations (see Section 16.1.3) Kernel overview (see Section 16.1.4) Conversion request handling (see Section 16.1.5) Conversion result handling (see Section 16.1.6) Interrupt structure (see Section 16.1.7) Electrical models (see Section 16.1.8) Transfer characteristics and error definitions (see Section 16.1.9) User’s Manual ADC, UM_V0.1D6 16-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.1 ADC Block Diagram The ADC module contains 2 independent kernels (ADC0, ADC1) that can operate autonomously or can be synchronized to each other. An ADC kernel is a unit used to convert an analog input signal into a digital value and provides means for triggering conversions, data handling and storage. With this structure, parallel conversion of up to two analog input channels is supported. ADC kernel 0 ... analog inputs AD converter data (result) handling conversion control request control bus interface ADC kernel 1 ... analog inputs AD converter data (result) handling conversion control request control ADC_2_kernels Figure 16-1 ADC Module Block Diagram User’s Manual ADC, UM_V0.1D6 16-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.2 Feature Set Features of each ADC kernel: • • • • • • • • • • • • • • • • • Analog supply voltage range from 3.3 V (minimum) to 5 V (nominal) for VDDPA Input voltage range from 0 V to analog supply voltage VDDPA Input multiplexer for a maximum of 16 possible analog input channels 10-bit conversion time less than 1 µs One standard reference input (VAREF) and one alternative reference input (CH0) available 3 conversion request sources for external or timer-driven events, auto-scan, programmable sequences, SW-driven conversions, etc. Synchronization of the ADC kernels for concurrent conversion starts and parallel sampling and measuring of analog input signals, e.g. for phase current measurements in AC drives Control capability for an external analog multiplexer, respecting the additional set up time Adjustable sampling times to accommodate output impedance of different analog signal sources (sensors, etc.) Possibility to cancel running conversions on demand with automatic restart Flexible interrupt generation (possibility of PEC support) Limit checking to reduce interrupt load (e.g. for temperature measurements or overload detection, only values outside programmable boundary values lead to an interrupt) Programmable data reduction filter, e.g. for digital anti-aliasing filtering, by adding a programmable number of conversion results Independent result registers (8 independent registers) Support of conversion result FIFO mechanism to allow a longer interrupt latency Support of suspend and power saving modes Individually programmable reference selection for each channel, e.g. to allow measurements of 3.3 V and 5 V signals in the full measurement range with the same ADC kernel User’s Manual ADC, UM_V0.1D6 16-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.3 Abbreviations The following acronyms and terms are used in the ADC chapter: Table 16-1 Abbreviations in ADC chapter Abbreviation Meaning ADC Analog to digital converter DNL Differential non-linearity error FIFO First-in-first-out data buffer mechanism INL Integral non-linearity error LSBn Finest granularity of the analog value in digital format, represented by one least significant bit of the conversion result with n bits resolution (measurement range divided in 2n equally distributed steps) PEC Peripheral Event Controller SCU System Control Unit of the device TUE Total unadjusted error User’s Manual ADC, UM_V0.1D6 16-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.4 ADC Kernel Overview Each ADC kernel comprises: • • • • • An analog to digital converter with a maximum of 16 analog inputs (CH0 - CH15). This block selects an input signal and translates the analog voltage into a digital value. Not all analog input channels are necessarily available in all packages, please refer to the implementation description in Section 16.3. A conversion control unit defining the conversion parameters like the length of the sample phase, the resolution and the reference for each conversion. The length of the sample phase and the resolution depend on the type of sensor (or other analog sources) connected to the ADC. These values are similar for several channels and, therefore, are grouped together to form the so-called input classes. Each channel can be individually assigned to an input class to define these parameters. The conversion control also handles the start conditions for the conversions, such as the immediate start (cancel-inject-repeat), overwrite of former results (wait-for-read), or synchronization of the ADC kernels (parallel conversions). Additionally, an external analog multiplexer can be controlled by the output signals EMUX[2:0] of each ADC kernel. A request control unit defining which analog input channel has to be converted next. It contains 3 request sources that can trigger conversions depending on different events, such as edges of PWM or timer signals or events at port pins. Each request source can trigger either 1, up to 4, or up to 16 conversions in a sequence. A result handling unit providing 8 result registers for the conversion results. The conversion result of each analog input channel can be directed to one of the result registers to be stored there. The result handling block also supports data reduction (e.g. for digital anti-aliasing filtering) by automatically adding up to 4 conversion results before informing the CPU that new data is available. Additionally, the results registers can be concatenated to FIFO structures to provide storage capability for more than one conversion result without overwriting previous data. This feature also helps to handle CPU latency effects. An interrupt generation unit issuing interrupt requests to the CPU depending on ADC events. The interrupt generation in the ADC kernels support different mechanisms, e.g. some interrupts can be coupled to a value range of the conversion result (limit checking), some interrupts can be used to transport conversion data to locations in memory for further treatment, and other interrupts are generated after a complete sequence of conversions. User’s Manual ADC, UM_V0.1D6 16-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter standard analog reference VAREF ADC kernel analog reference ground VAGND interrupt generation analog input channel CH0 external multiplexer control EMUX[2:0] ... analog input channel CH15 AD converter result handling conversion control request control ADC_kernel _overv Figure 16-2 ADC Kernel Block Diagram The time required for a conversion depends on the result width and on the selected sample time. Both values depend on the configured ADC clock frequency, of course. Conversion time tCN = ((N + 1) × tADCI) + ((2 + STC) × tADCI) + 2 × tADC, where N = number of result bits (10/8), STC = additional sample time (see also Section 16.2.4). User’s Manual ADC, UM_V0.1D6 16-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.5 Conversion Request Unit The conversion request unit of each ADC kernel autonomously handles the generation of conversion requests. It contains three independent request sources that are connected to several modules to trigger the start of a conversion. A request source defines the analog input channel to be converted if a defined event occurs. For example, a trigger pulse from a timer unit generating a PWM signal can start the conversion of a single input channel or a programmed sequence of input channels. Depending on the application, the request sources can be triggered by different events, either issued by other modules or under SW control. As a consequence, there can be two or more conversion requests pending at the same time. To allow the user to adapt the request source mechanism to the application needs, the trigger capability, the channel number(s) to be converted, and the priority can be individually programmed for each request source. An arbiter block regularly scans the request sources for pending conversion requests and acts upon the conversion request with the highest priority. This conversion request is forwarded to the converter to start the conversion of the requested channel. request control request source 2 timer unit(s) external request(s) ADC kernel (4-stage queue) request source arbiter request source 1 (16-ch scan) analog part request source 0 (1-stage queue) ADC_request_handling Figure 16-3 Conversion Request Unit The functional characteristics of the request sources are adapted to the most common application requirements. In all request sources, a continuous operation or a single-shot operation can be selected. For continuous operation, the programmed sequence of conversions requests are continuously issued (once started), whereas in single-shot mode, each sequence of conversion requests has to be explicitly started. The trigger for a conversion request or a sequence can be handled under SW control or can be User’s Manual ADC, UM_V0.1D6 16-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter synchronized to ADC-external events, such as timer signals or port pins. For each request source, the user can select an input signal (from 4 possible signals REQTRx[D:A]) as trigger input REQTRx and an input signal (from 4 possible signals REQGTx[D:A]) as gating input REQGTx. • • • Request source 0 (1-stage sequential source) can issue a conversion request for a single input channel. The channel number can directly be programmed. This mechanism could be used for SW-controlled conversion requests or HWtriggered conversions of a single input channel. If programmed with a high priority, it can interrupt the sequences of the other request sources to inject a single conversion. Request source 1 (16-channel scan source) can issue conversion requests for a sequence of up to 16 input channels. It can be programmed which channel takes part in this sequence. The sequence always starts with the highest enabled channel number and continues towards lower channel numbers (order defined by the channel number, each channel can be converted only once per sequence). This mechanism could be used to scan input channels permanently or on a regular time base. For example, if programmed with a low priority, some input channels can be scanned in a background task to update information that is not time-critical. Request source 2 (4-stage sequential source) can issue a conversion request for a sequence of up to 4 input channels. The channel numbers can be freely programmed, especially multiple conversions of the same channel within the sequence are supported. This mechanism could be used to support application-specific conversion sequences that can not be covered by the scanning mechanism of request source 1. Especially for timing-critical sequences containing multiple conversions of the same channel, request source 2 should be used. For example, if programmed with a medium priority, some input channels can be converted when a specified event occurs (e.g. synchronized to a PWM) while the scan of other input channels of the background task (handled by request source 1) is interrupted. User’s Manual ADC, UM_V0.1D6 16-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.6 Conversion Result Unit The conversion result unit comprises: • • • • • • • • A set of 8 result registers for storing the conversion results. A pointer mechanism for each analog input channel distributes the conversion results to the result registers. Especially for auto-scan applications, this feature simplifies PEC use (only one PEC channel needed to transfer a complete auto-scan sequence into the device memory). The result registers are accompanied by valid flags to indicate if new data has been stored since it has been read out (new data indication). A result FIFO mechanism for conversion results handling with a “relaxed” CPU timing. Result registers not directly used as target for a conversion result can be concatenated to form a result FIFO. This structure allows to store a sequence of conversion results before the CPU has to interact. A digital anti-aliasing or data reduction filter, accumulating a programmable number of conversion results before generating a result event interrupt. This feature can be used to avoid CPU intervention on each conversion result if a certain number of conversion results are added before further treatment, especially for fast conversions sequences and averaging of results. A wait-for-read mechanism can be enabled independently for each result register to delay conversions targeting a result register that has not yet been read out. A flexible interrupt generation based on result register events. A result register event occurs if a new valid data word becomes available in a result register and can be read out. Especially when using data reduction or digital anti-aliasing filtering, the result register event indicates that the final result is available. Result register read view compatible to the ADC result register on XC16x devices available at one address and a new read view for data reduction capability at another address. Debugger support for ADC result registers supporting read out of ADC conversion results without changing the result status (new data indication). User’s Manual ADC, UM_V0.1D6 16-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.7 Interrupt Structure Each ADC kernel provides 4 independent service request output signals (SR[3:0]) used for interrupt handling (SRx signals connected to interrupt control registers). The interrupt generation inside the ADC kernel is based on three different types of events: • • • Channel events: A channel event is detected if a conversion is finished and the conversion result is within a programmable value range. This type of event can be used to check if analog input values are inside or out of a nominal operating range, especially to reduce CPU load for background tasks. This allows the user to interrupt the CPU only if the specified conversion result range is met (or not met) instead of comparing each result by SW. Result events: A result event is detected if a new result is available in a result register and can be read out, e.g. to store the data in memory for further treatment by SW. This type of event can be used to trigger a read action by the CPU (or PEC). Especially when using data reduction or digital anti-aliasing filtering, not all finished conversion leads to a new result. Furthermore, when using a result FIFO, a result event decouples the CPU (PEC) read out from the channel events and tolerates a higher interrupt latency. The result register structure allows to use a single PEC channel for a complete auto-scan sequence by triggering the read out by a result event (if the conversion results of all channels taking part in the auto-scan sequence target the same result register, e.g. with FIFO mechanism or with a wait-for-read condition to avoid data loss). Request source events: A request source event is detected if a scan source has completely finished the requested conversion sequence. For a sequential source, the user can define where inside a conversion sequence a request source event is generated. This type of event can be used to inform the CPU that a conversion sequence has reached a defined state and SW can start the treatment of the related results in a block. Each ADC event is indicated by a dedicated flag that can be cleared by SW. An interrupt can be generated (if enabled) for each event, independently from the status of the corresponding event indication flag. This structure ensures efficient PEC handling of ADC events (the ADC event can generate an interrupt without the need to clear the indication flag). A node pointer mechanism allows the user to group interrupt events by selecting which service request output signals SRx becomes activated by which event. Each ADC event can be individually directed to one of the service request output signals to adapt easily to application needs. Note: A conversion can lead to three interrupts, one of each type. In this case, the ADC module first triggers the request source event interrupt, then the channel event interrupt, followed by the result event interrupt (all within a few fADC clock cycles). User’s Manual ADC, UM_V0.1D6 16-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.8 Electrical Models Each conversion of an analog input voltage into a digital value consists of two consecutive phases. During the sample phase, the input voltage is sampled and prepared for the following conversion phase. A simplified model for the sample phase describes the input signal path, whereas a second simplified model for the conversion phase is related to the reference voltage handling. 16.1.8.1 Input Signal Path The ADC kernel in the XC2300 is based on one switched capacitor field for measurement with a total capacity represented by CAIN and a small static capacitor at each input pin. During the sample phase, the capacitor field CAIN is connected to one of the analog input CHx via an input multiplexer. The multiplexer is modeled by ideal switches and series resistors RAIN. Only the switch to the selected analog input is closed during the sample phase. During the conversion phase or while no conversion is running (ADC is idle), all switches are open. The voltage at the analog input channel CHx is represented by VAINx. CH15 ... R EXT ... VS C EXT CHx ADC kernel R AIN CH0 VAINx C AIN VC VAGND ADC_signal_path_model Figure 16-4 Signal Path Model A simplified model for the analog input signal path is given in Figure 16-4. An analog voltage source (value VS) with an internal impedance of REXT delivers the analog input that should be converted. During the sample phase the corresponding switch is closed and the capacitor field CAIN is charged. Due to the low-pass behavior of the resulting RC combination, the voltage VC to be actually converted does not immediately follow VS. The value REXT of the analog voltage source and the desired precision of the conversion strongly define the required length of the sample phase. To reduce the influence of REXT and to filter input noise, it is recommended to introduce User’s Manual ADC, UM_V0.1D6 16-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter a fast external blocking capacitor CEXT at the analog input pin of the ADC. Like this, mainly CEXT delivers the charge during the sample phase. This structure allows a significantly shorter sample phase than without a blocking capacitor, because the lowpass time constant defining the sample time is mainly given by the values of RAIN and CAIN. Additionally, the capacitor CAIN is automatically precharged to a voltage of approximately the half of the standard reference voltage VAREF to minimize the average difference between VAINx and VC at the beginning of a sample phase. Due to varying parameters and parasitic effects, the precharge voltage of CAIN is typically smaller than VAREF / 2. On the other hand, the charge redistribution between CEXT and CAIN leads to a voltage change of VAINx during the sample phase. In order to keep this voltage change lower than 1 LSBn, it is recommended to use an external blocking capacitor CEXT in the range of at least 2n × CAIN. The resulting low-pass filter of REXT and CEXT should be dimensioned in a way to allow VAINx to follow VS between two sample phases of the same analog input channel. Please note that, especially at high temperatures, the analog input structure of an ADC can lead to a leakage current and introduces an error due to a voltage drop over REXT. The ADC input leakage current increases if the input voltage level is close to the analog supply ground VSS or to the analog power supply VDDPA. It is recommended to use an operating range for the input voltage between approximately 3% and 97% of VDDPA to reduce input leakage values. Furthermore, the leakage is influenced by an overload condition at adjacent analog inputs. During an overload condition, an input voltage exceeding the supply range is applied at an input and the built-in protection circuit limits the resulting input voltage. This leads to an overload current through the protection circuit that is translated (by a coupling factor) into an additional leakage at adjacent inputs. 16.1.8.2 Reference Path During the conversion phase, parts of the capacitor field CAIN are switched to a reference input or to VAGND. The ADC kernel supports two possible reference inputs, VAREF as standard reference and CH0 as alternative reference. The reference selection between both possibilities is handled individually for each analog input channel. For example, this structure allows conversions of 5 V and 3.3 V based analog input signals with the same ADC kernel. A high accuracy of the conversion results requires a stable and noise-free reference voltage and analog supply voltages during the conversion phase. Instable voltages or noise on the supply or reference inputs lead to a reduced conversion accuracy. Please note that noise can also be introduced into the ADC module by other modules, e.g. by switching of neighboring pins. It is strongly recommended to carefully decouple analog from digital signal domains. Due to the switching of parts of CAIN, the ADC requires a dynamic current at the selected reference input. Thus, the impedance RAREF of the reference voltage source VR has to User’s Manual ADC, UM_V0.1D6 16-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter be low enough to supply the reference current during the conversion phase. An external blocking capacitor CAREF should be used to supply the peak currents and to minimize the current delivered by the reference source. Due to the charge redistribution between CAREF and parts of CAIN, the voltage VAREF decreases during the conversion phase. In order to limit the error introduced by this effect to 1/2 LSBn, the external blocking capacitor CAREF for the reference input should be at least 2n × CAIN. The reference current IAREF introduces a voltage drop at RAREF that should not be neglected for the calculation of the overall accuracy. The average reference current during a conversion depends on the reference voltage level and the time tCONV between two conversion starts. IAREF = CAIN × VAREF / tCONV CH0 R AREF VAREF ADC kernel R AIN IAREF VR C AREF VAREF C AIN VC VAGND ADC_ref_path_model Figure 16-5 Reference Path Model User’s Manual ADC, UM_V0.1D6 16-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.1.9 Transfer Characteristics and Error Definitions The ideal transfer characteristic of the ADC translates a continuous analog input voltage into a discrete digital value out of a result range of 2n steps for n bit resolution over a measurement range between 0 and a reference voltage. Each digital value in the available result range (from 0 to 2n-1) represents an input voltage range that is defined by the reference voltage divided by 2n. This range (called quantization step) represents the smallest granularity (called LSBn) that can be handled by the ADC. Due to the discrete character of the digital result, each ADC conversion result has a systeminherent quantization uncertainty of ± 0.5 LSBn. According to the ideal transfer characteristics, the first digital transition (between the digital values 0 and 1) takes place when the analog input reaches 0.5 LSBn. An analog input voltage above the reference voltage leads to a saturation of the digital result at 2n-1. Deviations of the conversion result from the ideal transfer characteristics can appear: • • • • • An offset error is the deviation from the ideal transfer characteristics for an input voltage close to 0. It describes the difference between 0.5 LSBn and the input voltage where the first digital transition (between the values of 0 and 1) occurs. A gain error is the deviation from the ideal transfer characteristics for an input voltage close to the reference voltage. It describes the difference between the reference voltage and the input voltage where the last digital transition (between the values of 2n-2 and 2n-1) occurs. A differential non-linearity error (DNL) describes the variations in the analog input voltage between two adjacent digital conversion results, over the full measurement range. If each step between the digital conversion results x and x+1 is exactly 1 LSBn, the DNL value is zero. If the DNL value is lower than 1 LSBn, the possibility of missing codes is excluded. A missing code occurs if not all values of the possible conversion result range can be reached. An integral non-linearity error (INL) describes the maximum difference between the transfer characteristics between the first and the last point of the measurement range and the real transfer characteristics (without quantization uncertainty, offset and gain errors). The total unadjusted error (TUE) describes the maximum deviation between a real conversion result and the ideal transfer characteristics over a given measurement range. Since some of these errors noted above can compensate each other, the TUE value generally is much less than the sum of the individual errors. The TUE also covers production process variations and internal noise effects (if switching noise is generated by the system, this generally leads to an increased TUE value). User’s Manual ADC, UM_V0.1D6 16-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2 Operating the ADC This section describes the kernel functions and how to operate the kernel. It provides the functional description and the associated register descriptions. • Register overview (see Section 16.2.1) General module, kernel and arbiter operation: • • • • • • Enabling the ADC module for configuration of the behavior for the different device operating modes (see mode control description in Section 16.2.2). Enabling the converter for operation or selecting the desired power saving mode (see Section 16.2.3) Selecting the appropriate frequency for the converter and for the request source arbiter (see Section 16.2.4). General ADC registers (see Section 16.2.5) Configuring the request source arbiter (see Section 16.2.6) Arbiter registers (see Section 16.2.7) Request source operation: • • • • Scan request source handling (see Section 16.2.8) Scan request source registers (see Section 16.2.9) Sequential request source handling (see Section 16.2.10) Sequential request source registers (see Section 16.2.11) Channel and result register operation: • • • • Configuring the channel-related functions (see Section 16.2.12) Channel-related registers (see Section 16.2.13) Conversion result handling (see Section 16.2.14) Conversion request handling (see Section 16.2.15) Additional features: • • • External multiplexer control (see Section 16.2.16) Synchronization for parallel conversions (see Section 16.2.17) Additional feature registers (see Section 16.2.18) User’s Manual ADC, UM_V0.1D6 16-15 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.1 Register Overview Table 16-2 shows all registers required for programming the ADC module. It summarizes the ADC kernel registers and defines their offsets and the reset values. The offsets have to be added to the base addresses for the ADC kernels (see Section 16.3.1) to obtain the absolute address for each register. The prefix “ADCx_” has to be added to the register names in this table for each ADC kernel to distinguish registers of the different kernels. In this naming convention, x indicates the kernel number. All ADC registers (including KSCFG.NOMCFG and KSCFG.COMCFG) are reset by an application reset, whereas bit field KSCFG.SUMCFG is reset by a debug reset. Note: Register bits marked “w” always deliver 0 when read. Table 16-2 Short Name ADC Module Register Summary Description Offset 1) See Page General Registers PISEL Port Input Select Register 04H Page 16-30 KSCFG2) Kernel State Configuration Register 0CH Page 16-23 GLOBCTR Global Control Register 10H Page 16-25 GLOBSTR Global Status Register 12H Page 16-27 Arbiter Registers ASENR Arbitration Slot Enable Register 18H Page 16-36 RSPR0 Request Source Priority Register 0 14H Page 16-37 Channel-Related Registers CHCTR0-15 Channel Control Register 0-15 20H … 3EH Page 16-67 INPCR0 Input Class Register 0 C0H Page 16-69 INPCR1 Input Class Register 1 C2H Page 16-69 LCBR0 Limit Checking Boundary Register 0 84H Page 16-70 LCBR1 Limit Checking Boundary Register 1 86H Page 16-70 LCBR2 Limit Checking Boundary Register 2 88H Page 16-70 LCBR3 Limit Checking Boundary Register 3 8AH Page 16-70 CHINFR Channel Event Indication Flag Register 90H Page 16-71 CHINCR Channel Event Indication Clear Register 92H Page 16-72 User’s Manual ADC, UM_V0.1D6 16-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-2 ADC Module Register Summary (cont’d) Offset 1) Short Name Description See Page CHINPR0 Channel Interrupt Node Pointer Register 0 98H Page 16-73 CHINPR4 Channel Interrupt Node Pointer Register 4 9AH Page 16-73 CHINPR8 Channel Interrupt Node Pointer Register 8 9CH Page 16-74 CHINPR12 Channel Interrupt Node Pointer Reg. 12 9EH Page 16-75 ALR0 Alias Register 0 1CH Page 16-76 Result Registers RESR0-7 Result Register 0-7, normal view 40H … 4EH Page 16-85 RESRA0-7 Result Register 0-7, view A 50H … 5EH Page 16-86 RESRV0-7 Result Register 0-7, view V 60H … 6EH Page 16-85 RESRAV0-7 Result Register 0-7, view AV 70H … 7EH Page 16-86 VFR Valid Flag Register 80H Page 16-88 RSSR Result Status Shadow Register 82H Page 16-87 RCR0-7 Result Control Register 0-7 B0H … BEH Page 16-89 EVINFR Event Indication Flag Register A0H Page 16-91 EVINCR Event Indication Clear Register A2H Page 16-92 EVINPR0 Event Interrupt Node Pointer Register 0 A8H Page 16-93 EVINPR8 Event Interrupt Node Pointer Register 8 ACH Page 16-93 EVINPR12 Event Interrupt Node Pointer Reg. 12 AEH Page 16-94 Request Source 0 Registers QMR0 Queue 0 Mode Register E0H Page 16-51 QSR0 Queue 0 Status Register E2H Page 16-54 Q0R0 Queue 0 Register 0 E4H Page 16-56 QBUR0 Queue 0 Backup Register Page 16-58 QINR0 Queue 0 Input Register E6H shared Page 16-60 Request Source 1 Registers CRCR1 Conversion Request 1 Control Register E8H Page 16-42 CRPR1 Conversion Request 1 Pending Register EAH Page 16-43 CRMR1 Conversion Request 1 Mode Register ECH Page 16-44 User’s Manual ADC, UM_V0.1D6 16-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-2 Short Name ADC Module Register Summary (cont’d) Description Offset 1) See Page Request Source 2 Registers QMR2 Queue 2 Mode Register F0H Page 16-51 QSR2 Queue 2 Status Register F2H Page 16-54 Q0R2 Queue 2 Register 0 F4H Page 16-56 QBUR2 Queue 2 Backup Register Page 16-58 QINR2 Queue 2 Input Register F6H shared Page 16-60 Additional Function Register EMCTR External Multiplexer Control Register D0H Page 16-100 EMENR External Multiplexer Enable Register D6H Page 16-101 SYNCTR Synchronization Control Register 1AH Page 16-102 1) Short 8-bit addresses are not available for kernel registers of this module. 2) Register KSCFG is available only in the address range of ADC0, named ADC0_KSCFG. Note: The offsets 00H, 02H, 06H, 08H, 16H, C4H, C6H, 8CH, 8EH, A4H, A6H, and AAH are reserved for future use. User’s Manual ADC, UM_V0.1D6 16-18 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.2 Mode Control The mode control concept for system control tasks, such as power saving, or suspend request for debugging, allows to program the module behavior under different device operating conditions. The behavior of the ADC kernels can be programmed for each of the device operating modes, that are requested by the global state control part of the SCU. It is advantageous that the ADC kernels of an ADC module show an identical behavior regarding the device operating modes (e.g. to avoid that a non-suspended kernel waits for a suspended kernel to start a synchronized conversion). Therefore, the ADC module has a common associated register ADC0_KSCFG defining the behavior of all kernels of the module in the following device operating modes: • • • Normal operation: This operating mode is the default operating mode when neither a suspend request nor a clock-off request are pending. The module clock is not switched off and the ADC registers can be read or written. The kernel behavior is defined by KSCFG.NOMCFG. Suspend mode: This operating mode is requested when a suspend request (issued by a debugger) is pending in the device. The module clock is not switched off and the ADC registers can be read or written. The kernel behavior is defined by KSCFG.SUMCFG. Clock-off mode: This operating mode is requested for power saving purposes. The module clock is switched off automatically when all kernels of the ADC module reached their specified state in a stop mode. In this case, ADC registers can not be accessed. The kernel behavior is defined by KSCFG.COMCFG. For the ADC module, the following internal actions can be influenced by mode control: • • A current conversion of an analog value: If the request control unit has found a pending conversion request, the conversion can be started. This start has to be enabled by the mode control. If the current kernel mode allows the conversion start (run modes 0 and 1), it will be executed. If the kernel mode does not allow a start (stop modes 0 and 1), the conversion is not started. The start request is not cancelled, but frozen. A “frozen” conversion is started as programmed if the kernel mode is changed to a run mode again. An arbiter round: The start of a new arbiter round has to be enabled by the kernel modes. In stop mode 1, a new arbiter round will not start. The behavior of the ADC kernels can be programmed for each of the device operating modes (normal operation, suspend mode, clock-off mode). Therefore, the ADC kernels support four kernel modes, as shown in Table 16-3. User’s Manual ADC, UM_V0.1D6 16-19 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-3 ADC Kernel Behavior Kernel Mode Kernel Behavior Code run mode 0 kernel operation as specified, no impact on data transfer (same behavior for run mode 0 and run mode 1) 00B run mode 1 01B stop mode 0 A currently running AD conversion is completely finished and 10B the result is treated. Pending conversion request to start a new conversion are not taken into account (but not deleted). They start conversions after entering a run mode as programmed. The arbiter continues as programmed. stop mode 1 Like stop mode 0, but the arbiter is stopped after it has finished 11B its arbitration round. Generally, bit field KSCFG.NOMCFG should be configured for run mode 0 as default setting for standard operation. If the ADC kernels should not react to a suspend request (and to continue operation as in normal mode), bit field KSCFG.SUMCFG has to be configured with the same value as KSCFG.NOMCFG. If the ADC kernels should show a different behavior and stop operation when a specific stop condition is reached, the code for stop mode 0 or stop mode 1 has to be written to KSCFG.SUMCFG. A similar mechanism applies for the clock-off mode with the possibility to program the desired behavior by bit field KSCFG.COMCFG. Note: The stop mode selection strongly depends on the application needs and it is very unlikely that different stop modes are required in parallel in the same application. As a result, only one stop mode type (either 0 or 1) should be used in the bit fields in register KSCFG. Do not mix stop mode 0 and stop mode 1 and avoid transitions from stop mode 0 to stop mode 1 (or vice versa) for the ADC module. If the module clock is disabled by KSCFG.MODEN = 0 or in clock-off mode when the stop condition is reached (in stop mode 0 or 1), the module can not be accessed by read or write operations (except register KSCFG that can always be accessed). As a consequence, it can not be configured. Please note that bit KSCFG.MODEN should only be set by SW while all configuration fields are configured for run mode 0. User’s Manual ADC, UM_V0.1D6 16-20 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.3 Module Activation and Power Saving Modes The converter of the ADC supports specific power down modes allowing an automatic reduction of the power consumption between two conversions. The following modes are determined by bit field GLOBSTR.ANON: • • • • ANON = 00B: Converter switched off (default after reset) The complete converter is switched off and held in its reset state, conversions are not possible. To start a conversion, ANON has to be programmed to the desired mode. A maximum wake-up time of about 10 µs has to be respected before starting a conversion. Furthermore, digital logic blocks are set to their initial state. ANON = 01B: Slow stand-by mode The converter enters a power reduction mode after each conversion. It switches automatically to normal operation if a conversion is requested. A maximum wake-up time of about 10 µs has to be added to the sample time. This leads to the lowest power consumption for the ADC supply with wake-up capability. ANON = 10B: Fast stand-by mode The converter enters a power reduction mode with less reduction than in slow standby mode after each conversion. It switches automatically to normal operation if a conversion is requested. A maximum wake-up time of about 3 µs has to be added to the sample time. This leads to a reduced power consumption for the ADC supply compared to normal operation. ANON = 11B: Normal operation Conversions are always possible with the desired sample time. The converter stays active permanently. User’s Manual ADC, UM_V0.1D6 16-21 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.4 Clocking Scheme The different parts of an ADC kernel are driven by clock signals that are based on the clock fADC of the bus that is used to access the ADC module. The XC2300’s ADCs are connected to the system clock, so fADC = fSYS. • • • The analog clock fADCI is used as internal clock for the converter and defines the conversion length and the sample time. It can be adjusted by programming bit field GLOBCTR.DIVA. The digital clock fADCD is used for the arbiter and defines the duration of an arbiter round. It can be adjusted by programming bit field GLOBCTR.DIVD. All other digital structures (such as interrupts, etc.) are directly driven by the module clock fADC. clock generation unit (in SCU) fSYS ADC kernel module clock f ADC divider for fADCI analog clock fADCI interrupts, etc. converter divider for fADCD digital clock fADCD arbiter ADC_clocking Figure 16-6 Clocking Scheme Note: If the clock generation for the converter of the ADC falls below a minimum value or is stopped during a running conversion, the conversion result can be corrupted. For correct ADC results, the frequency of fADCI must not exceed the defined range. Please, refer to the respective Data Sheet. User’s Manual ADC, UM_V0.1D6 16-22 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.5 General ADC Registers 16.2.5.1 Kernel State Configuration Register The kernel state configuration register KSCFG allows the selection of the desired kernel modes for the different device operating modes. Bit fields KSCFG.NOMCFG and KSCFG.COMCFG are reset by an application reset. Bit field KSCFG.SUMCFG is reset by a debug reset. This register is a common register for all ADC kernels and can be accessed in the address range of ADC0. Note: The coding of the bit fields NOMCFG, SUMCFG and COMCFG is described in Table 16-3. ADC0_KSCFG Kernel State Configuration Register XSFR(0CH) 15 14 BP COM 0 w r 13 12 11 10 COMCFG BP SUM 0 rw w r 9 8 7 6 SUMCFG BP NOM 0 NOMCFG 0 rw w r rw r Field Bits Type Description MODEN 0 rw User’s Manual ADC, UM_V0.1D6 Reset Value: 0000H 5 4 3 2 1 0 BP MOD MOD EN EN w rw Module Enable This bit enables the module kernel clock and the module functionality. 0B The module is switched off immediately (without respecting a stop condition). It does not react on mode control actions and the module clock is switched off. The module does not react on read accesses and ignores write accesses (except to KSCFG). 1B The module is switched on and can operate. After writing 1 to MODEN, it is recommended to read register KSCFG to avoid pipeline effects in the control block before accessing other ADC registers. 16-23 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description BPMODEN 1 w Bit Protection for MODEN This bit enables the write access to the bit MODEN. It always reads 0. 0B MODEN is not changed. 1B MODEN is updated with the written value. NOMCFG [5:4] rw Normal Operation Mode Configuration This bit field defines the kernel mode applied in normal operation mode. 00B Run mode 0 is selected. 01B Run mode 1 is selected. 10B Stop mode 0 is selected. 11B Stop mode 1 is selected. BPNOM 7 w Bit Protection for NOMCFG This bit enables the write access to the bit field NOMCFG. It always reads 0. 0B NOMCFG is not changed. 1B NOMCFG is updated with the written value. SUMCFG [9:8] rw Suspend Mode Configuration This bit field defines the kernel mode applied in suspend mode. Coding like NOMCFG. BPSUM 11 w Bit Protection for SUMCFG This bit enables the write access to the bit field SUMCFG. It always reads 0. 0B SUMCFG is not changed. 1B SUMCFG is updated with the written value. COMCFG [13:12] rw Clock Off Mode Configuration This bit field defines the kernel mode applied in clock-off mode. Coding like NOMCFG. BPCOM 15 w Bit Protection for COMCFG This bit enables the write access to the bit field COMCFG. It always reads 0. 0B COMCFG is not changed. 1B COMCFG is updated with the written value. 0 [3:2], 6, 10, 14 r Reserved returns 0 if read; should be written with 0; Note: To change a configuration bit field, the associated protection bit BPxxx must be set during the write operation. This allows modifying selected configuration bit fields with a single write operation. User’s Manual ADC, UM_V0.1D6 16-24 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.5.2 Global Control Register The global control register contains bits to control the timing of the arbiter and the general enable function for the converter. GLOBCTR Global Control Register 15 14 13 12 XSFR(10H) 11 10 9 8 7 Reset Value: 00FFH 6 5 4 3 2 ARB M 0 ARBRND ANON DIVD DIVA rw rw rw rw rw rw 1 0 Field Bits Type Description DIVA [5:0] rw Divider Factor for Analog Internal Clock This bit field defines the number of fADC clock cycles to generate the fADCI clock for the converter (used as internal base for the conversions and the sample time calculation). 00H fADCI = fADC 01H fADCI = fADC / 2 02H fADCI = fADC / 3 ... 3FH fADCI = fADC / 64 DIVD [7:6] rw Divider Factor for Digital Arbiter Clock This bit field defines the number of fADC clock cycles within each arbitration slot (each arbitration slot lasts one period of fADCD). It is recommended to use the default setting 00B to obtain the minimum arbiter reaction time. 00B fADCD = fADC 01B fADCD = fADC / 2 10B fADCD = fADC / 3 11B fADCD = fADC / 4 ANON [9:8] rw Analog Part Switched On This bit field defines the setting of bit field GLOBSTR.ANON (refer to description of this bit) if this kernel is the synchronization master or without synchronization feature (see register SYNCTR). For a synchronization slave, this bit field is not taken into account. User’s Manual ADC, UM_V0.1D6 16-25 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description ARBRND [11:10] rw Arbitration Round Length This bit field defines the number of arbitration slots per arbitration round (arbitration round length = tARB).1) 00B An arbitration round contains 4 arbitration slots (tARB = 4 / fADCD). 01B An arbitration round contains 8 arbitration slots (tARB = 8 / fADCD). 10B An arbitration round contains 16 arbitration slots (tARB = 16 / fADCD). 11B An arbitration round contains 20 arbitration slots (tARB = 20 / fADCD). 0 [14:12] rw Reserved for Future Use This bit field is reserved for future use and has to be written with 000B. ARBM 15 rw Arbitration Mode This bit field defines whether the arbiter runs permanently or only while at least one conversion request is pending. The arbiter runs permanently. This setting has 0B to be chosen in a synchronization slave (see Section 16.2.17). 1B The arbiter only runs if at least one conversion request of an enabled request source is pending. This setting leads to a reproducible latency from an incoming request to the conversion start if the converter is idle. Synchronized conversions are not supported. 1) The default setting of 4 arbitration slots is sufficient for correct arbitration. The duration of an arbitration round can be increased if required to synchronize requests. User’s Manual ADC, UM_V0.1D6 16-26 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.5.3 Global Status Register The status control register contains bits indicating the current status of a conversion. GLOBSTR Global Status Register 15 14 13 12 11 XSFR(12H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 0 CSRC SYN RUN ANON CHNR 0 r rh rh rh rh r 1 0 SAM BU PLE SY rh rh Field Bits Type Description BUSY 0 rh Analog Part Busy This bit indicates that a conversion is currently running. The converter is idle. 0B 1B A conversion is currently running. SAMPLE 1 rh Sample Phase This bit indicates that an analog input signal is currently sampled. The converter is not in the sampling phase. 0B 1B The converter is in the sampling phase. CHNR [7:3] rh Channel Number This bit field indicates which analog input channel is currently converted. This information is updated when a new conversion is started. User’s Manual ADC, UM_V0.1D6 16-27 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description ANON [9:8] rh User’s Manual ADC, UM_V0.1D6 Analog Part Switched On This bit field defines the operation mode of the converter. It monitors either bit field GLOBCTR.ANON of the same ADC kernel (in master mode or without synchronization feature) or bit field GLOBCTR.ANON of the ADC kernel selected as synchronization master for this kernel (in slave mode). This ensures that all kernels of a synchronization group can be controlled with a single write operation to bit field GLOBCTR of the synchronization master. 00B The converter is switched off and conversions are not possible. The arbiter finishes its current arbitration round (if running) and then remains in the idle state. 01B The converter of the ADC module is switched on and conversions are possible. The automatic power-down capability of the converter is enabled, leading to the lowest power consumption of the ADC supply with wake-up capability, but a longer wake-up time before each conversion. 10B The converter of the ADC module is switched on and conversions are possible. The automatic power-down capability of the converter is enabled, leading to a reduced power consumption of the ADC supply, but a shorter wake-up time before each conversion. 11B The converter of the ADC module is switched on and conversions are possible. The automatic power-down capability of the converter is disabled leading to the nominal power consumption of the ADC supply. 16-28 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description SYNRUN 10 rh Synchronous Conversion Running This bit indicates that a synchronized (= parallel) conversion is currently running. 0B There is no synchronized conversion running (either there is no conversion currently running or a synchronized conversion has not been requested). A running conversion can be cancelled and repeated in case of a new incoming conversion request with higher priority. 1B A synchronized conversion is running. This conversion can not be cancelled while running. Higher priority requests can trigger conversions only after the end of a synchronized conversion. CSRC [13:11] rh Currently Converted Request Source This bit field indicates the arbitration slot number of the current conversion (if BUSY = 1, a conversion is still running) or of the last conversion (if BUSY = 0, no conversion is running). This bit field is updated with each conversion start. 000B The channel requested by the request source of arbitration slot 0 is (has been) converted. 001B The channel requested by the request source of arbitration slot 1 is (has been) converted. 010B The channel requested by the request source of arbitration slot 2 is (has been) converted. other combinations are reserved 0 2, [15:14] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-29 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.5.4 Input Select Registers Register PISEL contains bit fields selecting the input signal for the trigger and gating inputs of the request sources. The connections depending on the device implementation, please refer to the implementation chapter for details. Note: For signals connected to inputs with a synchronization stage, a synchronization delay of two fADC clock cycles has to be taken into account. See Section 16.3.4 for reference. PISEL Port Input Select Register 15 14 13 XSFR(04H) 10 9 8 7 Reset Value: 0000H 12 11 6 5 4 3 2 1 0 0 0 REQTR2 REQGT2 REQTR1 REQGT1 REQTR0 REQGT0 r rw rw rw rw rw rw rw Field Bits Type Description REQGT0 [1:0] rw Input Select for REQGT0 of Source 0 This bit field defines the input signal used for the module input REQGT0 of the request source 0. 00B The input signal REQGT0A is selected. 01B The input signal REQGT0B is selected. 10B The input signal REQGT0C is selected. 11B The input signal REQGT0D is selected. REQTR0 [3:2] rw Input Select for REQTR0 of Source 0 This bit field defines the input signal used for the module input REQTR0 of the request source 0. 00B The input signal REQTR0A is selected. 01B The input signal REQTR0B is selected. 10B The input signal REQTR0C is selected. 11B The input signal REQTR0D is selected. REQGT1 [5:4] rw Input Select for REQGT1 of Source 1 This bit field defines the input signal used for the module input REQGT1 of the request source 1. 00B The input signal REQGT1A is selected. 01B The input signal REQGT1B is selected. 10B The input signal REQGT1C is selected. 11B The input signal REQGT1D is selected. User’s Manual ADC, UM_V0.1D6 16-30 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description REQTR1 [7:6] rw Input Select for REQTR1 of Source 1 This bit field defines the input signal used for the module input REQTR1 of the request source 1. 00B The input signal REQTR1A is selected. 01B The input signal REQTR1B is selected. 10B The input signal REQTR1C is selected. 11B The input signal REQTR1D is selected. REQGT2 [9:8] rw Input Select for REQGT2 of Source 2 This bit field defines the input signal used for the module input REQGT2 of the request source 2. 00B The input signal REQGT2A is selected. 01B The input signal REQGT2B is selected. 10B The input signal REQGT2C is selected. 11B The input signal REQGT2D is selected. REQTR2 [11:10] rw Input Select for REQTR2 of Source 2 This bit field defines the input signal used for the module input REQTR2 of the request source 2. 00B The input signal REQTR2A is selected. 01B The input signal REQTR2B is selected. 10B The input signal REQTR2C is selected. 11B The input signal REQTR2D is selected. 0 12 rw Reserved for Future Extension returns 0 if read; should be written with 0; 0 [15:13] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-31 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.6 Request Source Arbiter The request source arbiter evaluates which analog input channel has to be converted. Therefore, it regularly polls the request sources one after the other for pending conversion requests. The polling sequence is based on time slots with programmable length, called arbitration slots. If a request source is disabled or if no request source is available for an arbitration slot, the slot is considered as being empty and has no influence on the evaluation of the arbitration winner. After reset, all request sources are disabled and have to be enabled by bits in register ASENR to take part in the arbitration process. An arbitration round consists of one arbitration slot for each available request source plus one final synchronization slot (see Figure 16-7). At the end of each arbitration round, the arbiter has determined the request source with the highest priority and a pending conversion request. This arbitration result is stored as arbitration winner for further actions. If a conversion is started in an arbitration round, this arbitration round does not deliver an arbitration winner. In the XC2300, the following request sources are available: • • • • Request source 0 in arbitration slot 0: 1-stage sequential source This request source can issue a conversion request for a single input channel. Request source 1 in arbitration slot 1: 16-channel scan source This request source can issue a conversion request sequence of up to 16 input channels in a defined order. Request source 2 in arbitration slot 2: 4-stage sequential source This request source can issue a conversion request sequence of up to 4 input channels in a freely programmable order. Last arbitration slot of the arbitration round: Synchronization source In this slot, the arbiter checks for a synchronized request from another ADC kernel and does not evaluate any internal request source. A request for a synchronized conversion is always handled with the highest priority in a synchronization slave kernel (pending requests from other sources are not considered). arbitration round arbitration slot 0 arbitration slot 1 arbitration slot 2 arbitration slot 3 polling of request source 0 polling of request source 1 polling of request source 2 check for synchronized start request arbitration winner found conversion can be started ADC_arbiter_round Figure 16-7 Arbitration Round User’s Manual ADC, UM_V0.1D6 16-32 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter The period tARB of an arbitration round is given by: tARB = N × (GLOBCTR.DIVD + 1) / fADC with N being 4, 8, 16, or 20 as defined by GLOBCTR.ARBRND. The number of arbitration slots forming an arbitration round can be programmed to obtain a similar arbiter timing for different devices, even if the number of available request sources differs from one device to another. Because the XC2300’s ADC has 3 request sources, 4 slots per arbitration round are sufficient. The period of the arbitration round introduces a timing granularity to detect an incoming conversion request signal and the earliest point to start the related conversion. This granularity can introduce a jitter of maximum one arbitration round. The jitter can be reduced by minimizing the period of an arbitration round (numbers of arbitration slots and their length). To achieve a reproducible reaction time (constant delay without jitter) between the trigger event of a conversion request (e.g. by a timer unit or due to an external event) and the start of the related conversion, mainly the following two options exist. For both options, the converter has to be idle and other conversion requests must not be pending for at least one arbiter round before the trigger event occurs: • • If bit GLOBCTR.ARBM = 0, the arbiter runs permanently. In this mode, synchronized conversions of more than one ADC kernel are possible. The trigger for the conversion triggers has to be generated synchronously to the arbiter timing. Incoming triggers should have exactly n-times the granularity of the arbiter (n = 1, 2, 3, ...). In order to allow some flexibility, the duration of an arbitration slot can be programmed in cycles of fADC. If bit GLOBCTR.ARBM = 1, the arbiter stops after an arbitration round when no conversion request have been found pending any more. The arbiter is started again if at least one enabled request source indicates a pending conversion request. The trigger of a conversion request does need not to be synchronous to the arbiter timing. In this mode, parallel conversions are not possible for synchronization slave kernels. 16.2.6.1 Request Source Priority Each request source has an individually programmable priority to be able to adapt to different applications (see register RSPR0). The priorities define the order the request sources are handled by the arbiter if two or more request sources indicate pending conversion requests at the same time. Starting with request source 0, the arbiter checks if an enabled request source has a pending request for a conversion. The arbitration winner is the request source with a pending conversion request and the highest priority that has been found first in an arbitration round. User’s Manual ADC, UM_V0.1D6 16-33 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.6.2 Conversion Start Modes If the converter is currently idle (no conversion running), the conversion of the arbitration winner is started immediately. If a conversion is currently running, the arbitration winner is compared to the priority of the currently running conversion. The arbiter handles the requested conversion of the arbitration winner in one of the following ways: • • • In the case that the current conversion has the same or a higher priority, it is completed. Then, the conversion of the arbitration winner is started. In the case that the current conversion has the lower priority and the arbiter winner has been programmed for wait-for-start mode, the currently running conversion is completed. Then, the conversion of the arbitration winner is started. This mode can be used if the timing requirement for the higher priority conversions allow a jitter (between t3 and t4 in Figure 16-8) in the range of a running conversion. In the case that the current conversion has the lower priority and the arbiter winner has been programmed for cancel-inject-repeat mode, the current conversion is aborted immediately, unless both requests target the same result register with waitfor-read active (see Section 16.2.14.2). The conversion of the arbitration winner is started after the abort action. The aborted conversion request is restored in the request source that has requested the aborted conversion. As a consequence, it takes part again in the next arbitration round. Please note that the abort mechanism can take between 1 and 3 fADCI cycles, depending on the state of the current conversion. This mode can be used if higher priority conversions only tolerate a small jitter (between t8 and t9 in Figure 16-8). t1 t3 t6 t8 request channel B request channel A conversions A t2 B A t4 t5 wait-for-start mode t7 B t9 A t10 t11 cancel-inject-repeat mode ADC_conv_starts Figure 16-8 Conversion Start Modes User’s Manual ADC, UM_V0.1D6 16-34 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter The conversion start mode can be individually programmed for each request source by bits in register RSPR0 and is applied to all channels requested by the source. Figure 16-8 shows the influence of both conversion start modes on the conversion sequence if two request sources generate conversion requests. In this example, channel A is issued by a request source with a lower priority than the request source requesting the conversion of channel B. • • • • • • • • • • • t1: The trigger event for channel A occurs and a conversion request is activated. t2: At the end of the arbitration round, channel A is determined as arbitration winner, the conversion of channel A is started. With the start of the conversion, conversion request A is cleared. t3: The trigger event for channel B occurs and a conversion request is activated. In wait-for-read mode, the currently running conversion of channel A is finished normally. t4: After the conversion of channel A is finished, the conversion of channel B is started. With the start of the conversion, conversion request B is cleared. t5: The conversion of channel B is finished. t6: The trigger event for channel A occurs and a conversion request is activated. t7: At the end of the arbitration round, channel A is determined as arbitration winner, the conversion of channel A is started. With the start of the conversion, conversion request A is cleared. t8: The trigger event for channel B occurs and a conversion request is activated. t9: At the end of the arbitration round, channel B is determined as arbitration winner. In cancel-inject-repeat mode, the currently running conversion of channel A is aborted and the conversion of channel B is started. With the abort of conversion A, conversion request A is set again. With the start of conversion B, conversion request B is cleared. t10: The conversion of channel B is finished. In the meantime, the pending request for channel A has been identified as arbitration winner and the conversion of channel A is started. With the start of the conversion, conversion request A is cleared. t11: The conversion of channel A is finished. User’s Manual ADC, UM_V0.1D6 16-35 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.7 Arbiter Registers 16.2.7.1 Arbitration Slot Enable Register The arbitration slot enable register contains bits to enable/disable the conversion request treatment in the arbitration slots. ASENR Arbitration Slot Enable Register 15 14 13 12 11 10 XSFR(18H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 AS AS AS EN2 EN1 EN0 0 r rw rw rw Field Bits Type Description ASENx (x = 0-2) x rw Arbitration Slot x Enable Each bit enables the associated arbitration slot of an arbiter round. The request source bits are not modified by write actions to ASENR. 0B The corresponding arbitration slot is disabled and considered as empty. Conversions are not requested, even for the request source(s) with request bit(s) pending. If the arbiter shall not be running continuously (ARBM = 1), no conversion request of the request source for arbitration slot x must be active. Clear conversion requests of the related request source before disabling an arbitration slot. 1B The corresponding arbitration slot is enabled. Conversions are requested for the request source(s) with pending request bit(s). 0 [15:3] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-36 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.7.2 Request Source Priority Register The request source priority register contains bits to define the request source priority and the conversion start mode. The priority and conversion start mode settings of an enabled request source must not be changed by SW. If a request source is disabled, the setting can be changed by SW if a currently running conversion requested by this source is finished. RSPR0 Request Source Priority Register 0 XSFR(14H) 15 14 13 12 11 10 0 CSM 2 0 r rw r 9 8 Reset Value: 0000H 7 6 PRIO 2 CSM 1 0 rw rw r 5 4 3 2 1 0 PRIO 1 CSM 0 0 PRIO 0 rw rw r rw Field Bits Type Description PRIO0, PRIO1, PRIO2 [1:0], [5:4], [9:8] rw Priority of Request Source x This bit field defines the priority of the conversion request source x, located in arbitration slot x. 00B Lowest priority is selected. ... 11B Highest priority is selected. CSM0, CSM1, CSM2 3, 7, 11 rw Conversion Start Mode of Request Source x This bit defines the conversion start mode of the conversion request source x, located in arbitration slot x. 0B Wait-for-start mode is selected. 1B Cancel-inject-repeat mode is selected. 0 2, 6, 10, r [15:12] User’s Manual ADC, UM_V0.1D6 Reserved returns 0 if read; should be written with 0; 16-37 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.8 Scan Request Source Handling A scan request source can issue conversion requests for a sequence of up to 16 input channels. It can be programmed individually for each input channel if it takes part in the scan sequence. The scan sequence always starts with the highest enabled channel number and continues towards lower channel numbers (order defined by the channel number, each channel can be converted only once per sequence). trigger inputs REQTRx[D:A] REQTRx trigger & gating unit gating inputs REQGTx[D:A] REQGTx conversion request control load event conversion requests pending request request source event request handling scan request source x status request source arbiter ADC_scan_reqsr Figure 16-9 Scan Request Source 16.2.8.1 Overview A scan request source performs the: • • • Conversion request control: The conversion request control defines if an analog input channel takes part in the scan sequence (see bits in register CRCR1). The programmed register value is kept unchanged by an ongoing scan sequence. Conversion request pending: The pending conversion requests indicate if an input channel has to be converted in an ongoing scan sequence (see bits in register CRPR1). A conversion request can only be issued to the request source arbiter if at least one pending bit is set. With each conversion start that has been triggered by the scan request source, the corresponding pending bit is automatically cleared. The scan sequence is considered finished and a request source event is generated if the last conversion triggered by the scan source is finished and all pending bits have been cleared. Request handling: The request handling block interfaces with the request source arbiter. It requests conversion due to pending bits in the scan sequence and handles the conversion User’s Manual ADC, UM_V0.1D6 16-38 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter • status information. If a conversion triggered by the scan request source is aborted due to a conversion request from another request source with a higher priority, the corresponding pending bit is automatically set. This mechanism ensures that an aborted conversion takes part in the next arbitration round and does not get lost. The control of the scan sequence is done based on bits in register CRMR1. Trigger and gating signal handling: The trigger and gating unit interfaces with signals and modules outside the ADC module that can request conversions. For example, a timer unit can issue a request signal to synchronize conversions to PWM events. A load event starts a scan sequence by modifying the request pending bits according to the request control bits. 16.2.8.2 Scan Sequence Operation To operate a scan request source, the following aspects should be taken into account: • • • • • • • The bits in register CRCR1 have to be programmed to define the channels participating in the scan sequence. If a trigger or gating function by external signals is desired, the gating and trigger inputs have to be defined by bit fields REQTRx and REQGTx in register PISEL (the value of x defines the number of the arbitration slot where the scan source is connected). The gating mechanism has to be defined by CRMR1.ENGT. The corresponding arbitration slot has to be enabled to accept conversion requests from the scan source (see register ASENR). The load event has to be defined by bits in CRMR1 to start a scan sequence. If a load event occurs while CRMR1.LDM = 0, the content of CRCR1 is copied to CRPR1 (overwrite). This setting allows starting a new scan sequence and to “forget” remaining pending bits if a load event occurs while a scan sequence is running. If a load event occurs while CRMR1.LDM = 1, the content of CRCR1 is bit-wisely logical OR-combined to CRPR1 (no overwrite). This setting allows starting a new scan sequence without “forgetting” remaining pending bits if a load event occurs while a scan sequence is running. To start a scan sequence, the following mechanisms are supported to generate a load event: • • An external trigger signal can be selected to start a scan sequence controlled by HW by an external module or signal, e.g. a timer unit or an input pin. The trigger feature is enabled by CRMR1.ENTR = 1. The load event is generated if a rising edge is detected at the selected trigger input. A load event is generated under SW control by writing CRMR1.LDEV = 1. This mechanism starts a scan sequence without modifying the bits in register CRCR1. A data write action to CRCR1 does not lead to a load event (first prepare the channel control, then start the sequence). User’s Manual ADC, UM_V0.1D6 16-39 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter • • If SW writes data to register CRPR1, the written data is stored in register CRCR1 and a load event is generated automatically. This mechanism starts a scan sequence with the channels defined by the written data (the sequence is defined and started with a single data write action, e.g. under PEC control). A load event is generated each time a scan sequence has finished and the request source event occurs if bit CRMR1.SCAN = 1. This setting leads to a permanent repetition of the scan sequence. To stop or abort an ongoing scan sequence, the following mechanisms are supported: • • • An external gating signal can be selected to stop and to continue a scan sequence at any point in time controlled by an external module or signal, e.g. a timer unit or an input pin. The gating feature can be enabled and the polarity of the gating signal REQGTx can be selected by CRMR1.ENGT. The gating mechanism does not modify the contents of the conversion pending bits, but only prevents the request handling block from issuing conversion requests to the arbiter. The arbiter can be disabled by SW for this arbiter slot by clearing the corresponding bit ASENR.ASENx. This mechanism does not modify the contents of the conversion pending bits, but only prevents the arbiter from accepting requests from the request handling block. The pending request bits can be cleared by writing bit CRMR1.CLRPND = 1. It is recommended to stop the scan sequence before clearing the pending bits. 16.2.8.3 Request Source Event and Interrupt A request source event of a scan source occurs if the last conversion of a scan sequence is finished (all pending bits = 0). A request source event interrupt can be generated based on a request source event according to the structure shown in Figure 16-10. If a request source event is detected, it sets the corresponding indication flag in register EVINFR. These flags can also be set by writing a 1 to the corresponding bit position, whereas writing 0 has no effect. The indication flags can be cleared by SW by writing a 1 to the corresponding bit position in register EVINCR. The service request output line SRx that is selected by the request source event interrupt node pointer bit fields in register EVINPR0 becomes activated each time the related request source event is detected or the related bit position in register EVINFR is written with a 1. The request source events and the result events share the same registers. The request source event is located at the bit position in register EVINFR: • Event 1 (indicated by bit EVINF0): Request source event of scan source in arbitration slot 1 User’s Manual ADC, UM_V0.1D6 16-40 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter request source event indication flag request source event interrupt enable request source event interrupt node pointer EVINFR. EVINFx CRMRx. ENSI EVINPRy. EVINPx set to SR0 scan sequence finished to SR1 request source event to SR2 to SR3 ADC_scan_source_int Figure 16-10 Interrupt Generation of a Scan Request Source User’s Manual ADC, UM_V0.1D6 16-41 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.9 Scan Request Source Registers 16.2.9.1 Conversion Request Control Register This register contains the control and status bits of the scan request source. The index 1 describes the number of the arbitration slot where the request source is taking part in the arbitration. The conversion request control register contains the bits that are copied to the pending register when the load event occurs. Register CRCR1 is updated by write accesses to register CRPR1, and can be accessed (read and written) directly. CRCR1 Conversion Request 1 Control Register XSFR(E8H) Reset Value: 0000H 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CH 15 CH 14 CH 13 CH 12 CH 11 CH 10 CH 9 CH 8 CH 7 CH 6 CH 5 CH 4 CH 3 CH 2 CH 1 CH 0 rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh Field Bits Type Description CHx (x = 0-15) x rwh User’s Manual ADC, UM_V0.1D6 Channel Bit x Each bit corresponds to one analog input channel, the channel number CHx is defined by the bit position x in this register. 0B The analog channel CHx will not be requested for conversion by this scan request source. 1B The analog channel CHx will be requested for conversion by this scan request source. 16-42 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.9.2 Conversion Request Pending Register The conversion request pending register contains the bits that are requesting a conversion of the corresponding analog channel. A write operation to CRPR1 leads to a data write to the bits in CRCR1 with an automatic load event generation. A read operation to CRPR1 delivers the pending bits. CRPR1 Conversion Request 1 Pending Register XSFR(EAH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP CHP 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 rwh rwh rwh rwh rwh rwh rwh rwh rwh Field Bits Type Description CHPx (x = 0-15) x rwh User’s Manual ADC, UM_V0.1D6 rwh rwh rwh rwh rwh rwh rwh Channel Pending Bit x Write view: A write to this address targets the bits in register CRCR1. Read view: Each bit corresponds to one analog channel, the channel number CHx is defined by the bit position in the register. 0B The analog channel CHx is not requested for conversion by this request source. 1B The analog channel CHx is requested for conversion by this request source. 16-43 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.9.3 Conversion Request Mode Register The conversion request mode register contains bits to configure the desired operating mode of the scan request source. CRMR1 Conversion Request 1 Mode Register XSFR(ECH) 15 14 13 12 11 10 9 8 7 LD CLR REQ EV PND GT 0 r w w rh Reset Value: 0000H 6 5 4 3 2 1 0 0 LD M SC AN EN SI EN TR ENGT r rw rw rw rw rw Field Bits Type Description ENGT [1:0] rw Enable Gate This bit field enables the gating functionality for the request source. 00B The request source does not issue conversion requests. 01B The request source issues conversion requests if at least one pending bit is set. 10B The request source issues conversion requests if at least one pending bit is set and the selected gating signal REQGTx = 1. 11B The request source issues conversion requests if at least one pending bit is set and the selected gating signal REQGTx = 0. ENTR 2 rw Enable External Trigger This bit enables the external trigger possibility. If enabled, the load event takes place if a rising edge is detected at the selected trigger input signal REQTR. 0B The external trigger is disabled. 1B The external trigger is enabled. ENSI 3 rw Enable Source Interrupt This bit enables the request source interrupt generation if a request source event occurs (last pending conversion is finished). 0B The request source interrupt is disabled. 1B The request source interrupt is enabled. User’s Manual ADC, UM_V0.1D6 16-44 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description SCAN 4 rw Autoscan Enable This bit enables a permanent scan functionality. If enabled, the load event is automatically generated if a request source event occurs. 0B The permanent scan functionality is disabled. 1B The permanent scan functionality is enabled. LDM 5 rw Load Event Mode This bit defines the transfer mechanism triggered by the load event. With the load event, the value of register 0B CRCR1 is copied to the pending register CRPR1 (overwrite). 1B With the load event, the value of register CRCR1 is bit-wisely logical OR combined to the pending register CRPR1. REQGT 7 rh Request Gate Level This bit monitors the level at the REQGT input. The level is 0. 0B 1B The level is 1. CLRPND 8 w Clear Pending Bits 0B No action. 1B The bits in register CRPR1 are cleared. LDEV 9 w Generate Load Event 0B No action. 1B A load event is generated. 0 6, [15:10] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-45 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.10 Sequential Request Source Handling Sequential request sources have been introduced to allow short conversion sequences with freely programmable channel numbers (contrary to a scan request source with a fixed conversion order for the enabled channels). Two versions of the sequential sources are available in each ADC kernel: • • Request source in arbitration slot 2: This request source can handle a sequence of up to 4 input channels (4-stage queue for 4 entries). This mechanism could be used to support application-specific conversion sequences, especially for timing-critical sequences containing multiple conversions of the same channel. Request source in arbitration slot 0: This request source can handle a single input channel (1-stage queue for 1 entry). This mechanism could be used for SW-controlled conversion requests or HWtriggered conversions of a single input channel (to “inject” a single conversion into a running sequence). refill REQTR queue input trigger & gating unit intermediate queue stages trigger inputs gating inputs REQGT E V queue stage 0 wait for trigger request source event request request handling abort sequential request source restart status request source arbiter backup stage ADC_seq_reqsrc Figure 16-11 Sequential Request Source The internal structure and the handling of the sequential sources is similar for both versions. The programmed sequence is stored in a queue buffer (based on a FIFO mechanism) with at least one queue stage (stage 0) and a backup stage for aborted conversions. The only difference between both versions is given by the number of intermediate queue stages for storing the sequence. The request source in arbitration User’s Manual ADC, UM_V0.1D6 16-46 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter slot 0 does not provide intermediate queue stages (1-stage queue with only queue stage 0), whereas the one in arbitration slot 2 provides 3 intermediate queue stages in additional to queue stage 0 (leading to a 4-stage queue). 16.2.10.1 Overview A sequential request source performs the: • • • • • Queue input: The queue input represents the programming interface where the sequence is defined (see QINR0, QINR2). It does not provide any buffer capability, but handles the filling of the queue buffer (queue stage 0 plus optional intermediate queue stages) by writing data to it. The contents of the queue stages can not be directly modified by program, except by the command for flushing the complete queue. The queue input also handles the refill mechanism, an automatic re-insertion of a started conversion from queue stage 0 (including the control parameters) as new queue input. This feature allows a single setup (by SW) of a conversion sequence and multiple repetitions of the same sequence without the need to re-program it each time. A conversion sequence is repeated automatically if all queue entries of the sequence are setup for refill mode. Queue stage 0: The content of this queue stage defines which channel will be requested next for a conversion (see Q0R0, Q0R2). It also defines if the request should be triggered by an external event or if the requested conversion should follow the previous one as soon as possible. It also enables the request source interrupt generation after the conversion. The contents of this queue stage is cleared when the requested conversion is started and the next queue entry can be handled (if available). Queue backup stage: The queue backup stage is used to store the request control parameters when a conversion requested by this request source is aborted. A validation bit indicates that the aborted conversion has to be requested next (before the current contents of queue stage 0) to maintain the original sequence (see QBUR0, QBUR2). Request handling: The request handling block interfaces with the request source arbiter. It requests a conversion due to valid information in queue stage 0 and handles the conversion status information. The control of the queue sequence is done based on bits in registers QMR0 (for the request source in arbitration slot 0) and QMR2 (for the arbitration slot 2). Trigger and gating signal handling: The trigger and gating unit interfaces with signals and modules outside the ADC module that can request conversions. For example, a timer unit can issue a request signal to synchronize conversions to PWM events. A trigger event can start a conversion request for the entry in queue stage 0 (see QMR0, QMR2). An event flag User’s Manual ADC, UM_V0.1D6 16-47 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter QSRx.EV indicates that a trigger event has been detected (rising edge of selected trigger input signal REQTRx if enabled by QMRx.ENTR or write action with QMRx.TREV = 1). This bit is cleared with each conversion start requested by this source or by writing bits CEV = 1, FLUSH = 1, or CLRV = 1. 16.2.10.2 Sequential Source Operation To operate a sequential request source, the following aspects should be taken into account: • • • • • The sequence has to be initialized by writing to the queue input QINR0 (for arbitration slot 0) or QINR2 (for arbitration slot 2) when using the refill mechanism. Each write access corresponds to one conversion request. The desired sequence should be completely initialized before enabling the request source, because with enabled refill feature, write accesses by SW to QINRx are not allowed. If a trigger or gating function by external signals is desired, the gating and trigger inputs have to be defined by bit fields REQTRx and REQGTx in register PISEL (the value of x defines the number of the arbitration slot where the request source is connected). The gating mechanism has to be defined by QMRx.ENGT. If an external trigger mechanism is desired, it has to be enabled by QMRx.ENTR = 1. The corresponding arbitration slot has to be enabled to accept conversion requests from the sequential source (see register ASENR). To start a sequence of a sequential request source, the following mechanisms are supported: • • • An external trigger signal can be selected to start a scan sequence controlled by HW by an external module or signal, e.g. a timer unit or an input pin. The trigger feature is enabled by QMRx.ENTR = 1. The trigger event is generated if a rising edge is detected at the selected trigger input. A trigger event is generated under SW control by writing QMRx.TREV = 1. This mechanism starts a request if queue stage 0 contains valid data (or the queue backup stage respectively). A write operation to a queue input leads to a (new) valid queue entry. If the queue is empty (no valid entry), the written data arrives in queue stage 0 and starts a conversion request (if enabled by QMRx.ENGT and without waiting for an external trigger). If the refill mechanism is used, the queue inputs must not be written while the queue is running. Write operations to a completely filled queue are ignored. To stop or abort an ongoing sequence of a sequential request source, the following mechanisms are supported: • An external gating signal can be selected to stop and to continue a sequence at any point in time controlled by an external module or signal, e.g. a timer unit or an input pin. The gating feature can be enabled and the polarity of the gating signal can be User’s Manual ADC, UM_V0.1D6 16-48 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter • • • selected by QMRx.ENGT. The gating mechanism does not modify the queue entries, but only prevents the request handling block from issuing conversion requests to the arbiter. The arbiter can be disabled by SW for this arbiter slot by clearing the corresponding bit ASENR.ASENx. This mechanism does not modify the queue entries, but only prevents the arbiter from accepting requests from the request handling block. The next pending queue entry is cleared by writing bit QMRx.CLRV = 1. It is recommended to stop the sequence before clearing a queue entry (ENGT = 00B). If the queue backup stage contains a valid entry, this one is cleared, otherwise a valid entry in queue register 0 is cleared. All queue entries are cleared by writing bit QMRx.FLUSH = 1. It is recommended to stop the sequence before clearing queue entries. 16.2.10.3 Request Source Event and Interrupt A request source event occurs when a conversion that has been requested by this source is completely finished. The interrupt enable bits are located in the queue 0 register (if this has not been a repeated start after an abort) or in the queue backup register (if this has been a repeated start after an abort). A request source event interrupt can be generated based on a request source event according to the structure shown in Figure 16-12. If a request source event is detected, it sets the corresponding indication flag in register EVINFR. These flags can also be set by writing a 1 to the corresponding bit position, whereas writing 0 has no effect. The indication flags can be cleared by SW by writing a 1 to the corresponding bit position in register EVINCR. The service request output line SRx that is selected by the request source event interrupt node pointer bit fields in register EVINPR0 becomes activated each time the related request source event is detected or the related bit position in register EVINFR is written with a 1. The request source events and the result events share the same registers. The request source event is located at the bit position in register EVINFR: • • Event 0: Request source event of sequential source in arbitration slot 0. Event 2: Request source event of sequential source in arbitration slot 2. User’s Manual ADC, UM_V0.1D6 16-49 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter request source event indication flag request source event interrupt enable request source event interrupt node pointer EVINFR. EVINFx Q0Rx. ENSI EVINPRy. EVINPx set conversion finished triggered by request source request source event to SR0 0 to SR1 to SR2 1 QBURx. ENSI to SR3 QBURx. V ADC_seq_source_int Figure 16-12 Interrupt Generation of a Sequential Request Source User’s Manual ADC, UM_V0.1D6 16-50 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.11 Sequential Source Registers 16.2.11.1 Queue Mode Register These registers contain the control and status bits of a sequential source. The index 0/2 describes the number of the arbitration slot where the request source is taking part in the arbitration. The queue mode register contains bits used to set the request source in the desired mode. Note: Before SW modifies the queue content by QMR.CLRV or QMR.FLUSH, all HW actions related to this queue have to be finished. Therefore, the arbitration slot has to be disabled and SW has to wait for at least two arbitration rounds (to be sure that this request source can no longer be an arbitration winner). Then, it has to check GLOBSTR.CRSC and GLOBSTR.BUSY to be sure that a conversion triggered by this request source is no longer running. Then SW can read QBURx and Q0Rx and can start modification of the queue content. QMR0 Queue 0 Mode Register QMR2 Queue 2 Mode Register 15 14 13 Reset Value: 0000H XSFR(F0H) Reset Value: 0000H 11 10 9 8 0 CEV FLU SH TR EV CLR V 0 EN TR ENGT r w w w w r rw rw User’s Manual ADC, UM_V0.1D6 12 XSFR(E0H) 7 16-51 6 5 4 3 2 1 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description ENGT [1:0] rw Enable Gate This bit field enables the gating functionality for the request source. 00B The request source does not issue conversion requests. 01B The request source issues conversion requests if a valid conversion request is pending in the queue 0 register or in the backup register. 10B The request source issues conversion requests if a valid conversion request is pending in the queue 0 register or in the backup register and the selected gating signal REQGTx = 1. 11B The request source issues conversion requests if a valid conversion request is pending in the queue 0 register or in the backup register and the selected gating signal REQGTx = 0. ENTR 2 rw Enable External Trigger This bit enables the external trigger possibility. 0B The external trigger is disabled and the trigger event is not generated. 1B The external trigger is enabled and a trigger event is generated if a rising edge is detected at the selected trigger input signal for REQTRx. CLRV 8 w Clear V Bit 0B No action. 1B The next pending valid queue entry in the sequence and the event flag EV are cleared. If there is a valid entry in the queue backup register (QBUR.V = 1), this entry is cleared, otherwise the entry in queue register 0 is cleared. User’s Manual ADC, UM_V0.1D6 16-52 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description TREV 9 w Trigger Event 0B No action. 1B A trigger event is generated by SW. If the a valid entry in the request source waits for a trigger event, a conversion request is started. FLUSH 10 w Flush Queue No action. 0B All entries in the queue (including the backup 1B stage) and the event flag EV are cleared. The queue contains no more valid entry. CEV 11 w Clear Event Flag 0B No action. 1B Bit EV is cleared. 0 [7:3], [15:8] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-53 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.11.2 Queue Status Register The queue status register contains bits indicating the status of the sequential source. The filling level and the empty information refer to the queue intermediate stages (if available) and to the queue register 0. An aborted conversion stored in the backup stage is not indicated by these bits (therefore, see QBURx.V). QSR0 Queue 0 Status Register QSR2 Queue 2 Status Register 15 14 13 12 11 10 9 XSFR(E2H) Reset Value: 0020H XSFR(F2H) Reset Value: 0020H 8 7 6 5 4 3 2 1 0 0 EV REQ GT 0 EMP TY 0 FILL r rh rh r rh r rh Field Bits Type Description FILL [1:0] rh Filling Level1) This bit field indicates how many queue entries are valid in the sequential source. It is incremented each time a new entry is written to QINRx or by an enabled refill mechanism. It is decremented each time a requested conversion has been started. A new entry is ignored if the filling level has reached its maximum value. 00B EMPTY = 1:There is no valid entry in the queue. EMPTY = 0:There is 1 valid entries in the queue. 01B There are 2 valid entries in the queue. 10B There are 3 valid entries in the queue. 11B There are 4 valid entries in the queue. EMPTY 5 rh Queue Empty This bit indicates if the sequential source contains valid entries. 0B There are FILL+1 valid entries in the queue. 1B There are no valid entries (queue is empty). User’s Manual ADC, UM_V0.1D6 16-54 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description REQGT 7 rh Request Gate Level This bit monitors the level at the selected REQGT input. 0B The level is 0. 1B The level is 1. EV 8 rh Event Detected This bit indicates that an event has been detected while at least one valid entry has been in the queue (queue register 0 or backup stage). Once set, this bit is cleared automatically when the requested conversion is started. 0B A trigger event has not been detected. 1B A trigger event has been detected. 0 [4:2], 6, [15:9] r Reserved returns 0 if read; should be written with 0; 1) This bit field is always 00B for the 1-stage queue in arbitration slot 0. User’s Manual ADC, UM_V0.1D6 16-55 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.11.3 Queue 0 Register The queue registers 0 monitor the status of the pending request (queue stage 0). Q0R0 Queue 0 Register 0 Q0R2 Queue 2 Register 0 15 14 13 12 11 10 9 XSFR(E4H) Reset Value: 0000H XSFR(F4H) Reset Value: 0000H 8 7 6 5 4 3 2 1 0 V EX TR EN SI RF REQCHNR r rh rh rh rh rh 0 Field Bits Type Description REQCHNR [4:0] rh Request Channel Number This bit field indicates the requested channel number. RF 5 rh Refill This bit indicates if the pending request is discarded after the conversion start or if it is automatically refilled into the queue input of the request queue. The request is discarded after the conversion 0B start. 1B The request is refilled into the queue after the conversion start. ENSI 6 rh Enable Source Interrupt This bit indicates if a request source event interrupt is generated when the conversion is finished. 0B The request source event interrupt generation is disabled. 1B The request source event interrupt generation is enabled. EXTR 7 rh External Trigger This bit indicates if a valid queue entry immediately leads to a conversion request or if the request handler waits for a trigger event. 0B The request handler does not wait for a trigger event. 1B The request handler waits for a trigger event. User’s Manual ADC, UM_V0.1D6 16-56 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description V 8 rh Request Channel Number Valid This bit indicates if the queue register 0 contains a valid queue entry. 0B The queue entry is not valid and does not lead to a conversion request. 1B The queue entry is valid and leads to a conversion request. 0 [15:9] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-57 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.11.4 Queue Backup Register The queue backup registers monitor the status of an aborted sequential request. The registers QBURx and QINRx share the same register address. A read operation at this register address will deliver the “rh” bits of register QBURx. A write operation to this address will target the “w” bits in register QINRx. QBUR0 Queue 0 Backup Register QBUR2 Queue 2 Backup Register 15 14 13 12 11 10 9 XSFR(E6H) Reset Value: 0000H XSFR(F6H) Reset Value: 0000H 8 7 6 5 4 3 2 1 0 V EXT R EN SI RF REQCHNR r rh rh rh rh rh 0 Field Bits Type Description REQCHNR [4:0] rh Request Channel Number This bit field contains the channel number of an aborted conversion that has been requested by this request source. RF 5 rh Refill This bit contains the refill bit of an aborted conversion that has been requested by this request source. ENSI 6 rh Enable Source Interrupt This bit contains the request source event interrupt enable bit of an aborted conversion that has been requested by this request source. EXTR 7 rh External Trigger This bit contains the external trigger bit of an aborted conversion that has been requested by this request source. User’s Manual ADC, UM_V0.1D6 16-58 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description V 8 rh Request Channel Number Valid This bit indicates if the entry in the queue backup register is valid (REQCHNR, RF, TR and ENSI are valid). Bit V is set if a running conversion that has been requested by this request source is aborted. It is cleared when the repeated conversion is started. The backup register does not contain a valid 0B entry. 1B The backup register contains a valid entry. It will be requested before a valid entry in queue register 0 will be requested. 0 [15:9] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-59 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.11.5 Queue Input Register The queue input register is the entry point for conversion requests of a sequential request source. The registers QBURx and QINRx share the same register address. A read operation at this register address will deliver the “rh” bits of register QBURx. A write operation to this address will target the “w” bits in register QINRx. QINR0 Queue Input Register 0 QINR2 Queue Input Register 2 15 14 13 11 10 9 Reset Value: 0000H XSFR(F6H) Reset Value: 0000H 7 6 5 0 EX TR EN SI RF REQCHNR r w w w w Field Bits Type Description REQCHNR [4:0] w Request Channel Number This bit field defines the requested channel number. RF 5 w Refill This bit defines the refill functionality for this queue entry. The content of this queue entry is not entered 0B again in QINRx when the related conversion is started. 1B The content of this queue entry is automatically entered again in QINRx when the related conversion is started. ENSI 6 w Enable Source Interrupt This bit defines the source interrupt functionality. 0B A request source event interrupt is not generated if the related conversion is finished. A request source event interrupt is generated 1B if the related conversion is finished. User’s Manual ADC, UM_V0.1D6 12 XSFR(E6H) 8 16-60 4 3 2 1 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description EXTR 7 w External Trigger This bit defines the external trigger functionality. 0B A valid queue entry immediately leads to a conversion request. A valid queue entry waits for a trigger event to 1B occur before issuing a conversion request. 0 [15:8] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-61 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.12 Channel-Related Functions The channel control unit defines the conversion settings, that can be programmed individually for each analog input channel. Therefore, a channel control register CHCTRx (x = 0 - 15) is associated to each analog input channel CHx. After the arbiter has determined the channel to be converted, the defined settings are applied to the AD converter, comprising information about: • • • • Conversion parameters: Bit field ICLSEL defines which input class is taken into account for the conversion (see Section 16.2.12.1). Reference selection: Bit field REFSEL defines which reference input is used for the conversion (see Section 16.2.12.2) Channel event handling: Bit fields LCC, BNDASEL, and BNDBSEL define which boundaries are used for limit checking (see Section 16.2.12.4) and which channel event leads to a channel event interrupt (see Section 16.2.12.5). Synchronous conversion request: Bit SYNC defines if the channel triggers a synchronized conversion (see Section 16.2.17). In addition to the general channel control, the ADC kernel supports a mechanism (named alias feature, see Section 16.2.12.3) to redirect a conversion request to another channel number. 16.2.12.1 Input Classes An input class defines the length of the sample phase and the resolution of the conversion. In most applications, the characteristics of the input circuitries (RC input lowpass filter and impedance of the signal source) are quite similar for several analog input signals, leading to similar timings for the sample phase of these channels. As a consequence, input channels with similar parameters can be grouped together to form an input class. All channels with the same ICLSEL setting belong to the same input class and have the same sample phase length and resolution. In the XC2300, 2 input classes are supported. Registers INPCRx (x = 0 - 1) can be programmed to adjust the sample time and the resolution to the application requirements independently for each input class. The default setting of these registers lead to the minimum sample phase length of 2 fADCI cycles and conversions with 10 bits resolution. If this default setting fits to the application requirements, bit fields CHCTRx (x = 0 - 15).ICLSEL and registers INPCRx (x = 0 - 1) need not to be changed. User’s Manual ADC, UM_V0.1D6 16-62 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.12.2 Reference Selection The conversion result of the ADC is always referring to a reference voltage. The maximum digital result value (full scale) is obtained if the analog input voltage equals the reference voltage. In order to support more than one measurement range with full scale digital representation, the user can select between the standard reference input VAREF and an alternative reference input at the analog input channel CH0 for each ADC kernel. The reference selection can be individually programmed for each input channel. This feature can be used to connect 5 V based sensors and 3.3 V based sensors to the same ADC kernel. In this case, one set of input channels refers to the standard reference input, whereas the other one refers to the voltage level at input CH0. Please note that the smallest granularity 1 LSBn for n bit resolution refers to the selected reference voltage. The granularity becomes very small if a low reference voltage is applied, and as a consequence, the resulting TUE increases due to noise effects. Therefore, it is recommended to avoid small reference voltages. 16.2.12.3 Alias Feature The ADC kernel provides an alias feature, allowing a re-direction of conversion requests for channels CH0 or CH1 to other channel numbers. This feature can be used to measure the same input channel and to store the conversion results in two different result registers. • • • • • The same signal can be measured twice without the need to read out the conversion result to avoid data loss. This allows triggering both conversions quickly one after the other and being independent from CPU interrupt latency. The sensor signal is connected to only one input channel (instead of two analog inputs). This saves input pins in low-cost applications and only the leakage of one input has to be considered in the error calculation. Even if the analog input CH0 is used as alternative reference (see Figure 16-13), the internal trigger and data handling features for channel CH0 can be used. The channel settings for both conversions can be different (boundary values, interrupts, etc.). If a sequential conversion request source has been set up, a conversion request for channels CH0 or CH1 can be easily directed to other input channels without flushing the queue. In typical low-cost AC-drive applications, only one common current sensor is used to determine the phase currents. Depending on the applied PWM pattern, the measured value has different meanings and the sample points have to be precisely located in the PWM period. Figure 16-13 shows an example where the sensor signal is connected to one input channel (CHx) but two conversions are triggered for two different channels (CHx and CH0). With the alias feature, a conversion request for CH0 leads to a conversion of the analog input CHx instead of CH0, but taking into account the settings for CH0. Although the same analog input (CHx) has been measured, the conversion User’s Manual ADC, UM_V0.1D6 16-63 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter results can be stored and read out from the result registers RESRx (conversion triggered for CHx) and RESR0 (conversion triggered for CH0). Additionally, different interrupts or limit boundaries can be selected, enabled or disabled. sensor RESRx CHx ADC reference RESR0 CH0 PWM timer trigger CH0 trigger CHx ADC_alias Figure 16-13 Alias Feature 16.2.12.4 Limit Checking The limit checking mechanism automatically compares each conversion result to two boundary values (boundaries A and B). For each channel, the user can select these boundaries from a set of 4 programmable values (LCBR0 to LCBR3). With this structure, the conversion result range is split into three areas: • • • Area I: The conversion result is below or equal to both boundaries. Area II: The conversion result is above one boundary and below or equal to the other boundary. Area III: The conversion result is above both boundaries. boundaries A channel number analog part arbiter conversion finished B limit checking channel event conversion result ADC_channel_events_overv Figure 16-14 Channel Event Generation User’s Manual ADC, UM_V0.1D6 16-64 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Bit field LCC in the channel control register defines the condition to generate a channel event, leading to a channel event interrupt: • • • • • • • • LCC = 000B: No trigger, the channel event generation is disabled. LCC = 001B: A channel event is generated if the conversion result is not in area I. LCC = 010B: A channel event is generated if the conversion result is not in area II. LCC = 011B: A channel event is generated if the conversion result is not in area III. LCC = 100B: A channel event is always generated (regardless of the boundaries). LCC = 101B: A channel event is generated if the conversion result is in area I. LCC = 110B: A channel event is generated if the conversion result is in area II. LCC = 111B: A channel event is generated if the conversion result is in area III. Figure 16-15 shows an example for limit checking where channel events are generated only if the conversion results are not in the normal operating range defined by area II (LCC = 010B). Typical applications for limit checking are temperature monitoring or overcurrent sensing. As long as the measured temperature value is below a boundary value, the CPU does not need to be informed. In this case, a channel event should be generated only if the conversion result is in area III (LCC = 111B) to indicate an over-temperature condition. If the conversion of the analog temperature input signal is part of an auto-scan sequence autonomously triggered on a regular time base, the CPU load for the temperature monitoring is zero until the over-temperature condition is detected. In the case of an over-current protection, the channel event can be used to disable PWM generation to reduce the current (in the XC2300, an interrupt output line of the ADC module is connected to a corresponding input of the CCU6x units to allow fast reactions without CPU intervention). conv ersion result range for n bit res olution n area III area II area I conversion results with channel events conversion results without channel events conversion results with channel events 2 -1 boundary B boundary A 0 ADC_limit_check Figure 16-15 Limit Checking Note: It is also possible to select the same boundary register for boundaries A and B. In this case, the conversion result range is split into two ranges (area II is empty). User’s Manual ADC, UM_V0.1D6 16-65 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.12.5 Channel Event Interrupts A channel event interrupt can be generated based on a channel event according to the structure shown in Figure 16-16. If a channel event is detected, it sets the corresponding indication flag in register CHINFR. These flags can also be set by writing a 1 to the corresponding bit position, whereas writing 0 has no effect. The indication flags can be cleared by SW by writing a 1 to the corresponding bit position in register CHINCR. channel event to SR0 to SR1 channel event flags channel event node pointers FC1 CHENP1 channel number FC15 CHENP15 to SR3 . .. CHENP0 . .. FC0 to SR2 ADC_channel_events_routing Figure 16-16 Channel Event Interrupt Generation The service request output line SRx that is selected by the channel node pointer bit fields in registers CHINPR0, CHINPR4, CHINPR8, or CHINPR12 is activated each time the related channel event is detected or the related bit position in register CHINFR is written with a 1. User’s Manual ADC, UM_V0.1D6 16-66 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13 Channel-Related Registers 16.2.13.1 Channel Control Registers The channel control registers contain bits to select the targeted result register, to control the limit check mechanism and to select an input class. The channel control register 0 defines the settings for the input channel CH0, etc. CHCTRx (x = 0 - 15) Channel x Control Register 15 14 13 12 11 10 XSFR(20H + x * 2) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 0 RESR SEL ICL SEL REF SEL SYN C LCC BNDB SEL BNDA SEL r rw rw rw rw rw rw rw Field Bits Type Description BNDASEL [1:0] rw Boundary A Selection This bit field defines which boundary will be taken as boundary A for the limit checking. 00B The value given by register LCBR0 is selected. 01B The value given by register LCBR1 is selected. 10B The value given by register LCBR2 is selected. 11B The value given by register LCBR3 is selected. BNDBSEL [3:2] rw Boundary B Selection This bit field defines which boundary will be taken as boundary B for the limit checking. 00B The value given by register LCBR0 is selected. 01B The value given by register LCBR1 is selected. 10B The value given by register LCBR2 is selected. 11B The value given by register LCBR3 is selected. LCC [6:4] rw Limit Check Control This bit field defines the behavior of the limit checking mechanism. Please refer to the coding in Section 16.2.12.4 on Page 16-64. User’s Manual ADC, UM_V0.1D6 16-67 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description SYNC 7 rw Synchronization Request This bit defines if a conversion request for this channel leads to a synchronized (parallel) conversion with other ADC kernels. This bit is only taken into account if the ADC kernel is a potential conversion master (SYNCTR.STSEL = 00), otherwise it is considered to be 0. 0B This channel does not request a synchronized conversion. 1B This channel requests a synchronized conversion if the ADC kernel is a potential synchronization master. REFSEL [9:8] rw Reference Input Selection This bit field defines the reference source for this channel. 00B The standard reference input VAREF is selected. 01B The alternative reference input CH0 is selected. 10B reserved, do not use 11B reserved, do not use ICLSEL [11,10] rw Input Class Selection These bits are used to select the input class. 00B The input class 0 is selected. 01B The input class 1 is selected. 10B reserved, do not use 11B reserved, do not use RESRSEL [14:12] rw Result Register Selection This bit field defines which result register will be the target of the conversion result of this channel. 000B The result register 0 is selected. 001B The result register 1 is selected. ... 111B The result register 7 is selected. 0 15 r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-68 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13.2 Input Class Registers The input class registers contain bits to control the sample time and the resolution for each input class. The input class register 0 defines the settings for the input class 0, etc. INPCRx (x = 0 - 1) Input Class Register x 15 14 13 12 XSFR(C0H + x * 2) 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 0 DW STC r rw rw 2 1 0 Field Bits Type Description STC [7:0] rw Sample Time Control This bit field defines the additional length of the sample phase, given in analog clock cycles fADCI. A minimum sample phase of 2 analog clock cycles is extended by the programmed value. sample phase length = (2 + STC) / fADCI DW [9:8] rw Data Width This bit field defines how many bits are converted for the result1). The MSBs of conversion results with different DW settings are left aligned in the result bit fields. Bit positions that are not converted are 0. 00B The result is 10 bits wide. 01B reserved, do not use 10B The result is 8 bits wide. 11B reserved, do not use 0 [15:10] r Reserved returns 0 if read; should be written with 0; 1) The setting 00B is default. In case a 10-bit AD converter is used, the combinations 01B and 11B are ignored by the converter and treated like 00B. User’s Manual ADC, UM_V0.1D6 16-69 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13.3 Limit Check Boundary Registers The bit fields in these registers define compare value (boundary) for the limit checking unit. The reset values of the boundaries are defined as 10%, 90%, 33% and 66% of the complete result range (in 12 bit representation). LCBR0 Limit Check Boundary Register 0 LCBR1 Limit Check Boundary Register 1 LCBR2 Limit Check Boundary Register 2 LCBR3 Limit Check Boundary Register 3 15 14 13 12 11 10 9 XSFR(84H) Reset Value: 0198H XSFR(86H) Reset Value: 0E64H XSFR(88H) Reset Value: 0554H XSFR(8AH) Reset Value: 0AA8H 8 7 6 5 4 3 2 1 0 0 BOUNDARY 0 r rw r Field Bits Type Description BOUNDARY [11:2] rw Boundary for Limit Checking This bit field contains the value for the limit checking unit that is compared to the actual conversion result. The result of the limit check is used for the generation of the channel event, see Section 16.2.12.4. 0 [1:0], [15:12] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-70 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13.4 Channel Event Indication Flag Register The channel event indication flag register CHINFR monitors the detected channel events. CHINFR Channel Event Indication Flag RegisterXSFR(90H) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN F15 F14 F13 F12 F11 F10 F9 F8 F7 F6 F5 F4 F3 F2 F1 F0 rwh rwh rwh rwh rwh rwh rwh rwh rwh Field Bits Type Description CHINFx (x = 0 - 15) x rwh User’s Manual ADC, UM_V0.1D6 rwh rwh rwh rwh rwh rwh rwh Channel x Event Indication Flag Flag CHINFx indicates that a channel event for channel x has been detected. Writing a 0 has no effect, whereas writing a 1 sets the written bit position and generates the corresponding interrupt request. 0B A channel x event has not yet been detected. 1B A channel x event has been detected. 16-71 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13.5 Clear Channel Event Indication Register Writing a 1 to a bit position in the channel indication clear register CHINCR clears the corresponding channel event indication flag CHINFx in register CHINFR. If a channel event is detected when the corresponding bit position is written with a 1, flag CHINFx is cleared. CHINCR Channel Event Indication Clear Register XSFR(92H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN CHIN C15 C14 C13 C12 C11 C10 C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 w w w w w w w w w Field Bits Type Description CHINCx (x = 0 - 15) x w User’s Manual ADC, UM_V0.1D6 w w w w w w w Clear Channel Indication Flag 0 No action. 1 Flag CHINFR.x is cleared. 16-72 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13.6 Channel Interrupt Node Pointer Registers The bit fields in these registers define the service request output ADCx_SR[3:0] that is used to signal a channel event interrupt. CHINPR0 Channel Interrupt Node Pointer Register 0 XSFR(98H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 CHINP3 0 CHINP2 0 CHINP1 0 CHINP0 r rw r rw r rw r rw Field Bits Type Description CHINP0, CHINP1, CHINP2, CHINP3 [1:0], [5:4], [9:8], [13:12] rw Interrupt Node Pointer for Channel x This bit field selects which service request output indicates a channel event interrupt of channel x. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [11:10], [15:14] r Reserved returns 0 if read; should be written with 0; CHINPR4 Channel Interrupt Node Pointer Register 4 XSFR(9AH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 CHINP7 0 CHINP6 0 CHINP5 0 CHINP4 r rw r rw r rw r rw User’s Manual ADC, UM_V0.1D6 16-73 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description CHINP4, CHINP5, CHINP6, CHINP7 [1:0], [5:4], [9:8], [13:12] rw Interrupt Node Pointer for Channel x This bit field selects which service request output indicates a channel event interrupt of channel x. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [11:10], [15:14] r Reserved returns 0 if read; should be written with 0; CHINPR8 Channel Interrupt Node Pointer Register 8 XSFR(9CH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 CHINP11 0 CHINP10 0 CHINP9 0 CHINP8 r rw r rw r rw r rw Field Bits Type Description CHINP8, CHINP9, CHINP10, CHINP11 [1:0], [5:4], [9:8], [13:12] rw Interrupt Node Pointer for Channel x This bit field selects which service request output indicates a channel event interrupt of channel x. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [11:10], [15:14] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-74 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter CHINPR12 Channel Interrupt Node Pointer Register 12 XSFR(9EH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 CHINP15 0 CHINP14 0 CHINP13 0 CHINP12 r rw r rw r rw r rw Field Bits Type Description CHINP12, CHINP13, CHINP14, CHINP15 [1:0], [5:4], [9:8], [13:12] rw Interrupt Node Pointer for Channel x This bit field selects which service request output indicates a channel event interrupt of channel x. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [11:10], [15:14] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-75 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.13.7 Alias Register The alias register contains bits to change a requested channel number from CH0 and CH1 to another channel number, see also Section 16.2.12.3. The programmed alias channel number is replacing the internally requested number for analog input multiplexer (of the converter). The internally requested channel number is taken into account for all other internal actions and the synchronization request. ALR0 Alias Register 0 15 14 13 XSFR(1CH) 12 11 10 9 8 7 Reset Value: 0100H 6 5 4 3 2 1 0 0 ALIAS1 0 0 ALIAS0 r rw rw r rw rw 0 Field Bits Type Description ALIAS0 [3:0] rw Alias Value for CH0 Conversion Requests The channel indicated in this bit field is converted instead of channel CH0. The conversion is done with the settings defined for channel CH0. ALIAS1 [11:8] rw Alias Value for CH1 Conversion Requests The channel indicated in this bit field is converted instead of channel CH1. The conversion is done with the settings defined for channel CH1. 0 4, 12 rw Reserved for Future Use Bit is reserved for future use and has to be written with 0B. 0 [7:5], [15:13] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-76 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.14 Conversion Result Handling The result generation part handles the: • • • • • Storage of the conversion results (see Section 16.2.14.1) Wait-for-read mode (see Section 16.2.14.2) Result event interrupts (see Section 16.2.14.3) Result FIFO buffer (see Section 16.2.14.4) Data reduction or anti-aliasing filtering (see Section 16.2.14.5) AD conversion stage conversion finished result registers 0-7 data reduction unit set condition data valid flags result events ADC_result_handling Figure 16-17 Conversion Result Handling 16.2.14.1 Storage of Conversion Results For each analog input channel, the associated channel control register CHCTRx (x = 0 15) contains a pointer bit field (RESRSEL) defining the result register to store the conversion result of this channel. This structure allows the user to direct conversion results of different channels to one or more result registers. Depending on the application needs (data reduction, auto-scan, alias feature, result FIFO, etc.), the user can distribute the conversion results to minimize CPU load or to be more tolerant against interrupt latency. An individual data valid flag VFx (in register VFR) for each result register indicates that “new” valid data has been stored in the corresponding result register and can be read out. Due to different result handling mechanisms, the conversion result can be represented in different ways: • • Data reduction filter disabled: The conversion result is maximum 10 bits wide with the MSB of the conversion result being always at bit position 11 and the remaining LSBs filled with 0. The data valid flag is set and a result event occurs each time a new conversion result is stored in the result register. It is possible to share a result register among several analog input channels. Data reduction filter enabled: The conversion result is maximum 10 bits wide with the MSB of the conversion result being always at bit position 11 and the remaining LSBs filled with 0. The additional bits [13:12] show the MSBs of the data accumulation. User’s Manual ADC, UM_V0.1D6 16-77 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter The data valid flag is set and a result event occurs each time a data reduction sequence is finished and the final result is available in the result register. The channel number is not included in the result register read view. In order to support a wait-for-read and FIFO buffer features, the valid flag has to be cleared automatically when SW does a read access or the result is transferred into another FIFO element (if result FIFO buffering is enabled). This behavior is contradictory to debugging requirements. For debugging, it has to be possible to introduce read or write commands into the normal program flow, e.g. to monitor conversion results. If a debugger reads out a result register, it would change the status of the conversion result from valid = “new” (not yet read out) to “old” (already read out). This would have an undesired impact on the application. Therefore, the read views with “V” deliver the same value as the read views without “V”, but without clearing the valid bit. As a result, a debugger using read views with “V” can monitor the conversion results without influencing their status for the application. The application requirements for results with enabled or disabled data reduction filter being different and debugger accesses can occur, four different scenarios with different result register read views are supported. The four read views refer to the same result register contents, but show a different behavior according to the address that has been read: • • • • Standard read view RESRx (x = 0-7): The data reduction filter has to be disabled, the channel number is included to identify which channel has been converted, and a read action clears the corresponding valid bit. This representation is compatible to the ADC result register in XC16x devices. Read view RESRAx (x = 0-7): The data reduction filter can be enabled, the channel number is not included, and a read action clears the corresponding valid bit. Read view RESRVx (x = 0-7) for debugger: The data reduction filter has to be disabled, the channel number is included, but a read action does not clear the corresponding valid bit. Read view RESRAVx (x = 0-7) for debugger: The data reduction filter can be enabled, the channel number is not included, but a read action does not clear the corresponding valid bit. User’s Manual ADC, UM_V0.1D6 16-78 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.14.2 Wait-for-Read Mode The wait-for-read mode is a feature of a result register allowing the CPU (or PEC) to treat each conversion result independently without the risk of data loss. Data loss could occur if the CPU does not read a conversion result from a result register before a new result overwrites the previous one. Especially for auto-scan conversion sequences (or other sequences with “relaxed” timing requirements), the wait-for-read offers the possibility to request a conversion sequence according to an event (HW or SW), but to start a new conversion according to the CPU capability to read the formerly converted result. If wait-for-read mode is enabled for a result register by setting bit WFR in register RCRx (x = 0 - 7), a request source does not generate a conversion request while the targeted result register contains valid data (indicated by the valid flag VFx = 1) or if a currently running conversion targets the same result register. A new conversion request is generated only after the targeted result register has been read out. If two request sources target the same result register with wait-for-read selected, a lower priority request started before the higher priority source has requested its conversion can not be interrupted by the higher priority request. If a higher priority request targets a different result register, the lower priority conversion can be cancelled and repeated afterwards. User’s Manual ADC, UM_V0.1D6 16-79 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.14.3 Result Event Interrupts A result event interrupt can be generated based on a result event according to the structure shown in Figure 16-18. If a result event is detected, it sets the corresponding indication flag in register EVINFR. These flags can also be set by writing a 1 to the corresponding bit position, whereas writing 0 has no effect. The indication flags can be cleared by SW by writing a 1 to the corresponding bit position in register EVINCR. result event indication flag EVINFR. EVINFx result event result event interrupt interrupt enable node pointer RCRx. IEN EVINPRy. EVINPx set to SR0 new data available to SR1 result event to SR2 to SR3 ADC_result_event_int Figure 16-18 Result Event Interrupt Generation The service request output line SRx that is selected by the result event interrupt node pointer bit fields in registers EVINPR8 or EVINPR12 issues an interrupt each time the related result event is detected or the related bit position in register EVINFR is written with a 1. The result events and the request source events share the same registers. The result events are located at the following bit positions in register EVINFR: • • • • Event 8: Result event of result register 0. Event 9: Result event of result register 1. ... Event 15: Result event of result register 7. User’s Manual ADC, UM_V0.1D6 16-80 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.14.4 Result FIFO Buffer If a result register is not used as direct target for a conversion result, it can be concatenated with other result registers of the same ADC kernel to form a result FIFO buffer (first-in-first-out buffer mechanism). This allows to store measurement results and to read them out later with a “relaxed” CPU access timing. It is possible to set up more than one FIFO buffer structure with the available result registers. A FIFO structure can be built by at least two “neighbor” result registers with the indices x and z = x+1, where result register z represents the input and result register x represents the output of the FIFO buffer. The conversion result has to be delivered by the converter stage to the FIFO input, whereas the buffered data has to be read out from the FIFO output. The FIFO buffer function is enabled by setting bit FEN in registers RCRx (x = 0 - 7), except for RCRz. In the example shown in Figure 16-19, the result registers have been configured to form two FIFO buffers with two buffer stages (result registers 0/1 and 6/7, respectively), one FIFO buffer with three buffer stages (result registers 2/3/4), whereas result register 5 is used as “normal” result register without additional FIFO buffer functionality. conversion results CH2, 7, 10 AD conversion stage result register 7 result register 6 CPU read out conversion results CH8 result register 5 CPU read out conversion results all other channels (e.g. for scan) result register 4 result register 3 result register 2 conversion results CH3 CPU read out result register 1 result register 0 CPU read out ADC_result_FIFO Figure 16-19 Result FIFO Buffers If more than two result neighbor registers are concatenated to a FIFO buffer (from result register z to result register x, with z > x), the one with the highest index (z) is always the input and the one with the lowest index (x) is always the output. All intermediate result registers y (x < y < z) are used as intermediate FIFO stages without data input or data output functionality. User’s Manual ADC, UM_V0.1D6 16-81 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Result register features for each FIFO buffer: • • • Result register z (FIFO buffer input, FEN = 0): This result register can be enabled for data reduction. The wait-for-read mode is supported to avoid data loss if the FIFO is full. Result event interrupt generation is not supported. Must not be read at a read view modifying the valid bit. Result register y (intermediate buffer stage, FEN = 1): This/these result register(s) must not be enabled neither for wait-for-read mode, nor for data reduction. Result event interrupt generation is not supported. Must not be read at a read view modifying the valid bit, nor be the target of a conversion result. Result register x (FIFO buffer output, FEN = 1): This result register can be enabled for result event interrupt generation to inform the CPU that new data can be read out from this register location. Data reduction and wait-for-read are not supported and have to be disabled. Must not be the target of a conversion result. If enabled, a result interrupt is generated for each data word in the FIFO. User’s Manual ADC, UM_V0.1D6 16-82 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.14.5 Data Reduction Filter The data reduction filter can be used as digital filter for anti-aliasing or decimation purposes. It can accumulate a maximum of 4 conversion results to generate a final result. Each result register can be individually enabled for data reduction. The feature is controlled by bit field DRCTR in registers RCRx (x = 0 - 7). The actual status is given by bit field DRC (data reduction counter) in the same register. Conversions delivering results to other result registers do not influence the data reduction filter of result register x. As a consequence, other channels can be converted between two conversions targeting result register x. r0 0 0 r1 r2 r3 r4 r5 r6 r7 r8 conversion results for RESRAx 3 2 1 0 3 2 1 0 RCRx.DRC r0 + r1 r0 + r1 + r2 r0 + r1 + r2 + r3 r4 + r5 r4 + r5 + r6 r4 + r5 + r6 + r7 contents of RESRAx r0 r4 VFR.VFx t1 t2 t3 t4 t5 t6 t7 t8 t9 ADC_DRC Figure 16-20 Data Reduction Filter In the example given in Figure 16-20, a data reduction sequence of 4 accumulated conversion results is shown. The data reduction is based on three rules: • • • Each time bit field DRC is 0 and a conversion targeting result register x is completed (t1, t5, t9), the contents of bit field RCRx.DRCTR is loaded into bit field DRC and the conversion result is stored in result register x (i.e. the result accumulation begins). Each time bit field DRC is not 0 and a conversion targeting result register x is completed (t2, t3, t4 for the first final result and t6, t7, t8 for the next one), bit field DRC is decremented by 1 and the conversion result is added to the value already stored in result register x. Each time bit field DRC is 0 after decrementing or after loading it with RCRx.DRCTR = 0 (t4 for the first final result and t8 for the next one), the valid bit for the result register x becomes set and a result register event occurs. User’s Manual ADC, UM_V0.1D6 16-83 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter The final result of a data reduction sequence has to be read out from result register x before the next data reduction sequence starts (interval between t4 and t5, or t8 and t9 respectively). With the read out of the final result from this register, the valid flag is automatically cleared. If this interval is too short, it is recommended to associate a second result register z to result register x by enabling the result FIFO mechanism for result register x, see Figure 16-21 (z = x + 1). In this case, result register x is loaded with the final result elaborated by result register z when a data reduction sequence is finished. The final result has to be read out from result register x before the next data reduction sequence is finished (interval between t4 and t8). 0 r0 + r1 r0 r0 + r1 + r2 r0 + r1 + r2 + r3 r4 r4 + r5 + r6 r4 + r5 r4 + r5 + r6 + r7 contents of RESRAx VFR.VFx r0 + r1 + r2 + r3 0 r4 + r5 + r6 + r7 contents of RESRAx-1 VFR.VFx-1 t1 t2 t3 t4 t5 t6 t7 t8 t9 ADC_DRC_FIFO Figure 16-21 Data Reduction Filter with Result FIFO User’s Manual ADC, UM_V0.1D6 16-84 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15 Conversion Result-Related Registers 16.2.15.1 Standard Views RESRx and RESRVx These result registers deliver the conversion result and the related channel number. The corresponding valid flag is cleared when register RESRx is read, whereas it is left unchanged when reading RESRVx. RESRx (x = 0-7) Result Register x RESRVx (x = 0-7) Result Register x, View V 15 14 13 12 11 10 XSFR(40H + 2 * x) Reset Value: 0000H XSFR(60H + 2 * x) Reset Value: 0000H 9 8 7 6 5 4 3 2 1 0 CHNR RESULT 0 rh rh r Field Bits Type Description RESULT [11:2] rh Conversion Result This bit field contains the left aligned conversion result. CHNR [15:12] rh Channel Number This bit field contains the channel number of the latest register update. In case that the external multiplexer control is enabled, bits CHNR[3:1] are replaced by the multiplexer setting EMUX[2:0]. 0 [1:0] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-85 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.2 Data Reduction Read Views RESRAx and RESRAVx These result registers deliver the accumulated conversion result and no channel number. The corresponding valid flag is cleared when register RESRAx is read, whereas it is left unchanged when reading RESRAVx. RESRAx (x = 0-7) Result Register x, View A RESRAVx (x = 0-7) Result Register x, View AV 15 14 13 12 11 10 XSFR(50H + 2 * x) Reset Value: 0000H XSFR(70H + 2 * x) Reset Value: 0000H 9 8 7 6 5 4 3 2 1 0 0 RESULT 0 r rh r Field Bits Type Description RESULT [13:0] rh Conversion Result This bit field contains the result of the data reduction filter. 0 [1:0], [15:14] rh Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-86 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.3 Result Status Shadow Register The result status shadow register contains the status information related to the latest result register (view without extension “V”) that has been read out. The update of the bit fields is done when a result register is read out. RSSR Result Status Shadow Register 15 14 13 12 11 10 XSFR(82H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 RRNR 0 CHNR r rh r rh 0 Field Bits Type Description CHNR [3:0] rh Channel Number This bit field indicates the channel number related to the latest result that has been read out. RRNR [14:12] rh Result Register Number This bit field indicates to which result register the information stored in CHNR belongs. 0 [11:4], 15 r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-87 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.4 Valid Flag Register The valid flag register contains the flags indicating that the corresponding result register contents are valid (valid = “new” = not read out). VFR Valid Flag Register 15 14 13 XSFR(80H) 12 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 0 0 VF 7 VF 6 VF 5 VF 4 VF 3 VF 2 VF 1 VF 0 r rwh rwh rwh rwh rwh rwh rwh rwh Field Bits Type Description VFx (x = 0 - 7) x rwh Valid Flag for Result Register x This bit indicates that the contents of the result register x is valid. Writing a 0 has no effect, whereas writing a 1 clears the written bit position. If a hardware event triggers the setting of a bit VFx and SW writes a 1 to the same bit position, the bit VFx is cleared (software overrules hardware). 0B The result register x does not contain valid data. Either this register has been read out or no data has been moved to it. 1B The result register x contains valid data that has not yet been read out. 0 [15:8] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-88 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.5 Result Control Registers The result control registers contain bits to control the behavior of the result registers and to monitor their status. RCRx (x = 0 - 7) Result Control Register x 15 14 13 12 XSFR(B0H + x * 2) 11 10 9 8 7 0 VF 0 DRC 0 r rh r rh r 6 Reset Value: 0000H 5 4 WFR FEN IEN rw rw rw 3 2 1 0 0 DRCTR r rw Field Bits Type Description DRCTR [1:0] rw Data Reduction Control This bit field defines how many conversion results are accumulated for data reduction (see Section 16.2.14.5). It defines the reload value for bit field DRC. 00B The data reduction filter is disabled. No accumulation is done. 01B The data reduction filter is enabled. Accumulation is done over 2 conversions. 10B The data reduction filter is enabled. Accumulation is done over 3 conversions. 11B The data reduction filter is enabled. Accumulation is done over 4 conversions. IEN 4 rw Interrupt Enable This bit enables the result event interrupt if a result event is detected for result register x. 0B The result event interrupt is disabled. 1B The result event interrupt is enabled. FEN 5 rw FIFO Enable This bit enables the FIFO functionality for result register x, see Section 16.2.14.4. 0B The FIFO functionality is disabled. Use this for the FIFO input register. 1B The FIFO functionality is enabled. Use this for the other FIFO registers. User’s Manual ADC, UM_V0.1D6 16-89 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description WFR 6 rw Wait-for-Read Mode This bit enables the wait-for-read mode for result register x. 0B The wait-for-read mode is disabled. 1B The wait-for-read mode is enabled. DRC [9:8] rh Data Reduction Counter This bit field indicates how many conversion results have still to be accumulated to generate the final result for data reduction. The valid flag is automatically set and a result event is generated when this bit field becomes 0 (by decrementing or by reload). 00B The final result is available in the result register. 01B 1 more conversion result has to be added to obtain the final result in the result register. 10B 2 more conversion results have to be added to obtain the final result in the result register. 11B 3 more conversion results have to be added to obtain the final result in the result register. VF 12 rh Valid Flag This flag indicates that the contents of the result register x is valid. It is another view of the corresponding bit in register VFR. 0B The result register x does not contain valid data. 1B The result register x contains valid data. 0 [3:2], 7, [11:10], [15:13] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-90 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.6 Event Indication Flag Register The event indication flag register EVINFR monitors the detected request source events (flags EVINF0 - EVINF2) and result events (flags EVINF8 - EVINF15). EVINFR Event Indication Flag Register 15 14 13 12 11 10 XSFR(A0H) 9 8 7 EVIN EVIN EVIN EVIN EVIN EVIN EVIN EVIN F15 F14 F13 F12 F11 F10 F9 F8 rwh rwh rwh rwh rwh rwh rwh rwh Reset Value: 0000H 6 5 0 r 4 3 2 1 0 EVIN EVIN EVIN F2 F1 F0 rwh rwh rwh Field Bits Type Description EVINFx (x = 0 - 2) x rwh Event Indication Flag for Request Source x Flag EVINFx indicates that a request source event of request source x has been detected. Writing a 0 has no effect, whereas writing a 1 sets the written bit position and generates the corresponding interrupt request. 0B An event of request source x has not yet been detected. 1B An event of request source x has been detected. EVINFx (x = 8 - 15) x rwh Event Indication Flag for Result Register x - 8 Flag EVINFx indicates that a result event of result register x-8 has been detected. Writing a 0 has no effect, whereas writing a 1 sets the written bit position and generates the corresponding interrupt request. 0B An event of result register x-8 has not yet been detected. 1B An event of result register x-8 has been detected. 0 [7:3] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-91 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.7 Clear Event Indication Register Writing a 1 to a bit position in the event indication clear register EVINCR clears the corresponding event indication flag EVINFx in register EVINFR. If a request source or result event is detected when the corresponding bit position is written with a 1, flag EVINFx is cleared. EVINCR Event Indication Clear Register 15 14 13 12 11 10 XSFR(A2H) 9 8 7 EVIN EVIN EVIN EVIN EVIN EVIN EVIN EVIN C15 C14 C13 C12 C11 C10 C9 C8 w w w w w w w w Reset Value: 0000H 6 5 0 r 4 3 2 1 0 EVIN EVIN EVIN C2 C1 C0 w w w Field Bits Type Description EVINCx (x = 0 - 2) x w Clear Event Indication Flag for Request Source x 0 No action. 1 Bit EVINFR.x is cleared. EVINCx (x = 8 - 15) x w Clear Event Indication Flag for Result Reg. x-8 0 No action. 1 Bit EVINFR.x is cleared. 0 [7:3] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-92 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.15.8 Event Interrupt Node Pointer Registers The bit fields in these registers define the service request output SR[3:0] that is used to signal a request source or result event interrupt. EVINPR0 Event Interrupt Node Pointer Register 0 XSFR(A8H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 EVINP2 0 EVINP1 0 EVINP0 r rw r rw r rw Field Bits Type Description EVINP0, EVINP1, EVINP2 [1:0], [5:4], [9:8] rw Interrupt Node Pointer for Request Source x This bit field selects which service request output indicates an event interrupt of request source x. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [15:10] r Reserved returns 0 if read; should be written with 0; EVINPR8 Event Interrupt Node Pointer Register 8 XSFR(ACH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 EVINP11 0 EVINP10 0 EVINP9 0 EVINP8 r rw r rw r rw r rw User’s Manual ADC, UM_V0.1D6 16-93 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Field Bits Type Description EVINP8, EVINP9, EVINP10, EVINP11 [1:0], [5:4], [9:8], [13:12] rw Interrupt Node Pointer for Result Event x-8 This bit field selects which service request output indicates an event interrupt of result register x-8. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [11:10], [15:14] r Reserved returns 0 if read; should be written with 0; EVINPR12 Event Interrupt Node Pointer Register 12 XSFR(AEH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 EVINP15 0 EVINP14 0 EVINP13 0 EVINP12 r rw r rw r rw r rw Field Bits Type Description EVINP12, EVINP13, EVINP14, EVINP15 [1:0], [5:4], [9:8], [13:12] rw Interrupt Node Pointer for Result Event x-8 This bit field selects which service request output indicates an event interrupt of result register x-8. 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. 0 [3:2], [7:6], [11:10], [15:14] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-94 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.16 External Multiplexer Control If an application requires more analog inputs channels than available on the XC2300, the ADC kernel supports an extension of analog channels by adding an external analog multiplexer. Three output signals EMUX[2:0] are delivered by each ADC kernel to control the settings of an external analog multiplexer. They can be used to extend the number of analog input channels by adding an external 1-out-of-8 multiplexer. The external multiplexer control behavior is defined by the bits in register EMCTR. The current setting of EMUX[2:0] is given by bit field LASTEMUX. If another extended input channel should be converted, bit field SETEMUX has to be programmed to the desired value. This value is automatically applied with the start of the next conversion of the related analog ADC input channel. direct input signals In the example shown in Figure 16-22 and in the description below, the analog input CH7 has been extended, leading to additional analog inputs named CH70 to CH77. In general, the external multiplexer support can be enabled for each of the input channels CH0 to CH7. internal analog multiplexer CH0 C EXT CH6 R EXT C EXT . .. R EXT ADC CH7 external analog 8-to-1 multiplexer R EXT1 C EXT1 channel control EMUX[2:0] EMUX control R EXT2 C EXT2 CH71 R EXT2 C EXT2 . .. extended input signals CH70 ADC kernel CH77 R EXT2 C EXT2 ADC_ext_mux Figure 16-22 External Analog Multiplexer If the external multiplexer is located far from the ADC analog input, it is recommended to introduce an RC filter REXT1-CEXT1 directly at the analog input CH7 of the ADC. If needed for signal filtering, local RC filters REXT2-CEXT2 can be optionally added at the inputs of the external analog multiplexer. If the external multiplexer is located close to the analog ADC input, the components REXT1 and CEXT1 are not necessarily needed. In this case it is strongly recommended to User’s Manual ADC, UM_V0.1D6 16-95 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter introduce RC filters (REXT2, CEXT2) at the multiplexer inputs. Please note that each RC filter limits the bandwidth of the analog input signal. The RC filters used with an external multiplexer may lead to another impedance “seen” by the ADC analog input CH7 than for the other (direct) analog inputs. The adaptation of the sample phase length can be done by using a different input class with a different value for the sample phase extension. This value can be adapted to execute conversions with an EMUX[2:0] setting that has changed a sufficiently long time before the conversion of CH7 starts. “A sufficiently long time before” signifies that signal transitions at the analog ADC input due to changing multiplexer setting are finished and the input signal is stable enough. After changing the EMUX[2:0] setting of the external multiplexer, an additional settling time has to elapse before the switched analog signal is stable and can be measured. To compensate for this settling time, an alternative sample phase length (instead of the one given by the input class) is automatically applied for the first conversion of CH7 after EMUX[2:0] has changed. The alternative sample phase length can be programmed by bit field EMCTR.EMSAMPLE. If the first conversion of CH7 after the EMUX[2:0] setting has changed is aborted due to a higher priority request, the repeated conversion of CH7 also uses the value of EMSAMPLE. The settling time is considered to be finished after the complete conversion of CH7. The automatic control of an external analog multiplexer related to conversions of an ADC input channel can be enabled by bits EMSELx in register EMENR. If bit EMSELx = 0, channel CHx does not influence any EMUX setting and the selected input class is always taken into account. If bit EMSELx = 1, the automatic multiplexer control is enabled for channel CHx. With each conversion start of CHx, the value of EMCTR.SETEMUX is copied to EMCTR.LASTEMUX that is output at EMUX[2:0]. In addition, the control logic checks if the value of LASTEMUX has changed to adapt the sample phase length accordingly. Note: It is recommended to set only one single EMSELx bit, which triggers the update of bit field LASTEMUX. This provides a consistent subchannel number for a complete conversion cycle and maximum time for the software to change bit field SETEMUX (if required). Also, this approach is compatible with future versions of the ADC module. User’s Manual ADC, UM_V0.1D6 16-96 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.17 Synchronized Conversions for Parallel Sampling The independent ADC kernels implemented in the XC2300 can be synchronized for simultaneous measurements of analog input channels. While no parallel conversion is requested, the kernels can work independently. The synchronization mechanism for parallel conversions ensures that the sample phases of the related channel(s) start simultaneously. Different values for the resolution and the sample phase length of each kernel for a parallel conversion are supported. A parallel conversion can be requested individually for each input channel (also several channels can be enabled for parallel conversions). In the example shown in Figure 16-23, input channels CH3 of the ADC kernels ADC0 and ADC1 are converted synchronously, whereas other input channels do not lead to parallel conversions. This leads to the following structure: • • • The synchronization master ADC kernel can request a conversion of an analog channel. If this channel is selected for a synchronized conversion, it is also requested in the slave ADC kernel. The synchronization slave ADC kernel reacts to incoming synchronized conversion requests from its master. While no incoming master requests are active, the slave kernel can convert its own requests. All ADC kernels in an ADC module being similar, each kernel can be set up to be a synchronization master or a synchronization slave (depending on the application needs, such as trigger capability of request sources). parallel conversions requested by ADC0 conversions kernel ADC0 CH0 CH2 CH3 CH7 CH8 CH3 parallel conversions triggering ADC1 conversions kernel ADC1 CH2 CH5 CH3 CH4 CH3 CH1 running conversion is aborted and repeated afterwards ADC_parallel_conv Figure 16-23 Parallel Conversions User’s Manual ADC, UM_V0.1D6 16-97 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter The master kernel and the slave kernel form a “conversion group” allowing parallel sampling: • • • • • • • • The conversion group contains exactly one synchronization master kernel that issues a parallel conversion request and defines the internal frequencies fADCI and fADCD and the channel number for a parallel conversion of the conversion group. The other kernel in the conversion group is the synchronization slave and has to be programmed with the same values of GLOBCTR.DIVA, DIVD and ARBRND as the synchronization master. If there is no need for parallel conversions, each kernel can be considered to form an own conversion group with only an ADC kernel as synchronization master, but without any synchronization slave. The channel number and the synchronization request are issued by the synchronization master to the other kernel if a conversion is requested with CHCTRx (x = 0 - 15).SYNC = 1 in the synchronization master kernel. The synchronization slave cannot issue synchronization requests. Once started, a parallel conversion can not be aborted. A parallel conversion request is always handled with highest priority and cancelinject-repeat mode in the synchronization slave (see Section 16.2.6.2). Bit GLOBCTR.ARBM has to be 0 for the synchronization slave. The wait-for-read mode is supported for the master kernel, whereas the setting is ignored in the slave kernel (previous results may be overwritten). The synchronization request issuing mechanism of the master to the slave is based on bit field GLOBSTR.ANON. The information given by GLOBCTR.ANON is distributed by the synchronization master to the slave kernel (the bit fields SYNCTR.STSEL of all kernels must be programmed in a way that all kernels refer to the same information). In addition to the ANON information, the master delivers the requested channel number to the slave (not explicitly shown in Figure 16-24). The start of the converters of all kernels of the conversion group is based on signals indicating when a kernel is ready and can start the sample phase of a parallel conversion. Bit SYNCTR.EVALR1 defines if a kernel has to wait for the other kernel (to allow parallel conversions) or can start without waiting (no parallel conversions possible). To support parallel conversions, the ready signal of the other kernel of the conversion group has to be considered. The alias feature is independent of synchronized conversions. All kernels of a conversion group request the same channel number (defined by the master), but can convert analog signals from different inputs. The requested channel number can be redirected by its alias setting. For example, if the channel number requested in the conversion group is channel CH0, but for a kernel, an alternative reference is connected to this input, the actually converted analog input can be changed to any value. This can be done by programming bit field ALIAS0 accordingly. Note: A parallel conversion in the slave ADC should not target a result register that is already used for data reduction of other channels. User’s Manual ADC, UM_V0.1D6 16-98 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter C I3 C I2 11 SYNCTR. EVALR1 R3 R2 R1 10 C I1 C I3 C I2 ADC0 kernel 01 00 GLOBSTR. ANON kernel control SYNCTR. EVALR1 R3 R2 SYNCTR. STSEL GLOBSTR. ANON kernel control R1 GLOBCTR. ANON 11 00 SYNCTR. STSEL 10 GLOBCTR. ANON 01 C I1 ADC1_ANON ADC0_ANON ADC1 kernel ADC0_READY ADC1_READY ADC_ANON_sync Figure 16-24 Synchronization via ANON and Ready Signals Table 16-4 SYNCTR Setting for Kernel Synchronization Operating Mode SYNCTR.EVALR1 SYNCTR.STSEL ADC0 Kernel (values to be programmed to ADC0_SYNCTR) no sync 0B 00B master of ADC1 1B 00B slave of ADC1 1B 01B ADC1 Kernel (values to be programmed to ADC1_SYNCTR) no sync 0B 00B master of ADC0 1B 00B slave of ADC0 1B 01B User’s Manual ADC, UM_V0.1D6 16-99 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.18 Additional Feature Registers 16.2.18.1 External Multiplexer Control Register The external multiplexer control register defines the settings of an external analog multiplexer. EMCTR External Multiplexer Control Register XSFR(D0H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 EMSAMPLE 0 LAST EMUX 0 SET EMUX rw r rh r rw 0 Field Bits Type Description SETEMUX [2:0] rw New Setting for External Multiplexer This bit field defines the EMUX[2:0] setting for the external multiplexer that will be selected for the next conversion of the enabled channel. LASTEMUX [6:4] rh Last Setting of External Multiplexer This bit field indicates the current EMUX[2:0] setting of the external multiplexer. This value has been selected for (at least) the last conversion of the enabled channel. EMSAMPLE [15:8] rw External Multiplexer Sampling Time This bit field defines the alternative sample phase length in the case the external multiplexer setting has changed with the start of a conversion with enabled external multiplexer (the value given by the selected input class is not taken into account). A minimum sample phase of 2 analog clock cycles is extended by the programmed value. sample phase length = (2 + EMSAMPLE) / fADCI 0 3, 7 r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-100 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.2.18.2 External Multiplexer Enable Register The external multiplexer enable register defines if a channel is enabled to control the settings of an external analog multiplexer. It is recommended to enable the external multiplexer control for only one analog input channel (see also Section 16.2.16). EMENR External Multiplexer Enable Register XSFR(D6H) Reset Value: 0000H 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 EMS EL7 0 EMS EL6 0 EMS EL5 0 EMS EL4 0 EMS EL3 0 EMS EL2 0 EMS EL1 0 EMS EL0 r rw r rw r rw r rw r rw r rw r rw r rw Field Bits Type Description EMSELx (x = 0 - 7) 2*x rw 0 1, 3, 5, r 7, 9, 11, 13, 15 External Multiplexer Selection for Channel CHx This bit defines if an external multiplexer will be controlled by channel CHx. 0B The external multiplexer control is disabled. 1B The external multiplexer control is enabled for CHx. Reserved returns 0 if read; should be written with 0; 16.2.18.3 Synchronization Control Register The synchronization control register contains bits controlling the synchronization between the kernels for parallel conversions. The programming of register SYNCTR in the kernels of the conversion group has to be done while the bit field GLOBSTR.ANON = 00B in all ADC kernels of the conversion group. Bit field ANON of the synchronization master can be set to 11B afterwards. It is recommended to avoid power saving modes (ANON = 01B or 10B) for parallel conversions. The bits EVALRx are only taken into account if a synchronized, parallel conversion is requested by a master. This ensures that the conversions of the ADC kernels of the synchronization group are started at the same time for parallel sampling (although a kernel might be idle, the master and its connected slave have to wait for all of them being ready). User’s Manual ADC, UM_V0.1D6 16-101 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter SYNCTR Synchronization Control Register XSFR(1AH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 0 EVA LR1 0 STSEL r rw rw r rw Field Bits Type Description STSEL [1:0] rw Start Selection This bit field controls the synchronization mechanism of the ADC kernel. 00B The kernel is a synchronization master. The kernel’s own bit field GLOBCTR.ANON is taken into account. 01B The kernel is a synchronization slave. The control information at input CI1 is taken into account instead (see Figure 16-24). 10B reserved, do not use (kernel is switched off) 11B reserved, do not use (kernel is switched off) EVALR1 4 rw Evaluate Ready Input R1 This bit defines if a kernel is considered to be part of the conversion group. Parallel conversions can only be started if the synchronization master and the slave of the conversion group indicate that they are ready to start a parallel conversion. 0B The ready input R1 is not considered. 1B The ready input R1 is considered for the start of a parallel conversion of the conversion group. 0 [6:5] r Reserved for Future Use returns 0 if read; must be written with 0; 0 [3:2], [15:7] r Reserved returns 0 if read; should be written with 0; User’s Manual ADC, UM_V0.1D6 16-102 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.3 Implementation This section describes the implementation of the ADC kernels in the XC2300 device. • • • • • • Address map (see Section 16.3.1) Interrupt control registers (see Section 16.3.2) Analog connections of ADC0 (see Section 16.3.3.1) Analog connections of ADC1 (see Section 16.3.3.2) Digital connections of ADC0 (see Section 16.3.4.1) Digital connections of ADC1 (see Section 16.3.4.2) 16.3.1 Address Map The ADC kernels ADC0 and ADC1 are available at the following base addresses. The exact register address is given by the offset of the register (given in Table 16-2) plus the kernel base address (given in Table 16-5) of the module. Table 16-5 Registers Address Space Module Base Address End Address ADC0 E000H E0FFH ADC1 E100H E1FFH 16.3.2 Note Interrupt Control Registers The interrupt control registers are located in the SFR area. They are described in the general interrupt chapter. Table 16-6 ADC Interrupt Control Registers Short Name Description ADC_0IC Interrupt Control Register for SR0 of ADC0 ADC_1IC Interrupt Control Register for SR1 of ADC0 ADC_2IC Interrupt Control Register for SR2 of ADC0 ADC_3IC Interrupt Control Register for SR3 of ADC0 ADC_4IC Interrupt Control Register for SR0 of ADC1 ADC_5IC Interrupt Control Register for SR1 of ADC1 ADC_6IC Interrupt Control Register for SR2 of ADC1 ADC_7IC Interrupt Control Register for SR3 of ADC1 User’s Manual ADC, UM_V0.1D6 16-103 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.3.3 Analog Connections The input channels of both ADC kernels are distributed as follows: • • • 16 channels of ADC0 connected to P5 8 channels of ADC1 connected to P15 4 channels of ADC1 connected to P5 and overlaid to ADC0 inputs Each ADC kernel has its own reference input lines VAGND and VAREFx, with x = 0, 1. Depending on the package, these lines can be available as independent pins for high pin count packages or can be combined for low pin count packages. The respective voltage supply lines of both converters are connected together. 16.3.3.1 Analog Connections of ADC0 The table below lists the analog connections of ADC0. Table 16-7 ADC0 Analog Connections in XC2300 Signal from/to Module I/O to ADC0 Can be used to/as Power supply and standard reference VDDPA VSS VAREF(0) see pinning chapter VAGND I analog power supply I analog power supply I positive analog reference I negative analog reference Analog input channels CH0 P5.0 I analog input channel 0 CH1 P5.1 I analog input channel 1 CH2 P5.2 I analog input channel 2 CH3 P5.3 I analog input channel 3 CH4 P5.4 I analog input channel 4 CH5 P5.5 I analog input channel 5 CH6 P5.6 I analog input channel 6 CH7 P5.7 I analog input channel 7 CH8 P5.8 I analog input channel 8 overlaid with ADC1 channel 8 CH9 P5.9 I analog input channel 9 overlaid with ADC1 channel 9 User’s Manual ADC, UM_V0.1D6 16-104 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-7 ADC0 Analog Connections in XC2300 (cont’d) Signal from/to Module I/O to ADC0 Can be used to/as CH10 P5.10 I analog input channel 10 overlaid with ADC1 channel 10 CH11 P5.11 I analog input channel 11 overlaid with ADC1 channel 11 CH12 P5.12 I analog input channel 12 CH13 P5.13 I analog input channel 13 CH14 P5.14 I analog input channel 14 CH15 P5.15 I analog input channel 15 16.3.3.2 Analog Connections of ADC1 The table below lists the analog connections of ADC1. Table 16-8 ADC1 Analog Connections in XC2300 Signal from/to Module I/O to ADC1 analog Can be used to/as Power supply and standard reference VDDPA VSS VAREF(1) see pinning chapter VAGND I analog power supply I I positive analog reference I negative analog reference Analog input channels CH0 P15.0 I analog input channel 0 CH1 P15.1 I analog input channel 1 CH2 P15.2 I analog input channel 2 CH3 P15.3 I analog input channel 3 CH4 P15.4 I analog input channel 4 CH5 P15.5 I analog input channel 5 CH6 P15.6 I analog input channel 6 CH7 P15.7 I analog input channel 7 User’s Manual ADC, UM_V0.1D6 16-105 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-8 ADC1 Analog Connections in XC2300 (cont’d) Signal from/to Module I/O to ADC1 analog Can be used to/as CH8 P5.8 I analog input channel 8 overlaid with ADC0 channel 8 CH9 P5.9 I analog input channel 9 overlaid with ADC0 channel 9 CH10 P5.10 I analog input channel 10 overlaid with ADC0 channel 10 CH11 P5.11 I analog input channel 11 overlaid with ADC0 channel 11 CH12..15 n.c. I not available, do not request User’s Manual ADC, UM_V0.1D6 16-106 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.3.4 Digital Connections The following table shows the digital connections of the ADC kernels with other modules or pins in the XC2300 device. The following sections refer to the inter-module connections, whereas the connections of the service request outputs SR[3:0] of each kernel to the interrupt control registers is given in Section 16.3.2. Note: The functional inputs of the ADC that are marked I(s) are additionally synchronized to fSYS before they can affect the module internal logic. The resulting delay of 2/fSYS and an uncertainty of 1/fSYS have to be taken into account for precise timing calculation. An edge of an input signal can only be correctly detected if the high phase and the low phase of the input signal are both longer than 1/fSYS. The functional inputs of the ADC that are marked I are already considered as synchronous to fSYS. 16.3.4.1 Digital Connections of ADC0 The table below lists the digital connections of ADC0. Table 16-9 ADC0 Digital Connections in XC2300 Signal from/to Module I/O to ADC0 Can be used to/as External multiplexer control EMUX[0] P6.0 O control of external analog multiplexer(s) EMUX[1] P6.1 O control of external analog multiplexer(s) EMUX[2] P6.2 O control of external analog multiplexer(s) Request source 0 REQGT0A ERU_GOUT0 I source gate input A REQGT0B ERU_GOUT1 I source gate input B REQGT0C P6.0 I (s) source gate input C REQGT0D 0 I (s) source gate input D REQTR0A ERU_TOUT1 I source trigger input A REQTR0B CCU60_T13_PM I source trigger input B REQTR0C P6.1 I (s) source trigger input C REQTR0D P6.3 I (s) source trigger input D I source gate input A Request source 1 REQGT1A ERU_GOUT0 User’s Manual ADC, UM_V0.1D6 16-107 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-9 ADC0 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to ADC0 Can be used to/as REQGT1B ERU_GOUT1 I source gate input B REQGT1C P6.0 I (s) source gate input C REQGT1D 0 I (s) source gate input D REQTR1A ERU_TOUT1 I source trigger input A REQTR1B CCU60_T13_PM I source trigger input B REQTR1C P6.1 I (s) source trigger input C REQTR1D P6.3 I (s) source trigger input D Request source 2 REQGT2A ERU_GOUT0 I source gate input A REQGT2B ERU_GOUT1 I source gate input B REQGT2C P6.0 I (s) source gate input C REQGT2D 0 I (s) source gate input D REQTR2A ERU_TOUT1 I source trigger input A REQTR2B CCU62_T13_PM I source trigger input B REQTR2C P6.1 I (s) source trigger input C REQTR2D P6.3 I (s) source trigger input D User’s Manual ADC, UM_V0.1D6 16-108 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter 16.3.4.2 Digital Connections of ADC1 The table below lists the digital connections of ADC1. Table 16-10 ADC1 Digital Connections in XC2300 Signal from/to Module I/O to ADC1 Can be used to/as External multiplexer control EMUX[0] P7.2 O control of external analog multiplexer(s) EMUX[1] P7.3 O control of external analog multiplexer(s) EMUX[2] P7.4 O control of external analog multiplexer(s) Request source 0 REQGT0A ERU_GOUT0 I source gate input A REQGT0B ERU_GOUT1 I source gate input B REQGT0C P6.0 I (s) source gate input C REQGT0D 0 I (s) source gate input D REQTR0A ERU_TOUT1 I source trigger input A REQTR0B CCU61_T13_PM I source trigger input B REQTR0C P6.1 I (s) source trigger input C REQTR0D P6.3 I (s) source trigger input D Request source 1 REQGT1A ERU_GOUT0 I source gate input A REQGT1B ERU_GOUT1 I source gate input B REQGT1C P6.0 I (s) source gate input C REQGT1D 0 I (s) source gate input D REQTR1A ERU_TOUT1 I source trigger input A REQTR1B CCU61_T13_PM I source trigger input B REQTR1C P6.1 I (s) source trigger input C REQTR1D P6.3 I (s) source trigger input D Request source 2 REQGT2A ERU_GOUT0 I source gate input A REQGT2B ERU_GOUT1 I source gate input B REQGT2C P6.0 I (s) source gate input C REQGT2D 0 I (s) source gate input D User’s Manual ADC, UM_V0.1D6 16-109 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Analog to Digital Converter Table 16-10 ADC1 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to ADC1 Can be used to/as REQTR2A ERU_TOUT1 I source trigger input A REQTR2B CCU63_T13_PM I source trigger input B REQTR2C P6.1 I (s) source trigger input C REQTR2D P6.3 I (s) source trigger input D User’s Manual ADC, UM_V0.1D6 16-110 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17 Capture/Compare Unit 2 The XC2300 provides a Capture/Compare (CAPCOM2) unit which provides 16 capture/compare channels, which interact with 2 timers. A CAPCOM2 channel can capture the contents of a timer on specific internal or external events, or it can compare a timer’s contents with given values, and modify output signals in case of a match. Data Registers T7, T7REL E T8, T8REL E Control Registers Interrupt Control T78CON T7IC T8IC CC16-CC19 CC2_M4 CC16IC-CC19IC E CC20-CC23 CC2_M5 CC20IC-CC23IC E CC24-CC27 CC2_M6 CC24IC-CC27IC E CC28-CC31 CC2_M7 CC28IC-CC31IC E CC2_SEE CC2_OUT CC2_SEM CC2_DRM CC2_ID CC2_IOC KSCCFG CC2_SEE CC2_SEM CC2_DRM CC2_OUT CC2_IOC CAPCOM Single Event En. Reg. CAPCOM Single Event Mode Reg . CAPCOM Double Reg. Mode Reg . CAPCOM Output Register CAPCOM Input/Outp. Control Reg . CC16...31 CAPCOM2 Register 16...31 CC16...31IC CAPCOM2 Intr. Ctrl. Reg. 16...31 CCM4...7 CAPCOM2 Mode Ctrl. Reg. 4...7 T78CON CAPCOM2 Timer Control Reg . T7, T8 CAPCOM2 Timer Register T7/8REL CAPCOM2 Timer Reload Register T7IC, T8IC CAPCOM2 Timer x Intr. Ctrl. Reg. CC2_ID Module Identification Register KSCCFG Kernel State Configuration Register mc_capcom 2_registers_xy.vsd Figure 17-1 SFRs Associated with the CAPCOM Units With this mechanism, the CAPCOM2 unit supports generation and control of timing sequences on up to 16 channels with a minimum of software intervention. User’s Manual CC12_X8, V2.3 17-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 From the programmer’s point of view, the term ‘CAPCOM2 unit’ refers to a set of registers which are associated with this peripheral (see also Figure 17-1), including the port pins that may be used for alternate input/output functions, and their control bits. A CAPCOM2 unit is typically used to handle high speed IO tasks such as pulse and waveform generation, pulse width modulation, or recording of the time when a specific event occurs. It also supports the implementation of up to 16 software-controlled interrupt events. The CAPCOM2 Unit consists of two 16-bit timers (T7, T8), each with its own reload register (TxREL), and a bank of sixteen dual-purpose 16-bit capture/compare registers (CCy). The input clock for the CAPCOM2 timers is programmable to several prescaled values of the module input clock (fCC), or it can be derived from the overflow/underflow of timer T6. T7 may also operate in counter mode (from an external input), clocked by external events. Each capture/compare register may be programmed individually for capture or compare operation, and each register may be allocated to either of the two timers. Each capture/compare register has one signal associated with it, which serves as an input signal for the capture operation or as an output signal for the compare operation. The capture operation causes the current timer contents to be copied into the respective capture/compare register, triggered by an event (transition) on the associated input signal. This event also activates the associated interrupt request line. The compare operation may cause an output signal transition on the associated output signal, when the allocated timer increments to the value stored in a capture/compare register. The compare match event also activates the associated interrupt request line. In Double-register compare mode a pair of registers controls one common output signal. The compare output signals are available via a dedicated output register. The output path can be selected. For the switching of the output signals two timing schemes (see Section 17.8) can be selected: In Staggered Mode the output signals are switched consecutively in 8 steps, which distributes the switching steps over a certain time. In staggered mode, the maximum resolution is 8 tCC. In Non-Staggered Mode the output signals are switched immediately at the same time. In non-staggered mode, the maximum resolution is 1 tCC. Figure 17-2 shows the basic structure of a CAPCOM unit. User’s Manual CC12_X8, V2.3 17-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Reload Reg. T7REL T78CON.T7RS EL External Sync. S tart fCC T7IN T7 Input Control Timer T7 T7IRQ T6OUF CCxIRQ CCxIRQ CCxIO CCxIO Mode Control (Capture or Compare) S ixteen 16-bit Capture/ Compare Registers CCxIRQ CCxIO fCC T6OUF External Sync. S tart T8 Input Control Timer T8 T8IRQ Reload Reg. T8REL T78CON.T8RS EL S YSCON1.GLCCS T CAPCOM2 provides channels x = 16 … 31. (see signals CCxIO and CCxIRQ) MCB05418_P11_CC2 Figure 17-2 CAPCOM Unit Block Diagram There is a possibility to start both timers T7 and T8 synchronously with the CAPCOM6 timers, by setting the bit in the SYSCON1.GLCCST module. User’s Manual CC12_X8, V2.3 17-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.1 The CAPCOM2 Timers The primary use of the timers T7 and T8 is to provide two independent time bases for the capture/compare channels of each unit. The maximum resolution is 8 tCC in staggered mode, and 1 tCC in non-staggered mode. The basic structure of the two timers, illustrated in Figure 17-3, is identical, except for the input pin (see mark). Reload Reg. TxREL fCC Prescaler TxI T6OUF Edge TxIN f Tx TxM MUX TxI Count TxR Select TxI Timer Tx TxIRQ to Capure/Compare Register Array x = 7, 8 MCB05419_4CM_CC2 Figure 17-3 Block Diagram of a CAPCOM Timer The functions of the CAPCOM timers are controlled via the bit-addressable control register T78CON. The high-byte of T78CON controls T8, the low-byte of T78CON controls T7. The control options are identical for all four timers (except for external input). In all modes, the timers are always counting upward. The current timer values are accessible for the CPU in the timer registers Tx, which are non bit-addressable registers. When the CPU writes to a register Tx in the state immediately before the respective timer increment or reload is to be performed, the CPU write operation has priority and the increment or reload is disabled to guarantee correct timer operation. User’s Manual CC12_X8, V2.3 17-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 CC2_T78CON Timer 7/8 Control Register 15 14 13 12 11 - T8R T8RSEL T8M - rw - rw SFR (FF20H/90H) 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 T8I - T7R T7RSEL T7M T7I rw - rw - rw rw Field Bits Type Description TxR 14, 6 rw Timer/Counter Tx Run Control 0 Timer/Counter Tx is disabled 1 Timer/Counter Tx is enabled TxM 11, 3 rw Timer/Counter Tx Mode Selection 0 Timer Mode 1 Counter Mode TxI [10:8], [2:0] rw Timer/Counter Tx Input Selection Timer Mode (TxM = 0): Input frequency fTx = fCC/2(<TxI>+3) or fCC/2(<TxI>), depending on (non-)staggered mode, see Table 17-1 Counter Mode (TxM = 1): 000 Overflow/Underflow of GPT Timer T6 001 Positive (rising) edge on pin TxIN 010 Negative (falling) edge on pin TxIN 011 Any edge (rising and falling) on pin TxIN 1XX Reserved. Do not use this combination! 0 Note: For timer T8 the only option in counter mode is 000B. T8 stop in all other cases. T7RSEL User’s Manual CC12_X8, V2.3 [5:4] rw Timer T7 External Run Selection Bit field T7RSEL defines the event of signal T7HR that can set the run bit T7R by HW. 00 The external setting of T7R is disabled. 01 Bit T7R is set if a rising edge of signal T7HR is detected. 10 Bit T7R is set if a falling edge of signal T7HR is detected. 11 Bit T7R is set if an edge of signal T7HR is detected. 17-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Field Bits Type T8RSEL [13:12] rw Description Timer T8 External Run Selection Bit field T8RSEL defines the event of signal T8HR that can set the run bit T8R by HW. 00 The external setting of T8R is disabled. 01 Bit T8R is set if a rising edge of signal T8HR is detected. 10 Bit T8R is set if a falling edge of signal T8HR is detected. 11 Bit T8R is set if an edge of signal T8HR is detected. The timer run flags TxR allow the starting and stopping of the timers. The following description of the timer modes and operation always applies to the enabled state of the timers, i.e. the respective run flag is assumed to be set. Timer Mode In Timer Mode (TxM = 0), the input clock for a CAPCOM2 timer is derived from fCC, divided by a programmable prescaler. Each timer has its own individual prescaler, controlled through the individual bitfields TxI in the timer control register T78CON. The input frequency fTx for a timer Tx and its resolution rTx are determined by the following formulas: Staggered Mode: f CC [ MHz ] f Tx [ MHz ] = ------------------------( <Txl> + 3 ) 2 2 ( <Txl> + 3 ) r Tx [ µs ] = -------------------------f CC [ MHz ] (17.1) Non-Staggered Mode: When a timer overflows from FFFFH to 0000H, it is reloaded with the value stored in its respective reload register TxREL. The reload value determines the period PTx between two consecutive overflows of Tx as follows: f CC [ MHz ] f Tx [ MHz ] = ------------------------<Txl> 2 2 <Txl> r Tx [ µs ] = -------------------------f CC [ MHz ] (17.2) Staggered Mode: 16 ( <Txl> + 3 ) ( 2 – <TxREL> ) × 2 P Tx [ µs ] = ------------------------------------------------------------------------f CC [ MHz ] User’s Manual CC12_X8, V2.3 (17.3) 17-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Non-Staggered Mode: 16 <Txl> ( 2 – <TxREL> ) × 2 P Tx [ µs ] = ---------------------------------------------------------------f CC [ MHz ] (17.4) After a timer has been started by setting its run flag (TxR), the first increment will occur within the time interval which is defined by the selected timer resolution. All further increments occur exactly after the time defined by the timer resolution. Examples for timer input frequencies, resolution and periods, which result from the selected prescaler option in TxI when using a 40 MHz clock, are listed in Table 17-1 below. The numbers for the timer periods are based on a reload value of 0000H. Note that some numbers may be rounded. User’s Manual CC12_X8, V2.3 17-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Table 17-1 TxI Timer Tx Input Clock Selection for Timer Mode, fCC = 40 MHz Prescaler Input Frequency Resolution Period Staggered Mode 000B 8 5 MHz 200 ns 13.11 ms 001B 16 2.5 MHz 400 ns 26.21 ms 010B 32 1.25 MHz 800 ns 52.43 ms 011B 64 625 kHz 1.6 µs 104.86 ms 100B 128 312.5 kHz 3.2 µs 209.72 ms 101B 256 156.25 kHz 6.4 µs 419.43 ms 110B 512 78.125 kHz 12.8 µs 838.86 ms 111B 1024 39.0625 kHz 25.6 µs 1677.72 ms Non-Staggered Mode 000B 1 40 MHz 25 ns 1.6384 ms 001B 2 20 MHz 50 ns 3.2768 ms 010B 4 10 MHz 100 ns 6.5536 ms 011B 8 5 MHz 200 ns 13.11 ms 100B 16 2.5 MHz 400 ns 26.21 ms 101B 32 1.25 MHz 800 ns 52.43 ms 110B 64 625 kHz 1.6 µs 104.86 ms 111B 128 312.5 kHz 3.2 µs 209.72 ms User’s Manual CC12_X8, V2.3 17-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Counter Mode In Counter Mode (TxM = 1), the input clock of a CAPCOM2 timer is either derived from an associated external input pin, T7IN, or from the over-/underflows of GPT timer T6. Using an external signal connected to pin TxIN as a counting signal is only possible for timer T7. The only counter option for timer T8 is using the over-/underflows of the GPT timer T6 (selected by TxI = 000B). Bitfields T7I are used to select either a positive, a negative, or both a positive and a negative transition of the external signal at pin T7IN to trigger an increment of timer T7. Please note that certain criteria must be met for the external signal and the port pin programming for this mode in order to operate properly. These conditions are detailed in Chapter 17.10. Timer Overflow and Reload When a CAPCOM2 timer contains the value FFFFH at the time a new count trigger occurs, a timer interrupt request is generated, and the timer is loaded with the contents of its associated reload register TxREL. The timer then resumes incrementing with the next count trigger starting from the reloaded value. The reload registers TxREL are not bitaddressable. After reset, they contain the value 0000H. User’s Manual CC12_X8, V2.3 17-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.2 CAPCOM2 Timer Interrupts Upon a timer overflow the corresponding timer interrupt request flag TxIR for the respective timer will be set. This flag can be used to generate an interrupt or trigger a PEC service request, when enabled by the respective interrupt enable bit TxIE. Each timer has its own bitaddressable interrupt control register and its own interrupt vector. The organization of the interrupt control registers TxIC is identical with the other interrupt control registers. CC2_T7IC CAPCOM T7 Intr. Ctrl. Reg. 15 14 13 12 11 ESFR (FF6CH/BDH) 10 9 - - - - 14 13 12 - - 11 - - - - 6 5 rw rwh 3 10 9 8 7 6 - - rw rwh rw 2 1 0 ILVL GLVL rw rw rw GPX T8IR T8IE - 4 ESFR (FF6EH/BEH) - 7 GPX T7IR T7IE CC2_T8IC CAPCOM T8 Intr. Ctrl. Reg. 15 8 Reset Value: 0000H Reset Value: 0000H 5 4 3 2 1 0 ILVL GLVL rw rw Note: Please refer to the general Interrupt Control Register description for an explanation of the control fields. User’s Manual CC12_X8, V2.3 17-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.3 Capture/Compare Channels The 16-bit capture/compare registers CC16 through CC31 are used as data registers for capture or compare operations with respect to timers T7 and T8. The capture/compare registers are not bit-addressable. The functions of the 16 capture/compare registers of a unit are controlled by 4 bitaddressable 16-bit mode control registers, named CC2_M4 … CC2_M7, which are all organized identically (see description below). Each register contains the bits for mode selection and timer allocation for four capture/compare registers. TBD RegisterAdressSpace 17.3.1 Capture/Compare Registers for the CAPCOM2 (CC31 … CC16) CC2_M4 CAPCOM Mode Ctrl. Reg. 4 15 14 13 12 11 10 SFR (FF22H/91H) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 ACC 19 MOD19 ACC 18 MOD18 ACC 17 MOD17 ACC 16 MOD16 rw rw rw rw rw rw rw rw CC2_M5 CAPCOM Mode Ctrl. Reg. 5 15 14 13 12 11 10 SFR (FF24H/92H) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 ACC 23 MOD23 ACC 22 MOD22 ACC 21 MOD21 ACC 20 MOD20 rw rw rw rw rw rw rw rw CC2_M6 CAPCOM Mode Ctrl. Reg. 6 15 14 13 12 11 10 SFR (FF26H/93H) 9 8 7 6 5 4 3 2 1 MOD27 ACC 26 MOD26 ACC 25 MOD25 ACC 24 MOD24 rw rw rw rw rw rw rw rw 17-11 0 Reset Value: 0000H ACC 27 User’s Manual CC12_X8, V2.3 0 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 CC2_M7 CAPCOM Mode Ctrl. Reg. 7 15 14 13 12 11 10 SFR (FF28H/94H) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 ACC 31 MOD31 ACC 30 MOD30 ACC 29 MOD29 ACC 28 MOD28 rw rw rw rw rw rw rw rw Field Bits Type Description ACCy 15, 11, 7, 3 rw Allocation Bit for CAPCOM Register CCy 0 CCy allocated to Timer T7 1 CCy allocated to Timer T8 MODy [14:12], [10:8], [6:4], [2:0] rw Mode Selection for CAPCOM Register CCy See Table 17-2. 0 Each of the registers CCy may be individually programmed for capture mode or for one of 4 different compare modes, and may be allocated individually to one of the two timers of the respective CAPCOM unit. A special double-register compare mode combines two registers to act on one common output signal. When capture or compare operations are disabled for one of the CCy registers, it may be used for general purpose variable storage. Table 17-2 Selection of Capture Modes and Compare Modes Mode MODy Selected Operating Mode Disabled 000B Disable Capture and Compare Modes The respective CAPCOM register may be used for general variable storage. Capture 001B Capture on Positive Transition (Rising Edge) at Pin CCyIO 010B Capture on Negative Transition (Falling Edge) at Pin CCyIO 011B Capture on Positive and Negative Transition (Both Edges) at Pin CCyIO User’s Manual CC12_X8, V2.3 17-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Table 17-2 Selection of Capture Modes and Compare Modes (cont’d) Mode MODy Selected Operating Mode Compare 100B Compare Mode 0: Interrupt Only Several interrupts per timer period. Can enable double-register compare mode for Bank2 registers. 101B Compare Mode 1: Toggle Output Pin on each Match Several compare events per timer period. Can enable double-register compare mode for Bank1 registers. 110B Compare Mode 2: Interrupt Only Only one interrupt per timer period. 111B Compare Mode 3: Set Output Pin on each Match Reset output pin on each timer overflow; only one interrupt per timer period. The detailed discussion of the capture and compare modes is valid for all the capture/compare channels, so registers, bits and pins are only referenced by a placeholder. User’s Manual CC12_X8, V2.3 17-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.4 Capture Mode Operation In Capture Mode, the current contents of a CAPCOM timer are copied (captured) into the respective capture/compare register in response to an external event. This is used, for example, to record the time at which an external event has occurred, or to measure the distance between two external events in timer increments. The event to cause a capture of a timer’s contents can be programmed to be either the positive, the negative, or both the positive and the negative transition of the external signal connected to the input pin. This triggering transition is selected by bitfield MODy in the respective mode control register. When the selected external signal transition occurs, the selected timer’s contents is copied into the capture/compare register and the respective interrupt request line CCyIRQ is activated. This can cause an interrupt or PEC service request, when enabled. Note: A capture input can be used as an additional external interrupt input. The capture operation can be disregarded in this case. Either the contents of timer T7 or T8 can be captured, selected by the timer allocation control bit ACCy in the respective mode control register. Input Clock ACCy Timer T8 Interrupt Requests M UX Timer T7 Edge CCyIO CCyIRQ Select Capture Register CCy MODy MCB05420_4CM_CC2 Figure 17-4 Capture Mode Block Diagram For capture operation, the respective pin must be programmed for input. To ensure that a transition of the input signal is recognized correctly, its level must be held high or low for a minimum number of module clock cycles before it changes. This information can be found in Section 17.10. User’s Manual CC12_X8, V2.3 17-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.5 Compare Mode Operation The compare modes allow triggering of events (interrupts and/or output signal transitions) or generation of pulse trains with minimum software overhead. In all compare modes, the 16-bit value stored in a capture/compare register CCy (in the following also referred to as ‘compare value’) is continuously compared with the contents of the allocated timer (T7 or T8). If the current timer contents match the compare value, the interrupt request line associated with register CCy is activated and, depending on the compare mode, an output signal can be generated at the corresponding output pin CCyIO. Four different compare modes are available, which can be selected individually for each of the capture/compare registers by bitfield MODy in the respective mode control register. Modes 0 and 2 do not influence the output signals. In the following, each mode is described in detail. In addition to these ‘single-register’ modes, a ‘double-register’ compare mode enables two registers to operate on the same pin. This feature can further reduce software overhead, as two different compare values can be programmed to control a sequence of transitions for a signal. See Section 17.5.5 for details for this operation. In all Compare Modes, the comparator performs an ‘equal to’ comparison. This means, a match is only detected when the timer contents are equal to the contents of a compare register. In addition, the comparator is only enabled in the clock cycle directly after the timer was incremented by hardware. This is done to prevent repeated matches if the timer does not operate with the highest possible input clock (either in timer or counter mode). In this case, the timer contents would remain at the same value for several or up to thousands of cycles. This operation has the side-effect, that software modifications of the timer contents will have no effect regarding the comparator. If a timer is set by software to the same value stored in one of the compare registers, no match will be detected. If a compare register is set to a value smaller than the current timer contents, no action will take place. For the exact operation of the port output function, please see Section 17.6. When two or more compare registers are programmed to the same compare value1), their corresponding interrupt request flags will be set and the selected output signals will be generated after the allocated timer is incremented to this compare value. Further compare events on the same compare value are disabled2) until the timer is incremented again or written to by software. After a reset, compare events for register CCy will only become enabled, if the allocated timer has been incremented or written to by software and one of the compare modes described in the following has been selected for this register. 1) In staggered mode these interrupts and output signals are generated sequentially (see Section 17.8). 2) Even if more compare cycles are executed before the timer increments (lower timer frequency) a given compare value only results in one single compare event. User’s Manual CC12_X8, V2.3 17-15 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.5.1 Compare Mode 0 This is an interrupt-only mode which can be used for software timing purposes. In this mode, the interrupt request line CCyIRQ is activated each time a match is detected between the contents of the compare register CCy and the allocated timer. A match means, the contents of the timer are equal to (‘=’) the contents of the compare register. Several of these compare events are possible within a single timer period, if the compare value in register CCy is updated during the timer period. The corresponding port signal CCyIO is not affected by compare events in this mode and can be used as general purpose IO. Note: If compare mode 0 is programmed for one of the bank2 registers the doubleregister compare mode may be enabled for this register (see Chapter 17.5.5). 17.5.2 Compare Mode 1 This is a compare mode which influences the associated output signal. Besides this, the basic operation is as in compare mode 0. Each time a match is detected between the contents of the compare register CCy and the allocated timer, the interrupt request line CCyIRQ is activated. In addition, the associated output signal is toggled. Several of these compare events are possible within a single timer period, if the compare value in register CCy is updated during the timer period. Note: If compare mode 1 is programmed for one of the bank1 registers the doubleregister compare mode may be enabled for this register (see Section 17.5.5). For the exact operation of the port output signal, please see Section 17.6. User’s Manual CC12_X8, V2.3 17-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Timer T7 Timer T8 T8IRQ ACCy M UX T7IRQ Mode 1 only! Mode & Output Ctrl. MODy Mode Control SEEy SEMy to Port Logic Comparator =? CCyIRQ Compare Register CCy MCB05421_4CM Figure 17-5 Compare Mode 0 and 1 Block Diagram Note: The signal remains unaffected in compare mode 0. Figure 17-6 illustrates a few example cases for compare modes 0 and 1. In all examples, the reload value of the used timer is set to FFF9H. When the timer overflows, it starts counting from this value upwards. In Case 1, register CCy contains the value FFFCH. When the timer reaches this value, a match is detected, and the interrupt request line CCyIRQ is activated. In compare mode 0, this is all that will happen. In compare mode 1, additionally the associated port output is toggled, causing an inversion of the output signal. If the contents of register CCy are not changed, this operation will take place each time the timer reaches the programmed compare value. In Case 2, software reloads the compare register CCy with FFFFH after the first match with FFFCH has occurred. As the timer continues to count up, it finally reaches this new compare value, and a new match is detected, activating the interrupt request line (both modes) and toggling the output signal (compare mode 1). If then the compare value is left unchanged, the next match will occur when the timer reaches FFFFH again. This example illustrates, that further compare matches are possible within the current timer period (this is in contrast to compare modes 2 and 3). User’s Manual CC12_X8, V2.3 17-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Timer Contents FFFF FFFF FFFE FFFE FFFD FFFD FFFC FFFC FFFB FFFB FFFA FFFA FFF9 FFF9 Reload Value = FFF9 CCxIO Case 1 CC16 = FFFF CCxIO Case 2 CC16 = FFFA CC16 = FFFD CC16 = FFFC CCxIO Case 3 CC16 = FFF9 CC16 = FFFA CC16 = FFFC CC16 = FFFF CC16 = FFFB CCxIO Case 4 Symbolizes activation of the interrupt request line CCyIRQ MCT05422_4CM Figure 17-6 Examples for Compare Modes 0 and 1 In Case 3, a new compare value, higher than the current timer contents, causes a new match within the current timer period. The compare register is reloaded with FFFAH after the first match (at FFFCH). However, the timer has already passed this value. Thus, it will take until the timer reaches FFFAH in the following timer period to cause the desired compare match. Reloading register CCy now with a value higher than the current timer contents will cause the next match within this period. In Case 4, the compare values are equal to the timer reload value or to the maximum count value, FFFFH. User’s Manual CC12_X8, V2.3 17-18 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.5.3 Compare Mode 2 Compare mode 2 is an interrupt-only mode similar to compare mode 0. The main difference is that only one compare match, corresponding to one interrupt request, is possible within a given timer period. When a match is detected in compare mode 2 for the first time within a count period of the allocated timer, the interrupt request line CCyIRQ is activated. In addition, all further compare matches within the current timer period are disabled, even if a new compare value, higher than the current timer contents, would be written to the register. This blocking is only released when the allocated timer overflows. A new compare value written to the compare register after the first match will only go into effect within the following timer period. 17.5.4 Compare Mode 3 Compare mode 3 is based on compare mode 2, but additionally influences the associated port pin. Only one compare event is possible within one timer period. When a match is detected in compare mode 3 for the first time within a count period of the allocated timer, the interrupt request line CCyIRQ is activated, and the associated output signal is set to 1. In addition, all further compare matches within the current timer period are disabled, even if a new compare value, higher than the current timer contents, would be written to the register. This blocking is only released when the allocated timer overflows. A new compare value written to the compare register after the first match will only go into effect within the following timer period. The overflow signal is also used to reset the associated output signal to 0. Special attention has to be paid when the compare value is set equal to the timer reload value. In this case, the compare match signal would try to set the output signal, while the timer overflow tries to reset the output signal. This conflict is avoided such that the state of the output signal is left unchanged in this case. Note: When the compare value is changed from a value above the current timer contents to a value below the current timer contents, the new value is not recognized before the next timer period. For the exact operation of the port output signal, please see Section 17.6. User’s Manual CC12_X8, V2.3 17-19 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Timer T7 Timer T8 T8IRQ M UX ACCy M UX T7IRQ ACCy Mode 3 only! Mode & Output Ctrl. MODy Mode Control SEEy SEMy Comparator =? to Port Logic CCyIRQ Compare Register CCy MCB05423_4CM Figure 17-7 Compare Mode 2 and 3 Block Diagram Note: The port signal remains unaffected in compare mode 2. Figure 17-8 illustrates a few timing examples for compare modes 2 and 3. In all examples, the reload value of the used timer is set to FFF9H. When the timer overflows, it starts counting from this value upwards. In Case 1, register CCy contains the value FFFCH. When the timer reaches this value, a match is detected, and the interrupt request line CCyIRQ is activated. In compare mode 2, this is all that will happen. In compare mode 3, additionally the associated port output is set to 1. The timer continues to count, and finally reaches its overflow. At this point, the port output is reset to 0 again. Note that, although not shown in the diagrams, the overflow signal of the timer also activates the associated interrupt request line TxIRQ. If the contents of register CCy are not changed, the port output will be set again during the following timer period, and reset again when the timer overflows. This operation is ideal for the generation of a pulse width modulated (PWM) signal with a minimum of software overhead. The pulse width is varied by changing the compare value accordingly. In Case 2, the compare operation is blocked after the first match within a timer period. After the first match at FFFCH, the interrupt request is generated and the port output is set. In addition, further compare matches are disabled. If now a new compare value is written to register CCy, no interrupt request and no port output influence will take place, although the new compare value is higher than the current timer contents. Only after the overflow of the timer, the compare logic is enabled again, and the next match will be User’s Manual CC12_X8, V2.3 17-20 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 detected at FFFFH. One can see, that this operation is ideal for PWM generation, as software can write a new compare value regardless of whether this value is higher or lower than the current timer contents. It is assured that the new value (usually written to the compare register in the appropriate interrupt service routine) will only go into effect during the following timer period. Timer Contents FFFF FFFF FFFE FFFE FFFD FFFD FFFC FFFC FFFB FFFB FFFA FFFA FFF9 FFF9 Reload Value = FFF9 CCxIO Case 1 CC16 = FFFF CCxIO Case 2 CC16 = FFFA CC16 = FFFC CCxIO Case 3 CC16 = FFFA CC16 = FFFC CCxIO Case 4 MCT05424_4CM Figure 17-8 Timing Example for Compare Modes 2 and 3 Note: In compare mode 2, only interrupt requests are generated, in mode 3, also the output signals are generated. In Case 3, further examples for the operation of the compare match blocking are illustrated. In Case 4, a new compare value is written to a compare register before the first match within the timer period. One can see that, of course, the originally programmed compare match (at FFFAH) will not take place. The first match will be detected at FFFCH. However, it is important to note that the reprogramming of the compare register took place asynchronously - this means, the register was written to without any regard to the current contents of the timer. This is dangerous in the sense that the effect of such an asynchronous reprogramming is not easily predictable. If the timer would have already reached the originally programmed compare value of FFFAH by the time the software User’s Manual CC12_X8, V2.3 17-21 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 wrote to the register, a match would have been detected and the reprogramming would go into effect during the next timer period. The examples in Figure 17-9 show special cases for compare modes 2 and 3. Case 1 illustrates the effect when the compare value is equal to the reload value of the timer. An interrupt is generated in both modes. In mode 3, the output signal is not affected - it remains at the high level. Setting the compare value equal to the reload value easily enables a 100% duty cycle signal for PWM generation. The important advantage here is that the compare interrupt is still generated and can be used to reload the next compare value. Thus, no special treatment is required for this case (see Case 3). Cases 2, 4, and 5 show different options for the generation of a 0% duty cycle signal. Case 2 shows an asynchronous reprogramming of the compare value equal to the reload value. At the end of the current timer period, a compare interrupt will be generated, which enables software to set the next compare value. The disadvantage of this method is that at least two timer periods will pass until a new regular compare value can go into effect. The compare match with the reload value FFF9H will block further compare matches during that timer period. This is additionally illustrated by Case 4. Timer Contents FFFF FFFF FFFE FFFE FFFD FFFD FFFC FFFC FFFB FFFB FFFA FFFA FFF9 FFF9 Reload Value = FFF9 Int. CC16 = FFF9 Int. Int. CCxIO Case 1 Int. CC16 = FFF9 CCxIO Case 2 Int. CC16 = FFF9 Int. Int. CC16 = FFFB CCxIO Case 3 Int. CC16 = FFF9 CCxIO Case 4 Int. CC16 = FFF8 Int. No CC16 = Comp. FFFC CC16 = FFFC CCxIO Case 5 Int. MCT05425_4CM Figure 17-9 Special Cases in Compare Modes 2 and 3 User’s Manual CC12_X8, V2.3 17-22 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Case 5 shows an option to get around this problem. Here, the compare register is reloaded with FFF8H, a value which is lower than the timer reload value. Thus, the timer will never reach this value, and no compare match will be detected. The output signal will be set to 0 after the first timer overflow. However, after the second overflow, software now reloads the compare register with a regular compare value. As no compare blocking has taken place (since there was no compare match), the newly written compare value will go into effect during the current timer period. User’s Manual CC12_X8, V2.3 17-23 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.5.5 Double-Register Compare Mode The Double-Register Compare Mode makes it possible to further reduce software overhead for a number of applications. In this mode, two compare registers work together to control one output. This mode is selected via the DRM register, or by a special combination of compare modes for the two registers. For double-register compare mode, the 16 capture/compare registers of a CAPCOM2 unit are regarded as two banks of 8 registers each. The lower eight registers form bank1, while the upper eight registers form bank2. For double-register mode, a bank1 register and a bank2 register form a register pair. Both registers of this register pair operate on the pin associated with the bank1 register. The relationship between the bank1 and bank2 register of a pair and the effected output pins for double-register compare mode is listed in Table 17-3. Table 17-3 Register Pairs for Double-Register Compare Mode CAPCOM2 Unit Register Pair Used Output Pin Control Bitfield in CC2_DRM Bank 1 Bank 2 CC16 CC24 CC16IO DR0M CC17 CC25 CC17IO DR1M CC18 CC26 CC18IO DR2M CC19 CC27 CC19IO DR3M CC20 CC28 CC20IO DR4M CC21 CC29 CC21IO DR5M CC22 CC30 CC22IO DR6M CC23 CC31 CC23IO DR7M The double-register compare mode can be programmed individually for each register pair. Double-register compare mode can be selected via a certain combination of compare modes for the two registers of a pair. The bank1 register must be programmed for mode 1 (with port influence), while the bank2 register must be programmed for mode 0 (interrupt-only). User’s Manual CC12_X8, V2.3 17-24 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Double-register compare mode can be controlled (this means, enabled or disabled) for each register pair via the associated control bitfield DRxM in register CC2_DRM. CC2_DRM Double-Reg. Cmp. Mode Reg. 15 14 13 12 11 10 SFR (FF2AH/95H) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 DR7M DR6M DR5M DR4M DR3M DR2M DR1M DR0M rw rw rw rw rw rw rw rw Field Bits Type Description DRxM [1:0], [3:2], [5:4], [7:6], [9:8], [11:10], [13:12], [15:14] rw Double Register x Compare Mode Selection 00 DRM is controlled via the combination of compare modes 1 and 0 (compatibility mode) 01 DRM disabled regardless of compare modes 10 DRM enabled regardless of compare modes 11 Reserved Note: “x” indicates the register pair index in a bank. Double-register compare mode can be controlled individually for each of the register pairs. In the block diagram of the double-register compare mode (Figure 17-10), a bank2 register will be referred to as CCz, while the corresponding bank1 register will be referred to as CCy. User’s Manual CC12_X8, V2.3 17-25 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 DRyM Mode Control MODy SEEy DRyM SEEz CCyIRQ Mode & Output Ctrl. SEMy SEMz ACCz Comp. =? Mode Control MODz M UX ACCy Timer T8 M UX Timer T7 Comparator =? Compare Register CCy Compare Register CCz to Port Logic CCzIRQ z=y+8 MCB05426_4CM Figure 17-10 Double-Register Compare Mode Block Diagram When a match is detected for one of the two registers in a register pair (CCy or CCz), the associated interrupt request line (CCyIRQ or CCzIRQ) is activated, and pin CCyIO, corresponding to the bank1 register CCy, is toggled. The generated interrupt always corresponds to the register that caused the match. Note: If a match occurs simultaneously for both register CCy and register CCz of the register pair, pin CCyIO will be toggled only once, but two separate compare interrupt requests will be generated. Each of the two registers of a pair can be individually allocated to one of the two timers in the CAPCOM2 unit. This offers a wide variety of applications, as the two timers can run in different modes with different resolution and frequency. However, this might require sophisticated software algorithms to handle the different timer periods. Note: The signals CCzIO (which do not serve for double-register compare mode) may be used for general purpose IO. User’s Manual CC12_X8, V2.3 17-26 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.6 Compare Output Signal Generation This section discusses the interaction between the CAPCOM Unit and the Port Logic. The block diagram illustrated in Figure 17-11 details the logic of the block “Mode & Output Control”, shown in Figure 17-5, Figure 17-7, and Figure 17-10. Each output signal is stored in its associated bit of the compare output register CC2_OUT. The individual bits are updated each time an associated compare event occurs. The bits of these registers are connected to the respective port pins as an alternate output function of a port line. CC2_OUT Compare Output Reg. SFR (FF2CH/96H) Reset Value: 0000H 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 CC 31 IO rwh CC 30 IO rwh CC 29 IO rwh CC 28 IO rwh CC 27 IO rwh CC 26 IO rwh CC 25 IO rwh CC 24 IO rwh CC 23 IO rwh CC 22 IO rwh CC 21 IO rwh CC 20 IO rwh CC 19 IO rwh CC 18 IO rwh CC 17 IO rwh CC 16 IO rwh Field Bits Type Description CCyIO [15:0] rwh Compare Output for Channel y Alternative port output for the associated port pin. Compare Match TxOV Driver Output Value Control Port Pin Pm.n OUT Reg. Control MODy CAPCOM Logic Port Logic MC_CAPCOM2_OUTPUT_XX Figure 17-11 Port Output Block Diagram for Compare Modes User’s Manual CC12_X8, V2.3 17-27 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Note: A compare output signal is visible at the pin only in compare modes 1 or 3. The output signal of a compare event can either be a 1, a 0, the complement of the current level, or the previous level. The block ‘Output Value Control’ determines the correct new level based on the compare event, the timer overflow signal, and the current state of the OUT register bit. For the output toggle function (e.g. in compare mode 1), the state of the OUT register bit is read, inverted, and then written back. User’s Manual CC12_X8, V2.3 17-28 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.7 Single Event Operation If an application requires that one and only one compare event needs to take place (within a certain time frame), single event operation helps to reduce software overhead and to eliminate the need for fast reaction upon events. In order to achieve a single event operation without this feature, software would have to either disable the compare mode or write a new value, which is outside of the count range of the timer, into the compare register, after the programmed compare match has taken place. Thus, usually an interrupt service routine is required to perform this operation. Interrupt response time may be critical if the timer period is very short - the disable operation needs to be completed before the timer would reach the same value again. The single event operation eliminates the need for software to react after the first compare match. The complete operation can be set up before the event, and no action is required after the event. The hardware takes care of generating only one event, and then disabling all further compare matches. This option is programmed via the Single Event Mode register CC2_SEM and the Single Event Enable register CC2_SEE. Each register provides one bit for each CCy register of a unit. CC2_SEM Single Event Mode Ctrl. Reg. 15 14 13 12 11 10 SFR (FE28H/14H) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM SEM 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw rw Field Bits Type Description SEMy [15:0] rw Single Event Mode Control 0 Single Event Mode disabled for channel y 1 Single Event Mode enabled for channel y CC2_SEE Single Event Enable Reg. 15 14 13 12 11 SFR (FE2AH/15H) 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE SEE 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh User’s Manual CC12_X8, V2.3 17-29 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Field Bits Type Description SEEy [15:0] rw Single Event Enable Control 0 Single Event disabled for channel y 1 Single Event enabled for channel y Note: This bit is cleared by hardware after the event. To setup a single event operation for a CCy register, software first programs the desired compare operation and compare value, and then sets the respective bit in register CC2_SEM to enable the single event mode. At last, the respective event enable bit in register CC2_SEE is set. When the programmed compare match occurs, all operations of the selected compare mode take place. In addition, hardware automatically disables all further compare matches and reset the event enable bit in register CC2_SEE to 0. As long as this bit is cleared, any compare operation is disabled. To setup a new event, this bit must first be set again. User’s Manual CC12_X8, V2.3 17-30 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.8 Staggered and Non-Staggered Operation The CAPCOM2 unit can run in one of two basic operation modes: Staggered Mode and Non-Staggered Mode. The selection between these modes is performed via register IOC. CC2_IOC I/O Control Register 15 14 13 12 ESFR (F066H/33H) 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 ST AG rw - 0 - Field Bits Type Description STAG 2 rw Staggered Mode Control 0 CAPCOM operates in Staggered Mode 1 CAPCOM operates in Non-Staggered Mode In staggered mode, a CAPCOM2 operation cycle consists of 8 module clock cycles, and the outputs of the compare events of the different registers are staggered, that is, the outputs for compare matches with the same compare value are not switched at the same time, but with a fixed time delay. This operation helps to reduce noise and peak power consumption caused by simultaneous switching outputs. In non-staggered Mode, a CAPCOM2 operation cycle is equal to one module clock cycle, and all compare outputs for compare events with the same compare value are switched in the same clock cycle. This mode offers a faster operation and increased resolution of the CAPCOM2 unit, 8 times higher than in staggered mode. User’s Manual CC12_X8, V2.3 17-31 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Staggered Mode Figure 17-12 illustrates the staggered mode operation. In this example, all CCy registers are programmed for compare mode 3. Registers CC16, CC17, and CC18 are all programmed for a compare value of FFFEH. When the timer increments to FFFEH, the comparator detects a match for all of the three registers. The output CC16IO of register CC16 is switched to 1 one cycle after the comparator match. However, the outputs CC17IO and CC18IO are not switched at the same time, but one, respectively two cycles later. This staggering of the outputs continues for all registers including register CC23. The number of the register indicates the delay of the output signal in clock cycles - the output of register CC23 is switched 7 cycles later than the one of register CC16. In the example, the compare value for register CC13 is set to FFFDH. Thus, the output is switched in the last clock cycle of the CAPCOM2 cycle in which the timer reached FFFDH. When the timer overflows, all compare outputs are reset to 0 (compare mode 3). Again, the staggering of the output signals can be seen from Figure 17-12. Looking at registers CC24 through CC31 shows that their outputs are switched in parallel to the respective outputs of registers CC16 through CC23. In fact, the staggering is performed in parallel for the upper and the lower register bank. In this way, it is assured, that both compare signals of a register pair in double-register compare mode operate simultaneously. Note: This is a general description and only refers to channels connected to pins. User’s Manual CC12_X8, V2.3 17-32 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Timer contents = FFFD Timer increments to FFFE Timer increments to FFFF Timer overflow Timer is reloaded with FFFC 1 CAPCOM Cycle = 8 fCC Clock Cycles 1 CAPCOM Cycle = 8 f CC Clock Cycles CC16 = FFFE CC17 = FFFE CC18 = FFFE CC19 = FFFF CC20 = FFFE CC21 = FFFF CC22 = FFFF CC23 = FFFD CC24 = FFFE CC25 = FFFE CC26 = FFFE CC27 = FFFF CC28 = FFFE CC29 = FFFF CC30 = FFFF CC31 = FFFD MCT05428_4CM Figure 17-12 Staggered Mode Operation User’s Manual CC12_X8, V2.3 17-33 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Non-Staggered Mode To gain maximum speed and resolution with the CAPCOM2 unit, it can be switched to non-staggered mode. In this mode, one CAPCOM2 operation cycle is equal to one module clock cycle. Timer increment and the comparison of its new contents with the contents of the compare register takes place within one clock cycle. The appropriate output signals are switched in the following clock cycle (in parallel to the next possible timer increment and comparison). Figure 17-13 illustrates the non-staggered mode. Note that when the timer overflows, it also takes one additional clock cycle to switch the output signals. Note: This is a general description and only refers to channels connected to pins. User’s Manual CC12_X8, V2.3 17-34 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Timer contents = FFFD Timer increments to FFFE Timer increments to FFFF Timer overflow Timer is reloaded with FFFC 1 CAPCOM Cycle = 1 fCC Clock Cycle 1 CAPCOM Cycle = 1 f CC Clock Cycle CC16 = FFFE CC17 = FFFE CC18 = FFFE CC19 = FFFF CC20 = FFFE CC21 = FFFF CC22 = FFFF CC23 = FFFD CC24 = FFFE CC25 = FFFE CC26 = FFFE CC27 = FFFF CC28 = FFFE CC29 = FFFF CC30 = FFFF CC31 = FFFD MCT05429_4CM_CC2 Figure 17-13 Non-Staggered Mode Operation User’s Manual CC12_X8, V2.3 17-35 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.9 CAPCOM2 Interrupts Upon a capture or compare event, the interrupt request flag CCyIR for the respective capture/compare register CCy is automatically set. This flag can be used to generate an interrupt or trigger a PEC service request when enabled by the interrupt enable bit CCyIE. Capture interrupts can be regarded as external interrupt requests with the additional feature of recording the time at which the triggering event occurred. Each of the capture/compare registers has its own bitaddressable interrupt control register and its own interrupt vector allocated. These registers are organized in the same way as all other interrupt control registers. The basic register layout is shown below, Table 17-4 lists the associated addresses. CC2_CCyIC CAPCOM Intr. Ctrl. Reg. 15 14 13 12 11 (E)SFR (Table 17-4) 10 9 - - - - 8 GPX - - - rw 7 6 CCy CCy IR IE rwh rw Reset Value: 0000H 5 4 3 2 1 0 ILVL GLVL rw rw Note: Please refer to the general Interrupt Control Register description for an explanation of the control fields. User’s Manual CC12_X8, V2.3 17-36 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Table 17-4 CAPCOM Unit Interrupt Control Register Addresses CAPCOM2 Unit Register Name Address Reg. Space CC2_CC16IC F1C0H/E0H ESFR CC2_CC17IC F1C2H/E1H ESFR CC2_CC18IC F1C4H/E2H ESFR CC2_CC19IC F1C6H/E3H ESFR CC2_CC20IC F1C8H/E4H ESFR CC2_CC21IC F1CAH/E5H ESFR CC2_CC22IC F1CCH/E6H ESFR CC2_CC23IC F1CEH/E7H ESFR CC2_CC24IC F1D0H/E8H ESFR CC2_CC25IC F1D2H/E9H ESFR CC2_CC26IC F1D4H/EAH ESFR CC2_CC27IC F1D6H/EBH ESFR CC2_CC28IC F1D8H/ECH ESFR CC2_CC29IC F1DAH/EDH ESFR CC2_CC30IC F1DCH/EEH ESFR CC2_CC31IC F1DEH/EFH ESFR User’s Manual CC12_X8, V2.3 17-37 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.10 External Input Signal Requirements The external input signals of a CAPCOM2 unit are sampled by the CAPCOM2 logic based on the module clock and the basic operation mode (staggered or non-staggered mode). To assure that a signal level is recognized correctly, its high or low level must be held active for at least one complete sampling period. The duration of a sampling period is one module clock cycle in non-staggered mode, and 8 module clock cycles in staggered mode. To recognize a signal transition, the signal needs to be sampled twice. If the level of the first sampling is different to the level detected during the second sampling, a transition is recognized. Therefore, a minimum of two sampling periods are required for the sampling of an external input signal. Thus, the maximum frequency of an input signal must not be higher than half the module clock frequency in non-staggered mode, and a 1/16th of the module clock frequency in staggered mode. Table 17-5 summarizes the requirements and limits for external input signals. Table 17-5 CAPCOM2 External Input Signal Limits Non-Staggered Mode fCC / 2 Minimum Input Signal Level 1 / fCC Staggered Mode fCC / 16 8 / fCC Maximum Input Frequency Duration In order to use an external signal as a count or capture input, the port pin to which it is connected must be configured as input. Note: For example for test purposes a pin used as a count or capture input may be configured as output. Software or an other peripheral may control the respective signal and thus trigger count or capture events. In order to cause a compare output signal to be seen by the external world, the associated port pin must be configured as output. For compare output signals the output of register CC2_OUT is used as an alternate output function of a port. User’s Manual CC12_X8, V2.3 17-38 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.10.1 Miscellaneous Registers KSCCFG Kernel State Configuration Register SFR(FE24H) 15 14 BP COM 0 w r 13 12 11 10 BP COMCFG SUM rw 0 w r 9 8 7 BP SUMCFG NOM rw w Field Bits Type Description MODEN 0 rw Reset Value: 0000H 6 5 4 3 2 0 NOMCFG 0 r rw r 1 0 BP MOD MOD EN EN w rw Module Enable This bit enables the module kernel clock and the module functionality. 0B The module is switched off. It does not react on mode control actions and the module clock is switched off immediately (without stop condition). The module does not react on read accesses and ignores write accesses. 1B The module is switched on and can operate. After writing 1 to MODEN, it is recommended to read register KSCFG to avoid pipeline effects in the control block before accessing other CAPCOM2 registers. Note: This bit is reset by an application reset. BPMODEN 1 w Bit Protection for MODEN This bit enables the write access to the bit MODEN. It always reads 0. It is only active during the write access cycle. 0B MODEN is not changed. 1B MODEN is updated with the written value. Note: This bit is reset by an application reset. User’s Manual CC12_X8, V2.3 17-39 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Field Bits Type Description NOMCFG [5:4] rw Normal Operation Mode Configuration This bit field defines the kernel mode applied in normal operation mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 00 or 11. Note: This bit is reset by an application reset. BPNOM 7 w Bit Protection for NOMCFG This bit enables the write access to the bit field NOMCFG. It always reads 0. It is only active during the write access cycle. 0B NOMCFG is not changed. 1B NOMCFG is updated with the written value. Note: This bit is reset by an application reset. SUMCFG [9:8] rw Suspend Mode Configuration This bit field defines the kernel mode applied in suspend mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 01. Note: This bit is reset by a debug reset. BPSUM 11 w Bit Protection for SUMCFG This bit enables the write access to the bit field SUMCFG. It always reads 0. It is only active during the write access cycle. 0B SUMCFG is not changed. 1B SUMCFG is updated with the written value. Note: This bit is reset by a debug reset. COMCFG [13:12] rw Clock Off Mode Configuration This bit field defines the kernel mode applied in clock off mode. 0XB The module is switched on. 1XB The module is switched off. This field is taken into account for CR = 10. Note: This bit is reset by an application reset. User’s Manual CC12_X8, V2.3 17-40 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Field Bits Type Description BPCOM 15 w Bit Protection for COMCFG This bit enables the write access to the bit field COMCFG. It always reads 0. It is only active during the write access cycle. COMCFG is not changed. 0B 1B COMCFG is updated with the written value. Note: This bit is reset by an application reset. 0 [3:2], 6, 10, 14 r Reserved; returns 0 if read; should be written with 0; For module type and revision identification the CAPCOM2 unit provides a specific readonly identification register. CC2_ID Identification Register 15 14 13 12 MEM (FFEEH) 11 10 9 8 7 Reset Value: 50XXH 6 5 4 3 MOD_TYPE MOD_REV r r 2 1 0 Field Bits Typ Description MOD_REV [7:0] r Module Revision Number MOD_REV defines the revision number. The value of a module revision starts with 01H (first revision). MOD_TYPE [15:8] r Module Identification Number This bitfield defines the module identification number (50H = CAPCOM2). User’s Manual CC12_X8, V2.3 17-41 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 17.11 Interfaces of the CAPCOM Units The CAPCOM2 unit is connected to its environment in different ways. These connections are summarized in Table 17-6 and Figure 17-14. Internal Connections The overflow/underflow signal T6OFL of GPT2 timer T6 is connected to the CAPCOM2 input T6OUF, providing an optional clock source for the CAPCOM timers. Synchronous starting is supported by bit GLCCST in the SCU. Compare output signals can trigger A/D conversions, trigger serial transmissions (USIC), and generate request signals for the external request unit (ERU). The 18 interrupt request lines of the CAPCOM2 unit are connected to the interrupt control block. The channel interrupt request lines share interrupt nodes with other sources. The selection is done using register SCU_ISSR. The CAPCOM2 module is clocked with the XC2300 system clock, so fCC = fSYS. External Connections Sixteen (twelve in 100-pin package) capture/compare signals of the CAPCOM2 unit are connected with input/output ports of the XC2300. Depending on the selected direction, these ports may accept capture trigger signals from the external system or issue compare output signals to external circuitry. Note: Capture trigger signals may also be derived from output pins. In this case, software can generate the trigger edges, for example. Timer T7 can be clocked by an external signal. Table 17-6 CAPCOM2 Connections in XC2300 Signal from/to Module I/O to Can be used to/as CAPCOM2 T7IN P5.9 I Timer 7 input from port T6OUF T6OFL (GPT12) I GPT12 timer T6 overflow T7HR GLCCST (SCU) I Global CAPCOM start T8HR GLCCST (SCU) I Global CAPCOM start CC16IO P2.3 ADC0_REQTR0A I/O O Capture/Compare input/output ADC0 request trigger CC17IO P2.4 ADC0_REQTR1A I/O O Capture/Compare input/output ADC0 request trigger CC18IO P2.5 ADC0_REQTR2A I/O O Capture/Compare input/output ADC0 request trigger User’s Manual CC12_X8, V2.3 17-42 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 Table 17-6 CAPCOM2 Connections in XC2300 (cont’d) Signal from/to Module I/O to Can be used to/as CAPCOM2 CC19IO P2.6 I/O Capture/Compare input/output CC20IO P2.7 I/O Capture/Compare input/output CC21IO P2.8 I/O Capture/Compare input/output CC22IO P2.9 I/O Capture/Compare input/output CC23IO P2.10 I/O Capture/Compare input/output CC24IO P4.0 U0C0_DX2E ADC1_REQTR0A I/O O O Capture/Compare input/output USIC0 Channel 0 time slot ADC1 request trigger CC25IO P4.1 U1C0_DX2E ADC1_REQTR1A I/O O O Capture/Compare input/output USIC1 Channel 0 time slot ADC1 request trigger CC26IO P4.2 U2C0_DX2E ADC1_REQTR2A I/O O O Capture/Compare input/output USIC2 Channel 0 time slot ADC1 request trigger CC27IO P4.3 I/O O Capture/Compare input/output CC28IO P4.4 ERU_OGU03 I/O O Capture/Compare input/output Interrupt trigger source CC29IO P4.5 ERU_OGU13 I/O O Capture/Compare input/output Interrupt trigger source CC30IO P4.6 ERU_OGU23 I/O O Capture/Compare input/output Interrupt trigger source CC31IO P4.7 ERU_OGU33 I/O O Capture/Compare input/output Interrupt trigger source User’s Manual CC12_X8, V2.3 17-43 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 2 System Control Unit (SCU) GPT12 fSYS = fCC CC16IO CC2DIS CC17IO GLCCST CC18IO T6OUF CC19IO CC20IO T7IRQ CC31IRQ CAPCOM2 Module P2.10/CC23IO P4.0/CC24IO P4.1/CC25IO CC26IO P4.2/CC26IO Port P4 Control CC29IO P4.4/CC28IO P4.6/CC30IO CC31IO T7IN P4.3/CC27IO P4.5/CC29IO CC30IO USIC P2.7/CC20IO P2.9/CC22IO CC25IO CC28IO P2.6/CC19IO P2.8/CC21IO CC24IO CC27IO ADC Port P2 Control CC23IO CC17IRQ CC30IRQ P2.5/CC18IO CC22IO CC16IRQ : P2.4/CC17IO CC21IO T8IRQ Interrupt Control P2.3/CC16IO P4.7/CC31IO Port P5 Control P5.9/T7IN ERU MC_CAPCOM2_CONN Figure 17-14 CAPCOM2 Unit Interfaces User’s Manual CC12_X8, V2.3 17-44 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18 Capture/Compare Unit 6 (CCU6) The CCU6 is a high-resolution 16-bit capture and compare unit with application specific modes, mainly for AC drive control. Special operating modes support the control of Brushless DC-motors using Hall sensors or Back-EMF detection. Furthermore, block commutation and control mechanisms for multi-phase machines are supported. It also supports inputs to start several timers synchronously, an important feature in devices with several CCU6 modules. This chapter is structured as follows: • • • • • • • • • • Introduction (see Section 18.1) including the register overview (see Section 18.1.3) Operating T12 (see Section 18.2) including T12 related registers (see Section 18.2.8) and capture/compare control registers (see Section 18.2.9) Operating T13 (see Section 18.3) including T13 related registers (see Section 18.3.6) Trap handling (see Section 18.4) Multi-Channel mode (see Section 18.5) Hall sensor mode (see Section 18.6) Modulation control registers (see Section 18.7) Interrupt handling (see Section 18.8) including interrupt registers (see Section 18.8.2) General module operation (see Section 18.9) including general registers (see Section 18.9.3) Module implementation (see Section 18.10) 18.1 Introduction The CCU6 unit is made up of a Timer T12 Block with three capture/compare channels and a Timer T13 Block with one compare channel. The T12 channels can independently generate PWM signals or accept capture triggers, or they can jointly generate control signal patterns to drive AC-motors or inverters. A rich set of status bits, synchronized updating of parameter values via shadow registers, and flexible generation of interrupt request signals provide means for efficient software-control. Note: The capture/compare module itself is named CCU6 (capture/compare unit 6). A capture/compare channel inside this module is named CC6x. User’s Manual CCU6, UM_V0.5D3 18-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.1.1 Feature Set Overview This section gives an overview over the different building blocks and their main features. Timer 12 Block Features • • • • • • • • • • • Three capture/compare channels, each channel can be used either as capture or as compare channel Generation of a three-phase PWM supported (six outputs, individual signals for highside and low-side switches) 16-bit resolution, maximum count frequency = peripheral clock Dead-time control for each channel to avoid short-circuits in the power stage Concurrent update of T12 registers Center-aligned and edge-aligned PWM can be generated Single-shot mode supported Start can be controlled by external events Capability of counting external events Many interrupt request sources Hysteresis-like control mode Timer 13 Block Features • • • • • • • • One independent compare channel with one output 16-bit resolution, maximum count frequency = peripheral clock Concurrent update of T13 registers Can be synchronized to T12 Interrupt generation at period-match and compare-match Single-shot mode supported Start can be controlled by external events Capability of counting external events Additional Specific Functions • • • • • • • • Block commutation for Brushless DC-drives implemented Position detection via Hall-sensor pattern Noise filter supported for position input signals Automatic rotational speed measurement and commutation control for block commutation Integrated error handling Fast emergency stop without CPU load via external signal (CTRAP) Control modes for multi-channel AC-drives Output levels can be selected and adapted to the power stage User’s Manual CCU6, UM_V0.5D3 18-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.1.2 Block Diagram The Timer T12 can work in capture and/or compare mode for its three channels. The modes can also be combined (e.g. a channel works in compare mode, whereas another channel works in capture mode). The Timer T13 can work in compare mode only. The multi-channel control unit generates output patterns which can be modulated by T12 and/or T13. The modulation sources can be selected and combined for the signal modulation. CCU6 Module Kernel Compare CC63 Compare Interrupt Control 1 SR[3:0] 3+3 2 2 2 Trap Input T13 Output Selec t Start fCC6 Trap Control Hall Input 1 Multichannel Control Output Selec t CC62 DeadTime Control Compare 1 Compare CC61 Capture Clock Control 1 Compare T12 CC60 3 1 C TR AP[D :A] CC POS2[D :A] CC POS1[D :A] CC POS0[D :A] C C62I N[D:A] CC 62 COU T62 C C61I N[D:A] CC 61 COU T61 C C60I N[D:A] CC 60 COU T60 T 13HR [D :A] T 12HR [D :A] Input / Output Control Port Control CCU6_MCB05506 Figure 18-1 CCU6 Block Diagram User’s Manual CCU6, UM_V0.5D3 18-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.1.3 Register Overview For the generation of the overall register table, the prefix “CCU6x_” has to be added to the register names in this table to identify the registers of different CCU6 modules that are implemented. In this naming convention, x indicates the module number. Table 18-1 shows all registers required for programming of a CCU6 module. It summarizes the CCU6 kernel registers and defines their relative addresses and the reset values. 8-bit short addresses are not available for this module. T12 related Registers Interrupt Status/ Cap/Com Control Registers Control Registers General Registers T12 CMPSTAT IS KSCFG T12PR T12DTC CMPMODIF T12MSEL ISS ISR KSCSR PISELH CC60R TCTR0 INP PISELL CC60SR TCTR2 IEN CC61R TCTR4 0IC CC61SR CC62R CC62SR 1IC Modulation Control Registers T13 related Registers MODCTR T13 PSLR T13PR MCMCTR CC63R MCMOUTS CC63SR MCMOUT 2IC 3IC TRPCTR CCU6_regs Figure 18-2 CCU6 Registers User’s Manual CCU6, UM_V0.5D3 18-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-1 CCU6 Module Register Summary Short Name Description Rel. Reset Addr. Value See Page General Registers PISELL Module Port Input Select Register 04H 0000H Page 18-106 PISELH Module Port Input Select Register 06H 0000H Page 18-108 KSCFG Kernel State Configuration Register 00H 0000H Page 18-110 KSCSR Kernel State Control Sensitivity Register 0EH 0000H Page 18-112 Timer T12 related Registers T12 Timer 12 Counter Register 10H 0000H Page 18-32 T12PR Timer 12 Period Register 12H 0000H Page 18-32 T12DTC Dead-Time Control Reg. for Timer T12 14H 0000H Page 18-35 CC60R Capture/Compare Reg. Channel CC60 18H 0000H Page 18-33 CC61R Capture/Compare Reg. Channel CC61 1AH 0000H Page 18-33 CC62R Capture/Compare Reg. Channel CC62 1CH 0000H Page 18-33 CC60SR Capture/Compare Shadow Register Channel CC60 20H 0000H Page 18-34 CC61SR Capture/Compare Shadow Register Channel CC61 22H 0000H Page 18-34 CC62SR Capture/Compare Shadow Register Channel CC62 24H 0000H Page 18-34 Capture/Compare Control Registers CMPSTAT Compare State Register 28H 0000H Page 18-37 CMPMODIF Compare State Modification Register 2AH 0000H Page 18-39 T12MSEL T12 Capture/Comp. Mode Select Reg. 46H 0000H Page 18-40 TCTR0 Timer Control Register 0 2CH 0000H Page 18-41 TCTR2 Timer Control Register 2 2EH 0000H Page 18-44 TCTR4 Timer Control Register 4 26H 0000H Page 18-47 30H 0000H Page 18-62 Timer T13 related Registers T13 Timer 13 Counter Register User’s Manual CCU6, UM_V0.5D3 18-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-1 CCU6 Module Register Summary (cont’d) Short Name Description Rel. Reset Addr. Value See Page T13PR Timer 13 Period Register 32H 0000H Page 18-63 CC63R Compare Register for Timer 13 34H 0000H Page 18-64 CC63SR Compare Shadow Register for Timer 13 36H 0000H Page 18-64 Modulation Control Registers MODCTR Modulation Control Register 40H 0000H Page 18-77 TRPCTR Trap Control Register 42H 0000H Page 18-79 PSLR Passive State Level Register 44H 0000H Page 18-82 MCMOUTS Multi-Channel Mode Output Shadow Register 4AH 0000H Page 18-85 MCMOUT Multi-Channel Mode Output Register 4CH 0000H Page 18-86 MCMCTR Multi-Channel Mode Control Register 4EH 0000H Page 18-83 Interrupt Status and Node Registers IS Interrupt Status Register 50H 0000H Page 18-90 ISS Interrupt Status Set Register 52H 0000H Page 18-93 ISR Interrupt Status Reset Register 54H 0000H Page 18-95 INP Interrupt Node Pointer Register 56H 3940H Page 18-100 IEN Interrupt Node Pointer Register 58H 0000H Page 18-97 User’s Manual CCU6, UM_V0.5D3 18-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2 Operating Timer T12 The timer T12 block is the main unit to generate the 3-phase PWM signals. A 16-bit counter is connected to 3 channel registers via comparators, that generate a signal when the counter contents match one of the channel register contents. A variety of control functions facilitate the adaptation of the T12 structure to different application needs. Besides the 3-phase PWM generation, the T12 block offers options for individual compare and capture functions, as well as dead-time control and hysteresis-like compare mode. This section provides information about: • • • • • • • • T12 overview (see Section 18.2.1) Counting scheme (see Section 18.2.2) Compare modes (see Section 18.2.3) Compare mode output path (see Section 18.2.4) Capture modes (see Section 18.2.5) Shadow transfer (see Section 18.2.6) T12 operating mode selection (see Section 18.2.7) T12 counter register description (see Section 18.2.8) State Bits Timer T12 Logic Capture/Compare Channel CC60 CC60ST Capture/Compare Channel CC61 CC61ST Capture/Compare Channel CC62 CC62ST To Dead-Time Control and Output Modulation Input and Control/Status Logic T12HR CC6xIN CCPOSx CCU6_MCA05507 Figure 18-3 Overview Diagram of the Timer T12 Block User’s Manual CCU6, UM_V0.5D3 18-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.1 T12 Overview Figure 18-4 shows a detailed block diagram of Timer T12. The functions of the timer T12 block are controlled by bits in registers TCTR0, TCTR2, and PISELL. Timer T12 receives its input clock (fT12) from the module clock fCC6 via a programmable prescaler and an optional 1/256 divider or from an input signal T12HR. These options are controlled via bit fields T12CLK and T12PRE (see Table 18-2). T12 can count up or down, depending on the selected operation mode. A direction flag, CDIR, indicates the current counting direction. T12RSEL T12RS T12RR T12R CDIR edge detection ISCNT12 T12STD T12HR STE12 edge detection Clock Selection T12CNT fCC6 CTM T12STR n T12CLK fT12 T12 Control & Status Counter Register T12 256 T12RES = 0000 H T12_ZM = 0001 H T12PRE Read from T12PR T12SSC T12_OM Comp. =? T12_PM Period Register T12_ST Write to T12PR Period Shadow Register CCU6_MCA05508 Figure 18-4 Timer T12 Logic and Period Comparators Via a comparator, the T12 counter register T12 is connected to a Period Register T12PR. This register determines the maximum count value for T12. In Edge-Aligned mode, T12 is cleared to 0000H after it has reached the period value defined by T12PR. In Center-Aligned mode, the count direction of T12 is set from ‘up’ to User’s Manual CCU6, UM_V0.5D3 18-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) ‘down’ after it has reached the period value (please note that in this mode, T12 exceeds the period value by one before counting down). In both cases, signal T12_PM (T12 Period Match) is generated. The Period Register receives a new period value from its Shadow Period Register. A read access to T12PR delivers the current period value at the comparator, whereas a write access targets the Shadow Period Register to prepare another period value. The transfer of a new period value from the Shadow Period Register into the Period Register (see Section 18.2.6) is controlled via the ‘T12 Shadow Transfer’ control signal, T12_ST. The generation of this signal depends on the operating mode and on the shadow transfer enable bit STE12. Providing a shadow register for the period value as well as for other values related to the generation of the PWM signal allows a concurrent update by software for all relevant parameters. Two further signals indicate whether the counter contents are equal to 0000H (T12_ZM = zero match) or 0001H (T12_OM = one match). These signals control the counting and switching behavior of T12. The basic operating mode of T12, either Edge-Aligned mode (Figure 18-5) or CenterAligned mode (Figure 18-6), is selected via bit CTM. A Single-Shot control bit, T12SSC, enables an automatic stop of the timer when the current counting period is finished (see Figure 18-7 and Figure 18-8). The start or stop of T12 is controlled by the Run bit T12R that can be modified by bits in register TCTR4. The run bit can be set/cleared by software via the associated set/clear bits T12RS or T12RR, it can be set by a selectable edge of the input signal T12HR (TCTR2.T12RSEL), or it is cleared by hardware according to preselected conditions. Timer T12 can be cleared via control bit T12RES. Setting this write-only bit does only clear the timer contents, but has no further effects, for example, it does not stop the timer. The timer T12 run bit T12R must not be set while the applied T12 period value is zero. The generation of the T12 shadow transfer control signal, T12_ST, is enabled via bit STE12. This bit can be set or reset by software indirectly through its associated set/clear control bits T12STR and T12STD. While Timer T12 is running, write accesses to the count register T12 are not taken into account. If T12 is stopped and the Dead-Time counters are 0, write actions to register T12 are immediately taken into account. User’s Manual CCU6, UM_V0.5D3 18-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.2 T12 Counting Scheme This section describes the clocking and counting capabilities of T12. 18.2.2.1 Clock Selection In Timer Mode (PISELH.ISCNT12 = 00B), the input clock fT12 of Timer T12 is derived from the internal module clock fCC6 through a programmable prescaler and an optional 1/256 divider. The resulting prescaler factors are listed in Table 18-2. The prescaler of T12 is cleared while T12 is not running (TCTR0.T12R = 0) to ensure reproducible timings and delays. Table 18-2 Timer T12 Input Frequency Options T12CLK Resulting Input Clock fT12 Prescaler Off (T12PRE = 0) Resulting Input Clock fT12 Prescaler On (T12PRE = 1) 000B fCC6 fCC6 / 2 fCC6 / 4 fCC6 / 8 fCC6 / 16 fCC6 / 32 fCC6 / 64 fCC6 / 128 fCC6 / 256 fCC6 / 512 fCC6 / 1024 fCC6 / 2048 fCC6 / 4096 fCC6 / 8192 fCC6 / 16384 fCC6 / 32768 001B 010B 011B 100B 101B 110B 111B In Counter Mode, timer T12 counts one step: • • • If a 1 is written to TCTR4.T12CNT and PISELH.ISCNT12 = 01B If a rising edge of input signal T12HR is detected and PISELH.ISCNT12 = 10B If a falling edge of input signal T12HR is detected and PISELH.ISCNT12 = 11B User’s Manual CCU6, UM_V0.5D3 18-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.2.2 Edge-Aligned / Center-Aligned Mode In Edge-Aligned Mode (CTM = 0), timer T12 is always counting upwards (CDIR = 0). When reaching the value given by the period register (period-match T12_PM), the value of T12 is cleared with the next counting step (saw tooth shape). fT12 Period Value T12 Count Period Zero Match Match Zero Up Up Value n+1 Value n+2 CDIR CC6x Shadow Transfer CCU6_MCT05509 Figure 18-5 T12 Operation in Edge-Aligned Mode As a result, in Edge-Aligned mode, the timer period is given by: T12PER = <Period-Value> + 1; in T12 clocks (fT12) (18.1) In Center-Aligned Mode (CTM = 1), timer T12 is counting upwards or downwards (triangular shape). When reaching the value given by the period register (period-match T12_PM) while counting upwards (CDIR = 0), the counting direction control bit CDIR is changed to downwards (CDIR = 1) with the next counting step. When reaching the value 0001H (one-match T12_OM) while counting downwards, the counting direction control bit CDIR is changed to upwards with the next counting step. As a result, in Center.Aligned mode, the timer period is given by: T12PER = (<Period-Value> + 1) × 2; in T12 clocks (fT12) • • • (18.2) With the next clock event of fT12 the count direction is set to counting up (CDIR = 0) when the counter reaches 0001H while counting down. With the next clock event of fT12 the count direction is set to counting down (CDIR = 1) when the Period-Match is detected while counting up. With the next clock event of fT12 the counter counts up while CDIR = 0 and it counts down while CDIR = 1. User’s Manual CCU6, UM_V0.5D3 18-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) fT12 <Period Value> + 1 Period Value Zero Match T12 Count Period Match Period Match Zero Down Up Up Down Value n Value n+1 Value n+1 Value n+2 CDIR CC6x Shadow Transfer Shadow Transfer CCU6_MCT05510 Figure 18-6 T12 Operation in Center-Aligned Mode Note: Bit CDIR changes with the next timer clock event after the one-match or the period-match. Therefore, the timer continues counting in the previous direction for one cycle before actually changing its direction (see Figure 18-6). User’s Manual CCU6, UM_V0.5D3 18-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.2.3 Single-Shot Mode In Single-Shot Mode, the timer run bit T12R is cleared by hardware. If bit T12SSC = 1, the timer T12 will stop when the current timer period is finished. In Edge-Aligned mode, T12R is cleared when the timer becomes zero after having reached the period value (see Figure 18-7). fT12 Period Value Compare Value T12 Count 0 T12R CC6xST T12SSC CCU6_MCT05511 Figure 18-7 Single-Shot Operation in Edge-Aligned Mode In Center-Aligned mode, the period is finished when the timer has counted down to zero (one clock cycle after the one-match while counting down, see Figure 18-8). fT12 Period Value Compare Value T12 Count 1 0 T12R CC6xST T12SSC CCU6_MCT05512 Figure 18-8 Single-Shot Operation in Center-Aligned Mode User’s Manual CCU6, UM_V0.5D3 18-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.3 T12 Compare Mode Associated with Timer T12 are three individual capture/compare channels, that can perform compare or capture operations with regard to the contents of the T12 counter. The capture functions are explained in Section 18.2.5. 18.2.3.1 Compare Channels In Compare Mode (see Figure 18-9), the three individual compare channels CC60 CC61, and CC62 can generate a three-phase PWM pattern. Counter Register T12 fT12 Compare Match CM_60 Comp. =? Comp. =? Comp. =? Compare Register CC60R Compare Register CC61R Compare Register CC62R Compare Match CM_61 Compare Match CM_62 T12_ST Compare Shadow Register CC60SR Compare Shadow Register CC61SR Compare Shadow Register CC62SR CCU6_MCA05513 Figure 18-9 T12 Channel Comparators Each compare channel is connected to the T12 counter register via its individual equalto comparator, generating a match signal when the contents of the counter matches the contents of the associated compare register. Each channel consists of the comparator and a double register structure - the actual compare register CC6xR, feeding the comparator, and an associated shadow register CC6xSR, that is preloaded by software and transferred into the compare register when signal T12 shadow transfer, T12_ST, gets active. Providing a shadow register for the compare value as well as for other values related to the generation of the PWM signal facilitates a concurrent update by software for all relevant parameters of a three-phase PWM. User’s Manual CCU6, UM_V0.5D3 18-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.3.2 Channel State Bits Associated with each (compare) channel is a State Bit, CMPSTAT.CC6xST, holding the status of the compare (or capture) operation (see Figure 18-10). In compare mode, the State Bits are modified according to a set of switching rules, depending on the current status of timer T12. CC60_R CCPOS0 Compare Channel CC60 CM_60 To Interrupt CC60_F Control Switching Rule Logic State Bit CC60ST MSEL60 To Dead_Time Counter 0 MCC60S/R CC61_R CCPOS1 Compare Channel CC61 CM_61 To Interrupt CC61_F Control Switching Rule Logic State Bit CC61ST MSEL61 To Dead_Time Counter 1 MCC61S/R CC62_R CCPOS2 Compare Channel CC62 T12 Counter CM_62 To Interrupt CC62_F Control Switching Rule Logic State Bit CC62ST MSEL62 MCC62S/R CDIR T12R To Dead_Time Counter 2 T12_ZM CCU6_MCB05514 Figure 18-10 Compare State Bits for Compare Mode The inputs to the switching rule logic for the CC6xST bits are the timer direction (CDIR), the timer run bit (T12R), the timer T12 zero-match signal (T12_ZM), and the actual individual compare-match signals CM_6x as well as the mode control bits, T12MSEL.MSEL6x. User’s Manual CCU6, UM_V0.5D3 18-15 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) In addition, each state bit can be set or cleared by software via the appropriate set and reset bits in register CMPMODIF, MCC6xS and MCC6xR. The input signals CCPOSx are used in hysteresis-like compare mode, whereas in normal compare mode, these inputs are ignored. Note: In Hall Sensor, single shot or capture modes, additional/different rules are taken into account (see related sections). A compare interrupt event CC6x_R is signaled when a compare match is detected while counting upwards, whereas the compare interrupt event CC6x_F is signaled when a compare match is detected while counting down. The actual setting of a State Bit has no influence on the interrupt generation in compare mode. A modification of a State Bit CC6xST by the switching rule logic due to a compare action is only possible while Timer T12 is running (T12R = 1). If this is the case, the following switching rules apply for setting and clearing the State Bits in Compare Mode (illustrated in Figure 18-11 and Figure 18-12): A State Bit CC6xST is set to 1: • • with the next T12 clock (fT12) after a compare-match when T12 is counting up (i.e., when the counter is incremented above the compare value); with the next T12 clock (fT12) after a zero-match AND a parallel compare-match when T12 is counting up. A State Bit CC6xST is cleared to 0: • • with the next T12 clock (fT12) after a compare-match when T12 is counting down (i.e., when the counter is decremented below the compare value in center-aligned mode); with the next T12 clock (fT12) after a zero-match AND NO parallel compare-match when T12 is counting up. fT12 Period Value T12 Count Compare Value Zero CC6xST CCU6_MCT05515 Figure 18-11 Compare Operation, Edge-Aligned Mode Figure 18-13 illustrates some more examples for compare waveforms. It is important to note that in these examples, it is assumed that some of the compare values are changed User’s Manual CCU6, UM_V0.5D3 18-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) while the timer is running. This change is performed via a software preload of the Shadow Register, CC6xSR. The value is transferred to the actual Compare Register CC6xR with the T12 Shadow Transfer signal, T12_ST, that is assumed to be enabled. fT12 Compare-Match Compare-Match T12 Count Period Value Compare Value Zero CC6xST CCU6_MCT05516 Figure 18-12 Compare Operation, Center-Aligned Mode User’s Manual CCU6, UM_V0.5D3 18-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) fT12 Period Value = 5 T12 Count Zero Down Up Down Up Value n Value n+1 Value n+2 Value n+3 CC6x = 2 CC6x = 2 CC6x = 1 CC6x = 1 CC6x = 1 CC6x = 0 CC6x = 0 CC6x = 0 CC6x = 3 CC6x = 3 CC6x = 3 CC6x = 3 CC6x = 4 CC6x = 4 CC6x = 4 CC6x = 4 CC6x = 5 CC6x = 5 CC6x = 5 CC6x = 5 CC6x = 3 CC6x = 6 CC6x = 6 CC6x = 6 CDIR CC6x a) b) c) d) e) f) CCU6_MCT05517 Figure 18-13 Compare Waveform Examples Example b) illustrates the transition to a duty cycle of 100%. First, a compare value of 0001H is used, then changed to 0000H. Please note that a low pulse with the length of one T12 clock is still produced in the cycle where the new value 0000H is in effect; this pulse originates from the previous value 0001H. In the following timer cycles, the State Bit CC6xST remains at 1, producing a 100% duty cycle signal. In this case, the compare rule ‘zero-match AND compare-match’ is in effect. Example f) shows the transition to a duty cycle of 0%. The new compare value is set to <Period-Value> + 1, and the State Bit CC6ST remains cleared. Figure 18-14 illustrates an example for the waveforms of all three channels. With the appropriate dead-time control and output modulation, a very efficient 3-phase PWM signal can be generated. User’s Manual CCU6, UM_V0.5D3 18-18 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Period Value CC61R CC62R T12 Count Down Up Down Up CC60R Zero Down CDIR Shadow Transfer CC60ST CC61ST CC62ST CCU6_MCT05518 Figure 18-14 Three-Channel Compare Waveforms User’s Manual CCU6, UM_V0.5D3 18-19 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.3.3 Hysteresis-Like Control Mode The hysteresis-like control mode (T12MSEL.MSEL6x = 1001B) offers the possibility to switch off the PWM output if the input CCPOSx becomes 0 by clearing the State Bit CC6xST. This can be used as a simple motor control feature by using a comparator indicating, e.g., overcurrent. While CCPOSx = 0, the PWM outputs of the corresponding channel are driving their passive levels, because the setting of bit CC6xST is only possible while CCPOSx = 1. As long as input CCPOSx is 0, the corresponding State Bit is held 0. When CCPOSx is at high level, the outputs can be in active state and are determined by bit CC6xST (see Figure 18-10 for the state bit logic and Figure 18-15 for the output paths). The CCPOSx inputs are evaluated with fCC6. This mode can be used to introduce a timing-related behavior to a hysteresis controller. A standard hysteresis controller detects if a value exceeds a limit and switches its output according to the compare result. Depending on the operating conditions, the switching frequency and the duty cycle are not fixed, but change permanently. If (outer) time-related control loops based on a hysteresis controller in an inner loop should be implemented, the outer loops show a better behavior if they are synchronized to the inner loops. Therefore, the hysteresis-like mode can be used, that combines timerrelated switching with a hysteresis controller behavior. For example, in this mode, an output can be switched on according to a fixed time base, but it is switched off as soon as a falling edge is detected at input CCPOSx. This mode can also be used for standard PWM with overcurrent protection. As long as there is no low level signal at pin CCPOSx, the output signals are generated in the normal manner as described in the previous sections. Only if input CCPOSx shows a low level, e.g. due to the detection of overcurrent, the outputs are shut off to avoid harmful stress to the system. User’s Manual CCU6, UM_V0.5D3 18-20 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.4 Compare Mode Output Path Figure 18-15 gives an overview on the signal path from a channel State Bit to its output pin in its simplest form. As illustrated, a user has a variety of controls to determine the desired output signal switching behavior in relation to the current state of the State Bit, CC6xST. Please refer to Section 18.2.4.3 for details on the output modulation. T12 State Bits Dead-Time Generation CC60ST CC61ST CC62ST T12 State Selection Output Level Selection CC6xPS PSLy CC6xST CC6x_O Dead-Time Counters T12 Output Modulation CC6xST Level Select Level Select COUT6x COUT6x_O COUT6xPS CC6x PSLy+1 CCU6_MCA05519 Figure 18-15 Compare Mode Simplified Output Path Diagram The output path is based on signals that are defined as active or passive. The terms active and passive are not related to output levels, but to internal actions. This mainly applies for the modulation, where T12 and T13 signals are combined with the multichannel signals and the trap function. The Output level Selection allows the user to define the output level at the output pin for the passive state (inverted level for the active state). It is recommended to configure this block in a way that an external power switch is switched off while the CCU6 delivers an output signal in the passive state. 18.2.4.1 Dead-Time Generation The generation of (complementary) signals for the high-side and the low-side switches of one power inverter phase is based on the same compare channel. For example, if the high-side switch should be active while the T12 counter value is above the compare value (State Bit = 1), then the low-side switch should be active while the counter value is below the compare value (State Bit = 0). In most cases, the switching behavior of the connected power switches is not symmetrical concerning the switch-on and switch-off times. A general problem arises if the time for switch-on is smaller than the time for switch-off of the power device. In this case, a short-circuit can occur in the inverter bridge leg, which may damage the complete system. In order to solve this problem by HW, this capture/compare unit User’s Manual CCU6, UM_V0.5D3 18-21 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) contains a programmable Dead-Time Generation Block, that delays the passive to active edge of the switching signals by a programmable time (the active to passive edge is not delayed). The Dead-Time Generation Block, illustrated in Figure 18-16, is built in a similar way for all three channels of T12. It is controlled by bits in register T12DTC. Any change of a CC6xST State Bit activates the corresponding Dead-Time Counter, that is clocked with the same input clock as T12 (fT12). The length of the dead-time can be programmed by bit field DTM. This value is identical for all three channels. Writing TCTR4.DTRES = 1 sets all dead-times to passive. Dead-Time Value DTM fT12 DTRES Dead-Time Counter 0 DTE0 CC60ST Dead-Time 0 active / passive CC60ST CC60ST Dead-Time Counter 1 DTE1 CC61ST Dead-Time 1 active / passive CC61ST CC61ST Dead-Time Counter 2 DTE2 CC62ST Dead-Time 2 active / passive CC62ST CC62ST CCU6_MCB05520 Figure 18-16 Dead-Time Generation Block Diagram Each of the three dead-time counters has its individual dead-time enable bit, DTEx. An enabled dead-time counter generates a dead-time delaying the passive-to-active edge of the channel output signal. The change in a State Bit CC6xST is not taken into account while the dead-time generation of this channel is currently in progress (active). This avoids an unintentional additional dead-time if a State Bit CC6xST changes too early. A disabled dead-time counter is always considered as passive and does not delay any edge of CC6xST. Based on the State Bits CC6xST, the Dead-Time Generation Block outputs a direct signal CC6xST and an inverted signal CC6xST for each compare channel, each masked with the effect of the related Dead-Time Counters (waveforms illustrated in Figure 18-17). User’s Manual CCU6, UM_V0.5D3 18-22 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) T12 Counter Value Compare Value active State Bit CC6xST DeadTime passive active CC6xST with DeadTime CC6xST with DeadTime active passive passive active passive active passive CCU6_MCT05521 Figure 18-17 Dead-Time Generation Waveforms 18.2.4.2 State Selection To support a wide range of power switches and drivers, the state selection offers the flexibility to define when a an output can be active and can be modulated, especially useful for complementary or multi-phase PWM signals. The state selection is based on the signals CC6xST and CC6xST delivered by the deadtime generator (see Figure 18-15). Both signals are never active at the same time, but can be passive at the same time. This happens during the dead-time of each compare channel after a change of the corresponding State Bit CC6xST. The user can select independently for each output signal CC6xO and COUT6xO if it should be active before or after the compare value has been reached (see register CMPSTAT). With this selection, the active (conducting) phases of complementary power switches in a power inverter bridge leg can be positioned with respect to the compare value (e.g. signal CC6xO can be active before, whereas COUT6xO can be active after the compare value is reached). Like this, the output modulation, the trap logic and the output level selection can be programmed independently for each output signal, although two output signals are referring to the same compare channel. User’s Manual CCU6, UM_V0.5D3 18-23 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.4.3 Output Modulation and Level Selection The last block of the data path is the Output Modulation block. Here, all the modulation sources and the trap functionality are combined and control the actual level of the output pins (controlled by the modulation enable bits T1xMODENy and MCMEN in register MODCTR). The following signal sources can be combined here for each T12 output signal (see Figure 18-18 for compare channel CC60): • • • • A T12 related compare signal CC6x_O (for outputs CC6x) or COUT6x_O (for outputs COUT6x) delivered by the T12 block (state selection with dead-time) with an individual enable bit T12MODENy per output signal (y = 0, 2, 4 for outputs CC6x and y = 1, 3, 5 for outputs COUT6x) The T13 related compare signal CC63_O delivered by the T13 state selection with an individual enable bit T13MODENy per output signal (y = 0, 2, 4 for outputs CC6x and y = 1, 3, 5 for outputs COUT6x) A multi-channel output signal MCMPy (y = 0, 2, 4 for outputs CC6x and y = 1, 3, 5 for outputs COUT6x) with a common enable bit MCMEN The trap state TRPS with an individual enable bit TRPENy per output signal (y = 0, 2, 4 for outputs CC6x and y = 1, 3, 5 for outputs COUT6x) If one of the modulation input signals CC6x_O/COUT6x_O, CC63_O, or MCMPy of an output modulation block is enabled and is at passive state, the modulated is also in passive state, regardless of the state of the other signals that are enabled. Only if all enabled signals are in active state the modulated output shows an active state. If no modulation input is enabled, the output is in passive state. If the Trap State is active (TRPS = 1), then the outputs that are enabled for the trap signal (by TRPENy = 1) are set to the passive state. The output of each of the modulation control blocks is connected to a level select block that is configured by register PSLR. It offers the option to determine the actual output level of a pin, depending on the state of the output line (decoupling of active/passive state and output polarity) as specified by the Passive State Select bit PSLy. If the modulated output signal is in the passive state, the level specified directly by PSLy is output. If it is in the active state, the inverted level of PSLy is output. This allows the user to adapt the polarity of an active output signal to the connected circuitry. The PSLy bits have shadow registers to allow for updates without undesired pulses on the output lines. The bits related to CC6x and COUT6x (x = 0, 1, 2) are updated with the T12 shadow transfer signal (T12_ST). A read action returns the actually used values, whereas a write action targets the shadow bits. Providing a shadow register for the PSL value as well as for other values related to the generation of the PWM signal facilitates a concurrent update by software for all relevant parameters. Figure 18-18 shows the output modulation structure for compare channel CC60 (output signals CC60 and COUT60). A similar structure is implemented for the other two compare channels CC61 and CC62. User’s Manual CCU6, UM_V0.5D3 18-24 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Trap Handling Block TRPS TRPEN0 T13 Block CC63_O T13MODEN0 Output Modulation CC60 active passive Level Selection CC60 CC60_O T12 Block + Dead-Time PSL0 COUT60_O T12MODEN0 MCMP0 Multi-Channel Mode MCMP1 MCMEN TRPEN1 T13MODEN1 Output Modulation COUT60 active passive Level Selection COUT60 PSL1 T12MODEN1 CCU6_MCA05543 Figure 18-18 Output Modulation for Compare Channel CC60 User’s Manual CCU6, UM_V0.5D3 18-25 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.5 T12 Capture Modes Each of the three channels of the T12 Block can also be used to capture T12 time information in response to an external signal CC6xIN. In capture mode, the interrupt event CC6x_R is detected when a rising edge is detected at the input CC6xIN, whereas the interrupt event CC6x_F is detected when a falling edge is detected. There are a number of different modes for capture operation. In all modes, both of the registers of a channel are used. The selection of the capture modes is done via the T12MSEL.MSEL6x bit fields and can be selected individually for each of the channels. Table 18-3 Capture Modes Overview MSEL6x Mode Signal Active Edge CC6nSR Stored in T12 Stored in 0100B 1 CC6xIN Rising – CC6xR CC6xIN Falling – CC6xSR 0101B 2 CC6xIN Rising CC6xR CC6xSR 0110B 3 CC6xIN Falling CC6xR CC6xSR 0111B 4 CC6xIN Any CC6xR CC6xSR Figure 18-19 illustrates Capture Mode 1. When a rising edge (0-to-1 transition) is detected at the corresponding input signal CC6xIN, the current contents of Timer T12 are captured into register CC6xR. When a falling edge (1-to-0 transition) is detected at the input signal CC6xIN, the contents of Timer T12 are captured into register CC6xSR. fT12 Counter Register T12 MSEL6x CC6xIN Edge Detect fCC6 Capture Mode Selection Rising Falling Set State Bit CC6xST Register CC6xR Shadow Register CC6xSR CC6x_R CC6x_F To Interrupt Logic CCU6_MCB05522 Figure 18-19 Capture Mode 1 Block Diagram User’s Manual CCU6, UM_V0.5D3 18-26 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Capture Modes 2, 3 and 4 are shown in Figure 18-20. They differ only in the active edge causing the capture operation. In each of the three modes, when the selected edge is detected at the corresponding input signal CC6xIN, the current contents of the shadow register CC6xSR are transferred into register CC6xR, and the current Timer T12 contents are captured in register CC6xSR (simultaneous transfer). The active edge is a rising edge of CC6xIN for Capture Mode 2, a falling edge for Mode 3, and both, a rising or a falling edge for Capture Mode 4, as shown in Table 18-3. These capture modes are very useful in cases where there is little time between two consecutive edges of the input signal. fT12 Counter Register T12 MSEL6x CC6xIN Edge Detect Capture Mode Selection Shadow Register CC6xSR Set fCC6 State Bit CC6xST Register CC6xR CC6x_R CC6x_F To Interrupt Logic CCU6_MCB05523 Figure 18-20 Capture Modes 2, 3 and 4 Block Diagram User’s Manual CCU6, UM_V0.5D3 18-27 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Five further capture modes are called Multi-Input Capture Modes, as they use two different external inputs, signal CC6xIN and signal CCPOSx. fT12 Counter Register T12 MSEL6x CC6xIN Edge Detect fCC6 Capture Mode Selection Set State Bit CC6xST Register CC6xR Set CC6x_R CC6x_F CCPOSx Edge Detect Shadow Register CC6xSR To Interrupt Logic Capture Mode Selection MSEL6x CCU6_MCB05524 Figure 18-21 Multi-Input Capture Modes Block Diagram In each of these modes, the current T12 contents are captured in register CC6xR in response to a selected event at signal CC6xIN, and in register CC6xSR in response to a selected event at signal CCPOSx. The possible events can be opposite input transitions, or the same transitions, or any transition at the two inputs. The different options are detailed in Table 18-4. In each of the various capture modes, the Channel State Bit, CC6xST, is set to 1 when the selected capture trigger event at signal CC6xIN or CCPOSx has occurred. The State Bit is not cleared by hardware, but can be cleared by software. In addition, appropriate signal lines to the interrupt logic are activated, that can generate an interrupt request to the CPU. Regardless of the selected active edge, all edges detected at signal CC6xIN can lead to the activation of the appropriate interrupt request line (see also Section 18.8). User’s Manual CCU6, UM_V0.5D3 18-28 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-4 Multi-Input Capture Modes Overview MSEL6x Mode Signal Active Edge T12 Stored in 1010B 5 CC6xIN Rising CC6xR CCPOSx Falling CC6xSR CC6xIN Falling CC6xR CCPOSx Rising CC6xSR CC6xIN Rising CC6xR CCPOSx Rising CC6xSR CC6xIN Falling CC6xR CCPOSx Falling CC6xSR CC6xIN Any CC6xR CCPOSx Any CC6xSR 1011B 1100B 1101B 1110B 1111B 6 7 8 9 – User’s Manual CCU6, UM_V0.5D3 reserved (no capture or compare action) 18-29 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.6 T12 Shadow Register Transfer A special shadow transfer signal (T12_ST) can be generated to facilitate updating the period and compare values of the compare channels CC60, CC61, and CC62 synchronously to the operation of T12. Providing a shadow register for values defining one PWM period facilitates a concurrent update by software for all relevant parameters. The next PWM period can run with a new set of parameters. The generation of this signal is requested by software via bit TCTR0.STE12 (set by writing 1 to the write-only bit TCTR4.T12STR, cleared by writing 1 to the write-only bit TCTR4.T12STD). Figure 18-22 shows the shadow register structure and the shadow transfer signals, as well as on the read/write accessibility of the various registers. Read Read Read Read Period Register T12PR (T12) PSLy CC6xPS COUT6xPS Period Shadow Register T12PR (T12) PSLy Shadow CC6xPS Shadow COUT6xPS Shadow Write Write Write Write Read Compare Register CC6xR _ >1 T12_ST Other Modes (Hall, Capture, etc.) Compare Shadow Register CC6xSR Write Read CCU6_MCA05546 Figure 18-22 T12 Shadow Register Overview User’s Manual CCU6, UM_V0.5D3 18-30 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) A T12 shadow register transfer takes place (T12_ST active): • • • while timer T12 is not running (T12R = 0), or STE12 = 1 and a Period-Match is detected while counting up, or STE12 = 1 and a One-Match is detected while counting down When signal T12_ST is active, a shadow register transfer is triggered with the next cycle of the T12 clock. Bit STE12 is automatically cleared with the shadow register transfer. 18.2.7 Timer T12 Operating Mode Selection The operating mode for the T12 channels are defined by the bit fields T12MSEL.MSEL6x. Table 18-5 T12 Capture/Compare Modes Overview MSEL6x Selected Operating Mode 0000B, 1111B Capture/Compare modes switched off 0001B, 0010B, 0011B Compare mode, see Section 18.2.3 same behavior for all three codings 01XXB Double-Register Capture modes, see Section 18.2.5 1000B Hall Sensor Mode, see Section 18.6 In order to properly enable this mode, all three MSEL6x fields have to be programmed to Hall Sensor mode. 1001B Hysteresis-like compare mode, see Section 18.2.3.3 1010B 1011B, 1100B, 1101B 1110B Multi-Input Capture modes, see Section 18.2.5 The clocking and counting scheme of the timers are controlled by the timer control registers TCTR0 and TCTR2. Specific actions are triggered by write operations to register TCTR4. User’s Manual CCU6, UM_V0.5D3 18-31 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.8 T12 related Registers 18.2.8.1 T12 Counter Register Register T12 represents the counting value of timer T12. It can only be written while the timer T12 is stopped. Write actions while T12 is running are not taken into account. Register T12 can always be read by SW. In edge-aligned mode, T12 only counts up, whereas in center-aligned mode, T12 can count up and down. T12 Timer T12 Counter Register 15 14 13 12 11 10 XSFR(10H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 T12CV rwh Field Bits Type Description T12CV [15:0] rwh Timer 12 Counter Value This register represents the 16-bit counter value of Timer12. Note: While timer T12 is stopped, the internal clock divider is reset in order to ensure reproducible timings and delays. 18.2.8.2 Period Register Register T12PR contains the period value for timer T12. The period value is compared to the actual counter value of T12 and the resulting counter actions depend on the defined counting rules. This register has a shadow register and the shadow transfer is controlled by bit STE12. A read action by SW delivers the value that is currently used for the compare action, whereas the write action targets a shadow register. The shadow register structure allows a concurrent update of all T12-related values. T12PR Timer 12 Period Register 15 14 13 12 11 XSFR(12H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 T12PV rwh User’s Manual CCU6, UM_V0.5D3 18-32 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description T12PV [15:0] rwh T12 Period Value The value T12PV defines the counter value for T12 leading to a period-match. When reaching this value, the timerT12 is set to zero (edge-aligned mode) or changes its count direction to down counting (centeraligned mode). 18.2.8.3 Capture/Compare Registers In compare mode, the registers CC6xR (x = 0 - 2) are the actual compare registers for T12. The values stored in CC6xR are compared (all three channels in parallel) to the counter value of T12. In capture mode, the current value of the T12 counter register is captured by registers CC6xR if the corresponding capture event is detected. CC6xR (x = 0-2) Capture/Compare Register for Channel CC6x XSFR(18H + 2*x) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 CCV rh Field Bits Type Description CCV [15:0] rh User’s Manual CCU6, UM_V0.5D3 Capture/Compare Value In compare mode, the bit fields CCV contain the values, that are compared to the T12 counter value. In capture mode, the captured value of T12 can be read from these registers. 18-33 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.8.4 Capture/Compare Shadow Registers The registers CC6xR can only be read by SW, the modification of the value is done by a shadow register transfer from register CC6xSR. The corresponding shadow registers CC6xSR can be read and written by SW. In capture mode, the value of the T12 counter register can also be captured by registers CC6xSR if the selected capture event is detected (depending on the selected capture mode). CC6xSR (x=0-2) Capture/Compare Shadow Reg. for Channel CC6x XSFR(20H+2*x) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 CCS rwh Field Bits Type Description CCS [15:0] rwh Shadow Register for Channel x Capture/ Compare Value In compare mode, the bit fields contents of CCS are transferred to the bit fields CCV for the corresponding channel during a shadow transfer. In capture mode, the captured value of T12 can be read from these registers. Note: The shadow registers can also be written by SW in capture mode. In this case, the HW capture event wins over the SW write if both happen in the same cycle (the SW write is discarded). User’s Manual CCU6, UM_V0.5D3 18-34 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.8.5 Dead-time Control Register Register T12DTC controls the dead-time generation for the timer T12 compare channels. Each channel can be independently enabled/disabled for dead-time generation. If enabled, the transition from passive state to active state is delayed by the value defined by bit field DTM. The dead time counters are clocked with the same frequency as T12. This structure allows symmetrical dead-time generation in center-aligned and in edgealigned PWM mode. A duty cycle of 50% leads to CC6x, COUT6x switched on for: 0.5 * period - dead time. Note: The dead-time counters are not reset by bit T12RES, but by bit DTRES. T12DTC Dead-Time Control Register for Timer12 XSFR(14H) 15 0 14 13 12 DTR DTR DTR 2 1 0 r rh rh rh 11 0 r 10 9 8 7 DTE DTE DTE 2 1 0 rw rw rw Reset Value: 0000H 6 5 4 3 2 1 0 DTM rw Field Bits Type Description DTM [7:0] rw Dead-Time Bit field DTM determines the programmable delay between switching from the passive state to the active state of the selected outputs. The switching from the active state to the passive state is not delayed. DTE2, DTE1, DTE0 10, 9, 8 rw Dead Time Enable Bits Bits DTE0..DTE2 enable and disable the dead time generation for each compare channel (0, 1, 2) of timer T12. 0B Dead-Time Counter x is disabled. The corresponding outputs switch from the passive state to the active state (according to the actual compare status) without any delay. 1B Dead-Time Counter x is enabled. The corresponding outputs switch from the passive state to the active state (according to the compare status) with the delay programmed in bit field DTM. User’s Manual CCU6, UM_V0.5D3 18-35 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description DTR2, DTR1, DTR0 14, 13, 12 rh 0 [15:11] r User’s Manual CCU6, UM_V0.5D3 Dead Time Run Indication Bits Bits DTR0..DTR2 indicate the status of the dead time generation for each compare channel (0, 1, 2) of timer T12. 0B Dead-Time Counter x is currently in the passive state. 1B Dead-Time Counter x is currently in the active state. reserved; returns 0 if read; should be written with 0; 18-36 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.9 Capture/Compare Control Registers 18.2.9.1 Channel State Bits The Compare State Register CMPSTAT contains status bits monitoring the current capture and compare state and control bits defining the active/passive state of the compare channels. CMPSTAT Compare State Register 15 14 13 12 11 XSFR(28H) 10 9 8 C C C C CC CC CC T13 OUT OUT OUT OUT 62PS 61PS 60PS IM 61PS 60PS 63PS 62PS rwh rwh rwh rwh rwh rwh rwh rwh 7 0 r Reset Value: 0000H 6 5 4 3 2 1 0 CC CC CC CC CC CC CC POS POS POS 62ST 61ST 60ST 63ST 60 61 62 rh rh rh rh rh rh rh Field Bits Type Description CC60ST, CC61ST, CC62ST, CC63ST 0, 1, 2, 6 rh Capture/Compare State Bits Bits CC6xST monitor the state of the capture/ compare channels. Bits CC6xST (x = 0, 1, 2) are related to T12, bit CC63ST is related to T13. In compare mode, the timer count is less than 0B the compare value. In capture mode, the selected edge has not yet been detected since the bit has been cleared by SW the last time. 1B In compare mode, the counter value is greater than or equal to the compare value. In capture mode, the selected edge has been detected. CCPOS0, CCPOS1, CCPOS2 3, 4, 5 rh Sampled Hall Pattern Bits Bits CCPOSx (x = 0, 1, 2) are indicating the value of the input Hall pattern that has been compared to the current and expected value. The value is sampled when the event HCRDY (Hall Compare Ready) occurs. 0B The input CCPOSx has been sampled as 0. 1B The input CCPOSx has been sampled as 1. 1) User’s Manual CCU6, UM_V0.5D3 18-37 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description CC60PS, CC61PS, CC62PS, COUT60PS, COUT61PS, COUT62PS, COUT63PS 8, 10, 12, 9, 11, 13, 14 rwh Passive State Select for Compare Outputs Bits CC6xPS, COUT6xPS select the state of the corresponding compare channel, that is considered to be the passive state. During the passive state, the passive level (defined in register PSLR) is driven by the output pin. Bits CC6xPS, COUT6xPS (x = 0, 1, 2) are related to T12, bit CC63PS is related to T13. 0B The corresponding compare signal is in passive state while CC6xST is 0. 1B The corresponding compare signal is in passive state while CC6xST is 1. In capture mode, these bits are not used. T13IM3) 15 rwh T13 Inverted Modulation Bit T13IM inverts the T13 signal for the modulation of the CC6x and COUT6x (x = 0, 1, 2) signals. T13 output CC63_O is equal to CC63ST. 0B 1B T13 output CC63_O is equal to CC63ST. 0 7 r reserved; returns 0 if read; should be written with 0; 2) 1) These bits are set and cleared according to the T12, T13 switching rules 2) These bits have shadow bits and are updated in parallel to the capture/compare registers of T12, T13 respectively. A read action targets the actually used values, whereas a write action targets the shadow bits. 3) This bit has a shadow bit and is updated in parallel to the compare and period registers of T13. A read action targets the actually used values, whereas a write action targets the shadow bit. User’s Manual CCU6, UM_V0.5D3 18-38 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) The Compare Status Modification Register CMPMODIF provides software-control (independent set and clear conditions) for the channel state bits CC6xST. This feature enables the user to individually change the status of the output lines by software, for example when the corresponding compare timer is stopped. CMPMODIF Compare State Modification Register XSFR(2AH) 15 14 13 12 0 MCC 63R 0 r w r 11 10 9 8 MCC MCC MCC 62R 61R 60R w w w Reset Value: 0000H 7 6 5 4 0 MCC 63S 0 r w r 3 2 1 0 MCC MCC MCC 62S 61S 60S w w w Field Bits Type Description MCC60S, MCC61S, MCC62S, MCC63S, MCC60R, MCC61R, MCC62R, MCC63R 0, 1, 2, 7, 8, 9, 10, 14 w Capture/Compare Status Modification Bits These bits are used to bits to set (MCC6xS) or to clear (MCC6xR) the corresponding bits CC6xST by SW. This feature allows the user to individually change the status of the output lines by SW, e.g. when the corresponding compare timer is stopped. This allows a bit manipulation of CC6xST-bits by a single data write action. The following functionality of a write access to bits concerning the same capture/compare state bit is provided: [MCC6xR, MCC6xS] = 00B Bit CC6xST is not changed. 01B Bit CC6xST is set. 10B Bit CC6xST is cleared. 11B reserved 0 [5:3], 7, [13:11], 15 r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-39 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.9.2 T12 Mode Control Register Register T12MSEL contains control bits to select the capture/compare functionality of the three channels of Timer T12. T12MSEL T12 Mode Select Register 15 14 13 12 11 XSFR (46H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 D BYP HSYNC MSEL62 MSEL61 MSEL60 rw rw rw rw rw 0 Field Bits Type Description MSEL60, MSEL61, MSEL62 [3:0], [7:4], [11:8] rw Capture/Compare Mode Selection These bit fields select the operating mode of the three T12 capture/compare channels. Each channel (x = 0, 1, 2) can be programmed individually for one of these modes (except for Hall Sensor Mode). Coding see Table 18-5. HSYNC [14:12] rw Hall Synchronization Bit field HSYNC defines the source for the sampling of the Hall input pattern and the comparison to the current and the expected Hall pattern bit fields. Coding see Table 18-11. DBYP 15 Delay Bypass DBYP controls whether the source signal for the sampling of the Hall input pattern (selected by HSYNC) is delayed by the Dead-Time Counter 0. 0 The bypass is not active. Dead-Time Counter 0 is generating a delay after the source signal becomes active. 1 The bypass is active. Dead-Time Counter 0 is not used for a delay. User’s Manual CCU6, UM_V0.5D3 rw 18-40 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.2.9.3 Timer Control Registers Register TCTR0 controls the basic functionality of both timers, T12 and T13. Note: A write action to the bit fields T12CLK or T12PRE is only taken into account while the timer T12 is not running (T12R=0). A write action to the bit fields T13CLK or T13PRE is only taken into account while the timer T13 is not running (T13R=0). TCTR0 Timer Control Register 0 15 14 0 r 13 12 11 STE T13 T13R 13 PRE rh rh rw XSFR(2CH) 10 9 T13CLK 8 7 Reset Value: 0000H 6 CTM CDIR rw rw rh 5 4 3 STE T12 T12R 12 PRE rh rh rw 2 1 0 T12CLK rw Field Bits Type Description T12CLK [2:0] rw Timer T12 Input Clock Select Selects the input clock for timer T12 that is derived from the peripheral clock according to the equation fT12 = fCC6 / 2<T12CLK>. 000B fT12 = fCC6 001B fT12 = fCC6 / 2 010B fT12 = fCC6 / 4 011B fT12 = fCC6 / 8 100B fT12 = fCC6 / 16 101B fT12 = fCC6 / 32 110B fT12 = fCC6 / 64 111B fT12 = fCC6 / 128 T12PRE 3 rw Timer T12 Prescaler Bit In order to support higher clock frequencies, an additional prescaler factor of 1/256 can be enabled for the prescaler for T12. 0B The additional prescaler for T12 is disabled. 1B The additional prescaler for T12 is enabled. T12R 4 rh Timer T12 Run Bit1) T12R starts and stops timer T12. It is set/cleared by SW by setting bits T12RR or T12RS or it is cleared by HW according to the function defined by bit field T12SSC. 0B Timer T12 is stopped. 1B Timer T12 is running. User’s Manual CCU6, UM_V0.5D3 18-41 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description STE12 5 rh Timer T12 Shadow Transfer Enable Bit STE12 enables or disables the shadow transfer of the T12 period value, the compare values and passive state select bits and levels from their shadow registers to the actual registers if a T12 shadow transfer event is detected. Bit STE12 is cleared by hardware after the shadow transfer. A T12 shadow transfer event is a period-match while counting up or a one-match while counting down. 0B The shadow register transfer is disabled. The shadow register transfer is enabled. 1B CDIR 6 rh Count Direction of Timer T12 This bit is set/cleared according to the counting rules of T12. 0B T12 counts up. T12 counts down. 1B CTM 7 rw T12 Operating Mode 0B Edge-aligned Mode: T12 always counts up and continues counting from zero after reaching the period value. 1B Center-aligned Mode: T12 counts down after detecting a period-match and counts up after detecting a one-match. T13CLK [10:8] rw Timer T13 Input Clock Select Selects the input clock for timer T13 that is derived from the peripheral clock according to the equation fT13 = fCC6 / 2<T13CLK>. 000B fT13 = fCC6 001B fT13 = fCC6 / 2 010B fT13 = fCC6 / 4 011B fT13 = fCC6 / 8 100B fT13 = fCC6 / 16 101B fT13 = fCC6 / 32 110B fT13 = fCC6 / 64 111B fT13 = fCC6 / 128 User’s Manual CCU6, UM_V0.5D3 18-42 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description T13PRE 11 rw Timer T13 Prescaler Bit In order to support higher clock frequencies, an additional prescaler factor of 1/256 can be enabled for the prescaler for T13. 0B The additional prescaler for T13 is disabled. 1B The additional prescaler for T13 is enabled. T13R 12 rh Timer T13 Run Bit2) T13R starts and stops timer T13. It is set/cleared by SW by setting bits T13RR orT13RS or it is set/cleared by HW according to the function defined by bit fields T13SSC, T13TEC and T13TED. 0B Timer T13 is stopped. 1B Timer T13 is running. STE13 13 rh Timer T13 Shadow Transfer Enable Bit STE13 enables or disables the shadow transfer of the T13 period value, the compare value and passive state select bit and level from their shadow registers to the actual registers if a T13 shadow transfer event is detected. Bit STE13 is cleared by hardware after the shadow transfer. A T13 shadow transfer event is a period-match. 0B The shadow register transfer is disabled. 1B The shadow register transfer is enabled. 0 [15: 14] r reserved; returns 0 if read; should be written with 0; 1) A concurrent set/clear action on T12R (from T12SSC, T12RR or T12RS) will have no effect. The bit T12R will remain unchanged. 2) A concurrent set/cleared action on T13R (from T13SSC, T13TEC, T13RR or T13RS) will have no effect. The bit T12R will remain unchanged. User’s Manual CCU6, UM_V0.5D3 18-43 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Register TCTR2 controls the single-shot and the synchronization functionality of both timers T12 and T13. Both timers can run in single-shot mode. In this mode they stop their counting sequence automatically after one counting period with a count value of zero. The single-shot mode and the synchronization feature of T13 to T12 allow the generation of events with a programmable delay after well-defined PWM actions of T12. TCTR2 Timer Control Register 2 15 14 13 12 11 XSFR(2EH) 10 9 8 7 Reset Value: 0000H 6 5 4 3 0 T13 RSEL T12 RSEL 0 T13 TED T13 TEC r rw rw r rw rw 2 1 0 T13 T12 SSC SSC rw rw Field Bits Type Description T12SSC 0 rw Timer T12 Single Shot Control This bit controls the single shot-mode of T12. 0B The single-shot mode is disabled, no HW action on T12R. 1B The single shot mode is enabled, the bit T12R is cleared by HW if - T12 reaches its period value in edge-aligned mode - T12 reaches the value 1 while down counting in center-aligned mode. In parallel to the clear action of bit T12R, the bits CC6xST (x=0, 1, 2) are cleared. T13SSC 1 rw Timer T13 Single Shot Control This bit controls the single shot-mode of T13. 0B No HW action on T13R 1B The single-shot mode is enabled, the bit T13R is cleared by HW if T13 reaches its period value. In parallel to the clear action of bit T13R, the bit CC63ST is cleared. User’s Manual CCU6, UM_V0.5D3 18-44 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description T13TEC [4:2] rw T13 Trigger Event Control bit field T13TEC selects the trigger event to start T13 (automatic set of T13R for synchronization to T12 compare signals) according to following combinations: 000B no action 001B set T13R on a T12 compare event on channel 0 010B set T13R on a T12 compare event on channel 1 011B set T13R on a T12 compare event on channel 2 100B set T13R on any T12 compare event (ch. 0, 1, 2) 101B set T13R upon a period-match of T12 110B set T13R upon a zero-match of T12 (while counting up) 111B set T13R on any edge of inputs CCPOSx T13TED [6:5] rw Timer T13 Trigger Event Direction1) Bit field T13TED delivers additional information to control the automatic set of bit T13R in the case that the trigger action defined by T13TEC is detected. 00B reserved, no action 01B while T12 is counting up 10B while T12 is counting down 11B independent on the count direction of T12 T12RSEL [9:8] rw Timer T12 External Run Selection Bit field T12RSEL defines the event of signal T12HR that can set the run bit T12R by HW. 00B The external setting of T12R is disabled. 01B Bit T12R is set if a rising edge of signal T12HR is detected. 10B Bit T12R is set if a falling edge of signal T12HR is detected. 11B Bit T12R is set if an edge of signal T12HR is detected. User’s Manual CCU6, UM_V0.5D3 18-45 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits T13RSEL [11:10] rw Timer T13 External Run Selection Bit field T13RSEL defines the event of signal T13HR that can set the run bit T13R by HW. 00B The external setting of T13R is disabled. 01B Bit T13R is set if a rising edge of signal T13HR is detected. 10B Bit T13R is set if a falling edge of signal T13HR is detected. 11B Bit T13R is set if an edge of signal T13HR is detected. 0 7, r [15: 12] reserved; returns 0 if read; should be written with 0; 1) Type Description Example: If the timer T13 is intended to start at any compare event on T12 (T13TEC=100) the trigger event direction can be programmed to - counting up >> a T12 channel 0, 1, 2 compare match triggers T13R only while T12 is counting up - counting down >> a T12 channel 0, 1, 2 compare match triggers T13R only while T12 is counting down - independent from bit CDIR >> each T12 channel 0, 1, 2 compare match triggers T13R The timer count direction is taken from the value of bit CDIR. As a result, if T12 is running in edge-aligned mode (counting up only), T13 can only be started automatically if bit field T13TED=01 or 11. User’s Manual CCU6, UM_V0.5D3 18-46 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Register TCTR4 provides software-control (independent set and clear conditions) for the run bits T12R and T13R. Furthermore, the timers can be reset (while running) and bits STE12 and STE13 can be controlled by software. Reading these bits always returns 0. TCTR4 Timer Control Register 4 15 14 13 12 T13 T13 T13 STD STR CNT w w 11 10 9 8 7 Reset Value: 0000H 6 5 T13 T13 T13 T12 T12 T12 RES RS RR STD STR CNT 0 w XSFR(26H) r w w w w w w 4 0 r 3 2 1 0 DT T12 T12 T12 RES RES RS RR w w w w Field Bits Type Description T12RR 0 w Timer T12 Run Reset Setting this bit clears the T12R bit. 0B T12R is not influenced. 1B T12R is cleared, T12 stops counting. T12RS 1 w Timer T12 Run Set Setting this bit sets the T12R bit. T12R is not influenced. 0B 1B T12R is set, T12 starts counting. T12RES 2 w Timer T12 Reset 0B No effect on T12. The T12 counter register is cleared to zero. The 1B switching of the output signals is according to the switching rules. Setting of T12RES has no impact on bit T12R. DTRES 3 w Dead-Time Counter Reset 0B No effect on the dead-time counters. 1B The three dead-time counter channels are cleared to zero. T12CNT 5 w Timer T12 Count Event 0B No action 1B If enabled (PISELH), timer T12 counts one step. T12STR 6 w Timer T12 Shadow Transfer Request 0B No action 1B STE12 is set, enabling the shadow transfer. User’s Manual CCU6, UM_V0.5D3 18-47 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description T12STD 7 w Timer T12 Shadow Transfer Disable 0B No action 1B STE12 is cleared without triggering the shadow transfer. T13RR 8 w Timer T13 Run Reset Setting this bit clears the T13R bit. T13R is not influenced. 0B T13R is cleared, T13 stops counting. 1B T13RS 9 w Timer T13 Run Set Setting this bit sets the T13R bit. 0B T13R is not influenced. 1B T13R is set, T13 starts counting. T13RES 10 w Timer T13 Reset 0B No effect on T13. 1B The T13 counter register is cleared to zero. The switching of the output signals is according to the switching rules. Setting of T13RES has no impact on bit T13R. T13CNT 13 w Timer T13 Count Event 0B No action 1B If enabled (PISELH), timer T13 counts one step. T13STR 14 w Timer T13 Shadow Transfer Request 0B No action 1B STE13 is set, enabling the shadow transfer. T13STD 15 w Timer T13 Shadow Transfer Disable 0B No action 1B STE13 is cleared without triggering the shadow transfer. 0 4, r [12:11] reserved; returns 0 if read; should be written with 0; Note: A simultaneous write of a 1 to bits that set and clear the same bit will trigger no action. The corresponding bit will remain unchanged. User’s Manual CCU6, UM_V0.5D3 18-48 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3 Operating Timer T13 Timer T13 is implemented similarly to Timer T12, but only with one channel in compare mode. A 16-bit up-counter is connected to a channel register via a comparator, that generates a signal when the counter contents match the contents of the channel register. A variety of control functions facilitate the adaptation of the T13 structure to different application needs. In addition, T13 can be started synchronously to timer T12 events. This section provides information about: • • • • • • T13 overview (see Section 18.3.1) Counting scheme (see Section 18.3.2) Compare mode (see Section 18.3.3) Compare output path (see Section 18.3.4) Shadow register transfer (see Section 18.3.5) T13 counter register description (see Section 18.3.6) State Bit Timer T13 Logic Capture/Compare Channel CC63 CC63ST To Output Modulation Input and Control/Status Logic T13HR Synchronization to T12 CCU6_MCA05526 Figure 18-23 Overview Diagram of the Timer T13 Block 18.3.1 T13 Overview Figure 18-24 shows a detailed block diagram of Timer T13. The functions of the timer T12 block are controlled by bits in registers TCTR0, TCTR2, and PISELH. Timer T13 receives its input clock, fT13, from the module clock fCC6 via a programmable prescaler and an optional 1/256 divider or from an input signal T13HR. T13 can only count up (similar to the Edge-Aligned mode of T12). Via a comparator, the timer T13 Counter Register T13 is connected to the Period Register T13PR. This register determines the maximum count value for T13. When T13 reaches the period value, signal T13_PM (T13 Period Match) is generated and T13 is cleared to 0000H with the next T13 clock edge. The Period Register receives a new period value from its Shadow Period Register, T13PS, that is loaded via software. The transfer of a new period value from the shadow register into T13PR is controlled via the ‘T13 Shadow Transfer’ control signal, T13_ST. The generation of this signal depends on the associated control bit STE13. Providing a shadow register for the period value as User’s Manual CCU6, UM_V0.5D3 18-49 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) well as for other values related to the generation of the PWM signal facilitates a concurrent update by software for all relevant parameters (refer to Table 18.3.5). Another signal indicates whether the counter contents are equal to 0000H (T13_ZM). A Single-Shot control bit, T13SSC, enables an automatic stop of the timer when the current counting period is finished (see Figure 18-26). T13RSEL Sync. to T12 T13RS T13RR T13R edge detection ISCNT13 T13STD T13HR T13 Control & Status STE13 edge detection T13CNT fCC6 T13STR Clock Selection n T13CLK fT13 Counter Register T13 256 T13RES = 0000 H T13PRE Read from T13PR T13SSC T13_ZM Comp. =? T13_PM Period Register T13_ST Write to T13PR Period Shadow Register CCU6_MCA05527 Figure 18-24 T13 Counter Logic and Period Comparators The start or stop of T13 is controlled by the Run bit, T13R. This control bit can be set by software via the associated set/clear bits T13RS or T13RR in register TCTR4, or it is cleared by hardware according to preselected conditions (single-shot mode). The timer T13 run bit T13R must not be set while the applied T13 period value is zero. Bit T13R can be set automatically if an event of T12 is detected to synchronize T13 timings to T12 events, e.g. to generate a programmable delay via T13 after an edge of a T12 compare channel before triggering an AD conversion (T13 can trigger ADC User’s Manual CCU6, UM_V0.5D3 18-50 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) conversions). Timer T13 can be cleared to 0000H via control bit T13RES. Setting this write-only bit only clears the timer contents, but has no further effects, e.g., it does not stop the timer. The generation of the T13 shadow transfer control signal, T13_ST, is enabled via bit STE13. This bit can be set or cleared by software indirectly through its associated set/ reset control bits T13STR and T13STD. Two bit fields, T13TEC and T13TED, control the synchronization of T13 to Timer T12 events. T13TEC selects the trigger event, while T13TED determines for which T12 count direction the trigger should be active. While Timer T13 is running, write accesses to the count register T13 are not taken into account. If T13 is stopped, write actions to register T13 are immediately taken into account. Note: The T13 Period Register and its associated shadow register are located at the same physical address. A write access to this address targets the Shadow Register, while a read access reads from the actual period register. User’s Manual CCU6, UM_V0.5D3 18-51 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.2 T13 Counting Scheme This section describes the clocking and the counting capabilities of T13. 18.3.2.1 Clock Selection In Timer Mode (PISELH. ISCNT13 = 00B), the input clock fT13 of Timer T13 is derived from the internal module clock fCC6 through a programmable prescaler and an optional 1/256 divider. The resulting prescaler factors are listed in Table 18-6. The prescaler of T13 is cleared while T13 is not running (TCTR0.T13R = 0) to ensure reproducible timings and delays. Table 18-6 Timer T13 Input Clock Options T13CLK Resulting Input Clock fT13 Prescaler Off (T13PRE = 0) Resulting Input Clock fT13 Prescaler On (T13PRE = 1) 000B fCC6 fCC6 / 2 fCC6 / 4 fCC6 / 8 fCC6 / 16 fCC6 / 32 fCC6 / 64 fCC6 / 128 fCC6 / 256 fCC6 / 512 fCC6 / 1024 fCC6 / 2048 fCC6 / 4096 fCC6 / 8192 fCC6 / 16384 fCC6 / 32768 001B 010B 011B 100B 101B 110B 111B In Counter Mode, timer T13 counts one step: • • • If a 1 is written to TCTR4.T13CNT and PISELH.ISCNT13 = 01B If a rising edge of input signal T13HR is detected and PISELH.ISCNT13 = 10B If a falling edge of input signal T13HR is detected and PISELH.ISCNT13 = 11B User’s Manual CCU6, UM_V0.5D3 18-52 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.2.2 T13 Counting The period of the timer is determined by the value in the period Register T13PR according to the following formula: T13PER = <Period-Value> + 1; in T13 clocks (fT13) (18.3) Timer T13 can only count up, comparable to the Edge-Aligned mode of T12. This leads to very simple ‘counting rule’ for the T13 counter: • The counter is cleared with the next T13 clock edge if a Period-Match is detected. The counting direction is always upwards. The behavior of T13 is illustrated in Figure 18-25. fT13 Period Value T13 Count Period Zero Match Match Zero CC63 Value n+1 Value n+2 Shadow Transfer CCU6_MCT05528 Figure 18-25 T13 Counting Sequence User’s Manual CCU6, UM_V0.5D3 18-53 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.2.3 Single-Shot Mode In Single-Shot Mode, the timer run bit T13R is cleared by hardware. If bit T13SSC = 1, the timer T13 will stop when the current timer period is finished. fT13 Period Value Compare Value T13 Count 0 T13R CC63ST T13SSC CCU6_MCT05529 Figure 18-26 Single-Shot Operation of Timer T13 User’s Manual CCU6, UM_V0.5D3 18-54 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.2.4 Synchronization to T12 Timer T13 can be synchronized to a T12 event. Bit fields T13TEC and T13TED select the event that is used to start Timer T13. The selected event sets bit T13R via HW, and T13 starts counting. Combined with the Single-Shot mode, this feature can be used to generate a programmable delay after a T12 event. Figure 18-27 shows an example for the synchronization of T13 to a T12 event. Here, the selected event is a compare-match (compare value = 2) while counting up. The clocks of T12 and T13 can be different (other prescaler factor); the figure shows an example in which T13 is clocked with half the frequency of T12. fT12 Compare-Match Period Value T12 Count Compare Value Zero T13R T13 Count fT13 CCU6_MCT05530 Figure 18-27 Synchronization of T13 to T12 Compare Match Bit field T13TEC selects the trigger event to start T13 (automatic set of T13R for synchronization to T12 compare signals) according to the combinations shown in Table 18-7. Bit field T13TED additionally specifies for which count direction of T12 the selected trigger event should be regarded (see Table 18-8). User’s Manual CCU6, UM_V0.5D3 18-55 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-7 T12 Trigger Event Selection T13TEC Selected Event 000B None 001B T12 Compare Event on Channel 0 (CM_CC60) 010B T12 Compare Event on Channel 1 (CM_CC61) 011B T12 Compare Event on Channel 2 (CM_CC62) 100B T12 Compare Event on any Channel (0, 1, 2) 101B T12 Period-Match (T12_PM) 110B T12 Zero-Match while counting up (T12_ZM and CDIR = 0) 111B Any Hall State Change Table 18-8 T12 Trigger Event Additional Specifier T13TED Selected Event Specifier 00B Reserved, no action 01B Selected event is active while T12 is counting up (CDIR = 0) 10B Selected event is active while T12 is counting down (CDIR = 1) 11B Selected event is active independently of the count direction of T12 User’s Manual CCU6, UM_V0.5D3 18-56 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.3 T13 Compare Mode Associated with Timer T13 is one compare channel, that can perform compare operations with regard to the contents of the T13 counter. Figure 18-23 gives an overview on the T13 channel in Compare Mode. The channel is connected to the T13 counter register via an equal-to comparator, generating a compare match signal when the contents of the counter matches the contents of the compare register. The channel consists of the comparator and a double register structure - the actual compare register, CC63R, feeding the comparator, and an associated shadow register, CC63SR, that is preloaded by software and transferred into the compare register when signal T13 shadow transfer, T13_ST, gets active. Providing a shadow register for the compare value as well as for other values related to the generation of the PWM signal facilitates a concurrent update by software for all relevant parameters. Associated with the channel is a State Bit, CMPSTAT.CC63ST, holding the status of the compare operation. Figure 18-28 gives an overview on the logic for the State Bit. fT13 Counter Register T13 T13_ZM Comp. =? CM_63 Compare Register CC63R Switching Rule Logic State Bit CC63ST T13R MCC63S/R To State Selection and Output Modulation To Interrupt Control T13_ST Compare Shadow Register CC63SR CCU6_MCB05532 Figure 18-28 T13 State Bit Block Diagram A compare interrupt event CM_63 is signaled when a compare match is detected. The actual setting of a State Bit has no influence on the interrupt generation. The inputs to the switching rule logic for the CC63ST bit are the timer run bit (T13R), the timer zero-match signal (T13_ZM), and the actual individual compare-match signal CM_63. In addition, the state bit can be set or cleared by software via bits MCC63S and User’s Manual CCU6, UM_V0.5D3 18-57 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) MCC63R in register CMPMODIF. A modification of the State Bit CC63ST by hardware is only possible while Timer T13 is running (T13R = 1). If this is the case, the following switching rules apply for setting and resetting the State Bit in Compare Mode: State Bit CC63ST is set to 1 • • with the next T13 clock (fT13) after a compare-match (T13 is always counting up) (i.e., when the counter is incremented above the compare value); with the next T13 clock (fT13) after a zero-match AND a parallel compare-match. State Bit CC63ST is cleared to 0 • with the next T13 clock (fT13) after a zero-match AND NO parallel compare-match. fT13 Compare-Match Compare-Match Period Value Compare Value T13 Count Zero CC63ST CCU6_MCT05533 Figure 18-29 T13 Compare Operation User’s Manual CCU6, UM_V0.5D3 18-58 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.4 Compare Mode Output Path Figure 18-30 gives an overview on the signal path from the channel State Bit CC63ST to its output pin COUT63. As illustrated, a user can determine the desired output behavior in relation to the current state of CC63ST. Please refer to Section 18.2.4.3 for detailed information on the output modulation for T12 signals. T13 State Selection Output Modulation Output Level Selection T13IM CC63ST CC63_O T13 State Bit CC63ST T12 Output Modulation T13 Output Modulation CC63ST Level Select COUT63 COUT63_O COUT63PS ECT13O PSL63 CCU6_MCA05534 Figure 18-30 Channel 63 Output Path The output line COUT63_O can generate a T13 PWM at the output pin COUT63. The signal CC63_O can be used to modulate the T12-related output signals with a T13 PWM. In order to decouple COUT63 from the internal modulation, the compare state leading to an active signal can be selected independently by bits T13IM and COUT63PS. The last block of the data path is the Output Modulation block. Here, the modulation source T13 and the trap functionality are combined and control the actual level of the output pin COUT63 (see Figure 18-31): • • The T13 related compare signal COUT63_O delivered by the T13 state selection with the enable bit MODCTR.ECT13O The trap state TRPS with an individual enable bit TRPCTR.TRPEN13 If the modulation input signal COUT63_O is enabled (ECT13O = 1) and is at passive state, the modulated is also in passive state. If the modulation input is not enabled, the output is in passive state. If the Trap State is active (TRPS = 1), then the output enabled for the trap signal (by TRPEN13 = 1) is set to the passive state. The output of the modulation control block is connected to a level select block. It offers the option to determine the actual output level of a pin, depending on the state of the output line (decoupling of active/passive state and output polarity) as specified by the Passive State Select bit PSLR.PSL63. If the modulated output signal is in the passive User’s Manual CCU6, UM_V0.5D3 18-59 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) state, the level specified directly by PSL63 is output. If it is in the active state, the inverted level of PSL63 is output. This allows the user to adapt the polarity of an active output signal to the connected circuitry. The PSL63 bit has a shadow register to allow for updates with the T13 shadow transfer signal (T13_ST) without undesired pulses on the output lines. A read action returns the actually used value, whereas a write action targets the shadow bit. Providing a shadow register for the PSL value as well as for other values related to the generation of the PWM signal facilitates a concurrent update by software for all relevant parameters. Trap Handling Block TRPS TRPEN13 T13 Block COUT63_O Output Modulation COUT63 active passive ECT13O Level Selection COUT63 PSL63 CCU6_MCA05545 Figure 18-31 T13 Output Modulation 18.3.5 T13 Shadow Register Transfer A special shadow transfer signal (T13_ST) can be generated to facilitate updating the period and compare values of the compare channel CC63 synchronously to the operation of T13. Providing a shadow register for values defining one PWM period facilitates a concurrent update by software for all relevant parameters. The next PWM period can run with a new set of parameters. The generation of this signal is requested by software via bit TCTR0.STE13 (set by writing 1 to the write-only bit TCTR4.T13STR, cleared by writing 1 to the write-only bit TCTR4.T13STD). When signal T13_ST is active, a shadow register transfer is triggered with the next cycle of the T13 clock. Bit STE13 is automatically cleared with the shadow register transfer. A T13 shadow register transfer takes place (T13_ST active): • • while timer T13 is not running (T13R = 0), or STE13 = 1 and a Period-Match is detected while T13R = 1 User’s Manual CCU6, UM_V0.5D3 18-60 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Read Read Read Read Period Register T13PR PSL63 CC63PS T13IM Period Shadow Register T13PR PSL63 Shadow CC63PS Shadow T13IM Shadow Write Write Write Write Read Compare Register CC63R T13_ST Compare Shadow Register CC63SR Write Read CCU6_MCA05547 Figure 18-32 T13 Shadow Register Overview User’s Manual CCU6, UM_V0.5D3 18-61 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.6 T13 related Registers 18.3.6.1 T13 Counter Register The generation of the patterns for a single channel pulse width modulation (PWM) is based on timer T13. The registers related to timer T13 can be concurrently updated (with well-defined conditions) in order to ensure consistency of the PWM signal. T13 can be synchronized to several timer T12 events. Timer T13 only supports compare mode on its compare channel CC63. Register T13 represents the counting value of timer T13. It can only be written while the timer T13 is stopped. Write actions while T13 is running are not taken into account. Register T13 can always be read by SW. Timer T13 only supports edge-aligned mode (counting up). T13 Timer T13 Counter Register 15 14 13 12 11 10 XSFR(30H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 T13CV rwh Field Bits Type Description T13CV [15:0] rwh Timer 13 Counter Value This register represents the 16-bit counter value of Timer13. Note: While timer T13 is stopped, the internal clock divider is reset in order to ensure reproducible timings and delays. User’s Manual CCU6, UM_V0.5D3 18-62 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.6.2 Period Register Register T13PR contains the period value for timer T13. The period value is compared to the actual counter value of T13 and the resulting counter actions depend on the defined counting rules. This register has a shadow register and the shadow transfer is controlled by bit STE13. A read action by SW delivers the value currently used for the compare action, whereas the write action targets a shadow register. The shadow register structure allows a concurrent update of all T13-related values. T13PR Timer 13 Period Register 15 14 13 12 11 XSFR(32H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 T13PV rwh Field Bits Type Description T13PV [15:0] rwh User’s Manual CCU6, UM_V0.5D3 T13 Period Value The value T13PV defines the counter value for T13 leading to a period-match. When reaching this value, the timer T13 is set to zero. 18-63 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.3.6.3 Compare Register Registers CC63R is the actual compare register for T13. The values stored in CC63R is compared to the counter value of T13. The State Bit CC63ST is located in register CMPSTAT. CC63R Compare Register for T13 15 14 13 12 11 XSFR(34H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 CCV rh Field Bits Type Description CCV [15:0] rh Channel CC63 Compare Value The bit field CCV contains the value, that is compared to the T13 counter value. 18.3.6.4 Compare Shadow Register The register CC63R can only be read by SW, the modification of the value is done by a shadow register transfer from register CC63SR. The corresponding shadow register CC63SR can be read and written by SW. CC63SR Compare Shadow Register for T13 XSFR(36H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 CCS rw Field Bits Type Description CCS [15:0] rw User’s Manual CCU6, UM_V0.5D3 Shadow Register for Channel CC63 Compare Value The bit field contents of CCS is transferred to the bit field CCV during a shadow transfer. 18-64 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.4 Trap Handling The trap functionality permits the PWM outputs to react on the state of the input signal CTRAP. This functionality can be used to switch off the power devices if the trap input becomes active (e.g. to perform an emergency stop). The trap handling and the effect on the output modulation are controlled by the bits in the trap control register TRPCTR. The trap flags TRPF and TRPS are located in register IS and can be set/cleared by SW by writing to registers ISS and ISR. Figure 18-33 gives an overview on the trap function. The Trap Flag TRPF monitors the trap input and initiates the entry into the Trap State. The Trap State Bit TRPS determines the effect on the outputs and controls the exit of the Trap State. When a trap condition is detected (CTRAP = 0) and the input is enabled (TRPPEN = 1), both, the Trap Flag TRPF and the Trap State Bit TRPS, are set to 1 (trap state active). The output of the Trap State Bit TRPS leads to the Output Modulation Blocks (for T12 and for T13) and can there deactivate the outputs (set them to the passive state). Individual enable control bits for each of the six T12-related outputs and the T13-related output facilitate a flexible adaptation to the application needs. There are a number of different ways to exit the Trap State. This offers SW the option to select the best operation for the application. Exiting the Trap State can be done either immediately when the trap condition is removed (CTRAP = 1 or TRPPEN = 0), or under software control, or synchronously to the PWM generated by either Timer T12 or Timer T13. RTRPF Trap Entry / Exit Control CTRAP TRPPEN STRPF TRM2 TRPF T12_ZM T13_ZM Trap Exit Synchronization TRPS To T12, T13 Output Modulation TRM0/1 CCU6_MCB05541 Figure 18-33 Trap Logic Block Diagram User’s Manual CCU6, UM_V0.5D3 18-65 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Clearing of TRPF is controlled by the mode control bit TRPM2. If TRPM2 = 0, TRPF is automatically cleared by HW when CTRAP returns to the inactive level (CTRAP = 1) or if the trap input is disabled (TRPPEN = 0). When TRPM2 = 1, TRPF must be reset by SW after CTRAP has become inactive. Clearing of TRPS is controlled by the mode control bits TRPM1 and TRPM0 (located in the Trap Control Register TRPCTR). A reset of TRPS terminates the Trap State and returns to normal operation. There are three options selected by TRPM1 and TRPM0. One is that the Trap State is left immediately when the Trap Flag TRPF is cleared, without any synchronization to timers T12 or T13. The other two options facilitate the synchronization of the termination of the Trap State to the count periods of either Timer T12 or Timer T13. Figure 18-34 gives an overview on the associated operation. T12 Count T13 Count TRPF CTRAP active TRPS Sync. to T12 TRPS Sync. to T13 TRPS No sync. CCU6_MCT05542 Figure 18-34 Trap State Synchronization (with TRM2 = 0) User’s Manual CCU6, UM_V0.5D3 18-66 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.5 Multi-Channel Mode The Multi-Channel mode offers the possibility to modulate all six T12-related output signals with one instruction. The bits in bit field MCMOUT.MCMP are used to specify the outputs that may become active. If Multi-Channel mode is enabled (bit MODCTR.MCMEN = 1), only those outputs may become active, that have a 1 at the corresponding bit position in bit field MCMP. This bit field has its own shadow bit field MCMOUTS.MCMPS, that can be written by software. The transfer of the new value in MCMPS to the bit field MCMP can be triggered by, and synchronized to, T12 or T13 events. This structure permits the software to write the new value, that is then taken into account by the hardware at a well-defined moment and synchronized to a PWM signal. This avoids unintended pulses due to unsynchronized modulation sources. SWSYN SWSEL STRMCM CM_CHE T13_PM T12_PM Switching Synchronization T12_ZM Switching Event Detection T13_ZM Shadow Register MCMOUTS.MCMPS Shadow Transfer MCM_ST clear Register MCMOUT.MCMP T12_OM CM_61 IDLE set R clear T12 Output Modulation CDIR STR To Interrupt Control set Outputs CC6x/COUT6x CCU6_MCB05535 Figure 18-35 Multi-Channel Mode Block Diagram Figure 18-35 shows the functional blocks for the Multi-Channel operation, controlled by bit fields in register MCMCTR. The event that triggers the update of bit field MCMP is chosen by SWSEL. In order to synchronize the update of MCMP to a PWM generated by T12 or T13, bit field SWSYN allows the selection of the synchronization event leading to the transfer from MCMPS to MCMP. Due to this structure, an update takes place with a new PWM period. A reminder flag R is set when the selected switching event occurs (the event is not necessarily synchronous to the modulating PWM), and is cleared when the transfer takes place. This flag can be monitored by software to check for the status of this logic block. User’s Manual CCU6, UM_V0.5D3 18-67 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) If the shadow transfer from MCMPS to MCMP takes place, bit IS.STR becomes set and an interrupt can be generated. If it is explicitly desired, the update takes place immediately with the occurrence of the selected event when the direct synchronization mode is selected. The update can also be requested by software by writing to bit field MCMPS with the shadow transfer request bit STRMCM = 1. The option to trigger an update by SW is possible for all settings of SWSEL. By using the direct mode and bit STRMCM = 1, the update takes place completely under software control. The event selection and synchronization options are summarized in Table 18-9 and Table 18-10. Table 18-9 Multi-Channel Mode Switching Event Selection SWSEL Selected Event (see register MCMCTR) 000B No automatic event detection 001B Correct Hall Event (CM_CHE) detected at input signals CCPOSx without additional delay 010B T13 Period-Match (T13_PM) 011B T12 One-Match while counting down (T12_OM and CDIR = 1) 100B T12 Compare Channel 1 Event while counting up (CM_61 and CDIR = 0) to support the phase delay function by CC61 for block commutation mode. 101B T12 Period-Match while counting up (T12_PM and CDIR = 0) 110B, 111B Reserved, no action Table 18-10 Multi-Channel Mode Switching Synchronization SWSYN Synchronization Event (see register MCMCTR) 00B Direct Mode: the trigger event directly causes the shadow transfer 01B T13 Zero-Match (T13_ZM), the MCM shadow transfer is synchronized to a T13 PWM 10B T12 Zero-Match (T12_ZM), the MCM shadow transfer is synchronized to a T12 PWM 11B Reserved, no action User’s Manual CCU6, UM_V0.5D3 18-68 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.6 Hall Sensor Mode For Brushless DC-Motors in block commutation mode, the Multi-Channel Mode has been introduced to provide efficient means for switching pattern generation. These patterns need to be output in relation to the angular position of the motor. For this, usually Hall sensors or Back-EMF sensing are used to determine the angular rotor position. The CCU6 provides three inputs, CCPOS0, CCPOS1, and CCPOS2, that can be used as inputs for the Hall sensors or the Back-EMF detection signals. There is a strong correlation between the motor position and the output modulation pattern. When a certain position of the motor has been reached, indicated by the sampled Hall sensor inputs (the Hall pattern), the next, pre-determined Multi-Channel Modulation pattern has to be output. Because of different machine types, the modulation pattern for driving the motor can vary. Therefore, it is wishful to have a wide flexibility in defining the correlation between the Hall pattern and the corresponding Modulation pattern. Furthermore, a hardware mechanism significantly reduces the CPU for blockcommutation. The CCU6 offers the flexibility by having a register containing the currently assumed Hall pattern (CURH), the next expected Hall pattern (EXPH) and the corresponding output pattern (MCMP). A new Modulation pattern is output when the sampled Hall inputs match the expected ones (EXPH). To detect the next rotation phase (segment for block commutation), the CCU6 monitors the Hall inputs for changes. When the next expected Hall pattern is detected, the next corresponding Modulation pattern is output. To increase for noise immunity (to a certain extend), the CCU6 offers the possibility to introduce a sampling delay for the Hall inputs. Some changes of the Hall inputs are not leading to the expected Hall pattern, because they are only short spikes due to noise. The Hall pattern compare logic compares the Hall inputs to the next expected pattern and also to the currently assumed pattern to filter out spikes. For the Hall and Modulation output patterns, a double-register structure is implemented. While register MCMOUT holds the actually used values, its shadow register MCMOUTS can be loaded by software from a pre-defined table, holding the appropriate Hall and Modulation patterns for the given motor control. A transfer from the shadow register into register MCMOUT can take place when a correct Hall pattern change is detected. Software can then load the next values into register MCMOUTS. It is also possible by software to force a transfer from MCMOUTS into MCMOUT. Note: The Hall input signals CCPOSx and the CURH and EXPH bit fields are arranged in the following order: CCPOS0 corresponds to CURH.0 (LSB) and EXPH.0 (LSB) CCPOS1 corresponds to CURH.1 and EXPH.1 CCPOS2 corresponds to CURH.2 (MSB) and EXPH.2 (MSB) User’s Manual CCU6, UM_V0.5D3 18-69 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.6.1 Hall Pattern Evaluation The Hall sensor inputs CCPOSx can be permanently monitored via an edge detection block (with the module clock fCC6). In order to suppress spikes on the Hall inputs due to noise in rugged inverter environment, two optional noise filtering methods are supported by the Hall logic (both methods can be combined). • • Noise filtering with delay: For this function, the mode control bit fields MSEL6x for all T12 compare channels must be programmed to 1000B and DBYP = 0. The selected event triggers DeadTime Counter 0 to generate a programmable delay (defined by bit field DTM). When the delay has elapsed, the evaluation signal HCRDY becomes activated. Output modulation with T12 PWM signals is not possible in this mode. Noise filtering by synchronization to PWM: The Hall inputs are not permanently monitored by the edge detection block, but samples are taken only at defined points in time during a PWM period. This can be used to sample the Hall inputs when the switching noise (due to PWM) does not disturb the Hall input signals. CCPOS 0..2 If neither the delay function of Dead-Time Counter 0 is not used for the Hall pattern evaluation nor the Hall mode for Brushless DC-Drive control is enabled, the timer T12 block is available for PWM generation and output modulation. Hall Compare Logic Hall Inputs HCRDY Hall Pattern Evaluation Edge Detect fCC6 Dead-Time Counter 0 CM_63 T13_PM T12_PM Event Selection Delay Bypass CDIR T12_OM CM_61 HSYNC DBYP CCU6_MCB05553 Figure 18-36 Hall Pattern Evaluation If the evaluation signal HCRDY (Hall Compare Ready, see Figure 18-37) becomes activated, the Hall inputs are sampled and the Hall compare logic starts the evaluation of the Hall inputs. User’s Manual CCU6, UM_V0.5D3 18-70 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Figure 18-36 illustrates the events for Hall pattern evaluation and the noise filter logic, Table 18-11 summarizes the selectable trigger input signals. Table 18-11 Hall Sensor Mode Trigger Event Selection HSYNC Selected Event (see register T12MSEL) 000B Any edge at any of the inputs CCPOSx, independent from any PWM signal (permanent check). 001B A T13 Compare-Match (CM_63). 010B A T13 Period-Match (T13_PM). 011B Hall sampling triggered by HW sources is switched off. 100B A T12 Period-Match while counting up (T12_PM and CDIR = 0). 101B A T12 One-Match while counting down (T12_OM and CDIR = 1). 110B A T12 Compare-Match of compare channel CC61 while counting up (CM_61 and CDIR = 0). 111B A T12 Compare-Match of compare channel CC61 while counting down (CM_61 and CDIR = 1). User’s Manual CCU6, UM_V0.5D3 18-71 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.6.2 Hall Pattern Compare Logic Figure 18-37 gives an overview on the double-register structure and the pattern compare logic. Software writes the next modulation pattern (MCMPS) and the corresponding current (CURHS) and expected (EXPHS) Hall patterns into the shadow register MCMOUTS. Register MCMOUT holds the actually used values CURH and EXPH. The modulation pattern MCMP is provided to the T12 Output Modulation block. The current (CURH) and expected (EXPH) Hall patterns are compared to the sampled Hall sensor inputs (visible in register CMPSTAT). Sampling of the inputs and the evaluation of the comparator outputs is triggered by the evaluation signal HCRDY (Hall Compare Ready), that is detailed in the next section. Multi-Channel Mode Logic SW Write SW Write CURHS EXPHS HP_ST CURH Hall Pattern Evaluation SW Write MCMPS MCM_ST EXPH HCRDY MCMP clear T12 Output Modulation Sample CCPOS0..2 Hall Inputs CM_CHE Pattern Compare CM_WHE IDLE Hall Compare Logic CCU6_MCA05536 Figure 18-37 Hall Pattern Compare Logic • • • If the sampled Hall pattern matches the value programmed in CURH, the detected transition was a spike (no Hall event) and no further actions are necessary. If the sampled Hall pattern matches the value programmed in EXPH, the detected transition was the expected event (correct Hall event CM_CHE) and the MCMP value has to change. If the sampled Hall pattern matches neither CURH nor EXPH, the transition was due to a major error (wrong Hall event CM_CWE) and can lead to an emergency shut down (IDLE). User’s Manual CCU6, UM_V0.5D3 18-72 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) At every correct Hall event (CM_CHE), the next Hall patterns are transferred from the shadow register MCMOUTS into MCMOUT (Hall pattern shadow transfer HP_ST), and a new Hall pattern with its corresponding output pattern can be loaded (e.g. from a predefined table in memory) by software into MCMOUTS. For the Modulation patterns, signal MCM_ST is used to trigger the transfer. Loading this shadow register can also be done by writing MCMOUTS.STRHP = 1 (for EXPH and CURH) or MCMOUTS.STRMCMP = 1 (for MCMP). 18.6.3 Hall Mode Flags Depending on the Hall pattern compare operation, a number of flags are set in order to indicate the status of the module and to trigger further actions and interrupt requests. Flag IS.CHE (Correct Hall Event) is set by signal CM_CHE when the sampled Hall pattern matches the expected one (EXPH). This flag can also be set by SW by setting bit ISS.SCHE = 1. If enabled by bit IEN.ENCHE = 1, the set signal for CHE can also generate an interrupt request to the CPU. Bit field INP.INPCHE defines which service request output becomes activated in case of an interrupt request.To clear flag CHE, SW needs to write ISR.RCHE = 1. Flag IS.WHE indicates a Wrong Hall Event. Its handling for flag setting and resetting as well as interrupt request generation are similar to the mechanism for flag CHE. The implementation of flag STR is done in the same way as for CHE and WHE. This flag is set by HW by the shadow transfer signal MCM_ST (see also Figure 18-35). Please note that for flags CHE, WHE, and STR, the interrupt request generation is triggered by the set signal for the flag. That means, a request can be generated even if the flag is already set. There is no need to clear the flag in order to enable further interrupt requests. The implementation for the IDLE flag is different. It is set by HW through signal CM_WHE if enabled by bit ENIDLE. Software can also set the flag via bit SIDLE. As long as bit IDLE is set, the modulation pattern field MCMP is cleared to force the outputs to the passive state. Flag IDLE must be cleared by software by writing RIDLE = 1 in order to return to normal operation. To fully restart from IDLE mode, the transfer requests for the bit fields in register MCMOUTS to register MCMOUT have to be initiated by software via bits STRMCM and STRHP in register MCMOUTS. In this way, the release from IDLE mode is under software control, but can be performed synchronously to the PWM signal. User’s Manual CCU6, UM_V0.5D3 18-73 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Clear RCHE SCHE CHE INPCHE To SR0 Set _ >1 To SR1 To SR2 CM_CHE To SR3 ENCHE Hall Compare Logic CM_WHE Clear RWHE SWHE WHE INPERR To SR0 Set _ >1 To SR1 To SR2 To SR3 ENWHE ENIDLE SIDLE _ >1 Set IDLE Clear MCMP Clear RIDLE CCU6_MCA05540 Figure 18-38 Hall Mode Flags User’s Manual CCU6, UM_V0.5D3 18-74 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.6.4 Hall Mode for Brushless DC-Motor Control The CCU6 provides a mode for the Timer T12 Block especially targeted for convenient control of block commutation patterns for Brushless DC-Motors. This mode is selected by setting all T12MSEL.MSEL6x bit fields of the three T12 Channels to 1000B. In this mode, illustrated in Figure 18-39, channel CC60 is placed in capture mode to measure the time elapsed between the last two correct Hall events, channel CC61 in compare mode to provide a programmable phase delay between the Hall event and the application of a new PWM output pattern, and channel CC62 also in compare mode as first time-out criterion. A second time-out criterion can be built by the T12 period match event. fT12 Counter Register T12 Clear Hall Compare Logic CM_CHE CM_61 Capture Register CC60R Comp. =? Comp. =? Compare Register CC61R Compare Register CC62R Compare Shadow Register CC61SR Compare Shadow Register CC62SR CM_62 CCU6_MCA05538 Figure 18-39 T12 Block in Hall Sensor Mode The signal CM_CHE from the Hall compare logic is used to transfer the new compare values from the shadow registers CC6xSR into the actual compare registers CC6xR, performs the shadow transfer for the T12 period register, to capture the current T12 contents into register CC60R, and to clear T12. Note: In this mode, the shadow transfer signal T12_ST is not generated. Not all shadow bits, such as the PSLy bits, will be transferred to their main registers. To program the main registers, SW needs to write to these registers while Timer T12 is stopped. In this case, a SW write actualizes both registers. User’s Manual CCU6, UM_V0.5D3 18-75 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) CC62 Compare for Time-Out Hall Event captures and resets T12 CC62 Comp. T12 Count CC61 Compare for Phase Delay CC61 Comp. 0000 H CCPOS0 1 1 1 0 0 CCPOS1 0 0 1 1 1 CCPOS2 1 0 0 0 1 CURH = 101 = 001 = 011 = 010 = 110 EXPH = 001 = 011 = 010 = 110 = 100 0 0 MCMP Phase Delay CC6x COUT6y CCU6_MCT05539 Figure 18-40 Brushless DC-Motor Control Example (all MSEL6x = 1000B) After the detection of an expected Hall pattern (CM_CHE active), the T12 count value is captured into channel CC60 (representing the actual rotor speed by measuring the elapsed time between the last two correct Hall events), and T12 is reset. When the timer reaches the compare value in channel CC61, the next multi-channel state is switched by triggering the shadow transfer of bit field MCMP (if enabled in bit field SWEN). This trigger event can be combined with the synchronization of the next multi-channel state to the PWM source (to avoid spikes on the output lines, see Section 18.5). This compare function of channel CC61 can be used as a phase delay from the position sensor input signals to the switching of the output signals, that is necessary if a sensorless back-EMF technique or Hall sensors are used. The compare value in channel CC62 can be used as a time-out trigger (interrupt), indicating that the actual motor speed is far below the desired destination value. An abnormal load change can be detected with this feature and PWM generation can be disabled. User’s Manual CCU6, UM_V0.5D3 18-76 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.7 Modulation Control Registers 18.7.1 Modulation Control This register contains bits enabling the modulation of the corresponding output signal by PWM pattern generated by the timers T12 and T13. Furthermore, the multi-channel mode can be enabled as additional modulation source for the output signals. MODCTR Modulation Control Register 15 14 ECT 13O 0 rw r 13 12 11 10 XSFR(40H) 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 T13MODEN MCM EN 0 T12MODEN rw rw r rw 0 Field Bits Type Description T12MODEN [5:0] rw T12 Modulation Enable These bits enable the modulation of the corresponding output signal by a PWM pattern generated by timer T12. T12MODEN0 = MODCTR.0 for output CC60 T12MODEN1 = MODCTR.1 for output COUT60 T12MODEN2 = MODCTR.2 for output CC61 T12MODEN3 = MODCTR.3 for output COUT61 T12MODEN4 = MODCTR.4 for output CC62 T12MODEN5 = MODCTR.5 for output COUT62 0B The modulation of the corresponding output signal by a T12 PWM pattern is disabled. 1B The modulation of the corresponding output signal by a T12 PWM pattern is enabled. MCMEN 7 rw Multi-Channel Mode Enable 0B The modulation of the corresponding output signal by a multi-channel pattern according to bit field MCMOUT is disabled. 1B The modulation of the corresponding output signal by a multi-channel pattern according to bit field MCMOUT is enabled. User’s Manual CCU6, UM_V0.5D3 18-77 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description T13MODEN [13:8] rw T13 Modulation Enable These bits enable the modulation of the corresponding output signal by the PWM pattern CC63_O generated by timer T13. T13MODEN0 = MODCTR.8 for output CC60 T13MODEN1 = MODCTR.9 for output COUT60 T13MODEN2 = MODCTR.10 for output CC61 T13MODEN3 = MODCTR.11 for output COUT61 T13MODEN4 = MODCTR.12 for output CC62 T13MODEN5 = MODCTR.13 for output COUT62 The modulation of the corresponding output 0B signal by a T13 PWM pattern is disabled. 1B The modulation of the corresponding output signal by a T13 PWM pattern is enabled. ECT13O 15 rw Enable Compare Timer T13 Output The output COUT63 is in the passive state. 0B 1B The output COUT63 is enabled for the PWM signal generated by T13. 0 6, 14 r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-78 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.7.2 Trap Control Register The register TRPCTR controls the trap functionality. It contains independent enable bits for each output signal and control bits to select the behavior in case of a trap condition. The trap condition is a low level on the CTRAP input pin, that is monitored (inverted level) by bit IS.TRPF. While TRPF=1 (trap input active), the trap state bit IS.TRPS is set to 1. TRPCTR Trap Control Register 15 14 13 12 XSFR(42H) 11 TRP TRP EN PEN 13 rw rw 10 9 8 7 6 5 TRPEN 0 rw r Field Bits Type Description TRPM1, TRPM0 1, 0 rw User’s Manual CCU6, UM_V0.5D3 Reset Value: 0000H 4 3 2 1 0 TRP TRP TRP M2 M1 M0 rw rw rw Trap Mode Control Bits 1, 0 These two bits define the behavior of the selected outputs when leaving the trap state after the trap condition has become inactive again. A synchronization to the timer driving the PWM pattern avoids unintended pulses when leaving the trap state. The combination [TRPM1, TRPM0] leads to: 00B The trap state is left (return to normal operation) after TRPF has become 0 again when a zero-match of T12 (while counting up) is detected (synchronization to T12). 01B The trap state is left (return to normal operation) after TRPF has become 0 again when a zero-match of T13 is detected (synchronization to T13). 10B reserved 11B The trap state is left (return to normal operation) immediately after TRPF has become 0 again without any synchronization to T12 or T13. 18-79 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description TRPM2 2 rw Trap Mode Control Bit 2 This bit defines how the trap flag TRPF can be cleared after the trap input condition (CTRAP = 0 and TRPPEN = 1) is no longer valid (either by CTRAP = 1 or by TRPPEN = 0). 0B Automatic Mode: Bit TRPF is cleared by HW if the trap input condition is no longer valid. 1B Manual Mode: Bit TRPF stays 0 after the trap input condition is no longer valid. It has to be cleared by SW by writing ISR.RTRPF = 1. TRPEN [13:8] rw Trap Enable Control Setting a bit enables the trap functionality for the following corresponding output signals: TRPEN0 = TRPCTR.8 for output CC60 TRPEN1 = TRPCTR.9 for output COUT60 TRPEN2 = TRPCTR.10 for output CC61 TRPEN3 = TRPCTR.11 for output COUT61 TRPEN4 = TRPCTR.12 for output CC62 TRPEN5 = TRPCTR.13 for output COUT62 0B The trap functionality of the corresponding output signal is disabled. The output state is independent from bit IS.TRPS. 1B The trap functionality of the corresponding output signal is enabled. The output state is set to the passive while IS.TRPS=1. TRPEN13 14 rw Trap Enable Control for Timer T13 0B The trap functionality for output COUT63 is disabled. The output state is independent from bit IS.TRPS. 1B The trap functionality for output COUT63 is enabled. The output state is set to the passive while IS.TRPS=1. User’s Manual CCU6, UM_V0.5D3 18-80 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description TRPPEN 15 rw Trap Pin Enable This bit enables the input (pin) function for the trap generation. An interrupt can only be generated if a falling edge is detected at pin CTRAP while TRPPEN = 1. 0B The CCU6 trap functionality based on the input CTRAP is disabled. A CCU6 trap can only be generated by SW by setting bit TRPF. 1B The CCU6 trap functionality based on the input CTRAP is enabled. A CCU6 trap can be generated by SW by setting bit TRPF or by CTRAP=0. 0 [7:3] r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-81 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.7.3 Passive State Level Register Register PSLR defines the passive state level of the PWM outputs of the module. The passive state level is the value that is driven during the passive state of the output. During the active state, the corresponding output pin drives the active state level, that is the inverted passive state level. The passive state level permits to adapt the driven output levels to the driver polarity (inverted, not inverted) of the connected power stage. The bits in this register have shadow bit fields to permit a concurrent update of all PWMrelated parameters (bit field PSL is updated with T12_ST, whereas PSL63 is updated with T13_ST). The actually used values can be read (attribute “rh”), whereas the shadow bits can only be written (attribute “w”). PSLR Passive State Level Register 15 14 13 12 11 10 XSFR(44H) 9 8 Reset Value: 0000H 7 6 5 4 3 2 0 PSL 63 0 PSL r rwh r rwh 1 Field Bits Type Description PSL [5:0] rwh Compare Outputs Passive State Level These bits define the passive level driven by the module outputs during the passive state. PSL0 = PSLR.0 for output CC60 PSL1 = PSLR.1 for output COUT60 PSL2 = PSLR.2 for output CC61 PSL3 = PSLR.3 for output COUT61 PSL4 = PSLR.4 for output CC62 PSL5 = PSLR.5 for output COUT62 0B The passive level is 0. 1B The passive level is 1. PSL63 7 rwh Passive State Level of Output COUT63 This bit defines the passive level driven by the module output COUT63 during the passive state. The passive level is 0. 0B 1B The passive level is 1. 0 6, [15:8] r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-82 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.7.4 Multi-Channel Mode Registers Register MCMCTR contains control bits for the multi-channel functionality. MCMCTR Multi-Channel Mode Control Register XSFR(4EH) 15 14 13 12 11 10 9 8 7 4 3 0 SWSYN 0 SWSEL r rw r rw Field Bits Type Description SWSEL [2:0] rw User’s Manual CCU6, UM_V0.5D3 Reset Value: 0000H 6 5 2 1 0 Switching Selection Bit field SWSEL selects one of the following trigger request sources (next multi-channel event) for the shadow transfer MCM_ST from MCMPS to MCMP. The trigger request is stored in the reminder flag R until the shadow transfer is done and flag R is cleared automatically with the shadow transfer. The shadow transfer takes place synchronously with an event selected in bit field SWSYN. 000B No trigger request will be generated 001B Correct Hall pattern detected (CM_CHE) 010B T13 period-match detected (while counting up) 011B T12 one-match (while counting down) 100B T12 channel 1 compare-match detected (phase delay function) 101B T12 period match detected (while counting up) else reserved, no trigger request will be generated 18-83 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description SWSYN [5:4] rw Switching Synchronization Bit field SWSYN defines the synchronization mechanism of the shadow transfer event MCM_ST if it has been requested before (flag R set by an event selected by SWSEL) and if MCMEN = 1. This feature permits the synchronization of the outputs to the PWM source, that is used for modulation (T12 or T13). 00B Direct; the trigger event immediately leads to the shadow transfer 01B T13 zero-match triggers the shadow transfer 10B a T12 zero-match (while counting up) triggers the shadow transfer 11B reserved; no action 0 3, [15:6] r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-84 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Register MCMOUTS contains bits used as pattern input for the multi-channel mode and the Hall mode. This register is a shadow register (that can be read and written) for register MCMOUT, indicating the currently active signals. MCMOUTS Multi-Channel Mode Output Shadow Register XSFR(4AH) 15 14 13 12 STR HP 0 CURHS w r rw 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 EXPHS STR MCM 0 MCMPS rw w r rw 0 Field Bits Type Description MCMPS [5:0] rw Multi-Channel PWM Pattern Shadow Bit field MCMPS is the shadow bit field for bit field MCMP. The multi-channel shadow transfer is triggered by MCM_ST according to the transfer conditions defined by register MCMCTR. STRMCM 7 w Shadow Transfer Request for MCMPS Writing STRMCM = 1 leads to an immediate activation of MCM_ST to update bit field MCMP by the value of MCMPS. When read, this bit always delivers 0. 0B No action. 1B Bit field MCMP is updated. EXPHS [10:8] rw Expected Hall Pattern Shadow Bit field EXPHS is the shadow bit field for bit field EXPH. The shadow transfer takes place when a correct Hall event is detected (CM_CHE). CURHS [13:11] rw Current Hall Pattern Shadow Bit field CURHS is the shadow bit field for bit field CURH. The shadow transfer takes place when a correct Hall event is detected (CM_CHE). User’s Manual CCU6, UM_V0.5D3 18-85 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description STRHP 15 w Shadow Transfer Request for the Hall Pattern Writing STRHP = 1 leads to an immediate activation of HP_ST to update bit fields EXPH and CURH by EXPHS and CURHS. When read, this bit always delivers 0. No action. 0B 1B Bit fields EXPH and CURH are updated. 0 6, 14 r reserved; returns 0 if read; should be written with 0; MCMOUT Multi-Channel Mode Output Register XSFR(4CH) 15 14 13 12 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 0 CURH EXPH 0 R MCMP r rh rh r rh rh Field Bits Type Description MCMP [5:0] rh User’s Manual CCU6, UM_V0.5D3 1 0 Multi-Channel PWM Pattern Bit field MCMP defines the output pattern for the multi-channel mode. If this mode is enabled by MODCTR.MCMEN = 1, the output state of all T12 related PWM outputs can be modified. This bit field is 0 while IS.IDLE = 1. MCMP0 = MCMOUT.0 for output CC60 MCMP1 = MCMOUT.1 for output COUT60 MCMP2 = MCMOUT.2 for output CC61 MCMP3 = MCMOUT.3 for output COUT61 MCMP4 = MCMOUT.4 for output CC62 MCMP5 = MCMOUT.5 for output COUT62 0B The output is set to the passive state. A PWM generated by T12 or T13 are not taken into account. 1B The output can be in the active state, depending on the enabled PWM modulation signals generated by T12, T13 and the trap state. 18-86 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description R 6 rh Reminder Flag This flag indicates that the shadow transfer from MCMPS to MCMP has been requested by the selected trigger source. It is cleared when the shadow transfer takes place or while MCMEN=0. A shadow transfer MCM_ST is not requested. 0B 1B A shadow transfer MCM_ST is requested, but has not yet been executed, because the selected synchronization condition has not yet occurred. EXPH [10:8] rh Expected Hall Pattern Bit field EXPH is updated by a shadow transfer HP_ST from bit field EXPHS. If HCRDY = 1, EXPH is compared to the sampled CCPOSx inputs in order to detect the occurrence of the next desired (=expected) hall pattern or a wrong pattern. If the sampled hall pattern at the hall input pins is equal to bit field EXPH, a correct Hall event has been detected (CM_CHE). CURH [13:11] rh Current Hall Pattern Bit field CURH is updated by a shadow transfer HP_ST from bit field CURHS. If HCRDY = 1, CURH is compared to the sampled CCPOSx inputs in order to detect a spike. If the sampled Hall pattern at the Hall input pins is equal to bit field CURH, no Hall event has been detected. If the sampled Hall input pattern is neither equal to CURH nor equal to EXPH, the Hall event was not the desired one and may be due to a fatal error (e.g. blocked rotor, etc.). In this case, a wrong Hall event has been detected (CM_WHE). 0 7, r [15:14] reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-87 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.8 Interrupt Handling This section describes the interrupt handling of the CCU6 module. 18.8.1 Interrupt Structure The HW interrupt event or the SW setting of the corresponding interrupt set bit (in register ISS) sets the event indication flags (in register IS) and can trigger the interrupt generation. The interrupt pulse is generated independently from the interrupt status flag in register IS (it is not necessary to clear the related status bit to be able to generate another interrupt). The interrupt flag can be cleared by SW by writing to the corresponding bit in register ISR. If enabled by the related interrupt enable bit in register IEN, an interrupt pulse can be generated on one of the four service request outputs (SR0 to SR3) of the module. If more than one interrupt source is connected to the same interrupt node pointer (in register INP), the requests are logically OR-combined to one common service request output (see Figure 18-41). SW Requests Clear Interrupt Clear Interrupt Status Set Interrupt Enable Interrupt Node Pointer Set Interrupt To SR0 _ >1 To SR1 To SR2 To SR3 HW Interrupt Event CCU6_MCA05549 Figure 18-41 General Interrupt Structure The available interrupt events in the CCU6 are shown in Figure 18-42. User’s Manual CCU6, UM_V0.5D3 18-88 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) T12_PM T12 Counter T12_OM CDIR T12 Capture Compare Channels CC6x T13 Counter T13 Compare Channel CC63 SR0 Interrupt Request Reg. CC6x_0IC SR1 Interrupt Request Reg. CC6x_1IC SR2 Interrupt Request Reg. CC6x_2IC SR3 Interrupt Request Reg. CC6x_3IC CC6x_R CC6x_F T13_PM CM_63 Interrupt Control Logic Interrupt Set Register ISS Interrupt Status Register IS Multi-Channel Mode Logic STR Interrupt Reset Register ISR CM_CHE Hall Compare Logic CM_WHE Interrupt Enable Register IEN TRPF Trap Handling Node Pointer Register INP TRPS CCU6_MCA05548 Figure 18-42 Interrupt Sources and Events User’s Manual CCU6, UM_V0.5D3 18-89 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.8.2 Interrupt Registers 18.8.2.1 Interrupt Status Register Register IS contains the individual interrupt request bits. This register can only be read, write actions have no impact on the contents of this register. The SW can set or clear the bits individually by writing to the registers ISS (to set the bits) or to register ISR (to clear the bits). The interrupt generation is independent from the value of the bits in register IS, e.g. the interrupt will be generated (if enabled) even if the corresponding bit is already set. The trigger for an interrupt generation is the detection of a set condition (by HW or SW) for the corresponding bit in register IS. In compare mode (and hall mode), the timer-related interrupts are only generated while the timer is running (T1xR=1). In capture mode, the capture interrupts are also generated while the timer T12 is stopped. Note: Not all bits in register IS can generate an interrupt. Other status bits have been added, that have a similar structure for their set and clear actions. It is recommended that SW checks the interrupt bits bit-wisely (instead of common OR over the bits). IS Interrupt Status Register 15 14 13 12 STR IDLE WHE CHE rh rh rh 11 XSFR(50H) 10 9 8 7 6 5 4 3 2 1 0 TRP TRP T13 T13 T12 T12 ICC ICC ICC ICC ICC ICC S F PM CM PM OM 62F 62R 61F 61R 60F 60R rh rh rh rh rh rh Field Bits Type Description ICC60R, ICC61R, ICC62R 0, 2, 4 rh User’s Manual CCU6, UM_V0.5D3 Reset Value: 0000H rh rh rh rh rh rh rh Capture, Compare-Match Rising Edge Flag This bit indicates that event CC6x_R has been detected. This event occurs in compare mode when a compare-match is detected while T12 is counting up (CM_6x and CDIR = 0) and in capture mode when a rising edge is detected at the related input CC6xIN. 0B The event has not yet been detected. 1B The event has been detected. 18-90 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description ICC60F, ICC61F, ICC62F 1, 3, 5 rh Capture, Compare-Match Falling Edge Flag This bit indicates that event CC6x_F has been detected. This event occurs in compare mode when a compare-match is detected while T12 is counting down (CM_6x and CDIR = 1) and in capture mode when a falling edge is detected at the related input CC6xIN. 0B The event has not yet been detected. The event has been detected. 1B T12OM 6 rh Timer T12 One-Match Flag This bit indicates that a timer T12 one-match while counting down (T12_OM and CDIR = 1) has been detected. 0B The event has not yet been detected. 1B The event has been detected. T12PM 7 rh Timer T12 Period-Match Flag This bit indicates that a timer T12 period-match while counting up (T12_PM and CDIR = 0) has been detected. The event has not yet been detected. 0B 1B The event has been detected. T13CM 8 rh Timer T13 Compare-Match Flag This bit indicates that a timer T13 compare-match (CM_63) has been detected. 0B The event has not yet been detected. 1B The event has been detected. T13PM 9 rh Timer T13 Period-Match Flag This bit indicates that a timer T13 period-match (T13_PM) has been detected. The event has not yet been detected. 0B 1B The event has been detected. TRPF 10 rh Trap Flag This bit indicates if a trap condition (input CTRAP = 0 or by SW) is / has been detected. If TRM2= 0, it becomes cleared automatically if CTRAP = 1 or TRPPEN = 0, whereas if TRM2 = 1, it has to be cleared by writing RTRPF = 1. 0B The trap condition has not been detected. 1B The trap condition is / has been detected. User’s Manual CCU6, UM_V0.5D3 18-91 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description TRPS 11 rh Trap State1) This bit indicates the actual trap state. It is set if TRPF = 1 and becomes cleared according to the mode selected in register TRPCTR. 0B The trap state is not active. 1B The trap state is active. CHE 12 rh Correct Hall Event This bit indicates that a correct Hall event (CM_CHE) has been detected. The event has not yet been detected. 0B 1B The event has been detected. WHE 13 rh Wrong Hall Event This bit indicates that a wrong Hall event (CM_WHE) has been detected. 0B The event has not yet been detected. 1B The event has been detected. IDLE 14 rh IDLE State If enabled by ENIDLE = 1, this bit is set together with bit WHE and it has to be cleared by SW. 0B No action. 1B Bit field MCMP is cleared, the selected outputs are set to passive state. STR 15 rh Multi-Channel Mode Shadow Transfer Request This bit indicates that a shadow transfer from MCMPS to MCMP (MCM_ST) has taken place. 0B The event has not yet been detected. 1B The event has been detected. 1) During the trap state, the selected outputs are set to the passive state. The logic level driven during the passive state is defined by the corresponding bit in register PSLR. Bits TRPS=1 and TRPF=0 can occur if the trap condition is no longer active but the selected synchronization has not yet taken place. User’s Manual CCU6, UM_V0.5D3 18-92 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.8.2.2 Interrupt Status Set Register Register ISS contains individual interrupt request set bits to generate a CCU6 interrupt request by software. Writing a 1 sets the bit(s) in register IS at the corresponding bit position(s) and can generate an interrupt event (if available and enabled). All bit positions read as 0. ISS Interrupt Status Set Register 15 14 13 12 11 10 XSFR(52H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 S S S S S S S S S S S S S S S S TRP T13 T13 T12 T12 CC CC CC CC CC CC STR IDLE WHE CHE WHC F PM CM PM OM 62F 62R 61F 61R 60F 60R w w w w w w w w w w w w w w w w w Field Bits Type Description SCC60R, SCC61R, SCC62R 0, 2, 4 w Set Capture, Compare-Match Rising Edge Flag 0B No action 1B Bit CC6xR will be set. SCC60F, SCC61F, SCC62F 1, 3, 5 w Set Capture, Compare-Match Falling Edge Flag 0B No action 1B Bit CC6xF will be set. ST12OM 6 w Set Timer T12 One-Match Flag 0B No action 1B Bit T12OM will be set. ST12PM 7 w Set Timer T12 Period-Match Flag 0B No action 1B Bit T12PM will be set. ST13CM 8 w Set Timer T13 Compare-Match Flag 0B No action 1B Bit T13CM will be set. ST13PM 9 w Set Timer T13 Period-Match Flag No action 0B 1B Bit T13PM will be set. STRPF 10 w Set Trap Flag 0B No action 1B Bits TRPF and TRPS will be set. User’s Manual CCU6, UM_V0.5D3 18-93 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description SWHC 11 w Software Hall Compare 0B No action 1B The Hall compare action is triggered. SCHE 12 w Set Correct Hall Event Flag No action 0B Bit CHE will be set. 1B SWHE 13 w Set Wrong Hall Event Flag 0B No action 1B Bit WHE will be set. SIDLE 14 w Set IDLE Flag 0B No action 1B Bit IDLE will be set. SSTR 15 w Set STR Flag 0B No action 1B Bit STR will be set. User’s Manual CCU6, UM_V0.5D3 18-94 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.8.2.3 Status Reset Register Register ISR contains bits to individually clear the interrupt event flags by software. Writing a 1 clears the bit(s) in register IS at the corresponding bit position(s). All bit positions read as 0. ISR Interrupt Status Reset Register 15 14 13 12 11 R R R R STR IDLE WHE CHE w w w w 0 r 10 XSFR(54H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 R R R R R R R R R R R TRP T13 T13 T12 T12 CC CC CC CC CC CC F PM CM PM OM 62F 62R 61F 61R 60F 60R w w w w w w w w w w w w Field Bits Type Description RCC60R, RCC61R, RCC62R 0, 2, 4 w Reset Capture, Compare-Match Rising Edge Flag 0B No action 1B Bit CC6xR will be cleared. RCC60F, RCC61F, RCC62F 1, 3, 5 w Reset Capture, Compare-Match Falling Edge Flag No action 0B 1B Bit CC6xF will be cleared. RT12OM 6 w Reset Timer T12 One-Match Flag 0B No action 1B Bit T12OM will be cleared. RT12PM 7 w Reset Timer T12 Period-Match Flag 0B No action 1B Bit T12PM IS will be cleared. RT13CM 8 w Reset Timer T13 Compare-Match Flag 0B No action 1B Bit T13CM will be cleared. RT13PM 9 w Reset Timer T13 Period-Match Flag No action 0B 1B Bit T13PM will be cleared. RTRPF 10 w Reset Trap Flag 0B No action 1B Bit TRPF will be cleared (not taken into account while input CTRAP=0 and TRPPEN=1. User’s Manual CCU6, UM_V0.5D3 18-95 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description RCHE 12 w Reset Correct Hall Event Flag 0B No action 1B Bit CHE will be cleared. RWHE 13 w Reset Wrong Hall Event Flag No action 1B Bit WHE will be cleared. 0B RIDLE 14 w Reset IDLE Flag 0B No action 1B Bit IDLE will be cleared. RSTR 15 w Reset STR Flag 0B No action 1B Bit STR will be cleared. 0 11 r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-96 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.8.2.4 Interrupt Enable Register Register IEN contains the interrupt enable bits and a control bit to enable the automatic idle function in the case of a wrong hall pattern. IEN Interrupt Enable Register 15 14 13 12 11 EN EN EN EN STR IDLE WHE CHE rw rw rw rw 0 r XSFR(58H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 EN EN EN EN EN EN EN EN EN EN EN TRP T13 T13 T12 T12 CC CC CC CC CC CC F PM CM PM OM 62F 62R 61F 61R 60F 60R rw rw rw rw rw rw rw rw rw rw rw Field Bits Type Description ENCC60R, ENCC61R, ENCC62R 0, 2, 4 rw Capture, Compare-Match Rising Edge Interrupt Enable for Channel CC6x 0B No interrupt will be generated if the set condition for bit CC6xR in register IS occurs. 1B An interrupt will be generated if the set condition for bit CC6xR in register IS occurs. The service request output that will be activated is selected by bit field INPCC6x. ENCC60F, ENCC61F, ENCC62F 1, 3, 5 rw Capture, Compare-Match Falling Edge Interrupt Enable for Channel CC6x 0B No interrupt will be generated if the set condition for bit CC6xF in register IS occurs. 1B An interrupt will be generated if the set condition for bit CC6xF in register IS occurs. The service request output that will be activated is selected by bit field INPCC6x. ENT12OM 6 rw Enable Interrupt for T12 One-Match 0B No interrupt will be generated if the set condition for bit T12OM in register IS occurs. 1B An interrupt will be generated if the set condition for bit T12OM in register IS occurs. The service request output that will be activated is selected by bit field INPT12. User’s Manual CCU6, UM_V0.5D3 18-97 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description ENT12PM 7 rw Enable Interrupt for T12 Period-Match 0B No interrupt will be generated if the set condition for bit T12PM in register IS occurs. 1B An interrupt will be generated if the set condition for bit T12PM in register IS occurs. The service request output that will be activated is selected by bit field INPT12. ENT13CM 8 rw Enable Interrupt for T13 Compare-Match 0B No interrupt will be generated if the set condition for bit T13CM in register IS occurs. An interrupt will be generated if the set 1B condition for bit T13CM in register IS occurs. The service request output that will be activated is selected by bit field INPT13. ENT13PM 9 rw Enable Interrupt for T13 Period-Match 0B No interrupt will be generated if the set condition for bit T13PM in register IS occurs. 1B An interrupt will be generated if the set condition for bit T13PM in register IS occurs. The service request output that will be activated is selected by bit field INPT13. ENTRPF 10 rw Enable Interrupt for Trap Flag 0B No interrupt will be generated if the set condition for bit TRPF in register IS occurs. 1B An interrupt will be generated if the set condition for bit TRPF in register IS occurs. The service request output that will be activated is selected by bit field INPERR. ENCHE 12 rw Enable Interrupt for Correct Hall Event 0B No interrupt will be generated if the set condition for bit CHE in register IS occurs. An interrupt will be generated if the set 1B condition for bit CHE in register IS occurs. The service request output that will be activated is selected by bit field INPCHE. User’s Manual CCU6, UM_V0.5D3 18-98 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description ENWHE 13 rw Enable Interrupt for Wrong Hall Event 0B No interrupt will be generated if the set condition for bit WHE in register IS occurs. 1B An interrupt will be generated if the set condition for bit WHE in register IS occurs. The service request output that will be activated is selected by bit field INPERR. ENIDLE 14 rw Enable Idle This bit enables the automatic entering of the idle state (bit IDLE will be set) after a wrong hall event has been detected (bit WHE is set). During the idle state, the bit field MCMP is automatically cleared. 0B The bit IDLE is not automatically set when a wrong hall event is detected. 1B The bit IDLE is automatically set when a wrong hall event is detected. ENSTR 15 rw Enable Multi-Channel Mode Shadow Transfer Interrupt No interrupt will be generated if the set 0B condition for bit STR in register IS occurs. 1B An interrupt will be generated if the set condition for bit STR in register IS occurs. The service request output that will be activated is selected by bit field INPCHE. 0 11 r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-99 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.8.2.5 Interrupt Node Pointer Register Register INP contains the interrupt node pointers allowing a flexible interrupt handling. These bit fields define which service request output will be activated if the corresponding interrupt event occurs and the interrupt generation for this event is enabled. INP Interrupt Node Pointer Register 15 14 13 12 11 10 XSFR(56H) 9 8 7 Reset Value: 3940H 6 5 4 3 2 1 0 0 INP T13 INP T12 INP ERR INP CHE INP CC62 INP CC61 INP CC60 r rw rw rw rw rw rw rw Field Bits Type Description INPCC60, INPCC61, INPCC62 [1:0], [3:2], [5:4] rw Interrupt Node Pointer for Channel CC6x Interrupts This bit field defines the service request output activated due to a set condition for bit CC6xR (if enabled by bit ENCC6xR) or for bit CC6xF (if enabled by bit ENCC6xF). 00B Service request output SR0 is selected. 01B Service request output SR1 is selected. 10B Service request output SR2 is selected. 11B Service request output SR3 is selected. INPCHE [7:6] rw Interrupt Node Pointer for the CHE Interrupt This bit field defines the service request output activated due to a set condition for bit CHE (if enabled by bit ENCHE) of for bit STR (if enabled by bit ENSTR). Coding see INPCC6x. INPERR [9:8] rw Interrupt Node Pointer for Error Interrupts This bit field defines the service request output activated due to a set condition for bit TRPF (if enabled by bit ENTRPF) or for bit WHE (if enabled by bit ENWHE). Coding see INPCC6x. User’s Manual CCU6, UM_V0.5D3 18-100 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description INPT12 [11:10] rw Interrupt Node Pointer for Timer12 Interrupts This bit field defines the service request output activated due to a set condition for bit T12OM (if enabled by bit ENT12OM) or for bit T12PM (if enabled by bit ENT12PM). Coding see INPCC6x. INPT13 [13:12] rw Interrupt Node Pointer for Timer13 Interrupt This bit field defines the service request output activated due to a set condition for bit T13CM (if enabled by bit ENT13CM) or for bit T13PM (if enabled by bit ENT13PM). Coding see INPCC6x. 0 [15:14] r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-101 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.9 General Module Operation This section provides information about the: • • • Configuration of the behavior of the different device operating modes (see mode control description in Section 18.9.1) Input selection (see Section 18.9.2) General register description (see Section 18.9.3) 18.9.1 Mode Control The mode control concept for system control tasks, such as power saving, or suspend request for debugging, allows to program the module behavior under different device operating conditions. The behavior of a CCU6 kernel can be programmed for each of the device operating modes, that are requested by the global state control part of the SCU. Therefore, a CCU6 module provides a kernel state configuration register KSCFG defining the behavior in the following device operating modes: • • • Normal operation: This operating mode is the default operating mode when neither a suspend request nor a clock-off request are pending. The module clock is not switched off and the CCU6 registers can be read or written. The kernel behavior is defined by KSCFG.NOMCFG. Suspend mode: This operating mode is requested when a suspend request (issued by a debugger) is pending in the device. The module clock is not switched off and the CCU6 registers can be read or written. The kernel behavior is defined by KSCFG.SUMCFG. Clock-off mode: This operating mode is requested for power saving purposes. The module clock is switched off automatically when all kernels of the CCU6 module reached their specified state in a stop mode. In this case, CCU6 registers can not be accessed. The kernel behavior is defined by KSCFG.COMCFG. The kernel distinguishes four different blocks (T12, T13, Hall logic, and trap logic). These blocks can be individually enabled for the request of stop mode 0 and stop mode 1 by the sensitivity bits KSCSR.SBx. If the request sensitivity is disabled, the block continues normal operation. If the request sensitivity is enabled, the block operates as specified for the selected stop mode. The complete CCU6 acknowledge is given to the GSC when all four blocks have reached their defined end condition. User’s Manual CCU6, UM_V0.5D3 18-102 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-12 CCU6 Functional Blocks Block Function Sensitivity Bit 0 Timer T12: A functional enable is delivered until the specified stop condition is reached. Then, T12 stops counting and the CC6xIN input stages are frozen. KSCSR.SB0 1 Timer T13: A functional enable is delivered until the specified stop condition is reached. Then, T13 stops counting. KSCSR.SB1 2 Hall Logic: The hall logic is stopped immediately and the CCPOSx input stages are frozen. KSCSR.SB2 3 Trap Logic: The trap logic is stopped immediately and the CTRAP input stage is frozen. KSCSR.SB3 The behavior of the CCU6 kernel can be programmed for each of the device operating modes (normal operation, suspend mode, clock-off mode). Therefore, it supports four kernel modes, as shown in Table 18-13. Table 18-13 CCU6 Kernel Behavior Kernel Mode Kernel Behavior Code run mode 0 kernel operation as specified, no impact on CCU6 operation (same behavior for run mode 0 and run mode 1) 00B run mode 1 User’s Manual CCU6, UM_V0.5D3 18-103 01B V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-13 CCU6 Kernel Behavior (cont’d) Kernel Mode Kernel Behavior Code stop mode 0 The sensitivity bits are taken into account for: 10B T12 block: Timer T12 continues normal operation (if running) until they reach the end of the PWM period and then it stops (same stop condition as in single shot mode). When the timer stops, the CC6xIN inputs are frozen. T13 block: Timer T13 continues normal operation (if running) until they reach the end of the PWM period and then it stops (same stop condition as in single shot mode). Hall logic block: The CCPOSx input values are frozen. Trap logic block: The CTRAP input value is frozen. stop mode 1 The output lines enabled for the trap condition are set to their 11B passive values (similar to a trap state). The sensitivity bits are taken into account for: T12 block: Timer T12 stops immediately and CC6xIN inputs are frozen. T13 block: Timer T13 stops. Hall logic block: The CCPOSx input values are frozen. Trap logic block: The CTRAP input value is frozen. Generally, bit field KSCFG.NOMCFG should be configured for run mode 0 as default setting for standard operation. If a CCU6 kernel should not react to a suspend request (and to continue operation as in normal mode), bit field KSCFG.SUMCFG has to be configured with the same value as KSCFG.NOMCFG. If a CCU6 kernel should show a different behavior and stop operation when a specific stop condition is reached, the code for stop mode 0 or stop mode 1 has to be written to KSCFG.SUMCFG. A similar mechanism applies for the clock-off mode with the possibility to program the desired behavior by bit field KSCFG.COMCFG. Note: The stop mode selection strongly depends on the application needs and it is very unlikely that different stop modes are required in parallel in the same application. As a result, only one stop mode type (either 0 or 1) should be used in the bit fields in register KSCFG. Do not mix stop mode 0 and stop mode 1 and avoid transitions from stop mode 0 to stop mode 1 (or vice versa) for the CCU6 module. If the module clock is disabled by KSCFG.MODEN = 0 or in clock-off mode when the stop condition is reached (in stop mode 0 or 1), the module can not be accessed by read or write operations (except register KSCFG that can always be accessed). As a consequence, it can not be configured. Please note that bit KSCFG.MODEN should only be set by SW while all configuration fields are configured for run mode 0. User’s Manual CCU6, UM_V0.5D3 18-104 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.9.2 Input Selection Each CCU6 input signal can be selected from a vector of four possible inputs by programming the port input select registers PISELL and PISELH. This permits to adapt the pin functionality of the device to the application requirements. The output pins for the module output signals are chosen in the ports. Naming convention: The input vector CC60IN[D:A] for input signal CC60IN is composed of the signals CC60INA to CC60IND. Note: All functional inputs of the CCU6 are synchronized to fCC6 before they affect the module internal logic. The resulting delay of 2/fCC6 and for asynchronous signals an additional uncertainty of 1/fCC6 have to be taken into account for precise timing calculation. An edge of an input signal can only be correctly detected if the high phase and the low phase of the input signal are both longer than 1/fCC6. User’s Manual CCU6, UM_V0.5D3 18-105 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.9.3 General Registers 18.9.3.1 Port Input Select Registers Registers PISELL and PISELH contain bit fields selecting the actual input signal for the module inputs. PISELL Port Input Select Register Low 15 14 13 12 11 10 XSFR(04H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 IST12HR ISPOS2 ISPOS1 ISPOS0 ISTRP ISCC62 ISCC61 ISCC60 rw rw rw rw rw rw rw rw Field Bits Type Description ISCC60 [1:0] rw Input Select for CC60 This bit field defines the input signal used as CC60 capture input. 00B The signal CC60INA is selected. 01B The signal CC60INB is selected. 10B The signal CC60INC is selected. 11B The signal CC60IND is selected. ISCC61 [3:2] rw Input Select for CC61 This bit field defines the input signal used as CC61 capture input. 00B The signal CC61INA is selected. 01B The signal CC61INB is selected. 10B The signal CC61INC is selected. 11B The signal CC61IND is selected. ISCC62 [5:4] rw Input Select for CC62 This bit field defines the input signal used as CC62 capture input. 00B The signal CC62INA is selected. 01B The signal CC62INB is selected. 10B The signal CC62INC is selected. 11B The signal CC62IND is selected. User’s Manual CCU6, UM_V0.5D3 18-106 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description ISTRP [7:6] rw Input Select for CTRAP This bit field defines the input signal used as CTRAP input. 00B The signal CTRAPA is selected. 01B The signal CTRAPB is selected. 10B The signal CTRAPC is selected. 11B The signal CTRAPD is selected. ISPOS0 [9:8] rw Input Select for CCPOS0 This bit field defines the input signal used as CCPOS0 input. 00B The signal CCPOS0A is selected. 01B The signal CCPOS0B is selected. 10B The signal CCPOS0C is selected. 11B The signal CCPOS0D is selected. ISPOS1 [11:10] rw Input Select for CCPOS1 This bit field defines the input signal used as CCPOS1 input. 00B The signal CCPOS1A is selected. 01B The signal CCPOS1B is selected. 10B The signal CCPOS1C is selected. 11B The signal CCPOS1D is selected. ISPOS2 [13:12] rw Input Select for CCPOS2 This bit field defines the input signal used as CCPOS2 input. 00B The signal CCPOS2A is selected. 01B The signal CCPOS2B is selected. 10B The signal CCPOS2C is selected. 11B The signal CCPOS2D is selected. IST12HR [15:14] rw Input Select for T12HR This bit field defines the input signal used as T12HR input. 00B The signal T12HRA is selected. 01B The signal T12HRB is selected. 10B The signal T12HRC is selected. 11B The signal T12HRD is selected. User’s Manual CCU6, UM_V0.5D3 18-107 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) PISELH Port Input Select Register High 15 14 13 12 11 10 XSFR(06H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 ISCNT13 ISCNT12 IST13HR r rw rw rw Field Bits Type Description IST13HR [1:0] rw Input Select for T13HR This bit field defines the input signal used as T13HR input. 00B The signal T13HRA is selected. 01B The signal T13HRB is selected. 10B The signal T13HRC is selected. 11B The signal T13HRD is selected. ISCNT12 [3:2] rw Input Select for T12 Counting Input This bit field defines the input event leading to a counting action of T12. 00B The T12 prescaler generates the counting events. Bit TCTR4.T12CNT is not taken into account. 01B Bit TCTR4.T12CNT written with 1 is a counting event. The T12 prescaler is not taken into account. 10B The timer T12 is counting each rising edge detected in the selected T12HR signal. 11B The timer T12 is counting each falling edge detected in the selected T12HR signal. User’s Manual CCU6, UM_V0.5D3 18-108 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description ISCNT13 [5:4] rw Input Select for T13 Counting Input This bit field defines the input event leading to a counting action of T13. 00B The T13 prescaler generates the counting events. Bit TCTR4.T13CNT is not taken into account. 01B Bit TCTR4.T13CNT written with 1 is a counting event. The T13 prescaler is not taken into account. 10B The timer T13 is counting each rising edge detected in the selected T13HR signal. 11B The timer T13 is counting each falling edge detected in the selected T13HR signal. 0 [15:6] r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-109 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.9.3.2 Kernel State Configuration Register The kernel state configuration register KSCFG allows the selection of the desired kernel modes for the different device operating modes. Bit fields KSCFG.NOMCFG and KSCFG.COMCFG are reset by an application reset. Bit field KSCFG.SUMCFG is reset by a debug reset. Note: The coding of the bit fields NOMCFG, SUMCFG and COMCFG is described in Table 18-13. KSCFG Kernel State Configuration Register XSFR(00H) 15 14 BP COM 0 w r 13 12 11 10 COMCFG BP SUM 0 rw w r 9 8 Reset Value: 0000H 7 6 5 4 3 2 SUMCFG BP NOM 0 NOMCFG 0 rw w r rw r 1 0 BP MOD MOD EN EN w rw Field Bits Type Description MODEN 0 rw Module Enable This bit enables the module kernel clock and the module functionality. The module is switched off immediately 0B (without respecting a stop condition). It does not react on mode control actions and the module clock is switched off. The module does not react on read accesses and ignores write accesses (except to KSCFG). 1B The module is switched on and can operate. After writing 1 to MODEN, it is recommended to read register KSCFG to avoid pipeline effects in the control block before accessing other CCU6 registers. BPMODEN 1 w Bit Protection for MODEN This bit enables the write access to the bit MODEN. It always reads 0. MODEN is not changed. 0B 1B MODEN is updated with the written value. User’s Manual CCU6, UM_V0.5D3 18-110 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Field Bits Type Description NOMCFG [5:4] rw Normal Operation Mode Configuration This bit field defines the kernel mode applied in normal operation mode. 00B Run mode 0 is selected. 01B Run mode 1 is selected. 10B Stop mode 0 is selected. 11B Stop mode 1 is selected. BPNOM 7 w Bit Protection for NOMCFG This bit enables the write access to the bit field NOMCFG. It always reads 0. 0B NOMCFG is not changed. 1B NOMCFG is updated with the written value. SUMCFG [9:8] rw Suspend Mode Configuration This bit field defines the kernel mode applied in suspend mode. Coding like NOMCFG. BPSUM 11 w Bit Protection for SUMCFG This bit enables the write access to the bit field SUMCFG. It always reads 0. 0B SUMCFG is not changed. 1B SUMCFG is updated with the written value. COMCFG [13:12] rw Clock Off Mode Configuration This bit field defines the kernel mode applied in clock-off mode. Coding like NOMCFG. BPCOM 15 w Bit Protection for COMCFG This bit enables the write access to the bit field COMCFG. It always reads 0. 0B COMCFG is not changed. 1B COMCFG is updated with the written value. 0 [3:2], 6, 10, 14 r Reserved returns 0 if read; should be written with 0; Note: The bit protection bits BPxxx allow partly modification of the configuration bits with a single write operation (without the need of a read-modify-write mechanism handled by the CPU). User’s Manual CCU6, UM_V0.5D3 18-111 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.9.3.3 Kernel State Sensitivity Control Register The kernel state control sensitivity register bits define which internal block is effected by stop modes 0 and 1. KSCSR Kernel State Control Sensitivity Register XSFR(0EH) 15 14 13 12 11 10 9 8 7 0 Reset Value: 0000H 6 5 4 3 2 1 0 SB3 SB2 SB1 SB0 r rw rw rw rw Field Bits Type Description SB0, SB1, SB2, SB3 0, 1, 2, 3 rw Sensitivity Block x This bit defines if block x of the CCU6 kernel is sensitive to stop mode 0 or stop mode 1. The functional definition of the blocks is given in Table 18-12. 0B Block x is not sensitive to stop mode 0 or stop mode 1 and behaves like in run mode 0. It continues normal operation without respecting the defined stop condition. 1B Block x is sensitive to stop mode 0 or stop mode 1. It is respecting the defined stop condition. 0 [15:4] r reserved; returns 0 if read; should be written with 0; User’s Manual CCU6, UM_V0.5D3 18-112 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10 Implementation This section describes the implementation of the CCU6 modules in the XC2300 device. • • • • • • • Address map (see Section 18.10.1) Interrupt control registers (see Section 18.10.2) Synchronous start (see Section 18.10.3) Connections of CCU60 (see Section 18.10.4.1) Connections of CCU61 (see Section 18.10.4.2) Connections of CCU62 (see Section 18.10.4.3) Connections of CCU63 (see Section 18.10.4.4) 18.10.1 Address Map The four CCU6x modules (named CCU60 to CCU63) can be accessed in the following address ranges. The exact register address is given by the relative address of the register (given in Table 18-1) plus the kernel base address (given in Table 18-14) of the module. Table 18-14 Registers Address Space Module Base Address End Address CCU60 EA00H EA7EH CCU61 EA80H EAFEH CCU62 EB00H EB7EH CCU63 EB80H EBFEH User’s Manual CCU6, UM_V0.5D3 18-113 Note V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10.2 Interrupt Control Registers The interrupt control registers are located in the SFR area. They are described in the general interrupt chapter. Table 18-15 CCU6 Interrupt Control Registers Short Name Description CCU60_0IC Interrupt Control Register for SR0 of CCU60 CCU60_1IC Interrupt Control Register for SR1 of CCU60 CCU60_2IC Interrupt Control Register for SR2 of CCU60 CCU60_3IC Interrupt Control Register for SR3 of CCU60 CCU61_0IC Interrupt Control Register for SR0 of CCU61 CCU61_1IC Interrupt Control Register for SR1 of CCU61 CCU61_2IC Interrupt Control Register for SR2 of CCU61 CCU61_3IC Interrupt Control Register for SR3 of CCU61 CCU62_0IC Interrupt Control Register for SR0 of CCU62 CCU62_1IC Interrupt Control Register for SR1 of CCU62 CCU62_2IC Interrupt Control Register for SR2 of CCU62 CCU62_3IC Interrupt Control Register for SR3 of CCU62 CCU63_0IC Interrupt Control Register for SR0 of CCU63 CCU63_1IC Interrupt Control Register for SR1 of CCU63 CCU63_2IC Interrupt Control Register for SR2 of CCU63 CCU63_3IC Interrupt Control Register for SR3 of CCU63 User’s Manual CCU6, UM_V0.5D3 18-114 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10.3 Synchronous Start Feature Synchronous start is supported by bit SYSCON.GLCCST (global capture/compare start) in the SCU module that is connected to the T12HR and T13HR inputs of all CCU6x modules. The same signal can also be connected to other capture/compare units in order to allow a synchronous start of the capture/compare timers. SCU SYSCON.GLCCST T12HR edge selection by T12RSEL T13HR T12HR edge selection by T13RSEL edge selection by T12RSEL T13HR edge selection by T13RSEL set set set set T12R T13R T12R T13R CCU60 CCU61 CCU6_sync_start Figure 18-43 Synchronization Concept User’s Manual CCU6, UM_V0.5D3 18-115 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10.4 Digital Connections The following tables show the digital connections of the CCU6x modules with other modules or pins in the XC2300 device. Each input signal can be selected among 4 possible input lines, e.g. the input vector for input signal CC60IN is composed of CC60IN[D:A]. The following sections refer to the interface signals, whereas the connections of the service request outputs SR[3:0] to the interrupt control registers of each CCU6x to the interrupt control registers is given in Section 18.10.2. The CCU6x modules are clocked with the XC2300 system clock, so fCC6 = fSYS. Note: All functional inputs of the CCU6 are synchronized to fCC6 before they can affect the module internal logic. The resulting delay of 2/fCC6 and an uncertainty of 1/fCC6 have to be taken into account for precise timing calculation. An edge of an input signal can only be correctly detected if both, the high phase and the low phase of the input signal are each longer than 1/fCC6. 18.10.4.1 Connections of CCU60 This table describes the module interconnections of CCU60. Table 18-16 CCU60 Digital Connections in XC2300 Signal from/to Module I/O to CCU60 Can be used to/as CC60INA P10.0 I CC60INB P8.0 I input signals for capture event on channel CC60 CC60INC 0 I CC60IND RTC interrupt I CC61INA P10.1 I CC61INB P8.1 I CC61INC 0 I CC61IND 0 I CC62INA P10.2 I CC62INB P8.2 I CC62INC 0 I CC62IND 0 I User’s Manual CCU6, UM_V0.5D3 input signals for capture event on channel CC61 input signals for capture event on channel CC62 18-116 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-16 CCU60 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to CCU60 Can be used to/as CTRAPA P10.6 I CTRAPB P8.6 I CTRAPC ESR2 I input signals for CTRAP, the ESRx input refers to the synchronized input signal, that can be filtered (if enabled) CTRAPD 1 I CCPOS0A P10.7 I CCPOS0B P9.7 I CCPOS0C 0 I CCPOS0D 0 I CCPOS1A P10.8 I CCPOS1B P9.6 I CCPOS1C 0 I CCPOS1D 0 I CCPOS2A P10.9 I CCPOS2B P9.5 I CCPOS2C 0 I CCPOS2D 0 I T12HRA CCU63_MCM_ST I T12HRB P5.5 I T12HRC P5.8 I T12HRD SYSCON.GLCCST I T13HRA EXTCLK (SCU) I T13HRB CCU60_T12_ZM I T13HRC P5.8 I T13HRD SYSCON.GLCCST I CC60 P10.0 P8.0 O COUT60 P10.3 P8.3 O User’s Manual CCU6, UM_V0.5D3 input signals for CCPOS0 input signals for CCPOS1 input signals for CCPOS2 input signals for T12HR input signals for T13HR compare outputs of channel CC60 18-117 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-16 CCU60 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to CCU60 Can be used to/as CC61 P10.1 P8.1 O compare outputs of channel CC61 COUT61 P10.4 P8.4 O CC62 P10.2 P8.2 O COUT62 P10.5 P8.5 O COUT63 P10.7 P10.10 P8.6 O compare output of channel CC63 T12_ZM CCU60_T13HRB O T12 zero match T13_PM ADC0_REQTR0B ADC0_REQTR1B U0C0_DX2F U0C1_DX2F ERU_OGU02 O T13 period match MCM_ST CCU61_T12HRA ERU_OGU01 O MCM shadow transfer SR[3:0] interrupt controller O interrupt output lines (service request) User’s Manual CCU6, UM_V0.5D3 compare outputs of channel CC62 18-118 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10.4.2 Connections of CCU61 This table describes the module interconnections of CCU61. Table 18-17 CCU61 Digital Connections in XC2300 Signal from/to Module I/O to CC61 Can be used to/as CC60INA P0.0 I CC60INB 0 I input signals for capture event on channel CC60 CC60INC 0 I CC60IND 0 I CC61INA P0.1 I CC61INB 0 I CC61INC 0 I CC61IND 0 I CC62INA P0.2 I CC62INB 0 I CC62INC 0 I CC62IND 0 I CTRAPA P0.6 I CTRAPB P0.7 I CTRAPC ESR2 I CTRAPD 1 I CCPOS0A 0 I CCPOS0B 0 I CCPOS0C 0 I CCPOS0D 0 I CCPOS1A 0 I CCPOS1B 0 I CCPOS1C 0 I CCPOS1D 0 I User’s Manual CCU6, UM_V0.5D3 input signals for capture event on channel CC61 input signals for capture event on channel CC62 input signals for CTRAP, the ESRx input refers to the synchronized input signal, that can be filtered (if enabled) input signals for CCPOS0 input signals for CCPOS1 18-119 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-17 CCU61 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to CC61 Can be used to/as CCPOS2A 0 I input signals for CCPOS2 CCPOS2B 0 I CCPOS2C 0 I CCPOS2D 0 I T12HRA CCU60_MCM_ST I T12HRB P1.2 I T12HRC P5.8 I T12HRD SYSCON.GLCCST I T13HRA 0 I T13HRB CCU61_T12_ZM I T13HRC P5.8 I T13HRD SYSCON.GLCCST I CC60 P0.0 O COUT60 P0.3 O CC61 P0.1 O COUT61 P0.4 O CC62 P0.2 O COUT62 P0.5 O COUT63 P0.6 O compare output of channel CC63 T12_ZM CCU61_T13HRB O T12 zero match T13_PM ADC1_REQTR0B ADC1_REQTR1B U1C0_DX2F U1C1_DX2F ERU_OGU12 O T13 period match MCM_ST CCU62_T12HRA ERU_OGU11 O MCM shadow transfer User’s Manual CCU6, UM_V0.5D3 input signals for T12HR input signals for T13HR compare outputs of channel CC60 compare outputs of channel CC61 compare outputs of channel CC62 18-120 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10.4.3 Connections of CCU62 This table describes the module interconnections of CCU62. Table 18-18 CCU62 Digital Connections in XC2300 Signal from/to Module I/O to CCU62 Can be used to/as CC60INA P1.7 I CC60INB 0 I input signals for capture event on channel CC60 CC60INC 0 I CC60IND 0 I CC61INA P1.6 I CC61INB 0 I CC61INC 0 I CC61IND 0 I CC62INA P1.2 I CC62INB 0 I CC62INC 0 I CC62IND 0 I CTRAPA P7.1 I CTRAPB P1.0 I CTRAPC ESR2 I CTRAPD 1 I CCPOS0A P7.2 I CCPOS0B 0 I CCPOS0C 0 I CCPOS0D 0 I CCPOS1A P7.3 I CCPOS1B 0 I CCPOS1C 0 I CCPOS1D 0 I User’s Manual CCU6, UM_V0.5D3 input signals for capture event on channel CC61 input signals for capture event on channel CC62 input signals for CTRAP, the ESRx input refers to the synchronized input signal, which can be filtered (if enabled) input signals for CCPOS0 input signals for CCPOS1 18-121 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-18 CCU62 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to CCU62 Can be used to/as CCPOS2A P7.4 I input signals for CCPOS2 CCPOS2B 0 I CCPOS2C 0 I CCPOS2D 0 I T12HRA CCU61_MCM_ST I T12HRB P1.3 I T12HRC P5.8 I T12HRD SYSCON.GLCCST I T13HRA CAN_INT_O15 I T13HRB CCU62_T12_ZM I T13HRC P5.8 I T13HRD SYSCON.GLCCST I CC60 P1.7 O COUT60 P1.5 O CC61 P1.6 O COUT61 P1.4 O CC62 P1.2 O COUT62 P1.1 O COUT63 P1.3 O compare output of channel CC63 T12_ZM CCU62_T13HRB O T12 zero match T13_PM ADC0_REQTR2B U2C0_DX2F U2C1_DX2F ERU_OGU22 O T13 period match MCM_ST CCU63_T12HRA ERU_OGU21 O MCM shadow transfer User’s Manual CCU6, UM_V0.5D3 input signals for T12HR input signals for T13HR compare outputs of channel CC60 compare outputs of channel CC61 compare outputs of channel CC62 18-122 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) 18.10.4.4 Connections of CCU63 This table describes the module interconnections of CCU63. Table 18-19 CCU63 Digital Connections in XC2300 Signal from/to Module I/O to CCU63 Can be used to/as CC60INA P9.0 I CC60INB P2.0 I input signals for capture event on channel CC60 CC60INC 0 I CC60IND 0 I CC61INA P9.1 I CC61INB P2.1 I CC61INC 0 I CC61IND 0 I CC62INA P9.2 I CC62INB P2.2 I CC62INC 0 I CC62IND 0 I CTRAPA P9.6 I CTRAPB P9.7 I CTRAPC ESR2 I CTRAPD 1 I CCPOS0A P11.0 I CCPOS0B 0 I CCPOS0C 0 I CCPOS0D 0 I CCPOS1A P11.1 I CCPOS1B 0 I CCPOS1C 0 I CCPOS1D 0 I User’s Manual CCU6, UM_V0.5D3 input signals for capture event on channel CC61 input signals for capture event on channel CC62 input signals for CTRAP, the ESRx input refers to the synchronized input signal, which can be filtered (if enabled) input signals for CCPOS0 input signals for CCPOS1 18-123 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Capture/Compare Unit 6 (CCU6) Table 18-19 CCU63 Digital Connections in XC2300 (cont’d) Signal from/to Module I/O to CCU63 Can be used to/as CCPOS2A P11.2 I input signals for CCPOS2 CCPOS2B 0 I CCPOS2C 0 I CCPOS2D 0 I T12HRA CCU62_MCM_ST I T12HRB P5.4 I T12HRC P5.8 I T12HRD SYSCON.GLCCST I T13HRA CAN_INT_O15 I T13HRB CCU63_T12_ZM I T13HRC P5.8 I T13HRD SYSCON.GLCCST I CC60 P9.0 P2.0 O COUT60 P9.3 O CC61 P9.1 P2.1 O COUT61 P9.4 O CC62 P9.2 P2.2 O COUT62 P9.5 P9.6 O COUT63 P9.6 P2.3 O compare output of channel CC63 T12_ZM CCU63_T13HRB O T12 zero match T13_PM ADC1_REQTR2B ERU_OGU32 O T13 period match MCM_ST CCU60_T12HRA ERU_OGU31 O MCM shadow transfer User’s Manual CCU6, UM_V0.5D3 input signals for T12HR input signals for T13HR compare outputs of channel CC60 compare outputs of channel CC61 compare outputs of channel CC62 18-124 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19 Universal Serial Interface Channel The Universal Serial Interface Channel module (USIC) is a flexible interface module covering several serial communication protocols. A USIC module contains two independent communication channels named UxC0 and UxC1, with x being the number of the USIC module (e.g. channel y of USIC module x is referenced as UxCy). The user can program during run-time which protocol will be handled by each communication channel and which pins are used. This chapter is structured as follows: • • • • • • • Introduction (see Page 19-1) Operating the USIC (see Page 19-13) ASC protocol for UART and LIN (see Page 19-111) SSC protocol (see Page 19-131) IIC protocol (see Page 19-160) IIS protocol (see Page 19-184) Module implementation in XC2300 (see Page 19-204) 19.1 Introduction This section gives an overview about the feature set of the USIC and introduces the USIC structure. It describes the: • • • • • • • Feature set overview (see Page 19-2) Channel structure (see Page 19-5) Input stages (see Page 19-6) Output signals (see Page 19-7) Baud rate generator (see Page 19-8) Channel events and interrupts (see Page 19-9) Data shifting and handling (see Page 19-9) User’s Manual USIC, V1.0 19-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.1.1 Feature Set Overview Each USIC channel can be individually configured to match the application needs, e.g. the protocol can be selected or changed during run time without the need for a reset. The following protocols are supported: • • • • • UART (ASC, asynchronous serial channel) – Module capability: receiver/transmitter with max. baud rate fSYS/4 – Application target baud rate range: 1.2 kBaud to 3.5 MBaud – Number of data bits per data frame: 1 to 63 – MSB or LSB first LIN Support by hardware (low-cost network, baud rate up to 20 kBaud) – Data transfers based on ASC protocol – Baud rate detection possible by built-in capture event of baud rate generator – Checksum generation under software control for higher flexibility SSC/SPI (synchronous serial channel with or without slave select lines) – Module capability: slave mode with max. baud rate fSYS/2 – Module capability: master mode with max. baud rate fSYS/2 – Application target baud rate range: 2 kBaud to 10 MBaud – Number of data bits per data frame 1 to 63, more with explicit stop condition – MSB or LSB first IIC (Inter-IC Bus) – Application baud rate 100 kBaud to 400 kBaud – 7-bit and 10-bit addressing supported – Full master and slave device capability IIS (infotainment audio bus) – Module capability: receiver with max. baud rate fSYS – Module capability: transmitter with max. baud rate fSYS/2 – Application target baud rate range: up to 26 MBaud In addition to the flexible choice of the communication protocol, the USIC structure has been designed to reduce the system load (CPU load) allowing efficient data handling. The following aspects have been considered: • • Data buffer capability The standard buffer capability includes a double word buffer for receive data and a single word buffer for transmit data. This allows longer CPU reaction times (e.g. interrupt latency). Additional FIFO buffer capability In addition to the standard buffer capability, the received data and the data to be transmitted can be buffered in a FIFO buffer structure. The size of the receive and the transmit FIFO buffer can be programmed independently. Depending on the application needs, a total buffer capability of 64 data words can be assigned to the receive and transmit FIFO buffers of a USIC module (the two channels of the USIC module share the 64 data word buffer). User’s Manual USIC, V1.0 19-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • • • • • • • In addition to the FIFO buffer, a bypass mechanism allows the introduction of highpriority data without flushing the FIFO buffer. Transmit control information For each data word to be transmitted, a 5-bit transmit control information has been added to automatically control some transmission parameters, such as word length, frame length, or the slave select control for the SPI protocol. The transmit control information is generated automatically by analyzing the address where the user software has written the data word to be transmitted (32 input locations = 25 = 5 bit transmit control information). This feature allows individual handling of each data word, e.g. the transmit control information associated to the data words stored in a transmit FIFO can automatically modify the slave select outputs to select different communication targets (slave devices) without CPU load. Alternatively, it can be used to control the frame length. Flexible frame length control The number of bits to be transferred within a data frame is independent of the data word length and can be handled in two different ways. The first option allows automatic generation of frames up to 63 bits with a known length. The second option supports longer frames (even unlimited length) or frames with a dynamically controlled length. Interrupt capability The events of each USIC channel can be individually routed to one of 4 service request outputs SR[3:0], depending on the application needs. Furthermore, specific start and end of frame indications are supported in addition to protocol-specific events. Flexible interface routing Each USIC channel offers the choice between several possible input and output pins connections for the communications signals. This allows a flexible assignment of USIC signals to pins that can be changed without resetting the device. Input conditioning Each input signal is handled by a programmable input conditioning stage with programmable filtering and synchronization capability. Baud rate generation Each USIC channel contains an own baud rate generator. The baud rate generation can be based either on the internal module clock or on an external frequency input. This structure allows data transfers with a frequency that can not be generated internally, e.g. to synchronize several communication partners. Transfer trigger capability In master mode, data transfers can be triggered by events generated outside the USIC module, e.g. at an input pin or a timer unit (transmit data validation). This feature allows time base related data transmission. Debugger support The USIC offers specific addresses to read out received data without interaction with User’s Manual USIC, V1.0 19-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel the FIFO buffer mechanism. This feature allows debugger accesses without the risk of a corrupted receive data sequence. To reach a desired baud rate, two criteria have to be respected, the module capability and the application environment. The module capability is defined with respect to the module’s input clock frequency, being the base for the module operation. Although the module’s capability being much higher (depending on the module clock and the number of module clock cycles needed to represent a data bit), the reachable baud rate is generally limited by the application environment. In most cases, the application environment limits the maximum reachable baud rate due to driver delays, signal propagation times, or due to EMI reasons. Note: Depending on the selected additional functions (such as digital filters, input synchronization stages, sample point adjustment, data structure, etc.), the maximum reachable baud rate can be limited. Please also take care about additional delays, such as (internal or external) propagation delays and driver delays (e.g. for collision detection in ASC mode, for IIC, etc.). User’s Manual USIC, V1.0 19-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.1.2 Channel Structure The USIC module contains two independent communication channels, with a structure as shown in Figure 19-1. The data shift unit and the data buffering of each channel support full-duplex data transfers. The protocol-specific actions are handled by the protocol pre-processors (PPP). In order to simplify data handling, an additional FIFO data buffer is optionally available for each USIC module to store transmit and receive data for each channel. This FIFO data buffer is not necessarily available in all devices (please refer to USIC implementation chapter for details). Due to the independent channel control and baud rate generation, the communication protocol, baud rate and the data format can be independently programmed for each communication channel. SRx Baud Rate Generator User Interface Data Buffer Data Shift Unit To Interrupt Registers fSYS PPP Input Stages (ASC, SSC. ..) Channel 0 fSYS Baud Rate Generator Data Buffer Data Shift Unit PPP Pins UxC0 UxC1 Signal Distribution Interrupt Generation Input Stages (ASC, SSC. ..) Channel 1 Optional : FIFO Data Buffer shared between UxC 0 and UxC1 USIC Module x USIC_Module Figure 19-1 Channel Structure User’s Manual USIC, V1.0 19-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.1.3 Input Stages For each protocol up to three input signals are available, the number of actually used inputs depends on the selected protocol. Each input signal is handled by an input stage (called DX0, DX1, DX2) for signal conditioning, such as input selection, polarity control, or a digital input filter. They can be classified according to their meaning for the protocols, see Table 19-1. The inputs marked as “optional” are not needed for the standard function of a protocol and may be used for enhancements. The descriptions of protocol-specific items are given in the related protocol chapters, for the external frequency input please refer to the baud rate generator, and for the transmit data validation to the data handling section. Table 19-1 Input Signals for Different Protocols Selected Protocol Shift Data Input (handled by DX0) Shift Clock Input (handled by DX1) Shift Control Input (handled by DX2) ASC, LIN RXD optional: external frequency input or TXD collision detection optional: transmit data validation SSC, SPI (Master) DIN (MRST, MISO) optional: external frequency input or delay compensation optional: transmit data validation or delay compensation SSC, SPI (Slave) DIN (MTSR, MOSI) SCLKIN SELIN IIC SDA SCL optional: transmit data validation IIS (Master) DIN optional: external frequency input or delay compensation optional: transmit data validation or delay compensation IIS (Slave) DIN SCLKIN WAIN Note: To allow a certain flexibility in assigning required USIC input functions to port pins of the device, each input stage can select the desired input location among several possibilities. The available USIC signals and their port locations are listed in the implementation chapter, see Page 19-210. User’s Manual USIC, V1.0 19-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.1.4 Output Signals For each protocol up to eleven protocol-related output signals are available, the number of actually used outputs depends on the selected protocol. They can be classified according to their meaning for the protocols, see Table 19-2. The outputs marked as “optional” are not needed for the standard function of a protocol and may be used for enhancements. The descriptions of protocol-specific items are given in the related protocol chapters. The MCLKOUT output signal has a stable frequency relation to the shift clock output (the frequency of MCLKOUT can be higher than for SCLKOUT) for synchronization purposes of a slave device to a master device. If the baud rate generator is not needed for a specific protocol (e.g. in SSC slave mode), the SCLKOUT and MCLKOUT signals can be used as clock outputs with 50% duty cycle with a frequency that can be independent from the communication baud rate. Table 19-2 Output Signals for Different Protocols Selected Shift Data Protocol Output DOUT Shift Clock Output SCLKOUT Shift Control Outputs SELO[7:0] Master Clock Output MCLKOUT ASC, LIN TXD not used not used optional: master time base SSC, SPI DOUT (master) (MTSR, MOSI) master shift clock slave select, chip select optional: master time base SSC, SPI DOUT (slave) (MRST, MISO) optional: independent clock output not used optional: independent clock output IIC SDA SCL not used optional: master time base IIS (master) DOUT master shift clock WA optional: master time base IIS (slave) DOUT optional: independent clock output optional: independent clock output not used Note: To allow a certain flexibility in assigning required USIC output functions to port pins of the device, most output signals are made available on several port pins. The port control itself defines pin-by-pin which signal is used as output signal for a port pin (see port chapter). The available USIC signals and their port locations are listed in the implementation chapter, see Page 19-210. User’s Manual USIC, V1.0 19-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.1.5 Baud Rate Generator Each USIC Channel contains a baud rate generator structured as shown in Figure 19-2. It is based on coupled divider stages, providing the frequencies needed for the different protocols. It contains: • • • • • A fractional divider to generate the input frequency fPIN = fFD for baud rate generation based on the internal system frequency fSYS. The DX1 input to generate the input frequency fPIN = fDX1 for baud rate generation based on an external signal. A protocol-related counter to provide the master clock signal MCLK, the shift clock signal SCLK, and other protocol-related signals. It can also be used for time interval measurement, e.g. baud rate detection. A time quanta counter associated to the protocol pre-processor defining protocolspecific timings, such shift control signals or bit timings, based on the input frequency fCTQIN. The output signals MCLKOUT and SCLKOUT of the protocol-related divider that can be made available on pins. In order to adapt to different applications, some output characteristics of these signals can be configured. For device-specific details about availability of USIC signals on pins please refer to the implementation section. BRGL DX1 Input fDX1 fFD fC TQIN CLKSEL 2 Protocol Pre-Processor Enable fPIN Protocol SCLK Related Counter Output Configration SCLKOUT Enable fSYS Fractional Divider MCLK Output Configration MCLKOUT USIC_BaudRateGen Figure 19-2 Baud Rate Generator User’s Manual USIC, V1.0 19-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.1.6 Channel Events and Interrupts The notification of the user about events occurring during data traffic and data handling is based on: • • • Data transfer events related to the transmission or reception of a data word, independent of the selected protocol. Protocol-specific events depending on the selected protocol. Data buffer events related to data handling by the optional FIFO data buffers. 19.1.7 Data Shifting and Handling The data handling of the USIC module is based on an independent data shift unit (DSU) and a buffer structure that is similar for the supported protocols. The data shift and buffer registers are 16-bit wide (maximum data word length), but several data words can be concatenated to achieve longer data frames. The DSU inputs are the shift data (handled by input stage DX0), the shift clock (handled by the input stage DX1), and the shift control (handled by the input stage DX2). The signal DOUT represents the shift data output. In Buffered Transmit Data FIFO TBUF Transmit Data Optional Receive Data Buffer Buffered Receive Data FIFO RBUF0 RSR0 RBUF1 RSR1 RBUF Shift Data Output DOUT Shift Clock Input DX1 Input Shift Control Input In OUTRL TSR Data Shift Unit (DSU) TBUFx Out User Interface DX0 Input Bypass Bypass Data INx Shift Data Input Basic Data Buffer Out BYP Optional Transmit Data Buffer DX2 Input Receive Data USIC_DataBuffer Figure 19-3 Principle of Data Buffering The principle of data handling comprises: • • A transmitter with a transmit shift register (TSR) in the DSU and a transmit data buffer (TBUF). A data validation scheme allows triggering and gating of data transfers by external events under certain conditions. A receiver with two alternating receive shift registers (RSR0 and RSR1) in the DSU and a double receive buffer structure (RBUF0, RBUF1). The alternating receive shift User’s Manual USIC, V1.0 19-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • registers support the reception of data streams and data frames longer than one data word. Optional transmit and receive data buffers according to the first-in-first-out principle (FIFO), that are not necessarily available in all devices. For device-specific details about availability of the FIFO buffer please refer to the USIC implementation chapter. A user interface to handle data, interrupts, and status and control information. 19.1.7.1 Basic Data Buffer Structure The read access to received data and the write access of data to be transmitted can be handled by a basic data buffer structure. The received data stored in the receiver buffers RBUF0/RBUF1 can be read directly from these registers. In this case, the user has to take care about the reception sequence to read these registers in the correct order. To simplify the use of the receive buffer structure, register RBUF has been introduced. A read action from this register delivers the data word received first (oldest data) to respect the reception sequence. With a read access from at least the low byte of RBUF, the data is automatically declared to be no longer new and the next received data word becomes visible in RBUF and can be read out next. Control Info TCI RBUF01SRL RBUF01SRH TBUF RBUF0 RBUF1 16 5 Location Data TBUF31 DS .. . . TBUF01 RBUFSR TBUF00 RBUF RBUF Mirror Data Write Access Data Read Access Debug Read Access USIC_DataAccess Figure 19-4 Data Access Structure without additional Data Buffer It is recommended to read the received data words by accesses to RBUF and to avoid handling of RBUF0 and RBUF1. The USIC module also supports the use of debug accesses to receive data words. Debugger read accesses should not disturb the receive data sequence and, as a consequence, should not target RBUF. Therefore, register User’s Manual USIC, V1.0 19-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel RBUFD has been introduced. It contains the same value as RBUF, but a read access from RBUFD does not change the status of the data (same data can be read several times). In addition to the received data, some additional status information about each received data word is available in the receiver buffer status registers RBUF01SRL/H (related to data in RBUF0 and RBUF1) and RBUFSR (related to data in RBUF). Transmit data can be loaded to TBUF by software by writing to the transmit buffer input locations TBUFx (x = 00-31), consisting of 32 consecutive addresses. The data written to one of these input locations is stored in the transmit buffer TBUF. Additionally, the address of the written location is evaluated and can be used for additional control purposes. This 5-bit wide information (named Transmit Control Information TCI) can be used for different purposes in different protocols. 19.1.7.2 FIFO Buffer Structure To allow easier data setup and handling, an additional data buffering mechanism can be optionally supported. The data buffer is based on the first-in-first-out principle (FIFO) that ensures that the sequence of transferred data words is respected. If a FIFO buffer structure is used, the data handling scheme (data with associated control information) is similar to the one without FIFO. The additional FIFO buffer can be independently enabled/disabled for transmission and reception (e.g. if data FIFO buffers are available for a specific USIC channel, it is possible to configure the transmit data path without and the receive data path with FIFO buffering). The transmit FIFO buffer is addressed by using 32 consecutive address locations for INx instead of TBUFx (x=00-31) regardless of the FIFO depth. The 32 addresses are used to store the 5-bit TCI (together with the written data) associated with each FIFO entry. The receive FIFO can be read out at two independent addresses, OUTR and OUTDRL instead of RBUF and RBUFD. A read from the OUTR location triggers the next data packet to be available for the next read (general FIFO mechanism). In order to allow nonintrusive debugging (without risk of data loss), a second address location (OUTDRL) has been introduced. A read at this location delivers the same value as OUTR, but without modifying the FIFO contents. The transmit FIFO also has the capability to bypass the data stream and to load bypass data to TBUF. This can be used to generate high-priority messages or to send an emergency message if the transmit FIFO runs empty. The transmission control of the FIFO buffer can also use the transfer trigger and transfer gating scheme of the transmission logic for data validation (e.g. to trigger data transfers by events). Note: The available size of a FIFO data buffer for a USIC channel depends on the specific device. Please refer to the implementation chapter for details about available FIFO buffer capability. User’s Manual USIC, V1.0 19-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Control Info TCI RBUF01SRL RBUF01SRH TBUF RBUF0 RBUF1 Transmit FIFO Receive FIFO 5-bit IN31 TCI= 11111 16-bit TX Data . . . . IN01 TCI= 00001 TX Data OUTRH IN00 TCI= 00000 TX Data OUTRL OUTDRL Data Read Access Debug Read Access Data Write Access Mirror OUTDRH USIC _FIFOAccess Figure 19-5 Data Access Structure with FIFO User’s Manual USIC, V1.0 19-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2 Operating the USIC This section describes how to operate the USIC communication channel. It describes: • • • • • • • • • • • • • • Register Overview (see Page 19-13) General channel operation (see Page 19-18) Channel control and configuration registers (see Page 19-26) Protocol related registers (see Page 19-34) Input stages (see Page 19-37) Input stage control registers (see Page 19-39) Baud rate generation (see Page 19-42) Baud rate and shift control registers (see Page 19-47) Operating the transmit path (see on Page 19-52) Operating the receive path (see Page 19-56) Transfer control and status registers (see Page 19-58) Data buffer registers (see Page 19-70) Operating the FIFO data buffer (see Page 19-80) FIFO buffer and bypass registers (see Page 19-90) 19.2.1 Register Overview The module itself being 32-bit wide, some registers have been split up in two parts for the 16-bit implementation. Both parts keep the same name as the former 32-bit register, with an additional index. The lower part ends with the index L, whereas the upper (higher) part ends with the index H. Former 32-bit registers consisting of only 16 used bits keep their name (without additional index), because only the used bits appear in the register map. Table 19-3 shows all registers which are required for programming a USIC channel, as well as the FIFO buffer. It summarizes the USIC communication channel registers and defines the relative addresses and the reset values. Please note that all registers can be accessed with any access width (8-bit, 16-bit), independent of the described width. Short addressing is not supported. All USIC registers (except bit field KSCFG.SUMCFG) are always reset by a class 3 reset. Bit field KSCFG.SUMCFG is reset by a class 1 reset. Note: The register bits marked “w” always deliver 0 when read. They are used to modify flip-flops in other registers or to trigger internal actions. User’s Manual USIC, V1.0 19-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Figure 19-6 shows the register types of the USIC module registers and channel registers. In a specific microcontroller, module registers of USIC module “x” are marked by the module prefix “USICx_”. Channel registers of USIC module “x” are marked by the channel prefix “UxC0_” and “UxC1_”. USICx Module Channel 0 Registers Channel 1 Registers FIFO Buffer Registers FIFO Buffer Registers Channel Registers Channel Registers Module Registers USIC _RegMap Figure 19-6 USIC Module and Channel Registers Table 19-3 Register Short Name USIC Kernel-Related and Kernel Registers Register Long Name Offset Addr. Reset Value Description see Module Registers1) IDL Module Identification Register L 008H C0XXH Page 19-206 IDH Module Identification Register H 00AH 003AH Page 19-207 Channel Registers FDRL Fractional Divider Register L 004H 0000H Page 19-47 FDRH Fractional Divider Register H 006H 0000H Page 19-48 KSCFG Kernel State Configuration Register 00CH 0000H Page 19-30 CCR Channel Control Register 010H 0000H Page 19-26 INPRL Interrupt Node Pointer Register L 014H 0000H Page 19-32 INPRH Interrupt Node Pointer Register H 016H 0000H Page 19-33 CCFG Channel Configuration Register 018H 00CFH Page 19-29 BRGL Baud Rate Generator Register L 01CH 0000H Page 19-49 User’s Manual USIC, V1.0 19-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-3 USIC Kernel-Related and Kernel Registers (cont’d) Register Short Name Register Long Name Offset Addr. Reset Value Description see BRGH Baud Rate Generator Register H 01EH 0000H Page 19-51 DX0CR Input Control Register 0 020H 0000H Page 19-39 DX1CR Input Control Register 1 024H 0000H DX2CR Input Control Register 2 028H 0000H SCTRL Shift Control Register L 030H 0000H Page 19-58 SCTRH Shift Control Register H 032H 0000H Page 19-60 FMRL Flag Modification Register L 038H 0000H Page 19-68 FMRH Flag Modification Register H 03AH 0000H Page 19-69 TCSRL Transmit Control/Status Register L 03CH 0000H Page 19-61 TCSRH Transmit Control/Status Register H 03EH 0000H Page 19-66 PCRL Protocol Control Register L 040H 0000H Page 19-342) Page 19-123 3) Page 19-151 4) Page 19-178 5) Page 19-198 6) PCRH Protocol Control Register H 042H 0000H Page 19-342) Page 19-126 3) Page 19-153 4) Page 19-178 5) Page 19-200 6) User’s Manual USIC, V1.0 19-15 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-3 USIC Kernel-Related and Kernel Registers (cont’d) Register Short Name Register Long Name Offset Addr. Reset Value Description see PSR Protocol Status Register 044H 0000H Page 19-352) Page 19-127 3) Page 19-155 4) Page 19-181 5) Page 19-201 6) PSCR Protocol Status Clear Register 048H 0000H Page 19-36 RBUFD Receiver Buffer Register for Debugger 04CH 0000H Page 19-78 RBUF0 Receiver Buffer Register 0 050H 0000H Page 19-71 RBUF1 Receiver Buffer Register 1 054H 0000H Page 19-74 RBUFSR Receiver Buffer Status Register 058H 0000H Page 19-79 RBUF Receiver Buffer Register 05CH 0000H Page 19-77 RBUF01SRL Receiver Buffer 01 Status Register L 060H 0000H Page 19-71 RBUF01SRH Receiver Buffer 01 Status Register H 062H 0000H Page 19-74 – Reserved; do not access this location. 06CH – – – Reserved; do not access this location. 06EH – – TBUFx Transmit Buffer Input Location x (x = 00-31) 080H + 0000H x*4 Page 19-70 FIFO Buffer Registers BYP Bypass Data Register 100H 0000H Page 19-90 BYPCRL Bypass Control Register L 104H 0000H Page 19-90 BYPCRH Bypass Control Register H 106H 0000H Page 19-92 TRBPTRL Transmit/Receive Buffer Pointer Register L 108H 0000H Page 19-109 TRBPTRH Transmit/Receive Buffer Pointer Register H 10AH 0000H Page 19-110 User’s Manual USIC, V1.0 19-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-3 USIC Kernel-Related and Kernel Registers (cont’d) Register Short Name Register Long Name Offset Addr. Reset Value Description see TBCTRL Transmit Buffer Control Register L 110H 0000H Page 19-99 TBCTRH Transmit Buffer Control Register H 112H 0000H Page 19-100 RBCTRL Receive Buffer Control Register L 114H 0000H Page 19-102 RBCTRH Receive Buffer Control Register H 116H 0000H Page 19-103 TRBSRL Transmit/Receive Buffer Status Register L 118H 0808H Page 19-93 TRBSRH Transmit/Receive Buffer Status Register H 11AH 0000H Page 19-96 TRBSCR Transmit/Receive Buffer Status Clear Register 11CH 0000H Page 19-97 OUTRL Receive Buffer Output Register L 120H 0000H Page 19-107 OUTRH Receive Buffer Output Register H 122H 0000H Page 19-107 OUTDRL Receive Buffer Output Register L for 124H Debugger 0000H Page 19-108 OUTDRH Receive Buffer Output Register H for 126H Debugger 0000H Page 19-108 INx Transmit FIFO Buffer Input Location x (x = 00-31) 180H + 0000H x*4 Page 19-106 1) Details of the module identification registers are described in the implementation section (see Page 19-204). 2) This page shows the general register layout. 3) This page shows the register layout in ASC mode. 4) This page shows the register layout in SSC mode. 5) This page shows the register layout in IIC mode. 6) This page shows the register layout in IIS mode. User’s Manual USIC, V1.0 19-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.2 Operating the USIC Communication Channel This section describes how to operate a USIC communication channel, including protocol control and status, mode control and interrupt handling. The following aspects have to be taken into account: • • • • • Enable the USIC module for operation and configure the behavior for the different device operation modes (see Page 19-19). Configure the pinning (refer to description in the corresponding protocol section). Configure the data structure (shift direction, word length, frame length, polarity, etc.). Configure the data buffer structure of the optional FIFO buffer area. A FIFO buffer can only be enabled if the related bit in register CCFG is set. Select a protocol by CCR.MODE. A protocol can only be selected if the related bit in register CCFG is set. 19.2.2.1 Protocol Control and Status The protocol-related control and status information are located in the protocol control registers PCRL and PCRH and in the protocol status register PSR. These registers are shared between the available protocols. As a consequence, the meaning of the bit positions in these registers is different within the protocols. Use of PCRL/H Bits The signification of the bits in registers PCRL/PCRH is indicated by the protocol-related alias names for the different protocols. • • • • PCRL/PRCH for the ASC protocol (see Page 19-123) PCRL/PRCH for the SSC protocol (see Page 19-151) PCRL/PRCH for the IIC protocol (see Page 19-178) PCRL/PRCH for the IIS protocol (see Page 19-198) Use of PSR Flags The signification of the flags in register PSR is indicated by the protocol-related alias names for the different protocols. • • • • PSR flags for the ASC protocol (see Page 19-127) PSR flags for the SSC protocol (see Page 19-155) PSR flags for the IIC protocol (see Page 19-181) PSR flags for the IIS protocol (see Page 19-201) User’s Manual USIC, V1.0 19-18 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.2.2 Mode Control The mode control concept for system control tasks, such as power saving, or suspend request for debugging, allows to program the module behavior under different device operating conditions. The behavior of a communication channel can be programmed for each of the device operating modes, that are requested by the global state control part of the SCU. Therefore, each communication channel has an associated kernel state configuration register KSCFG defining its behavior in the following operating modes: • • • Normal operation: This operating mode is the default operating mode when neither a suspend request nor a clock-off request are pending. The module clock is not switched off and the USIC registers can be read or written. The channel behavior is defined by KSCFG.NOMCFG. Suspend mode: This operating mode is requested when a suspend request is pending in the device. The module clock is not switched off and the USIC registers can be read or written. The channel behavior is defined by KSCFG.SUMCFG. Clock-off mode: This operating mode is requested for power saving purposes. The module clock is switched off automatically when all channels of the USIC module reached their specified state in a stop mode. In this case, USIC registers can not be accessed. The channel behavior is defined by KSCFG.COMCFG. The behavior of a USIC communication channel can be programmed for each of the device operating modes (normal operation, suspend mode, clock-off mode). Therefore, the USIC communication channel provides four kernel modes, as shown in Table 19-4. Table 19-4 USIC Communication Channel Behavior Kernel Mode Channel Behavior KSCFG. NOMCFG Run mode 0 Channel operation as specified, no impact on data transfer 00B Run mode 1 01B Stop mode 0 Explicit stop condition as described in the protocol chapters 10B Stop mode 1 11B Generally, bit field KSCFG.NOMCFG should be configured for run mode 0 as default setting for standard operation. If a communication channel should not react to a suspend request (and to continue its operation as in normal mode), bit field KSCFG.SUMCFG has to be configured with the same value as KSCFG.NOMCFG. If the communication channel should show a different behavior and stop operation when a specific stop condition is reached, the code for stop mode 0 or stop mode 1 have to be written to KSCFG.SUMCFG. User’s Manual USIC, V1.0 19-19 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel A similar mechanism applies for the clock-off mode with the possibility to program the desired behavior by bit field KSCFG.COMCFG. The stop conditions are defined for the selected protocol (see mode control description in the protocol section). Note: The stop mode selection strongly depends on the application needs and it is very unlikely that different stop modes are required in parallel in the same application. As a result, only one stop mode type (either 0 or 1) should be used in the bit fields in register KSCFG. Do not mix stop mode 0 and stop mode 1 and avoid transitions from stop mode 0 to stop mode 1 (or vice versa) for the same communication channel. If the module clock is disabled by KSCFG.MODEN = 0 or in clock-off mode when the stop condition is reached (in stop mode 0 or 1), the module can not be accessed by read or write operations (except register KSCFG that can always be accessed). 19.2.2.3 General Channel Events and Interrupts The general event and interrupt structure is shown in Figure 19-7. If a defined condition is met, an event is detected and an event indication flag becomes automatically set. The flag stays set until it is cleared by software. If enabled, an interrupt can be generated if an event is detected. The actual status of the event indication flag has no influence on the interrupt generation. As a consequence, the event indication flag does not need to be cleared to generate further interrupts. Additionally, the service request output SRx of the USIC channel that becomes activated in case of an event condition can be selected by an interrupt node pointer. This structure allows to assign events to interrupts, e.g. depending on the application, several events can share the same interrupt routine (several events activate the same SRx output) or can be handled individually (only one event activates one SRx output). The SRx outputs are connected to interrupt control registers to handle the CPU reaction to the service requests. This assignment is described in the implementation section on Page 19-208. User’s Manual USIC, V1.0 19-20 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Clear Event Indication Flag Clear Event Indication Flag Interrupt Enable Interrupt Node Pointer 2 Set To SR0 Event Condition is met . . . .. . To SR3 USIC_GenInts Figure 19-7 General Event and Interrupt Structure User’s Manual USIC, V1.0 19-21 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.2.4 Data Transfer Events and Interrupts The data transfer events are based on the transmission or reception of a data word. The related indication flags are located in register PSR. All events can be individually enabled for interrupt generation. • • • • • • Receive event to indicate that a data word has been received: If a new received word becomes available in the receive buffer RBUF, either a receive event or an alternative receive event occurs. The receive event occurs if bit RBUFSR.PERR = 0. It is indicated by flag PSR.RIF and can lead to a receive interrupt (if enabled). Receiver start event to indicate that a data word reception has started: When the receive clock edge that shifts in the first bit of a new data word is detected and reception is enabled, a receiver start event occurs. It is indicated by flag PSR.RSIF and can lead to a transmit buffer interrupt (if enabled). In full duplex mode, this event follows half a shift clock cycle after the transmit buffer event and indicates when the shift control settings are internally “frozen” for the current data word reception and a new setting can be programmed. In SSC and IIS mode, the transmit data valid flag TCSRL.TDV is cleared in single shot mode with the receiver start event. Alternative receive event to indicate that a specific data word has been received: If a new received word becomes available in the receive buffer RBUF, either a receive event or an alternative receive event occurs. The alternative receive event occurs if bit RBUFSR.PERR = 1. It is indicated by flag PSR.AIF and can lead to an alternative receive interrupt (if enabled). Depending on the selected protocol, bit RBUFSR.PERR is set to indicate a parity error in ASC mode, the reception of the first byte of a new frame in IIC mode, and the WA information about right/left channel in IIS mode, whereas it is always 0 in SSC mode. Transmit shift event to indicate that a data word has been transmitted: A transmit shift event occurs with the last shift clock edge of a data word. It is indicated by flag PSR.TSIF and can lead to a transmit shift interrupt (if enabled). Transmit buffer event to indicate that a data word transmission has been started: When a data word from the transmit buffer TBUF has been loaded to the shift register and a new data word can be written to TBUF, a transmit buffer event occurs. This happens with the transmit clock edge that shifts out the first bit of a new data word and transmission is enabled. It is indicated by flag PSR.TBIF and can lead to a transmit buffer interrupt (if enabled). This event also indicates when the shift control settings (word length, shift direction, etc.) are internally “frozen” for the current data word transmission. In ASC and IIC mode, the transmit data valid flag TCSRL.TDV is cleared in single shot mode with the transmit buffer event. Data lost event to indicate a loss of the oldest received data word: If the data word available in register RBUF (oldest data word from RBUF0 or RBUF1) User’s Manual USIC, V1.0 19-22 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel has not been read out before it becomes overwritten with new incoming data, this event occurs. It is indicated by flag PSR.DLIF and can lead to a protocol interrupt (if enabled). Table 19-5 shows the registers, bits and bit fields indicating the data transfer events and controlling the interrupts of a USIC channel. Table 19-5 Data Transfer Events and Interrupt Handling Event Indication Flag Indication cleared by Interrupt enabled by SRx Output selected by Standard receive event PSR.RIF PSCR.CRIF CCR.RIEN INPRL.RINP Receive start event PSR.RSIF PSCR.CRSIF CCR.RSIEN INPRL.TBINP Alternative receive event PSR.AIF PSCR.CAIF Transmit shift event PSR.TSIF PSCR.CTSIF CCR.TSIEN INPRL.TSINP Transmit buffer event PSR.TBIF PSCR.CTBIF CCR.TBIEN INPRL.TBINP Data lost event PSR.DLIF PSCR.CDLIF CCR.DLIEN INPRH.PINP CCR.AIEN INPRL.AINP Figure 19-8 shows the two transmit events and interrupts. PSCR CTSIF Clear PSR CCR TSIF INPRL TSIEN Set TSINP 2 Transmit Shift Interrupt Transmit Shift Event .. . SR0 .. . SR3 (End of last transmit shift clock period of data word) PSCR CTBIF Clear PSR CCR TBIF INPRL TBIEN Set Transmit Buffer Event TBINP Transmit Buffer Interrupt 2 . . . SR0 . . . SR3 (First transmit shift clock of data word) USIC_TransInts Figure 19-8 Transmit Events and Interrupts User’s Manual USIC, V1.0 19-23 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Figure 19-9 shows the receive events and interrupts. RBUFSR PERR PSCR CRIF Clear PSR CCR RIF Standard Receive Event INPRL RIEN Set RINP Standard Receive Interrupt 2 .. . SR0 .. . SR3 New Data in RBUF Event 0 1 Alternate Receive Event Alternate Receive Interrupt Set CAIF Clear PSCR PSCR CRSIF Clear AIF . . . . . . SR3 2 AIEN AINP PSR CCR INPRL PSR CCR INPRL RSIF SR0 RSIEN Set TBINP Receive Start Interrupt Receive Start Event 2 . . . SR0 . . . SR3 (First receive shift clock of data world) PSCR CDLIF Clear PSR CCR DLIF Set Data Lost Event INPRH DLIEN PINP Data Lost Interrupt 2 . . . SR0 . . . SR3 (RBUF becomes overwritten without having been read out) USIC_RecInts Figure 19-9 Receive Events and Interrupts User’s Manual USIC, V1.0 19-24 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.2.5 Protocol-specific Events and Interrupts These events are related to protocol-specific actions that are described in the corresponding protocol chapters. The related indication flags are located in register PSR. All events can be individually enabled for the generation of the common protocol interrupt. • • • • Protocol-specific events in ASC mode: Synchronization break, data collision on the transmit line, receiver noise, format error in stop bits, receiver frame finished, transmitter frame finished Protocol-specific events in SSC mode: MSLS event (start-end of frame in master mode), DX2T event (start/end of frame in slave mode), both based on slave select signals Protocol-specific events in IIC mode: Wrong transmit code (error in frame sequence), start condition received, repeated start condition received, stop condition received, non-acknowledge received, arbitration lost, slave read request, other general errors Protocol-specific events in IIS mode: DX2T event (change on WA line), WA falling edge or rising edge detected, WA generation finished Table 19-6 Event Protocol-specific Events and Interrupt Handling Indication Flag Indication cleared by Interrupt enabled by SRx Output selected by Protocol-specific PSR.ST[8:2] PSCR.CST[8:2] PCRL.CTR[7:3] events in ASC mode INPRH.PINP Protocol-specific PSR.ST[3:2] PSCR.CST[3:2] PCRL.CTR[15:14] events in SSC mode INPRH.PINP Protocol-specific PSR.ST[8:1] PSCR.CST[8:1] PCRH.CTR[24:18] events in IIC mode INPRH.PINP Protocol-specific PSR.ST[6:3] PSCR.CST[6:3] PCRL.CTR[6:4], events in PCRL.CTR[15] IIS mode INPRH.PINP User’s Manual USIC, V1.0 19-25 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.3 Channel Control and Configuration Registers 19.2.3.1 Channel Control Register The channel control register contains the enable/disable bits for interrupt generation on channel events, the control of the parity generation and the protocol selection of a USIC channel. CCR Channel Control Register (10H) 9 8 7 Reset Value: 0000H 15 14 13 12 11 10 AI EN RI EN TBI EN TSI EN DLI EN RSI EN PM 0 MODE rw rw rw rw rw rw rw r rw Field Bits Type Description MODE [3:0] rw User’s Manual USIC, V1.0 6 5 4 3 2 1 0 Operating Mode This bit field selects the protocol for this USIC channel. Selecting a protocol that is not available (see register CCFG) or a reserved combination disables the USIC channel. When switching between two protocols, the USIC channel has to be disabled before selecting a new protocol. In this case, registers PCRH, PCRL, and PSR have to be cleared or updated by software. 0H The USIC channel is disabled. All protocolrelated state machines are set to an idle state. 1H The SSC (SPI) protocol is selected. The ASC (SCI, UART) protocol is selected. 2H 3H The IIS protocol is selected. 4H The IIC protocol is selected. Other bit combinations are reserved. 19-26 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description PM [9:8] rw Parity Mode This bit field defines the parity generation of the sampled input values. 00B The parity generation is disabled. 01B Reserved 10B Even parity is selected (parity bit = 1 on odd number of 1s in data, parity bit = 0 on even number of 1s in data). 11B Odd parity is selected (parity bit = 0 on odd number of 1s in data, parity bit = 1 on even number of 1s in data). RSIEN 10 rw Receiver Start Interrupt Enable This bit enables the interrupt generation in case of a receiver start event. 0B The receiver start interrupt is disabled. The receiver start interrupt is enabled. 1B In case of a receiver start event, the service request output SRx indicated by INPRL.TBINP is activated. DLIEN 11 rw Data Lost Interrupt Enable This bit enables the interrupt generation in case of a data lost event (data received in RBUFx while RDVx = 1). 0B The data lost interrupt is disabled. 1B The data lost interrupt is enabled. In case of a data lost event, the service request output SRx indicated by INPRH.PINP is activated. TSIEN 12 rw Transmit Shift Interrupt Enable This bit enables the interrupt generation in case of a transmit shift event. 0B The transmit shift interrupt is disabled. 1B The transmit shift interrupt is enabled. In case of a transmit shift interrupt event, the service request output SRx indicated by INPRL.TSINP is activated. User’s Manual USIC, V1.0 19-27 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description TBIEN 13 rw Transmit Buffer Interrupt Enable This bit enables the interrupt generation in case of a transmit buffer event. 0B The transmit buffer interrupt is disabled. 1B The transmit buffer interrupt is enabled. In case of a transmit buffer event, the service request output SRx indicated by INPRL.TBINP is activated. RIEN 14 rw Receive Interrupt Enable This bit enables the interrupt generation in case of a receive event. 0B The receive interrupt is disabled. 1B The receive interrupt is enabled. In case of a receive event, the service request output SRx indicated by INPRL.RINP is activated. AIEN 15 rw Alternative Receive Interrupt Enable This bit enables the interrupt generation in case of a alternative receive event. 0B The alternative receive interrupt is disabled. 1B The alternative receive interrupt is enabled. In case of an alternative receive event, the service request output SRx indicated by INPRL.AINP is activated. 0 [7:4] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-28 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.3.2 Channel Configuration Register The channel configuration register contains indicates the functionality that is available in the USIC channel. CCFG Channel Configuration Register 15 14 13 12 11 10 (18H) 9 8 Reset Value: 00CFH 7 6 0 TB RB r r r 5 4 3 2 1 0 IIS IIC r r r 0 ASC SSC r r Field Bits Type Description SSC 0 r SSC Protocol Available This bit indicates if the SSC protocol is available. 0B The SSC protocol is not available. 1B The SSC protocol is available. ASC 1 r ASC Protocol Available This bit indicates if the ASC protocol is available. The ASC protocol is not available. 0B 1B The ASC protocol is available. IIC 2 r IIC Protocol Available This bit indicates if the IIC functionality is available. 0B The IIC protocol is not available. The IIC protocol is available. 1B IIS 3 r IIS Protocol Available This bit indicates if the IIS protocol is available. 0B The IIS protocol is not available. 1B The IIS protocol is available. RB 6 r Receive FIFO Buffer Available This bit indicates if an additional receive FIFO buffer is available. 0B A receive FIFO buffer is not available. 1B A receive FIFO buffer is available. TB 7 r Transmit FIFO Buffer Available This bit indicates if an additional transmit FIFO buffer is available. 0B A transmit FIFO buffer is not available. 1B A transmit FIFO buffer is available. User’s Manual USIC, V1.0 19-29 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description 0 [5:4], [15:8] r Reserved Read as 0; should be written with 0. 19.2.3.3 Kernel State Configuration Register The kernel state configuration register KSCFG allows the selection of the desired kernel modes for the different device operating modes. KSCFG Kernel State Configuration Register 15 14 BP COM 0 w r 13 12 11 10 COMCFG BP SUM 0 rw w r 9 (0CH) 8 Reset Value: 0000H 7 6 SUMCFG BP NOM 0 rw w r 5 4 3 2 NOMCFG 0 0 rw r r 1 0 BP MOD MOD EN EN w rw Field Bits Type Description MODEN 0 rw Module Enable This bit enables the module kernel clock and the module functionality. 0B The module is switched off immediately (without respecting a stop condition). It does not react on mode control actions and the module clock is switched off. The module does not react on read accesses and ignores write accesses (except to KSCFG). 1B The module is switched on and can operate. After writing 1 to MODEN, it is recommended to read register KSCFG to avoid pipeline effects in the control block before accessing other ADC registers. BPMODEN 1 w Bit Protection for MODEN This bit enables the write access to the bit MODEN. It always reads 0. 0B MODEN is not changed. 1B MODEN is updated with the written value. User’s Manual USIC, V1.0 19-30 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description NOMCFG [5:4] rw Normal Operation Mode Configuration This bit field defines the kernel mode applied in normal operation mode. 00B Run mode 0 is selected. 01B Run mode 1 is selected. 10B Stop mode 0 is selected. 11B Stop mode 1 is selected. BPNOM 7 w Bit Protection for NOMCFG This bit enables the write access to the bit field NOMCFG. It always reads 0. 0B NOMCFG is not changed. 1B NOMCFG is updated with the written value. SUMCFG [9:8] rw Suspend Mode Configuration This bit field defines the kernel mode applied in suspend mode. Coding like NOMCFG. BPSUM 11 w Bit Protection for SUMCFG This bit enables the write access to the bit field SUMCFG. It always reads 0. 0B SUMCFG is not changed. 1B SUMCFG is updated with the written value. COMCFG [13:12] rw Clock Off Mode Configuration This bit field defines the kernel mode applied in clock-off mode. Coding like NOMCFG. BPCOM 15 w Bit Protection for COMCFG This bit enables the write access to the bit field COMCFG. It always reads 0. 0B COMCFG is not changed. 1B COMCFG is updated with the written value. 0 [3:2], 6, 10, 14 r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-31 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.3.4 Interrupt Node Pointer Registers The interrupt node pointer registers define the service request output SRx that is activated if the corresponding event occurs and interrupt generation is enabled. INPRL Interrupt Node Pointer Register L 15 14 13 12 11 10 (14H) 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 0 0 AINP 0 RINP 0 TBINP 0 TSINP r rw r rw r rw r rw Field Bits Type Description TSINP [1:0] rw Transmit Shift Interrupt Node Pointer This bit field defines which service request output SRx becomes activated in case of a transmit shift interrupt. 00B Output SR0 becomes activated. 01B Output SR1 becomes activated. 10B Output SR2 becomes activated. 11B Output SR3 becomes activated. TBINP [5:4] rw Transmit Buffer Interrupt Node Pointer This bit field defines which service request output SRx will be activated in case of a transmit buffer interrupt or a receive start interrupt. Coding like TSINP. RINP [9:8] rw Receive Interrupt Node Pointer This bit field defines which service request output SRx will be activated in case of a receive interrupt. Coding like TSINP. AINP [13:12] rw Alternative Receive Interrupt Node Pointer This bit field defines which service request output SRx will be activated in case of a alternative receive interrupt. Coding like TSINP. 0 [3:2], [7:6], [11:10], [15:14] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-32 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel INPRH Interrupt Node Pointer Register H 15 14 13 12 11 10 (16H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 PINP r rw Field Bits Type Description PINP [1:0] rw Protocol Interrupt Node Pointer This bit field defines which service request output SRx becomes activated in case of a protocol interrupt. 00B Output SR0 becomes activated. 01B Output SR1 becomes activated. 10B Output SR2 becomes activated. 11B Output SR3 becomes activated. 0 [15:2] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-33 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.4 Protocol Related Registers 19.2.4.1 Protocol Control Registers The bits in the protocol control registers define protocol-specific functions. They have to be configured by software before enabling a new protocol. Only the bits used for the selected protocol are taken into account, whereas the other bit positions always read as 0. The protocol-specific meaning is described in the related protocol section. PCRL Protocol Control Register L 15 14 13 12 11 10 (40H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 rw rw rw rw rw rw rw rw rw Field Bits Type Description CTRx (x = 0-15) x rw 14 13 12 11 rw rw rw rw rw rw Protocol Control Bit x This bit is a protocol control bit. PCRH Protocol Control Register H 15 rw 10 (42H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR CTR 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh rwh Field Bits Type Description CTRx (x = 16-30) x - 16 rwh Protocol Control Bit x This bit is a protocol control bit that can be overwritten by protocol-specific information. CTR31 15 rwh Protocol Control Bit 31 In the various protocols, this bit controls the start and the stop of the MCLK signal. 0B Signal MCLK is not generated (MCLK = 0). 1B Signal MCLK generation is enabled. User’s Manual USIC, V1.0 19-34 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.4.2 Protocol Status Register The flags in the protocol status register can be cleared by writing a 1 to the corresponding bit position in register PSCR. Writing a 1 to a bit position in PSR sets the corresponding flag, but doesn’t lead to further actions (no interrupt generation). Writing a 0 has no effect. These flags should be cleared by software before enabling a new protocol. The protocol-specific meaning is described in the related protocol section. PSR Protocol Status Register 13 14 AIF RIF TBIF TSIF DLIF RSIF ST9 ST8 ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 rwh rwh rwh 11 rwh 10 rwh 9 rwh 8 rwh 7 Reset Value: 0000H 15 rwh 12 (44H) rwh 6 rwh 5 rwh 4 rwh 3 rwh 2 1 rwh rwh 0 rwh Field Bits Type Description STx (x = 0-9) x rwh Protocol Status Flag x See protocol specific description. RSIF 10 rwh Receiver Start Indication Flag A receiver start event has not occurred. 0B 1B A receiver start event has occurred. DLIF 11 rwh Data Lost Indication Flag 0B A data lost event has not occurred. 1B A data lost event has occurred. TSIF 12 rwh Transmit Shift Indication Flag 0B A transmit shift event has not occurred. 1B A transmit shift event has occurred. TBIF 13 rwh Transmit Buffer Indication Flag A transmit buffer event has not occurred. 0B 1B A transmit buffer event has occurred. RIF 14 rwh Receive Indication Flag 0B A receive event has not occurred. 1B A receive event has occurred. AIF 15 rwh Alternative Receive Indication Flag 0B An alternative receive event has not occurred. 1B An alternative receive event has occurred. User’s Manual USIC, V1.0 19-35 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.4.3 Protocol Status Clear Register Read accesses to this register always deliver 0 at all bit positions. PSCR Protocol Status Clear Register 14 C AIF C C C C C C C C C C C C C C C RIF TBIF TSIF DLIF RSIF ST9 ST8 ST7 ST6 ST5 ST4 ST3 ST2 ST1 ST0 w 12 w w 11 10 w w 9 w 8 w 7 Reset Value: 0000H 15 w 13 (48H) w 6 w 5 w 4 w 3 w 2 1 w w Field Bits Type Description CSTx (x = 0-9) x w Clear Status Flag x in PSR 0B No action 1B Flag PSR.STx is cleared. CRSIF 10 w Clear Receiver Start Indication Flag 0B No action 1B Flag PSR.RSIF is cleared. CDLIF 11 w Clear Data Lost Indication Flag 0B No action 1B Flag PSR.DLIF is cleared. CTSIF 12 w Clear Transmit Shift Indication Flag 0B No action 1B Flag PSR.TSIF is cleared. CTBIF 13 w Clear Transmit Buffer Indication Flag 0B No action 1B Flag PSR.TBIF is cleared. CRIF 14 w Clear Receive Indication Flag 0B No action 1B Flag PSR.RIF is cleared. CAIF 15 w Clear Alternative Receive Indication Flag 0B No action Flag PSR.AIF is cleared. 1B User’s Manual USIC, V1.0 19-36 0 w V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.5 Operating the Input Stages All three input stages offer the same feature set. They are used for all protocols, because the signal conditioning can be adapted in a very flexible way and the digital filters can be switched on and off separately. 19.2.5.1 General Input Structure All input stages are built in a similar way as shown in Figure 19-10. All enable/disable functions and selections are controlled independently for each input stage by bits in the registers DX0CR, DX1CR, and DX2CR. The desired input signal can be selected among the input lines DXnA to DXnG and a permanent 1-level by programming bit field DSEL. Please refer to the implementation chapter for the device-specific input signal assignment. Bit DPOL allows a polarity inversion of the selected input signal to adapt the input signal polarity to the internal polarity of the data shift unit and the protocol state machine. For some protocols, the input signals can be directly forwarded to the data shift unit for the data transfers (DSEN = 0, INSW = 1) without any further signal conditioning. In this case, the data path does not contain any delay due to synchronization or filtering. In the case of noise on the input signals, there is the possibility to synchronize the input signal (signal DXnS is synchronized to fSYS) and additionally to enable a digital noise filter in the signal path. The synchronized input signal (and optionally filtered if DFEN = 1) is taken into account by DSEN = 1. Please note that the synchronization leads to a delay in the signal path of 2-3 times the period of fSYS. DXnCR DXnCR DSEL ... DXnG 1 DPOL 000 001 0 ... DXnA DXnB DXnCR 1 DXnCR DSEN INSW 0 1 1 110 0 Data Shift Unit 111 DXnS DXnINS Digital Filter Edge Detection DFEN CM Protocol Pre-Processor DXnT DXnCR DXnCR USIC_InputCondit Figure 19-10 Input Conditioning User’s Manual USIC, V1.0 19-37 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel If the input signals are handled by a protocol pre-processor, the data shift unit is directly connected to the protocol pre-processor by INSW = 0. The protocol pre-processor is connected to the synchronized input signal DXnS and, depending on the selected protocol, also evaluates the edges. 19.2.5.2 Digital Filter The digital filter can be enabled to reduce noise on the input signals. Before being filtered, the input signal becomes synchronized to fSYS. If the filter is disabled, signal DXnS corresponds to the synchronized input signal. If the filter is enabled, pulses shorter than one filter sampling period are suppressed in signal DXnS. After an edge of the synchronized input signal, signal DXnS changes to the new value if two consecutive samples of the new value have been detected. In order to adapt the filter sampling period to different applications, it can be programmed. The first possibility is the system frequency fSYS. Longer pulses can be suppressed if the fractional divider output frequency fFD is selected. This frequency is programmable in a wide range and can also be used to determine the baud rate of the data transfers. In addition to the synchronization delay of 2-3 periods of fSYS, an enabled filter adds a delay of up to two filter sampling periods between the selected input and signal DXnS. 19.2.5.3 Edge Detection The synchronized (and optionally filtered) signal DXnS can be used as input to the data shift unit and is also an input to the selected protocol pre-processor. If the protocol preprocessor does not use the DXnS signal for protocol-specific handling, DXnS can be used for other tasks, e.g. to control data transmissions in master mode (a data word can be tagged valid for transmission, see chapter about data buffering). A programmable edge detection indicates that the desired event has occurred by activating the trigger signal DXnT (introducing a delay of one period of fSYS before a reaction to this event can take place). 19.2.5.4 Selected Input Monitoring The selected input signal of each input stage has been made available with the signals DX0INS, DX1INS, and DX2INS. These signals can be used in the system to trigger other actions, e.g. to generate interrupts. 19.2.5.5 Loop Back Mode The USIC transmitter output signals can be connected to the corresponding receiver inputs of the same communication channel in loop back mode. Therefore, the input “G” of the input stages that are needed for the selected protocol have to be selected. In this User’s Manual USIC, V1.0 19-38 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel case, drivers for ASC, SSC, and IIS can be evaluated on-chip without the connections to port pins. Data transferred by the transmitter can be received by the receiver as if it would have been sent by another communication partner. 19.2.6 Input Stage Register 19.2.6.1 Input Control Registers The input control registers contain the bits to define the characteristics of the input stages (input stage DX0 is controlled by register DX0CR, etc.). DX0CR Input Control Register 0 DX1CR Input Control Register 1 DX2CR Input Control Register 2 15 14 13 12 11 10 DXS 0 CM rh r rw 9 (20H) Reset Value: 0000H (24H) Reset Value: 0000H (28H) Reset Value: 0000H 8 SF D SEL POL rw rw Field Bits Type Description DSEL [2:0] rw User’s Manual USIC, V1.0 7 6 5 4 3 2 1 0 DS EN DF EN IN SW 0 DSEL r rw rw rw r rw 0 Data Selection for Input Signal This bit field defines the input data signal for the corresponding input line for protocol pre-processor. The selection can be made from the input vector DXn[G:A]. 000B The data input DXnA is selected. 001B The data input DXnB is selected. ... 110B The data input DXnG is selected. 111B The data input is always 1. 19-39 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description INSW 4 rw Input Switch This bit defines if the data shift unit input is derived from the input data path DXn or from the selected protocol pre-processors. 0B The input of the data shift unit is controlled by the protocol pre-processor. 1B The input of the data shift unit is connected to the selected data input line. This setting is used if the signals are directly derived from an input pin without treatment by the protocol preprocessor. DFEN 5 rw Digital Filter Enable This bit enables/disables the digital filter for signal DXnS. 0B The input signal is not digitally filtered. The input signal is digitally filtered. 1B DSEN 6 rw Data Synchronization Enable This bit selects if the asynchronous input signal or the synchronized (and optionally filtered) signal DXnS can be used as input for the data shift unit. 0B The un-synchronized signal can be taken as input for the data shift unit. 1B The synchronized signal can be taken as input for the data shift unit. DPOL 8 rw Data Polarity for DXn This bit defines the signal polarity of the input signal. The input signal is not inverted. 0B 1B The input signal is inverted. SFSEL 9 rw Sampling Frequency Selection This bit defines the sampling frequency of the digital filter for the synchronized signal DXnS. The sampling frequency is fSYS. 0B 1B The sampling frequency is fFD. User’s Manual USIC, V1.0 19-40 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits CM [11:10] rw Combination Mode This bit field selects which edge of the synchronized (and optionally filtered) signal DXnS actives the trigger output DXnT of the input stage. 00B The trigger activation is disabled. 01B A rising edge activates DXnT. 10B A falling edge activates DXnT. 11B Both edges activate DXnT. DXS 15 Synchronized Data Value This bit indicates the value of the synchronized (and optionally filtered) input signal. The current value of DXnS is 0. 0B 1B The current value of DXnS is 1. 0 3, 7, r [14:12] User’s Manual USIC, V1.0 Type Description rh Reserved Read as 0; should be written with 0. 19-41 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.7 Operating the Baud Rate Generator The following blocks can be configured to operate the baud rate generator, see also Figure 19-2 on Page 19-8. 19.2.7.1 Fractional Divider The fractional divider generates its output frequency fFD by dividing the input frequency fSYS either by an integer factor n or by multiplication by n/1024. It has two operating modes: • Normal divider mode (FDRL.DM = 01B): In this mode, the output frequency fFD is derived from the input clock fSYS by an integer division by a value between 1 and 1024. The division is based on a counter FDRH.RESULT that is incremented by 1 with fSYS. After reaching the value 3FFH, the counter is loaded with FDRL.STEP and then continues counting. In order to achieve fFD = fSYS, the value of STEP has to be programmed with 3FFH. The output frequency in normal divider mode is defined by the equation: fFD = fSYS × 1 n • with n = 1024 - STEP (19.1) Fractional divider mode (FDRL.DM = 10B): In this mode, the output frequency fFD is derived from the input clock fSYS by a fractional multiplication by n/1024 for a value of n between 0 and 1023. In general, the fractional divider mode allows to program the average output clock frequency with a finer granularity than in normal divider mode. Please note that in fractional divider mode fFD can have a maximum period jitter of one fSYS period. This jitter is not accumulated over several cycles. The frequency fFD is generated by an addition of FDRL.STEP to FDRH.RESULT with fSYS. The frequency fFD is based on the overflow of the addition result over 3FFH. The output frequency in fractional divider mode is defined by the equation: fFD = fSYS × n 1024 with n = STEP (19.2) The output frequency fFD of the fractional divider is selected for baud rate generation by BRGL.CLKSEL = 00B. 19.2.7.2 External Frequency Input The baud rate can be generated referring to an external frequency input (instead of to fSYS) if in the selected protocol the input stage DX1 is not needed (DX1CTR.INSW = 0). In this case, an external frequency input signal at the DX1 input stage can be synchronized and sampled with the system frequency fSYS. It can be optionally filtered User’s Manual USIC, V1.0 19-42 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel by the digital filter in the input stage. This feature allows data transfers with frequencies that can not be generated by the device itself, e.g. for specific audio frequencies. If BRGL.CLKSEL = 10B, the trigger signal DX1T determines fDX1. In this mode, either the rising edge, the falling edge, or both edges of the input signal can be used for baud rate generation, depending on the configuration of the DX1T trigger event by bit field DX1CTR.CM. The signal MCLK toggles with each trigger event of DX1T. If BRGL.CLKSEL = 11B, the rising edges of the input signal can be used for baud rate generation. The signal MCLK represents the synchronized input signal DX1S. Both, the high time and the low time of external input signal must each have a length of minimum 2 periods of fSYS to be used for baud rate generation. 19.2.7.3 Protocol-Related Counter in Divider Mode In divider mode, the protocol-related counter is used for an integer division delivering the output frequency fPDIV. Additionally, two divider stages with a fixed division by 2 provide the output signals MCLK and SCLK with 50% duty cycle. If the fractional divider mode is used, the maximum fractional jitter of 1 period of fSYS can also appear in these signals. The outputs frequencies of this divider is controlled by registers BRGL and BRGH. In order to define a frequency ratio between the master clock MCLK and the shift clock SCLK, the divider stage for MCLK is located in front of the divider by PDIV+1, whereas the divider stage for SCLK is located at the output of this divider. fMCLK = fSCLK = fPIN (19.3) 2 fPDIV (19.4) 2 In the case that the master clock is used as reference for external devices (e.g. for IIS components) and a fixed phase relation to SCLK and other timing signals is required, it is recommended to use the MCLK signal as input for the PDIV divider. If the MCLK signal is not used or a fixed phase relation is not necessary, the faster frequency fPIN can be selected as input frequency. 1 PDIV + 1 1 fPDIV = fMCLK × PDIV + 1 fPDIV = fPIN × User’s Manual USIC, V1.0 19-43 if PPPEN = 0 (19.5) if PPPEN = 1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 00 01 fC TQIN 10 11 Divide by 2 fPIN 0 fMC L K fPPP 1 Divide by PDIV + 1 fPD IV Divide by 2 SCLK fSCL K MCLK PPPEN TMEN = 0 BRGL CRQSEL BRGL BRGL USIC _PDIVTMEN0 Figure 19-11 Protocol-Related Counter (Divider Mode) 19.2.7.4 Protocol-Related Counter in Capture Mode In capture mode, the protocol-related counter stage can be used for time interval measurement (BRGL.TMEN = 1). In this case, the frequency division is disabled (reception and transmission are not possible) and the counter is working as capture timer by counting fPPP periods. When reaching its maximum value, the counter stops counting. If an event is indicated by DX0T or DX1T, the actual counter value is captured into bit field BRGH.PDIV and the counter restarts from 0. Additionally, a transmit shift interrupt event is generated (bit PSRL.TSIF becomes set). ≥1 DX0T DX1T Clear fPIN Divide by 2 0 fMC L K 1 fPPP Capture Up-Counter Capture in PDIV MCLK PPPEN BRGL TMEN = 1 BRGL USIC _PDIVTMEN1 Figure 19-12 Protocol-Related Counter (Capture Mode) The capture mode can be used to measure the baud rate in slave mode before starting data transfers, e.g. to measure the time between two edges of a data signal (by DX0T) User’s Manual USIC, V1.0 19-44 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel or of a shift clock signal (by DX1T). The conditions to activate the DXnT trigger signals can be configured in each input stage. 19.2.7.5 Time Quanta Counter The time quanta counter CTQ associated to the protocol pre-processor allows to generate time intervals for protocol-specific purposes. The length of a time quantum tq is given by the selected input frequency fCTQIN and the programmed pre-divider value. The meaning of the time quanta depend on the selected protocol, please refer to the corresponding chapters for more protocol-specific information. fC TQIN Pre-Divider tq PCTQ BRGL Time Quanta Counter CTQ Protocol Pre-Processor DCTQ BRGL USIC_CTQ Figure 19-13 Time Quanta Counter 19.2.7.6 Shift Clock Output Configuration The master clock output signal MCLKOUT available at the corresponding output pin can be configured in polarity. The MCLK signal can be generated for each protocol in order to provide a kind of higher frequency time base compared to the shift clock. The configuration mechanism of the master clock output signal MCLKOUT ensures that no shortened pulses can occur. Each MCLK period consists of two phases, an active phase, followed by a passive phase. The polarity of the MCLKOUT signal during the active phase is defined by the inverted level of bit BRGH.MCLKCFG, evaluated at the start of the active phase. The polarity of the MCLKOUT signal during the passive phase is defined by bit BRGH.MCLKCFG, evaluated at the start of the passive phase. If bit BRGH.MCLKOUT is programmed with another value, the change is taken into account with the next change between the phases. This mechanism ensures that no shorter pulses than the length of a phase occur at the MCLKOUT output. In the example shown in Figure 19-14, the value of BRGH.MCLKCFG is changed from 0 to 1 during the passive phase of MCLK period 2. The generation of the MCLKOUT signal is enabled/disabled by the protocol preprocessor, based on bit PCRH.MCLK. After this bit has become set, signal MCLKOUT is generated with the next active phase of the MCLK period. If PCRH.MCLK = 0 (MCLKOUT generation disabled), the level for the passive phase is also applied for active phase. User’s Manual USIC, V1.0 19-45 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel MCLK Period 1 MCLK Period 2 MCLK Period 3 MCLK Period 4 MCLKOUT Active Passive Active Passive Active Passive Active Passive Phase Phase Phase Phase Phase Phase Phase Phase Bit BRGH. MCLKCFG 0 1 USIC_MCLKOUTCfg Figure 19-14 Master Clock Output Configuration The shift clock output signal SCLKOUT available at the corresponding output pin can be configured in polarity and additionally, a delay of one period of fPDIV (= half SCLK period) can be introduced. The delay allows to adapt the order of the shift clock edges to the application requirements. If the delay is used, it has to be taken into account for the calculation of the signal propagation times and loop delays. The mechanism for the polarity control of the SCLKOUT signal is similar to the one for MCLKOUT, but based on bit field BRGH.SCLKCFG. The generation of the SCLKOUT signal is enabled/disabled by the protocol pre-processor. Depending on the selected protocol, the protocol pre-processor can control the generation of the SCLKOUT signal independently of the divider chain, e.g. for protocols without the need of a shift clock available at a pin, the SCLKOUT generation is disabled. User’s Manual USIC, V1.0 19-46 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.8 Baud Rate Generator Registers 19.2.8.1 Fractional Divider Registers The fractional divider registers FDRL and FDRH allow the generation of the internal frequency fFD, that is derived from the system clock fSYS. FDRL Fractional Divider Register L 15 14 13 12 11 10 (04H) 9 8 7 Reset Value: 0000H 6 5 4 DM 0 STEP rw r rw 3 2 1 0 Field Bits Type Description STEP [9:0] rw Step Value In normal divider mode STEP contains the reload value for RESULT after RESULT has reached 3FFH. In fractional divider mode STEP defines the value added to RESULT with each input clock cycle. DM [15:14] rw Divider Mode This bit fields defines the functionality of the fractional divider block. 00B The divider is switched off, fFD = 0. 01B Normal divider mode selected. 10B Fractional divider mode selected. 11B The divider is switched off, fFD = 0. 0 [13:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-47 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel FDRH Fractional Divider Register H 15 14 13 12 11 10 (06H) 9 8 7 Reset Value: 0000H 6 5 4 0 0 RESULT rw r rh 3 2 1 0 Field Bits Type Description RESULT [9:0] rh Result Value In normal divider mode this bit field is updated with fSYS according to: RESULT = RESULT + 1 In fractional divider mode this bit field is updated with fSYS according to: RESULT = RESULT + STEP If bit field DM is written with 01B or 10B, RESULT is loaded with a start value of 3FFH. 0 [15:14] rw Reserved for Future Use Must be written with 0 to allow correct fractional divider operation. 0 [13:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-48 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.8.2 Baud Rate Generator Registers The protocol-related divider for baud rate generation is controlled by the registers BRGL and BRGH. BRGL Baud Rate Generator Register L 15 14 13 12 11 10 (1CH) 9 8 Reset Value: 0000H 7 6 5 4 3 PPP TM EN EN 2 1 0 0 DCTQ PCTQ CTQSEL 0 r rw rw rw r Field Bits Type Description CLKSEL [1:0] rw Clock Selection This bit field defines the input frequency fPIN 00B The fractional divider frequency fFD is selected. 01B Reserved, no action 10B The trigger signal DX1T defines fPIN. Signal MCLK toggles with fPIN. 11B Signal MCLK corresponds to the DX1S signal and the frequency fPIN is derived from the rising edges of DX1S. TMEN 3 rw Timing Measurement Enable This bit defines the functionality of the protocolrelated divider. 0B Divider mode: fPDIV = fPPP / (PDIV + 1) Data transfers are possible and the trigger signals DX0T and DX1T are ignored. 1B Capture mode: The 10-bit counter is incremented by 1 with fPPP and stops counting when reaching its maximum value. If one of the trigger signals DX0T or DX1T become active, the counter value is captured into bit field PDIV, the counter is cleared and a transmit shift event is generated. Data transfers are not possible. User’s Manual USIC, V1.0 19-49 rw rw 0 CLKSEL r rw V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description PPPEN 4 rw Enable 2:1 Divider for fPPP This bit defines the input frequency fPPP. 0B The 2:1 divider for fPPP is disabled. fPPP = fPIN 1B The 2:1 divider for fPPP is enabled. fPPP = fMCLK = fPIN / 2. CTQSEL [7:6] rw Input Selection for CTQ This bit defines the length of a time quantum for the protocol pre-processor. 00B fCTQIN = fPDIV 01B fCTQIN = fPPP 10B fCTQIN = fSCLK 11B fCTQIN = fMCLK PCTQ [9:8] rw Pre-Divider for Time Quanta Counter This bit field defines length of a time quantum tq for the time quanta counter in the protocol pre-processor. tQ = (PCTQ + 1) / fCTQIN DCTQ [14:10] rw Denominator for Time Quanta Counter This bit field defines the number of time quanta tq taken into account by the time quanta counter in the protocol pre-processor. 0 2, 5, 15 r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-50 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel BRGH Baud Rate Generator Register H 15 14 13 12 11 M SCLKCFG CLK CFG rw rw 10 (1EH) 9 8 7 Reset Value: 0000H 6 5 4 0 PDIV r rwh 3 2 1 0 Field Bits Type Description PDIV [9:0] rwh Divider Mode: Divider Factor to Generate fPDIV This bit field defines the ratio between the input frequency fPPP and the divider frequency fPDIV. Capture Mode: Captured Time Interval The value of the counter is captured into this bit field if one of the trigger signals DX0T or DX1T are activated by the corresponding input stage. MCLKCFG 13 rw Master Clock Configuration This bit field defines the level of the passive phase of the MCLKOUT signal. 0B The passive level is 0. 1B The passive level is 1. SCLKCFG [15:14] rw Shift Clock Output Configuration This bit field defines the level of the passive phase of the SCLKOUT signal and enables/disables a delay of half of a SCLK period. 00B The passive level is 0 and the delay is disabled. 01B The passive level is 1 and the delay is disabled. 10B The passive level is 0 and the delay is enabled. 11B The passive level is 1 and the delay is enabled. 0 [12:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-51 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.9 Operating the Transmit Data Path The transmit data path is based on a 16-bit wide transmit shift register TSR and a transmit buffer TBUF. The data transfer parameters like data word length, data frame length, or the shift direction are controlled commonly for transmission and reception by the shift control registers. Register TCSRL mainly controls the transmit data handling, whereas register TCSRH monitors the transmit status. A change of the value of the data shift output signal DOUT only happens at the corresponding edge of the shift clock input signal. The level of the last data bit of a data word/frame is held constant at DOUT until the next data word begins with the next corresponding edge of the shift clock. 19.2.9.1 Transmit Buffering The transmit shift register TSR can not be directly accessed by software, because it is automatically updated with the value stored in the transmit buffer TBUF if a currently transmitted data word is finished and new data is valid for transmission. Data words can be loaded directly into TBUF by writing to one of the transmit buffer input locations TBUFx (see Page 19-53) or, optionally, by a FIFO buffer stage (see Page 19-80). Shift Data Output Shift Clock Input Shift Control Input Shift Clock Domain TSR Control of TSR Shift Control & Status of TSR Status 16 Data TCSRH TCSRL TBUF Transmit Control System Clock Domain Optional FIFO TBUFx USIC_DSUTransmit Figure 19-15 Transmit Data Path User’s Manual USIC, V1.0 19-52 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.9.2 Transmit Control Information The transmit control information TCI can be used as additional control parameter for data transfers. The TCI is derived from the address x of the written TBUFx transmit buffer input location. It can be used to dynamically change the data word length, the data frame length, or other protocol-specific functions (for more details about this topic, please refer to the corresponding protocol chapters). The way how the TCI is used in different applications can be programmed by bits WLEMD, FLEMD, SELMD, and WAMD in register TCSRL. Please note that not all possible settings lead to useful system behavior. • • • • Word length control: If TCSRL.WLEMD = 1, bit field SCTRH.WLE is updated with TCI[3:0] if a transmit buffer input location TBUFx is written. This function can be used in all protocols to dynamically change the data word length between 1 and 16 data bits per data word. Additionally, bit TCSRL.EOF is updated with TCI[4]. This function can be used in SSC master mode to control the slave select generation to finish data frames. It is recommended to program TCSRL.FLEMD = TCSRL.SELMD = 0. Frame length control: If TCSRL.FLEMD = 1, bit field SCTRH.FLE[4:0] is updated with TCI[4:0] and SCTRH.FLE[5] becomes 0 if a transmit buffer input location TBUFx is written. This function can be used in all protocols to dynamically change the data frame length between 1 and 32 data bits per data frame. It is recommended to program TCSRL.SELMD = TCSRL.WLEMD = TCSRL.WAMD = 0. Select output control: If TCSRL.SELMD = 1, bit field PCR.CTR[20:16] is updated with TCI[4:0] and PCR.CTR[23:21] becomes 0 if a transmit buffer input location TBUFx is written. This function can be used in SSC master mode to define the targeted slave device(s). It is recommended to program TCSRL.WLEMD = TCSRL.FLEMD = TCSRL.WAMD = 0. Word address control: If TCSRL.WAMD = 1, bit TCSRL.WA is updated with TCI[4] if a transmit buffer input location TBUFx is written. This function can be used in IIS mode to define if the data word is transmitted on the right or the left channel. It is recommended to program TCSRL.SELMD = TCSRL.FLEMD = 0. User’s Manual USIC, V1.0 19-53 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.9.3 Transmit Data Validation The data word in the transmit buffer TBUF can be tagged valid or invalid for transmission by bit TCSRL.TDV (transmit data valid). A combination of data flow related and event related criteria define whether the data word is considered valid for transmission. A data validation logic checks the start conditions for each data word. Depending on the result of the check, the transmit shift register is loaded with different values, according to the following rules: • • If a USIC channel is the communication master (it defines the start of each data word transfer), a data word transfer can only be started with valid data in the transmit buffer TBUF. In this case, the transmit shift register is loaded with the content of TBUF, that is not changed due to this action. If a USIC channel is a communication slave (it can not define the start itself, but has to react), a data word transfer requested by the communication master has to be started independently of the status of the data word in TBUF. If a data word transfer is requested and started by the master, the transmit shift register is loaded at the first corresponding shift clock edge either with the data word in TBUF (if it is valid for transmission) or with the level defined by bit SCTRL.PDL (if the content of TBUF has not been valid at the transmission start). In both cases, the content of TBUF is not changed. The control and status bits for the data validation are located in registers TCSRL or TCSRH. The data validation is based on the logic blocks shown in Figure 19-16. Data Shift Unit DSU TCSRL TDVTR TCSRL DX2T Shift Control Input DX2 DX2S TE Transfer Trigger TDV Transfer Gating TDEN TCSRL TBUF Data Validation TDSSM TCSRL USIC_TDV_ Figure 19-16 Transmit Data Validation • A transfer gating logic enables or disables the data word transfer from TBUF under software or under hardware control. If the input stage DX2 is not needed for data User’s Manual USIC, V1.0 19-54 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • shifting, signal DX2S can be used for gating purposes. The transfer gating logic is controlled by bit field TCSRL.TDEN. A transfer trigger logic supports data word transfers related to events, e.g. timer based or related to an input pin. If the input stage DX2 is not needed for data shifting, signal DX2T can be used for trigger purposes. The transfer trigger logic is controlled by bit TCSRL.TDVTR and the occurrence of a trigger event is indicated by bit TCSRH.TE. A data validation logic combining the inputs from the gating logic, the triggering logic and DSU signals. A transmission of the data word located in TBUF can only be started if the gating enables the start, bit TCSRL.TDV = 1, and bit TCSRH.TE = 1. The content of the transmit buffer TBUF should not be overwritten with new data while it is valid for transmission and a new transmission can start. If the content of TBUF has to be changed, it is recommended to clear bit TCSRL.TDV by writing FMRL.MTDV = 10B before updating the data. Bit TCSRL.TDV becomes automatically set when TBUF is updated with new data. Another possibility are the interrupts TBI (for ASC and IIC) or RSI (for SSC and IIS) indicating that a transmission has started. While a transmission is in progress, TBUF can be loaded with new data. In this case the user has to take care that an update of the TBUF content takes place before a new transmission starts. With this structure, the following data transfer functionality can be achieved: • • • • If bit TCSRL.TDSSM = 0, the content of the transmit buffer TBUF is always considered as valid for transmission. The transfer trigger mechanism can be used to start the transfer of the same data word based on the selected event (e.g. on a timer base or an edge at a pin) to realize a kind of life-sign mechanism. Furthermore, in slave mode, it is ensured that always a correct data word is transmitted instead of the passive data level. Bit TCSRL.TDSSM = 1 has to be programmed to allow word-by-word data transmission with a kind of single-shot mechanism. After each transmission start, a new data word has to be loaded into the transmit buffer TBUF, either by software write actions to one of the transmit buffer input locations TBUFx or by an optional data buffer (e.g. FIFO buffer). To avoid that data words are sent out several times or to allow data handling with an additional data buffer (e.g. FIFO), bit TCSRL.TDSSM has to be 1. Bit TCSRL.TDV becoming automatically set when a new data word is loaded into the transmit buffer TBUF, a transmission start can be requested by a write action of the data to be transmitted to at least the low byte of one of the transmit buffer input locations TBUFx. The additional information TCI can be used to control the data word length or other parameters independently for each data word by a single write access. Bit field FMRL.MTDV allows software driven modification (set or clear) of bit TCSRL.TDV. Together with the gating control bit field TCSRL.TDEN, the user can set up the transmit data word without starting the transmission. A possible program User’s Manual USIC, V1.0 19-55 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel sequence could be: clear TCSRL.TDEN = 00B, write data to TBUFx, clear TCSRL.TDV by writing FMRL.MTDV = 10B, re-enable the gating with TCSRL.TDEN = 01B and then set TCSRL.TDV under software control by writing FMRL.MTDV = 01B. 19.2.10 Operating the Receive Data Path The receive data path is based on two 16-bit wide receive shift registers RSR0 and RSR1 and a receive buffer for each of them (RBUF0 and RBUF1). The data transfer parameters like data word length, data frame length, or the shift direction are controlled commonly for transmission and reception by the shift control registers. Register RBUF01SRL monitors the status of RBUF0 and register RBUF01SRH of RBUF1. 19.2.10.1 Receive Buffering The receive shift registers cannot be directly accessed by software, but their contents are automatically loaded into the receive buffer registers RBUF0 (or RBUF1 respectively) if a complete data word has been received or the frame is finished. The received data words in RBUF0 or RBUF1 can be read out in the correct order directly from register RBUF or, optionally, from a FIFO buffer stage (see Page 19-80). Shift Clock Domain RSR1 Shift Data Input Shift Clock Input Shift Control Input RSR0 Shift Control & Status Status of RSR0 RBUF01 SRL Status of RSR1 RBUF01 SRH 16 16 Data Data RBUF0 RBUF1 Receive Control RBUFSR RBUF System Clock Domain USIC_DSUReceive Figure 19-17 Receive Data Path User’s Manual USIC, V1.0 19-56 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.10.2 Baud Rate Constraints The following baud rate constraints have to be respected to ensure correct data reception and buffering. The user has to take care about these restrictions when selecting the baud rate and the data word length with respect to the module clock frequency fSYS. • • • • A received data word in a receiver shift register RSRx must be held constant for at least 4 periods of fSYS in order to ensure correct loading of the related receiver buffer register RBUFx. The shift control signal has to be constant inactive for at least 5 periods of fSYS between two consecutive frames in order to correctly detect the end of a frame. The shift control signal has to be constant active for at least 1 period of fSYS in order to correctly detect a frame (shortest frame). A minimum setup and hold time of the shift control signal with respect to the shift clock signal has to be ensured. User’s Manual USIC, V1.0 19-57 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.11 Transfer Control and Status Registers 19.2.11.1 Shift Control Registers The data shift unit is controlled by the following registers. The values in these registers are applied for data transmission and reception. Please note that the shift control settings SDIR, WLE, and FLE are shared between transmitter and receiver. They are internally “frozen” for a each data word transfer in the transmitter with the first transmit shift clock edge and with the first receive shift clock edge in the receiver. The software has to take care that updates of these bit fields by software are done coherently (e.g. refer to the receiver start event indication PSR.RSIF). SCTRL Shift Control Register L 15 14 13 12 (30H) 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 0 0 TRM DOCFG 0 PDL S DIR r rw rw r rw rw Field Bits Type Description SDIR 0 rw Shift Direction This bit defines the shift direction of the data words for transmission and reception. Shift LSB first. The first data bit of a data word 0B is located at bit position 0. 1B Shift MSB first. The first data bit of a data word is located at the bit position given by bit field SCTRH.WLE. PDL 1 rw Passive Data Level This bit defines the output level at the shift data output signal when no data is available for transmission. The PDL level is output with the first relevant transmit shift clock edge of a data word. 0B The passive data level is 0. 1B The passive data level is 1. DOCFG [7:6] rw Data Output Configuration This bit defines the relation between the internal shift data value and the data output signal DOUT. X0B DOUT = shift data value X1B DOUT = inverted shift data value User’s Manual USIC, V1.0 19-58 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description TRM [9:8] rw Transmission Mode This bit field describes how the shift control signal is interpreted by the DSU. Data transfers are only possible while the shift control signal is active. 00B The shift control signal is considered as inactive and data frame transfers are not possible. 01B The shift control signal is considered active if it is at 1-level. This is the setting to be programmed to allow data transfers. 10B The shift control signal is considered active if it is at 0-level. It is recommended to avoid this setting and to use the inversion in the DX2 stage in case of a low-active signal. 11B The shift control signal is considered active without referring to the actual signal level. Data frame transfer is possible after each edge of the signal. 0 [5:2], [15:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-59 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel SCTRH Shift Control Register H 15 14 13 12 (32H) 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 0 WLE 0 FLE r rwh r rwh 1 0 Field Bits Type Description FLE [5:0] rwh Frame Length This bit field defines how many bits are transferred within a data frame. A data frame can consist of several concatenated data words. If TCSRL.FLEMD = 1, the value can be updated automatically by the data handler. WLE [11:8] rwh Word Length This bit field defines the data word length (amount of bits that are transferred in each data word) for reception and transmission. The data word is always right-aligned in the data buffer at the bit positions [WLE down to 0]. If TCSRL.WLEMD = 1, the value can be updated automatically by the data handler. 0H The data word contains 1 data bit located at bit position 0. 1H The data word contains 2 data bits located at bit positions [1:0]. ... FH The data word contains 16 data bits located at bit positions [15:0]. 0 [7:6], [15:12] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-60 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.11.2 Transmission Control and Status Registers The data transmission is controlled by register TCSRL. TCSRL Transmit Control/Status Register L 15 14 13 12 11 10 9 0 WA TD VTR TDEN 0 r rwh rw rw r (3CH) 8 7 Reset Value: 0000H 6 5 TD TDV EOF SOF SSM rw rh rwh rwh 4 0 r 3 2 1 0 WA FLE SEL WLE MD MD MD MD rw rw rw rw Field Bits Type Description WLEMD 0 rw WLE Mode This bit enables the data handler to automatically update the bit field SCTRH.WLE by the transmit control information TCI[3:0] and bit TCSR.EOF by TCI[4] (see Page 19-53). If enabled, an automatic update takes place when new data is loaded to register TBUF, either by writing to one of the transmit buffer input locations TBUFx or by an optional data buffer. The automatic update of SCTRH.WLE and 0B TCSR.EOF is disabled. 1B The automatic update of SCTR.WLE and TCSR.EOF is enabled. SELMD 1 rw Select Mode This bit can be used mainly for the SSC protocol. It enables the data handler to automatically update bit field PCRH.CTR[20:16] by the transmit control information TCI[4:0] and clear bit field PCRH.CTR[23:21] (see Page 19-53). If enabled, an automatic update takes place when new data is loaded to register TBUF, either by writing to one of the transmit buffer input locations TBUFx or by an optional data buffer. The automatic update of PCRH.CTR[23:16] is 0B disabled. 1B The automatic update of PCRH.CTR[23:16] is disabled. User’s Manual USIC, V1.0 19-61 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description FLEMD 2 rw FLE Mode This bit enables the data handler to automatically update bits SCTRH.FLE[4:0] by the transmit control information TCI[4:0] and to clear bit SCTRH.FLE[5] (see Page 19-53). If enabled, an automatic update takes place when new data is loaded to register TBUF, either by writing to one of the transmit buffer input locations TBUFx or by an optional data buffer. The automatic update of FLE is disabled. 0B 1B The automatic update of FLE is enabled. WAMD 3 rw WA Mode This bit can be used mainly for the IIS protocol. It enables the data handler to automatically update bit TCSRL.WA by the transmit control information TCI[4] (see Page 19-53). If enabled, an automatic update takes place when new data is loaded to register TBUF, either by writing to one of the transmit buffer input locations TBUFx or by an optional data buffer. 0B The automatic update of bit WA is disabled. 1B The automatic update of bit WA is enabled. SOF 5 rw Start Of Frame This bit is only taken into account for the SSC protocol, otherwise it is ignored. It indicates that the data word in TBUF is considered as the first word of a new SSC frame if it is valid for transmission (TCSRL.TDV = 1). This bit becomes cleared when the TBUF data word is transferred to the transmit shift register. 0B The data word in TBUF is not considered as first word of a frame. The data word in TBUF is considered as first 1B word of a frame. A currently running frame is finished and MSLS becomes deactivated (respecting the programmed delays). User’s Manual USIC, V1.0 19-62 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description EOF 6 rwh End Of Frame This bit is only taken into account for the SSC protocol, otherwise it is ignored. It can be modified automatically by the data handler if bit WLEMD = 1. It indicates that the data word in TBUF is considered as the last word of an SSC frame. If it is the last word, the MSLS signal becomes inactive after the transfer, respecting the programmed delays. This bit becomes cleared when the TBUF data word is transferred to the transmit shift register. The data word in TBUF is not considered as 0B last word of an SSC frame. 1B The data word in TBUF is considered as last word of an SSC frame. TDV 7 rh Transmit Data Valid This bit indicates that the data word in the transmit buffer TBUF can be considered as valid for transmission. The TBUF data word can only be sent out if TDV = 1. It is automatically set when data is moved to TBUF (by writing to one of the transmit buffer input locations TBUFx, or optionally, by the bypass or FIFO mechanism). The data word in TBUF is not valid for 0B transmission. 1B The data word in TBUF is valid for transmission and a transmission start is possible. New data should not be written to a TBUFx input location while TDV = 1. User’s Manual USIC, V1.0 19-63 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description TDSSM 8 rw TBUF Data Single Shot Mode This bit defines if the data word TBUF data is considered as permanently valid or if the data should only be transferred once. 0B The data word in TBUF is not considered as invalid after it has been loaded into the transmit shift register. The loading of the TBUF data into the shift register does not clear TDV. 1B The data word in TBUF is considered as invalid after it has been loaded into the shift register. In ASC and IIC mode, TDV is cleared with the TBI event, whereas in SSC and IIS mode, it is cleared with the RSI event. TDSSM = 1 has to be programmed if an optional data buffer is used. TDEN [11:10] rw TBUF Data Enable This bit field controls the gating of the transmission start of the data word in the transmit buffer TBUF. 00B A transmission start of the data word in TBUF is disabled. If a transmission is started, the passive data level is sent out. 01B A transmission of the data word in TBUF can be started if TDV = 1. 10B A transmission of the data word in TBUF can be started if TDV = 1 while DX2S = 0. 11B A transmission of the data word in TBUF can be started if TDV = 1 while DX2S = 1. TDVTR 12 rw TBUF Data Valid Trigger This bit enables the transfer trigger unit to set bit TCSRH.TE if the trigger signal DX2T becomes active for event driven transfer starts, e.g. timer-based or depending on an event at an input pin. Bit TDVTR has to be 0 for protocols where the input stage DX2 is used for data shifting. 0B Bit TCSRH.TE is permanently set. 1B Bit TCSRH.TE is set if DX2T becomes active while TDV = 1. User’s Manual USIC, V1.0 19-64 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description WA 13 rwh Word Address This bit is only taken into account for the IIS protocol, otherwise it is ignored. It can be modified automatically by the data handler if bit WAMD = 1. Bit WA defines for which channel the data stored in TBUF will be transmitted. The data word in TBUF will be transmitted after 0B a falling edge of WA has been detected (referring to PSR.WA). 1B The data word in TBUF will be transmitted after a rising edge of WA has been detected (referring to PSR.WA). 0 4, 9, [15:14] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-65 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The data transmission status is monitored by register TCSRH. TCSRH Transmit Control/Status Register H 15 14 13 (3EH) 7 Reset Value: 0000H 12 11 10 9 8 6 5 4 3 0 TE TVC TV 0 T SOF 0 r rh rh rh r rh r 2 1 0 Field Bits Type Description TSOF 8 rh Transmitted Start Of Frame This bit indicates if the latest start of a data word transmission has taken place for the first data word of a new data frame. This bit is updated with the transmission start of each data word. 0B The latest data word transmission has not been started for the first word of a data frame. 1B The latest data word transmission has been started for the first word of a data frame. TV 10 rh Transmission Valid This bit represents the transmit buffer underflow and indicates if the latest start of a data word transmission has taken place with a valid data word from the transmit buffer TBUF. This bit is updated with the transmission start of each data word. The latest start of a data word transmission has 0B taken place while no valid data was available. As a result, the transmission of a data words with passive level (SCTRL.PDL) has been started. 1B The latest start of a data word transmission has taken place with valid data from TBUF. TVC 11 rh Transmission Valid Cumulated This bit cumulates the transmit buffer underflow indication TV. It is cleared automatically together with bit TV and has to be set by writing FMRL.ATVC = 1. 0B Since TVC has been set, at least one data buffer underflow condition has occurred. 1B Since TVC has been set, no data buffer underflow condition has occurred. User’s Manual USIC, V1.0 19-66 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description TE 12 rh Trigger Event If the transfer trigger mechanism is enabled, this bit indicates that a trigger event has been detected (DX2T = 1) while TCSRL.TDV = 1. If the event trigger mechanism is disabled, the bit TE is permanently set. It is cleared by writing FMRL.MTDV = 10B or when the data word located in TBUF is loaded into the shift register. 0B The trigger event has not yet been detected. A transmission of the data word in TBUF can not be started. 1B The trigger event has been detected (or the trigger mechanism is switched off) and a transmission of the data word in TBUF can not be started. 0 [7:0], 9, [15:13] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-67 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.11.3 Flag Modification Registers The flag modification registers FMRL, FMRH allow the modification of control and status flags related to data handling by using only write accesses. Read accesses to FMRL, FMRH always deliver 0 at all bit positions. Additionally, the service request outputs of this USIC channel can be activated by software (the activation is triggered by the write access and is deactivated automatically). FMRL Flag Modification Register L 15 14 13 12 11 10 C C RDV RDV 1 0 w w (38H) 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 A TVC 0 MTDV r w r w Field Bits Type Description MTDV [1:0] w Modify Transmit Data Valid Writing to this bit field can modify bits TCSRL.TDV and TCSRH.TE to control the start of a data word transmission by software. 00B No action. 01B Bit TDV is set, TE is unchanged. 10B Bits TDV and TE are cleared. 11B Reserved ATVC 4 w Activate Bit TVC Writing to this bit can set bit TCSRH.TVC to start a new cumulation of the transmit buffer underflow condition. 0B No action. 1B Bit TCSRH.TVC is set. CRDV0 14 w Clear Bits RDV for RBUF0 Writing 1 to this bit clears bits RBUF01SRL.RDV00 and RBUF01SRH.RDV10 to declare the received data in RBUF0 as no longer valid (to emulate a read action). 0B No action. 1B Bits RBUF01SRL.RDV00 and RBUF01SRH.RDV10 are cleared. User’s Manual USIC, V1.0 19-68 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description CRDV1 15 w Clear Bit RDV for RBUF1 Writing 1 to this bit clears bits RBUF01SRL.RDV01 and RBUF01SRH.RDV11 to declare the received data in RBUF1 as no longer valid (to emulate a read action). No action. 0B 1B Bits RBUF01SRL.RDV01 and RBUF01SRH.RDV11 are cleared. 0 [3:2], [13:5] r Reserved Read as 0; should be written with 0. FMRH Flag Modification Register H 15 14 13 12 11 (3AH) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 SI O3 SI O2 SI O1 SI O0 r w w w w Field Bits Type Description SIO0, SIO1, SIO2, SIO3 0, 1, 2, 3 w Set Interrupt Output SRx Writing a 1 to this bit field activates the service request output SRx of this USIC channel. It has no impact on service request outputs of other USIC channels. 0B No action. 1B The service request output SRx is activated. 0 [15:4] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-69 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.12 Data Buffer Registers 19.2.12.1 Transmit Buffer Locations The 32 independent data input locations TBUF00 to TBUF31 are address locations that can be used as data entry locations for the transmit buffer. Data written to one of these locations will appear in a common register TBUF. Additionally, the 5 bit coding of the number [31:0] of the addressed data input location represents the transmit control information TCI (please refer to the protocol sections for more details). The internal transmit buffer register TBUF contains the data that will be loaded to the transmit shift register for the next transmission of a data word. It can be read out at all TBUF00 to TBUF31 addresses. TBUFx (x = 00-31) Transmit Buffer Input Location x 15 14 13 12 11 10 9 (80H + x*4) 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 TDATA rwh Field Bits Type Description TDATA [15:0] rwh User’s Manual USIC, V1.0 Transmit Data This bit field contains the data to be transmitted (read view). A data write action to at least the low byte of TDATA sets TCSRL.TDV. 19-70 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.12.2 Receive Buffer Registers RBUF0, RBUF1 The receive buffer register RBUF0 contains the data received from RSR0. A read action does not change the status of the receive data from “not yet read = valid” to “already read = not valid”. RBUF0 Receiver Buffer Register 0 15 14 13 12 11 (50H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 DSR0 rh Field Bits Type Description DSR0 [15:0] rh Data of Shift Register 0 The receive buffer status register RBUF01SRL provides the status of the data in receive buffer RBUF0. RBUF01SRL Receiver Buffer 01 Status Register L (60H) 15 14 13 12 11 DS RDV RDV 0 01 00 0 rh r rh rh 10 9 8 P PAR ERR 0 0 rh rh 7 6 0 SOF 0 0 WLEN0 r rh r rh Field Bits Type Description WLEN0 [3:0] rh User’s Manual USIC, V1.0 Reset Value: 0000H 5 4 3 2 1 0 Received Data Word Length in RBUF0 This bit field indicates how many bits have been received within the last data word stored in RBUF0. This number indicates how many data bits have to be considered as receive data, whereas the other bits in RBUF0 have been cleared automatically. The received bits are always right-aligned. 0H One bit has been received. ... Sixteen bits have been received. FH 19-71 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description SOF0 6 rh Start of Frame in RBUF0 This bit indicates whether the data word in RBUF0 has been the first data word of a data frame. 0B The data in RBUF0 has not been the first data word of a data frame. 1B The data in RBUF0 has been the first data word of a data frame. PAR0 8 rh Protocol-Related Argument in RBUF0 This bit indicates the value of the protocol-related argument. This value is elaborated depending on the selected protocol and adds additional information to the data word in RBUF0. The meaning of this bit is described in the corresponding protocol chapter. PERR0 9 rh Protocol-related Error in RBUF0 This bit indicates if the value of the protocol-related argument meets an expected value. This value is elaborated depending on the selected protocol and adds additional information to the data word in RBUF0. The meaning of this bit is described in the corresponding protocol chapter. 0B The received protocol-related argument PAR matches the expected value. The reception of the data word sets bit PSR.RIF and can generate a receive interrupt. 1B The received protocol-related argument PAR does not match the expected value. The reception of the data word sets bit PSR.AIF and can generate an alternative receive interrupt. User’s Manual USIC, V1.0 19-72 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description RDV00 13 rh Receive Data Valid in RBUF0 This bit indicates the status of the data content of register RBUF0. This bit is identical to bit RBUF01SRH.RDV10 and allows consisting reading of information for the receive buffer registers. It is set when a new data word is stored in RBUF0 and automatically cleared if it is read out via RBUF. 0B Register RBUF0 does not contain data that has not yet been read out. 1B Register RBUF0 contains data that has not yet been read out. RDV01 14 rh Receive Data Valid in RBUF1 This bit indicates the status of the data content of register RBUF1. This bit is identical to bit RBUF01SRH.RDV11 and allows consisting reading of information for the receive buffer registers. It is set when a new data word is stored in RBUF1 and automatically cleared if it is read out via RBUF. 0B Register RBUF1 does not contain data that has not yet been read out. 1B Register RBUF1 contains data that has not yet been read out. DS0 15 rh Data Source This bit indicates which receive buffer register (RBUF0 or RBUF1) is currently visible in registers RBUF(D) and in RBUFSR for the associated status information. It indicates which buffer contains the oldest data (the data that has been received first). This bit is identical to bit RBUF01SRH.DS1 and allows consisting reading of information for the receive buffer registers. 0B The register RBUF contains the data of RBUF0 (same for associated status information). 1B The register RBUF contains the data of RBUF1 (same for associated status information). 0 [5:4], 7, [12:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-73 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The receive buffer register RBUF1 contains the data received from RSR1. A read action does not change the status of the receive data from “not yet read = valid” to “already read = not valid”. RBUF1 Receiver Buffer Register 1 15 14 13 12 11 (54H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 DSR1 rh Field Bits Type Description DSR1 [15:0] rh Data of Shift Register 1 The receive buffer status register RBUF01SRH provides the status of the data in receive buffer RBUF1. RBUF01SRH Receiver Buffer 01 Status Register H (62H) 15 14 13 12 11 DS RDV RDV 1 11 10 0 rh r rh rh 10 9 8 P PAR ERR 1 1 rh rh 7 6 0 SOF 1 0 WLEN1 r rh r rh Field Bits Type Description WLEN1 [3:0] rh User’s Manual USIC, V1.0 Reset Value: 0000H 5 4 3 2 1 0 Received Data Word Length in RBUF1 This bit field indicates how many bits have been received within the last data word stored in RBUF1. This number indicates how many data bits have to be considered as receive data, whereas the other bits in RBUF1 have been cleared automatically. The received bits are always right-aligned. 0H One bit has been received. ... FH Sixteen bits have been received. 19-74 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description SOF1 6 rh Start of Frame in RBUF1 This bit indicates whether the data word in RBUF1 has been the first data word of a data frame. 0B The data in RBUF1 has not been the first data word of a data frame. 1B The data in RBUF1 has been the first data word of a data frame. PAR1 8 rh Protocol-Related Argument in RBUF1 This bit indicates the value of the protocol-related argument. This value is elaborated depending on the selected protocol and adds additional information to the data word in RBUF1. The meaning of this bit is described in the corresponding protocol chapter. PERR1 9 rh Protocol-related Error in RBUF1 This bit indicates if the value of the protocol-related argument meets an expected value. This value is elaborated depending on the selected protocol and adds additional information to the data word in RBUF1. The meaning of this bit is described in the corresponding protocol chapter. 0B The received protocol-related argument PAR matches the expected value. The reception of the data word sets bit PSR.RIF and can generate a receive interrupt. 1B The received protocol-related argument PAR does not match the expected value. The reception of the data word sets bit PSR.AIF and can generate an alternative receive interrupt. RDV10 13 rh Receive Data Valid in RBUF0 This bit indicates the status of the data content of register RBUF0. This bit is identical to bit RBUF01SRL.RDV00 and allows consisting reading of information for the receive buffer registers. 0B Register RBUF0 does not contain data that has not yet been read out. 1B Register RBUF0 contains data that has not yet been read out. User’s Manual USIC, V1.0 19-75 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description RDV11 14 rh Receive Data Valid in RBUF1 This bit indicates the status of the data content of register RBUF1. This bit is identical to bit RBUF01SRL.RDV01 and allows consisting reading of information for the receive buffer registers. Register RBUF1 does not contain data that has 0B not yet been read out. 1B Register RBUF1 contains data that has not yet been read out. DS1 15 rh Data Source This bit indicates which receive buffer register (RBUF0 or RBUF1) is currently visible in registers RBUF(D) and in RBUFSR for the associated status information. It indicates which buffer contains the oldest data (the data that has been received first). This bit is identical to bit RBUF01SRL.DS0 and allows consisting reading of information for the receive buffer registers. The register RBUF contains the data of RBUF0 0B (same for associated status information). 1B The register RBUF contains the data of RBUF1 (same for associated status information). 0 [5:4], 7, [12:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-76 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.12.3 Receive Buffer Registers RBUF, RBUFD, RBUFSR The receiver buffer register RBUF shows the content of the either RBUF0 or RBUF1, depending on the order of reception. Always the oldest data (the data word that has been received first) from both receive buffers can be read from RBUF. It is recommended to read out the received data from RBUF instead of RBUF0/1. With a read access of at least the low byte of RBUF, the status of the receive data is automatically changed from “not yet read = valid” to “already read = not valid”, the content of RBUF becomes updated, and the next received data word becomes visible in RBUF. RBUF Receiver Buffer Register 15 14 13 12 11 (5CH) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 DSR rh Field Bits Type Description DSR [15:0] rh User’s Manual USIC, V1.0 Received Data This bit field monitors the content of either RBUF0 or RBUF1, depending on the reception sequence. 19-77 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel If a debugger should be used to monitor the received data, the automatic update mechanism has to be de-activated to guaranty data consistency. Therefore, the receiver buffer register for debugging RBUFD is available. It is similar to RBUF, but without the automatic update mechanism by a read action. So a debugger (or other monitoring function) can read RBUFD without disturbing the receive sequence. RBUFD Receiver Buffer Register for Debugger (4CH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 DSR rh Field Bits Type Description DSR [15:0] rh User’s Manual USIC, V1.0 Data from Shift Register Same as RBUF.DSR, but without releasing the buffer after a read action. 19-78 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The receive buffer status register RBUFSR provides the status of the data in receive buffers RBUF and RBUFD. If bits RBUF01SRL.DS0 (or RBUF01SRH.DS1) are 0, the content of RBUF01SRL is monitored in RBUFSR, otherwise the content of RBUF01SRH is shown. RBUFSR Receiver Buffer Status Register 15 DS 14 13 12 RDV RDV 1 0 rh rh 11 10 9 8 P PAR ERR 0 rh (58H) r rh Reset Value: 0000H 7 6 0 SOF 0 WLEN r rh r rh rh 5 4 3 2 1 0 Field Bits Type Description WLEN [3:0] rh Received Data Word Length in RBUF or RBUFD Description see RBUF01SRL.WLEN0 or RBUF01SRH.WLEN1. SOF 6 rh Start of Frame in RBUF or RBUFD Description see RBUF01SRL.SOF0 or RBUF01SRH.SOF1. PAR 8 rh Protocol-Related Argument in RBUF or RBUFD Description see RBUF01SRL.PAR0 or RBUF01SRH.PAR1. PERR 9 rh Protocol-related Error in RBUF or RBUFD Description see RBUF01SRL.PERR0 or RBUF01SRH.PERR1. RDV0 13 rh Receive Data Valid in RBUF or RBUFD Description see RBUF01SRL.RDV00 or RBUF01SRH.RDV10. RDV1 14 rh Receive Data Valid in RBUF or RBUFD Description see RBUF01SRL.RDV01 or RBUF01SRH.RDV11. DS 15 rh Data Source of RBUF or RBUFD Description see RBUF01SRL.DS0 or RBUF01SRH.DS1. 0 [5:4], 7, [12:10] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-79 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.13 Operating the FIFO Data Buffer The FIFO data buffers of a USIC module are built in a similar way, with transmit buffer and receive buffer capability for each channel. Depending on the device, the amount of available FIFO buffer area can vary. In the XC2300, totally 64 buffer entries can be distributed among the transmit or receive FIFO buffers of both channels of the USIC module. Buffered Receive Data OUTR Transmit Data INx User Interface UxC0 Buffered Receive Data OUTR Transmit Data INx UxC1 Receive FIFO Transmit FIFO Receive Data RBUF Buffered Transmit Data TBUF Data Shift Unit (DSU) Shift Data Input Shift Data Output Bypass Receive FIFO Transmit FIFO Receive Data RBUF Buffered Transmit Data TBUF Data Shift Unit (DSU) Shift Data Input Shift Data Output Bypass USIC_FIFOBidirect Figure 19-18 FIFO Buffer Overview In order to operate the FIFO data buffers, the following issues have to be considered: • • FIFO buffer available and selected: The transmit FIFO buffer and the bypass structure are only available if CCFG.TB = 1, whereas the receive FIFO buffer is only available if CCFG.RB = 1. It is recommended to configure all buffer parameters while there is no data traffic for this USIC channel and the FIFO mechanism is disabled by TBCTRH.SIZE = 0 (for transmit buffer) or RBCTRH.SIZE = 0 (for receive buffer). The allocation of a buffer area by writing TBCTRL or RBCTRL has to be done while the corresponding FIFO buffer is disabled. The FIFO buffer interrupt control bits can be modified independently of data traffic. FIFO buffer setup: The total amount of available FIFO buffer entries limits the length of the transmit and receive buffers for each USIC channel. User’s Manual USIC, V1.0 19-80 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • Bypass setup: In addition to the transmit FIFO buffer, a bypass can be configured as described on Page 19-87. 19.2.13.1 FIFO Buffer Partitioning If available, the FIFO buffer area consists of a defined number of FIFO buffer entries, each containing a data part and the associated control information (RCI for receive data, TCI for transmit data). One FIFO buffer entry represents the finest granularity that can be allocated to a receive FIFO buffer or a transmit FIFO buffer. All available FIFO buffer entries of a USIC module are located one after the other in the FIFO buffer area. The overall counting starts with FIFO entry 0, followed by 1, 2, etc. For each USIC module, a certain number of FIFO entries is available, that can be allocated to the channels of the same USIC module. It is not possible to assign FIFO buffer area to USIC channels that are not located within the same USIC module. For each USIC channel, the size of the transmit and the receive FIFO buffer can be chosen independently. For example, it is possible to allocate the full amount of available FIFO entries as transmit buffer for one USIC channel. Some possible scenarios of FIFO buffer partitioning are shown in Figure 19-19. Each FIFO buffer consists of a set of consecutive FIFO entries. The size of a FIFO data buffer can only be programmed as a power of 2, starting with 2 entries, then 4 entries, then 8 entries, etc. A FIFO data buffer can only start at a FIFO entry aligned to its size. For example, a FIFO buffer containing n entries can only start with FIFO entry 0, n, 2×n, 3×n, etc. and consists of the FIFO entries [x×n, (x+1)×n-1], with x being an integer number (incl. 0). It is not possible to have “holes” with unused FIFO entries within a FIFO buffer, whereas there can be unused FIFO entries between two FIFO buffers. Available Buffer Area Available Buffer Area Transmit Data Area for CH0 Transmit Data Area for CH1 Receive Data Area for CH0 Receive Data Area for CH0 Transmit Data Area for CH0 Scenario 2 Scenario 3 Scenario 4 Available Buffer Area Available Buffer Area Transmit Data Area for CH1 Transmit Data Area for CH1 Receive Data Area for CH1 Unused Entries Transmit Data Area for CH0 Receive Data Area for CH0 Scenario 1 USIC_FifoPart Figure 19-19 FIFO Buffer Partitioning User’s Manual USIC, V1.0 19-81 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The data storage inside the FIFO buffers is based on pointers, that are internally updated whenever the data contents of the FIFO buffers have been modified. This happens automatically when new data is put into a FIFO buffer or the oldest data is taken from a FIFO buffer. As a consequence, the user program does not need to modify the pointers for data handling. Only during the initialization phase, the start entry of a FIFO buffer has to be defined by writing the number of the first FIFO buffer entry in the FIFO buffer to the corresponding bit field DPTR in register RBCTRL (for a receive FIFO buffer) or TBCTRL (for a transmit FIFO buffer) while the related bit field RBCTRH.SIZE=0 (or TBCTRH.SIZE = 0, respectively). The assignment of buffer entries to a FIFO buffer (regarding to size and pointers) must not be changed by software while the related USIC channel is taking part in data traffic. 19.2.13.2 Data Buffer Events and Interrupts The transmit FIFO buffer mechanism detects the following events, that can lead to interrupts (if enabled). • • Standard transmit buffer event: The filling level of the transmit buffer (given by TRBSRH.TBFLVL) exceeds (TBCTRH.LOF = 1) or falls below (TBCTRH.LOF = 0) a programmed limit (TBCTRL.LIMIT). The trigger of this event is the transition from equal to below or bigger, not the fact of being below or above. If the standard transmit buffer event is used to indicate that new data has to be written to one of the INx locations, TBCTRH.LOF = 0 should be programmed. Transmit buffer error event: The software has written to a full buffer. The written value is ignored. User’s Manual USIC, V1.0 19-82 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel TBCTRH TRBSCR LOF CSTBI Clear TRBSRL TBCTRH TBCTRH STBI STBIEN STBINP Set Transfer Data to TBUF Event Write Data to INx Event LIMIT equal to TBFLVL 0 1 TRBSCR CTBERI 2 .. . TRBSRL TBERI Transmit Buffer Error Event TBCTRH (Write to full transmit buffer) .. . TBCTRH TBERIEN Set SR0 SR3 Standard Transmit Buffer Event & Clear Standard Transmit Buffer Interrupt ATBINP Transmit Buffer Error Interrupt 2 . . . SR0 . . . SR3 USIC_TBInts Figure 19-20 Transmit Buffer Events The receive FIFO buffer mechanism detects the following events, that can lead to an interrupt (if enabled). The standard receive buffer event and the alternative receive buffer event can be programmed to two different modes, one referring to the filling level of the receive buffer, the other one related to a bit position in the receive control information RCI of the data word that becomes available in OUTRL. If the interrupt generation refers to the filling level of the receive FIFO buffer, only the standard receive buffer event is used, whereas the alternative receive buffer event is not used. This mode can be selected to indicate that a certain amount of data has been received, without regarding the content of the associated RCI. If the interrupt generation refers to RCI, the filling level is not taken into account. Each time a new data word becomes available in OUTRL, an event is detected. If bit RCI[4] = 0, a standard receive buffer event is signaled, otherwise an alternative receive buffer device (RCI[4] = 1). Depending on the selected protocol and the setting of RBCTRH.RCIM, the value of RCI[4] can hold different information that can be used for protocol-specific interrupt handling (see protocol sections for more details). • Standard receive buffer event in filling level mode (RBCTRH.RNM = 0): The filling level of the receive buffer (given by TRBSRH.RBFLVL) exceeds (RBCTRH.LOF = 1) or falls below (RBCTRH.LOF = 0) a programmed limit (RBCTRL.LIMIT). The trigger of this event is the transition from equal to below or User’s Manual USIC, V1.0 19-83 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • • • greater, not the fact of being below or above. If the standard receive buffer event is used to indicate that new data has to be read from OUTRL, RBCTRH.LOF = 1 should be programmed. Standard receive buffer event in RCI mode (RBCTRH.RNM = 1): If the OUTR stage is updated with a new data value with RCI[4] = 0. Alternative receive buffer event in filling level mode (RBCTRH.RNM = 0): not used Alternative receive buffer event in RCI mode (RBCTRH.RNM = 1): If the OUTR stage is updated with a new value with RCI[4] = 1. Receive buffer error event: The software reads from an empty buffer. The read data is invalid. Figure 19-21 shows the receiver buffer events and interrupts in filling level mode. Note: A buffer event in filling level mode occurs only when the filling level transitions away from the threshold value. Transitions starting with a filling level other than the threshold level generate no trigger event. RBCTRH TRBSCR LOF CSRBI Clear TRBSRL RBCTRH RBCTRH SRBI STBIEN SRBINP Set Data Read Out Event New Data Received Event LIMIT equal to RBFLVL 0 1 TRBSCR CRBERI Receive Buffer Error Event & Clear Standard Receive Buffer Interrupt 2 .. . .. . SR3 Standard Receive Buffer Event TRBSRL RBCTRH RBCTRH RBERI RBERIEN ARBINP Set SR0 Receive Buffer Error Interrupt (Read from empty receive buffer) 2 . . . SR0 . . . SR3 USIC _RBRNM0 Figure 19-21 Receiver Buffer Events in Filling Level Mode User’s Manual USIC, V1.0 19-84 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Figure 19-22 shows the receiver buffer events and interrupts in RCI mode. OUTRH TRBSCR RCI[4] CSRBI Clear TRBSRL RBCTRH RBCTRH SRBI SRBIEN SRBINP 2 Set New Data in OUTRL Event 0 1 Standard Receive Buffer Event Standard Receive Buffer Interrupt Alternate Receive Buffer Event Alternate Receive Buffer Interrupt Set CARBI Clear TRBSCR TRBSCR CRBERI Clear Receive Buffer Error Event .. . SR0 .. . SR3 . . . SR0 . . . SR3 2 ARBI ARBIEN ARBINP TRBSRL RBCTRH RBCTRH TRBSRL RBCTRH RBERI RBERIEN Set Receive Buffer Error Interrupt (Read from empty receive buffer) 2 . . . SR0 . . . SR3 USIC _RBRNM1 Figure 19-22 Receiver Buffer Events in RCI Mode Table 19-7 shows the registers, bits and bit fields to indicate the buffer events and to control the interrupts related to the FIFO buffers (transmit and the receive) of a USIC channel. Table 19-7 Buffer Events and Interrupt Handling Event Indication Indication Flag cleared by Interrupt enabled by SRx Output selected by Standard transmit buffer event TRBSRL. STBI TRBSCR. CSTBI TBCTRH. STBIEN TBCTRH. STBINP Transmit buffer error event TRBSRL. TBERI TRBSCR. CTBERI TBCTRH. TBERIEN TBCTRH. ATBINP Standard receive buffer event TRBSRL. SRBI TRBSCR. CSRBI RBCTRH. SRBIEN RBCTRH. SRBINP User’s Manual USIC, V1.0 19-85 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-7 Buffer Events and Interrupt Handling Event Indication Indication Flag cleared by Interrupt enabled by SRx Output selected by Alternative receive buffer event TRBSRL. ARBI TRBSCR. CARBI RBCTRH. ARBIEN RBCTRH. ARBINP Receive buffer error event TRBSCR. CRBERI RBCTRH. RBERIEN RBCTRH. ARBINTXDP User’s Manual USIC, V1.0 TRBSRL. RBERI 19-86 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.13.3 FIFO Buffer Bypass The data bypass mechanism is part of the transmit FIFO control block. It allows to introduce a data word in the data stream without modifying the transmit FIFO buffer contents, e.g. to send a high-priority message. The bypass structure consists of a bypass data word of maximum 16 bits in register BYP and some associated control information in registers BYPCRL and BYPCRH. For example, these bits define the word length of the bypass data word and configure a transfer trigger and gating mechanism similar to the one for the transmit buffer TBUF. The bypass data word can be tagged valid or invalid for transmission by bit BYRCRL.BDV (bypass data valid). A combination of data flow related and event related criteria define whether the bypass data word is considered valid for transmission. A data validation logic checks the start conditions for this data word. Depending on the result of the check, the transmit buffer register TBUF is loaded with different values, according to the following rules: • • • • • • Data from the transmit FIFO buffer or the bypass data can only be transferred to TBUF if TCSRL.TDV = 0 (TBUF is empty). Bypass data can only be transferred to TBUF if the bypass is enabled by BYPCRL.BDEN or the selecting gating condition is met. If the bypass data is valid for transmission and has either a higher transmit priority than the FIFO data or if the transmit FIFO is empty, the bypass data is transferred to TBUF. If the bypass data is valid for transmission and has a lower transmit priority than the FIFO buffer that contains valid data, the oldest transmit FIFO data is transferred to TBUF. If the bypass data is not valid for transmission and the FIFO buffer contains valid data, the oldest FIFO data is transferred to TBUF. If neither the bypass data is valid for transmission nor the transmit FIFO buffer contains valid data, TBUF is unchanged. The bypass data validation is based on the logic blocks shown in Figure 19-23. • • • A transfer gating logic enables or disables the bypass data word transfer to TBUF under software or under hardware control. If the input stage DX2 is not needed for data shifting, signal DX2S can be used for gating purposes. The transfer gating logic is controlled by bit field BYPCRL.BDEN. A transfer trigger logic supports data word transfers related to events, e.g. timer based or related to an input pin. If the input stage DX2 is not needed for data shifting, signal DX2T can be used for trigger purposes. The transfer trigger logic is controlled by bit BYPCRL.BDVTR. A bypass data validation logic combining the inputs from the gating logic, the triggering logic and TCSRL.TDV. User’s Manual USIC, V1.0 19-87 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel TBUF TDV BYPCRL BDVTR DX2T Shift Control Input DX2 DX2S BYPCRL Transfer Trigger BDV Transfer Gating BDEN Bypass Data Validation BDSSM BYPCRL BYPCRL USIC_BDV Figure 19-23 Bypass Data Validation With this structure, the following bypass data transfer functionality can be achieved: • • Bit BYPCRL.BDSSM = 1 has to be programmed for a single-shot mechanism. After each transfer of the bypass data word to TBUF, the bypass data word has to be tagged valid again. This can be achieved either by writing a new bypass data word to BYP or by DX2T if BDVTR = 1 (e.g. trigger on a timer base or an edge at a pin). Bit BYPCRL.BDSSM = 0 has to be programmed if the bypass data is permanently valid for transmission (e.g. as alternative data if the data FIFO runs empty). 19.2.13.4 FIFO Access Constraints The data in the shared FIFO buffer area is accessed by the hardware mechanisms for data transfer of each communication channel (for transmission and reception) and by software to read out received data or to write data to be transmitted. As a consequence, the data delivery rate can be limited by the FIFO mechanism. Each access by hardware to the FIFO buffer area has priority over a software access, that is delayed in case of an access collision. In order to avoid data loss and stalling of the CPU due to delayed software accesses, the baud rate, the word length and the software access mechanism have to be taken into account. Each access to the FIFO data buffer area by software or by hardware takes one period of fSYS. Especially a continuous flow of very short, consecutive data words can lead to an access limitation. User’s Manual USIC, V1.0 19-88 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.13.5 Handling of FIFO Transmit Control Information In addition to the transmit data, the transmit control information TCI can be transferred from the transmit FIFO or bypass structure to the USIC channel. Depending on the selected protocol and the enabled update mechanism, some settings of the USIC channel parameters can be modified. The modifications are based on the TCI of the FIFO data word loaded to TBUF or by the bypass control information if the bypass data is loaded into TBUF. • • • • TCSRL.SELMD = 1: update of PCRH.CTR[20:16] by FIFO TCI or BYPCRH.BSELO with additional clear of PCRH.CTR[23:21] TCSRL.WLEMD = 1: update of SCTRH.WLE and TCSRL.EOF by FIFO TCI or BYPCRL.BWLE (if the WLE information is overwritten by TCI or BWLE, the user has to take care that FLE is set accordingly) TCSRL.FLEMD = 1: update of SCTRH.FLE[4:0] by FIFO TCI or BYPCRL.BWLE with additional clear of SCTRH.FLE[5] TCSRL.WAMD = 1: update of TCSRL.WA by FIFO TCI[4] FIFO / Bypass BDATA USIC Channel 16 TBUF 16 Transmit FIFO 5 SELMD TCI BSEL0 5 CTR[20:16] 0 Bypass Control CTR[23:21] WLEMD BWLE WLE , EOF 4+ 1 FLEMD FLE[4:0] 0 FLE[5] WAMD TCI[4] WA USIC_FIFOTCI Figure 19-24 TCI Handling with FIFO / Bypass User’s Manual USIC, V1.0 19-89 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.14 FIFO Buffer and Bypass Registers 19.2.14.1 Bypass Registers A write action to at least the low byte of the bypass data register sets BYPCRL.BDV = 1 (bypass data tagged valid). BYP Bypass Data Register 15 14 13 12 (100H) 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 BDATA rw Bit (Field) Width Type Description BDATA [15:0] rw Bypass Data This bit field contains the bypass data. BYPCRL Bypass Control Register L 15 14 BDV 0 rh r 13 12 B BD PRIO VTR rw rw 11 (104H) 10 7 9 8 BDEN 0 BD SSM 0 BWLE rw r rw r rw Field Bits Type Description BWLE [3:0] rw User’s Manual USIC, V1.0 Reset Value: 0000H 6 5 4 3 2 1 0 Bypass Word Length This bit field defines the word length of the bypass data. The word length is given by BWLE + 1 with the data word being right-aligned in the data buffer at the bit positions [BWLE down to 0]. The bypass data word is always considered as an own frame with the length of BWLE. Same coding as SCTRH.WLE. 19-90 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description BDSSM 8 rw Bypass Data Single Shot Mode This bit defines if the bypass data is considered as permanently valid or if the bypass data is only transferred once (single shot mode). 0B The bypass data is still considered as valid after it has been loaded into TBUF. The loading of the data into TBUF does not clear BDV. 1B The bypass data is considered as invalid after it has been loaded into TBUF. The loading of the data into TBUF clears BDV. BDEN [11:10] rw Bypass Data Enable This bit field defines if and how the transfer of bypass data to TBUF is enabled. 00B The transfer of bypass data is disabled. 01B The transfer of bypass data to TBUF is possible. Bypass data will be transferred to TBUF according to its priority if BDV = 1. 10B Gated bypass data transfer is enabled. Bypass data will be transferred to TBUF according to its priority if BDV = 1 and while DX2S = 0. 11B Gated bypass data transfer is enabled. Bypass data will be transferred to TBUF according to its priority if BDV = 1 and while DX2S = 1. BDVTR 12 rw Bypass Data Valid Trigger This bit enables the bypass data for being tagged valid when DX2T is active (for time framing or timeout purposes). 0B Bit BDV is not influenced by DX2T. 1B Bit BDV is set if DX2T is active. BPRIO 13 rw Bypass Priority This bit defines the priority between the bypass data and the transmit FIFO data. 0B The transmit FIFO data has a higher priority than the bypass data. 1B The bypass data has a higher priority than the transmit FIFO data. User’s Manual USIC, V1.0 19-91 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description BDV 15 rh Bypass Data Valid This bit defines if the bypass data is valid for a transfer to TBUF. This bit is set automatically by a write access to at least the low-byte of register BYP. It can be cleared by software by writing TRBSCR.CBDV. The bypass data is not valid. 0B 1B The bypass data is valid. 0 [7:4], 9, 14 r Reserved Read as 0; should be written with 0. BYPCRH Bypass Control Register H 15 14 13 12 11 (106H) 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 BSELO r rw 0 Field Bits Type Description BSELO [4:0] rw Bypass Select Outputs This bit field contains the value that is written to PCRH.CTR[20:16] if bypass data is transferred to TBUF while TCSRL.SELMD = 1. In the SSC protocol, this bit field can be used to define which SELOx output line will be activated when bypass data is transmitted. 0 [15:5] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-92 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.14.2 General FIFO Buffer Control Registers The transmit and receive FIFO status information of UxCy is given in registers UxCy_TRBSRL/H. The bits related to the transmitter buffer in this register can only by written if the transmit buffer functionality is enabled by CCFG.TB = 1, otherwise write accesses are ignored. A similar behavior applies for the bits related to the receive buffer referring to CCFG.RB = 1. The interrupt flags (event flags) in the transmit and receive FIFO status register TRBSRL can be cleared by writing a 1 to the corresponding bit position in register TRBSCR, whereas writing a 0 has to effect on these bits. Writing a 1 by software to SRBI, RBERI, ARBI, STBI, or TBERI sets the corresponding bit to simulate the detection of a transmit/receive buffer event, but without activating any service request output (therefore, see FMR.SIOx). Bits TBUS and RBUS have been implemented for testing purposes. They can be ignored by data handling software. Please note that a read action can deliver either a 0 or a 1 for these bits. It is recommended to treat them as “don’t care”. TRBSRL Transmit/Receive Buffer Status Register L (118H) 15 14 0 r 13 12 11 T T T FUL EMP BUS L TY rh rh rh 10 9 8 7 0 TB ERI ST BI 0 r rwh rwh r Field Bits Type Description SRBI 0 rwh User’s Manual USIC, V1.0 Reset Value: 0808H 6 5 4 3 2 R R R AR FUL EMP BUS BI L TY rh rh rh rwh 1 0 RB ERI SR BI rwh rwh Standard Receive Buffer Event This bit indicates that a standard receive buffer event has been detected. It is cleared by writing TRBSCR.CSRBI = 1. If enabled by RBCTRH.SRBIEN, the service request output SRx selected by RBCTRH.SRBINP becomes activated if a standard receive buffer event is detected. 0B A standard receive buffer event has not been detected. 1B A standard receive buffer event has been detected. 19-93 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description RBERI 1 rwh Receive Buffer Error Event This bit indicates that a receive buffer error event has been detected. It is cleared by writing TRBSCR.CRBERI = 1. If enabled by RBCTRH.RBERIEN, the service request output SRx selected by RBCTRH.ARBINP becomes activated if a receive buffer error event is detected. A receive buffer error event has not been 0B detected. 1B A receive buffer error event has been detected. ARBI 2 rwh Alternative Receive Buffer Event This bit indicates that an alternative receive buffer event has been detected. It is cleared by writing TRBSCR.CARBI = 1. If enabled by RBCTRH.ARBIEN, the service request output SRx selected by RBCTRH.ARBINP becomes activated if an alternative receive buffer event is detected. 0B An alternative receive buffer event has not been detected. 1B An alternative receive buffer event has been detected. REMPTY 3 rh Receive Buffer Empty This bit indicates whether the receive buffer is empty. 0B The receive buffer is not empty. 1B The receive buffer is empty. RFULL 4 rh Receive Buffer Full This bit indicates whether the receive buffer is full. 0B The receive buffer is not full. 1B The receive buffer is full. User’s Manual USIC, V1.0 19-94 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description RBUS 5 rh Receive Buffer Busy This bit indicates whether the receive buffer is currently updated by the FIFO handler. 0B The receive buffer information has been completely updated. 1B The OUTRL/H update from the FIFO memory is ongoing. A read from OUTRL/H will be delayed. FIFO pointers from the previous read are not yet updated. STBI 8 rwh Standard Transmit Buffer Event This bit indicates that a standard transmit buffer event has been detected. It is cleared by writing TRBSCR.CSTBI = 1. If enabled by TBCTRH.STBIEN, the service request output SRx selected by TBCTRH.STBINP becomes activated if a standard transmit buffer event is detected. 0B A standard transmit buffer event has not been detected. 1B A standard transmit buffer event has been detected. TBERI 9 rwh Transmit Buffer Error Event This bit indicates that a transmit buffer error event has been detected. It is cleared by writing TRBSCR.CTBERI = 1. If enabled by TBCTRH.TBERIEN, the service request output SRx selected by TBCTRH.ATBINP becomes activated if a transmit buffer error event is detected. A transmit buffer error event has not been 0B detected. 1B A transmit buffer error event has been detected. TEMPTY 11 rh Transmit Buffer Empty This bit indicates whether the transmit buffer is empty. The transmit buffer is not empty. 0B 1B The transmit buffer is empty. User’s Manual USIC, V1.0 19-95 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description TFULL 12 rh Transmit Buffer Full This bit indicates whether the transmit buffer is full. 0B The transmit buffer is not full. The transmit buffer is full. 1B TBUS 13 rh Transmit Buffer Busy This bit indicates whether the transmit buffer is currently updated by the FIFO handler. The transmit buffer information has been 0B completely updated. 1B The FIFO memory update after write to INx is ongoing. A write to INx will be delayed. FIFO pointers from the previous INx write are not yet updated. 0 [7:6], 10, [15:14] r Reserved Read as 0; should be written with 0. TRBSRH Transmit/Receive Buffer Status Register H (11AH) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 0 TBFLVL 0 RBFLVL r rh r rh 2 1 0 Field Bits Type Description RBFLVL [6:0] rh Receive Buffer Filling Level This bit field indicates the filling level of the receive buffer, starting with 0 for an empty buffer. TBFLVL [14:8] rh Transmit Buffer Filling Level This bit field indicates the filling level of the transmit buffer, starting with 0 for an empty buffer. 0 7, 15 r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-96 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The bits in register TRBSCR are used to clear the notification bits in register TRBSRL or to clear the FIFO mechanism for the transmit or receive buffer. A read action always delivers 0. TRBSCR Transmit/Receive Buffer Status Clear Register (11CH) 15 14 13 FLU FLU SH SH TB RB w w 12 0 r 11 10 9 C C TB BDV ERI w w 8 7 C ST BI w Reset Value: 0000H 6 5 4 3 0 r 2 1 0 C AR BI w C RB ERI w C SR BI w Field Bits Type Description CSRBI 0 w Clear Standard Receive Buffer Event 0B No effect. Clear TRBSRL.SRBI. 1B CRBERI 1 w Clear Receive Buffer Error Event 0B No effect. 1B Clear TRBSRL.RBERI. CARBI 2 w Clear Alternative Receive Buffer Event 0B No effect. 1B Clear TRBSRL.ARBI. CSTBI 8 w Clear Standard Transmit Buffer Event 0B No effect. 1B Clear TRBSRL.STBI. CTBERI 9 w Clear Transmit Buffer Error Event 0B No effect. 1B Clear TRBSRL.TBERI. CBDV 10 w Clear Bypass Data Valid 0B No effect. 1B Clear BYPCRL.BDV. FLUSHRB 14 w Flush Receive Buffer No effect. 0B 1B The receive FIFO buffer is cleared (filling level is cleared and output pointer is set to input pointer value). Should only be used while the FIFO buffer is not taking part in data traffic. User’s Manual USIC, V1.0 19-97 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description FLUSHTB 15 w Flush Transmit Buffer 0B No effect. 1B The transmit FIFO buffer is cleared (filling level is cleared and output pointer is set to input pointer value). Should only be used while the FIFO buffer is not taking part in data traffic. 0 [7:3], [13:11] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-98 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.14.3 Transmit FIFO Buffer Control Registers The transmit FIFO buffer is controlled by registers TBCTRL and TBCTRH. These registers can only by written if the transmit buffer functionality is enabled by CCFG.TB = 1, otherwise write accesses are ignored. TBCTRL Transmitter Buffer Control Register L (110H) 15 14 13 12 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 0 LIMIT 0 DPTR r rw r w 1 0 Field Bits Type Description DPTR [5:0] w Data Pointer This bit field defines the start value for the transmit buffer pointers when assigning the FIFO entries to the transmit FIFO buffer. A read always delivers 0. When writing DPTR while SIZE = 0, both tranmitter pointers TDIPTR and RTDOPTR in register TRBPTRL are updated with the written value and the buffer is considered as empty. A write access to DPTR while SIZE > 0 is ignored and does not modify the pointers. LIMIT [13:8] rw Limit For Interrupt Generation This bit field defines the target filling level of the transmit FIFO buffer that is used for the standard transmit buffer event detection. 0 [7:6], [15:14] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-99 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel TBCTRH Transmitter Buffer Control Register H (112H) 15 14 TB ERI EN rw ST BI EN rw 13 12 11 10 9 0 LOF 0 SIZE r rw r rw 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 0 ATBINP 0 STBINP r rw r rw Field Bits Type Description STBINP [1:0] rw Standard Transmit Buffer Interrupt Node Pointer This bit field defines which service request output SRx becomes activated in case of a standard transmit buffer event. 00B Output SR0 becomes activated. 01B Output SR1 becomes activated. 10B Output SR2 becomes activated. 11B Output SR3 becomes activated. ATBINP [4:3] rw Alternative Transmit Buffer Interrupt Node Pointer This bit field define which service request output SRx will be activated in case of a transmit buffer error event. 00B Output SR0 becomes activated. 01B Output SR1 becomes activated. 10B Output SR2 becomes activated. 11B Output SR3 becomes activated. SIZE [10:8] rw Buffer Size This bit field defines the number of FIFO entries assigned to the transmit FIFO buffer. 000B The FIFO mechanism is disabled. The buffer does not accept any request for data. 001B The FIFO buffer contains 2 entries. 010B The FIFO buffer contains 4 entries. 011B The FIFO buffer contains 8 entries. 100B The FIFO buffer contains 16 entries. 101B The FIFO buffer contains 32 entries. 110B The FIFO buffer contains 64 entries. 111B Reserved User’s Manual USIC, V1.0 19-100 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description LOF 12 rw Buffer Event on Limit Overflow This bit defines which relation between filling level and programmed limit leads to a standard transmit buffer event. 0B A standard transmit buffer event occurs when the filling level equals the limit value and gets lower due to transmission of a data word. 1B A standard transmit buffer interrupt event occurs when the filling level equals the limit value and gets bigger due to a write access to a data input location INx. STBIEN 14 rw Standard Transmit Buffer Interrupt Enable This bit enables/disables the generation of a standard transmit buffer interrupt in case of a standard transmit buffer event. The standard transmit buffer interrupt 0B generation is disabled. 1B The standard transmit buffer interrupt generation is enabled. TBERIEN 15 rw Transmit Buffer Error Interrupt Enable This bit enables/disables the generation of a transmit buffer error interrupt in case of a transmit buffer error event (software writes to a full transmit buffer). 0B The transmit buffer error interrupt generation is disabled. 1B The transmit buffer error interrupt generation is enabled. 0 2, [7:5], 11, 13 r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-101 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.14.4 Receive FIFO Buffer Control Registers The receive FIFO buffer is controlled by registers RBCTRL and RBCTRH. These registers can only by written if the receive buffer functionality is enabled by CCFG.RB = 1, otherwise write accesses are ignored. RBCTRL Receiver Buffer Control Register L 15 14 13 12 11 10 9 (114H) 8 Reset Value: 0000H 7 6 5 4 3 2 0 LIMIT 0 DPTR r rw r w 1 0 Field Bits Type Description DPTR [5:0] w Data Pointer This bit field defines the start value for the receive buffer pointers when assigning the FIFO entries to the receive FIFO buffer. A read always delivers 0. When writing DPTR while SIZE = 0, both receiver pointers RDIPTR and RDOPTR in register TRBPTRH are updated with the written value and the buffer is considered as empty. A write access to DPTR while SIZE > 0 is ignored and does not modify the pointers. LIMIT [13:8] rw Limit For Interrupt Generation This bit field defines the target filling level of the receive FIFO buffer that is used for the standard receive buffer event detection. 0 [7:6], [15:14] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-102 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel RBCTRH Receiver Buffer Control Register H 15 14 13 12 11 RB ERI EN rw SR BI EN rw AR BI LOF RNM EN rw rw rw 10 9 (116H) 8 Reset Value: 0000H 7 6 5 4 3 2 1 0 SIZE RCIM 0 ARBINP 0 SRBINP rw rw r rw r rw Field Bits Type Description SRBINP [1:0] rw Standard Receive Buffer Interrupt Node Pointer This bit field defines which service request output SRx becomes activated in case of a standard receive buffer event. 00B Output SR0 becomes activated. 01B Output SR1 becomes activated. 10B Output SR2 becomes activated. 11B Output SR3 becomes activated. ARBINP [4:3] rw Alternative Receive Buffer Interrupt Node Pointer This bit field defines which service request output SRx becomes activated in case of an alternative receive buffer event or a receive buffer error event. 00B The output SR0 becomes activated. 01B The output SR1 becomes activated. 10B The output SR2 becomes activated. 11B The output SR3 becomes activated. RCIM [7:6] rw Receiver Control Information Mode This bit field defines which information from the receiver status register RBUFSR is propagated as 5 bit receiver control information RCI[4:0] to the receive FIFO buffer and can be read out in registers OUT(D)RH. 00B RCI[4] = PERR, RCI[3:0] = WLEN 01B RCI[4] = SOF, RCI[3:0] = WLEN 10B RCI[4] = 0, RCI[3:0] = WLEN 11B RCI[4] = PERR, RCI[3] = PAR, RCI[2:1] = 00B, RCI[0] = SOF User’s Manual USIC, V1.0 19-103 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description SIZE [10:8] rw Buffer Size This bit field defines the number of FIFO entries assigned to the receive FIFO buffer. 000B The FIFO mechanism is disabled. The buffer does not accept any request for data. 001B The FIFO buffer contains 2 entries. 010B The FIFO buffer contains 4 entries. 011B The FIFO buffer contains 8 entries. 100B The FIFO buffer contains 16 entries. 101B The FIFO buffer contains 32 entries. 110B The FIFO buffer contains 64 entries. 111B Reserved RNM 11 rw Receiver Notification Mode This bit defines the receive buffer event mode. The receive buffer error event is not affected by RNM. Filling level mode: 0B A standard receive buffer event occurs when the filling level equals the limit value and changes, either due to a read access from OUTRL (LOF = 0) or due to a new received data word (LOF = 1). 1B RCI mode: A standard receive buffer event occurs when register OUTRL is updated with a new value if the corresponding value in OUTRH.RCI[4] = 0. If OUTRH.RCI[4] = 1, an alternative receive buffer event occurs instead of the standard receive buffer event. LOF 12 rw Buffer Event on Limit Overflow This bit defines which relation between filling level and programmed limit leads to a standard receive buffer event in filling level mode (RNM = 0). In RCI mode (RNM = 1), bit fields LIMIT and LOF are ignored. 0B A standard receive buffer event occurs when the filling level equals the limit value and gets lower due to a read access from OUTRL. 1B A standard receive buffer event occurs when the filling level equals the limit value and gets bigger due to the reception of a new data word. User’s Manual USIC, V1.0 19-104 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description ARBIEN 13 rw Alternative Receive Buffer Interrupt Enable This bit enables/disables the generation of an alternative receive buffer interrupt in case of an alternative receive buffer event. 0B The alternative receive buffer interrupt generation is disabled. 1B The alternative receive buffer interrupt generation is enabled. SRBIEN 14 rw Standard Receive Buffer Interrupt Enable This bit enables/disables the generation of a standard receive buffer interrupt in case of a standard receive buffer event. 0B The standard receive buffer interrupt generation is disabled. 1B The standard receive buffer interrupt generation is enabled. RBERIEN 15 rw Receive Buffer Error Interrupt Enable This bit enables/disables the generation of a receive buffer error interrupt in case of a receive buffer error event (the software reads from an empty receive buffer). 0B The receive buffer error interrupt generation is disabled. 1B The receive buffer error interrupt generation is enabled. 0 2, 5 r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-105 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.14.5 FIFO Buffer Data Registers The 32 independent data input locations IN00 to IN31 are addresses that can be used as data entry locations for the transmit FIFO buffer. Data written to one of these locations will be stored in the transmit buffer FIFO. Additionally, the 5-bit coding of the number [31:0] of the addressed data input location represents the transmit control information TCI. If the FIFO is already full and new data is written to it, the write access is ignored and a transmit buffer error event is signaled. INx (x = 00-31) Transmit FIFO Buffer Input Location x (180H + x *4) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 TDATA w Field Bits Type Description TDATA [15:0] w User’s Manual USIC, V1.0 Transmit Data This bit field contains the data to be transmitted (write view), read actions deliver 0. A write action to at least the low byte of TDATA triggers the data storage in the FIFO. 19-106 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The receiver FIFO buffer output register OUTRL shows the oldest received data word in the FIFO buffer. A read action from this address location delivers the received data. With a read access of at least the low byte, the data is declared to be read and the next entry becomes visible. Register OUTRH contains the receiver control information RCI containing the information selected by RBCTRH.RCIM. Write accesses are ignored. OUTRL Receiver Buffer Output Register L 15 14 13 12 11 10 9 (120H) 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 DSR rh Field Bits Type Description DSR [15:0] rh Received Data This bit field monitors the content of the oldest data word in the receive FIFO. Reading at least the low byte releases the buffer entry currently shown in DSR. OUTRH Receiver Buffer Output Register H 15 14 13 12 11 10 9 (122H) 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 RCI r rh 0 Field Bits Type Description RCI [4:0] rh Receiver Control Information This bit field monitors the receiver control information associated to DSR. The bit structure of RCI depends on bit field RBCTRH.RCIM. 0 [15:5] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-107 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel If a debugger should be used to monitor the received data in the FIFO buffer, the FIFO mechanism must not be activated in order to guaranty data consistency. Therefore, a second address set is available, named OUTDRL/H (D like debugger), having the same bit fields like the original buffer output register OUTRL/H, but without the FIFO mechanism. A debugger can read here (in order to monitor the receive data flow) without the risk of data corruption. Write accesses are ignored. OUTDRL Receiver Buffer Output Register L for Debugger (124H) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 DSR rh Field Bits Type Description DSR [15:0] rh Data from Shift Register Same as OUTRL.DSR, but without releasing the buffer after a read action. OUTDRH Receiver Buffer Output Register H for Debugger (126H) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 RCI r rh 0 Field Bits Type Description RCI [4:0] rh Receive Control Information from Shift Register Same as OUTRH.RCI. 0 [15:5] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-108 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.2.14.6 FIFO Buffer Pointer Registers The pointers for FIFO handling of the transmit and receive FIFO buffers are located in registers TRBPTRL (for the transmit buffer) and TRBPTRH (for the receive buffer). The pointers are automatically handled by the FIFO buffer mechanism and do not need to be modified by software. As a consequence, these registers can only be read by software (e.g. for verification purposes), whereas write accesses are ignored. TRBPTRL Transmit/Receive Buffer Pointer Register L (108H) 15 14 13 12 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 0 TDOPTR 0 TDIPTR r rh r rh 1 0 Field Bits Type Description TDIPTR [5:0] rh Transmitter Data Input Pointer This bit field indicates the buffer entry that will be used for the next transmit data coming from the INx addresses. TDOPTR [13:8] rh Transmitter Data Output Pointer This bit field indicates the buffer entry that will be used for the next transmit data to be output to TBUF. 0 [7:6], [15:14] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-109 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel TRBPTRH Transmit/Receive Buffer Pointer Register H (10AH) 15 14 13 12 11 10 9 8 Reset Value: 0000H 7 6 5 4 3 2 1 0 RDOPTR 0 RDIPTR r rh r rh 0 Field Bits Type Description RDIPTR [5:0] rh Receiver Data Input Pointer This bit field indicates the buffer entry that will be used for the next receive data coming from RBUF. RDOPTR [13:8] rh Receiver Data Output Pointer This bit field indicates the buffer entry that will be used for the next receive data to be output at the OUT(D)RL addresses. 0 [7:6], [15:14] r Reserved Read as 0; should be written with 0. User’s Manual USIC, V1.0 19-110 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3 Asynchronous Serial Channel (ASC = UART) The asynchronous serial channel ASC covers the reception and the transmission of asynchronous data frames and provides a hardware LIN support. The receiver and transmitter being independent, frames can start at different points in time for transmission and reception. The ASC mode is selected by CCR.MODE = 0010B with CCFG.ASC = 1 (ASC mode available). This chapter contains the following sections: • • • • • • Signal description (see Page 19-111) Frame format (see Page 19-112) Bit timing (see Page 19-116) Operating the ASC (see Page 19-115) Protocol registers (see Page 19-123) Hardware LIN support (see Page 19-129) 19.3.1 Signal Description An ASC connection is characterized by the use of a single connection line between a transmitter and a receiver. The receiver input RXD signal is handled by the input stage DX0. ASC Module A ASC Module B DIN RBUF DX0 RXD RXD DOUT TBUF fSYS (ASC A) DIN DX0 RBUF DOUT TXD TBUF TXD Transfer Control Transfer Control Baud Rate Generator Baud Rate Generator fSYS (ASC B) ASC_SignalsFd Figure 19-25 ASC Signal Connections for Full-Duplex Communication For full-duplex communication, an independent communication line is needed for each transfer direction. Figure 19-25 shows an example with a point-to-point full-duplex connection between two communication partners ASC A and ASC B. User’s Manual USIC, V1.0 19-111 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel For half-duplex or multi-transmitter communication, a single communication line is shared between the communication partners. Figure 19-26 shows an example with a point-to-point half-duplex connection between ASC A and ASC B. In this case, the user has to take care that only one transmitter is active at a time. In order to support transmitter collision detection, the input stage DX1 can be used to monitor the level of the transmit line and to check if the line is in the idle state or if a collision occurred. There are two possibilities to connect the receiver input DIN to the transmitter output DOUT. Communication partner ASC A uses an internal connection with only the transmit pin TXD, that is delivering its input value as RXD to the DX0 input stage for reception and to DX1 to check for transmitter collisions. Communication partner ASC B uses an external connection between the two pins TXD and RXD. ASC Module A ASC Module B DIN RBUF TBUF DX0 RBUF DOUT DOUT DX1 fSYS (ASC A) RXD DX0 DIN TXD TXD TBUF DX1 Transfer Control Transfer Control Baud Rate Generator Baud Rate Generator fSYS (ASC B) ASC_SignalsHd Figure 19-26 ASC Signal Connections for Half-Duplex Communication 19.3.2 Frame Format A standard ASC frame is shown in Figure 19-27. It consists of: • • • • • An idle time with the signal level 1. One start of frame bit (SOF) with the signal level 0. A data field containing a programmable number of data bits (1-63). A parity bit (P), programmable for either even or odd parity. It is optionally possible to handle frames without parity bit. One or two stop bits with the signal level 1. User’s Manual USIC, V1.0 19-112 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 1 IDLE SOF DATA 1 Bit 1-63 Bit P STOP IDLE 0 0-1 Bit 1-2 Bits ASC_FrameFormat Figure 19-27 Standard ASC Frame Format The protocol specific bits (SOF, P, STOP) are automatically handled by the ASC protocol state machine and do not appear in the data flow via the receive and transmit buffers. 19.3.2.1 Idle Time The receiver and the transmitter independently check the respective data input lines (DX0, DX1) for being idle. The idle detection ensures that an SOF bit of a recently enabled ASC module does not collide with an already running frame of another ASC module. In order to start the idle detection, the user software has to clear bits PSR.RXIDLE and/or PSR.TXIDLE, e.g. before selecting the ASC mode or during operation. If a bit is cleared by software while a data transfer is in progress, the currently running frame transfer is finished normally before starting the idle detection again. Frame reception is only possible if PSR.RXIDLE = 1 and frame transmission is only possible if PSR.TXIDLE = 1. The duration of the idle detection depends on the setting of bit PCRL.IDM. In the case that a collision is not possible, the duration can be shortened and the bus can be declared as being idle by setting PCRL.IDM = 0. In the case that the complete idle detection is enabled by PCRL.IDM = 1, the data input of DX0 is considered as idle (PSR.RXIDLE becomes set) if a certain number of consecutive passive bit times has been detected. The same scheme applies for the transmitter’s data input of DX1. Here, bit PSR.TXIDLE becomes set if the idle condition of this input signal has been detected. The duration of the complete idle detection is given by the number of programmed data bits per frame plus 2 (in the case without parity) or plus 3 (in the case with parity). The counting of consecutive bit times with 1 level restarts from the beginning each time an edge is found, after leaving a stop mode or if ASC mode becomes enabled. If the idle detection bits PSR.RXIDLE and/or TXIDLE are cleared by software, the counting scheme is not stopped (no re-start from the beginning). As a result, the cleared bit(s) can become set immediately again if the respective input line still meets the idle criterion. Please note that the idle time check is based on bit times, so the maximum time can be up to 1 bit time more than programmed value (but not less). User’s Manual USIC, V1.0 19-113 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.2.2 Start Bit Detection The receiver input signal DIN (selected signal of input stage DX0) is checked for a falling edge. An SOF bit is detected when a falling edge occurs while the receiver is idle or after the sampling point of the last stop bit. To increase noise immunity, the SOF bit timing starts with the first falling edge that is detected. If the sampled bit value of the SOF is 1, the previous falling edge is considered to be due to noise and the receiver is considered to be idle again. 19.3.2.3 Data Field The length of the data field (number of data bits) can be programmed by bit field SCTRH.FLE. It can vary between 1 and 63 data bits, corresponding to values of SCTRH.FLE = 0 to 62 (the value of 63 is reserved and must not be programmed in ASC mode). The data field can consist of several data words, e.g. a transfer of 12 data bits can be composed of two 8-bit words, with the 12 bits being split into 8-bits of the first word and 4 bits of the second word. The user software has to take care that the transmit data is available in-time, once a frame has been started. If the transmit buffer runs empty during a running data frame, the passive data level (SCTRL.PDL) is sent out. The shift direction can be programmed by SCTRL.SDIR. The standard setting for ASC frames with LSB first is achieved with the default setting SDIR = 0. 19.3.2.4 Parity Bit The ASC allows parity generation for transmission and parity check for reception on frame base. The type of parity can be selected by bit field CCR.PM, common for transmission and reception (no parity, even or odd parity). If the parity handling is disabled, the ASC frame does not contain any parity bit. For consistency reasons, all communication partners have to be programmed to the same parity mode. After the last data bit of the data field, the transmitter automatically sends out its calculated parity bit if parity generation has been enabled. The receiver interprets this bit as received parity and compares it to its internally calculated one. The received parity bit value and the result of the parity check are monitored in the receiver buffer status registers as receiver buffer status information. These registers contain bits to monitor a protocol-related argument (PAR) and protocol-related error indication (PERR). 19.3.2.5 Stop Bit(s) Each ASC frame is completed by 1 or 2 of stop bits with the signal level 1 (same level as the idle level). The number of stop bits is programmable by bit PSR.STPB. A new start bit can be transferred directly after the last stop bit. User’s Manual USIC, V1.0 19-114 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.3 Operating the ASC In order to operate the ASC protocol, the following issues have to be considered: • • • • Select ASC mode: It is recommended to configure all parameters of the ASC that do not change during run time while CCR.MODE = 0000B. Bit field SCTRL.TRM = 01B has to be programmed. The configuration of the input stages has to be done while CCR.MODE = 0000B to avoid unintended edges of the input signals and the ASC mode can be enabled by CCR.MODE = 0010B afterwards. Pin connections: Establish a connection of input stage DX0 with the selected receive data input pin (signal DIN) with DX0CR.INSW = 0 and configure a transmit data output pin (signal DOUT). For collision or idle detection of the transmitter, the input stage DX1 has to be connected to the selected transmit output pin, also with DX1CR.INSW = 0. Additionally, program DX2CR.INSW = 0. Due to the handling of the input data stream by the synchronous protocol handler, the propagation delay of the synchronization in the input stage has to be considered. Bit timing configuration: The desired baud rate setting has to be selected, comprising the fractional divider, the baud rate generator and the bit timing. Please note that not all feature combinations can be supported by the application at the same time, e.g. due to propagation delays. For example, the length of a frame is limited by the frequency difference of the transmitter and the receiver device. Furthermore, in order to use the average of samples (SMD = 1), the sampling point has to be chosen to respect the signal settling and data propagation times. Data format configuration: The word length, the frame length, and the shift direction have to be set up according to the application requirements by programming the registers SCTRL and SCTRH. If required by the application, the data input and output signals can be inverted. Additionally, the parity mode has to be configured (CCR.PM). User’s Manual USIC, V1.0 19-115 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.3.1 Bit Timing In ASC mode, each bit (incl. protocol bits) is divided into time quanta in order to provide granularity in the sub-bit range to adjust the sample point to the application requirements. The number of time quanta per bit is defined by bit fields BRGL.DCTQ and the length of a time quantum is given by BRGL.PCTQ. In the example given in Figure 19-28, one bit time is composed of 16 time quanta (BRGL.DCTQ = 15). It is not recommended to program less than 4 time quanta per bit time. Bit field PCRL.SP determines the position of the sampling point for the bit value. The value of PCRL.SP must not be set to a value greater than BRGL.DCTQ. It is possible to sample the bit value only once per bit time or to take the average of samples. Depending on bit PCRL.SMD, either the current input value is directly sampled as bit value, or a majority decision over the input values sampled at the latest three time quanta is taken into account. The standard ASC bit timing consists of 16 time quanta with sampling after 8 or 9 time quanta with majority decision. The bit timing setup (number of time quanta and the sampling point definition) is common for the transmitter and the receiver. Due to independent bit timing blocks, the receiver and the transmitter can be in different time quanta or bit positions inside their frames. The transmission of a frame is aligned to the time quanta generation. 1 Bit Time PCRL.SP = 15 PCRL.SP = 8 Time Quanta 0 1 2 3 4 5 6 7 = sample taken if SMD= 0 8 9 10 11 12 13 14 15 = sample taken if SMD= 1 ASC_BitTiming Figure 19-28 ASC Bit Timing The sample point setting has to be adjusted carefully if collision or idle detection is enabled (via DX1 input signal), because the driver delay and some external delays have to be taken into account. The sample point for the transmit line has to be set to a value where the bit level is stable enough to be evaluated. If the sample point is located late in the bit time, the signal itself has more time to become stable, but the robustness against differences in the clock frequency of transmitter and receiver decreases. User’s Manual USIC, V1.0 19-116 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.3.2 Baud Rate Generation The baud rate fASC in ASC mode depends on the number of time quanta per bit time and their timing. The baud rate setting should only be changed while the transmitter and the receiver are idle. The bits in register BRGL define the baud rate setting: • • • BRGL.CTQSEL to define the input frequency fCTQIN for the time quanta generation BRGL.PCTQ to define the length of a time quantum (division of fCTQIN by 1, 2, 3, or 4) BRGL.DCTQ to define the number of time quanta per bit time The standard setting is given by CTQSEL = 00B (fCTQIN = fPDIV) and PPPEN = 0 (fPPP = fPIN). Under these conditions, the baud rate is given by: fASC = fPIN × 1 1 1 × × DCTQ + 1 PCTQ + 1 PDIV + 1 (19.6) In order to generate slower frequencies, two additional divide-by-2 stages can be selected by CTQSEL = 10B (fCTQIN = fSCLK) and PPPEN = 1 (fPPP = fMCLK), leading to: fASC = fPIN 2×2 × 1 1 1 × × PCTQ + 1 PDIV + 1 DCTQ + 1 (19.7) 19.3.3.3 Noise Detection The ASC receiver permanently checks the data input line of the DX0 stage for noise (the check is independent from the setting of bit PCRL.SMD). Bit PSR.RNS (receiver noise) becomes set if the three input samples of the majority decision are not identical at the sample point for the bit value. The information about receiver noise gets accumulated over several bits in bit PSR.RNS (it has to be cleared by software) and can trigger a protocol interrupt each time noise is detected if enabled by PCRL.RNIEN. 19.3.3.4 Collision Detection In some applications, such as data transfer over a single data line shared by several sending devices (see Figure 19-26), several transmitters have the possibility to send on the same data output line TXD. In order to avoid collisions of transmitters being active at the same time or to allow a kind of arbitration, a collision detection has been implemented. The data value read at the TXD input at the DX1 stage and the transmitted data bit value are compared after the sampling of each bit value. If enabled by PCRL.CDEN = 1 and a bit sent is not equal to the bit read back, a collision is detected and bit PSR.COL is set. If enabled, bit PSR.COL = 1 disables the transmitter (the data output lines become 1) User’s Manual USIC, V1.0 19-117 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel and generates a protocol interrupt. The content of the transmit shift register is considered as invalid, so the transmit buffer has to be programmed again. 19.3.3.5 Pulse Shaping For some applications, the 0 level of transmitted bits with the bit value 0 is not applied at the transmit output during the complete bit time. Instead of driving the original 0 level, only a 0 pulse is generated and the remaining time quanta of the bit time are driven with 1 level. The length of a bit time is not changed by the pulse shaping, only the signalling is changed. In the standard ASC signalling scheme, the 0 level is signalled during the complete bit time with bit value 0 (ensured by programming PCRH.PL = 000B). In the case PCRH.PL > 000B, the transmit output signal becomes 0 for the number of time quanta defined by PCRH.PL. In order to support correct reception with pulse shaping by the transmitter, the sample point has to be adjusted in the receiver according to the applied pulse length. 0-Pulse for PL = 001 B 0-Pulse for PL = 010 B 0-Pulse for PL = 111 B 0-Pulse for PL = 000 B Time Quanta 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 ASC_PulseLength Figure 19-29 Transmitter Pulse Length Control Figure 19-30 shows an example for the transmission of an 8-bit data word with LSB first and one stop bit (e.g. like for IrDA). The polarity of the transmit output signal has been inverted by SCTRL.DOCFG = 01B. User’s Manual USIC, V1.0 19-118 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel STOP D7 D6 D5 D4 D3 D2 D1 D0 Idle SOF ASC Frame Idle Bit Value DOUT Pulse ASC_PulseOut Figure 19-30 Pulse Output Example 19.3.3.6 Automatic Shadow Mechanism The contents of the protocol control registers PCRL and PCRH, as well as bit field SCTRH.FLE are internally kept constant while a data frame is transferred by an automatic shadow mechanism (shadowing takes place with each frame start). The registers can be programmed all the time with new settings that are taken into account for the next data frame. During a data frame, the applied (shadowed) setting is not changed, although new values have been written after the start of the data frame. Bit fields SCTRH.WLE and SCTRL.SDIR are shadowed automatically with the start of each data word. As a result, a data frame can consist of data words with a different length. It is recommended to change SCTRL.SDIR only when no data frame is running to avoid interference between hardware and software. Please note that the starting point of a data word can be different for a transmitter and a receiver. In order to ensure correct handling, it is recommended to modify SCTRH.WLE only while transmitter and receiver are both idle. If the transmitter and the receiver are referring to the same data signal (e.g. in a LIN bus system), SCTRH.WLE can be modified while a data transfer is in progress after the RSI event has been detected. 19.3.3.7 End of Frame Control The number of bits per ASC frame is defined by bit field SCTRH.FLE. In order to support different frame length settings for consecutively transmitted frames, this bit field can be modified by hardware. The automatic update mechanism is enabled by TCSRL.FLEMD = 1 (in this case, bits TCSRL.WLEMD, SELMD, and WAMD have to be cleared). If enabled, the transmit control information TCI automatically overwrites the bit field TCSRL.FLEMD when the ASC frame is started (leading to frames with 1 to 32 data bits). The TCI value represents the written address location of TBUFxx (without additional data User’s Manual USIC, V1.0 19-119 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel buffer) or INxx (with additional data buffer). With this mechanism, an ASC with 8 data bits is generated by writing a data word to TBUF07 (IN07, respectively). 19.3.3.8 Mode Control Behavior In ASC mode, the following kernel modes are supported: • • • Run Mode 0/1: Behavior as programmed, no impact on data transfers. Stop Mode 0: Bit PSR.TXIDLE is cleared. A new transmission is not started. A current transmission is finished normally. Bit PSR.RXIDLE is not modified. Reception is still possible. When leaving stop mode 0, bit TXIDLE is set according to PCR.IDM. Stop Mode 1: Bit PSR.TXIDLE is cleared. A new transmission is not started. A current transmission is finished normally. Bit PSR.RXIDLE is cleared. A new reception is not possible. A current reception is finished normally. When leaving stop mode 1, bits TXIDLE and RXIDLE are set according to PCR.IDM. 19.3.3.9 Disabling ASC Mode In order to switch off ASC mode without any data corruption, the receiver and the transmitter have to be both idle. This is ensured by requesting Stop Mode 1 in register KSCFG. After waiting for the end of the frame, the ASC mode can be disabled. 19.3.3.10 Protocol Interrupt Events The following protocol-related events are generated in ASC mode and can lead to a protocol interrupt. The collision detection and the transmitter frame finished events are related to the transmitter, whereas the receiver events are given by the synchronization break detection, the receiver noise detection, the format error checks and the end of the received frame. Please note that the bits in register PSR are not automatically cleared by hardware and have to be cleared by software in order to monitor new incoming events. • • • Collision detection: This interrupt indicates that the transmitted value (DOUT) does not match with the input value of the DX1 input stage at the sample point of a bit. For more details refer to Page 19-117. Transmitter frame finished: This interrupt indicates that the transmitter has completely finished a frame. Bit PSR.TFF becomes set at the end of the last stop bit. The DOUT signal assignment to port pins can be changed while no transmission is in progress. Receiver frame finished: This interrupt indicates that the receiver has completely finished a frame. Bit User’s Manual USIC, V1.0 19-120 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • • PSR.RFF becomes set at the end of the last stop bit. The DIN signal assignment to port pins can be changed while no reception is in progress. Synchronization break detection: This interrupt can be used in LIN networks to indicate the reception of the synchronization break symbol (at the beginning of a LIN frame). Receiver noise detection: This interrupt indicates that the input value at the sample point of a bit and at the two time quanta before are not identical. Format error: The bit value of the stop bit(s) is defined as 1 level for the ASC protocol. A format error is signalled if the sampled bit value of a stop bit is 0. 19.3.3.11 Data Transfer Interrupt Handling The data transfer interrupts indicate events related to ASC frame handling. • • • • Transmit buffer interrupt TBI: Bit PSR.TBIF is set after the start of first data bit of a data word. This is the earliest point in time when a new data word can be written to TBUF. With this event, bit TCSRL.TDV is cleared and new data can be loaded to the transmit buffer. Transmit shift interrupt TSI: Bit PSR.TSIF is set after the start of the last data bit of a data word. Receiver start interrupt RSI: Bit PSR.RSIF is set after the sample point of the first data bit of a data word. Receiver interrupt RI and alternative interrupt AI: Bit PSR.RIF is set after the sampling point of the last data bit of a data word if this data word is not directly followed by a parity bit (parity generation disabled or not the last word of a data frame). If the data word is directly followed by a parity bit (last data word of a data frame and parity generation enabled), bit PSR.RIF is set after the sampling point of the parity bit if no parity error has been detected. If a parity error has been detected, bit PSR.AIF is set instead of bit PSR.RIF. The first data word of a data frame is indicated by RBUFSR.SOF = 1 for the received word. Bit PSR.RIF is set for a receiver interrupt RI with WA = 0. Bit PSR.AIF is set for a alternative interrupt AI with WA = 1. User’s Manual USIC, V1.0 19-121 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.3.12 Protocol-Related Argument and Error The protocol-related argument (RBUFSR.PAR) and the protocol-related error (RBUFSR.PERR) are two flags that are assigned to each received data word in the corresponding receiver buffer status registers. In ASC mode, the received parity bit is monitored by the protocol-related argument and the result of the parity check by the protocol-related error indication (0 = received parity bit equal to calculated parity value). This information being elaborated only for the last received data word of each data frame, both bit positions are 0 for data words that are not the last data word of a data frame or if the parity generation is disabled. 19.3.3.13 Receive Buffer Handling If a receive FIFO buffer is available (CCFG.RB = 1) and enabled for data handling (RBCTRH.SIZE > 0), it is recommended to set RBCTRH.RCIM = 11B in ASC mode. This leads to an indication that the data word has been the first data word of a new data frame if bit OUTRH.RCI[0] = 1, a parity error is indicated by OUTRH.RCI[4] = 1, and the received parity bit value is given by OUTRH.RCI[3]. The standard receive buffer event and the alternative receive buffer event can be used for the following operations in RCI mode (RBCTRH.RNM = 1): • • A standard receive buffer event indicates that a data word can be read from OUTRL that has been received without parity error. An alternative receive buffer event indicates that a data word can be read from OUTRL that has been received with parity error. 19.3.3.14 Sync-Break Detection The receiver permanently checks the DIN signal for a certain number of consecutive bit times with 0 level. The number is given by the number of programmed bits per frame (SCTRH.FLE) plus 2 (in the case without parity) or plus 3 (in the case with parity). If a 0 level is detected at a sample point of a bit after this event has been found, bit PSR.SBD is set and additionally, a protocol interrupt can be generated (if enabled by PCRL.SBD = 1). The counting restarts from 0 each time a falling edge is found at input DIN. This feature can be used for the detection of a synchronization break for slave devices in a LIN bus system (the master doesn’t check for sync break). For example, in a configuration for 8 data bits without parity generation, bit PCRL.SBD is set after at the next sample point at 0 level after 10 complete bit times have elapsed (representing the sample point of the 11th bit time since the first falling edge). User’s Manual USIC, V1.0 19-122 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.4 ASC Protocol Registers In ASC mode, the registers PCRH, PCRL and PSR handle ASC related information. 19.3.4.1 ASC Protocol Control Registers In ASC mode, the PCRL/PCRH register bits or bit fields are defined as described in this section. PCRL Protocol Control Register L [ASC Mode] (40H) 15 14 13 12 11 10 9 8 Reset Value: 0000H 7 6 5 4 PL SP FFI EN FEI EN RNI EN CD EN rw rw rw rw rw rw 3 2 1 0 SBI STP IDM SMD EN B rw rw rw rw Field Bits Type Description SMD 0 rw Sample Mode This bit field defines the sample mode of the ASC receiver. The selected data input signal can be sampled only once per bit time or three times (in consecutive time quanta). When sampling three times, the bit value shifted in the receiver shift register is given by a majority decision among the three sampled values. Only one sample is taken per bit time. The current 0B input value is sampled. 1B Three samples are taken per bit time and a majority decision is made. STPB 1 rw Stop Bits This bit defines the number of stop bits in an ASC frame. 0B The number of stop bits is 1. 1B The number of stop bits is 2. User’s Manual USIC, V1.0 19-123 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description IDM 2 rw Idle Detection Mode This bit defines if the idle detection is switched off or based on the frame length. 0B The bus idle detection is switched off and bits PSR.TXIDLE and PSR.RXIDLE are set automatically to enable data transfers without checking the inputs before. 1B The bus is considered as idle after a number of consecutive passive bit times defined by SCTRH.FLE plus 2 (in the case without parity bit) or plus 3 (in the case with parity bit). SBIEN 3 rw Synchronization Break Interrupt Enable This bit enables the generation of a protocol interrupt if a synchronization break is detected. The automatic detection is always active, so bit SBD can be set independently of SBIEN. The interrupt generation is disabled. 0B 1B The interrupt generation is enabled. CDEN 4 rw Collision Detection Enable This bit enables the reaction of a transmitter to the collision detection. 0B The collision detection is disabled. 1B If a collision is detected, the transmitter stops its data transmission, outputs a 1, sets bit PSR.COL and generates a protocol interrupt. In order to allow data transmission again, PSR.COL has to be cleared by software. RNIEN 5 rw Receiver Noise Detection Interrupt Enable This bit enables the generation of a protocol interrupt if receiver noise is detected. The automatic detection is always active, so bit PSR.RNS can be set independently of PCRL.RNIEN. 0B The interrupt generation is disabled. 1B The interrupt generation is enabled. User’s Manual USIC, V1.0 19-124 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description FEIEN 6 rw Format Error Interrupt Enable This bit enables the generation of a protocol interrupt if a format error is detected. The automatic detection is always active, so bits PSR.FER0/FER1 can be set independently of PCRL.FEIEN. The interrupt generation is disabled. 0B 1B The interrupt generation is enabled. FFIEN 7 rw Frame Finished Interrupt Enable This bit enables the generation of a protocol interrupt if the receiver or the transmitter reach the end of a frame. The automatic detection is always active, so bits PSR.RFF or PSR.TFF can be set independently of PCRL.FFIEN. 0B The interrupt generation is disabled. 1B The interrupt generation is enabled. SP [12:8] rw Sample Point This bit field defines the sample point of the bit value. The sample point must not be located outside the programmed bit timing (PCRL.SP ≤ BRGL.DCTQ). PL [15:13] rw Pulse Length This bit field defines the length of a 0 data bit, counted in time quanta, starting with the time quantum 0 of each bit time. Each bit value that is a 0 can lead to a 0 pulse that is shorter than a bit time, e.g. for IrDA applications. The length of a bit time is not changed by PL, only the length of the 0 at the output signal. The pulse length must not be longer than the programmed bit timing (PCRH.PL ≤ BRGL.DCTQ). This bit field is only taken into account by the transmitter and is ignored by the receiver. 000B The pulse length is equal to the bit length (no shortened 0). 001B The pulse length of a 0 bit is 2 time quanta. 010B The pulse length of a 0 bit is 3 time quanta. ... 111B The pulse length of a 0 bit is 8 time quanta. User’s Manual USIC, V1.0 19-125 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel PCRH Protocol Control Register H [ASC Mode] (42H) 15 14 13 12 11 10 9 8 7 M CLK 0 rw r Reset Value: 0000H 6 5 4 3 2 1 0 Field Bits Type Description 0 [14:0] r Reserved Returns 0 if read; should be written with 0. MCLK 15 rw Master Clock Enable This bit enables the generation of the master clock MCLK. 0B The MCLK generation is disabled and the MCLK signal is 0. 1B The MCLK generation is enabled. User’s Manual USIC, V1.0 19-126 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.3.4.2 ASC Protocol Status Register In ASC mode, the PSR register bits or bit fields are defined as described in this section. The bits and bit fields in register PSR are not cleared by hardware. The flags in the PSR register can be cleared by writing a 1 to the corresponding bit position in register PSCR. Writing a 1 to a bit position in PSR sets the corresponding flag, but doesn’t lead to further actions (no interrupt generation). Writing a 0 has no effect. The PSR flags should be cleared by software before enabling a new protocol. PSR Protocol Status Register [ASC Mode] (44H) 13 15 14 AIF RIF TBIF TSIF DLIF RSIF 0 TFF RFF FER FER RX TX RNS COL SBD 1 0 IDLE IDLE rwh rwh r rwh rwh rwh 12 rwh 11 rwh 10 rwh 9 8 7 Reset Value: 0000H rwh 6 5 rwh 4 rwh 3 rwh 2 1 rwh rwh 0 rwh Field Bits Type Description TXIDLE 0 rwh Transmission Idle This bit shows if the transmit line (DX1) has been idle. A frame transmission can only be started if TXIDLE is set. 0B The transmitter line has not yet been idle. The transmitter line has been idle and frame 1B transmission is possible. RXIDLE 1 rwh Reception Idle This bit shows if the receive line (DX0) has been idle. A frame reception can only be started if RXIDLE is set. 0B The receiver line has not yet been idle. 1B The receiver line has been idle and frame reception is possible. SBD 2 rwh Synchronization Break Detected1) This bit is set if a programmed number of consecutive bit values with level 0 has been detected (called synchronization break, e.g. in a LIN bus system). A synchronization break has not yet been detected. 0B 1B A synchronization break has been detected. User’s Manual USIC, V1.0 19-127 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description COL 3 rwh Collision Detected1) This bit is set if a collision has been detected (with PCRL.CDEN = 1). 0B A collision has not yet been detected and frame transmission is possible. 1B A collision has been detected and frame transmission is not possible. RNS 4 rwh Receiver Noise Detected1) This bit is set if receiver noise has been detected. Receiver noise has not been detected. 0B 1B Receiver noise has been detected. FER0 5 rwh Format Error in Stop Bit 01) This bit is set if a 0 has been sampled in the stop bit 0 (called format error 0). 0B A format error 0 has not been detected. 1B A format error 0 has been detected. FER1 6 rwh Format Error in Stop Bit 11) This bit is set if a 0 has been sampled in the stop bit 1 (called format error 1). 0B A format error 1 has not been detected. 1B A format error 1 has been detected. RFF 7 rwh Receive Frame Finished1) This bit is set if the receiver has finished the last stop bit. 0B The received frame is not yet finished. 1B The received frame is finished. TFF 8 rwh Transmitter Frame Finished1) This bit is set if the transmitter has finished the last stop bit. 0B The transmitter frame is not yet finished. 1B The transmitter frame is finished. 0 9 r Reserved Returns 0 if read; should be written with 0. RSIF 10 rwh Receiver Start Indication Flag 0B A receiver start event has not occurred. 1B A receiver start event has occurred. DLIF 11 rwh Data Lost Indication Flag 0B A data lost event has not occurred. 1B A data lost event has occurred. User’s Manual USIC, V1.0 19-128 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description TSIF 12 rwh Transmit Shift Indication Flag 0B A transmit shift event has not occurred. 1B A transmit shift event has occurred. TBIF 13 rwh Transmit Buffer Indication Flag A transmit buffer event has not occurred. 0B A transmit buffer event has occurred. 1B RIF 14 rwh Receive Indication Flag 0B A receive event has not occurred. 1B A receive event has occurred. AIF 15 rwh Alternative Receive Indication Flag 0B An alternative receive event has not occurred. 1B An alternative receive event has occurred. 1) This status bit can generate a protocol interrupt (see Page 19-25). The general interrupt status flags are described in the general interrupt chapter. 19.3.5 Hardware LIN Support In order to support the LIN protocol, bit TCSRL.FLEMD = 1 should be set for the master. For slave devices, it can be cleared and the fixed number of 8 data bits has to be set (SCTRH.FLE = 7). For both, master and slave devices, the parity generation has to be switched off (CCR.PM = 00B) and transfers take place with LSB first (SCTRL.SDIR = 0) and 1 stop bit (PCRL.STPB = 0). The Local Interconnect Network (LIN) data exchange protocol contains several symbols that can all be handled in ASC mode. Each single LIN symbol represents a complete ASC frame. The LIN bus is a master-slave bus system with a single master and multiple slaves (for the exact definition please refer to the official LIN specification). A complete LIN frame contains the following symbols: • Synchronization break: The master sends a synchronization break to signal the beginning of a new frame. It contains at least 13 consecutive bit times at 0 level, followed by at least one bit time at 1 level (corresponding to 1 stop bit). Therefore, TBUF11 (or IN11) has to be written with 0 (leading to a frame with SOF followed by 12 data bits at 0 level). A slave device shall detect 11 consecutive bit times at 0 level, which done by the synchronization break detection. Bit PSR.SBD is set if such an event is detected and a protocol interrupt can be generated. Additionally, the received data value of 0 appears in the receive buffer and a format error is signaled. If the baud rate of the slave has to be adapted to the master, the baud rate measurement has to be enabled for falling edges by setting BRGL.TMEN = 1, DX0CR.CM = 10H and DX1CR.CM = 00H before the next symbol starts. User’s Manual USIC, V1.0 19-129 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • Synchronization byte: The master sends this symbol after writing the data value 55H to TBUF07 (or IN07). A slave device can either receive this symbol without any further action (and can discard it) or it can use the falling edges for baud rate measurement. Bit PSR.TSIF = 1 (with optionally the corresponding interrupt) indicates the detection of a falling edge and the capturing of the elapsed time since the last falling edge in BRGH.PDIV. Valid captured values can be read out after the second, third, fourth and fifth activation of TSIF. After the fifth activation of TSIF within this symbol, the baud rate detection has to be disabled (BRGL.TMEN = 0) and BRGH.PDIV can be programmed with the formerly captured value divided by twice the number of time quanta per bit (assuming BRGL.PCTQ = 00B). Other symbols: The other symbols of a LIN frame can be handled with ASC data frames without specific actions. If LIN frames should be sent out on a frame base by the LIN master, the input DX2 can be connected to external timers to trigger the transmit actions (e.g. the synchronization break symbol has been prepared but is started if a trigger occurs). Please note that during the baud rate measurement of the ASC receiver, no transmission can take place by the ASC transmitter of the same USIC channel. User’s Manual USIC, V1.0 19-130 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4 Synchronous Serial Channel (SSC) The synchronous serial channel SSC covers the data transfer function of an SPI-like module. It can handle reception and transmission of synchronous data frames between a device operating in master mode and at least one device in slave mode. The SSC mode is selected by CCR.MODE = 0001B with CCFG.SSC = 1 (SSC mode is available). This chapter contains the following sections: • • • • • • Signal description (see Page 19-131) General SSC issues (see Page 19-139) Master mode operation (see Page 19-142) Slave mode operation (see Page 19-149) Protocol registers (see Page 19-151) Timing considerations (see Page 19-157) 19.4.1 Signal Description A synchronous SSC data transfer is characterized by a simultaneous transfer of a shift clock signal together with the transmit and/or receive data signal(s) to determine when the data is valid (definition of transmit and sample point). SSC Communication Master DOUT TBUF DIN RBUF DX0 Baud Rate Generator Slave Select Generator SCLKOUT SELOx SSC Communication Slave Master Transmit / Slave Receive DIN Master Receive / Slave Transmit DOUT Slave Clock Slave Select DX0 RBUF TBUF SCLKIN DX1 SELIN DX2 fSYS (Slave) fSYS (Master) SSC_Signals_ Figure 19-31 SSC Signals for Full-Duplex Communication In order to explicitly indicate the start and the end of a data transfer and to address more than one slave devices individually, the SSC module supports the handling of slave User’s Manual USIC, V1.0 19-131 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel select signals. They are optional and are not necessarily needed for SSC data transfers. The SSC module supports up to 8 different slave select output signals for master mode operation (named SELOx, with x = 0-7) and 1 slave select input SELIN for slave mode. In most applications, the slave select signals are active low. A device operating in master mode controls the start and end of a data frame, as well as the generation of the shift clock and slave select signals. This comprises the baud rate setting for the shift clock and the delays between the shift clock and the slave select output signals. If several SSC modules are connected together, there can be only one SSC master at a time, but several slaves. Slave devices receive the shift clock and optionally a slave select signal(s). For the programming of the input stages DX0, DX1, and DX2 please refer to Page 19-37. Table 19-8 SSC Communication Signals SSC Mode Receive Data Master Slave Transmit Data Shift Clock Slave Select(s) MTSR2), MRST1), input DIN, Output DOUT handled by DX0 Output SCLKOUT Output(s) SELOx MTSR, MRST, input DIN, Output DOUT handled by DX0 Input SCLKIN, input SELIN, handled by DX1 handled by DX2 1) MRST = master receive slave transmit, also known as MISO = master in slave out 2) MTSR = master transmit slave receive, also known as MOSI = master out slave in Shift Clock Transmit Data Receive Data D0 D1 Dn D0 D1 D0 D1 Dn Dn Data Word x Data Word 0 Slave Select D0 D1 Dn Data Frame SSC_Standard_ Figure 19-32 4-Wire SSC Standard Communication Signals User’s Manual USIC, V1.0 19-132 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.1.1 Transmit and Receive Data Signals In half-duplex mode, a single data line is used, either for data transfer from the master to a slave or from a slave to the master. In this case, MRST and MTSR are connected together, one signal as input, the other one as output, depending on the data direction. The user software has to take care about the data direction to avoid data collision (e.g. by preparing dummy data of all 1s for transmission in case of a wired AND connection with open-drain drivers or by enabling/disabling push/pull output drivers). In full-duplex mode, data transfers take place in parallel between the master device and a slave device via two independent data signals MTSR and MRST, as shown in Figure 19-31. The receive data input signal DIN is handled by the input stage DX0. In master mode (referring to MRST) as well as in slave mode (referring to MTSR), the data input signal DIN is taken from an input pin. The signal polarity of DOUT (data output) with respect to the data bit value can be configured in block DOCFG (data output configuration) by bit field SCTRL.DOCFG. MRST Master Mode MTSR Slave Mode DIN Input Stage DX0 Data Shit Unit SCTRL DOCFG DOUT MTSR Master Mode MRST Slave Mode SSC_DataSignals_ Figure 19-33 SSC Data Signals User’s Manual USIC, V1.0 19-133 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.1.2 Shift Clock Signals The shift clock signal is handled by the input stage DX1. In slave mode, the signal SCLKIN is received from an external master, so the DX1 stage has to be connected to an input pin. The input stage can invert the received input signal to adapt to the polarity of SCLKIN to the function of the data shift unit (data transmission on rising edges, data reception on falling edges). In master mode, the shift clock is generated by the internal baud rate generator. The output signal SCLK of the baud rate generator is taken as shift clock input for the data shift unit. The internal signal SCLK is made available for external slave devices by signal SCLKOUT. SSC in Slave Mode SSC in Master Mode SCLKIN SCLKOUT Delay of ½ Bit Time SCLKCFG Input Stage DX1 SCLK Data Shift Unit Transfer Control Logic Baud Rate Generator SSC_ShiftClock_ Figure 19-34 SSC Shift Clock Signals Due to the multitude of different SSC applications, in master mode, there are different ways to configure the shift clock output signal SCLKOUT with respect to SCLK. This is done in the block SCLKCFG (shift clock configuration) by bit field BRGH.SCLKCFG, allowing 4 possible settings, as shown in Figure 19-35. • • No delay, no polarity inversion (SCLKCFG = 00B, SCLKOUT equals SCLK): The inactive level of SCLKOUT is 0, while no data frame is transferred. The first data bit of a new data frame is transmitted with the first rising edge of SCLKOUT and the first data bit is received in with the first falling edge of SCLKOUT. The last data bit of a data frame is transmitted with the last rising clock edge of SCLKOUT and the last data bit is received in with the last falling edge of SCLKOUT. This setting can be used in master and in slave mode. It corresponds to the behavior of the internal data shift unit. No delay, polarity inversion (SCLKCFG = 01B): The inactive level of SCLKOUT is 1, while no data frame is transferred. The first data User’s Manual USIC, V1.0 19-134 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • bit of a new data frame is transmitted with the first falling clock edge of SCLKOUT and the first data bit is received with the first rising edge of SCLKOUT. The last data bit of a data frame is transmitted with the last falling edge of SCLKOUT and the last data bit is received with the last rising edge of SCLKOUT. This setting can be used in master and in slave mode. SCLKOUT is delayed by 1/2 shift clock period, no polarity inversion (SCLKCFG = 10B): The inactive level of SCLKOUT is 0, while no data frame is transferred. The first data bit of a new data frame is transmitted 1/2 shift clock period before the first rising clock edge of SCLKOUT. Due to the delay, the next data bits seem to be transmitted with the falling edges of SCLKOUT. The last data bit of a data frame is transmitted 1/2 period of SCLKOUT before the last rising clock edge of SCLKOUT. The first data bit is received 1/2 shift clock period before the first falling edge of SCLKOUT. Due to the delay, the next data bits seem to be received with the rising edges of SCLKOUT. The last data bit is received 1/2 period of SCLKOUT before the last falling clock edge of SCLKOUT. This setting can be used only in master mode and not in slave mode (the connected slave has to provide the first data bit before the first SCLKOUT edge, e.g. as soon as it is addressed by its slave select). SCLKOUT is delayed by 1/2 shift clock period, polarity inversion (SCLKCFG = 11B): The inactive level of SCLKOUT is 1, while no data frame is transferred. The first data bit of a new data frame is transmitted 1/2 shift clock period before the first falling clock edge of SCLKOUT. Due to the delay, the next data bits seem to be transmitted with the rising edges of SCLKOUT. The last data bit of a data frame is transmitted 1/2 period of SCLKOUT before the last falling clock edge of SCLKOUT. The first data bit is received 1/2 shift clock period before the first rising edge of SCLKOUT. Due to the delay, the next data bits seem to be received with the falling edges of SCLKOUT. The last data bit is received 1/2 period of SCLKOUT before the last rising clock edge of SCLKOUT. This setting can be used only in master mode and not in slave mode (the connected slave has to provide the first data bit before the first SCLKOUT edge, e.g. as soon as it is addressed by its slave select). User’s Manual USIC, V1.0 19-135 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Data Bit x transmitted (x = 1-n) 1 n 2 Bit 1 Bit n SCK SCLKOUT (SCLKCFG = 00B) SCLKOUT (SCLKCFG = 01B) SCLKOUT (SCLKCFG = 10B) SCLKOUT (SCLKCFG = 11B) Data Bit x received (x = 1-n) 1 2 n SSC_SCLKCFG_ Figure 19-35 SCLKOUT Configuration in SSC Master Mode Note: If a configuration with delay is selected and a slave select line is used, the slave select delays have to be set up accordingly. User’s Manual USIC, V1.0 19-136 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.1.3 Slave Select Signals The slave select signal is handled by the input stage DX2. In slave mode, the input signal SELIN is received from an external master via an input pin. The input stage can invert the received input signal to adapt the polarity of signal SELIN to the function of the data shift unit (the module internal signals are considered as high active, so a data transfer is only possible while the slave select input of the data shift unit is at 1-level, otherwise, shift clock pulses are ignored and do not lead to data transfers). If an input signal SELIN is low active, it should be inverted in the DX2 input stage. In master mode, a master slave select signal MSLS is generated by the internal slave select generator. In order to address different external slave devices independently, the internal MSLS signal is made available externally via up to 8 SELOx output signals that can be configured by the block SELCFG (select configuration). SSC in Slave Mode SSC in Master Mode .. ... . SELIN SELOx x = 0-7 SELCFG Input Stage DX2 MSLS Data Shift Unit Transfer Control Logic Slave Select Generator SSC_SlaveSelect_ Figure 19-36 SSC Slave Select Signals The control of the SELCFG block is based on protocol specific bits and bit fields in the protocol control register parts PCRL and PCRH. For the generation of the MSLS signal please refer to Section 19.4.3.2. • • • PCRL.SELCTR to chose between direct and coded select mode PCRL.SELINV to invert the SELOx outputs PCRH.SELO[7:0] as individual value for each SELOx line The SELCFG block supports the following configurations of the SELOx output signals: • Direct Select Mode (SELCTR = 1): Each SELOx line (with x = 0-7) can be directly connected to an external slave device. If bit x in bit field SELO is 0, the SELOx output is permanently inactive. A SELOx output becomes active while the internal signal MSLS is active (see User’s Manual USIC, V1.0 19-137 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • Section 19.4.3.2) and bit x in bit field SELO is 1. Several external slave devices can be addressed in parallel if more than one bit in bit field SELO are set during a data frame. The number of external slave devices that can be addressed individually is limited to the number of available SELOx outputs. Coded Select Mode (SELCTR = 0): The SELOx lines (with x = 1-7) can be used as addresses for an external address decoder to increase the number of external slave devices. These lines only change with the start of a new data frame and have no other relation to MSLS. Signal SELO0 can be used as enable signal for the external address decoder. It is active while MSLS is active (during a data frame) and bit 0 in bit field SELO is 1. Furthermore, in coded select mode, this output line is delayed by one cycle of fSYS compared to MSLS to allow the other SELOx lines to stabilize before enabling the address decoder. User’s Manual USIC, V1.0 19-138 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.2 Operating the SSC This chapter contains SSC issues, that are of general interest and not directly linked to either master mode or slave mode. 19.4.2.1 Automatic Shadow Mechanism The contents of the baud rate control registers BRGL and BRGH, bit field SCTRH.FLE as well as the protocol control registers PCRL and PCRH are internally kept constant while a data frame is transferred (= while MSLS is active) by an automatic shadow mechanism. The registers can be programmed all the time with new settings that are taken into account for the next data frame. During a data frame, the applied (shadowed) setting is not changed, although new values have been written after the start of the data frame. Bit fields SCTRH.WLE and SCTRL.SDIR are shadowed automatically with the start of each data word. As a result, a data frame can consist of data words with a different length. It is recommended to change SCTRL.SDIR only when no data frame is running to avoid interference between hardware and software. Please note that the starting point of a data word are different for a transmitter (first bit transmitted) and a receiver (first bit received). In order to ensure correct handling, it is recommended to refer to the receive start interrupt RSI before modifying SCTRL.WLE. If TCSRL.WLEMD = 1, it is recommended to update TCSRL and TBUFxx after the receiver start interrupt has been generated. 19.4.2.2 Mode Control Behavior In SSC mode, the following kernel modes are supported: • • Run Mode 0/1: Behavior as programmed, no impact on data transfers. Stop Mode 0/1: The content of the transmit buffer is considered as not valid for transmission. Although being considered as 0, bit TCSRL.TDV it is not modified by the stop mode condition. In master mode, a currently running word transfer is finished normally, but no new data word is started (the stop condition is not considered as end-of-frame condition). In slave mode, a currently running word transfer is finished normally. Passive data will be sent out instead of a valid data word if a data word transfer is started by the external master while the slave device is in stop mode. In order to avoid passive slave transmit data, it is recommended not to program stop mode for an SSC slave device if the master device does not respect the slave device’s stop mode. User’s Manual USIC, V1.0 19-139 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.2.3 Disabling SSC Mode In order to disable SSC mode without any data corruption, the receiver and the transmitter have to be both idle. This is ensured by requesting Stop Mode 1 in register KSCFG. After Stop Mode 1 has been acknowledged by KSCFG.ACK = 1, the SSC mode can be disabled. 19.4.2.4 Data Frame Control An SSC data frame can consist of several consecutive data words that may be separated by an inter-word delay. Without inter-word delay, the data words seem to form a longer data word, being equivalent to a data frame. The length of the data words are most commonly identical within a data frame, but may also differ from one word to another. The data word length information (defined by SCTRH.WLE) is evaluated for each new data word, whereas the frame length information (defined by SCTRH.FLE) is evaluated at the beginning at each start of a new frame. The length of an SSC data frame can be defined in two different ways: • • By the number of bits per frame: If the number of bits per data frame is defined (frame length FLE), a slave select signal is not necessarily required to indicate the start and the end of a data frame. If the programmed number of bits per frame is reached within a data word, the frame is considered as finished and remaining data bits in the last data word are ignored and are not transferred. This method can be applied for data frames with up to 63 data bits. By the slave select signal: If the number of bits per data frame is not known, the start/end information of a data frame is given by a slave select signal. If a deactivation of the slave select signal is detected within a data word, the frame is considered as finished and remaining data bits in the last data word are ignored and are not transferred. This method has to be applied for frames with more than 63 data bits (programming limit of FLE). The advantage of slave select signals is the clearly defined start and end condition of data frames in a data stream. Furthermore, slave select signals allow to address slave devices individually. 19.4.2.5 Parity Mode Parity generation is not supported in SSC mode and bit field CCR.PM = 00B has to be programmed. 19.4.2.6 Transfer Mode In SSC mode, bit field SCTRL.TRM = 01B has to be programmed to allow data transfers. Setting SCTRL.TRM = 00B disables and stops the data transfer immediately. User’s Manual USIC, V1.0 19-140 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.2.7 Data Transfer Interrupt Handling The data transfer interrupts indicate events related to SSC frame handling. • • • • • Transmit buffer interrupt TBI: Bit PSR.TBIF is set after the start of first data bit of a data word. Transmit shift interrupt TSI: Bit PSR.TSIF is set after the start of the last data bit of a data word. Receiver start interrupt RSI: Bit PSR.RSIF is set after the reception of the first data bit of a data word. With this event, bit TCSRL.TDV is cleared and new data can be loaded to the transmit buffer. Receiver interrupt RI: Bit PSR.RIF is set at after the reception of the last data bit of a data word. Bit RBUFSR.SOF indicates whether the received data word has been the first data word of a new data frame. Alternative interrupt AI: In SSC mode, this interrupt is not used. 19.4.2.8 Protocol-Related Argument and Error The protocol-related argument (PAR) and the protocol-related error (PERR) are two flags that are assigned to each received data word in the corresponding receiver buffer status registers. In SSC mode, these flags are always 0 (parity handling must be disabled). 19.4.2.9 Receive Buffer Handling If a receive FIFO buffer is available (CCFG.RB = 1) and enabled for data handling (RBCTRH.SIZE > 0), it is recommended to set RBCTRH.RCIM = 01B in SSC mode. This leads to an indication that the data word has been the first data word of a new data frame if bit OUTRH.RCI[4] = 1, and the word length of the received data is given by OUTRH.RCI[3:0]. The standard receive buffer event and the alternative receive buffer event can be used for the following operation in RCI mode (RBCTRH.RNM = 1): • • A standard receive buffer event indicates that a data word can be read from OUTRL that has not been the first word of a data frame. An alternative receive buffer event indicates that the first data word of a new data frame can be read from OUTRL. User’s Manual USIC, V1.0 19-141 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.3 Operating the SSC in Master Mode In order to operate the SSC in master mode, the following issues have to be considered: • • • • • Select SSC mode: It is recommended to configure all parameters of the SSC that do not change during run time while CCR.MODE = 0000B. Bit field SCTRL.TRM = 01B has to be programmed. The configuration of the input stages has to be done while CCR.MODE = 0000B to avoid unintended edges of the input signals and the SSC mode can be enabled by CCR.MODE = 0001B afterwards. Pin connections: Establish a connection of input stage DX0 with the selected receive data input pin (DIN) with DX0CR.INSW = 1 and configure a transmit data output pin (DOUT). Baud rate generation: The desired baud rate setting has to be selected, comprising the fractional divider and the baud rate generator. Bit DX1CR.INSW = 0 has to be programmed to use the baud rate generator output SCLK directly as input for the data shift unit. Configure a shift clock output pin (signal SCLKOUT). Slave select generation: The slave select delay generation has to be enabled by setting PCRL.MSLSEN = 1 and the programming of the time quanta counter setting. Bit DX2CR.INSW = 0 has to be programmed to use the slave select generator output MSLS as input for the data shift unit. Configure slave select output pins (signals SELOx) if needed. Data format configuration: The word length, the frame length, and the shift direction have to be set up according to the application requirements by programming the registers SCTRL and SCTRH. Note: The USIC can only receive in master mode if it is transmitting, because the master frame handling refers to bit TDV of the transmitter part. 19.4.3.1 Baud Rate Generation The baud rate (determining the length of one data bit) of the SSC is defined by the frequency of the SCLK signal (one period of fSCLK represents one data bit). The SSC baud rate generation does not imply any time quanta counter. In a standard SSC application, the phase relation between the optional MCLK output signal and SCLK is not relevant and can be disabled (BRGL.PPPEN = 0). In this case, the SCLK signal directly derives from the protocol input frequency fPIN. In the exceptional case that a fixed phase relation between the MCLK signal and SCLK is required (e.g. when using MCLK as clock reference for external devices), the additional divider by 2 stage has to be taken into account (BRGL.PPPEN = 1). User’s Manual USIC, V1.0 19-142 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The adjustable divider factor is defined by bit field BRGH.PDIV. fPIN 1 2 PDIV + 1 fPIN 1 × fSCLK = 2×2 PDIV + 1 fSCLK = × if PPPEN = 0 (19.8) if PPPEN = 1 19.4.3.2 MSLS Generation The slave select signals indicate the start and the end of a data frame and are also used by the communication master to individually select the desired slave device. A slave select output of the communication master becomes active a programmable time before a data part of the frame is started (leading delay Tld), necessary to prepare the slave device for the following communication. After the transfer of a data part of the frame, it becomes inactive again a programmable time after the end of the last bit (trailing delay Ttd) to respect the slave hold time requirements. If data frames are transferred back-toback one after the other, the minimum time between the deactivation of the slave select and the next activation of a slave select is programmable (next-frame delay Tnf). If a data frame consists of more than one data word, an optional delay between the data words can also be programmed (inter-word delay Tiw). Data Frame Data Word 0 Data Word 1 Shift Clock Transmit Data D0 D1 Receive Data D0 D1 Tld MSLS Active Dn D0 D1 Dn D0 D1 Tiw Dn Dn Ttd Tn f Inactive SELOx (SELINV = 1) SSC_MSLS_ Figure 19-37 MSLS Generation in SSC Master Mode User’s Manual USIC, V1.0 19-143 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel In SSC master mode, the slave select delays are defined as follows: • • • • Leading delay Tld: The leading delay starts if valid data is available for transmission. The internal signal MSLS becomes active with the start of the leading delay. The first shift clock edge (rising edge) of SCLK is generated by the baud rate generator after the leading delay has elapsed. Trailing delay Ttd The trailing delay starts at the end of the last SCLK cycle of a data frame. The internal signal MSLS becomes inactive with the end of the trailing delay. Inter-word delay Tiw: This delay is optional and can be enabled/disabled by PCRH.TIWEN. If the interword delay is disabled (TIWEN = 0), the last data bit of a data word is directly followed by the first data bit of the next data word of the same data frame. If enabled (TIWEN = 1), the inter-word delay starts at the end of the last SCLK cycle of a data word. The first SCLK cycle of the following data word of the same data frame is started when the inter-word delay has elapsed. During this time, no shift clock pulses are generated and signal MSLS stays active. The communication partner has time to “digest” the previous data word or to prepare for the next one. Next-frame delay Tnf: The next-frame delay starts at the end of the trailing delay. During this time, no shift clock pulses are generated and signal MSLS stays inactive. A frame is considered as finished after the next-frame delay has elapsed. 19.4.3.3 Automatic Slave Select Update If the number of bits per SSC frame and the word length are defined by bit fields SCTRH.FLE and SCTRH.WLE, the transmit control information TCI can be used to update the slave select setting PCRH.CTR[23:16] to control the SELOx select outputs. The automatic update mechanism is enabled by TCSRL.SELMD = 1 (bits TCSRL.WLEMD, FLEMD, and WAMD have to be cleared). In this case, the TCI of the first data word of a frame defines the slave select setting of the complete frame due to the automatic shadow mechanism (see Page 19-119). User’s Manual USIC, V1.0 19-144 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.3.4 Slave Select Delay Generation The slave select delay generation is based on time quanta. The length of a time quantum (defined by the period of the fCTQIN) and the number of time quanta per delay can be programmed. In standard SSC applications, the leading delay Tld and the trailing delay Ttd are mainly used to ensure stability on the input and output lines as well as to respect setup and hold times of the input stages. These two delays have the same length (in most cases shorter than a bit time) and can be programmed with the same set of bit fields. • • • BRGL.CTQSEL to define the input frequency fCTQIN for the time quanta generation for Tld and Ttd BRGL.PCTQ to define the length of a time quantum (division of fCTQIN by 1, 2, 3, or 4) for Tld and Ttd BRGL.DCTQ to define the number of time quanta for the delay generation for Tld and Ttd The inter-word delay Tiw and the next-frame delay Tnf are used to handle received data or to prepare data for the next word or frame. These two delays have the same length (in most cases in the bit time range) and can be programmed with a second, independent set of bit fields. • • • • PCRL.CTQSEL1 to define the input frequency fCTQIN for the time quanta generation for Tnf and Tiw PCRL.PCTQ1 to define the length of a time quantum (division of fCTQIN by 1, 2, 3, or 4) for Tnf and Tiw PCRL.DCTQ1 to define the number of time quanta for the delay generation for Tnf and Tiw PCRH.TIWEN to enable/disable the inter-word delay Tiw Each delay depends on the length of a time quantum and the programmed number of time quanta given by the bit fields CTQSEL/CTQSEL1, PCTQ/DCTQ and PCTQ1/DCTQ1 (the coding of CTQSEL1 is similar to CTQSEL, etc.). To provide a high flexibility in programming the delay length, the input frequencies can be selected between several possibilities (e.g. based on bit times or on the faster inputs of the protocol-related divider). The delay times are defined as follows: Tld = Ttd = Tiw = Tnf = User’s Manual USIC, V1.0 (PCTQ + 1) × (DCTQ + 1) fCTQIN (PCTQ1 + 1) × (DCTQ1 + 1) (19.9) fCTQIN 19-145 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.3.5 Protocol Interrupt Events The following protocol-related events generated in SSC mode and can lead to a protocol interrupt. They are related to the start and the end of a data frame. After the start of a data frame a new setting could be programmed for the next data frame and after the end of a data frame the SSC connections to pins can be changed. Please note that the bits in register PSR are not all automatically cleared by hardware and have to be cleared by software in order to monitor new incoming events. • • MSLS Interrupt: This interrupt indicates in master mode (MSLS generation enabled) that a data frame has started (activation of MSLS) and has been finished (deactivation of MSLS). Any change of the internal MSLS signal sets bit PSR.MSLSEV and additionally, a protocol interrupt can be generated if PCRL.MSLSIEN = 1. The actual state of the internal MSLS signal can be read out at PSR.MSLS to take appropriate actions when this interrupt has been detected. DX2T Interrupt: This interrupt monitors edges of the input signal of the DX2 stage (although this signal is not used as slave select input for data transfers). A programmable edge detection for the DX2 input signal sets bit PSR.DX2TEV and additionally, a protocol interrupt can be generated if PCRL.DX2TIEN = 1. The actual state of the selected input signal can be read out at PSR.DX2S to take appropriate actions when this interrupt has been detected. User’s Manual USIC, V1.0 19-146 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.3.6 End-of-Frame Control The information about the frame length is required for the MSLS generator of the master device. In addition to the mechanism based on the number of bits per frame (selected with SCTRH.FLE < 63), the following alternative mechanisms for end of frame handling are supported. It is recommended to set SCTRH.FLE = 63 (if several end of frame mechanisms are activated in parallel, the first end condition being found finishes the frame). • • • • Software-based start of frame indication TCSRL.SOF: This mechanism can be used if software handles the TBUF data without data FIFO. If bit SOF is set, a valid content of TBUF is considered as first word of a new frame. Bit SOF has to be set before the content of TBUF is transferred to the transmit shift register, so it is recommended to write it before writing data to TBUF. A current data word transfer is finished completely and the slave select delays Ttd and Tnf are applied before starting a new data frame with Tld and the content of TBUF. For software-handling of bit SOF, bit TCSRL.WLEMD = 0 has to be programmed. In this case, all TBUF[31:0] address locations show an identical behavior (TCI not taken into account for data handling). Software-based end of frame indication TCSRL.EOF: This mechanism can be used if software handles the TBUF data without data FIFO. If bit EOF is set, a valid content of TBUF is considered as last word of a new frame. Bit EOF has to be set before the content of TBUF is transferred to the transmit shift register, so it is recommended to write it before writing data to TBUF. The data word in TBUF is sent out completely and the slave select delays Ttd and Tnf are applied. A new data frame can start with Tld with the next valid TBUF value. For software-handling of bit EOF, bit TCSRL.WLEMD = 0 has to be programmed. In this case, all TBUF[31:0] address locations show an identical behavior (TCI not taken into account for data handling). Software-based address related end of frame handling: This mechanism can be used if software handles the TBUF data without data FIFO. If bit TCSRL.WLEMD = 1, the address of the written TBUF[31:0] is used as transmit control information TCI[4:0] to update SCTRH.WLE (= TCI[3:0]) and TCSRL.EOF (= TCI[4]) for each data word. The written TBUF[31:0] address location defines the word length and the end of a frame (locations TBUF[31:16] lead to a frame end). For example, writing transmit data to TBUF[07] results in a data word of 8-bit length without finishing the frame, whereas writing transmit data to TBUF[31] leads to a data word length of 16 bits, followed by Ttd, the deactivation of MSLS and Tnf. If TCSRL.WLEMD = 1, bits TCSRL.EOF and SOF, as well as SCTRH.WLE must not be written by software after writing data to a TBUF location. Furthermore, it is recommended to clear bits TCSRL.SELMD, FLEMD and WAMD. FIFO-based address related end of frame handling: This mechanism can be used if a data FIFO is used to store the transmit data. The general behavior is similar to the software-based address related end of frame User’s Manual USIC, V1.0 19-147 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • handling, except that transmit data is not written to the locations TBUF[31:0], but to the FIFO input locations IN[31:0] instead. In this case, software must not write to any of the TBUF locations. TBUF related end of frame handling: If bit PCRL.FEM = 0, an end of frame is assumed if the transmit buffer TBUF does not contain valid transmit data at the end of a data word transmission (TCSRL.TDV = 0 or in Stop Mode). In this case, the software has to take care that TBUF does not run empty during a data frame in Run Mode. If bit PCRL.FEM = 1, signal MSLS stays active while the transmit buffer is waiting for new data (TCSRL.TDV = 1 again) or until Stop Mode is left. Explicit end of frame by software: The software can explicitly stop a frame by clearing bit PSR.MSLS by writing a 1 to the related bit position in register PSCR. This write action immediately clears bit PSR.MSLS, whereas the internal MSLS signal becomes inactive after finishing a currently running word transfer and respecting the slave select delays Ttd and Tnf. User’s Manual USIC, V1.0 19-148 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.4 Operating the SSC in Slave Mode In order to operate the SSC in slave mode, the following issues have to be considered: • • • • Select SSC mode: It is recommended to configure all parameters of the SSC that do not change during run time while CCR.MODE = 0000B. Bit field SCTRL.TRM = 01B has to be programmed. The configuration of the input stages has to be done while CCR.MODE = 0000B to avoid unintended edges of the input signals and the SSC mode can be enabled afterwards by CCR.MODE = 0001B. Pin connections: Establish a connection of input stage DX0 with the selected receive data input pin (signal DIN) with DX0CR.INSW = 1 and configure a transmit data output pin (signal DOUT). Establish a connection of input stage DX1 with the selected shift clock input pin (signal SCLKIN) with DX1CR.INSW = 1. Establish a connection of input stage DX2 with the selected slave select input pin (signal SELIN) with DX2CR.INSW = 1. If no slave select input signal is used, the DX2 stage has to deliver a 1-level to the data shift unit to allow data reception and transmission. If a slave device is not selected (DX2 stage delivers a 0 to the data shift unit) and a shift clock pulse are received, the incoming data is not received and the DOUT signal outputs the passive data level defined by SCTRL.PDL. Baud rate generation: The baud rate generator is not needed and can be switched off by the fractional divider. Slave select generation: The slave select delay generation is not needed and can be switched off. The bits and bit fields MSLSEN, SELCTR, SELINV, CTQSEL1, PCTQ1, DCTQ1, MSLSIEN, SELO[7:0], and TIWEN in registers PCRL/PCRH are not necessary and can be programmed to 0. 19.4.4.1 Protocol Interrupts The following protocol-related events generated in SSC mode and can lead to a protocol interrupt. They are related to the start and the end of a data frame. After the start of a data frame a new setting could be programmed for the next data frame and after the end of a data frame the SSC connections to pins can be changed. Please note that the bits in register PSR are not all automatically cleared by hardware and have to be cleared by software in order to monitor new incoming events. • • MSLS event: The MSLS generation being switched off, this event is not available. DX2T event: The slave select input signal SELIN is handled by the DX2 stage and the edges of the selected signal can generate a protocol interrupt. This interrupt allows to indicate User’s Manual USIC, V1.0 19-149 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel that a data frame has started and/or that a data frame has been completely finished. A programmable edge detection for the DX2 input signal activates DX2T, sets bit PSR.DX2TEV and additionally, a protocol interrupt can be generated if PCRL.DX2TIEN = 1. The actual state of the selected input signal can be read out at PSR.DX2S to take appropriate actions when this interrupt has been detected. 19.4.4.2 End-of-Frame Control In slave mode, the following possibilities exist to determine the frame length. The slave device either has to refer to an external slave select signal, or to the number of received data bits. • • • Frame length known in advance by the slave device, no slave select: In this case bit field SCTRH.FLE can be programmed to the known value (if it does not exceed 63 bits). A currently running data word transfer is considered as finished if the programmed frame length is reached. Frame length not known by the slave, no slave select: In this case, the slave device’s software has to decide on data word base if a frame is finished. Bit field SCTRH.FLE can be either programmed to the word length SCTRH.WLE, or to its maximum value to disable the slave internal frame length evaluation by counting received bits. Slave device addressed via slave select signal SELIN: If the slave device is addressed by a slave select signal delivered by the communication master, the frame start and end information are given by this signal. In this case, bit field SCTRH.FLE should be programmed to its maximum value to disable the slave internal frame length evaluation. User’s Manual USIC, V1.0 19-150 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.5 SSC Protocol Registers In SSC mode, the registers PCRL, PCRH and PSR handle SSC related information. 19.4.5.1 SSC Protocol Control Registers In SSC mode, the PCRL/PCRH register bits or bit fields are defined as described in this section. PCRL Protocol Control Register L [SSC Mode] (40H) 15 14 13 DX2 MSL TIEN SIEN rw 12 11 10 9 8 Reset Value: 0000H 7 6 0 DCTQ1 PCTQ1 rw rw rw 5 4 3 CTQSEL1 FEM rw rw 2 1 0 SE SEL MSL INV CTR SEN rw rw rw Field Bits Type Description MSLSEN 0 rw MSLS Enable This bit enables/disables the generation of the master slave select signal MSLS. If the SSC is a transfer slave, the SLS information is read from a pin and the internal generation is not needed. If the SSC is a transfer master, it has to provide the MSLS signal. 0B The MSLS generation is disabled (MSLS = 0). This is the setting for SSC slave mode. 1B The MSLS generation is enabled. This is the setting for SSC master mode. SELCTR 1 rw Select Control This bit selects the operating mode for the SELO[7:0] outputs. 0B The coded select mode is enabled. 1B The direct select mode is enabled. SELINV 2 rw Select Inversion This bit defines if the polarity of the SELO[7:0] outputs in relation to the master slave select signal MSLS. 0B The SELO outputs have the same polarity as the MSLS signal (active high). 1B The SELO outputs have the inverted polarity to the MSLS signal (active low). User’s Manual USIC, V1.0 19-151 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description FEM 3 rw Frame End Mode This bit defines if a transmit buffer content that is not valid for transmission is considered as an end of frame condition for the slave select generation. 0B The current data frame is considered as finished when the last bit of a data word has been sent out and the transmit buffer TBUF does not contain new data (TDV = 0). 1B The MSLS signal is kept active also while no new data is available and no other end of frame condition is reached. In this case, the software can accept delays in delivering the data without automatic deactivation of MSLS in multi-word data frames. CTQSEL1 [5:4] rw Input Frequency Selection This bit field defines the input frequency fCTQIN for the generation of the slave select delays Tiw and Tnf. 00B fCTQIN = fPDIV 01B fCTQIN = fPPP 10B fCTQIN = fSCLK 11B fCTQIN = fMCLK PCTQ1 [7:6] rw Divider Factor PCTQ1 for Tiw and Tnf This bit field represents the divider factor PCTQ1 (range = 0 - 3) for the generation of the inter-word delay and the next-frame delay. Tiw = Tnf = 1/fCTQIN × (PCTQ1 + 1) × (DCTQ1 + 1) DCTQ1 [12:8] rw Divider Factor DCTQ1 for Tiw and Tnf This bit field represents the divider factor DCTQ1 (range = 0 - 31) for the generation of the inter-word delay and the next-frame delay. Tiw = Tnf = 1/fCTQIN × (PCTQ1 + 1) × (DCTQ1 + 1) MSLSIEN 14 rw MSLS Interrupt Enable This bit enables/disables the generation of a protocol interrupt if the state of the MSLS signal changes (indicated by PSR.MSLSEV = 1). 0B A protocol interrupt is not generated if a change of signal MSLS is detected. 1B A protocol interrupt is generated if a change of signal MSLS is detected. User’s Manual USIC, V1.0 19-152 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description DX2TIEN 15 rw DX2T Interrupt Enable This bit enables/disables the generation of a protocol interrupt if the DX2T signal becomes activated (indicated by PSR.DX2TEV = 1). 0B A protocol interrupt is not generated if DX2T is activated. 1B A protocol interrupt is generated if DX2T is activated. 0 13 rw Reserved Returns 0 if read; should be written with 0. PCRH Protocol Control Register H [SSC Mode] (42H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 M CLK 0 TIW EN SELO rw rw rw rw 2 1 0 Field Bits Type Description SELO [7:0] rw Select Output This bit field defines the setting of the SELO[7:0] output lines. 0B The corresponding SELOx line cannot be activated. 1B The corresponding SELOx line can be activated (according to the mode selected by SELCTR). TIWEN 8 rw Enable Inter-Word Delay Tiw This bit enables/disables the inter-word delay Tiw after the transmission of a data word. 0B No delay between data words of the same frame. The inter-word delay Tiw is enabled and introduced 1B between data words of the same frame. User’s Manual USIC, V1.0 19-153 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description MCLK 15 rw Master Clock Enable This bit enables/disables the generation of the master clock output signal MCLK, independent from master or slave mode. 0B The MCLK generation is disabled and output MCLK = 0. 1B The MCLK generation is enabled. 0 [14:9] rw Reserved Returns 0 if read; not modified in SSC mode. User’s Manual USIC, V1.0 19-154 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.5.2 SSC Protocol Status Register In SSC mode, the PSR register bits or bit fields are defined as described in this section. The bits and bit fields in register PSR are not cleared by hardware. The flags in the PSR register can be cleared by writing a 1 to the corresponding bit position in register PSCR. Writing a 1 to a bit position in PSR sets the corresponding flag, but doesn’t lead to further actions (no interrupt generation). Writing a 0 has no effect. The PSR flags should be cleared by software before enabling a new protocol. PSR Protocol Status Register [SSC Mode] (44H) 13 15 14 AIF RIF TBIF TSIF DLIF RSIF 0 DX2 MSL DX2 MSL TEV SEV S S rwh rwh r rwh rwh 12 rwh 11 rwh 10 9 8 Reset Value: 0000H 7 rwh 6 5 4 3 2 1 rwh rwh 0 rwh Field Bits Type Description MSLS 0 rwh MSLS Status This bit indicates the current status of the MSLS signal. It must be cleared by software to stop a running frame. The internal signal MSLS is inactive (0). 0B 1B The internal signal MSLS is active (1). DX2S 1 rwh DX2S Status This bit indicates the current status of the DX2S signal that can be used as slave select input SELIN. 0B DX2S is 0. 1B DX2S is 1. MSLSEV 2 rwh MSLS Event Detected1) This bit indicates that the MSLS signal has changed its state since MSLSEV has been cleared. Together with the MSLS status bit, the activation/deactivation of the MSLS signal can be monitored. 0B The MSLS signal has not changed its state. 1B The MSLS signal has changed its state. DX2TEV 3 rwh DX2T Event Detected1) This bit indicates that the DX2T trigger signal has been activated since DX2TEV has been cleared. 0B The DX2T signal has not been activated. 1B The DX2T signal has been activated. User’s Manual USIC, V1.0 19-155 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description 0 [9:4] r Reserved Returns 0 if read; not modified in SSC mode. RSIF 10 rwh Receiver Start Indication Flag A receiver start event has not occurred. 0B 1B A receiver start event has occurred. DLIF 11 rwh Data Lost Indication Flag A data lost event has not occurred. 0B 1B A data lost event has occurred. TSIF 12 rwh Transmit Shift Indication Flag 0B A transmit shift event has not occurred. 1B A transmit shift event has occurred. TBIF 13 rwh Transmit Buffer Indication Flag 0B A transmit buffer event has not occurred. 1B A transmit buffer event has occurred. RIF 14 rwh Receive Indication Flag 0B A receive event has not occurred. 1B A receive event has occurred. AIF 15 rwh Alternative Receive Indication Flag 0B An alternative receive event has not occurred. 1B An alternative receive event has occurred. 1) This status bit can generate a protocol interrupt in SSC mode (see Page 19-25). The general interrupt status flags are described in the general interrupt chapter. User’s Manual USIC, V1.0 19-156 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.4.6 SSC Timing Considerations The input and output signals have to respect certain timings in order to ensure correct data reception and transmission. In addition to module internal timings (due to input filters, reaction times on events, etc.), also the timings from the input pin via the input stage (Tin) to the module and from the module via the output driver stage to the pin (Tout), as well as the signal propagation on the wires (Tprop) have to be taken into account. Please note that there might by additional delays in the DXn input stages, because the digital filter and the synchronization stages lead to systematic delays, that have to be considered if these functions are used. 19.4.6.1 Closed-loop Delay A system-inherent limiting factor for the baud rate of an SSC connection is the closedloop delay. In a typical application setup, a communication master device is connected to a slave device in full-duplex mode with independent lines for transmit and receive data. In a general case, all transmitters refer to one shift clock edge for transmission and all receivers refer to the other shift clock edge for reception. The master device’s SSC module sends out the transmit data, the shift clock and optionally the slave select signal. Therefore, the baud rate generation (BRG) and slave select generation (SSG) are part of the master device. The frame control is similar for SSC modules in master and slave mode, the main difference is the fact which module generates the shift clock and optionally, the slave select signals. SSC Master Device SSC Master Module To u t TBUF Tin RBUF SSC Slave Device MTSR Tp ro p MRST Tp ro p Tin RBUF To u t TBUF Frame Control Frame Control To u t BRG To u t SSG SSC Slave Module Shift Clock Tp ro p Slave Select Tp ro p Tin Tin SSC_ClosedLoop Figure 19-38 SSC Closed-loop Delay User’s Manual USIC, V1.0 19-157 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The signal path between the SSC modules of the master and the slave device includes the master’s output driver, the wiring to the slave device and the slave device’s input stage. With the received shift clock edges, the slave device receives the master’s transmit data and transmits its own data back to the master device, passing by a similar signal path in the other direction. The master module receives the slave’s transmit data related to its internal shift clock edges. In order to ensure correct data reception in the master device, the slave’s transmit data has to be stable (respecting setup and hold times) as master receive data with the next shift clock edge of the master (generally 1/2 shift clock period). To avoid data corruption, the accumulated delays of the input and output stages, the signal propagation on the wiring and the reaction times of the transmitter/receiver have to be carefully considered, especially at high baud rates. In the given example, the time between the generation of the shift clock signal and the evaluation of the receive data by the master SSC module is given by the sum of Tout_master + 2 × Tprop + Tin_slave + Tout_slave + Tin_master + module reaction times + input setup times. The input path is characterized by an input delay depending mainly on the input stage characteristics of the pads. The output path delay is determined by the output driver delay and its slew rate, the external load and current capability of the driver. The device specific values for the input/output driver are given in the Data Sheet. 19.4.6.2 Delay Compensation in Master Mode A higher baud rate can be reached by delay compensation in master mode. This compensation is possible if (at least) the shift clock pin is bidirectional. SSC Master Device SSC Master Module To u t TBUF Tin RBUF SSC Slave Device MTSR Tp ro p MRST Tp ro p Tin RBUF To u t TBUF Frame Control BRG SSG SSC Slave Module Frame Control Shift Clock Tp ro p Slave Select Tp ro p Tin Tin SSC_DelayComp Figure 19-39 SSC Master Mode with Delay Compensation User’s Manual USIC, V1.0 19-158 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel If the shift clock signal in master mode is directly taken from the input function in parallel to the output signal, the output delay of the master device’s shift clock output is compensated and only the difference between the input delays of the master and the slave devices have to be taken into account instead of the complete master’s output delay and the slave’s input delay of the shift clock path. In the given example, the time between the evaluation of the shift clock signal and the receive data by the master SSC module is reduced by Tin_master + Tout_master. Although being a master mode, the shift clock input and optionally the slave select signal are not directly connected internally to the data shift unit, but are taken as external signals from input pins (DXnCR.INSW = 1). The delay compensation does not lead to additional pins for the SSC communication if the shift clock output pin (slave select output pin, respectively) is/are bidirectional. In this case, the input signal is decoupled from other internal signals, because it is related to the signal level at the pin itself. User’s Manual USIC, V1.0 19-159 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5 Inter-IC Bus Protocol (IIC) The IIC protocol of the USIC refers to the IIC bus specification version 2.1, january 2000 from Philips Semiconductors. Contrary to that specification, the USIC device assumes rise/fall times of the bus signals of max. 300 ns in all modes. Please refer to the pad characteristics in the AC/DC chapter for the driver capability. CBUS mode and HS mode are not supported. The IIC mode is selected by CCR.MODE = 0100B with CCFG.IIC = 1 (IIC mode available). This chapter contains the following sections: • • • • • Introduction (see Page 19-160) Operating the IIC protocol (see Page 19-164) Symbol timing and programming (see Page 19-170) Data flow handling (see Page 19-173) IIC protocol registers (see Page 19-178) 19.5.1 Introduction USIC IIC Features: • • • • • • • • • Two-wire interface, with one line for shift clock transfer and synchronization (shift clock SCL), the other one for the data transfer (shift data SDA) Communication in standard mode (100 kBit/s) or in fast mode (up to 400 kBit/s) Support of 7-bit addressing, as well as 10-bit addressing Master mode operation, where the IIC controls the bus transactions and provides the clock signal. Slave mode operation, where an external master controls the bus transactions and provides the clock signal. Multi-master mode operation, where several masters can be connected to the bus and bus arbitration can take place, i.e. the IIC module can be master or slave. The master/slave operation of an IIC bus participant can change from frame to frame. Efficient frame handling (low software effort), also allowing PEC transfers Powerful interrupt handling due to multitude of indication flags Compensation support for input delays User’s Manual USIC, V1.0 19-160 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.1.1 Signal Description An IIC connection is characterized by two wires (SDA and SCL). The output drivers for these signals must have open-drain characteristics to allow the wired-AND connection of all SDA lines together and all SCL lines together to form the IIC bus system. Due to this structure, a high level driven by an output stage does not necessarily lead immediately to a high level at the corresponding input. Therefore, each SDA or SCL connection has to be input and output at the same time, because the input function always monitors the level of the signal, also while sending. • • Shift data SDA: input handled by DX0 stage, output signal DOUT Shift clock SCL: input handled by DX1 stage, output signal SCLKOUT Figure 19-25 shows a connection of two IIC bus participants (modules IIC A and IIC B) using the USIC. In this example, the pin assignment of module IIC A shows separate pins for the input and output signals for SDA and SCL. This assignment can be used if the application does not provide pins having DOUT and a DX0 stage input for the same pin (similar for SCLKOUT and DX1). The pin assignment of module IIC B shows the connection of DOUT and a DX0 input at the same pin, also for SCLKOUT and a DX1 input. IIC Module A IIC Module B TBUF RBUF TBUF SCLKOUT + 3.3 V RBUF SCLKOUT Transfer Protocol SCLKIN DX1 DOUT PPP IIC SDL + 3.3 V DOUT DIN DX0 Baud Rate Generator SCLKIN DX1 Transfer Protocol PPP IIC DIN SDA fSYS (IIC A) DX0 fSYS SYS (IIC (IIC A) B) Baud Rate Generator IIC_Signals_ Figure 19-40 IIC Signal Connections User’s Manual USIC, V1.0 19-161 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.1.2 Symbols A symbol is a sequence of edges on the lines SDA and SCL. Symbols contain 10 or 25 time quanta tq, depending on the selected baud rate. The baud rate generator determines the length of the time quanta tq, the sequence of edges in a symbol is handled by the IIC protocol pre-processor, and the sequence of symbols can be programmed by the user according to the application needs. The following symbols are defined: • • • • • Bus idle: SDA and SCL are high. No data transfer takes place currently. Data bit symbol: SDA stable during the high phase of SCL. SDA then represents the transferred bit value. There is one clock pulse on SCL for each transferred bit of data. During data transfers SDA may only change while SCL is low. Start symbol: Signal SDA being high followed by a falling edge of SDA while SCL is high indicates a start condition. This start condition initiates a data transfer over the IIC bus after the bus has been idle. Repeated start symbol: This start condition initiates a data transfer over the bus after a data symbol when the bus has not been idle. Therefore, SDA is set high and SCL low, followed by a start symbol. Stop symbol: A rising edge on SDA while SCL is high indicates a stop condition. This stop condition terminates a data transfer to release the bus to idle state. Between a start condition and a stop condition an arbitrary number of bytes may be transferred. User’s Manual USIC, V1.0 19-162 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.1.3 Frame Format Data is transferred by the 2-line IIC bus (SDA, SCL) using a protocol that ensures reliable and efficient transfers. The sender of a (data) byte receives and checks the value of the following acknowledge field. The IIC being a wired-AND bus system, a 0 of at least one device leads to a 0 on the bus, which is received by all devices. A data word consists of 8 data bit symbols for the data value, followed by another data bit symbol for the acknowledge bit. The data word can be interpreted as address information (after a start symbol) or as transferred data (after the address). In order to be able to receive an acknowledge signal, the sender of the data bits has to release the SDA line by sending a 1 as acknowledge value. Depending on the internal state of the receiver, the acknowledge bit is either sent active or passive. SDA Master D7 SCL Master 1 D6 Dx D0 1 P 0 1 2 8 9 0 SDA Slave 1 SCL Slave 1 0 0 Start Data Word Ack Stop IIC_Frame _ Figure 19-41 IIC Frame Example (simplified) User’s Manual USIC, V1.0 19-163 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.2 Operating the IIC In order to operate the IIC protocol, the following issues have to be considered: • • • • • Select IIC mode: It is recommended to configure all parameters of the IIC that do not change during run time while CCR.MODE = 0000B. Bit field SCTRL.TRM = 11B should to be programmed. The configuration of the input stages has to be done while CCR.MODE = 0000B to avoid unintended edges of the input signals and the IIC mode can be enabled by CCR.MODE = 0100B afterwards. Pin connections: Establish a connection of input stage DX0 (with DX0CR.DPOL = 0) to the selected shift data pin SDA (signal DIN) with DX0CR.INSW = 0 and configure the transmit data output signal DOUT (with SCTRL.DOCFG = 00B) to the same pin. If available, this can be the same pin for input and output, or connect the selected input pin and the output pin to form the SDA line. The same mechanism applies for the shift clock line SCL. Here, signal SCLKOUT (with BRGH.SCLKCFG = 00B) and an input of the DX1 stage have to be connected (with DX1CR.DPOL = 0). The input stage DX2 is not used for the IIC protocol. If the digital input filters are enabled in the DX0/1 stages, their delays have to be taken into account for correct calculation of the signal timings. The pins used for SDA and SCL have to be set to open-drain mode to support the wired-AND structure of the IIC bus lines. Note that the basic I/O port configuration for the IIC I/O pins must also setup correctly before the IIC mode becomes enabled by CCR.MODE = 0100B. Bit timing configuration: In standard mode (100 kBit/s) a minimum module frequency of 2 MHz is necessary, whereas in fast mode (400 kBit/s) a minimum of 10 MHz is required. Additionally, if the digital filter stage should be used to eliminate spikes up to 50 ns, a filter frequency of 20 MHz is necessary. There could be an uncertainty in the SCL high phase timing of maximum 1/fPPP if another IIC participant lengthens the SCL low phase on the bus. More details are given in Section 19.5.3. Data format configuration: The data format has to be configured for 8 data bits (SCTRH.WLE = 7), unlimited data flow (SCTRH.FLE = 3FFH), and MSB shifted first (SCTRL.SDIR = 1). The parity generation has to be disabled (CCR.PM = 00B). General hints: The IIC slave module becomes active (for reception or transmission) if it is selected by the address sent by the master. In the case that the slave sends data to the master, it uses the transmit path. So a master must not request to read data from the slave address defined for its own channel in order to avoid collisions. The built-in error detection mechanisms are only activated while the IIC module is User’s Manual USIC, V1.0 19-164 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel taking part in IIC bus traffic. If the slave can not deal with too high frequencies, it can lengthen the low phase of the SCL signal. For data transfers according to the IIC specification, the shift data line SDA shall only change while SCL = 0 (defined by IIC bus specification). 19.5.2.1 Transmission Chain The IIC bus protocol requiring a kind of in-bit-response during the arbitration phase and while a slave is transmitting, the resulting loop delay of the transmission chain can limit the reachable maximal baud rate, strongly depending on the bus characteristics (bus load, module frequency, etc.). Figure 19-25 shows the general signal path and the delays in the case of a slave transmission. The shift clock SCL is generated by the master device, output on the wire, then it passes through the input stage and the input filter. Now, the edges can be detected and the SDA data signal can be generated accordingly. The SDA signal passes through the output stage and the wire to the master receiver part. There, it passes through the input stage and the input filter before it is sampled. This complete loop has to be finished (including all settling times to obtain stable signal levels) before the SCL signal changes again. The delays in this path have to be taken into account for the calculation of the baud rate as a function of fSYS and fPPP. 19.5.2.2 Byte Stretching If a device is selected as transceiver and should transmit a data byte but the transmit buffer TBUF does not contain valid data to be transmitted, the device ties down SCL = 0 at the end of the previous acknowledge bit. The waiting period is finished if new valid data has been detected in TBUF. 19.5.2.3 Baud Rate Update The baud rate setting can be changed from frame to frame. The BRGL/H register setting and PCR.STIM are sampled (shadowed) while the IIC bus is idle. A new setting of these bits can be programmed while a frame is running. The new setting will be taken into account with the start of the next frame. In order to minimize the risk of inconsistencies when changing baud rate setting (several registers have to be updated), it is recommended to avoid baud rate changes while the IIC protocol is enabled, especially for slave devices. 19.5.2.4 Master Arbitration During the address and data transmission, the master transmitter checks at the rising edge of SCL for each data bit if the value it is sending is equal to the value read on the SDA line. If yes, the next data bit values can be 0. If this is not the case (transmitted User’s Manual USIC, V1.0 19-165 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel value = 1, value read = 0), the master has lost the transmit arbitration. This is indicated by status flag PSR.ARL and can generate a protocol interrupt if enabled by PCRH.ARLIEN. When the transmit arbitration has been lost, the software has to initialize the complete frame again, starting with the first address byte together with the start condition for a new master transmit attempt. Arbitration also takes place for the ACK bit. 19.5.2.5 Release of TBUF In case of a non-acknowledge or an error, the content of TBUF becomes invalid. In both cases, the software has to flush the transmit buffer and to set it up again with appropriate values to react on the previous event. 19.5.2.6 Mode Control Behavior In multi-master mode, only run mode 0 and stop mode 0 are supported, the other modes must not be programmed. • • • • Run Mode 0: Behavior as programmed. If TCSRL.TDV = 0 (no new valid TBUF entry found) when a new TBUF entry needs to be processed, the IIC module waits for TDV becoming set to continue operation. Run Mode 1: Behavior as programmed. If in master mode, TCSRL.TDV = 0 (no new valid TBUF entry found) when a new TBUF entry needs to be processed, the IIC module sends a stop condition to finish the frame. In slave mode, no difference to run mode 0. Stop Mode 0: Bit TCSRL.TDV is internally considered as 0 (the bit itself is not modified by the stop mode). A currently running word is finished normally, but no new word is started in case of master mode (wait for TDV active). Bit TDV being considered as 0 for master and slave, the slave will force a wait state on the bus if read by an external master, too. Additionally, it is not possible to force the generation of a STOP condition out of the wait state. The reason is, that a master read transfer must be finished with a notacknowledged followed by a STOP condition to allow the slave to release his SDA line. Otherwise the slave may force the SDA line to 0 (first data bit of next byte) making it impossible to generate the STOP condition (rising edge on SDA). To continue operation, the mode must be switched to run mode 0 Stop Mode 1: Same as stop mode 0, but additionally, a master sends a STOP condition to finish the frame. If stop mode 1 is requested for a master device after the first byte of a 10 bit address, a stop condition will be sent out. In this case, a slave device will issue an error interrupt. User’s Manual USIC, V1.0 19-166 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.2.7 IIC Protocol Interrupt Events The following protocol-related events are generated in IIC mode and can lead to a protocol interrupt. Please note that the bits in register PSR are not all automatically cleared by hardware and have to be cleared by software in order to monitor new incoming events. • • • • Transmit buffer event: The transmit buffer event indication flag PSR.TBIF is set when the content of the transmit buffer TBUF has been loaded to the transmit shift register, indicating that the action requested by the TBUF entry has started. With this event, bit TCSRL.TDV is cleared. This interrupt can be used to write the next TBUF entry while the last one is in progress (handled by the transmitter part). Receive event: This receive event indication flag PSR.RIF indicates that a new data byte has been written to the receive buffer RBUF0/1 (except for the first address byte of a new frame, that is indicated by an alternative receive interrupt). The flag becomes set when the data byte is received (after the falling edge of SCL). This interrupt can be used to read out the received data while a new data byte can be in progress (handled by the receiver part). Alternate receive event: The alternative receive event indication flag AIF is based on bit RBUFSR[9] (same as RBUF[9]), indicating that the received data word has been the first data word of a new data frame. Protocol interrupt events: The IIC protocol related interrupt events are either indicating the reception of symbols or the detection of frame errors (common indication PSR.ERR) or unexpected/wrong TDF codes (common indication PSR.WTDF). - start condition received at a correct position in a frame (PSR.SCR) - repeated start condition received at a correct position in a frame (PSR.RSCR) - stop condition transferred at a correct position in a frame (PSR.PCR) - master arbitration lost (PSR.ARL) - slave read requested (PSR.SRR) - non-acknowledge received (PSR.NACK) - start condition not at the expected position in a frame (PSR.ERR) - stop condition not at the expected position in a frame (PSR.ERR) - as slave, 10-bit address interrupted by a stop condition after the first address byte (PSR.ERR) - TDF slave code in master mode (PSR.WTDF) - TDF master code in slave mode (PSR.WTDF) - Reserved TDF code found (PSR.WDTF) - Start condition code during a running frame in master mode (PSR.WTDF) - Data byte transmission code after transfer direction has been changed to reception (master read) in master mode (PSR.WTDF) User’s Manual USIC, V1.0 19-167 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel If a wrong TDF code is found in TBUF, the error event is active until the TDF value is either corrected or invalidated. If the related interrupt is enabled, the interrupt handler should check PSR.WDTF first and correct or invalidate TBUF, before dealing with the other possible interrupt events. 19.5.2.8 Receiver Address Acknowledge After a (repeated) start condition, the master sends a slave address to identify the target device of the communication. The start address can comprise one or two address bytes (for 7 bit or for 10 bit addressing schemes). After an address byte, a slave sensitive to the transmitted address has to acknowledge the reception. Therefore, the slave’s address can be programmed in the device, where it is compared to the received address. In case of a match, the slave answers with an acknowledge (SDA = 0). Slaves that are not targeted answer with an non-acknowledge (SDA = 1). In addition to the match of the programmed address, an other address byte value has to be answered with an acknowledge if the slave is capable to handle the corresponding requests. The address byte 00H indicates a general call address, that can be acknowledged. The value 01H stands for a start byte generation, that is not acknowledged In order to allow selective acknowledges for the different values of the address byte(s), the following control mechanism is implemented: • • • The address byte 00H is acknowledged if bit PCRH.ACK00 is set. The address byte 01H is not acknowledged. The first 7 bits of a received first address byte are compared to the programmed slave address (PCR.SLAD[15:9]). If these bits match, the slave sends an acknowledge. In addition to this, if the slave address is programmed to 1111 0XXB, the slave device waits for a second address byte and compares it also to PCR.SLAD[7:0] and sends an acknowledge accordingly to cover the 10 bit addressing mode. The user has to take care about reserved addresses (refer to IIC specification for more detailed description). Only the address 1111 0XXB is supported. Under each of these conditions, bit PSR.SLSEL will be set when the addressing delivered a match. This bit is cleared automatically by a (repeated) start condition. 19.5.2.9 Receiver Handling A selected slave receiver always acknowledges a received data byte. If the receive buffers RBUF0/1 are already full and can not accept more data, the respective register is overwritten (PSR.DLI becomes set in this case and a protocol interrupt can be generated). An address reception also uses the registers RBUF0/1 to store the address before checking if the device is selected. The received addresses do not set RDV0/1, so the addresses are not handled like received data. User’s Manual USIC, V1.0 19-168 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.2.10 Receiver Status Information In addition to the received data byte, some IIC protocol related information is stored in the 16-bit data word of the receive buffer. The received data byte is available at the bit positions RBUF[7:0], whereas the additional information is monitored at the bit positions RBUF[12:8]. This structure allows to identify the meaning of each received data byte without reading additional registers, also when using a FIFO data buffer. • • • • • RBUF[8]: Value of the received acknowledge bit. This information is also available in RBUFSR[8] as protocol argument. RBUF[9]: A 1 at this bit position indicates that after a (repeated) start condition followed by the address reception the first data byte of a new frame has been received. A 0 at this bit position indicates further data bytes. This information is also available in RBUFSR[9], allowing different interrupt routines for the address and data handling. RBUF[10]: A 1 at this bit position indicates that the data byte has been received when the device has been in slave mode, whereas a 1 indicates a reception in master mode. RBUF[11]: A 1 at this bit position indicates an incomplete/erroneous data byte in the receive buffer caused by a wrong position of a START or STOP condition in the frame. The bit is not identical to the frame error status bit in PSR, because the bit in the PSR has to be cleared by software (“sticky” bit), whereas RBUF[11] is evaluated data byte by data byte. If RBUF[11] = 0, the received data byte has been correct, independent of former errors. RBUF[12]: A 0 at this bit position indicates that the programmed address has been received. A 1 indicates a general call address. User’s Manual USIC, V1.0 19-169 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.3 Symbol Timing The symbol timing of the IIC is determined by the master stimulating the shift clock line SCL. It is different for standard and fast IIC mode. • • 100 kBaud standard mode (PCRH.STIM = 0): The symbol timing is based on 10 time quanta tq per symbol. A minimum module clock frequency fSYS = 2 MHz is required. 400 kBaud standard mode (PCRH.STIM = 1): The symbol timing is based on 25 time quanta tq per symbol. A minimum module clock frequency fSYS = 10 MHz is required. The baud rate setting should only be changed while the transmitter and the receiver are idle or CCR.MODE = 0. The bits in register BRGL define the length of a time quantum tq that is given by one period of fPCTQ. • • • BRGL.CTQSEL to define the input frequency fCTQIN for the time quanta generation BRGL.PCTQ to define the length of a time quantum (division of fCTQIN by 1, 2, 3, or 4) BRGL.DCTQ to define the number of time quanta per symbol (number of tq = DCTQ + 1) The standard setting is given by CTQSEL = 00B (fCTQIN = fPDIV) and PPPEN = 0 (fPPP = fIN Under these conditions, the frequency fPCTQ is given by: fPCTQ = fPIN × 1 1 × PCTQ + 1 PDIV + 1 (19.10) To respect the specified SDA hold time of 300 ns after a falling edge of signal SCL, a hold delay tHDEL has been introduced. It also prevents an erroneous detection of a start or a stop condition. The length of this delay can be programmed by bit field PCRH.HDEL. Taking into account the input sampling and output update, bit field HDEL can be programmed according to: HDEL ≥ 300 ns × fPPP - 3 × fPPP +1 fSYS f HDEL ≥ 300 ns × fPPP - 3 × PPP fSYS with digital filter and HDELmin = 2 (19.11) +2 without digital filter and HDELmin = 1 If the digital input filter is used, HDEL compensates the filter delay of 2 filter periods (fPPP should be used) in case of a spike on the input signal. This ensures that a data bit on the SDA line changing just before the rising edge or behind the falling edge of SCL won’t be treated as a start or stop condition. User’s Manual USIC, V1.0 19-170 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.3.1 Start Symbol Figure 19-42 shows the general start symbol timing. Start Symbol Bus Idle SDA SCL Standard Mode X .... 0 4 .... 5 9 X tq Fast Mode X .... 0 .... 15 16 24 X IIC_StartTiming Figure 19-42 Start Symbol Timing 19.5.3.2 Repeated Start Symbol During the first part of a repeated start symbol, an SCL low value is driven for the specified number of time quanta. Then a high value is output. After the detection of a rising edge at the SCL input, a normal start symbol is generated, as shown in Figure 19-43. Repeated Start Symbol Start Symbol SDA tH D EL SCL Standard Mode X 0 .... 4 0 .... 4 5 .... 9 X tq Fast Mode X 0 15 0 .... 15 16 .... 24 X IIC _RepStartTiming Figure 19-43 Repeated Start Symbol Timing User’s Manual USIC, V1.0 19-171 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.3.3 Stop Symbol Figure 19-44 shows the stop symbol timing. Stop Symbol Bus Idle SDA tH D EL SCL Standard Mode X .... 0 4 5 .... 9 X tq Fast Mode X .... 0 15 16 .... 24 X IIC_StopTiming Figure 19-44 Stop Symbol Timing 19.5.3.4 Data Bit Symbol Figure 19-45 shows the general data bit symbol timing. Data Bit Symbol SDA tH D EL SCL Standard Mode X 0 .... 4 5 .... 9 X tq Fast Mode X 0 .... 15 16 .... 24 X IIC_DataBitTiming Figure 19-45 Data Bit Symbol Output SDA changes after the time tHDEL defined by PCRH.HDEL has elapsed if a falling edge is detected at the SCL input to respect the SDA hold time. The value of User’s Manual USIC, V1.0 19-172 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel PCRH.HDEL allows compensation of the delay of the SCL input path (sampling, filtering). In the case of an acknowledge transmission, the USIC IIC waits for the receiver indicating that a complete byte has been received. This adds an additional delay of 3 periods of fSYS to the path. The minimum module input frequency has to be selected properly to ensure the SDA setup time to SCL rising edge. 19.5.4 Data Flow Handling The handling of the data flow and the sequence of the symbols in an IIC frame is controlled by the IIC transmitter part of the USIC communication channel. The IIC bus protocol is byte-oriented, whereas a USIC data buffer word can contain up to 16 data bits. In addition to the data byte to be transmitted (located at TBUF[7:0]), bit field TDF (transmit data format) to control the IIC sequence is located at the bit positions TBUF[10:8]. The TDF code defines for each data byte how it should be transmitted (IIC master or IIC slave), and controls the transmission of (repeated) start and stop symbols. This structure allows the definition of a complete IIC frame for an IIC master device only by writing to TBUFx or by using a FIFO data buffer mechanism, because no other control registers have to be accessed. If a wrong or unexpected TDF code is encountered (e.g. due to a software error during setup of the transmit buffer), a stop condition will be sent out by the master. This leads to an abort of the currently running frame. A slave module waits for a valid TDF code and sets SCL = 0. The software then has to invalidate the unexpected TDF code and write a valid one. Please note that during an arbitration phase in multi-master bus systems an unpredictable bus behavior may occur due to an unexpected stop condition. 19.5.4.1 Transmit Data Formats The following transmit data formats are available in master mode: • • • Send data byte as master (TDF = 000B): This format is used to transmit a data byte from the master to a slave. The transmitter sends its data byte (TBUF[7:0]), receives and checks the acknowledge bit sent by the slave. Receive data byte and send acknowledge 0 (TDF = 010B): This format is used by the master to read a data byte from a slave. The master acknowledges the transfer with a 0-level to continue the transfer. The content of TBUF[7:0] is ignored. Receive data byte and send acknowledge 1 (TDF = 011B): This format is used by the master to read a data byte from a slave. The master does not acknowledge the transfer with a 1-level to finish the transfer. The content of TBUF[7:0] is ignored. User’s Manual USIC, V1.0 19-173 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • • • Send start condition (TDF = 100B): If TBUF contains this entry while the bus is idle, a start condition will be generated. The content of TBUF[7:0] is taken as first address byte for the transmission (bits TBUF[7:1] are the address, the LSB is the read/write control). Send repeated start condition (TDF = 101B): If TBUF contains this entry and SCL = 0 and a byte transfer is not in progress, a repeated start condition will be sent out if the device is the current master. The current master is defined as the device that has set the start condition (and also won the master arbitration) for the current message. The content of TBUF[7:0] is taken as first address byte for the transmission (bits TBUF[7:1] are the address, the LSB is the read/write control). Send stop condition (TDF = 110B): If the current master has finished its last byte transfer (including acknowledge), it sends a stop condition if this format is in TBUF. The content of TBUF[7:0] is ignored. TDF = 111B: Reserved and must not be programmed. No additional action except releasing the TBUF entry and setting the error bit in PSR (that can lead to a protocol interrupt). The following transmit data format is available in slave mode (the symbols in a frame are controlled by the master and the slave only has to send data if it has been “asked” by the master): • Send data byte as slave (TDF = 001B): This format is used to transmit a data byte from a slave to the master. The transmitter sends its data byte (TBUF[7:0]) plus the acknowledge bit as a 1. User’s Manual USIC, V1.0 19-174 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.4.2 Valid Master Transmit Data Formats Due to the IIC frame format definitions, only some specific sequences of TDF codes are possible and valid. If the USIC IIC module detects a wrong TDF code in a running frame, the transfer is aborted and flag PCR.WTDF is set. Additionally, an interrupt can be generated if enabled by the user. In case of a wrong TDF code, the frame will be aborted immediately with a STOP condition if the USIC IIC master still owns the SDA line. But if the accessed slave owns the SDA line (read transfer), the master must perform a dummy read with a non-acknowledge so that the slave releases the SDA line before a STOP condition can be sent. The received data byte of the dummy read will be stored in RBUF0/1, but RDV0/1 won’t be set. Therefore the dummy read won’t generate a receive interrupt and the data byte won’t be stored into the receive FIFO. If the transfer direction has changed in the current frame (master read access), the transmit data request (TDF = 000B) is not possible and won't be accepted (leading to a wrong TDF Code indication). Table 19-9 Valid TDF Codes Overview Frame Position Valid TDF Codes First TDF code (master idle) Start (100B) Read transfer: second TDF code (after start or repeated start) Receive with acknowledge (010B) or receive with not-acknowledge (011B) Write transfer: second TDF code (after start Transmit (000B), repeated start (101B), or or repeated start) stop (110B) Read transfer: third and subsequent TDF code after acknowledge Receive with acknowledge (010B) or receive with not-acknowledge (011B) Read transfer: third and subsequent TDF code after not-acknowledge Repeated start (101B) or stop (110B) Write transfer: third and subsequent TDF code Transmit (000B), repeated start (101B), or stop (110B) • • First TDF code: A master transfer starts with the TDF start code (100B). All other codes are ignored, but no WTDF error will be indicated. TDF code after a start (100B) or repeated start code (101B) in case of a read access: If a master-read transfer is started (determined by the LSB of the address byte = 1), the transfer direction of SDA changes and the slave will actively drive the data line. In this case, only the codes 010B and 011B are valid. To abort the transfer in case of a wrong code, a dummy read must be performed by the master before the STOP condition can be generated. User’s Manual USIC, V1.0 19-175 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel • • • • • TDF code after a start (100B) or repeated start code (101B) in case of a write access: If a master-write transfer is started (determined by the LSB of the address byte = 0), the master still owns the SDA line. In this case, the transmit (000B), repeated start (101B) and stop (110B) codes are valid. The other codes are considered as wrong. To abort the transfer in case of a wrong code, the STOP condition is generated immediately. TDF code of the third and subsequent command in case of a read access with acknowledged previous data byte: If a master-read transfer is started (determined by the LSB of the address byte), the transfer direction of SDA changes and the slave will actively drive the data line. To force the slave to release the SDA line, the master has to not-acknowledge a byte transfer. In this case, only the receive codes 010B and 011B are valid. To abort the transfer in case of a wrong code, a dummy read must be performed by the master before the STOP condition can be generated. TDF code of the third and subsequent command in case of a read access with a notacknowledged previous data byte: If a master-read transfer is started (determined by the LSB of the address byte), the transfer direction of SDA changes and the slave will actively drive the data line. To force the slave to release the SDA line, the master has to not-acknowledge a byte transfer. In this case, only the restart (101B) and stop code (110B) are valid. To abort the transfer in case of a wrong code, the STOP condition is generated immediately. TDF code of the third and subsequent command in case of a write access: If a master-write transfer is started (determined by the LSB of the address byte), the master still owns the SDA line. In this case, the transmit (000B), repeated start (101B) and stop (110B) codes are valid. The other codes are considered as wrong. To abort the transfer in case of a wrong code, the STOP condition is generated immediately. After a master device has received a non-acknowledge from a slave device, a stop condition will be sent out automatically, except if the following TDF code requests a repeated start condition. In this case, the TDF code is taken into account, whereas all other TDF codes are ignored. User’s Manual USIC, V1.0 19-176 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Bus idle? no yes TDF = 100 B ? yes no Indicate arbitration loss and release bus Send start condition Send repeated start condition Send TBUF[7:0] with ACK = 1 Arbitration lost ? yes Send all 1s with ACK = 1 no Get new valid TBUF value Send all 1s with ACK = 0 Receive Transmit or receive ? Transmit yes TDF = 000 B ? no TDF = 010 B? yes no Send stop condition Indicate error Ignore TBUF yes yes TDF = 101 B? no no TDF = 011 B? yes TDF = 110 B? no IIC_MasterTrFlow Figure 19-46 IIC Master Transmission User’s Manual USIC, V1.0 19-177 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.5 IIC Protocol Registers In IIC mode, the registers PCRH, PCRL and PSR handle IIC related information. 19.5.5.1 IIC Protocol Control Registers In IIC mode, the PCRL/PCRH register bits or bit fields are defined as described in this section. PCRL Protocol Control Register L [IIC Mode] (40H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 SLAD rw Field Bits Type Description SLAD [15:0] rw Slave Address This bit field contains the programmed slave address. The corresponding bits in the first received address byte are compared to the bits SLAD[15:9] to check for address match. If SLAD[15:11] = 11110B, then the second address byte is also compared to SLAD[7:0]. PCRH Protocol Control Register H [IIC Mode] (42H) 15 14 13 12 11 M CLK 0 HDEL rw rw rw 10 9 8 6 5 4 3 2 1 0 SAC ERR SRR ARL NAC PCR RSC SCR ACK STIM KDIS IEN IEN IEN KIEN IEN RIEN IEN 00 rw rw Field Bits Type Description ACK00 0 rw User’s Manual USIC, V1.0 7 Reset Value: 0000H rw rw rw rw rw rw rw rw Acknowledge 00H This bit defines if a slave device should be sensitive to the slave address 00H. 0B The slave device is not sensitive to this address. 1B The slave device is sensitive to this address. 19-178 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description STIM 1 rw Symbol Timing This bit defines how many time quanta are used in a symbol. 0B A symbol contains 10 time quanta. The timing is adapted for standard mode (100 kBaud). 1B A symbol contains 25 time quanta. The timing is adapted for fast mode (400 kBaud). SCRIEN 2 rw Start Condition Received Interrupt Enable This bit enables the generation of a protocol interrupt if a start condition is detected. 0B The start condition interrupt is disabled. 1B The start condition interrupt is enabled. RSCRIEN 3 rw Repeated Start Condition Received Interrupt Enable This bit enables the generation of a protocol interrupt if a repeated start condition is detected. 0B The repeated start condition interrupt is disabled. 1B The repeated start condition interrupt is enabled. PCRIEN 4 rw Stop Condition Received Interrupt Enable This bit enables the generation of a protocol interrupt if a stop condition is detected. The stop condition interrupt is disabled. 0B 1B The stop condition interrupt is enabled. NACKIEN 5 rw Non-Acknowledge Interrupt Enable This bit enables the generation of a protocol interrupt if a non-acknowledge is detected by a master. 0B The non-acknowledge interrupt is disabled. 1B The non-acknowledge interrupt is enabled. ARLIEN 6 rw Arbitration Lost Interrupt Enable This bit enables the generation of a protocol interrupt if an arbitration lost event is detected. 0B The arbitration lost interrupt is disabled. 1B The arbitration lost interrupt is enabled. SRRIEN 7 rw Slave Read Request Interrupt Enable This bit enables the generation of a protocol interrupt if a slave read request is detected. The slave read request interrupt is disabled. 0B 1B The slave read request interrupt is enabled. User’s Manual USIC, V1.0 19-179 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description ERRIEN 8 rw Error Interrupt Enable This bit enables the generation of a protocol interrupt if an IIC error condition is detected (indicated by PSR.ERR or PSR.WTDF). 0B The error interrupt is disabled. 1B The error interrupt is enabled. SACKDIS 9 rw Slave Acknowledge Disable This bit disables the generation of an active acknowledge signal for a slave device (active acknowledge = 0 level). Once set by software, it is automatically cleared with each (repeated) start condition. If this bit is set after a byte has been received (indicated by an interrupt) but before the next acknowledge bit has started, the next acknowledge bit will be sent with passive level. This would indicate that the receiver does not accept more bytes. As a result, a minimum of 2 bytes will be received if the first receive interrupt is used to set this bit. 0B The generation of an active slave acknowledge is enabled (slave acknowledge with 0 level = more bytes can be received). 1B The generation of an active slave acknowledge is disabled (slave acknowledge with 1 level = reception stopped). HDEL [13:10] rw Hardware Delay This bit field defines the delay used to compensate the internal treatment of the SCL signal (see Page 19-170) in order to respect the SDA hold time specified for the IIC protocol. 0 14 rw Reserved Returns 0 if read; should be written with 0. MCLK 15 rw Master Clock Enable This bit enables generation of the master clock MCLK (not directly used for IIC protocol, can be used as general frequency output). 0B The MCLK generation is disabled and MCLK is 0. 1B The MCLK generation is enabled. User’s Manual USIC, V1.0 19-180 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.5.5.2 IIC Protocol Status Register The following PSR status bits or bit fields are available in IIC mode. Please note that the bits in register PSR are not cleared by hardware. The flags in the PSR register can be cleared by writing a 1 to the corresponding bit position in register PSCR. Writing a 1 to a bit position in PSR sets the corresponding flag, but doesn’t lead to further actions (no interrupt generation). Writing a 0 has no effect. These flags should be cleared by software before enabling a new protocol. PSR Protocol Status Register [IIC Mode] 13 14 AIF RIF TBIF TSIF DLIF RSIF 0 ERR SRR ARL N R W SL PCR SCR ACK SCR TDF SEL rwh rwh r rwh rwh rwh 11 rwh 10 rwh 9 8 7 Reset Value: 0000H 15 rwh 12 (44H) rwh 6 rwh 5 4 rwh 3 rwh 2 1 rwh rwh 0 rwh Field Bits Type Description SLSEL 0 rwh Slave Select This bit indicates that this device has been selected as slave. 0B The device is not selected as slave. The device is selected as slave. 1B WTDF 1 rwh Wrong TDF Code Found1) This bit indicates that an unexpected/wrong TDF code has been found. A protocol interrupt can be generated if PCRH.ERRIEN = 1. 0B A wrong TDF code has not been found. 1B A wrong TDF code has been found. SCR 2 rwh Start Condition Received1) This bit indicates that a start condition has been detected on the IIC bus lines.A protocol interrupt can be generated if PCRH.SCRIEN = 1. 0B A start condition has not yet been detected. A start condition has been detected. 1B User’s Manual USIC, V1.0 19-181 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description RSCR 3 rwh Repeated Start Condition Received1) This bit indicates that a repeated start condition has been detected on the IIC bus lines. A protocol interrupt can be generated if PCRH.RSCRIEN = 1. 0B A repeated start condition has not yet been detected. 1B A repeated start condition has been detected. PCR 4 rwh Stop Condition Received1) This bit indicates that a stop condition has been detected on the IIC bus lines. A protocol interrupt can be generated if PCRH.PCRIEN = 1. A stop condition has not yet been detected. 0B 1B A stop condition has been detected. NACK 5 rwh Non-Acknowledge Received1) This bit indicates that a non-acknowledge has been received in master mode. This bit is not set in slave mode. A protocol interrupt can be generated if PCRH.NACKIEN = 1. 0B A non-acknowledge has not been received. 1B A non-acknowledge has been received. ARL 6 rwh Arbitration Lost1) This bit indicates that an arbitration has been lost. A protocol interrupt can be generated if PCRH.ARLIEN = 1. 0B An arbitration has not been lost. 1B An arbitration has been lost. SRR 7 rwh Slave Read Request1) This bit indicates that a slave read request has been detected. It becomes active to request the first data byte to be made available in the transmit buffer. For further consecutive data bytes, the transmit buffer issues more interrupts. For the end of the transfer, the master transmitter sends a stop condition. A protocol interrupt can be generated if PCRH.SRRIEN = 1. 0B A slave read request has not been detected. 1B A slave read request has been detected. User’s Manual USIC, V1.0 19-182 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description ERR 8 rwh Error1) This bit indicates that an IIC error (frame format or TDF code) has been detected. A protocol interrupt can be generated if PCRH.ERRIEN = 1. 0B An IIC error has not been detected. 1B An IIC error has been detected. 0 9 r Reserved Returns 0 if read; not modified in IIC mode. RSIF 10 rwh Receiver Start Indication Flag 0B A receiver start event has not occurred. 1B A receiver start event has occurred. DLIF 11 rwh Data Lost Indication Flag A data lost event has not occurred. 0B 1B A data lost event has occurred. TSIF 12 rwh Transmit Shift Indication Flag 0B A transmit shift event has not occurred. 1B A transmit shift event has occurred. TBIF 13 rwh Transmit Buffer Indication Flag 0B A transmit buffer event has not occurred. 1B A transmit buffer event has occurred. RIF 14 rwh Receive Indication Flag 0B A receive event has not occurred. 1B A receive event has occurred. AIF 15 rwh Alternative Receive Indication Flag 0B An alternative receive event has not occurred. 1B An alternative receive event has occurred. 1) This status bit can generate a protocol interrupt (see Page 19-25). The general interrupt status flags are described in the general interrupt chapter. User’s Manual USIC, V1.0 19-183 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6 IIS Protocol This chapter describes how the USIC module handles the IIS protocol. This serial protocol can handle reception and transmission of synchronous data frames between a device operating in master mode and a device in slave mode. An IIS connection based on a USIC communication channel supports half-duplex and full-duplex data transfers. The IIS mode is selected by CCR.MODE = 0011B with CCFG.IIS = 1 (IIS mode is available). This chapter contains the following sections: • • • • • Introduction (see Page 19-184) General IIS issues (see Page 19-188) Master mode operation (see Page 19-193) Slave mode operation (see Page 19-197) Protocol registers (seePage 19-198) 19.6.1 Introduction The IIS protocol is a synchronous serial communication protocol mainly for audio and infotainment applications and refers to the Philips specification, 1986, revised June 5, 1996. 19.6.1.1 Signal Description A connection between an IIS master and an IIS slave is based on the following signals: • • • • A shift clock signal SCK, generated by the transfer master. It is permanently generated while an IIS connection is established, also while no valid data bits are transferred. A word address signal WA (also named WS), generated by the transfer master. It indicates the beginning of a new data word and the targeted audio channel (e.g. left/right). The word address output signal WA is available on all SELOx outputs if the WA generation is enabled (by PCR.WAGEN = 1 for the transfer master). The WA signal changes synchronously to the falling edges of the shift clock. If the transmitter is the IIS master device, it generates a master transmit slave receive data signal. The data changes synchronously to the falling edges of the shift clock. If the transmitter is the IIS slave device, it generates a master receive slave transmit data signal. The data changes synchronously to the falling edges of the shift clock. The transmitter part and the receiver part of the USIC communication channel can be used together to establish a full-duplex data connection between an IIS master and a slave device. User’s Manual USIC, V1.0 19-184 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-10 IIS IO Signals IIS Mode Receive Data Master Slave Transmit Data Shift Clock Word Address Input DIN, Output DOUT handled by DX0 Output SCLKOUT Output(s) SELOx Input DIN, Output DOUT handled by DX0 Input SCLKIN, Input SELIN, handled by DX1 handled by DX2 IIS Communication Master DOUT TBUF DIN RBUF DX0 SELOx WA Generator SCLKOUT Baud Rate Generator MCLKOUT SCLKIN DX1 IIS Communication Slave Master Transmit / Slave Receive DIN Master Receive / Slave Transmit DOUT Word Address (Word Select ) SELIN Shift Clock Master Clock Output DX0 RBUF TBUF DX2 SCLKIN DX1 f SYS (Slave) Synchronization Clock Input fSYS (Master) IIS_Signals_ Figure 19-47 IIS Signals Two additional signals are available for the USIC IIS communication master: • • A master clock output signal MCLKOUT with a fixed phase relation to the shift clock to support oversampling for audio components. It can also be used as master clock output of a communication network with synchronized IIS connections. A synchronization clock input SCLKIN for synchronization of the shift clock generation to an external frequency to support audio frequencies that can not be directly derived from the system clock fSYS of the communication master. It can be used as master clock input of a communication network with synchronized IIS connections. User’s Manual USIC, V1.0 19-185 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.1.2 Protocol Overview An IIS connection supports transfers for two different data frames via the same data line, e.g. a data frames for the left audio channel and a data frame for the right audio channel. The word address signal WA is used to distinguish between the different data frames. Each data frame can consist of several data words. In a USIC communication channel, data words are tagged for being transmitted for the left or for the right channel. Also the received data words contain a tag identifying the WA state when the data has been received. WA (WS) Left Channel Right Channel SCK MSB DOUT 0 X MSB Right Data Frame MSB DIN LSB 0 LSB LSB Left Data Frame MSB Right Data Frame X 0 LSB Left Data Frame X IIS_Prot_ Figure 19-48 Protocol Overview 19.6.1.3 Transfer Delay The transfer delay feature allows the transfer of data (transmission and reception) with a programmable delay (counted in shift clock periods). SCK SCK WA WA DATA DATA Without Delay With Delay 1 IIS_TransferDelay Figure 19-49 Transfer Delay for IIS User’s Manual USIC, V1.0 19-186 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.1.4 Connection of External Audio Components The IIS signals can be used to communicate with external audio devices (such as Codecs) or other audio data sources/destinations. USIC IIS Audio-ADC MCLKOUT MCLK_IN SCLKOUT SCK_IN WA WA_IN DIN SD_OUT R L Analog Inputs DOUT Audio-DAC MCLK_IN SCK_IN R L Analog Outputs WA_IN SD_IN IIS_ExtCodecs Figure 19-50 Connection of External Audio Devices In some applications, especially for Audio-ADCs or Audio-DACs, a master clock signal is required with a fixed phase relation to the shift clock signal. The frequency of MCLKOUT is a multiple of the shift frequency SCLKOUT. This factor defines the oversampling factor of the external device (commonly used values: 256 or 384). User’s Manual USIC, V1.0 19-187 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.2 Operating the IIS This chapter contains IIS issues, that are of general interest and not directly linked to master mode or slave mode. 19.6.2.1 Frame Length and Word Length Configuration After each change of the WA signal, a complete data frame is intended to be transferred (frame length ≤ system word length). The number of data bits transferred after a change of signal WA is defined by SCTRH.FLE. A data frame can consist of several data words with a data word length defined by SCTRH.WLE. The changes of signal WA define the system word length as the number of SCLK cycles between two changes of WA (number of bits available for the right channel and same number available for the left channel). If the system word length is longer than the frame length defined by SCTRH.FLE, the additional bits are transmitted with passive data level (SCTRL.PDL). If the system word length is smaller than the device frame length, not all LSBs of the transmit data can be transferred. It is recommended to program bits WLEMD, FLEMD and SELMD in register TCSRL to 0. 19.6.2.2 Automatic Shadow Mechanism The baud rate and shift control setting are internally kept constant while a data frame is transferred by an automatic shadow mechanism. The registers can be programmed all the time with new settings that are taken into account for the next data frame. During a data frame, the applied (shadowed) setting is not changed, although new values have been written after the start of the data frame. The setting is internally “frozen” with the start of each data frame. Although this shadow mechanism being implemented, it is recommended to change the baud rate and shift control setting only while the IIS protocol is switched off. 19.6.2.3 Mode Control Behavior In IIS mode, the following kernel modes are supported: • • Run Mode 0/1: Behavior as programmed, no impact on data transfers. Stop Mode 0/1: Bit PCRL.WAGEN is internally considered as 0 (the bit itself is not changed). If WAGEN = 1, then the current system word cycle is finished and then the WA generation is stopped, but PSR.END is not set. The complete data frame is finished before entering stop mode, including a possible delay due to PCRH.TDEL. When leaving a stop mode with WAGEN = 1, the WA generation starts from the beginning. User’s Manual USIC, V1.0 19-188 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.2.4 Transfer Delay The transfer delay can be used to synchronize a data transfer to an event (e.g. a change of the WA signal). This event has to be synchronously generated to the falling edge of the shift clock SCK (like the change of the transmit data), because the input signal for the event is directly sampled in the receiver (as a result, the transmitter can use the detection information with its next edge). Event signals that are asynchronous to the shift clock while the shift clock is running must not be used. In the example in Figure 19-49, the event (change of signal WA) is generated by the transfer master and as a result, is synchronous to the shift clock SCK. With the rising edge of SCK, signal WA is sampled and checked for a change. If a change is detected, a transfer delay counter TDC is automatically loaded with its programmable reload value (PCRH.TDEL), otherwise it is decremented with each rising edge of SCK until it reaches 0, where it stops. The transfer itself is started if the value of TDC has become 0. This can happen under two conditions: • • TDC is reloaded with a PCRH.TDEL = 0 when the event is detected TDC has reached 0 while counting down The transfer delay counter is internal to the IIS protocol pre-processor and can not be observed by software. The transfer delay in SCK cycles is given by PCRH.TDEL+1. In the example in Figure 19-51, the reload value PCRH.TDEL for TDC is 0. When the samples taken on receiver side show the change of the WA signal, the counter TDC is reloaded. If the reload value is 0, the data transfer starts with 1 shift clock cycle delay compared to the change of WA. SCK s s WA TDC 0 DOUT X DIN sampled s s 0 s s 0 D0 D1 D0 s s D1 = sampling of WA X D0 D0 IIS_TransferDelay1 Figure 19-51 Transfer Delay with Delay 1 User’s Manual USIC, V1.0 19-189 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel The ideal case without any transfer delay is shown in Figure 19-52. The WA signal changes and the data output value become valid at the same time. This implies that the transmitter “knows” in advance that the event signal will change with the next rising edge of TCLK. This is achieved by delaying the data transmission after the previously detected WA change the system word length minus 1. SCK s s WA TDC DOUT 0 1 X s n D0 DIN sampled n-1 D1 D0 s s s n-2 D2 D1 s 0 1 X s n D0 D1 D0 = sampling of WA D1 IIS_TransferDelay0 Figure 19-52 Transfer Delay with 0 Delay If the end of the transfer delay is detected simultaneously to change of WA, the transfer is started and the delay counter is reloaded with PCRH.TDEL. This allows to run the USIC as IIS device without any delay. In this case, internally the delay from the previous event elapses just at the moment when a new event occurs. If PCRH.TDEL is set to a value bigger than the system word length, no transfer takes place. 19.6.2.5 Parity Mode Parity generation is not supported in IIS mode and bit field CCR.PM = 00B has to be programmed. 19.6.2.6 Transfer Mode In IIS mode, bit field SCTRL.TRM = 11B has to be programmed to allow data transfers. Setting SCTRL.TRM = 00B disables and stops the data transfer immediately. User’s Manual USIC, V1.0 19-190 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.2.7 Data Transfer Interrupt Handling The data transfer interrupts indicate events related to IIS frame handling. • • • • • Transmit buffer interrupt TBI: Bit PSR.TBIF is set after the start of first data bit of a data word. Transmit shift interrupt TSI: Bit PSR.TSIF is set after the start of the last data bit of a data word. Receiver start interrupt RSI: Bit PSR.RSIF is set after the reception of the first data bit of a data word. With this event, bit TCSRL.TDV is cleared and new data can be loaded to the transmit buffer. Receiver interrupt RI and alternative interrupt AI: Bit PSR.RIF is set at after the reception of the last data bit of a data word with WA = 0. Bit RBUFSR.SOF indicates whether the received data word has been the first data word of a new data frame. Alternative interrupt AI: Bit PSR.AIF is set at after the reception of the last data bit of a data word with WA = 1. Bit RBUFSR.SOF indicates whether the received data word has been the first data word of a new data frame. 19.6.2.8 Protocol-Related Argument and Error In order to distinguish between data words received for the left or the right channel, the IIS protocol pre-processor samples the level of the WA input (just after the WA transition) and propagates it as protocol-related error (although it is not an error, but an indication) to the receive buffer status register at the bit position RBUFSR[9]. This bit position defines if either a standard receive interrupt (if RBUFSR[9] = 0) or an alternative receive interrupt (if RBUFSR[9] = 1) becomes activated when a new data word has been received. Incoming data can be handled by different interrupts or DMA mechanisms for the left and the right channel if the corresponding events are directed to different interrupt nodes. Flag PAR is always 0. 19.6.2.9 Transmit Data Handling The IIS protocol pre-processor allows to distinguish between the left and the right channel for data transmission. Therefore, bit TCSRL.WA indicates on which channel the data in the buffer will be transmitted. If TCSRL.WA = 0, the data will be transmitted after a falling edge of WA. If TCSRL.WA = 1, the data will be transmitted after a rising edge of WA. The WA value sampled after the WA transition is considered to distinguish between both channels (referring to PSR.WA). Bit TCSRL.WA can be automatically updated by the transmit control information TCI[4] for each data word if TCSRL.WAMD = 1. In this case, data written to TBUF[15:0] (or IN[15:0] if a FIFO data buffer is used) is considered as left channel data, whereas data User’s Manual USIC, V1.0 19-191 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel written to TBUF[31:16] (or IN[31:16] if a FIFO data buffer is used) is considered as right channel data. 19.6.2.10 Receive Buffer Handling If a receive FIFO buffer is available (CCFG.RB = 1) and enabled for data handling (RBCTRH.SIZE > 0), it is recommended to set RBCTRH.RCIM = 11B in IIS mode. This leads to an indication that the data word has been the first data word of a new data frame if bit OUTRH.RCI[0] = 1, and the channel indication by the sampled WA value is given by OUTRH.RCI[4]. The standard receive buffer event and the alternative receive buffer event can be used for the following operation in RCI mode (RBCTRH.RNM = 1): • • A standard receive buffer event indicates that a data word can be read from OUTRL that belongs to a data frame started when WA = 0. An alternative receive buffer event indicates that a data word can be read from OUTRL that belongs to a data frame started when WA = 1. 19.6.2.11 Loop-Delay Compensation The synchronous signaling mechanism of the IIS protocol being similar to the one of the SSC protocol, the closed-loop delay has to be taken into account for the application setup. In IIS mode, loop-delay compensation in master mode is also possible to achieve higher baud rates. Please refer to the more detailed description in the SSC chapter. User’s Manual USIC, V1.0 19-192 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.3 Operating the IIS in Master Mode In order to operate the IIS in master mode, the following issues have to be considered: • • • • • Select IIS mode: It is recommended to configure all parameters of the IIS that do not change during run time while CCR.MODE = 0000B. Bit field SCTRL.TRM = 11B has to be programmed. The configuration of the input stages has to be done while CCR.MODE = 0000B to avoid unintended edges of the input signals and the IIS mode can be enabled by CCR.MODE = 0011B afterwards. Pin connection for data transfer: Establish a connection of input stage DX0 with the selected receive data input pin (DIN) with DX0CR.INSW = 1. Configure a transmit data output pin (DOUT) for a transmitter. The data shift unit allowing full-duplex data transfers based on the same WA signal, the values delivered by the DX0 stage are considered as data bits (receive function can not be disabled independently from the transmitter). To receive IIS data, the transmitter does not necessarily need to be configured (no assignment of DOUT signal to a pin). Baud rate generation: The desired baud rate setting has to be selected, comprising the fractional divider and the baud rate generator. Bit DX1CR.INSW = 0 has to be programmed to use the baud rate generator output SCLK directly as input for the data shift unit. Configure a shift clock output pin with the inverted signal SCLKOUT without additional delay (BRGH.SCLKCFG = 01B). Word address WA generation: The WA generation has to be enabled by setting PCRL.WAGEN = 1 and the programming of the number of shift clock cycles between the changes of WA. Bit DX2CR.INSW = 0 has to be programmed to use the WA generator as input for the data shift unit. Configure WA output pin for signal SELOx if needed. Data format configuration: The word length, the frame length, and the shift direction have to be set up according to the application requirements by programming the registers SCTRL and SCTRH. Generally, the MSB is shifted first (SCTRL.SDIR = 1). Bit TCSRL.WAMD can be set to use the transmit control information TCI[4] to distinguish the data words for transmission while WA = 0 or while WA = 1. 19.6.3.1 Baud Rate Generation The baud rate is defined by the frequency of the SCLK signal (one period of fSCLK represents one data bit). If the fractional divider mode is used to generate fPIN, there can be an uncertainty of one period of fSYS for fPIN. This uncertainty does not accumulate over several SCLK cycles. User’s Manual USIC, V1.0 19-193 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel As a consequence, the average frequency is reached, whereas the duty cycle of 50% of the SCLK and MCLK signals can vary by one period of fSYS. In IIS applications, where the phase relation between the optional MCLK output signal and SCLK is not relevant, SCLK can be based on the frequency fPIN (BRGL.PPPEN = 0). In the case that a fixed phase relation between the MCLK signal and SCLK is required (e.g. when using MCLK as clock reference for external devices), the additional divider by 2 stage has to be taken into account (BRGL.PPPEN = 1). This division is due to the fact that signal MCLK toggles with each cycle of fPIN. Signal SCLK is then based on signal MCLK, see Figure 19-53. The adjustable integer divider factor is defined by bit field BRGH.PDIV. fPIN 1 2 PDIV + 1 fPIN 1 × fSCLK = 2×2 PDIV + 1 fSCLK = × if PPPEN = 0 (19.12) if PPPEN = 1 Note: In the IIS protocol, the master (unit generating the shift clock and the WA signal) changes the status of its data and WA output line with the falling edge of SCK. The slave transmitter also has to transmit on falling edges. The sampling of the received data is done with the rising edges of SCLK. The input stage DX1 and the SCLKOUT have to be programmed to invert the shift clock signal to fit to the internal signals. 19.6.3.2 WA Generation The word address (or word select) line WA regularly toggles after N cycles of signal SCLK. The time between the changes of WA is called system word length and can be programmed by using the following bit fields. In IIS master mode, the system word length is defined by: • • • BRGL.CTQSEL = 10B to base the WA toggling on SCLK BRGL.PCTQ to define the number N of SCLK cycles per system word length BRGL.DCTQ to define the number N of SCLK cycles per system word length N = (PCTQ + 1) × (DCTQ + 1) User’s Manual USIC, V1.0 19-194 (19.13) V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.3.3 Master Clock Output The master clock signal MCLK can be generated by the master of the IIS transfer (BRGL.PPPEN = 1). It is used especially to connect external Codec devices. It can be configured by bit BRGH.MCLKCFG in its polarity to become the output signal MCLKOUT. ½ x SCLK = (PDIV+1) x MCLK fPIN ½ x SCLK = (PDIV+1) x MCLK MCLK MCLK SCLK SCLK zoom in Transmitter DOUT D(n) Receiver sampled DIN D(n) D(n+1) D(n+1) 1 Period of SCLK = 1 Data Bit Length IIS_MCLKSCLK Figure 19-53 MCLK and SCLK for IIS User’s Manual USIC, V1.0 19-195 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.3.4 Protocol Interrupt Events The following protocol-related events are generated in IIS mode and can lead to a protocol interrupt. Please note that the bits in register PSR are not all automatically cleared by hardware and have to be cleared by software in order to monitor new incoming events. • • • WA rising/falling edge events: The WA generation block indicates two events that are monitored in register PSR. Flag PSR.WAFE is set with the falling edge, flag PSR.WARE with the rising edge of the WA signal. A protocol interrupt can be generated if PCRL.WAFEIEN = 1 for the falling edge, similar for PCRL.WAREIEN = 1 for a rising edge. WA end event: The WA generation block also indicates when it has stopped the WA generation after it has been disabled by writing PCRL.WAGEN = 0. A protocol interrupt can be generated if PCRL.ENDIEN = 1. DX2T event: An activation of the trigger signal DX2T is indicated by PSR.DX2TEV = 1 and can generate a protocol interrupt if PCRL.DX2TIEN = 1. This event can be evaluated instead of the WA rising/falling events if a delay compensation like in SSC mode (for details, refer to corresponding SSC section) is used. User’s Manual USIC, V1.0 19-196 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.4 Operating the IIS in Slave Mode In order to operate the IIS in slave mode, the following issues have to be considered: • • • • • • Select IIS mode: It is recommended to configure all parameters of the IIS that do not change during run time while CCR.MODE = 0000B. Bit field SCTRL.TRM = 11B has to be programmed. The configuration of the input stages has to be done while CCR.MODE = 0000B to avoid unintended edges of the input signals and the IIS mode can be enabled by CCR.MODE = 0011B afterwards. Pin connection for data transfer: Establish a connection of input stage DX0 with the selected receive data input pin (DIN) with DX0CR.INSW = 1. Configure a transmit data output pin (DOUT) for a transmitter. The data shift unit allowing full-duplex data transfers based on the same WA signal, the values delivered by the DX0 stage are considered as data bits (receive function can not be disabled independently from the transmitter). To receive IIS data, the transmitter does not necessarily need to be configured (no assignment of DOUT signal to a pin). Pin connection for shift clock: Establish a connection of input stage DX1 with the selected shift clock input pin (SCLKIN) with DX1CR.INSW = 1 and with inverted polarity (DX1CR.DPOL = 1). Pin connection for WA input: Establish a connection of input stage DX2 with the WA input pin (SELIN) with DX2CR.INSW = 1. Baud rate generation: The baud rate generator is not needed and can be switched off by the fractional divider. WA generation: The WA generation is not needed and can be switched off (PCRL.WAGEN = 0). 19.6.4.1 Protocol Events and Interrupts The following protocol-related event is generated in IIS mode and can lead to a protocol interrupt. Please note that the bits in register PSR are not all automatically cleared by hardware and have to be cleared by software in order to monitor new incoming events. • • WA rising/falling/end events: The WA generation being switched off, these events are not available. DX2T event: An activation of the trigger signal DX2T is indicated by PSR.DX2TEV = 1 and can generate a protocol interrupt if PCRL.DX2TIEN = 1. User’s Manual USIC, V1.0 19-197 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.5 IIS Protocol Registers In IIS mode, the registers PCRL, PCRH and PSR handle IIS related information. 19.6.5.1 IIS Protocol Control Registers In IIS mode, the PCRL/PCRH register bits or bit fields are defined as described in this section. PCRL Protocol Control Register L [IIS Mode] (40H) 15 14 13 12 11 10 DX2 TIEN 0 rw rw 9 8 7 Reset Value: 0000H 6 5 4 END WAR WAF IEN EIEN EIEN rw rw rw 3 0 r 2 1 0 SELI DT WAG NV EN EN rw rw rw Field Bits Type Description WAGEN 0 rw WA Generation Enable This bit enables/disables the generation of word address control output signal WA. 0B The IIS can be used as slave. The generation of the word address signal is disabled. The output signal WA is 0. The MCLKO signal generation depends on PCRH.MCLK. The IIS can be used as master. The generation of 1B the word address signal is enabled. The signal starts with a 0 after being enabled. The generation of MCLK is enabled, independent of PCRH.MCLK. After clearing WAGEN, the USIC module stops the generation of the WA signal within the next 4 WA periods. DTEN 1 rw Data Transfers Enable This bit enables/disables the transfer of IIS frames as a reaction to changes of the input word address control line WA. 0B The changes of the WA input signal are ignored and no transfers take place. 1B Transfers are enabled. User’s Manual USIC, V1.0 19-198 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description SELINV 2 rw Select Inversion This bit defines if the polarity of the SELOx outputs in relation to the internally generated word address signal WA. 0B The SELOx outputs have the same polarity as the WA signal. 1B The SELOx outputs have the inverted polarity to the WA signal. WAFEIEN 4 rw WA Falling Edge Interrupt Enable This bit enables/disables the activation of a protocol interrupt when a falling edge of WA has been generated. 0B A protocol interrupt is not activated if a falling edge of WA is generated. 1B A protocol interrupt is activated if a falling edge of WA is generated. WAREIEN 5 rw WA Rising Edge Interrupt Enable This bit enables/disables the activation of a protocol interrupt when a rising edge of WA has been generated. 0B A protocol interrupt is not activated if a rising edge of WA is generated. 1B A protocol interrupt is activated if a rising edge of WA is generated. ENDIEN 6 rw END Interrupt Enable This bit enables/disables the activation of a protocol interrupt when the WA generation stops after clearing PCR.WAGEN (complete system word length is processed before stopping). 0B A protocol interrupt is not activated. 1B A protocol interrupt is activated. DX2TIEN 15 rw DX2T Interrupt Enable This bit enables/disables the generation of a protocol interrupt if the DX2T signal becomes activated (indicated by PSR.DX2TEV = 1). 0B A protocol interrupt is not generated if DX2T is active. 1B A protocol interrupt is generated if DX2T is active. 0 3, [14:7] rw Reserved Returns 0 if read; should be written with 0; User’s Manual USIC, V1.0 19-199 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel PCRH Protocol Control Register H [IIS Mode] (42H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 M CLK 0 TDEL rw rw rw 1 0 Field Bits Type Description TDEL [5:0] rw Transfer Delay This bit field defines the transfer delay when an event is detected. If bit field TDEL = 0, the additional delay functionality is switched off and a delay of one shift clock cycle is introduced. 0 [14:6] rw Reserved Returns 0 if read; should be written with 0. MCLK 15 rw Master Clock Enable This bit enables generation of the master clock MCLK (not directly used for IIC protocol, can be used as general frequency output). 0B The MCLK generation is disabled and MCLK is 0. 1B The MCLK generation is enabled. User’s Manual USIC, V1.0 19-200 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.6.5.2 IIS Protocol Status Register The following PSR status bits or bit fields are available in IIS mode. Please note that the bits in register PSR are not cleared by hardware. The flags in the PSR register can be cleared by writing a 1 to the corresponding bit position in register PSCR. Writing a 1 to a bit position in PSR sets the corresponding flag, but doesn’t lead to further actions (no interrupt generation). Writing a 0 has no effect. These flags should be cleared by software before enabling a new protocol. PSR Protocol Status Register [IIS Mode] 15 14 13 AIF RIF TBIF TSIF DLIF RSIF rwh rwh rwh 12 rwh 11 rwh 10 rwh 9 (44H) 8 7 Reset Value: 0000H 6 5 4 3 0 END WA RE WA DX2 FE TEV 0 DX2 WA S r rwh rwh rwh r rwh rwh 2 1 0 rwh Field Bits Type Description WA 0 rwh Word Address This bit indicates the status of the WA input signal, sampled after a transition of WA has been detected. This information is forwarded to the corresponding bit position RBUFSR[9] to distinguish between data received for the right and the left channel. 0B WA has been sampled 0. 1B WA has been sampled 1. DX2S 1 rwh DX2S Status This bit indicates the current status of the DX2S signal, which is used as word address signal WA. 0B DX2S is 0. 1B DX2S is 1. DX2TEV 3 rwh DX2T Event Detected1) This bit indicates that the DX2T signal has been activated. In IIS slave mode, an activation of DX2T generates a protocol interrupt if PCRL.DX2TIEN = 1. 0B The DX2T signal has not been activated. 1B The DX2T signal has been activated. User’s Manual USIC, V1.0 19-201 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description WAFE 4 rwh WA Falling Edge Event1) This bit indicates that a falling edge of the WA output signal has been generated. This event generates a protocol interrupt if PCRL.WAFEIEN = 1. 0B A WA falling edge has not been generated. 1B A WA falling edge has been generated. WARE 5 rwh WA Rising Edge Event1) This bit indicates that a rising edge of the WA output signal has been generated. This event generates a protocol interrupt if PCRL.WAREIEN = 1. 0B A WA rising edge has not been generated. 1B A WA rising edge has been generated. END 6 rwh WA Generation End1) This bit indicates that the WA generation has ended after clearing PCRL.WAGEN. This bit should be cleared by software before clearing WAGEN. 0B The WA generation has not yet ended (if it is running and WAGEN has been cleared). 1B The WA generation has ended (if it has been running). RSIF 10 rwh Receiver Start Indication Flag 0B A receiver start event has not occurred. 1B A receiver start event has occurred. DLIF 11 rwh Data Lost Indication Flag 0B A data lost event has not occurred. 1B A data lost event has occurred. TSIF 12 rwh Transmit Shift Indication Flag 0B A transmit shift event has not occurred. 1B A transmit shift event has occurred. TBIF 13 rwh Transmit Buffer Indication Flag 0B A transmit buffer event has not occurred. 1B A transmit buffer event has occurred. RIF 14 rwh Receive Indication Flag 0B A receive event has not occurred. 1B A receive event has occurred. AIF 15 rwh Alternative Receive Indication Flag 0B An alternative receive event has not occurred. 1B An alternative receive event has occurred. User’s Manual USIC, V1.0 19-202 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Field Bits Type Description 0 2, [9:7] r Reserved Returns 0 if read; not modified in IIS mode. 1) This status bit can generate a protocol interrupt (see Page 19-25). The general interrupt status flags are described in the general interrupt chapter. User’s Manual USIC, V1.0 19-203 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7 USIC Implementation in XC2300 This section describes the implementation specific details of the USIC modules in the XC2300. It contains details about: • • • • • • • • • Implementation Overview (see Page 19-204) Channel Features (see Page 19-205) Address Map (see Page 19-205) Module Identification Registers (see Page 19-206) Interrupt Control Registers (see Page 19-208) Input/Output Connections (see Page 19-210) USIC Module 0 I/O Lines (see Page 19-211) USIC Module 1 I/O Lines (see Page 19-214) USIC Module 2 I/O Lines (see Page 19-217) 19.7.1 Implementation Overview The XC2300 device contains three identical USIC modules (USIC0, USIC1 and USIC2) with 2 communication channels each. Bus Interface Bus Interface I/O Lines USIC2 Channel U2C0 Channel U1C1 USIC1 Channel U1C0 Channel U0C1 Channel U0C0 USIC0 I/O Lines Channel U2C1 I/O Lines Bus Interface LX Bus USIC_Impl3times Figure 19-54 USIC Module Structure in XC2300 User’s Manual USIC, V1.0 19-204 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.2 Channel Features The USIC channels in the XC2300 support the following functionality: Table 19-11 USIC Module Feature Set Channel ASC LIN SSC IIC IIS FIFO Protocol Support Protocol Protocol Protocol Buffer Entries SELOx1) U0C0 yes yes yes yes yes 8 U0C1 yes yes yes yes yes 64 shared U1C0 yes yes yes yes yes 8 U1C1 yes yes yes yes yes 64 shared U2C0 yes yes yes yes yes 6 U2C1 yes yes yes yes yes 64 shared 4 5 2 1) This number refers to the maximum number of signals available in the 144 pin package. 19.7.3 Address Map The registers of the USIC communication channels are available at the following base addresses. The exact register address is given by the relative address of the register (given in Table 19-3) plus the channel base address (given in Table 19-12). Table 19-12 Registers Address Space Module Base Address End Address Note U0C0 204000H 2041FFH – U0C1 204200H 2043FFH – U1C0 204800H 2049FFH – U1C1 204A00H 204BFFH – U2C0 205000H 2051FFH – U2C1 205200H 2053FFH – User’s Manual USIC, V1.0 19-205 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.4 Module Identification Registers The module identification registers indicate the function and the design step of the USIC modules. USIC0_IDL Module Identification Register L USIC1_IDL Module Identification Register L USIC2_IDL Module Identification Register L 15 14 13 12 11 10 9 (204008H) Reset Value: C0XXH (204808H) Reset Value: C0XXH (205008H) Reset Value: C0XXH 8 7 6 5 4 3 MOD_TYPE MOD_REV r r 2 1 0 Field Bits Type Description MOD_REV [7:0] r Module Revision Number MOD_REV defines the revision number. The value of a module revision starts with 01H (first revision). MOD_TYPE [15:8] r Module Type This bit field is C0H. It defines the module as a 32-bit module. User’s Manual USIC, V1.0 19-206 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel USIC0_IDH Module Identification Register H USIC1_IDH Module Identification Register H USIC2_IDH Module Identification Register H 15 14 13 12 11 10 9 (20400AH) Reset Value: 003AH (20480AH) Reset Value: 003AH (20500AH) Reset Value: 003AH 8 7 6 5 4 3 2 1 0 MOD_NUMBER r Field Bits MOD_NUMBER [15:0] User’s Manual USIC, V1.0 Type Description r Module Number Value This bit field defines the USIC module identification number (003AH = USIC). 19-207 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.5 Interrupt Control Registers Each USIC channel provides 4 service request outputs SR[3:0] (not all of them are necessarily connected to independent interrupt registers UxCy_nIC). Table 19-13 shows the assignment of the service request outputs to the interrupt control registers. Each USIC communication channel is connected to 3 dedicated interrupt control registers (connected to UxCy_SR[2:0], e.g. one for transmission, one for reception, the third one for protocol or error handling, or for the alternative receive events). A fourth interrupt control register per communication channel (connected to UxCy_SR3) is shared with module CC2. The interrupt control registers are located in the SFR area. They are described in the general interrupt chapter. Table 19-13 USIC Interrupt Control Registers Service Request Output Line Interrupt Control Register/Bit SR0 of USIC0 channel 0 U0C0_0IC SR1 of USIC0 channel 0 U0C0_1IC SR2 of USIC0 channel 0 U0C0_2IC SR3 of USIC0 channel 0 SCU_ISSR.4, shared with CC2 SR0 of USIC0 channel 1 U0C1_0IC SR1 of USIC0 channel 1 U0C1_1IC SR2 of USIC0 channel 1 U0C1_2IC SR3 of USIC0 channel 1 SCU_ISSR.5, shared with CC2 SR0 of USIC1 channel 0 U1C0_0IC SR1 of USIC1 channel 0 U1C0_1IC SR2 of USIC1 channel 0 U1C0_2IC SR3 of USIC1 channel 0 SCU_ISSR.6, shared with CC2 SR0 of USIC1 channel 1 U1C1_0IC SR1 of USIC1 channel 1 U1C1_1IC SR2 of USIC1 channel 1 U1C1_2IC SR3 of USIC1 channel 1 SCU_ISSR.7, shared with CC2 SR0 of USIC2 channel 0 U2C0_0IC SR1 of USIC2 channel 0 U2C0_1IC SR2 of USIC2 channel 0 U2C0_2IC SR3 of USIC2 channel 0 SCU_ISSR.12, shared with CC2 User’s Manual USIC, V1.0 19-208 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-13 USIC Interrupt Control Registers (cont’d) Service Request Output Line Interrupt Control Register/Bit SR0 of USIC2 channel 1 U2C1_0IC SR1 of USIC2 channel 1 U2C1_1IC SR2 of USIC2 channel 1 U2C1_2IC SR3 of USIC2 channel 1 SCU_ISSR.13, shared with CC2 User’s Manual USIC, V1.0 19-209 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.6 Input/Output Connections Figure 19-1 shows the I/O lines of one USIC channel. The tables in this section define the pin assignments and internal connections of the USIC channels I/O lines in the XC2300 device. Naming convention: UxCy refers to USIC module x channel y. USIC Channel DX0A DX0B .. . . DX0F DX0G .. . . Input Stage SR0 SR1 SR2 SR3 Interrupt Control DX0 DX0INS DX1A DX1B . . .. DX1F DX1G . . .. Slave Select Generator Input Stage DX1 DX1INS DX2A DX2B . . . . DX2F DX2G Output Stage DOUT . . . . . . . . SELO0 SELO1 . . . . SELO6 SELO7 DOUT Input Stage Baud Rate Generator DX2 SCLKOUT MCLKOUT DX2INS USIC_IOLines Figure 19-55 USIC Channel I/O Lines The connections of the service request outputs SR[3:0] to the interrupt control registers are defined in Table 19-13 on Page 19-208. User’s Manual USIC, V1.0 19-210 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.6.1 USIC Module 0 I/O Lines The signals of USIC module 0 have the prefix “U0C0_” for channel 0 and “U0C1_” for channel 1. Table 19-14 I/O Connections of USIC0 Signal Used as From/To Channel 0 – U0C0 Channel 1 – U0C1 Data Inputs DX0A Shift data input P10.0 P10.0 DX0B Shift data input P10.1 P10.7 DX0C Shift data input P10.6 P10.14 DX0D Shift data input P7.4 0 DX0E Shift data input P2.3 P2.10 DX0F Shift data input P2.4 P7.3 DX0G Loop back data shift input U0C0_DOUT U0C1_DOUT Clock Inputs DX1A Shift clock input P10.1 P10.10 DX1B Shift clock input P10.2 P10.5 DX1C Shift clock input P10.8 P10.15 DX1D Shift clock input 0 P2.8 DX1E Shift clock input 0 0 DX1F Shift clock input 0 0 DX1G Loop back shift clock input U0C0_SCLKOUT U0C1_SCLKOUT Control Inputs DX2A Shift control input P10.3 P10.3 DX2B Shift control input P10.4 P10.4 DX2C Shift control input P10.10 P2.7 DX2D Shift control input P2.6 0 DX2E Input for transmit data validation CC2_8 RTC_T14INT DX2F Input for transmit data validation CCU60_T13_PM CCU60_T13_PM DX2G Loop back shift control input U0C1_SELO0 User’s Manual USIC, V1.0 19-211 U0C0_SELO0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-14 I/O Connections of USIC0 (cont’d) Signal Used as From/To Channel 0 – U0C0 Channel 1 – U0C1 Data Outputs DOUT Shift data output P2.3 P2.9 P7.3 P2.10 P10.1 P7.3 P10.6 P7.4 – P10.0 – P10.7 – P10.14 – P10.15 MCLKOUT Master clock output, e.g. for IIS P10.8 P10.9 SCLKOUT Shift clock output P2.5 P2.8 P10.2 P7.4 – P10.5 P2.6 P2.7 P10.10 P10.8 Clock Outputs Control Outputs SELO0 Shift control output 0 SELO1 Shift control output 1 P2.7 P2.6 SELO2 Shift control output 2 P2.11 P2.11 SELO3 Shift control output 3 P2.10 P2.12 P10.4 – P2.12 – P3.4 – P10.9 – SELO4 Shift control output 5 SELO5 Shift control output 5 P3.5 – SELO6 Shift control output 6 P3.6 – SELO7 Shift control output 7 P3.7 – System Related Outputs User’s Manual USIC, V1.0 19-212 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-14 I/O Connections of USIC0 (cont’d) Signal Used as From/To Channel 0 – U0C0 Channel 1 – U0C1 DX0INS External interrupt input for ERU ERU_1A2 ERU_0B2 Single wire ASC collision detection U0C0_DX1F U0C1_DX1F DX1INS External interrupt input for ERU – – DX2INS External interrupt input for ERU ERU_0A3 ERU_0B3 U0C0_DX0G U0C1_DX0G SCLKOUT Loop back shift clock output U0C0_DX1G U0C1_DX1G SELO0 U0C0_DX2G U0C1_DX2G Loop Back Outputs DOUT Loop back shift data output Loop back shift control output User’s Manual USIC, V1.0 19-213 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.6.2 USIC Module 1 I/O Lines The signals of USIC module 1 have the prefix “U1C0_” for channel 0 and “U1C1_” for channel 1. Table 19-15 I/O Connections of USIC1 Signal Used as From/To Channel 0 – U1C0 Channel 1 – U1C1 Data Inputs DX0A Shift data input P0.0 P0.6 DX0B Shift data input P0.1 P0.7 DX0C Shift data input P10.12 ESR1 DX0D Shift data input P10.13 ESR2 DX0E Shift data input ESR0 P6.0 DX0F Shift data input ESR1 0 DX0G Loop back data shift input U1C0_DOUT U1C1_DOUT Clock Inputs DX1A Shift clock input P0.1 P0.5 DX1B Shift clock input P0.2 P0.6 DX1C Shift clock input P0.5 P6.2 DX1D Shift clock input P10.11 0 DX1E Shift clock input P10.12 0 DX1F Shift clock input 0 0 DX1G Loop back shift clock input U1C0_SCLKOUT U1C1_SCLKOUT Control Inputs DX2A Shift control input P0.3 P0.4 DX2B Shift control input ESR0 ESR1 DX2C Shift control input ESR1 ESR2 DX2D Shift control input P10.6 P6.3 DX2E Input for transmit data validation CC2_9 RTC_T14INT DX2F Input for transmit data validation CCU61_T13_PM CCU61_T13_PM DX2G Loop back shift control input U1C1_SELO0 User’s Manual USIC, V1.0 19-214 U1C0_SELO0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-15 I/O Connections of USIC1 (cont’d) Signal Used as From/To Channel 0 – U1C0 Channel 1 – U1C1 Data Outputs DOUT Shift data output P0.0 P0.6 P0.1 P0.7 P10.12 P6.1 P10.13 – P10.15 – MCLKOUT Master clock output, e.g. for IIS P10.8 P1.7 SCLKOUT Shift clock output P2.5 P0.5 P10.2 P6.2 P0.3 P0.4 P10.6 P6.3 P0.4 P0.3 P10.14 – P0.5 P1.6 P10.15 – P0.7 P1.5 P10.13 – Clock Outputs Control Outputs SELO0 SELO1 SELO2 SELO3 Shift control output 0 Shift control output 1 Shift control output 2 Shift control output 3 SELO4 Shift control output 5 P1.0 P1.4 SELO5 Shift control output 5 P1.1 – SELO6 Shift control output 6 P1.2 – SELO7 Shift control output 7 P1.3 – External interrupt input for ERU ERU_1A2 ERU_1B2 Single wire ASC collision detection U1C0_DX1F U1C1_DX1F DX1INS External interrupt input for ERU ERU_3B0 – DX2INS External interrupt input for ERU ERU_1A3 ERU_1B3 System Related Outputs DX0INS User’s Manual USIC, V1.0 19-215 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-15 I/O Connections of USIC1 (cont’d) Signal Used as From/To Channel 0 – U1C0 Channel 1 – U1C1 Loop Back Outputs DOUT Loop back shift data output U0C0_DX0G U1C1_DX0G SCLKOUT Loop back shift clock output U0C0_DX1G U1C1_DX1G SELO0 U0C0_DX2G U1C1_DX2G Loop back shift control output User’s Manual USIC, V1.0 19-216 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel 19.7.6.3 USIC Module 2 I/O Lines The signals of USIC module 2 have the prefix “U2C0_” for channel 0 and “U2C1_” for channel 1. Table 19-16 I/O Connections of USIC2 Signal Used as From/To Channel 0 – U2C0 Channel 1 – U2C1 Data Inputs DX0A Shift data input P3.0 P3.6 DX0B Shift data input P3.1 P3.7 DX0C Shift data input P1.5 P1.1 DX0D Shift data input P1.6 P1.2 DX0E Shift data input P9.5 ESR2 DX0F Shift data input 0 0 DX0G Loop back data shift input U2C0_DOUT U2C1_DOUT Clock Inputs DX1A Shift clock input P3.0 P3.5 DX1B Shift clock input P3.2 P3.6 DX1C Shift clock input P1.7 P1.2 DX1D Shift clock input P9.7 0 DX1E Shift clock input 0 0 DX1F Shift clock input 0 0 DX1G Loop back shift clock input U2C0_SCLKOUT U2C1_SCLKOUT Control Inputs DX2A Shift control input P3.3 P3.4 DX2B Shift control input P1.4 ESR2 DX2C Shift control input 0 ESR1 DX2D Shift control input 0 0 DX2E Input for transmit data validation CC2_10 RTC_T14INT DX2F Input for transmit data validation CCU62_T13_PM CCU62_T13_PM DX2G Loop back shift control input U2C1_SELO0 User’s Manual USIC, V1.0 19-217 U2C0_SELO0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-16 I/O Connections of USIC2 (cont’d) Signal Used as From/To Channel 0 – U2C0 Channel 1 – U2C1 Data Outputs DOUT Shift data output P3.0 P3.6 P3.1 P3.7 P1.6 P1.1 P9.4 – P9.5 – MCLKOUT Master clock output, e.g. for IIS – – SCLKOUT Shift clock output P3.2 P3.5 P1.7 P1.2 Clock Outputs Control Outputs SELO0 Shift control output 0 P3.3 P3.4 SELO1 Shift control output 1 P3.4 P3.3 SELO2 Shift control output 2 P3.5 – SELO3 Shift control output 3 P3.7 – SELO4 Shift control output 4 P1.3 – SELO5 Shift control output 5 P1.4 – SELO6 Shift control output 6 – – SELO7 Shift control output 7 – – External interrupt input for ERU (SCU) ERU_2A2 ERU_2B2 Single wire ASC collision detection U2C0_DX1F U2C1_DX1F DX1INS External interrupt input for ERU (SCU) ERU_2B0 – DX2INS External interrupt input for ERU (SCU) ERU_2A3 ERU_2B3 System Related Outputs DX0INS User’s Manual USIC, V1.0 19-218 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel Table 19-16 I/O Connections of USIC2 (cont’d) Signal Used as From/To Channel 0 – U2C0 Channel 1 – U2C1 Loop Back Outputs DOUT Loop back shift data output U2C0_DX0G U2C1_DX0G SCLKOUT Loop back shift clock output U2C0_DX1G U2C1_DX1G SELO0 U2C0_DX2G U2C1_DX2G Loop back shift control output User’s Manual USIC, V1.0 19-219 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Universal Serial Interface Channel User’s Manual USIC, V1.0 19-220 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20 Controller Area Network (MultiCAN) Controller This chapter describes the MultiCAN controller of the XC2300. It contains the following sections: • • • Overview of the MultiCAN Kernel (see Section 20.1) Functional description of the MultiCAN Kernel (see Section 20.2) XC2300 implementation specific details and registers of the MultiCAN controller (port connections and control, interrupt control, address decoding, clock control, see Section 20.5). Note: The MultiCAN kernel register names described in this chapter will be referenced in the XC2300 User’s Manual by the module name prefix “CAN_”. 20.1 MultiCAN Short Description This section describes the serial communication interfaces CAN (Controller Area Network) of the communication module MultiCAN of the XC2300. 20.1.1 Overview The MultiCAN module contains up to 5 independent CAN nodes, representing the communication interfaces. MultiCAN Module Kernel Clock Control Address Decoder Interrupt Control CAN Node n-1 fCAN Message Object Buffer m Objects . . . Linked List Control TXDC n-1 RXDC n-1 . . . CAN Node 1 TXDC1 CAN Node 0 TXDC0 Port Control . . . RXDC1 RXDC0 CAN Control Mu ltiC AN _ o ve rvie w _ N o tSin g le _ n o TT_ 1 6 .vs Figure 20-1 Overview of the MultiCAN Module User’s Manual MultiCAN, V1.7d3 20-1 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.1.2 CAN Features Several key features contribute to the high performance of the MultiCAN module: • • • • • • • • • • • CAN functionality conforms to CAN specification V2.0 B active for each CAN node (compliant to ISO 11898) Up to 5 independent CAN nodes available Up to 128 independent message objects (shared by the CAN nodes) Dedicated control registers for each CAN node Data transfer rate up to 1MBaud, individually programmable for each node Flexible and powerful message transfer control and error handling capabilities Full-CAN functionality: message objects can be individually – Assigned to one of the 5 CAN nodes – Configured as transmit or receive object – Participate in a message buffer with FIFO algorithm – Set up to handle frames with 11-bit or 29-bit identifiers – Provided with programmable acceptance mask register for filtering – Monitored via a frame counter – Configured to Remote Monitoring Mode Automatic gateway mode support 16 individually programmable interrupt outputs CAN Analyzer Mode for bus monitoring SRAMs in MultiCAN module optionally parity error protected User’s Manual MultiCAN, V1.7d3 20-2 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2 CAN Functional Description This section describes the core features of the CAN module. 20.2.1 Conventions and Definitions Table 20-1 defines constants that are used throughout the MultiCAN specification. These are fixed maximum values for a given MultiCAN implementation. Nevertheless, in different products, some objects and nodes may be disabled, depending on the product configuration. Table 20-1 Fixed Module Constants Constant Value Description n_objects 128 Number of Message Objects n_objects denotes the total amount of message objects available. n_interrupts 16 Number of Interrupt Output Lines n_interrupts denotes the total number of interrupt outputs available. n_pendings 256 Number of Message Pending Bits n_pendings denotes the number of message pending bits available. The number of message pending registers is given by n_pendings/32. n_lists 8 Number of Lists n_lists denotes the total number of lists available for allocation of message number. n_nodes 5 Number of CAN Nodes Available n_nodes denotes the total number of CAN nodes available. As each CAN node has it’s own list in addition to the list of un-allocated elements, the relation n_nodes < n_lists is true. 20.2.2 Introduction The MultiCAN module contains 5 Full-CAN nodes operating independently or exchanging data and remote frames via a gateway function.Transmission and reception of CAN frames is handled in accordance to CAN specification V2.0part B (active). Each CAN node can receive and transmit standard frames with 11-bit identifiers as well as extended frames with 29-bit identifiers. User’s Manual MultiCAN, V1.7d3 20-3 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.2.1 Feature Overview All CAN nodes share a common set of message objects, where each message object may be individually allocated to one of the CAN nodes. Besides serving as a storage container for incoming and outgoing frames, message objects may be combined to build gateways between the CAN nodes or to setup a FIFO buffer. The message objects are organized in double chained lists, where each CAN node has it’s own list of message objects. A CAN node stores frames only into message objects that are allocated to the list of the CAN node. It only transmits messages from objects of this list. A powerful, command driven list controller performs all list operations. The bit timings for the CAN nodes are derived from the peripheral clock (fCAN) and are programmable up to a data rate of 1 MBaud. A pair of receive and transmit pins connects each CAN node to a bus transceiver. Features • • • • • • • • • Compliant to ISO 11898. CAN functionality according to CAN specification V2.0 B active. Dedicated control registers are provided for each CAN node. A data transfer rate up to 1 MBaud is supported. Flexible and powerful message transfer control and error handling capabilities are implemented. Advanced CAN bus bit timing analysis and baud rate detection can be performed for each CAN node via the frame counter. Full-CAN functionality: A set of 128 message objects can be individually – allocated (assigned) to any CAN node – configured as transmit or receive object – setup to handle frames with 11-bit or 29-bit identifier – counted or assigned a timestamp via a frame counter – configured to remote monitoring mode Advanced Acceptance Filtering: – Each message object provides an individual acceptance mask to filter incoming frames. – A message object can be configured to accept only standard or only extended frames or to accept both standard and extended frames. – Message objects can be grouped into 4 priority classes. – The selection of the message to be transmitted first can be performed on the basis of frame identifier, IDE bit and RTR bit according to CAN arbitration rules. Advanced Message Object Functionality: – Message Objects can be combined to build FIFO message buffers of arbitrary size, which is only limited by the total number of message objects. User’s Manual MultiCAN, V1.7d3 20-4 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller • • – Message objects can be linked to form a gateway to automatically transfer frames between 2 different CAN buses. A single gateway can link any two CAN nodes. An arbitrary number of gateways may be defined. Advanced Data Management: – The Message objects are organized in double chained lists. – List reorganizations may be performed any time, even during full operation of the CAN nodes. – A powerful, command driven list controller manages the organization of the list structure and ensures consistency of the list. – Message FIFOs are based on the list structure and can easily be scaled in size during CAN operation. – Static Allocation Commands offer compatibility with TwinCAN applications, which are not list based. Advanced Interrupt Handling: – Up to 16 interrupt output lines are available. Most interrupt requests can be individually routed to one of the 16 interrupt output lines. – Message postprocessing notifications can be flexibly aggregated into a dedicated register field of 256 notification bits. User’s Manual MultiCAN, V1.7d3 20-5 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.2.2 Module Structure Figure 20-2 shows the general structure of the MultiCAN module with 5 CAN nodes. CAN Bus 0 CAN Bus 1 CAN Node 0 CAN Node 1 ... ... CAN Bus n-1 CAN Node n-1 Node Control Unit Bitstream Processor Bit Error Frame Timing Handling Unit Counter Unit Interrupt Control Unit Message Controller Interrupt Control Logic Message RAM List Control Logic Address Decoder interrupt control MultiCAN_Blockdiag_n.vsd bus interface Figure 20-2 MultiCAN Block Diagram with several CAN Nodes User’s Manual MultiCAN, V1.7d3 20-6 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller CAN Nodes Each CAN node consists of several sub-units as described in Table 20-2.: Table 20-2 Subunits of CAN Nodes Subunit Description Bit Stream Processor The Bit Stream Processor performs data, remote, error and overload frame processing according to the ISO 11898 standard. This includes conversion between the serial data stream and the input/output shift registers. Bit Timing Unit The Bit Timing Unit defines the length of a bit time and the location of the sample point according to the user settings, taking into account propagation delays and phase shift errors. The Bit Timing Unit also performs resynchronization. Error Handling Unit The Error Handling Unit manages the receive and transmit error counter. According to the contents of both counters the CAN node is set into an “Error Active”, “Error Passive” or “Bus-Off” state. Node Control Unit The Node Control Unit coordinates the operation of the CAN node: • Enables/disable CAN transfer of the node • Enable/Disable and generate node specific events that lead to an interrupt request (CAN bus errors, successful frame transfers etc.) • Administration of the Frame Counter Message Controller The message controller handles the exchange of CAN frames between the CAN nodes and the message objects which are stored in the Message RAM. It performs: • • • • • Receive Acceptance filtering to determine the correct message object for storing of a received CAN frame. Transmit Acceptance Filtering to determine the message object to be transmitted first, individually for each CAN node. Content transfer between message objects and the CAN nodes, taking into account the status/control bits of the message objects. Handling of the FIFO buffering and Gateway functionality. Aggregation of message pending notification bits. User’s Manual MultiCAN, V1.7d3 20-7 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller List Controller The list controller performs all operations that lead to a modification of the double chained message object lists. Only the list controller is allowed to modify the list structure. The allocation/deallocation or reallocation of a message object can be requested via a user command interface (command panel). The list controller state machine then performs the requested command autonomously. User’s Manual MultiCAN, V1.7d3 20-8 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.3 CAN Node Control Each CAN node may be configured and run independently from the other CAN nodes. To this end each CAN node is equipped with an individual set of SFR registers to control and to monitor the CAN node. 20.2.3.1 Bit Timing According to ISO 11898 standard, a CAN bit time is subdivided into different segments (Figure 20-3). Each segment consists of multiples of a time quantum tq. The magnitude of tq is adjusted by the bit field BRP and by bit DIV8, both controlling the baud rate prescaler (see bit timing register NBTR). The baud rate prescaler is driven by the MultiCAN module clock fCAN. 1 Bit Time TSeg1 TSync Sync. Seg TProp TSeg2 Tb1 Tb2 1 Time Quantum (tq) Sample Point Transmit Point MCT04518 Figure 20-3 CAN Bus Bit Timing Standard The Synchronization Segment (TSync) allows a phase synchronization between transmitter and receiver time base. The Synchronization Segment length is always 1 tq. The Propagation Time Segment (TProp) takes into account the physical propagation delay in the transmitter output driver, on the CAN bus line and in the transceiver circuit. For a working collision detect mechanism, TProp has to be two times the sum of all propagation delay quantities rounded up to a multiple of tq. The Phase Buffer Segments 1 and 2 (Tb1, Tb2) before and after the signal sample point are used to compensate a mismatch between transmitter and receiver clock phase detected in the synchronization segment. The maximum number of time quanta allowed for resynchronization is defined by bit field SJW in the CAN Node Bit Timing register NBTR. The Propagation Time Segment and the Phase Buffer Segment 1 are combined to parameter TSeg1, which is defined by the value TSEG1 in the respective CAN Node Bit Timing register NBTR. A minimum of 3 time quanta is requested by the ISO standard. Parameter TSeg2, which is defined by the value of TSEG2 in the CAN Node Bit Timing Register NBTR, covers the Phase Buffer Segment 2. A minimum of 2 time quanta is requested by the ISO standard. According User’s Manual MultiCAN, V1.7d3 20-9 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller ISO standard, a CAN bit time, calculated as the sum of TSync, TSeg1 and TSeg2, must not fall below 8 time quanta. Calculation of the bit time: tq = (BRP+1) / fCAN if DIV8 = 0 = 8 × (BRP+1) / fCAN if DIV8 = 1 TSync TSeg1 TSeg2 = 1 tq bit time = (TSEG1 + 1) × tq (min. 3 tq) = (TSEG2 + 1) × tq (min. 2 tq) = TSync + TSeg1 + TSeg2 (min. 8 tq) To compensate phase shifts between clocks of different CAN controllers, the CAN controller has to synchronize on any edge from the recessive to the dominant bus level. If the hard synchronization is enabled (at the start of frame), the bit time is restarted at the synchronization segment. Otherwise, the resynchronization jump width TSJW defines the maximum number of time quanta a bit time may be shortened or lengthened by one resynchronization. The value of SJW is programmed in the CAN Node Bit Timing Register. TSJW = (SJW + 1) × tq TSeg1 ≥ TSJW + Tprop TSeg2 ≥ TSJW The maximum relative tolerance for fCAN depends on the Phase Buffer Segments and the resynchronization jump width. dfCAN ≤ min (Tb1, Tb2) / 2 × (13 × bit time - Tb2) dfCAN ≤ TSJW / 20 × bit time AND A valid CAN bit timing must be written to the CAN Node Bit Timing Register NBTR before resetting the INIT bit in the Node Control Register, i.e. before enabling the operation of the CAN node. The Node Bit Timing Register may be written only if bit CCE (Configuration Change Enable) is set in the corresponding Node Control Register. User’s Manual MultiCAN, V1.7d3 20-10 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.3.2 CAN Error Handling The Error Handling Unit of the CAN node is responsible for the fault confinement of the CAN device. Its two counters, the Receive Error Counter and the Transmit Error Counter (control register NECNT), are incremented and decremented by commands from the Bit Stream Processor. If the Bit Stream Processor itself detects an error while a transmit operation is running, the Transmit Error Counter is incremented by 8. An increment of 1 is used, when the error condition was reported by an external CAN node via an error frame generation. For error analysis, the transfer direction of the disturbed message and the node, recognizing the transfer error, are indicated in the control register NECNT of the respective CAN node. According to the values of the error counters, the CAN node is set into the states "error active", "error passive" and "bus-off". The CAN node is in error active state, if both error counters are below the error passive limit of 128. It is in error passive state, if at least one of the error counters equals or exceeds 128. The bus-off state is activated if the Transmit Error Counter equals or exceeds the busoff limit of 256. This state is reported by flag BOFF in the NSR status register of the CAN node. The device remains in this state, until the bus-off recovery sequence is finished. Additionally, there is the bit EWRN in the NSR status register, which is set, if at least one of the error counters equals or exceeds the error warning limit defined by bit field EWRNLVL in the control registers NECNT of the CAN node. Bit EWRN is reset if both error counters fall below the error warning limit again (see Page 20-63). 20.2.3.3 CAN Frame Counter Each CAN node is equipped with a frame counter which allows to count transmitted/received CAN frames or to obtain information about the time instant when a frame has been started to transmit or being received by the CAN node. CAN frame counting/bit time counting is performed by a 16 bit counter which is controlled by register NFCR of the respective CAN node. Bit field CFSEL of register NFCR defines the operation mode of the frame counter: • • • Frame Count Mode: The frame counter is incremented after the successful transmission and/or reception of a CAN frame. The incremented value is copied to the CFC field of the Interrupt Pointer Register of the message object involved in the transfer. Time Stamp Mode: The frame counter is incremented with the beginning of a new bit time. When the transmission/reception of a frame starts, the value of the frame counter is captured and stored to the CFC field of register NFCR. After the successful transfer of the frame the captured value is copied to the CFC field of the Interrupt Pointer Register of the message object involved in the transfer. Bit Timing Mode: Used for baud rate detection and analysis of the bit timing (Chapter 20.2.5.3). User’s Manual MultiCAN, V1.7d3 20-11 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.3.4 CAN Node Interrupts Each CAN node is equipped with four interrupt sources. NSRx Correct Message Object Transfer NCRx TXOK TRIE NIPRx ≥1 Transmit TRINP Receive RXOK NSRx NSRx NCRx LEC LECIE NIPRx 3 CAN Error LECINP NCRx NSRx ≥1 EWRN ALIE NIPRx BOFF ALINP List Length Error NSRx List Object Error ALERT LLE NSRx LOE NSRx NFCRx NFCRx CFCOV CFCIE NIPRx Frame Counter Overflow/Event CFCINP MCA05837 Figure 20-4 CAN Node Interrupts User’s Manual MultiCAN, V1.7d3 20-12 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller An interrupt request is generated upon: • • • The successful transmission/reception of a frame, An overflow of the frame counter (frame count mode/time stamp mode) or a bit timing measurement event (bit timing mode), An error related to the CAN node. 20.2.4 Message Object List Structure The message objects of the MultiCAN module are organized in double chained lists, where each message object has a pointer to the previous message object in the list as well as a pointer to the next message object in the list. 20.2.4.1 Basics The MultiCAN module provides 16 different lists, where each object is allocated to one of these lists. A 4 bit LIST bit field in the Message Object Control Register indicates the list to which the respective message object is currently allocated. In the example of Figure 20-5 three message objects are allocated to the list with list index 2. PPREV = 5 PPREV = 5 PPREV = 16 PNEXT = 16 PNEXT = 3 PNEXT = 3 LIST = 2 LIST = 2 LIST = 2 Message Object 5 EMPTY = 0 Message Object 16 SIZE = 2 BEGIN = 5 Message Object 3 END = 3 Register LIST2 MultiCAN_list_basics Figure 20-5 Example Allocation of Message Objects to a List The BEGIN field of the List Register points to the first element in the list (object 5 in the example) whereas the END field points to the last element in the list (object 3 in the example). The number of elements in the list is indicated in the SIZE field of the List Register (#elements = SIZE + 1, thus SIZE = 2 for the 3 elements of the example). The User’s Manual MultiCAN, V1.7d3 20-13 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller EMPTY bit indicates a list with no elements (EMPTY = 0 in the example, as the list is not empty). Each message object has a pointer PNEXT (located in the Message Object Control Register) that points to the next message object in the list and a pointer PREV that points to the previous message object in the list. PPREV of the first message object points to the object itself because the first object has no predecessor (in the example object 5 is the first object, indicated by PPREV = 5). PNEXT of the last message object also points to the object itself because the last element has no successor (in the example object 3 is the last object, indicated by PNEXT = 3). Each message object also has a 4 bit LIST field (located in the Message Object Control Register) which shows list index of the list to which the object is currently allocated (the objects of the example are allocated to list 2, thus LIST = 2). 20.2.4.2 List of Unallocated Elements The list with list index 0 has a special meaning: It is the list of all unallocated elements. An element is called unallocated if and only if it belongs to list zero. It is called allocated if and only if it belongs to one of the other lists. After reset all message objects are unallocated, i.e. belong to the list of unallocated elements. The initial allocation of the message objects within the list of unallocated objects is ordered by message number, i.e. the predecessor of message object n is object n-1 and the successor of object n is object n+1. 20.2.4.3 Connection to the CAN Nodes One CAN node is linked to exactly one unique list of message objects.. Table 20-3 List Indices List Index Description 0 List of unallocated elements 1 to n_nodes Lists associated to a CAN node. List index i belongs to CAN node i -1. n_nodes+1 to n_lists- Free user lists, which are not associated to a CAN node. 1 User’s Manual MultiCAN, V1.7d3 20-14 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller CAN Bus 0 CAN Bus 1 . . . CAN Bus n-1 List of all unallocated elements CAN Node 0 CAN Node 1 CAN Node n-1 1st Object in List 0 1st Object in List 1 1st Object in List 2 1st Object in List n . . . 2nd Object in List 0 2nd Object in List 1 2nd Object in List 2 2nd Object in List n Last Object in List 0 Last Object in List 1 Last Object in List 2 Last Object in List n MultiCAN_list_to_can_n.vsd Figure 20-6 Message Objects Linked to several CAN Nodes User’s Manual MultiCAN, V1.7d3 20-15 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.4.4 List Command Panel The list structure may not be modified directly by means of write accesses to the LIST registers and the PPREV, PNEXT and LIST fields in the message objects as they are read only. The management of the list structure is performed by and limited to the list controller unit inside the MultiCAN module. The list controller is controlled via a command panel which allows the user to issue list allocation commands to the list controller. The list controller basically serves two purposes: 1. Ensure that all operations that modify the list structure result in a consistent list structure. 2. Present maximum comfort and flexibility to the user. The list controller and the associated command panel allows the programmer to concentrate on the final properties of the list, which are characterized by the allocation of message objects to a CAN node and the ordering relation between objects which are allocated to the same list. The process of list (re-)building is left to the list controller. A panel command is started by writing the respective command code (see Table 20-9 “Panel Commands” on Page 20-52) into to the PANCMD field of the panel control register. The corresponding command arguments must be written to PANAR1 and PANAR2 before writing the command code or latest together with the command code in a single 32 bit write access to the panel control register (only possible within 32 bit system environments). With the write of a valid command code the BUSY flag in the Panel Control Register becomes active (BUSY = 1) and the control panel registers are locked, which means that write accesses to the Panel Control Register are ignored. The BUSY flag remains active and the control panel remains locked until the execution of the requested command is completed. When the issued command is a dynamic allocation which takes an element from the list of unallocated objects, then also the RBUSY bit becomes active together with the BUSY bit (RBUSY = BUSY = 1) to indicate that PANAR1 and PANAR2 are going to be updated by the list controller: 1. The message number of the message object taken from the list of unallocated elements is written to PANAR1. 2. An error status is posted to bit 7 of PANAR2 (Bit 7 = ERR). If ERR = 1 then the list of unallocated elements was empty and the command is aborted. If ERR = 0 then the list was not empty and the command will be performed successfully. The results are written before the list controller starts the actual allocation process. As soon as the results are available, RBUSY becomes inactive (RBUSY = 0) again, while BUSY still remains active until completion of the command. This allows the user to setup the new message object while it is still in the process of list allocation. The access to message objects is not limited during ongoing list operations. However, any access to a User’s Manual MultiCAN, V1.7d3 20-16 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller register resource located inside the RAM delays the ongoing allocation process by one access cycle. As soon as the command is done the BUSY flag becomes inactive (BUSY = 0) and write accesses to the Panel Control Register are enabled again. Also the NOP command code is automatically written to the CMD field of the Panel Control Register. A new command may be started any time during BUSY inactive. All fields of the Panel Control Register except BUSY and RBUSY may be written by the user. This allows to save and restore the Panel Control Register if the Command Panel shall be used within independent (mutually interruptible) interrupt routines. If this is the case then any task that uses the Command Panel and that may interrupt another task also using the Command Panel should poll the BUSY flag until is becomes inactive and save the whole PANCTR register to a save memory location before issuing a command. At the end it should restore PANCTR from the said memory location. Before a message object which is allocated to the list of an active CAN node shall be moved to another list or to another position within the same list, bit MSGVAL (“Message Valid”) should be cleared in the Message Object Control Register of the message object. User’s Manual MultiCAN, V1.7d3 20-17 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.5 CAN Node Analysis Features CAN Analyze Mode allows to monitor the CAN traffic without affecting the logical state of the CAN bus. 20.2.5.1 Analyze Mode CAN Analyze Mode is selected by setting bit CALM in the Node Control Register. CAN Analyze Mode may be selected for each CAN node individually. In CAN Analyze Mode the transmit pin of the CAN node is held on recessive level. The CAN node may receive frames (data-, remote-, and error frames) but is not allowed to transmit. Active error frames are sent recessive. Received data/remote frames are not acknowledged (i.e. acknowledge slot is sent recessive), but will be received and stored in matching message objects as long as there is any other node that acknowledges the frame. All message object functionality is available, but no transmit request will be executed. 20.2.5.2 Loop-back Mode The MultiCAN module provides a loop-back mode to enable an in-system test of the MultiCAN module as well as the development of CAN driver software without access to an external CAN bus. The loop-back feature consists of an internal CAN bus (inside the MultiCAN module) and a bus select switch for each CAN node (Figure 20-7). With the switch each CAN node can be wired either to the internal CAN bus (loop-back mode activated) or the external CAN bus, i.e. the transmit- and receive pins (normal operation). The CAN bus which is currently not selected is driven recessive, i.e. the transmit pin is held at 1 and the receive pin is ignored by the CAN nodes which are in loop-back mode. Loop-back Mode is selected individually for each CAN node by setting bit LBM in the respective Node Port Control Register. All CAN nodes that are in loop-back mode may communicate on the internal CAN bus without affecting the normal operation of the other CAN nodes which are not in loop-back mode. User’s Manual MultiCAN, V1.7d3 20-18 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller NPCR0.LBM CAN Node 0 Internal CAN Bus External CAN Bus 0 0 1 NPCR1.LBM CAN Node 1 External CAN Bus 1 0 1 NPCR2.LBM CAN Node 2 External CAN Bus 2 0 1 NPCR3.LBM CAN Node x External CAN Bus x 0 1 MCA05840 Figure 20-7 Loop-back Mode for several CAN Nodes User’s Manual MultiCAN, V1.7d3 20-19 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.5.3 Bit Timing Analysis For each CAN node detailed analysis of the bit timing can be performed by means of using dedicated analysis modes of the CAN frame counter. The bit timing analysis functionality of the frame counter may be used for automatic detection of the CAN baud rate as well as for the analysis of the timing of the CAN network. Bit timing analysis for a CAN node is selected by CFMOD = 10B (Bit Timing Mode) in the CAN Node Frame Counter Register. Bit timing analysis does not affect the operation of the CAN node. The measurement results are written to the CFC field. Whenever CFC is updated in Bit Timing Mode, then also the CFCOV bit is set in order to indicate the update event. If CFCIE is set then also an interrupt request is generated, where for the the CAN node i = 0 to 4 the interrupt request is generated on the interrupt output line i. Automatic Baud Rate Detection Automatic baud rate detection requires to measure the time between the observation of subsequent dominant edges on the CAN bus. This measurement is automatically performed if CFSE = 000B in the CAN Node Frame Counter Register. With each dominant edge monitored on the CAN receive input the time (measured in clock cycles) between this edge and the most recent dominant edge is stored in the CFC field. Synchronization Analysis The bit time synchronization is monitored if CFSEL = 010B. The time between the first dominant edge and the sample point is measured and stored in CFC. The bit timing synchronization offset may be derived from this time as the first edge after the sample point triggers synchronization and there is only one synchronization between consecutive sample points. Synchronization Analysis may be used to fine tune the baud rate during reception of the first CAN frame with the measured baud rate. Driver Delay Measurement The delay between a transmitted edge and the corresponding received edge is measured with CFSEL = 011B (dominant to dominant) and CFSEL = 001B (recessive to recessive). These delays indicate the time needed to represent a new bit value on the physical implementation of the CAN bus. User’s Manual MultiCAN, V1.7d3 20-20 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.6 Message Acceptance Filtering The message acceptance filtering includes receive and transmit filtering. 20.2.6.1 Receive Acceptance Filtering When a message object is received on a CAN node, then a unique message object is determined in which the received frame will be stored upon successful frame reception. A message object qualifies for the reception of a frame if and only if the following conditions are fulfilled: 1. The message object is allocated to the list of the CAN node on which the frame is received. 2. MSGVAL is set in the Message Control Register 3. RXEN is set in the Message Control Register 4. The DIR bit in the Message Control Register equals the RTR bit of the received frame. If DIR = 1 (transmit object) then the message object only accepts remote frames. If DIR = 0 (receive object) then the message object only accepts data frames. 5. If MIDE = 1 in the Acceptance Mask Register (MOAMR) then the IDE bit of the received frame equals the IDE bit in the Arbitration Register (MOAR). IF MOAR.IDE = 1 then the message object only accepts frames with extended identifier. If MOAR.IDE = 0 then the message object only accepts standard frames. If MOAMR.MIDE = 0 then the IDE bit of the received frame is don’t care, i.e. the message object accepts both standard and extended frames. 6. The identifier of the received frame matches the identifier stored in the Arbitration Register of the message object with respect to the acceptance mask in the MOAMR register. This means that each bit of the received identifier is equal to the corresponding identifier bit in the Acceptance Register, except those bits for which the corresponding mask bits in MOAMR are cleared. These identifier bits are don’t care. Figure 20-8 illustrates this identifier check. A priority ordering relation is defined for the message objects: A message object A has higher receive priority than a message object B if and only if the following conditions are fulfilled: 1. A belongs to a higher priority class than B, i.e. MOAR.PRI of A must be less than or equal to MOAR.PRI of B. 2. If both objects belong to the same priority class (PRI of A = PRI of B) then message object B is a list successor of A, i.e. B can be reached by means of successively stepping forward in the list, starting from A. Among all messages that fulfill all 6 qualifying criteria the unique message object with highest receive priority wins acceptance filtering, i.e. is selected for storage of the received frame. All other message objects loose receive acceptance filtering. User’s Manual MultiCAN, V1.7d3 20-21 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller identifier of received frame identifier of message object bitwise XOR 0 = bit match 1 = no match bitwise AND acceptance mask of message object IDmatch IDmatch = 0 : ID of received frame fits to message object IDmatch > 0 : ID of received frame does not fit to message object reg_id_match Figure 20-8 Received Message Identifier Acceptance Check 20.2.6.2 Transmit Acceptance Filtering A message is requested for transmission by means of setting a transmit request in the message object which holds the message. If more than one message object has a valid transmit request for the same CAN node, then a single message object is chosen for actual transmission from the candidates, because only a single message object may be transmitted at the same time on a single CAN bus. A message object qualifies for transmission on a given CAN node if and only if it meets the following criteria (Figure 20-9): 1. 2. 3. 4. The message object is allocated to the list of the CAN node considered. MSGVAL is set in the Message Object Control Register. TXRQ is set in the Message Object Control Register. TXEN0 and TXEN1 are set in the Message Object Control Register. A priority order relation is defined for all qualifying objects to determine the message to be transmitted first: Let A and B be two message objects qualifying for transmission, where without loss of generality object B is assumed to be is a list successor of A, i.e. B can be reached by means of successively stepping forward in the list, starting from A. For both message objects associated CAN messages CANA and CANB are defined, where identifier, IDE and RTR bit are taken from MOAR.ID, MOAR.IDE and MOCTR.DIR. If both message objects belong to a different priority class (different value of bit field PRI in the Message Object Arbitration Register MOAR) then the message object with lower PRI value has higher transmit priority and will be transmitted first. User’s Manual MultiCAN, V1.7d3 20-22 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller If both message objects belong to the same priority class (equal value of bit field MOAR.PRI), then message object A has higher transmit priority than object B if and only if one of the following conditions is fulfilled: 1. PRI = 10 and CAN message CANA has higher or equal priority than CAN message CANB with respect to CAN arbitration rules (see Table 20-13). 2. PRI = 01 or PRI = 11 (priority by list order). 3. PRI = 00 is reserved. Transmit objects with PRI = 00 are not taken into account for the transmit acceptance filtering. The unique message object that qualifies for transmission and has highest transmit priority wins transmit acceptance filtering, i.e. will be transmitted first. All other message objects lose the current transmit acceptance filtering round. They get a new chance in subsequent filtering rounds. MSGVAL TXRQ TXEN0 & 0 = Object will not be transmitted 1 = Object is requested for transmission TXEN1 MCA05842 Figure 20-9 Effective Transmit Request of Message Object User’s Manual MultiCAN, V1.7d3 20-23 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.7 Message Postprocessing Interface When a message object has received or transmitted a frame successfully then the CPU may be notified to perform message postprocessing on the message object. The postprocessing interface of the MultiCAN module consists of two elements: 1. Message Interrupts to trigger postprocessing. 2. Message Pending Registers to aggregate the pending message interrupts into a common structure for postprocessing. 20.2.7.1 Message Interrupts When the storage of a received frame into a message object or the successful transmission of a frame is completed then a message interrupt my be requested. For each message object both transmit and receive interrupts may be routed individually to one of the available interrupt output lines, as illustrated in Table 20-10. A receive interrupt is not restricted to the direct storage of a received frame from the CAN node the message object belongs to. It also occurs upon frame storage induced by FIFO or gateway action. The TXPND and RXPND bits are set whenever a successful transmission/reception takes place, no matter if the respective interrupt is enabled or not. MOSTATn TXPND RXPND MOFCRn OVIE TXIE RXIE MMC = 0010B = 0001B Message n Transmitted ≥1 MOIPRn TXINP & Message n FIFO full & ≥1 Message n Received MMC = 0001B: Message object n is a Receive FIFO Base Object MMC = 0010B: Message object n is a Transmit FIFO Base Object MOIPRn RXINP MCA05843 Figure 20-10 Message Interrupt Request Routing User’s Manual MultiCAN, V1.7d3 20-24 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.7.2 Message Pendings When a message interrupt request is generated then also a message pending bit is set in one of the Message Pending Register. To this end the pending bit selection field MPN is defined in the Message Object Interrupt Pointer Register. The value of MPN is combined with TXINP and RXINP to yield the effective bit position of the Pending bit, as illustrated in Figure 20-11. The bit position consists of 2 parts: 1. The high part (bits [7:5]) of the calculated position selects the Message Pending Register in which the pending bit will be set. 2. The low part (bits [4:0]) of the calculated position selects the position (0-31) of the pending bit within the 32 bit Message Pending Register. The MPSEL bit field in the MultiCAN Control Register allows to include the interrupt request node pointer (RXINP for reception, TXINP for transmission) so as to implement different target location of the pending bit for receive and transmit. The Message Pending Registers may be written by the CPU, but those bits that are written 1 are left unchanged and only those bits which are written 0 are cleared. This allows to clear individual bits with a single write access instead of a read/modify/writeback access. Thus there is no access conflict when the MultiCAN module sets another pending bit in the same register at the same time. Each Message Pending Register is linked to an individual Message Index Register which displays the lowest bit position of all set (1) bits in the Message Pending Register. The Message Index Register is read only and is updated immediately when the value of the corresponding Message Pending Register changes. There is no direct link between the Message Pending Registers and the interrupt request nodes. Such a link may, however, be established by the application. For example, each interrupt request node could be linked to a unique Message Pending Register. The example shown in Figure 20-12 links message Pending Register n to interrupt output line n (n = 0-7). User’s Manual MultiCAN, V1.7d3 20-25 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Message Object n Interrupt Pointer Register MOIPRn[15:0] TXINP MPN 7 6 5 4 3 2 1 0 3 2 1 RXINP 0 3 2 1 0 15 0 0 1 0 1 0 1 0 1 0 = transmit event 1 = receive event Message Pending Registers 1 0 1 255 223 191 159 127 95 63 7 7 6 5 0 2 D E 1 M U 0 X 0 31 MSPND7 MSPND6 MSPND5 MSPND4 MSPND3 MSPND2 MSPND1 MSPND0 224 192 160 128 96 64 32 0 . . . . . . . . . . . . . . . 1 0 MSB 0 4 3 31 2 1 31 D 4 E M U X 3:0 0 . . . . . . . . 1 0 MPSEL 0 Modul Control Register MCR[31:0] MCA05844 Figure 20-11 Target Location of the Message Pending Bit (Transmit/Receive) User’s Manual MultiCAN, V1.7d3 20-26 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller RXINP, TXINP = n MPN[7:5] = n Message Object Message Pending Register n Interrupt Node n link_int_to_pendings Figure 20-12 Example Link of Message Pending Registers to Interrupt Output Lines User’s Manual MultiCAN, V1.7d3 20-27 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.8 Message Object Data Handling The follwing section describes the actions taken during a frame reception and during a frame transmition. 20.2.8.1 Frame Reception When a message is received on the CAN bus then the storage of the message into a message object is prepared and performed according to the scheme shown in Figure 20-13. The MultiCAN module not just copies the received data into the message object, but it provides advanced features to enable consistent data exchange between MultiCAN and CPU. MSGVAL The MSGVAL (“Message Valid”) bit in the Message Object Control Register is the main switch of the message object. The MultiCAN module only stores information in the message object during the frame reception process when MSGVAL is set (MSGVAL = 1). Whenever MSGVAL is reset (MSGVAL = 0) by the CPU then the MultiCAN module stops all ongoing write accesses to the message object so that the message object may be reconfigured by the CPU in subsequent write accesses to the message object without being disturbed by the MultiCAN. RTSEL When the CPU re-configures a message object (.i.e. clears MSGVAL, modifies the message object and sets MSGVAL again) during CAN operation then the following scenario can occur: 1. 2. 3. 4. The message object wins receive acceptance filtering. The CPU clears MSGVAL to reconfigure the message object. The CPU sets MSGVAL again after reconfiguration. The end of the received frame is reached. As MSGVAL is set, the received data are stored in the message object, a message interrupt request is generated, gateway and fifo actions are processed etc. The storage of the received data may be undesirable if the context of the message object has changed, because the old message object configuration has been used for acceptance filtering of the message. Bit MOCTR.RTSEL (“Receive/Transmit Selected”) allows to disconnect a message object from an ongoing frame reception: When a message object wins receive acceptance filtering then bit RTSEL is set (RTSEL = 1) by the MultiCAN in order to indicate an upcoming frame delivery. The MultiCAN checks RTSEL for value 1 upon successful frame reception in order to verify User’s Manual MultiCAN, V1.7d3 20-28 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller that the object is still ready for receiving the frame. The received frame is stored in the message object (along with all subsequent actions such as message interrupts, FIFO & gateway actions, flag updates) only if RTSEL = 1. When the user invalidates a message object during CAN operation (MSGVAL -> 0) then the user should clear RTSEL before setting MSGVAL again (latest with the same write access that sets MSGVAL) in order to prevent the storage of a frame that belongs to the old context of the message object. Thus message object reconfiguration should consist of the following sequence of steps: 1. Clear MSGVAL. 2. Reconfigure message object while MSGVAL = 0. 3. Clear RTSEL and set MSGVAL. RXEN Bit MOCTR.RXEN enables a message object for frame reception. A message object can receive CAN messages from the CAN bus only if RXEN = 1. The MultiCAN evaluates RXEN only during receive acceptance filtering. After receive acceptance filtering RXEN is ignored, i.e. the value of RXEN has no influence on the actual storage of a received message in a message object. Bit RXEN enables a “soft phase out” of a message object: When the user clears RXEN then a currently received CAN message for which the message object has won acceptance filtering is still stored in the message object, but for subsequent messages the message object no longer wins receive acceptance filtering. RXUPD, NEWDAT and MSGLST An ongoing frame storage process is indicated with the RXUPD (“Receive Updating”) bit in the Message Object Control Register. The MultiCAN module sets RXUPD with the start and clears RXUPD with the end of a message object update (which consists of frame storage as well as flag updates). After storing the received frame (identifier, IDE bit, DLC and for data frames also the data field) in the message object NEWDAT (“New Data”) is set by the MultiCAN. If NEWDAT was already set then also MSGLST (“Message Lost”) is set in order to indicate data loss. The RXUPD and NEWDAT flags may be used by the CPU to read consistent frame data from the message object during ongoing CAN operation. The following steps are recommended: 1. Clear NEWDAT 2. Read message content (identifier, data etc.) from message object 3. Read Message Object Control Register and check that both NEWDAT and RXUPD are cleared. If this is not the case then goto back to step 1. 4. As step 3 was successful, the read message content is consistent, i.e. has not been updated by the MultiCAN while reading. User’s Manual MultiCAN, V1.7d3 20-29 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller The bits RXUPD, NEWDAT and MSGLST work in the same fashion for the reception of data as well as remote frames. 20.2.8.2 Frame Transmission The process of message object transmission is illustrated in Figure 20-14. In addition to copying the message content (identifier, IDE bit, RTR = DIR bit, DLC and for data frames also the data field) to the internal transmit buffer of the CAN node that the message object belongs to, also several status flags are served and monitored in order to enable consistent data handling. The transmission process (after transmit acceptance filtering) of a given message object makes no difference between remote and data frames. MSGVAL, TXRQ, TXEN0, TXEN1 For the MSGVAL bit the section “MSGVAL” on Page 20-28 for frame reception is also valid for transmission. A message may only be transmitted if all four bits MSGVAL (“Message Valid”), TXRQ (“Transmit Request”), TXEN0 (“Transmit Enable 0”), TXEN1(“Transmit Enable 1”) of the Message Object Control Register are set (1) (see also Figure 20-9). Although these bits are equivalent with respect to the transmission process, they have different semantics: Table 20-4 Bits to set (1) in MOCTR for message transmission Bit Description MSGVAL Message Valid Main Switch of the Message Object TXRQ Transmit Request Standard Transmit Request bit. The CPU should set this bit whenever a message object shall be transmitted. TXRQ is cleared automatically at the end of the successful transmission, except when there are new data (indicated by NEWDAT = 1) to be transmitted. When the single transmit trial bit is set (STT = 1) in the Message Object Function Register then TXRQ is already cleared by the MultiCAN when the content of the message object is copied to the transmit frame buffer of the CAN node. A received remote request (i.e. remote frame received on CAN bus) sets bit TXRQ to request the transmission of the corresponding data frame. User’s Manual MultiCAN, V1.7d3 20-30 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Table 20-4 Bits to set (1) in MOCTR for message transmission (cont’d) Bit Description TXEN0 Transmit Enable 0 This bit may be temporarily cleared by the CPU to suppress the transmission of this object when it writes new content to the data field. This avoids transmission of inconsistent frames which consist of a mixture of old and new data. Remote requests are still accepted during TXEN0 = 0, but transmission of the data frame is suspended until the CPU re-enables transmission (TXEN0 = 1). TXEN1 Transmit Enable 1 This bit is used in transmit FIFOs to select the message object which is transmit active within the FIFO structure. For message objects which are not transmit FIFO elements TXEN1 may either be set to 1 permanently or be used as a second, independent transmission enable bit. RTSEL When a message object has been identified to be transmitted next (by acceptance filtering) then the MultiCAN set bit MOCTR.RTSEL (“Receive/Transmit Selected”). When the MultiCAN copies the message object to the transmit buffer it checks bit RTSEL and the message is transmitted only if RTSEL = 1. After the successful transmission of the message bit RTSEL is checked again and message postprocessing is only performed if RTSEL = 1. A complete reconfiguration of an operating message object should be done by means of the following steps: 1. Clear MSGVAL (“Message Valid”). 2. Reconfigure message object while MSGVAL = 0. 3. Clear RTSEL and set MSGVAL. Here clearing RTSEL ensures that the message object is disconnected from an ongoing/scheduled transmission and no message object processing (copying message to transmit buffer incl. clearing NEWDAT, clearing TXRQ, time stamp update, message interrupt etc.) within the old context of the object may occur after the message object becomes valid again, but within a new context. NEWDAT When the content of a message object has been transferred to the transmit buffer of the CAN node then bit NEWDAT (“New Data”) is cleared to indicate that the transmit data of the message object are no longer new. User’s Manual MultiCAN, V1.7d3 20-31 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller When the CAN transmission of the frame is successful and NEWDAT is still cleared (i.e. no new data have been copied to the message object in the meantime) then TXRQ (“Transmit Request”) is cleared automatically. If, however, the NEWDAT bit has been set again by the CPU (because a new frame shall be transmitted) then TXRQ is not cleared in order to enable the transmission of the new data. User’s Manual MultiCAN, V1.7d3 20-32 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Start receiving CAN frame no Get data from gateway/FIFO source Object wins acc. filtering? Time Milestones yes RTSEL := 1 no 1 CAN rec. successful? yes no MSGVAL & RTSEL =1? MSGVAL =1? yes yes RXUPD := 1 RXUPD := 1 Copy frame to message object Copy frame to message object DIR =1? no yes 2 3 TXRQ := 1 in this or in foreign objects no NEWDAT =1? yes MSGLST := 1 no NEWDAT := 1 RXUPD := 0 RXPND := 1 RXIE =1? 4 yes Interrupt Request visible no Done MCA05845a Figure 20-13 Data Delivery to Message Object by MultiCAN Module User’s Manual MultiCAN, V1.7d3 20-33 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Object wins transmit acc. filtering Time Milestones RTSEL := 1 1 Copy Message to internal transmit buffer MSGVAL & TXRQ & TXEN0 & TXEN1 = 1 continuously valid no yes RTSEL = 1? no yes Request transmission of internal buffer on CAN bus NEWDAT := 0 Transmission successful? 2 no yes MSGVAL & RTSEL =1? no yes NEWDAT = 1? no TXRQ := 0 yes TXIE =1? no 3 yes Issue interrupt Done MCA05846 Figure 20-14 Transmission of a Message Object User’s Manual MultiCAN, V1.7d3 20-34 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.9 Message Object Functionality This section describes the functionality that is related to each individual Message Object. 20.2.9.1 Standard Message Object Mode Standard message mode is selected via MMC = 0000B in the Message Object Function Control Register of the message object. In this mode a message object may transmit and receive CAN frames according to the basic rules as described in the previous sections. Additional services such as Single Data Transfer Mode or Single Transmit Trial (see sections below) are available and may be selected individually by the user. 20.2.9.2 Single Data Transfer Mode Single Data Transfer Mode is a useful feature in order to broadcast data over the CAN bus without unintended doubling of information. Single Data Transfer Mode is selected via bit SDT in the Message Object Function Register of the message object. Message Reception When a received message is stored in a message object and further messages are stored in the same message object before the CPU reads the first message object, then the content of the first message gets lost and is replaced with the content of the subsequent messages (indicated by MSGLST = 1). If SDT = 1 (Single Data Transfer Mode activated) then the MultiCAN controller automatically clears the MSGVAL bit of the message object after the storage of a received data frame to prevent the reception of further messages. The reception of a remote frame does not lead to the clearance of MSGVAL. Message Transmission When a message object receives a series of multiple remote requests then it transmit several data frames in response to the requests. If the data within the message object has not been updated in the time between the transmissions, the same data may be represented more than once on the CAN bus. In Single Data Transfer Mode (SDT = 1) this is avoided because the MultiCAN controller automatically clears MSGVAL after the successful transmission of a data frame. The transmission of a remote frame does not clear MSGVAL. 20.2.9.3 Single Transmit Trial If the bit STT in the message object function register is set (STT = 1) then the transmission request is cleared (TXRQ := 0) when the frame content of the message User’s Manual MultiCAN, V1.7d3 20-35 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller object has been copied to the internal transmit buffer of the CAN node. Thus the transmission of the message object is not tried again when it fails due to CAN bus errors. 20.2.9.4 Message Object FIFO Structure In case of high CPU load it may be difficult to process a series of CAN frames in time. This may happen for the short term reception of multiple messages as well as the transmission of a series with tight due date. Therefore a FIFO buffer structure has been implemented in order to avoid loss of incoming messages and to minimize the setup time for outgoing messages. The FIFO structure may also be used to automate the reception or transmission of a series of CAN messages and to generate a single message interrupt when the whole series is done. There may be as many FIFOs in parallel as are required by the application. The number of FIFOs and their size are only limited by the number of message objects available. A FIFO may be installed, resized and deinstalled any time, even during CAN operation. The basic structure of a FIFO is shown in Figure 20-15. A FIFO consists of a single base object (shown on the left side) and several slave objects (shown on the right side). The slave objects are chained together in the same list structure. The base object may be allocated to any list. Although Figure 20-15 shows the base object as a separate item apart from the slave objects, it is also possible to integrate the base object at any place into the chain of slave objects, so that the base object is slave object, too (not possible for gateways). The FIFO structure fully relies on the list structure. The absolute object numbers of the message objects have no impact on the operation of the FIFO. The base object needs not be allocated to the same list as the slave objects. Only the slave object must be allocated to a common list (as they are chained together). The BOT, CUR and TOP pointer link the base object to the slave objects, no matter whether the base object is allocated to the same or to another list than the slave objects. The absolute minimum FIFO would consist of a single message object which is both FIFO base and FIFO slave (not very useful). The biggest possible FIFO would use all message objects of the MultiCAN module. Any sizes between these extremes are possible. In the FIFO base object the boundaries of the FIFO are defined. The BOT field in the FIFO/Gateway Pointer Register of the base object points to the first (bottom) slave element in the FIFO. The TOP field in the FIFO/Gateway Pointer Register of the base object points to the last (top) slave element. The CUR field in the FIFO/Gateway Pointer Register of the FIFO base object points to the actual slave object selected by the MultiCAN for message transfer. When a message transfer takes place with this object then CUR is moved to the next position. If CUR has already reached the top of the FIFO (CUR = TOP) then it is wrapped around to the bottom of the FIFO (CUR := BOT). Otherwise CUR is moved to the next message object in the list structure of the slave objects (CUR := PNEXT of current object). This scheme User’s Manual MultiCAN, V1.7d3 20-36 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller yields a circular FIFO structure where the fields BOT and TOP just establish the link from the last to the first element, which is missing in the linear structure. The SEL field in the FIFO/Gateway Pointer register of the base object may be used for monitoring purposes. It allows to select any slave object and to generate a message interrupt if the CUR pointer reaches the value of SEL. Thus SEL offers a convenient way to determine the end of a predefined series of message transfers, or it may be used to issue a warning to the CPU when the FIFO gets full. User’s Manual MultiCAN, V1.7d3 20-37 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller PPREV PNEXT=f2 Object f1 PPREV=f1 PNEXT=f3 PPREV Object f2 PNEXT BOT=f1 CUR=fi TOP=fn PPREV=f[i-1] Base Object PNEXT=f[i+1] Object fi PPREV=f[n-1] PNEXT Object fn msgobj_fifo Figure 20-15 FIFO Structure with FIFO Base and n FIFO Destinations (Slaves) User’s Manual MultiCAN, V1.7d3 20-38 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.9.5 Receive FIFO The Receive FIFO structure is used to buffer incoming (received) remote or data frames. A Receive FIFO is selected via MMC = 0001B in the Message Object Function Control Register of the FIFO base object. This MMC code automatically designates the message object as FIFO base object. The message mode of the FIFO slave objects are not relevant for the operation of the Receive FIFO. When the FIFO base object receives a frame from the CAN node it belongs to, then the frame is not stored in the base object. Instead the message is stored in the message object that is selected by the CUR pointer in the FIFO/Gateway Pointer Register of the FIFO base object. The message object selected by CUR receives the CAN message as if it were the direct receiver of the message. However, MMC = 0000B is implicitly assumed for the FIFO slave, i.e. a standard message delivery is performed. The actual message mode (MMC) of the FIFO slave is ignored. There is also no extra acceptance filtering to match the received frame against the identifier, IDE bit and DIR bit of the slave object. When the FIFO base object receives a CAN frame then the MultiCAN moves the current pointer CUR to the next message object in the FIFO structure, which will then be used to store the next incoming message. The old value of CUR is used for the current transfer. IF bit OVIE is set in the Message Object Function Register of the FIFO base object and the pointer CUR reaches the value stored in SEL then a FIFO overflow interrupt request is generated. The interrupt request is generated on interrupt output line TXINP (TXINP of the base object) immediately after the storage of the received frame into the slave object. Transmit interrupts are still generated if TXIE is set. A CAN message is stored in a FIFO slave only if MSGVAL = 1 in both FIFO base and slave object. In order to avoid direct reception of a message by a slave message object, as if it was an independent message object and not a part of a FIFO, the bit RXEN of each slave object must be cleared. The setting of the bit RXEN is “don’t care” only if the slave object is located in a list not assigned to a CAN node. User’s Manual MultiCAN, V1.7d3 20-39 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.9.6 Transmit FIFO The Transmit FIFO structure is used to buffer a series of data or remote frames to be transmitted. A transmit FIFO consists of one base message object and one or more slave message objects. A Transmit FIFO base object is selected via MMC = 0010B in the Message Object Function Control Register of the FIFO base object. Unlike the Receive FIFO the Transmit FIFO requires the explicit declaration of the FIFO slave objects via MMC = 0011B. The CUR pointer of all slave objects must point back to the Transmit FIFO Base Object (to be initialized by user). The TXEN1 bits of all message objects except the one which is selected by the CUR pointer of the base object must be cleared (to be initialized by user). TXEN1 of the message object selected by CUR must be set. CUR may be initialized to any FIFO slave object. When tagging the message objects of the FIFO valid to start the operation of the FIFO then the base object must be tagged valid (MSGVAL := 1) first. When a Transmit FIFO shall be deinstalled during operation, then the slave objects must be tagged invalid (MSGVAL := 0) first. The Transmit FIFO uses the TXEN1 bit in the Message Object Control Register of all FIFO elements to select the actual message for transmission. Transmit acceptance filtering evaluates TXEN1 for each message object and a message object may win transit acceptance filtering only if TXEN1 is set. When a FIFO element has transmitted a message then in addition to standard transmit postprocessing (clear TXRQ, transmit interrupt etc.) the MultiCAN clears TXEN1 in that message object and moves the CUR pointer in the corresponding FIFO base object to the next message object to be transmitted. TXEN1 is set automatically in the next message object. Thus TXEN1 moves along the FIFO structure like a token to select the active element. IF bit OVIE is set in the Message Object Function Register of the FIFO base object and the pointer CUR reaches the value stored in SEL then a FIFO overflow interrupt request is generated. The interrupt request is generated on interrupt output line as defined by RXINP (RXINP of the base object) when postprocessing of the received frame is done. Receive interrupts are still generated for the Transmit FIFO base object if bit RXIE is set. User’s Manual MultiCAN, V1.7d3 20-40 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.9.7 Gateway Mode The Gateway Mode allows to establish an automatic information transfer between two independent CAN bus systems without CPU interaction. The Gateway Mode operates on message object level. In Gateway mode, information is transferred between two message objects, resulting in an information transfer between the two CAN nodes to which the message objects are allocated. A gateway may be established between any pair of CAN nodes and there may be as many gateways as there are message objects available to build the gateway structure. Gateway Mode is selected via MMC = 0100B in the Message Object Function Control Register of the gateway source object. The gateway destination object is selected by the CUR pointer in the FIFO/Gateway Pointer Register of the source object. The gateway destination object just needs to be valid (MSGVAL = 1), all other settings are not relevant for the information transfer from the source object to the destination object. A gateway source object behaves like a standard message objects, but when a CAN frame has been received and stored in the source object, some additional actions are performed by the MultiCAN (Figure 20-16): 1. If bit DLCC is set in the Message Object Function Register of the source object, then the DLC code is copied from the source object to the destination object. 2. if bit IDC is set in the Message Object Function Register of the source object, then the identifier and the IDE bit are copied from the source object to the destination object. 3. if bit DATC is set in the Message Object Function Register of the source object, then the data field is copied from the source object to the destination object. 4. If bit GDFS is set in the Message Object Function Register of the source object, then TXRQ is set in the Message Object Control Register of the destination object. 5. RXPND and NEWDAT are set in the Message Object Control Register of the destination object. 6. A message interrupt request is generated for the destination object if RXIE is set in the Message Object Control Register of the destination object. 7. The current pointer CUR in the FIFO/Gateway Pointer Register of the source object is moved to the next destination object according to the FIFO rules as described in Chapter 20.2.9.4. A gateway with a single (static) destination object is obtained by means of setting TOP = BOT = CUR = destination object. The link from the source to the destination object works in the same way as the link from a FIFO source to a FIFO slave. This means that a gateway with an integrated destination FIFO may be created (Figure 20-15), where the object on the left in Figure 20-15 is the gateway source object and the message objects on the right side are the gateway destination objects. The gateway works in the same way for the reception of data frames (source object is receive object, i.e. DIR = 0) as wall as for the reception of remote frames (source object is transmit object). User’s Manual MultiCAN, V1.7d3 20-41 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Source CAN bus Destination CAN bus Pointer to Destination Object CUR Identifier + IDE DLC Data copy if IDCsource = 1 copy if DLCCsource = 1 copy if DATCsource = 1 set if GDFSsource = 1 Identifier + IDE DLC Data TXRQ set NEWDAT set RXPND Source Object, MMC = 0100B Dest. Object msgobj_gateway Figure 20-16 Gateway Transfer from Source to Destination User’s Manual MultiCAN, V1.7d3 20-42 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.2.9.8 Foreign Remote Requests When a remote frame received on a CAN node is stored in a message object, then a transmit request is set in order to trigger the answer (data frame transmission) to the request or to automatically issue a secondary request. If bit FRREN is cleared (FRREN = 0) in the Function Control register of the message object where the remote request is stored, then TXRQ is set in the Control Register of the same message object. If bit FRREN is set (FRREN = 1: foreign remote request enabled) then TXRQ is set in the message object that is referenced by pointer CUR in the FIFO/Gateway Pointer Register. The value of CUR is, however, not changed by this feature. Although the foreign remote request feature works independently from the selected message mode, it is especially useful for gateways to issue a remote request on the source of a gateway upon the reception of a remote request on the gateway destination. According to the setting of FRREN in the gateway destination object there are two ways to handle remote requests that appear on the destination side (assuming that the source object is a receive object and the destination is a transmit object, i.e. DIRsource = 0 and DIRdestination = 1): FRREN = 0 in the Gateway Destination Object 1. A remote frame is received by gateway destination. 2. TXRQ is set automatically in the gateway destination object. 3. A data frame with the current data stored in the destination object is transmitted on the destination bus. FRREN = 1 in the Gateway Destination Object 1. A remote frame is received by gateway destination. 2. TXRQ is set automatically in the gateway source object (must be referenced by CUR pointer of the destination object). 3. A remote request is transmitted by the source object (which is a receive object) on the source CAN bus. 4. The receiver of the remote request responds with a data frame on the source bus. 5. The data frame is stored in the source object. 6. The data frame is copied to the destination object (gateway action). 7. TXRQ is set in the destination object (assuming GDFSsource = 1). 8. The new data stored in the destination object is transmitted on the destination bus, as response to the initial remote request on the destination bus. User’s Manual MultiCAN, V1.7d3 20-43 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3 MultiCAN Kernel Registers The register set of the MultiCAN module consists of three distinct subsets: 1. The Global Module Registers apply to the whole MultiCAN module and exist only once. 2. The CAN Node Registers apply to a single CAN node and thus exist once for each CAN node. 3. The collection of Message Object Registers defines a single message object and thus exists once for each message object. 20.3.1 Register Address Map Table 20-5 shows the address map of the MultiCAN module with respect to the base address of the MultiCAN module. Table 20-5 MultiCAN Address Map (Relative to MultiCAN Base Address) Register Group Start address Total Range Global Module Registers +100H +100H to + 1FFH CAN Node Registers for CANx, x = 0 - 4 +200H +200H to + 2FFH Message Objects n = 0 - 127 +1000H to + 13FFH User’s Manual MultiCAN, V1.7d3 +1000H 20-44 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Global Module Registers The global module registers exist only once. They are listed in Table 20-6 with their relative address with respect to the start address of the Global Module Registers. Table 20-6 Relative Addresses of Global Module Registers Register Rel. Address Full Name of Register LIST0L 100H List Registers 0 Low LIST0H 102H List Registers 0 High LIST1L 104H List Registers 1 Low LIST1H 106H List Registers 1 High LIST2L 108H List Registers 2 Low LIST2H 10AH List Registers 2 High LIST3L 10CH List Registers 3 Low LIST3H 10EH List Registers 3High LIST4L 110H List Registers 4 Low LIST4H 112H List Registers 4 High LIST5L 114H List Registers 5 Low LIST5H 116H List Registers 5 High LIST6L 118H List Registers 6 Low LIST6H 11AH List Registers 6 High LIST7L 11CH List Registers 7 Low LIST7H 11EH List Registers 7 High MSPND0L 140H Message Pending Registers 0 Low MSPND0H 142H Message Pending Registers 0 High MSPND1L 144H Message Pending Registers 1 Low MSPND1H 146H Message Pending Registers 1 High MSPND2L 148H Message Pending Registers 2 Low MSPND2H 14AH Message Pending Registers 2 High MSPND3L 14CH Message Pending Registers 3 Low MSPND3H 14EH Message Pending Registers 3 High MSPND4L 150H Message Pending Registers 4 Low MSPND4H 152H Message Pending Registers 4 High MSPND5L 154H Message Pending Registers 5 Low User’s Manual MultiCAN, V1.7d3 20-45 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Table 20-6 Relative Addresses of Global Module Registers Register Rel. Address Full Name of Register MSPND5H 156H Message Pending Registers 5 High MSPND6L 158H Message Pending Registers 6 Low MSPND6H 15AH Message Pending Registers 6 High MSPND7L 15CH Message Pending Registers 7 Low MSPND7H 146H Message Pending Registers 7 High MSID0 180H Message Index Registers 0 MSID1 184H Message Index Registers 1 MSID2 188H Message Index Registers 2 MSID3 18CH Message Index Registers 3 MSID4 190H Message Index Registers 4 MSID5 194H Message Index Registers 5 MSID6 198H Message Index Registers 6 MSID7 19CH Message Index Registers 7 MSIMASKL 1C0H Message Index Mask Register Low MSIMASKH 1C2H Message Index Mask Register High PANCTRL 1C4H Panel Control Register Low PANCTRH 1C6H Panel Control Register High MCR 1C8H Module Control Register MITR 1CCH Module Interrupt Trigger Register - +120H ... +13EH +148H ... +17EH +188H ... +1BEH +1CEH ... +1FEH Reserved CAN Node Registers The registers of a CAN node are located at consecutive 32 bit addresses according toTable 20-7 which shows the relative address of the 32 bit CAN Node Registers with respect to the base address of CAN node register block. The CAN Node Register block exists once for each CAN node. User’s Manual MultiCAN, V1.7d3 20-46 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Table 20-7 Relative Addresses of CAN Node Registers Register Rel. Address Full Name of Register NCR +00H CAN Node Control Register NSR +04H CAN Node Status Register NIPR +08H CAN Node Interrupt Pointer Register NPCR +0CH CAN Node Port Control Register NBTRL +10H CAN Node Bit Timing Register Low NBTRH +12H CAN Node Bit Timing Register High NECNTL +14H CAN Node Error Counter Register Low NECNTH +16H CAN Node Error Counter Register High NFCRL +18H CAN Node Frame Counter Register Low NFCRH +1AH CAN Node Frame Counter Register High - +1CH to +FEH Reserved Message Object Registers The registers of a message object are located at consecutive 32 bit addresses according to Table 20-8 which shows the relative address of the 32 bit Message Object Registers with respect to the base address of the Message Object. Table 20-8 Relative Addresses of Message Object Registers Register Rel. Address Full Name of Register MOFCRL +00H Message Object Function Control Register Low MOFCRH +02H Message Object Function Control Register High MOFGPRL +04H Message Object FIFO/Gateway Pointer Reg. Low MOFGPRH +06H Message Object FIFO/Gateway Pointer Reg. High MOIPRL +08H Message Object Interrupt Pointer Register Low MOIPRH +0AH Message Object Interrupt Pointer Register High MOAMRL +0CH Message Object Acceptance Mask Register Low MOAMRH +0EH Message Object Acceptance Mask Register High MODATALL +10H Message Object Data Register Low Low MODATALH +12H Message Object Data Register Low High MODATAHL +14H Message Object Data Register High Low User’s Manual MultiCAN, V1.7d3 20-47 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Table 20-8 Relative Addresses of Message Object Registers Register Rel. Address Full Name of Register MODATAHH +16H Message Object Data Register High High MOARL +18H Message Object Arbitration Register Low MOARH +1AH Message Object Arbitration Register High MOCTRL MOSTATL +1CH Message Object Control Register Low Message Object Status Register Low MOCTRH MOSTATH +1EH Message Object Control Register High Message Object Status Register Low User’s Manual MultiCAN, V1.7d3 20-48 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.2 Global MultiCAN Registers 20.3.2.1 Module Identification Register ID Module Identification Register 15 14 13 12 11 10 (08H) 9 8 7 Reset Value: 4001H 6 5 4 3 MOD_NUMBER MOD_REV r r 2 1 0 Field Bits Type Description MOD_REV [7:0] r Module Revision Number Value Bits 7-0 bits are used for module revision numbering. The value of the module revision number starts with 01H (first revision), 02H, 03H, ... up to FFH. MOD_NUMBER [15:8] r Module Identification Number Value Bits 15-8 are used for module identification. The MultiCAN has the module number 40H. User’s Manual MultiCAN, V1.7d3 20-49 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.2.2 Command Panel All list operations such as allocation, deallocation and relocation of message objects within the list structure are performed via the Command Panel. It is not possible to modify the list structure directly by means of writing to the message objects and the LIST registers. A new command is started by means of writing the command arguments and the command code to the Panel Control Register. PANCTRH Panel Control Register 15 14 13 12 (1C6H) 11 10 9 8 7 Reset Value: 0000H 6 rwh rwh Type Description PANAR1 [7:0] rwh Panel Argument 1 PANAR2 [15:8] rwh Panel Argument 2 PANCTRL Panel Control Register 13 12 (1C4H) 11 10 9 8 7 RBU BUS SY Y 0 r rh rh Field Bits Type Description PANCMD [7:0] rwh User’s Manual MultiCAN, V1.7d3 3 PANAR1 Bits 14 4 PANAR2 Field 15 5 2 1 0 Reset Value: 0301H 6 5 4 3 2 1 0 PANCMD rwh Panel Command A new command is started by means of writing the command number to PANCMD. At the end of a panel command the NOP (no operation) command code is automatically written to PANCMD. 20-50 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description BUSY 8 rh Panel Busy 0B Panel has finished command and is ready to accept a new command. 1B Panel operation is in progress. RBUSY 9 rh Result Busy No update of PANAR1 and PANAR2 is 0B scheduled by the list controller. 1B A list command is running (BUSY = 1) that will write results to PANAR1 and PANAR2, but the results are not yet available. 0 [10:15] r User’s Manual MultiCAN, V1.7d3 reserved; returns ’0’ if read; should be written with ’0’; 20-51 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Panel Commands A panel operation consists of a command code to be written to PANCMD and up to 2 panel arguments (PANAR1, PANAR2). Commands that have a return value deliver it to the PANAR1 field. Commands that deliver an error flag post it to bit 7 of PANAR2. Table 20-9 Panel Commands Code PANAR2 PANAR1 0 Command Description No Operation Writing value 0 to PANCMD has no effect. No new command is started. 1 Result: Bit 7 : ERR Bit 6-0 : undefined 2 Argument: List Index User’s Manual MultiCAN, V1.7d3 Initialize Lists Run the initialization sequence to reset the CTRL and LIST field of all message objects and the list registers LIST[7:0] to their reset values. This results in the deallocation of all message objects. The initialization command requires that bits INIT and CCE are set in the Node Control Register of all CAN nodes 0-4. An ERR bit (bit 7 of PANAR2) reports the success of the operation: 0Success 1Not all INIT and CCE bits are set. Thus no initialization is performed. The initialization command is automatically performed with each reset of the MultiCAN module, but with the exception that all message object registers are reset. Argument: Message Object Number Static Allocate Allocate a given message object to a list. The message object is removed from the list that it currently belongs to and appended to the end of the list. given by PANAR2. This command is also used to deallocate a message object. In this case the target list is the list of unallocated elements. (PANAR2 = 0). 20-52 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Table 20-9 Panel Commands Code PANAR2 PANAR1 Command Description 3 Argument: List Index Result: Bit 7 : ERR Bit 6-0 : undefined Result: Message Object Number Dynamic Allocate Allocate the first message object of the list of unallocated objects to the selected list. The message object is appended to the end of the list. The message number of the message object is returned in PANAR1. An ERR bit (bit 7 of PANAR2) reports the success of the operation: 0Success. 1The operation has not been performed because the list of unallocated elements was empty. 4 Argument: Argument: Static Insert Before Destination Object Source Remove a message object (source object) Number Object from the list that it currently belongs to and Number insert it before a given destination object into the list structure of the destination object. The source object thus becomes the predecessor of the destination object. 5 Argument: Destination Object Number Result: Bit 7 : ERR Bit 6-0 : undefined Result: Object Number of inserted object Dynamic Insert Before Insert a new message object before a given destination object. The new object is taken from the list of unallocated elements (the first element is chosen). The number of the new object is delivered as result to PANAR1. An ERR bit (bit 7 of PANAR2) reports the success of the operation: 0Success. 1The operation has not been performed because the list of unallocated elements was empty. 6 Argument: Static Insert Behind Argument: Remove a message object (source object) Destination Object Source from the list that it currently belongs to and Object Number insert it behind a given destination object into Number the list structure of the destination object. The source object thus becomes the successor of the destination object. User’s Manual MultiCAN, V1.7d3 20-53 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Table 20-9 Panel Commands Code PANAR2 PANAR1 Command Description 7 Result: Object Number of inserted object Dynamic Insert Behind Insert a new message object behind a given destination object. The new object is taken from the list of unallocated elements (the first element is chosen). The number of the new object is delivered as result to PANAR1. Argument: Destination Object Number Result: Bit 7 : ERR Bit 6-0 : undefined An ERR bit (bit 7 of PANAR2) reports the success of the operation: 0Success. 1The operation has not been performed because the list of unallocated elements was empty. 8255 - User’s Manual MultiCAN, V1.7d3 - Reserved 20-54 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.2.3 Module Control Regster The Module Control Register contains basic settings to define the operation of the module. MCR Module Control Register 15 14 13 12 11 (1C8H) 10 9 8 7 Reset Value: 0000H 6 5 MPSEL 0 rw r Field Bits MPSEL [15:12] rw 4 3 2 1 0 Type Description Message Pending Selector MPSEL allows to calculate the bit position of the message pending bit to be set after a message reception/transmission interrupt from a mixture of RXINP,TXINP and MPN (Message Pending Number). With the definitions INP ... RXINP upon message reception, TXINP upon message transmission MPN ... 8 bit message pending number the effective position of the message pending bit is calculated according to the formula POS = ( (INP & MPSEL) << 4 ) | (MPN & (~MPSEL<< 4) ) | ( MPN & = 0x0FH ) If MPSEL = 0 then the position is simply given by the message pending number MPN. If MPSEL = 1111B then the upper 4 bits of the position is given by the interrupt output line pointer INP and the lower 4 bits are taken from MPN. 0 User’s Manual MultiCAN, V1.7d3 [11:0] r reserved; returns ’0’ if read; should be written with ’0’; 20-55 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.2.4 Interrupt Trigger Register ITR The Interrupt Trigger Register ITR allows to trigger interrupt requests on each interrupt output line by software. MITR Module Interrupt Trigger Register 15 14 13 12 11 10 9 (1CCH) 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 IT[15:0] w Field Bits Type Description IT[15:0] [15:0] w User’s Manual MultiCAN, V1.7d3 Interrupt Trigger Writing value 1 to bit n (n = 15-0) generates an interrupt request on interrupt output line n. Writing value 0 has no effect. Reading delivers always 0. More than one interrupt request may be generated at the same time by means of writing 1 to several bit positions of IT with a single write access. 20-56 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.2.5 List Pointer Each CAN node has an own list which defines the message objects that are allocated to the respective node. In addition to that there is the list of all unallocated objects and finally a general purpose user list which is not associated to a CAN node. Each list is assigned a list index according to Table 20-3 “List Indices” on Page 20-14. Each list is terminated with a List Register which defines the first and the last element in the list. LIST0H List Register 0 High LISTyH (y = 1-7) List Register y High 15 14 13 12 11 10 9 (102H) Reset Value: 007FH (102H+y*4) Reset Value: 0100H 8 7 6 5 4 3 0 EMP TY SIZE r rh rh 2 1 0 Field Bits Type Description SIZE [7:0] rh Size of List The number of elements in the list l is given by #elements = SIZE + 1, provided the list is not empty. If the list l is empty, the value of SIZE is zero. EMPTY 8 rh List Empty Indication 0B At least one message object is allocated to list l. 1B No message object is allocated to the list l. 0 [15:9] r Reserved; read as 0; should be written with 0. User’s Manual MultiCAN, V1.7d3 20-57 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller LIST0L List Register 0 Low LISTxL (x = 1-7) List Register x Low 15 14 13 12 11 10 9 (100H) Reset Value: 7F00H (100H+x*4) Reset Value: 0000H 8 7 6 5 4 3 END BEGIN rh rh 2 1 Field Bits Type Description BEGIN [7:0] rh List Begin Pointer to the first message object in the list l. END [15:8] rh END Pointer Pointer to the last message object in the list l. User’s Manual MultiCAN, V1.7d3 20-58 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.2.6 Message Notifications When a message object generates an interrupt request upon the transmission or reception of a message, then the request is routed to the interrupt output line selected by TXINP or RXINP of the message object. As there are more message objects than interrupt output lines, an interrupt routine typically processes requests from more than one message object. Therefore a priority selection mechanism is implemented in the MultiCAN module to select the highest priority object within a collection of message objects.The Message Pending Register contains the interrupt pending. MSPNDkH (k = 0-7) Message Pending Register k High (142H+k*4) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 PND[31:16] rwh Field Bits Type Description PND[31:16] [15:0] rwh Message Pending When a message interrupt occurs then the message object sets a bit in one of the MSPND register, where the bit position is given by the MPN[4:0] field of the IPR register of the message object. The register selection n is given by the higher bits of MPN. The register bits may be cleared by SW (write 0), but writing 1 has no effect. MSPNDkL (k = 0-7) Message Pending Register k Low (140H+k*4) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 PND[15:0] rwh Field Bits Type Description PND[15:0] [15:0] rwh User’s Manual MultiCAN, V1.7d3 Message Pending The same as PND[31:16] 20-59 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Each Message Pending Register has a Message Index Register associated to it. The Message Index Register shows the active (set) pending bit with lowest bit position within groups of pending bits. MSIDk (k = 0-7) Message Index Register k 15 14 13 12 11 (180H+k*4) 10 9 8 7 Reset Value: 0020H 6 5 4 3 2 0 INDEX R rh 1 0 Field Bits Type Description INDEX [5:0] rh Message Pending Index The value of INDEX is given by the bit position i of the pending bit of MSPNDk with the following properties: 1. MSPNDk[i] & IM[i] = 1 2. i = 0 or MSPNDk[i-1:0] & IM[i-1:0] = 0 If no bit of MSPNDk satisfies these conditions then INDEX reads 100000B. Thus INDEX shows the position of the first pending bit of MSPNDk, where only those bits of MSPNDk which are selected in the Message Index Mask Register are taken into account. 0 [15:6] r Reserved: read as 0; should be written with 0. User’s Manual MultiCAN, V1.7d3 20-60 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller The Message Index Mask Register selects individual bits for the calculation of the Message Pending Index. The Message Index Mask Register is used commonly for all Message Pending registers and their associated Message Index registers. MSIMASKH Message Index Mask Register High 15 14 13 12 11 10 9 (1C2H) 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 IM[31:16] rw Field Bits Type Description IM[31:16] [15:0] rw Message Index Mask Only those bits in MSPNDk for which the corresponding Index Mask bits are set contribute to the calculation of the Message Index. MSIMASKL Message Index Mask Register Low 15 14 13 12 11 10 9 (1C0H) 8 7 Reset Value: 0000H 6 5 4 3 2 1 0 IM[15:0] rw Field Bits Type Description IM[15:0] [15:0] rw User’s Manual MultiCAN, V1.7d3 Message Index Mask Only those bits in MSPNDk for which the corresponding Index Mask bits are set contribute to the calculation of the Message Index. 20-61 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.3 CAN Node Specific Registers The CAN node specific registers exist once for each CAN node of the MultiCAN module.They contain information that is directly related to the operation of the CAN nodes and which may not be shared among the nodes. 20.3.3.1 Node Control Register The Node Control Register contains basic settings that define the operation of the CAN node and the interaction of the CAN node with the message objects. NCRx (x = 0-4) Node x Control Register 15 14 13 12 0 r User’s Manual MultiCAN, V1.7d3 11 (200H+x*100H) 10 9 8 7 6 SUS CAL CCE EN M rw rw 20-62 rw Reset Value: 0001H 5 0 r 4 3 2 1 0 CAN LECI ALIE TRIE INIT DIS E rw rw rw rw rwh V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description INIT 0 rwh Node Initialization 0B Resetting bit INIT enables the participation of the node in the CAN traffic. If the CAN node is in the bus off state then the ongoing bus off recovery (which does not depend on the INIT bit) is continued. With the end of the bus off recovery sequence the CAN node is allowed to take part in the CAN traffic. If the CAN node is not in the bus off state a sequence of 11 consecutive recessive bits must be detected before the node is allowed to take part in the CAN traffic. 1B Setting this bit terminates the participation of this node in the CAN traffic. Any ongoing frame transfer is cancelled and the transmit line goes recessive. If the CAN node is in the bus off state then the running bus off recovery sequence is continued. If the INIT bit is still set after the successful completion of the bus off recovery sequence, i.e. after detecting 128 sequences of 11 consecutive recessive bits (11 x 1) then the CAN node leaves the bus off state but remains inactive as long as INIT remains set. Bit INIT is automatically set when the CAN node becomes ‘bus off’ (see Page 20-11). TRIE 1 rw Transfer Interrupt Enable If this bit is set, then an interrupt request is generated upon the successful reception or transmission of a CAN frame. The interrupt output line is selected by TRINP in the CAN Node Interrupt Pointer Register. LECIE 2 rw LEC indicated Error Interrupt Enable If this bit is set, then an interrupt request is generated upon each update of the LEC field in the Node Status Register leading to LEC > 0 (CAN protocol error). The interrupt output line is selected by LECINP in the CAN Node Interrupt Pointer Register. User’s Manual MultiCAN, V1.7d3 20-63 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description ALIE 3 rw Alert Interrupt Enable If this bit is set then an alert interrupt is generated on one of the following events: 1) change of bit BOFF in the CAN Node Status Register. 2) change of bit EWRN in the CAN Node Status Register. 3) List Length Error, which also sets bit LLE in the CAN Node Status Register. 4) List Object Error, which also sets bit LOE in the CAN Node Status Register. 5) Bit INIT has been set by the MultiCAN. The interrupt is requested on the interrupt output line selected by ALINP in the CAN Node Interrupt Pointer Register. CANDIS 4 rw CAN Disable Setting this bit disables the CAN node. The CAN node first waits until it is BUS IDLE or BUS OFF. Then bit INIT is automatically set and an alert interrupt is generated if bit ALIE is set. CCE 6 rw Configuration Change Enable The Bit Timing Register, the Port Control 0B Register and the Error Counter Register may only be read. All attempts to modify them are ignored. The Bit Timing Register, the Port Control 1B Register and the Error Counter Register may be read and written. CALM 7 rw Can Analyze Mode If this bit is set then the CAN node operates in analyze mode. This means that messages may be received, but not transmitted. No acknowledge is sent on the CAN bus upon frame reception. Active error flags are sent recessive instead of dominant. The transmit line is continuously held at recessive (1) level. Bit CALM can be written only while bit INIT is set. User’s Manual MultiCAN, V1.7d3 20-64 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description SUSEN 8 rw Suspend Enable This bit allows to set the CAN node into suspend mode via OCDS (on chip debug support): 0B An OCDS suspend trigger is ignored by the CAN node. 1B An OCDS suspend trigger disables the CAN node: As soon as the CAN node becomes BUS IDLE or BUS OFF bit INIT is internally forced to ‘1’ to disable the CAN node. The actual value of bit INIT remains unchanged. Bit SUSEN is reset via a debug reset. 0 5, [15:9] r Reserved; read as 0; should be written with 0. User’s Manual MultiCAN, V1.7d3 20-65 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.3.2 Node Status Register The Node Status Register reports errors as well as successfully transferred CAN frames. NSRx (x = 0-4) Node x Status Register 15 14 13 12 (204H+x*100H) 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 SUS BOF EWR ALE RXO TXO LOE LLE ACK F N RT K K 0 r rh rwh rwh rh rh rwh rwh rwh 2 1 0 LEC rwh Field Bits Type Description LEC [2:0] rwh Last Error Code The encoding of this bit field is detailed in Table 20-10. TXOK 3 rwh Message Transmitted Successfully No successful transmission since last flag reset. 0B 1B A message has been transmitted successfully (error free and acknowledged by at least another node). TXOK must be reset by software (write 0). Writing 1 has no effect. RXOK 4 rwh Message Received Successfully 0B No successful reception since last flag reset. 1B A message has been received successfully. RXOK must be reset by software (write 0). Writing 1 has no effect. User’s Manual MultiCAN, V1.7d3 20-66 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description ALERT 5 rwh Alert Warning The ALERT bit is set upon the occurrence of one of the following events (the same events which also trigger an alert interrupt if ALIE is set): 1) Change of bit BOFF in the CAN Node Status Register. 2) Change of bit EWRN in the CAN Node Status Register. 3) List Length Error, which also sets bit LLE in the CAN Node Status Register. 4) List Object Error, which also sets bit LOE in the CAN Node Status Register. 5) Bit INIT has been set by the MultiCAN. ALERT must be reset by software (write 0). Writing 1 has no effect. EWRN 6 rh Error Warning Status No warning limit exceeded. 0B 1B One of the error counters REC or TEC reached the warning limit EWRNLVL. BOFF 7 rh Bus-off Status 0B CAN controller is not in the bus-off state. 1B CAN controller is in the bus-off state. LLE 8 rwh List Length Error 0B No list length error since last flag reset. 1B List length error has been detected during message acceptance filtering. The number of elements in the list that belongs to this CAN node differs from the list SIZE given in the list termination pointer. LLE must be reset by software (write 0). Writing 1 has no effect. LOE 9 rwh List Object Error 0B No list object error since last flag reset. 1B List object error has been detected during message acceptance filtering. A message object with wrong LIST index entry in the Message Object Control Register has been detected. LOE must be reset by software (write 0). Writing 1 has no effect. User’s Manual MultiCAN, V1.7d3 20-67 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description SUSACK 10 rh 0 [15:11] r User’s Manual MultiCAN, V1.7d3 Suspend Acknowledge 0B The CAN node is not in suspend mode or a suspend request is pending, but the CAN node has not yet reached BUS IDLE or BUS OFF. 1B The CAN node is in suspend mode: The CAN node is inactive (bit NCR.INIT internally forced to ‘1’) due to an OCDS suspend request. Reserved; read as 0; should be written with 0. 20-68 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Encoding of the LEC Bitfield Table 20-10 Encoding of the LEC Bit Field LEC Value Signification 000B No Error: No error was detected for the last message on the CAN bus. 001B Stuff Error: More than 5 equal bits in a sequence have occurred in a part of a received message where this is not allowed. 010B Form Error: A ‘fixed format part’ of a received frame has the wrong format. 011B Ack Error: The transmitted message was not acknowledged by another node. 100B Bit1 Error: During a message transmission the CAN node tried to send a recessive level (1) outside the arbitration field and the acknowledge slot, but the monitored bus value was dominant. 101B Bit0 Error: Two different conditions are signalled by this code: a) During transmission of a message (or acknowledge bit, active error flag, overload flag) the CAN node tried to send a dominant level (0), but the monitored bus value was recessive. b) During bus-off recovery this code is set each time a sequence of 11 recessive bits has been monitored. The CPU may use this code as indication that the bus is not continuously disturbed. 110B CRC Error: The CRC checksum of the received message was incorrect. 111B CPU write to LEC: Whenever the the CPU writes the value 111 to LEC, it takes the value 111. Whenever the CPU writes another value to LEC, the written LEC value is ignored. User’s Manual MultiCAN, V1.7d3 20-69 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.3.3 Node Interupt Pointer Register The Node Interrupt Pointer Register connects each interrupt request source of the CAN node to one of the up to 16 available interrupt output lines. NIPRx (x = 0-4) Node x Interrupt Pointer Register (208H+x*100H) 15 14 13 12 11 10 9 8 7 Reset Value: 0000H 6 5 4 3 2 1 CFCINP TRINP LECINP ALINP rw rw rw rw 0 Field Bits Type Description ALINP [3:0] rw Alert Interrupt Node Pointer Number of interrupt output line INT_Om (m=0-15) reporting the “Alert Interrupt Request”, if enabled by ALIE = 1. LECINP [7:4] rw Last Error Code Interrupt Node Pointer Number of interrupt output line INT_Om (m=0-15) reporting the “Last Error Interrupt Request”, if enabled by LECIE = 1. TRINP [11:8] rw Transfer OK Interrupt Node Pointer Number of interrupt output line INT_Om (m=0-15) reporting the “Transfer Interrupt Request”, if enabled by TRIE. CFCINP [15:12] rw User’s Manual MultiCAN, V1.7d3 Frame Counter Interrupt Node Pointer Number of interrupt output line INT_Om (m=0-15) reporting the “Frame Counter Overflow Interrupt Request”, if enabled by CFCIE = 1. 20-70 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.3.4 Node Port Control Register The Node Port Control Register configures the CAN bus transmit/receive ports. NPCRx may be written only if bit NCRx.CCE is set. NPCRx (x = 0-4) Node x Port Control Register 15 14 13 12 11 10 (20CH+x*100H) 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 LBM 0 RXSEL r rw r rw 0 Field Bits Type Description RXSEL [2:0] rw Receive Select RXSEL selects one out of 8 possible receive inputs. CAN traffic is performed through the selected input. The other inputs are ignored. See also “Receive Input Selection” Section LBM 8 rw Loop Back Mode 0B Loop back mode is disabled. Loop back mode is enabled. This node is 1B connected to an internal (virtual) loop back CAN bus. All CAN nodes which are in loop back mode are connected to this virtual CAN bus so that they can communicate with each other internally. The external transmit line is forced recessive in loop back mode. 0 [7:3], [15:9] r Reserved; read as 0; should be written with 0. User’s Manual MultiCAN, V1.7d3 20-71 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.3.5 Node Bit Timing Register The Node Bit Timing Register contains all parameters to setup the bit timing for the CAN transfer. NBTRx may be written only if bit NCRx.CCE is set. NBTRxH (x = 0-4) Node x Bit Timing Register High (212H+x*100H) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 1 0 0 FTX r rw Field Bits Type Description FTX 0 rw Fast Transmit (TTC only) When a message is requested for transmission on the CAN bus, then the start of frame (SOF) symbol is sent with the beginning of a new bit time. If the CAN bus is in the idle state and bit FTX is set (FTX = 1) then a new bit time is started immediately with the transmit trigger of a new message. This eliminates the variable delay between the transmit trigger of a message and the actual SOF signal on the transmit output. Such a variable delay occurs when transmit triggers occur at different positions within a CAN bit time. 0 [15:1] r reserved; returns ’0’ if read; should be written with ’0’; NBTRxL (x = 0-4) Node x Bit Timing Register Low (210H+x*100H) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 2 DIV8 TSEG2 TSEG1 SJW BRP rw rw rw rw rw User’s Manual MultiCAN, V1.7d3 20-72 1 0 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description BRP [5:0] rw Baud Rate Prescaler The duration of one time quantum is given by (BRP + 1) clock cycles if DIV8 = 0. The duration of one time quantum is given by 8 × (BRP + 1) clock cycles if DIV8 = 1. SJW [7:6] rw (Re)Synchronization Jump Width (SJW + 1) time quanta are allowed for resynchronization. TSEG1 [11:8] rw Time Segment Before Sample Point (TSEG1 + 1) time quanta is the user defined nominal time between the end of the synchronization segment and the sample point. It includes the propagation segment, which takes into account signal propagation delays. The time segment may be lengthened due to resynchronization. Valid values for TSEG1 are 2 to 15. TSEG2 [14:12] rw Time Segment After Sample Point (TSEG2 + 1) time quanta is the user defined nominal time between the sample point and the start of the next synchronization segment. It may be shortened due to resynchronization. Valid values for TSEG2 are 1 to 7. DIV8 15 Divide Prescaler Clock by 8 0B A time quantum lasts (BRP+1) clock cycles. 1B A time quantum lasts 8 × (BRP+1) clock cycles. rw 20.3.3.6 Node Error Counter Register NECNTxH (x = 0-4) Node x Error Counter Register High(216H+x*100H) 15 14 13 12 0 r User’s Manual MultiCAN, V1.7d3 11 10 9 8 7 LEIN LET C D rh rh 20-73 6 Reset Value: 0060H 5 4 3 2 1 0 EWRNLVL rw V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description EWRNLVL [7:0] rw Error Warning Level Bit field EWRNLVL defines the threshold value (warning level, default 96) to be reached in order to set the corresponding error warning bit EWRN. LETD 8 rh Last Error Transfer Direction 0B The last error occurred while the CAN node was receiver (REC has been incremented). 1B The last error occurred while the CAN node was transmitter (TEC has been incremented). LEINC 9 rh Last Error Increment 0B The last error led to an error counter increment of 1. 1B The last error led to an error counter increment of 8. 0 [15:10] r Reserved; read as 0; should be written with 0. NECNTxL (x = 0-4) Node x Error Counter Register Low(214H+x*100H) 15 14 13 12 11 10 9 8 7 6 Reset Value: 0000H 5 4 3 TEC REC rwh rwh 2 1 0 Field Bits Type Description REC [7:0] rwh Receive Error Counter Bit field REC contains the value of the receive error counter of the CAN node. TEC [15:8] rwh Transmit Error Counter Bit field TEC contains the value of the transmit error counter of the CAN node. User’s Manual MultiCAN, V1.7d3 20-74 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller 20.3.3.7 Node Frame Counter Register The Node Frame Counter Register contains the actual value of the frame counter as well as control and status bits of the frame counter. NFCRxH (x = 0-4) Node x Frame Counter Register High(21AH+x*100H) 15 14 13 12 11 10 9 8 7 5 4 3 2 1 0 CFC CFCI OV E 0 CFMOD CFSEL r rwh r rw rw Field Bits Type Description CFSEL [2:0] rw User’s Manual MultiCAN, V1.7d3 6 Reset Value: 0000H rw 0 CAN Frame Count Selection This bit field selects the function of the frame counter for the chosen frame count mode. Frame Count Mode Bit 0 If Bit 0 of CFSEL is set then CFC is incremented each time a foreign frame (i.e. a frame not matching to a message object) has been received on the CAN bus. Bit 1 If Bit 1 of CFSEL is set then CFC is incremented each time a frame matching to a message object has been received on the CAN bus. Bit 2 If Bit 2 of CFSEL is set then CFC is incremented each time a frame has been transmitted successfully by the node. Time Stamp Mode The frame counter is incremented (internally) with the beginning of a new bit time. Its value is permanently sampled in the CFC field while the bus is idle. The value sampled just before the SOF bit of a new frame is detected is written to the corresponding message object. When the treatment of a message object is finished, the sampling continues. Bit Timing Mode The available bit timing measurement modes are shown in Table 20-11. If CFCIE is set then an interrupt on request node x (where x is the CAN node index) is generated with a CFC update. 20-75 V2.1, 2008-08 XC2300 Derivatives Peripheral Units (Vol. 2 of 2) Controller Area Network (MultiCAN) Controller Field Bits Type Description CFMOD [4:3] rw CAN Frame Counter Mode This bit field defines the operation mode of the frame counter. 00B Frame Count Mode: The frame counter is incremented upon the reception and transmission of frames. 01B Time Stamp Mode: The frame counter is used to count CAN bit times. 10B Bit Timing Mode: The frame counter is used for analysis of the bit timing.1) 11B reserved CFCIE 6 rw CAN Frame Count Interrupt Enable 0B CAN Frame Counter Overflow interrupt request is disabled. 1B CAN Frame Counter Overflow interrupt request is enabled. CFCOV 7 rwh CAN Frame Counter Overflow Flag Flag CFCOV is set upon a frame counter overflow (transition from FFFFH to 0000H). In bit timing analysis mode CFCOV is set upon an update of CFC. An interrupt request is generated if CFCIE = 1. 0B No overflow has occurred since last flag reset. 1B An overflow has occurred since last flag reset. CFCOV must be cleared by software. 0 5, [15:8] r reserved; returns