0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
Z16FMC64AG20EG

Z16FMC64AG20EG

  • 厂商:

    ZILOG(齐洛格)

  • 封装:

    LQFP64_EP

  • 描述:

    MCU 16BIT 64KB FLASH 64-LQFP

  • 数据手册
  • 价格&库存
Z16FMC64AG20EG 数据手册
Motor Control MCUs Z16FMC Series Product Specification PS028706-1013 PRELIMINARY Copyright ©2013 Zilog® Inc. All rights reserved. www.zilog.com Z16FMC Series Motor Control MCUs Product Specification ii Warning: DO NOT USE THIS PRODUCT IN LIFE SUPPORT SYSTEMS. LIFE SUPPORT POLICY ZILOG’S PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE SUPPORT DEVICES OR SYSTEMS WITHOUT THE EXPRESS PRIOR WRITTEN APPROVAL OF THE PRESIDENT AND GENERAL COUNSEL OF ZILOG CORPORATION. As used herein Life support devices or systems are devices which (a) are intended for surgical implant into the body, or (b) support or sustain life and whose failure to perform when properly used in accordance with instructions for use provided in the labeling can be reasonably expected to result in a significant injury to the user. A critical component is any component in a life support device or system whose failure to perform can be reasonably expected to cause the failure of the life support device or system or to affect its safety or effectiveness. Document Disclaimer ©2013 Zilog, Inc. All rights reserved. Information in this publication concerning the devices, applications, or technology described is intended to suggest possible uses and may be superseded. ZILOG, INC. DOES NOT ASSUME LIABILITY FOR OR PROVIDE A REPRESENTATION OF ACCURACY OF THE INFORMATION, DEVICES, OR TECHNOLOGY DESCRIBED IN THIS DOCUMENT. ZILOG ALSO DOES NOT ASSUME LIABILITY FOR INTELLECTUAL PROPERTY INFRINGEMENT RELATED IN ANY MANNER TO USE OF INFORMATION, DEVICES, OR TECHNOLOGY DESCRIBED HEREIN OR OTHERWISE. The information contained within this document has been verified according to the general principles of electrical and mechanical engineering. Z8, Z8 Encore!, ZNEO and Z16FMC are trademarks or registered trademarks of Zilog, Inc. All other product or service names are the property of their respective owners. PS028706-1013 PRELIMINARY Disclaimer Z16FMC Series Motor Control MCUs Product Specification iii Revision History Each instance in the following revision history table reflects a change to this document from its previous version. For more details, refer to the corresponding pages provided in the table. Date Revision Level Description Page Aug. 2013 06 Added the Peripheral Address Map and the Flash Frequency Register sec- 17, 259 tion. Jun 2013 05 Updated the Analog Functions Block Diagram. 215 Jan 2013 04 Corrected the following issues per CR #13234: • Corrected Figure 2, pin 47 from “FAULTY” to “FAULT1” • Corrected Table 1, VREF description to change 10 µF capacitance figure to 1 µF • Modified language in Interrupt Request 0 Register section, 2nd paragraph • Modified language in Table 50, INCAP bit • Modified language in Table 59, INDEN bit • Modified language in PWM Fault Mask Register section, 2nd paragraph. • Corrected RESET value, bits 4 and 3, Table 62 • Correct order of bits in Table 63 • Correct order of bits in Table 64 7, 8, 60, 84, 101, 103, 103, 104, 105 Jun 2011 03 Corrected VCOFF value in Comparator Electrical Characteristics table. 313 Dec 2010 02 Minor corrections to the Zilog Part Numbers table and to the Part Number Suffix Designations map. 323, 324 Nov  2010 01 Original issue. N/A PS028706-1013 PRELIMINARY Revision History Z16FMC Series Motor Control MCUs Product Specification iv Table of Contents Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .iii List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ZNEO CPU Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Z16FMC Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Random Access Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motor Control Peripherals Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-Bit Analog-to-Digital Converter with Programmable Gain Amplifier . . . . . . Analog Comparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operational Amplifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General-Purpose Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Universal Asynchronous Receiver/Transmitter . . . . . . . . . . . . . . . . . . . . . . . . . . Infrared Encoder/Decoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inter-Integrated Circuit Master/Slave Controller . . . . . . . . . . . . . . . . . . . . . . . . . Enhanced Serial Peripheral Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pulse Width Modulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crystal Oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On-Chip Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 Signal and Pin Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Pin Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Pin Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internal Nonvolatile Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internal RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input/Output Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PS028706-0813 PRELIMINARY 12 12 13 14 14 Table of Contents Z16FMC Series Motor Control MCUs Product Specification v Input/Output Memory Precautions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ZNEO CPU Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Endianness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bus Widths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 14 15 15 Peripheral Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Reset and Stop-Mode Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Power-On Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Voltage Brown-Out Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . External Pin Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . External Reset Indicator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . User Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fault Detect Logic Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stop-Mode Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stop-Mode Recovery Using WDT time-out . . . . . . . . . . . . . . . . . . . . . . . . . . . Stop-Mode Recovery Using a GPIO Port Pin Transition . . . . . . . . . . . . . . . . . . Reset Status and Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 34 35 36 37 37 37 37 37 38 38 38 39 Low-Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STOP Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HALT Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Peripheral-Level Power Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Power Control Option Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 40 40 41 41 General-Purpose Input/Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPIO Port Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPIO Alternate Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPIO Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPIO Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A–H Input Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A–H Output Data Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A–H Data Direction Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A–H High Drive Enable Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A–H Alternate Function High and Low Registers . . . . . . . . . . . . . . . . . . . Port A–H Output Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A–H Pull-Up Enable Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 42 43 45 45 45 46 47 47 48 49 50 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification vi Port A–H Stop-Mode Recovery Source Enable Registers . . . . . . . . . . . . . . . . . Port A IRQ MUX1 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A IRQ MUX Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port A IRQ Edge Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port C IRQ MUX Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 52 52 53 53 Interrupt Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Vector Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Master Interrupt Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Vectors and Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Assertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Exception Status Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Last IRQ Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Request 0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Request 1 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupt Request 2 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRQ0 Enable High and Low Bit Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRQ1 Enable High and Low Bit Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IRQ2 Enable High and Low Bit Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 54 56 57 57 57 57 58 58 60 60 62 63 64 66 67 Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reading Timer Count Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer 0–2 High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timer X Reload High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . . Timer 0–2 PWM High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . Timer 0–2 Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 69 70 71 80 80 80 82 83 84 Multi-Channel PWM Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM Option Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM Reload Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM Prescaler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM Period and Count Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PWM Duty Cycle Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 88 89 89 90 90 90 92 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification vii Independent and Complementary PWM Outputs . . . . . . . . . . . . . . . . . . . . . . . 93 Manual Off-state Control of PWM Output Channels . . . . . . . . . . . . . . . . . . . . 93 Deadband Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Minimum PWM Pulse Width Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Synchronization of PWM and ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Synchronized Current-Sense Sample and Hold . . . . . . . . . . . . . . . . . . . . . . . . . 94 PWM Timer and Fault Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Fault Detection and Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 PWM Operation in CPU HALT Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 PWM Operation in CPU STOP Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Observing the State of PWM Output Channels . . . . . . . . . . . . . . . . . . . . . . . . . 96 PWM Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 PWM High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 PWM Reload High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 PWM 0–2 Duty Cycle High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . 98 PWM Control 0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 PWM Control 1 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 PWM Deadband Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 PWM Minimum Pulse Width Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 PWM Fault Mask Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 PWM Fault Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 PWM Fault Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 PWM Input Sample Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 PWM Output Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Current-Sense Sample and Hold Control Registers . . . . . . . . . . . . . . . . . . . . . 107 Watchdog Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Refresh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Time-Out Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Reload Unlock Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Watchdog Timer Reload High and Low Byte Registers . . . . . . . . . . . . . . . . . 109 109 110 110 111 112 112 LIN-UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Format for Standard UART Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmitting Data using the Polled Method . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmitting Data Using Interrupt-Driven Method . . . . . . . . . . . . . . . . . . . . . Receiving Data Using Polled Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 113 115 115 115 116 117 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification viii Receiving Data using the Interrupt-Driven Method . . . . . . . . . . . . . . . . . . . . . Clear To Send Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . External Driver Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Special Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MULTIPROCESSOR (9-Bit) Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN Protocol Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART DMA Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Baud Rate Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Noise Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Transmit Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Receive Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Status 0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Mode Select and Status Register . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Control 0 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Control 1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Address Compare Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LIN-UART Baud Rate High and Low Byte Registers . . . . . . . . . . . . . . . . . . . 118 119 119 120 121 122 126 128 129 130 130 131 132 132 133 133 136 139 140 144 145 Infrared Encoder/Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmitting IrDA Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receiving IrDA Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Infrared Encoder/Decoder Control Register Definitions . . . . . . . . . . . . . . . . . . . . 149 149 149 150 151 152 Enhanced Serial Peripheral Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Master-In/Slave-Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Master-Out/Slave-In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slave Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Register Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparison with Basic SPI Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Clock Phase and Polarity Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 153 155 155 155 155 156 156 156 157 158 158 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification ix Modes of Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPI Protocol Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Baud Rate Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Transmit Data Command Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Mode Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI State Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ESPI Baud Rate High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . 160 163 166 167 168 169 169 170 171 171 173 175 176 178 I2C Master/Slave Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Master/Slave Controller Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparison with MASTER ONLY Mode I2C Controller . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SDA and SCL Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Start and Stop Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software Control of I2C Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Master Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slave Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Control of I2C Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Interrupt Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Baud Rate High and Low Byte Registers . . . . . . . . . . . . . . . . . . . . . . . . . I2C State Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Mode Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Slave Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 180 182 182 183 183 183 185 186 186 194 201 204 204 205 206 208 209 212 213 Analog Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 216 216 216 217 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification x ADC Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Timer0 Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Convert on Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reference Buffer, RBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Internal Voltage Reference Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Control Register 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Data High Byte Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Data Low Bit Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample Settling Time Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample Time Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Clock Prescale Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Max Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Timer0 Capture Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparator and Operational Amplifier Overview . . . . . . . . . . . . . . . . . . . . . . . . . Comparator Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operational Amplifier Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparator Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Comparator and Operational Amplifier Control Register . . . . . . . . . . . . . . . . 218 218 218 218 219 219 219 220 221 221 222 222 223 223 224 225 225 226 226 226 DMA Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Register Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Control Bit Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Watermark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Peripheral Interface signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Buffer Closure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LINKED LIST Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Request Select Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA X Transfer Length Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Destination Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Source Address Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA List Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 228 230 230 232 233 233 234 235 237 240 241 241 244 244 246 247 248 249 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification xi Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Information Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timing Using the Flash Frequency Register . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Read Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Write/Erase Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page Erase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mass Erase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Controller Bypass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Controller Behavior Using the On-Chip Debugger . . . . . . . . . . . . . . . . Flash Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Command Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Sector Protect Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Page Select Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Frequency Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 251 252 252 252 253 253 254 255 255 255 255 256 256 257 257 258 259 Option Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Option Bit Configuration By Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Option Bit Address Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program Memory Address 0000h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program Memory Address 0001h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program Memory Address 0002h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Program Memory Address 0003h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Information Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IPO Trim Registers (Information Area Address 0021h and 0022h) . . . . . . . . ADC Reference Voltage Trim (Information Area Address 0023h) . . . . . . . . . 260 260 260 260 262 263 263 264 264 265 On-Chip Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On-Chip Debug Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Baud Rate Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Auto-Baud Detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Line Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-Bit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Start Bit Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 266 267 267 268 268 269 270 271 272 272 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification xii Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Initialization During Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debug Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DEBUG HALT Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reading and Writing Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reading Memory CRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruction Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On-Chip Debugger Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cyclic Redundancy Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Memory Cyclic Redundancy Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DBG pin used as a GPIO pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receive Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmit Data Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Baud Rate Reload Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Line Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debug Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OCD Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OCD Status Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardware Breakpoint Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trace Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trace Address Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 273 273 274 274 274 275 275 276 277 281 281 281 282 282 282 283 283 284 284 285 286 287 289 290 291 292 293 On-Chip Oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Crystal Oscillator Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator Operation with an External RC Network . . . . . . . . . . . . . . . . . . . . . . . . 294 294 294 295 Internal Precision Oscillator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Oscillator Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System Clock Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clock Selection Following System Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clock Failure Detection and Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PS028706-0813 PRELIMINARY 299 299 299 300 301 Table of Contents Z16FMC Series Motor Control MCUs Product Specification xiii Oscillator Control Register Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Oscillator Control Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Oscillator Divide Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Electrical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Absolute Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On-Chip Peripheral AC and DC Electrical Characteristics . . . . . . . . . . . . . . . . . . AC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . General Purpose I/O Port Input Data Sample Timing . . . . . . . . . . . . . . . . . . . On-Chip Debugger Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPI MASTER Mode Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPI Slave Mode Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 304 305 310 314 315 316 317 318 319 319 Packaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ordering Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Part Number Suffix Designations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Precharacterization Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 322 324 324 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Customer Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 PS028706-0813 PRELIMINARY Table of Contents Z16FMC Series Motor Control MCUs Product Specification xiv List of Figures Figure 1. Figure 2. Figure 3. Figure 4. Figure 5. Figure 6. Figure 7. Figure 8. Figure 9. Figure 10. Figure 11. Figure 12. Figure 13. Figure 14. Figure 15. Figure 16. Figure 17. Figure 18. Figure 19. Figure 20. Figure 21. Figure 22. Figure 23. Figure 24. Figure 25. Figure 26. Figure 27. Figure 28. Figure 29. Figure 30. PS028706-0813 Z16FMC Series Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Z16FMC in the 64-Pin Low-Profile Quad Flat Package (LQFP) . . . . . . . . . 7 Physical Memory Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Endianness of Words and Quads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Alignment of Word and Quad Operations on 16-Bit Memories . . . . . . . . . 16 Power-On Reset Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Voltage Brown-Out Reset Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 GPIO Port Pin Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Interrupt Controller Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Timer Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 PWM Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Edge-Aligned PWM Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Center-Aligned PWM Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 LIN-UART Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 LIN-UART Asynchronous Data Format without Parity . . . . . . . . . . . . . . 115 LIN-UART Asynchronous Data Format with Parity . . . . . . . . . . . . . . . . . 115 LIN-UART Driver Enable Signal Timing (shown with 1 Stop Bit  and Parity) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 LIN-UART Asynchronous MULTIPROCESSOR Mode Data Format . . 121 LIN-UART Receiver Interrupt Service Routine Flow . . . . . . . . . . . . . . . 128 Noise Filter System Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Noise Filter Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Infrared Data Communication System Block Diagram . . . . . . . . . . . . . . 149 Infrared Data Transmission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Infrared Data Reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 ESPI Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 ESPI Timing when PHASE = 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 ESPI Timing when PHASE = 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 SPI Mode (SSMD = 000) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 I2S Mode (SSMD = 010) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 ESPI Configured as an SPI Master in a Single Master, Single Slave  System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 PRELIMINARY List of Figures Z16FMC Series Motor Control MCUs Product Specification xv Figure 31. ESPI Configured as an SPI Master in a Single Master, Multiple Slave  System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 32. ESPI Configured as an SPI Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 33. I2C Controller Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 34. Data Transfer Format: Master Write Transaction with a 7-Bit Address . . Figure 35. Data Transfer Format: Master Write Transaction with 10-Bit Address . . Figure 36. Data Transfer Format: Master Read Transaction with 7-Bit Address . . . . Figure 37. Data Transfer Format: Master Read Transaction with 10-Bit Address . . . Figure 38. Data Transfer Format: Slave Receive Transaction with 7-Bit Address . . . Figure 39. Data Transfer Format: Slave Receive Transaction with 10-Bit Address . . Figure 40. Data Transfer Format: Slave Transmit Transaction with 7-Bit Address . . Figure 41. Data Transfer Format: Slave Transmit Transaction with 10-Bit Address . Figure 42. Analog Functions Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 43. ADC Timing Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 44. ADC Convert Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 45. DMA Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 46. DMA Channel Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 47. Direct DMA Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 48. Linked List Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 49. Flash Memory Arrangement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 50. On-Chip Debugger Block Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 51. Interfacing the Serial Pin with an RS-232 Interface, #1 of 2 . . . . . . . . . . . Figure 52. Interfacing the Serial Pin with an RS-232 Interface, #2 of 2 . . . . . . . . . . . Figure 53. OCD Serial Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 54. Output Driver when Drive High and Open Drain Enabled . . . . . . . . . . . . Figure 55. 9-Bit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 56. Start Bit Flow Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 57. Initialization During Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 58. Recommended 20 MHz Crystal Oscillator Configuration . . . . . . . . . . . . . Figure 59. Connecting the On-Chip Oscillator to an External RC Network . . . . . . . . Figure 60. Typical RC Oscillator Frequency as a Function of External Capacitance Figure 61. Typical Idd Versus System Clock Frequency . . . . . . . . . . . . . . . . . . . . . . Figure 62. Typical HALT Mode Idd Versus System Clock Frequency . . . . . . . . . . . Figure 63. Stop Mode Current Versus Vdd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 64. Port Input Sample Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Figure 65. SPI MASTER Mode Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PS028706-0813 PRELIMINARY 164 166 181 188 189 191 192 196 197 198 199 215 217 218 229 230 236 238 251 267 268 268 269 271 272 272 273 295 296 297 307 308 309 315 317 List of Figures Z16FMC Series Motor Control MCUs Product Specification xvi Figure 66. Figure 67. Figure 68. Figure 69. PS028706-0813 SPI Slave Mode Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART Timing with CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART Timing without CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PRELIMINARY 318 319 320 321 List of Figures Z16FMC Series Motor Control MCUs Product Specification xvii List of Tables Table 1. Table 2. Table 3. Table 4. Table 5. Table 6. Table 7. Table 8. Table 9. Table 10. Table 11. Table 12. Table 13. Table 14. Table 15. Table 16. Table 17. Table 18. Table 19. Table 20. Table 21. Table 22. Table 23. Table 24. Table 25. Table 26. Table 27. Table 28. Table 29. Table 30. Table 31. Table 32. PS028706-0813 Signal Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Pin Characteristics of the Z16FMC Series MCU . . . . . . . . . . . . . . . . . . . . 11 Reserved Memory Map Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ZNEO CPU Control Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Register File Address Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Reset and Stop-Mode Recovery Characteristics and Latency . . . . . . . . . . . 33 System Reset Sources and Resulting Reset Action . . . . . . . . . . . . . . . . . . . 34 Stop-Mode Recovery Sources and Resulting Action . . . . . . . . . . . . . . . . . 38 Reset Status and Control Register (RSTSCR) . . . . . . . . . . . . . . . . . . . . . . . 39 Reset Status Register Values Following Reset . . . . . . . . . . . . . . . . . . . . . . 39 GPIO Port Availability by Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Port Alternate Function Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Port A–H Input Data Registers (PxIN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Port A–H Output Data Registers (PxOUT) . . . . . . . . . . . . . . . . . . . . . . . . . 46 Port A–H Data Direction Registers (PxDD) . . . . . . . . . . . . . . . . . . . . . . . . 47 Port A–H High Drive Enable Registers (PxHDE) . . . . . . . . . . . . . . . . . . . . 47 Port A–H Alternate Function High Registers (PxAFH) . . . . . . . . . . . . . . . 48 Port A–H Alternate Function Low Registers (PxAFL) . . . . . . . . . . . . . . . . 48 Alternate Function Enabling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Port A–H Output Control Registers (PxOC) . . . . . . . . . . . . . . . . . . . . . . . . 49 Port A–H Pull-Up Enable Registers (PxPUE) . . . . . . . . . . . . . . . . . . . . . . . 50 Port A–H Stop-Mode Recovery Source Enable Registers (PxSMRE) . . . . 51 Port A IRQ MUX1 Register (PAIMUX1) . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Port A IRQ MUX Register (PAIMUX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Port A IRQ Edge Register (PAIEDGE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Port C IRQ MUX Register (PCIMUX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Interrupt Vectors in Order of Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Interrupt Vector placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 System Exception Register High (SYSEXCPH) . . . . . . . . . . . . . . . . . . . . . 59 System Exception Register Low (SYSEXCPL) . . . . . . . . . . . . . . . . . . . . . 59 Last IRQ Register (LASTIRQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Interrupt Request 0 Register (IRQ0) and Interrupt Request 0 Set Register (IRQ0SET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 PRELIMINARY List of Tables Z16FMC Series Motor Control MCUs Product Specification xviii Table 33. Table 34. Table 35. Table 36. Table 37. Table 38. Table 39. Table 40. Table 41. Table 42. Table 43. Table 44. Table 45. Table 46. Table 47. Table 48. Table 49. Table 50. Table 51. Table 52. Table 53. Table 54. Table 55. Table 56. Table 57. Table 58. Table 59. Table 60. Table 61. Table 62. Table 63. Table 64. Table 65. PS028706-0813 Interrupt Request 1 Register (IRQ1) and Interrupt Request 1 Set Register (IRQ1SET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Interrupt Request 2 Register (IRQ2) and Interrupt Request 2 Set Register (IRQ2SET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 IRQ0 Enable and Priority Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 IRQ0 Enable High Bit Register (IRQ0ENH) . . . . . . . . . . . . . . . . . . . . . . . 65 IRQ0 Enable Low Bit Register (IRQ0ENL) . . . . . . . . . . . . . . . . . . . . . . . . 65 IRQ1 Enable and Priority Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 IRQ1 Enable High Bit Register (IRQ1ENH) . . . . . . . . . . . . . . . . . . . . . . . 66 IRQ1 Enable Low Bit Register (IRQ1ENL) . . . . . . . . . . . . . . . . . . . . . . . . 67 IRQ2 Enable and Priority Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 IRQ2 Enable High Bit Register (IRQ2ENH) . . . . . . . . . . . . . . . . . . . . . . . 67 IRQ2 Enable Low Bit Register (IRQ2ENL) . . . . . . . . . . . . . . . . . . . . . . . . 68 Timer 0–2 High Byte Register (TxH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Timer 0–2 Low Byte Register (TXL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Timer 0–2 Reload High Byte Register (TxRH) . . . . . . . . . . . . . . . . . . . . . . 82 Timer 0–2 Reload Low Byte Register (TxRL) . . . . . . . . . . . . . . . . . . . . . . 82 Timer 0–2 PWM High Byte Register (TxPWMH) . . . . . . . . . . . . . . . . . . . 83 Timer 0–2 PWM Low Byte Register (TxPWML) . . . . . . . . . . . . . . . . . . . . 83 Timer 0–2 Control 0 Register (TxCTL0) . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Timer 0–2 Control 1 Register (TxCTL1) . . . . . . . . . . . . . . . . . . . . . . . . . . 85 PWM High Byte Register (PWMH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 PWM Low Byte Register (PWML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 PWM Reload High Byte Register (PWMRH) . . . . . . . . . . . . . . . . . . . . . . . 97 PWM Reload Low Byte Register (PWMRL) . . . . . . . . . . . . . . . . . . . . . . . 98 PWM 0–2 H/L Duty Cycle High Byte Register  (PWMHxDH, PWMLxDH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 PWM 0–2 H/L Duty Cycle Low Byte Register (PWMHxDL, PWMLxDL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 PWM Control 0 Register (PWMCTL0) . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 PWM Control 1 Register (PWMCTL1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 PWM Deadband Register (PWMDB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 PWM Minimum Pulse Width Filter (PWMMPF) . . . . . . . . . . . . . . . . . . . 103 PWM Fault Mask Register (PWMFM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 PWM Fault Status Register (PWMFSTAT) . . . . . . . . . . . . . . . . . . . . . . . 104 PWM Fault Control Register (PWMFCTL) . . . . . . . . . . . . . . . . . . . . . . . 105 PWM Input Sample Register (PWMIN) . . . . . . . . . . . . . . . . . . . . . . . . . . 106 PRELIMINARY List of Tables Z16FMC Series Motor Control MCUs Product Specification xix Table 66. Table 67. PWM Output Control Register (PWMOUT) . . . . . . . . . . . . . . . . . . . . . . . Current-Sense Sample and Hold Control Register (CSSHR0  and CSSHR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 68. Watchdog Timer Approximate Time-Out Delays . . . . . . . . . . . . . . . . . . . Table 69. Watchdog Timer Reload High Byte Register (WDTH) . . . . . . . . . . . . . . Table 70. Watchdog Timer Reload Low Byte Register (WDTL) . . . . . . . . . . . . . . . Table 71. LIN-UART Transmit Data Register (UxTXD) . . . . . . . . . . . . . . . . . . . . . Table 72. LIN-UART Receive Data Register (UxRXD) . . . . . . . . . . . . . . . . . . . . . . Table 73. LIN-UART Status 0 Register, Standard UART Mode (UxSTAT0) . . . . . Table 74. LIN-UART Status 0 Register, LIN Mode (UxSTAT0) . . . . . . . . . . . . . . . Table 75. LIN-UART Mode Select and Status Register (UxMDSTAT) . . . . . . . . . . Table 76. MULTIPROCESSOR Mode Status Field (MSEL = 000b) . . . . . . . . . . . . Table 77. Digital Noise Filter Mode Status Field (MSEL = 001B) . . . . . . . . . . . . . . Table 78. LIN Mode Status Field (MSEL = 010b) . . . . . . . . . . . . . . . . . . . . . . . . . . Table 79. Hardware Revision Mode Status Field (MSEL = 111B) . . . . . . . . . . . . . . Table 80. LIN-UART Control 0 Register (UxCTL0) . . . . . . . . . . . . . . . . . . . . . . . . Table 81. Multiprocessor Control Register (UxCTL1 with MSEL = 000b) . . . . . . . Table 82. Noise Filter Control Register (UxCTL1 with MSEL = 001b) . . . . . . . . . . Table 83. LIN Control Register (UxCTL1 with MSEL = 010b) . . . . . . . . . . . . . . . . Table 84. LIN-UART Address Compare Register (UxADDR) . . . . . . . . . . . . . . . . . Table 85. LIN-UART Baud Rate High Byte Register (UxBRH) . . . . . . . . . . . . . . . Table 86. LIN-UART Baud Rate Low Byte Register (UxBRL) . . . . . . . . . . . . . . . . Table 87. LIN-UART Baud Rates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 88. ESPI Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 89. ESPI Clock Phase and Clock Polarity Operation . . . . . . . . . . . . . . . . . . . Table 90. ESPI Tx DMA Descriptor Command Field . . . . . . . . . . . . . . . . . . . . . . . . Table 91. ESPI Tx DMA Descriptor Status field . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 92. ESPI Rx DMA Descriptor Status field . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 93. ESPI Data Register (ESPIDATA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 94. ESPI Transmit Data Command Register (ESPITDCR) . . . . . . . . . . . . . . . Table 95. ESPI Control Register (ESPICTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 96. ESPI Mode Register (ESPIMODE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 97. ESPI Status Register (ESPISTAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 98. ESPI State Register (ESPISTATE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 99. ESPISTATE Values and Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . Table 100. ESPI Baud Rate High Byte Register (ESPIBRH) . . . . . . . . . . . . . . . . . . . PS028706-0813 PRELIMINARY 107 108 110 112 112 133 133 134 135 137 138 138 138 139 139 141 142 143 144 145 145 147 156 158 168 168 169 170 171 171 173 175 176 177 178 List of Tables Z16FMC Series Motor Control MCUs Product Specification xx Table 101. Table 102. Table 103. Table 104. Table 105. Table 106. Table 107. Table 108. Table 109. Table 110. Table 111. Table 112. Table 113. Table 114. Table 115. Table 116. Table 117. Table 118. Table 119. Table 120. Table 121. Table 122. Table 123. Table 124. Table 125. Table 126. Table 127. Table 128. Table 129. Table 130. Table 131. Table 132. Table 133. Table 134. Table 135. Table 136. PS028706-0813 ESPI Baud Rate Low Byte Register (ESPIBRL) . . . . . . . . . . . . . . . . . . . . I2C Master/Slave Controller Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Data Register (I2CDATA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Interrupt Status Register (I2CISTAT) . . . . . . . . . . . . . . . . . . . . . . . . . I2C Control Register (I2CCTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Baud Rate High Byte Register (I2CBRH) . . . . . . . . . . . . . . . . . . . . . I2C Baud Rate Low Byte Register (I2CBRL) . . . . . . . . . . . . . . . . . . . . . . I2C State Register (I2CSTATE), Description when DIAG = 0 . . . . . . . . . I2C State Register (I2CSTATE), Description when DIAG = 1 . . . . . . . . . I2CSTATE_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2CSTATE_L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Mode Register (I2CMODE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Slave Address Register (I2CSLVAD) . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Control Register 0 (ADC0CTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Data High Byte Register (ADC0D_H) . . . . . . . . . . . . . . . . . . . . . . ADC0 Data Low Bit Register (ADC0D_L) . . . . . . . . . . . . . . . . . . . . . . . Sample and Settling Time (ADCSST) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sample Time (ADCST) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Clock Prescale Register (ADCCP) . . . . . . . . . . . . . . . . . . . . . . . . . . ADC0 Max Register (ADC0MAX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Timer0 Capture Register, High Byte (ADCTCAP_H) . . . . . . . . . . ADC Timer0 Capture Register, Low Byte (ADCTCAP_L) . . . . . . . . . . . Comparator and Op Amp Control Register (CMPOPC) . . . . . . . . . . . . . . Linked List Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Priority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Bandwidth Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DMA Request Select Register (DMAxREQSEL) . . . . . . . . . . . . . . . . . . . DMA Control Register A (DMAxCTL)) . . . . . . . . . . . . . . . . . . . . . . . . . . DMA X Transfer Length High Register (DMAxTXLNH) . . . . . . . . . . . . DMA X Transfer Length Low Register (DMAxTXLNL) . . . . . . . . . . . . . DMA Destination Address Register Upper (DMAxDARU) . . . . . . . . . . . DMA Destination Address Register High (DMAxDARH) . . . . . . . . . . . . DMA Destination Address Register Low (DMAxDARL) . . . . . . . . . . . . DMA X Source Address Register Upper (DMAxSARU) . . . . . . . . . . . . . DMA X Source Address Register High (DMAxSARH) . . . . . . . . . . . . . . DMA X Source Address Register Low (DMAxSARL) . . . . . . . . . . . . . . PRELIMINARY 179 182 205 205 206 208 208 209 210 210 212 212 214 219 220 221 221 222 222 223 224 224 226 231 240 241 242 245 246 246 247 247 247 248 248 248 List of Tables Z16FMC Series Motor Control MCUs Product Specification xxi Table 137. Table 138. Table 139. Table 140. Table 141. Table 142. Table 143. Table 144. Table 145. Table 146. Table 147. Table 148. Table 149. Table 150. Table 151. Table 152. Table 153. Table 154. Table 155. Table 156. Table 157. Table 158. Table 159. Table 160. Table 161. Table 162. Table 163. Table 164. Table 165. Table 166. Table 167. Table 168. Table 169. Table 170. Table 171. Table 172. PS028706-0813 DMA X List Address Register Upper (DMAxLARU) . . . . . . . . . . . . . . . DMA X List Address Register High (DMAxLARH) . . . . . . . . . . . . . . . . DMA X List Address Register Low (DMAxLARL) . . . . . . . . . . . . . . . . . Flash Memory Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Memory Sector Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Information Area Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Command Register (FCMD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Status Register (FSTAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Control Register (FCTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Sector Protect Register (FSECT) . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Page Select Register (FPAGE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Flash Frequency Register (FFREQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Option Bit At Program Memory Address 0000h . . . . . . . . . . . . . . . . . . . . Options Bit at Program Memory Address 0001h . . . . . . . . . . . . . . . . . . . Options Bit at Program Memory Address 0002h . . . . . . . . . . . . . . . . . . . Options Bit at Program Memory Address 0003h . . . . . . . . . . . . . . . . . . . IPO Trim 1 (IPOTRIM1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IPO Trim 2 (IPOTRIM2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ADC Reference Voltage Trim (ADCTRIM) . . . . . . . . . . . . . . . . . . . . . . . OCD Baud Rate Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On-Chip Debugger Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receive Data Register (DBGRXD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transmit Data Register (DBGTXD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Baud Rate Reload Register (DBGBR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Line Control Register (DBGLCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Status Register (DBGSTAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Debug Control Register (DBGCTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OCD Control Register (OCDCTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OCD Status Register (OCDSTAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hardware Breakpoint Register (HWBPn) . . . . . . . . . . . . . . . . . . . . . . . . . Trace Control Register (TRACECTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . Trace Address (TRACEADDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recommended Crystal Oscillator Specifications (20 MHz Operation) . . . Oscillator Configuration and Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator Control Register (OSCCTL) . . . . . . . . . . . . . . . . . . . . . . . . . . . Oscillator Divide Register (OSCDIV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . PRELIMINARY 249 249 249 250 250 252 256 256 257 258 258 259 261 262 263 263 264 264 265 270 280 283 284 284 285 286 288 289 290 291 292 293 295 300 302 303 List of Tables Z16FMC Series Motor Control MCUs Product Specification xxii Table 173. Table 174. Table 175. Table 176. Table 177. Table 178. Table 179. Table 180. Table 181. Table 182. Table 183. Table 184. Table 185. Table 186. Table 187. Table 188. Table 189. Table 190. Table 191. PS028706-0813 Absolute Maximum Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . POR and VBO Electrical Characteristics and Timing . . . . . . . . . . . . . . . . Reset and Stop-Mode Recovery Pin Timing . . . . . . . . . . . . . . . . . . . . . . . Flash Memory Electrical Characteristics and Timing . . . . . . . . . . . . . . . . Watchdog Timer Electrical Characteristics and Timing . . . . . . . . . . . . . . ADC Electrical Characteristics and Timing . . . . . . . . . . . . . . . . . . . . . . . Comparator Electrical Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operational Amplifier Electrical Characteristics . . . . . . . . . . . . . . . . . . . . AC Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPIO Port Input Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . On-Chip Debugger Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPI MASTER Mode Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SPI Slave Mode Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART Timing with CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . UART Timing without CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Z16FMC Series Part Selection Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zilog Part Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PRELIMINARY 304 305 310 310 311 311 312 313 313 314 316 316 317 318 319 320 321 322 323 List of Tables Z16FMC Series Motor Control MCUs Product Specification 1 Introduction Zilog’s Z16FMC Series of products is optimized for motor control applications. The Z16FMC is a 16-bit microcontroller with a ZNEO CPU and is the most powerful member of Zilog’s Motor Control Family of MCUs. Features The Z16FMC Series of products includes the following features: • 20 MHz ZNEO CPU • 128 KB internal Flash memory with 16-bit access and In-Circuit Programming (ICP) • 4 KB internal RAM with 16-bit access • 12-channel, 10-bit Analog-to-Digital Converter (ADC) • Operational Amplifier • Analog Comparator • 4-channel Direct Memory Access (DMA) Controller • Two full-duplex 9-bit Universal Asynchronous Receiver/Transmitters (UARTs) with support for Local Interconnect Network (LIN) and Infrared Data Association (IrDA) • Internal Precision Oscillator (IPO) • Inter-Integrated Circuit (I2C) master/slave controller • Enhanced Serial Peripheral Interface (ESPI) • 12-bit Pulse Width Modulation (PWM) module with three complementary pairs or six independent PWM outputs with deadband generation and fault trip input • Three standard 16-bit timers with Capture, Compare and PWM capability • Watchdog Timer (WDT) with internal RC oscillator • 46 General-Purpose Input/Output (GPIO) pins • 24 interrupts with programmable priority • On-Chip Debugger (OCD) • Voltage Brown-Out (VBO) protection • Power-On Reset (POR) • 2.7 V to 3.6 V operating voltage with 5 V-tolerant inputs • 0°C to +70°C standard temperature and –40°C to +105°C extended temperature operating ranges PS028706-0813 PRELIMINARY Introduction Z16FMC Series Motor Control MCUs Product Specification 2 Block Diagram Figure 1 displays the architecture of the Z16FMC Series. On-Chip Debugger Oscillators (XTAL, IPO) ZNEO CPU POR/VBO and Reset Controller Interrupt Controller System Clock WDT with RC Oscillator Memory Buses Timers (3) UARTs (2) I2C ESPI Analog DMA Flash Controller RAM Controller Flash Memory RAM PWM IrDA GPIO Figure 1. Z16FMC Series Block Diagram ZNEO CPU Features Zilog’s Z16FMC Series is powered by the ZNEO CPU, which meets the continuing demand for faster and more code-efficient microcontrollers. The ZNEO CPU features: • 8-bit, 16-bit and 32-bit ALU operations • 24-bit stack with overflow protection • Direct register-to-register architecture allows each memory address to function as an accumulator to improve execution time and decreases the required program memory PS028706-0813 PRELIMINARY Block Diagram Z16FMC Series Motor Control MCUs Product Specification 3 • New instructions improve execution efficiency for code developed using higher-level programming languages, including the C language • Pipelined instructions: Fetch, Decode and Execute For more information about the ZNEO CPU, refer to the ZNEO CPU Core User Manual (UM0188), available free for download from the Zilog website. Flash Z16FMC Controller The Z16FMC products contain up to 128 KB of internal Flash memory. The Flash controller programs and erases Flash memory. The ZNEO CPU simultaneously accesses 16 bits of internal Flash memory to improve the processor throughput. A sector protection scheme allows flexible protection of user code. Random Access Memory An internal RAM of 4 KB provides storage space for data, variables and stack operations. Like Flash memory, the ZNEO CPU simultaneously accesses 16 bits of internal RAM to improve processor performance. Motor Control Peripherals Overview Zilog’s Z16FMC Series motor control peripherals are briefly described in this section. 10-Bit Analog-to-Digital Converter with Programmable Gain Amplifier The ADC converts an analog input signal to a 10-bit binary number. The ADC accepts inputs from 12 different analog input sources. Analog Comparator It features an on-chip analog comparator with external input pins. Operational Amplifier It features a two-input, one-output operational amplifier. General-Purpose Input/Output The Z16FMC Series MCU features 46 GPIO pins. Each pin is individually programmable. PS028706-0813 PRELIMINARY Motor Control Peripherals Overview Z16FMC Series Motor Control MCUs Product Specification 4 Universal Asynchronous Receiver/Transmitter The Z16FMC MCU contains two fully-featured UARTs with LIN protocol support. UART communication is full-duplex and capable of handling asynchronous data transfers. These UARTs support 8-bit and 9-bit data modes, selectable parity and an efficient bus transceiver driver enable signal for controlling a multi-transceiver bus, such as RS-485. Infrared Encoder/Decoders Z16FMC Series products contain two fully-functional, high-performance UARTs to Infrared Encoder/Decoders (Endecs). The infrared endec is integrated with an on-chip UART to allow easy communication between the Z16FMC device and IrDA physical layer specification Version 1.3-compliant infrared transceivers. Infrared communication provides secure, reliable, low-cost and point-to-point communication between PCs, PDAs, cell phones, printers and other infrared enabled devices. Inter-Integrated Circuit Master/Slave Controller The I2C controller makes the Z16FMC Series MCU compatible with the I2C protocol. It consists of two bidirectional bus lines, a serial data (SDA) line and a serial clock (SCL) line. The I2C operates as a Master and/or Slave and supports multi-master bus arbitration. Enhanced Serial Peripheral Interface The ESPI allows the data exchange between the Z16FMC MCU and other peripheral devices such as electrically erasable programmable read-only memory (EEPROMs), ADCs and integrated service digital network (ISDN) devices. The SPI is a full-duplex, synchronous, character-oriented channel which supports a four-wire interface. DMA Controller The Z16FMC Series MCU features a 4-channel DMA for efficient transfer of data between peripherals and/or memories. Pulse Width Modulator The Z16FMC Series MCU features a flexible PWM module with three complementary pairs or six independent PWM outputs supporting deadband operation and fault protection trip input. These features provide multiphase control capability for a variety of motor types and ensure safe operation of the motor by providing immediate shutdown of the PWM pins during Fault condition. PS028706-0813 PRELIMINARY Motor Control Peripherals Overview Z16FMC Series Motor Control MCUs Product Specification 5 Standard Timers Three 16-bit reloadable timers are used for timing/counting events and PWM signal generation. These timers provide a 16-bit programmable reload counter and operate in ONESHOT, CONTINUOUS, GATED, CAPTURE, COMPARE, CAPTURE and COMPARE and PWM modes. The PWM function provides two complementary output signals with programmable dead-time insertion. Interrupt Controller The Z16FMC Series products support three levels of programmable interrupt priority. The interrupt sources include internal peripherals, GPIO pins and system fault detection. Crystal Oscillator The on-chip crystal oscillator features programmable gain to support crystals and ceramic resonators from 32 kHz to 20 MHz. The oscillator is also used with external RC networks or clock drivers. Reset Controller The Z16FMC Series MCU is reset using the RESET pin, POR, WDT, Stop-Mode Recovery, or VBO warning signal. The bidirectional RESET pin also provides a system RESET output indicator. On-Chip Debugger The Z16FMC Series MCU features an integrated OCD. The OCD provides a rich-set of debugging capabilities, such as reading and writing memory, programming the Flash, setting breakpoints and executing code. A single-pin interface provides communication to the OCD. PS028706-0813 PRELIMINARY Motor Control Peripherals Overview Z16FMC Series Motor Control MCUs Product Specification 6 Signal and Pin Descriptions The Z16FMC Series MCU products are available in a 64 pin LQFP package. This chapter describes the signals and pin configuration for the LQFP package style. For more information about the physical package specification, see the Packaging chapter on page 318. Pin Configuration Figure 2 displays the configuration of the LQFP package. For a description of each signal, see Table 1 on page 8. PS028706-0813 PRELIMINARY Signal and Pin Descriptions Z16FMC Series Motor Control MCUs Product Specification PA1/T0OUT PA2/DE0/FAULT1 PA3/CTS0/FAULT0 VSS VDD PF7 PC5/MISO PD3/DE1 PD4/RXD1 PD5/TXD1 PC4/MOSI VDD VSS PA4/RXD0 PA5/TXD0 PA6/SCL 7 40 48 49 25 56 64 1 33 32 8 17 16 PA7/SDA PD6/CTS1 PC3/SCK PD7/PWML2 VSS PE5 PE6 PE7 VDD PG3 VDD PC7/T2OUT/PWML0 PC6/T2IN/T2OUT/PWMH0 DBG PC1/T1OUT/COMPOUT PC0/T1IN/T1OUT/CINN VSS AVDD PH0/ANA8 PH1/ANA9 PB0/ANA0/T0IN0 PB1/ANA1/T0IN1 PB4/ANA4 PB5/ANA5 PB6/ANA6/OPINP/CINN PB7/ANA7/OPINN PB3/ANA3/OPOUT PB2/ANA2/T0IN2 PH2/ANA10 PH3/ANA11/CPINP VREF AVSS PA0/T0IN/T0OUT PD2/PWMH2 PC2/SS RESET VDD PE4 PE3 VSS PE2 PE1 PE0 VSS PD1/PWML1 PD0/PWMH1 XOUT XIN Figure 2. Z16FMC in the 64-Pin Low-Profile Quad Flat Package (LQFP) PS028706-0813 PRELIMINARY Pin Configuration Z16FMC Series Motor Control MCUs Product Specification 8 Signal Descriptions Table 1 describes the Z16FMC Series MCU signals. To determine the signals available for the LQFP package, see the Pin Configuration chapter on page 6. Most of the signals described in Table 1 are multiplexed with GPIO pins. These signals are available as alternate functions on the GPIO pins. For more details about GPIO alternate functions, see the General-Purpose Input/Output chapter on page 42. Table 1. Signal Descriptions Signal Mnemonic I/O Description General-Purpose Input/Output Ports A–H PA[7:0] I/O Port A[7:0]. These pins are used for GPIO. PB[7:0] I/O Port B[7:0]. These pins are used for GPIO. PC[7:0] I/O Port C[7:0]. These pins are used for GPIO. PD[7:0] I/O Port D[7:0]. These pins are used for GPIO. PE[7:0] I/O Port E[7:0]. These pins are used for GPIO. PF[7] I/O Port F[7]. This pin is used for GPIO. PG[3] I/O Port G[3]. This pin is used for GPIO. PH[3:0] I/O Port H[3:0]. These pins are used for GPIO. Inter-Integrated Circuit Controller SCL I/O Serial clock. An input or an output clock for the I2C. When the GPIO pin is configured for alternate function to enable the SCL function, this pin is open-drain. SDA I/O Serial data. This open-drain pin transfers data between the I2C and a slave. When the GPIO pin is configured for alternate function to enable the SDA function, this pin is open-drain. Enhanced Serial Peripheral Interface Controller SS I/O Slave select. This signal is an output or an input. If the Z16FMC MCU is the SPI master, this pin is configured as the slave select output. If the Z16FMC Series MCU is the SPI slave, this pin is an input slave select. SCK I/O SPI serial clock. The SPI master supplies this pin. If the Z16FMC device is the SPI master, this pin is an output. If the Z16FMC device is the SPI slave, this pin is an input. MOSI I/O Master-Out/Slave-In. This signal is the data output from the SPI master device and the data input to the SPI slave device. MISO I/O Master-In/Slave-Out. This pin is the data input to the SPI master device and the data output from the SPI slave device. PS028706-0813 PRELIMINARY Signal Descriptions Z16FMC Series Motor Control MCUs Product Specification 9 Table 1. Signal Descriptions (Continued) Signal Mnemonic I/O Description TXD0 O Transmit data. These signals transmit outputs from the UARTs. RXD0 I Receive data. These signals receives inputs for the UARTs and IrDAs. CTS0 I Clear to Send. These signals are control inputs for the UARTs. DE0 O Driver enable (DE). This signal allows automatic control of external RS-485 driver. This signal is approximately the inverse of the Transmit Empty (TXE) bit in the UART Status 0 Register. The DE signal is used to ensure an external RS-485 driver is enabled when data is transmitted by the UARTs. T0OUT/T0OUT T1OUT/T1OUT T2OUT/T2OUT O General-purpose timer outputs. These signals are output pins from the timers. T0IN/T0IN1/T0IN2 /T1IN/T2IN I General-purpose timer inputs. These signals are used as the capture, gating and counter inputs. UART Controllers General-Purpose Timers Pulse-Width Modulator for Motor Control PWMH0/PWMH1/  PWMH2 O PWM High output. PWML0/PWML1/  PWML2 O PWM Low output. FAULT0/FAULT1 I PWM Fault condition input. FAULT0 and FAULT1 are active Low. ANA[11:0] I Analog input. These signals are inputs to the ADC. VREF I ADC reference voltage input or internal reference output.  Caution: The VREF pin must be capacitively coupled to analog ground, if the internal voltage reference is selected as the ADC reference voltage. A 1 µF capacitor is recommended. CINP I Comparator positive input. CINN I Comparator negative input. COMPOUT O Comparator output OPINP I Operational amplifier positive input OPINN I Operational amplifier negative input OPOUT O Operational amplifier output Analog PS028706-0813 PRELIMINARY Signal Descriptions Z16FMC Series Motor Control MCUs Product Specification 10 Table 1. Signal Descriptions (Continued) Signal Mnemonic I/O Description Oscillators XIN I External crystal input. The input pin to the crystal oscillator. A crystal is connected between it and the XOUT pin to form the oscillator. In addition, this pin is used with external RC networks or external clock drivers to provide the system clock to the system. XOUT O External crystal output. This pin is the output of crystal oscillator. A crystal is connected between it and the XIN pin to form the oscillator. This pin must be left unconnected when not using a crystal. I/O Debug. This pin is the control and data input and output to and from the OCD. On-Chip Debugger DBG Caution: For operation of the OCD, all power pins (VDD and AVDD) must be supplied with power and all ground pins (VSS and AVSS) must be grounded. This pin is open-drain and must have an external pull-up resistor to ensure proper operation. Reset RESET I/O RESET. Bidirectional RESET signals generates a Reset when asserted (driven Low) and drives a Low output when the Z16FMC MCU is in Reset. Power Supply VDD I Power supply AVDD I Analog power supply VSS I Ground AVSS I Analog ground PS028706-0813 PRELIMINARY Signal Descriptions Z16FMC Series Motor Control MCUs Product Specification 11 Pin Characteristics Table 2 lists information about the characteristics of each pin available on Z16FMC Series products. Data is sorted alphabetically by pin symbol mnemonic. Table 2. Pin Characteristics of the Z16FMC Series MCU Internal Symbol Reset Active Tri–State Pull-Up or Mnemonic Direction Direction Low/High Output Pull-Down Schmitt Trigger Input Open Drain Output AVDD N/A N/A N/A N/A No No N/A AVSS N/A N/A N/A N/A No No N/A DBG I/O I N/A Yes Pull-up Yes Yes PA[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PB[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PC[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PD[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PE[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PF[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PG[7:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable PH[3:0] I/O I N/A Yes Pull-up, Yes Programmable Yes, Programmable RESET I/O I Low N/A Pull-up Yes Yes VREF I/O I N/A Yes N/A No No VDD N/A N/A N/A N/A No No N/A VSS N/A N/A N/A N/A No No N/A XIN I I N/A N/A No No N/A XOUT O O N/A N/A No No No Note: X represents integers 0, 1,... to indicate multiple pins with symbol mnemonics which differ only by an integer. PS028706-0813 PRELIMINARY Pin Characteristics Z16FMC Series Motor Control MCUs Product Specification 12 Address Space The ZNEO CPU offers a unique architecture with a single, unified 24-bit address space. It supports up to three memory areas: • Internal nonvolatile memory (Flash, EEPROM, EPROM, or ROM). • Internal RAM. • Internal I/O memory (internal peripherals). The ZNEO CPU supports three different data widths: • Byte (8-bit) • Word (16-bit) • Quad (32-bit) The ZNEO CPU accesses memories of differing bus width: • 8-bit-wide memories • 16-bit-wide memories Memory Map A memory map of the ZNEO, including the location of internal nonvolatile memory, internal RAM and internal I/O memory, is illustrated in Figure 3. PS028706-0813 PRELIMINARY Address Space Z16FMC Series Motor Control MCUs Product Specification 13 Internal I/O Memory FF_FFFFh – Top of I/O Memory FF_E000h – Bottom of I/O Memory FF_DFFFh Reserved Internal RAM FF_C000h FF_BFFFh – Top of Internal RAM XX_XXXXH – Bottom of Internal RAM (device specific) Reserved Internal Nonvolatile Memory XX_XXXXH – Top of Internal Nonvolatile Memory (device specific) 00_0000h – Bottom of Internal Nonvolatile Memory Figure 3. Physical Memory Map To determine the amount of internal RAM and internal nonvolatile memory available for the specific device, see the Ordering Information section on page 322. Internal Nonvolatile Memory Internal nonvolatile memory contains executable program code, constants and data. For each product within the ZNEO family, a memory block beginning at address 00_0000h is reserved for user option bits and system vectors (for example, RESET, Trap, Interrupts and System Exceptions, etc.). Table 3 provides an example of a reserved memory map for a ZNEO product with 24 interrupt vectors. PS028706-0813 PRELIMINARY Internal Nonvolatile Memory Z16FMC Series Motor Control MCUs Product Specification 14 Table 3. Reserved Memory Map Example Memory Address (Hex) Description 00_0000–00_0003 Option bits 00_0004–00_0007 RESET vector 00_0008–00_000B System exception vector 00_000C–00_000F Privileged trap vector 00_0010–00_006F Interrupt vectors Internal RAM Internal RAM is mainly employed for data and stacks. However, internal RAM also contains program code for execution. Most ZNEO devices contain some internal RAM. The top (highest address) of internal RAM is always located at address FF_BFFFh. The bottom (lowest address) of internal RAM is a function of the amount of internal RAM available. To determine the amount of internal RAM available, see the Ordering Information section on page 322. Input/Output Memory The ZNEO supports 8 KB (8,192 bytes) of I/O memory space located at addresses FF_E000h through FF_FFFFh. The I/O memory addresses are reserved for control of the ZNEO, the on-chip peripherals and the I/O ports. Refer to the device-specific product specification for descriptions of the peripheral and I/O control registers. Attempts to read or execute from unavailable I/O memory addresses returns FFh. Attempts to write to unavailable I/O memory addresses produce no effect. Input/Output Memory Precautions Some control registers within the I/O memory provide read-only or write-only access. When accessing these read-only or write-only registers, ensure that the instructions do not attempt to read from a write-only register, or conversely write to a read-only register. ZNEO CPU Control Registers Some control registers are reserved in 8 KB of I/O memory for the ZNEO control. These registers are listed in Table 4. For detailed information about the operation of the ZNEO control registers, refer to the ZNEO CPU Core User Manual (UM0188), available free for download from the Zilog website. PS028706-0813 PRELIMINARY Internal RAM Z16FMC Series Motor Control MCUs Product Specification 15 Table 4. ZNEO CPU Control Registers Address (Hex) Register Description Register Mnemonic FF_E004-FF_E007 Program counter overflow PCOV FF_E00C-FF_E00F Stack pointer overflow SPOV FF_E010 Flags FLAGS FF_E012 CPU control CPUCTL Endianness The ZNEO CPU accesses data in big endian order, i.e., the address of a multi-byte word or quad points to the most significant byte. Figure 4 displays the Endianness of the CPU. Address of Word LSB 00_0081h MSB 00_0080h LSB 00_0083h 00_0082h 00_0081h Address of Quad MSB 00_0080h Figure 4. Endianness of Words and Quads Bus Widths The ZNEO CPU accesses 8-bit or 16-bit memories. The data buses of the internal nonvolatile memory and internal RAM are 16-bit wide. The internal peripherals are a mix of 8-bit and 16-bit peripherals. PS028706-0813 PRELIMINARY Endianness Z16FMC Series Motor Control MCUs Product Specification 16 If a Word or Quad operation occurs on a 16-bit wide memory, the number of memory accesses depends on the alignment of the address. If the address is aligned on an even boundary, a Word operation takes one memory access and a Quad operation takes two memory accesses. If the address is on an odd boundary (unaligned), a Word operation takes two memory accesses and a Quad operation takes three memory accesses. Figure 5 displays the alignment Word and Quad operations on 16-bit memories. 000082h 000080h MSB LSB 000081h Aligned Word Access LSB 000080h MSB 000083h MSB 000080h 000081h Unaligned Word Access 000084h 000082h LSB 000083h 000082h 000081h 000080h Aligned Quad Access LSB 000085h 000083h MSB 000081h Unaligned Quad Access Figure 5. Alignment of Word and Quad Operations on 16-Bit Memories PS028706-0813 PRELIMINARY Bus Widths Z16FMC Series Motor Control MCUs Product Specification 17 Peripheral Address Map Table 5 provides the address map for the peripheral space of the Z16FMC Series of products. Not all devices and package styles in the Z16FMC Series support all peripherals or all GPIO ports. Registers for unimplemented peripherals are considered reserved. Table 5. Register File Address Map Address (Hex) Register Description Mnemonic Reset (Hex) Page CPU Base Address = FF_E000 FF_E004–FF_E007 Program Counter Overflow PCOV 00FFFFFF FF_E00C–FF_E00F Stack Pointer Overflow SPOV 00000000 FF_E010 Flags FLAGS XX FF_E012 CPU Control CPUCTL 00 See the ZNEO CPU Core User Manual Trace Address = FF_E014 FF_E013 Trace Control TRACECTL 00 292 FF_E014–FF_E017 Trace Address TRACEADDR XXXXXXXX 293 Interrupt Controller Base Address = FF_E020 FF_E020 System Exception Status High SYSEXCPH 0000 58 FF_E021 System Exception Status Low SYSEXCPL 0000 58 FF_E022 Reserved – XX – FF_E023 Last IRQ Register LASTIRQ 02 60 FF_E024–FF_E02F Reserved – – – FF_E030 Interrupt Request 0 IRQ0 00 60 FF_E031 Interrupt Request 0 Set IRQ0SET xx 60 FF_E032 IRQ0 Enable High Bit IRQ0ENH 00 64 FF_E033 IRQ0 Enable Low Bit IRQ0ENL 00 64 FF_E034 Interrupt Request 1 IRQ1 00 62 FF_E035 Interrupt Request 1Set IRQ1SET XX 62 FF_E036 IRQ1 Enable High Bit IRQ1ENH 00 66 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 18 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page Interrupt Controller Base Address = FF_E020 (cont’d.) FF_E037 IRQ1 Enable Low Bit IRQ1ENL 00 66 FF_E038 Interrupt Request 2 IRQ2 00 63 FF_E039 Interrupt Request 2 Set IRQ2SET xx 63 FF_E03A IRQ2 Enable High Bit IRQ2ENH 00 67 FF_E03B IRQ2 Enable Low Bit IRQ2ENL 00 67 FF_E03C–FF_E03F Reserved – XX – Watchdog Timer Base Address = FF_E040 FF_E040–FF_E041 Reserved – – – FF_E042 Watchdog Timer Reload High Byte WDTH 04 112 FF_E043 Watchdog Timer Reload Low Byte WDTL 00 112 FF_E044–FF_E04F Reserved – – – Reset Base Address = FF_E050 FF_E050 Reset Status and Control Register RSTSCR XX 39 FF_E051–FF_E06F Reserved – XX – Flash Controller Base Address = FF_E060 FF_E060 Flash Command Register FCMD XX 256 FF_E060 Flash Status Register FSTAT 00 256 FF_E061 Flash Control Register FCTL 00 257 FF_E062 Flash Sector Protect Register FSECT 00 258 FF_E063 Reserved – XX – FF_E064–FF_E065 Flash Page Select Register FPAGE 0000 258 FFREQ 0000 259 FF_E066–FF_E067h Flash Frequency Register Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 19 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page On Chip Debugger = FF_E080 FF_E080 Debug Receive Data DBGRXD XX 283 On Chip Debugger = FF_E080 (cont’d.) FF_E081 Debug Transmit Data DBGTXD XX 284 FF_E082–FF_E083 Debug Baud Rate DBGBR XXXX 284 FF_E084 Debug Line Control DBGLCR XX 285 FF_E085 Debug Status DBGSTAT XX 286 FF_E086 Debug Control DBGCTL XX 288 Hardware Breakpoints = FF_E090 FF_E090–FF_E093 Hardware Breakpoint HWBP0 0 00000000 291 FF_E094–FF_E097 Hardware Breakpoint HWBP1 1 00000000 291 FF_E098–FF_E09B Hardware Breakpoint HWBP2 2 00000000 291 FF_E09C–FF_E09F Hardware Breakpoint HWBP3 3 00000000 291 Oscillator Control Base Address = FF_E0A0 FF_E0A0 Oscillator Control OSCCTL A0 302 FF_E0A1 Oscillator Divide OSCDIV 00 303 GPIO Base Address = FF_E100 GPIO Port A Base Address = FF_E100 FF_E100 Port A Input Data PAIN XX 46 FF_E101 Port A Output Data PAOUT 00 46 FF_E102 Port A Data Direction PADD 00 47 FF_E103 Port A High Drive Enable PAHDE 00 47 FF_E104 Port A Alternate Function High PAAFH 00 48 FF_E105 Port A Alternate Function Low PAAFL 00 48 FF_E106 Port A Output Control PAOC 00 49 FF_E107 Port A Pull-Up Enable PAPUE 00 50 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 20 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page GPIO Port A Base Address = FF_E100 (cont’d.) FF_E108 Port A Stop-Mode Recovery Enable PASMRE 00 51 FF_E109–FF_E10B Port A Reserved – – – FF_E10C Port A IRQ MUX1 PAIMUX1 00 52 FF_E10D Port A Reserved – – – FF_E10E Port A IRQ MUX PAIMUX 00 52 FF_E10F Port A Irq Edge PAIEDGE 00 53 GPIO Port B Base Address = FF_E110 FF_E110 Port B Input Data PBIN XX 46 FF_E111 Port B Output Data PBOUT 00 46 FF_E112 Port B Data Direction PBDD 00 47 FF_E113 Port B High Drive Enable PBHDE 00 47 FF_E114 Reserved – – – FF_E115 Port B Alternate Function Low PBAFL 00 48 FF_E116 Port B Output Control PBOC 00 49 FF_E117 Port B Pull-Up Enable PBPUE 00 50 FF_E118 Port B Stop-Mode Recovery Enable PBSMRE 00 51 FF_E119–FF_E11F Port B Reserved – – – GPIO Port C Base Address = FF_E120 FF_E120 Port C Input Data PCIN XX 46 FF_E121 Port C Output Data PCOUT 00 46 FF_E122 Port C Data Direction PCDD 00 47 FF_E123 Port C High Drive Enable PCHDE 00 47 FF_E124 Port C Alternate Function High PCAFH 00 48 FF_E125 Port C Alternate Function Low PCAFL 00 49 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 21 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page GPIO Port C Base Address = FF_E120 (cont’d.) FF_E126 Port C Output Control PCOC 00 49 FF_E127 Port C Pull-Up Enable PCPUE 00 50 FF_E128 Port C Stop-Mode Recovery Enable PCSMRE 00 51 FF_E129–FF_E12D Port C Reserved – – – FF_E12E Port C IRQ MUX PCIMUX 00 53 FF_E12F Port C Reserved – – – GPIO Port D Base Address = FF_E130 FF_E130 Port D Input Data PDIN XX 46 FF_E131 Port D Output Data PDOUT 00 46 FF_E132 Port D Data Direction PDDD 00 47 FF_E133 Port D High Drive Enable PDHDE 00 47 FF_E134 Port D Alternate Function High PDAFH 00 48 FF_E135 Port D Alternate Function Low PDAFL 00 49 FF_E136 Port D Output Control PDOC 00 49 FF_E137 Port D Pull-Up Enable PDPUE 00 50 FF_E138 Port D Stop-Mode Recovery Enable PDSMRE 00 51 FF_E139–FF_E13F Port D Reserved – – – GPIO Port E Base Address = FF_E140 FF_E140 Port E Input Data PEIN XX 46 FF_E141 Port E Output Data PEOUT 00 46 FF_E142 Port E Data Direction PEDD 00 47 FF_E143 Port E High Drive Enable PEHDE 00 47 FF_E144 Reserved – – – FF_E145 Reserved – – – FF_E146 Port E Output Control PEOC 00 49 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 22 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page GPIO Port E Base Address = FF_E140 (cont’d.) FF_E147 Port E Pull-Up Enable PEPUE 00 50 FF_E148 Port E Stop-Mode Recovery Enable PESMRE 00 51 FF_E149–FF_E14F Port E Reserved – – – GPIO Port F Base Address = FF_E150 FF_E150 Port F Input Data PFIN XX 46 FF_E151 Port F Output Data PFOUT 00 46 FF_E152 Port F Data Direction PFDD 00 47 FF_E153 Port F High Drive Enable PFHDE 00 47 FF_E154 Reserved – – – FF_E155 Port F Alternate Function Low PFAFL 00 49 FF_E156 Port F Output Control PFOC 00 49 FF_E157 Port F Pull-Up Enable PFPUE 00 50 FF_E158 Port F Stop-Mode Recovery Enable PFSMRE 00 51 FF_E159–FF_E15F Port F Reserved – – – GPIO Port G Base Address = FF_E160 FF_E160 Port G Input Data PGIN XX 46 FF_E161 Port G Output Data PGOUT 00 46 FF_E162 Port G Data Direction PGDD 00 47 FF_E163 Port G High Drive Enable PGHDE 00 47 FF_E164 Reserved – – – FF_E165 Port G Alternate Function Low PGAFL 00 49 FF_E166 Port G Output Control PGOC 00 49 FF_E167 Port G Pull-Up Enable PGPUE 00 50 FF_E168 Port G Stop-Mode Recovery Enable PGSMRE 00 51 FF_E169–FF_E16F Port G Reserved – – – Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 23 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page GPIO Port H Base Address = FF_E170 FF_E170 Port H Input Data PHIN XX 46 FF_E171 Port H Output Data PHOUT 00 46 FF_E172 Port H Data Direction PHDD 00 47 FF_E173 Port H High Drive Enable PHHDE 00 47 FF_E174 Port H Alternate Function High PHAFH 00 48 FF_E175 Port H Alternate Function Low PHAFL 00 49 FF_E176 Port H Output Control PHOC 00 49 FF_E177 Port H Pull-Up Enable PHPUE 00 50 FF_E178 Port H Stop-Mode Recovery Enable PHSMRE 00 51 FF_E179–FF_E17F Port H Reserved – – – Serial Channels Base Address = FF_E200 LIN-UART 0 Base Address = FF_E200 FF_E200 LIN-UART 0 Transmit U0TXD Data XX 133 LIN-UART 0 Receive U0RXD Data XX 133 FF_E201 LIN-UART 0 Status 0 U0STAT0 0000011Xb 134 FF_E202 LIN-UART 0 Control 0 U0CTL0 00 139 FF_E203 LIN-UART 0 Control 1 U0CTL1 00 142 FF_E204 LIN-UART 0 Mode Select and Status 00 141 FF_E205 LIN-UART 0 Address U0ADDR Compare Register 00 144 FF_E206 LIN-UART 0 Baud Rate High Byte U0BRH FF 145 FF_E207 LIN-UART 0 Baud Rate Low Byte U0BRL FF 145 FF_E208–FF_E20F Reserved – XX – U0MDSTAT Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 24 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page LIN-UART 1 Base Address = FF_E210 FF_E210 LIN-UART 1 Transmit U1TXD Data XX 133 LIN-UART 1 Receive U1RXD Data XX 133 FF_E211 LIN-UART 1 Status 0 U1STAT0 0000011Xb 134 FF_E212 LIN-UART 1 Control 0 U1CTL0 00 139 FF_E213 LIN-UART 1 Control 1 U1CTL1 00 142 FF_E214 LIN-UART 1 Mode Select and Status 00 141 FF_E215 LIN-UART 1 Address U1ADDR Compare Register 00 144 FF_E216 LIN-UART 1 Baud Rate High Byte U1BRH FF 145 FF_E217 LIN-UART 1 Baud Rate Low Byte U1BRL FF 145 FF_E218–FF_E23F Reserved – XX – U1MDSTAT I2C Base Address = FF_E240 FF_E240 I2C Data I2CDATA 00 205 2 I2CISTAT 80 205 FF_E242 2 I C Control I2CCTL 00 206 FF_E243 I 2C Baud Rate High Byte I2CBRH FF 208 FF_E244 I2C Baud Rate Low Byte I2CBRL FF 208 FF_E245 I2C State I2CSTATE C0 209 FF_E246 I 2C I2CMODE 00 212 FF_E247 2 I C Slave Address I2CSLVAD 00 214 FF_E248–FF_E25F Reserved – XX – 170 FF_E241 I C Interrupt Status Mode Enhanced Serial Peripheral Interface Base Address = FF_E260 FF_E260 ESPI Data ESPIDATA XX FF_E261 Reserved – XX FF_E262 ESPI Control ESPICTL 00 171 FF_E263 ESPI Mode ESPIMODE 00 173 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 25 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page Enhanced Serial Peripheral Interface Base Address = FF_E260 (cont’d.) FF_E264 ESPI Status ESPISTAT 01 175 FF_E265 ESPI State ESPISTATE 00 176 FF_E266 ESPI Baud Rate High ESPIBRH Byte FF 178 FF_E267 ESPI Baud Rate Low ESPIBRL Byte FF 179 Timers, Base Address = FFF_E300 Timer 0 (General-Purpose Timer) Base Address = FF_E300 FF_E300 Timer 0 High Byte T0H 00 81 FF_E301 Timer 0 Low Byte T0L 01 81 FF_E302 Timer 0 Reload High Byte T0RH FF 82 FF_E303 Timer 0 Reload Low Byte T0RL FF 82 FF_E304 Timer 0 PWM High Byte T0PWMH 00 83 FF_E305 Timer 0 PWM Low Byte T0PWML 00 83 FF_E306 Timer 0 Control 0 T0CTL0 00 84 FF_E307 Timer 0 Control 1 T0CTL1 00 85 Timer 1 (General-Purpose Timer) Base Address = FF_E310 FF_E310 Timer 1 High Byte T1H 00 81 FF_E311 Timer 1 Low Byte T1L 01 81 FF_E312 Timer 1 Reload High Byte T1RH FF 82 FF_E313 Timer 1 Reload Low Byte T1RL FF 82 FF_E314 Timer 1 PWM High Byte T1PWMH 00 83 FF_E315 Timer 1 PWM Low Byte T1PWML 00 83 FF_E316 Timer 1 Control 0 T1CTL0 00 84 FF_E317 Timer 1 Control 1 T1CTL1 00 85 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 26 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page Timer 2 (General-Purpose Timer) Base Address = FF_E320 FF_E320 Timer 2 High Byte T2H 00 81 FF_E321 Timer 2 Low Byte T2L 01 81 FF_E322 Timer 2 Reload High Byte T2RH FF 82 FF_E323 Timer 2 Reload Low Byte T2RL FF 82 FF_E324 Timer 2 PWM High Byte T2PWMH 00 83 FF_E325 Timer 2 PWM Low Byte T2PWML 00 83 FF_E326 Timer 2 Control 0 T2CTL0 00 84 FF_E327 Timer 2 Control 1 T2CTL1 00 85 Pulse Width Modulator (PWM) Base Address = FF_E380 FF_E380 PWM Control 0 PWMCTL0 00 100 FF_E381 PWM Control 1 PWMCTL1 00 101 FF_E382 PWM Deadband PWMDB 00 102 FF_E383 PWM Minimum Pulse PWMMPF Width Filter 00 103 FF_E384 PWM Fault Mask PWMFM 00 103 FF_E385 PWM Fault Status PWMFSTAT 00 104 FF_E386 PWM Input Sample Register PWMIN 00 106 FF_E387 PWM Output Control PWMOUT 00 107 FF_E388 PWM Fault Control PWMFCTL 00 105 FF_E389 Reserved – – – FF_E38A Current-Sense Sample and Hold Control 0 CSSHR0 00 108 FF_E38B Current-Sense Sample and Hold Control 1 CSSHR1 00 108 FF_E38C–FF_E38B Reserved – – – FF_E38C PWM High Byte PWMH XX 96 FF_E38D PWM Low Byte PWML XX 97 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 27 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page Pulse Width Modulator (PWM) Base Address = FF_E380 (cont’d.) FF_E38E PWM Reload High Byte PWMRH FF 97 FF_E38F PWM Reload Low Byte PWMRL FF 98 FF_E390 PWM 0 High Side Duty Cycle High Byte PWMH0DH 00 99 FF_E391 PWM 0 High Side Duty Cycle Low Byte PWMH0DL 00 99 FF_E392 PWM 0 Low Side Duty Cycle High Byte PWML0DH 00 99 FF_E393 PWM 0 Low Side Duty Cycle Low Byte PWML0DL 00 99 FF_E394 PWM 1 High Side Duty Cycle High Byte PWMH1DH 00 99 FF_E395 PWM 1 High Side Duty Cycle Low Byte PWMH1DL 00 99 FF_E396 PWM 1 Low Side Duty Cycle High Byte PWML1DH 00 99 FF_E397 PWM 1 Low Side Duty Cycle Low Byte PWML1DL 00 99 FF_E398 PWM 2 High Side Duty Cycle High Byte PWMH2DH 00 99 FF_E399 PWM 2 High Side Duty Cycle Low Byte PWMH2DL 00 99 FF_E39A PWM 2 Low Side Duty Cycle High Byte PWML2DH 00 99 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 28 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page Pulse Width Modulator (PWM) Base Address = FF_E380 (cont’d.) FF_E39B PWM 2 Low Side Duty Cycle Low Byte PWML2DL 00 99 FF_E39C–FF_E3BF Reserved for PWM – – – DMA Block Base Address = FF_E400 DMA Request Selection Control FF_E400 DMA0 Request Select DMA0REQSEL 00 242 FF_E401 DMA1 Request Select DMA1REQSEL 00 242 FF_E402 DMA2 Request Select DMA2REQSEL 00 242 FF_E403 DMA3 Request Select DMA3REQSEL 00 242 FF_E404-F Reserved – – – DMA Channel 0 Base Address = FF_E410 FF_E410 DMA0 Control0 DMA0CTL0 00 245 FF_E411 DMA0 Control1 DMA0CTL1 00 245 FF_E412 DMA0 Transfer Length High DMA0TXLNH 00 246 FF_E413 DMA0 Transfer Length Low DMA0TXLNL 00 246 FF_E414 Reserved – – – FF_E415 DMA0 Destination Address Upper DMA0DARU 00 247 FF_E416 DMA0 Destination Address High DMA0DARH 00 247 FF_E417 DMA0 Destination Address Low DMA0DARL 00 247 FF_E418 Reserved – – – FF_E419 DMA0 Source Address Upper DMA0SARU 00 248 FF_E41A DMA0 Source Address High DMA0SARH 00 248 FF_E41B DMA0 Source Address Low DMA0SARL 00 248 FF_E41C Reserved – – – Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 29 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page DMA Channel 0 Base Address = FF_E410 (cont’d.) FF_E41D DMA0 List Address Upper DMA0LARU 00 249 FF_E41E DMA0 List Address High DMA0LARH 00 249 FF_E41F DMA0 List Address Low DMA0LARL 00 249 DMA Channel 1 Base Address = FF_E420 FF_E420 DMA1 Control0 DMA1CTL0 00 245 FF_E421 DMA1 Control1 DMA1CTL1 00 245 FF_E422 DMA1 Transfer Length High DMA1TXLNH 00 246 FF_E423 DMA1 Transfer Length Low DMA1TXLNL 00 246 FF_E424 Reserved – – – FF_E425 DMA1 Destination Address Upper DMA1DARU 00 247 FF_E426 DMA1 Destination Address High DMA1DARH 00 247 FF_E427 DMA1 Destination Address Low DMA1DARL 00 247 FF_E428 Reserved – – – FF_E429 DMA1 Source Address Upper DMA1SARU 00 248 FF_E42A DMA1 Source Address High DMA1SARH 00 248 FF_E42B DMA1 Source Address Low DMA1SARL 00 248 FF_E42C Reserved – – – FF_E42D DMA1 List Address Upper DMA1LARU 00 249 FF_E42E DMA1 List Address High DMA1LARH 00 249 FF_E42F DMA1 List Address Low DMA1LARL 00 249 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 30 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page DMA Channel 2 Base Address = FF_E430 FF_E430 DMA2 Control0 DMA2CTL0 00 245 FF_E431 DMA2 Control1 DMA2CTL1 00 245 FF_E432 DMA2 Transfer Length High DMA2TXLNH 00 246 FF_E433 DMA2 Transfer Length Low DMA2TXLNL 00 246 FF_E434 Reserved – – – FF_E435 DMA2 Destination Address Upper DMA2DARU 00 247 FF_E436 DMA2 Destination Address High DMA2DARH 00 247 FF_E437 DMA2 Destination Address Low DMA2DARL 00 247 FF_E438 Reserved – – – FF_E439 DMA2 Source Address Upper DMA2SARU 00 248 FF_E43A DMA2 Source Address High DMA2SARH 00 248 FF_E43B DMA2 Source Address Low DMA2SARL 00 248 FF_E43C Reserved FF_E43D DMA2 List Address Upper DMA2LARU 00 249 FF_E43E DMA2 List Address High DMA2LARH 00 249 FF_E43F DMA2 List Address Low DMA2LARL 00 249 – DMA Channel 3 Base Address = FF_E440 FF_E440 DMA3 Control0 DMA3CTL0 00 245 FF_E441 DMA3 Control1 DMA3CTL1 00 245 FF_E442 DMA3 Transfer Length High DMA3TXLNH 00 246 FF_E443 DMA3 Transfer Length Low DMA3TXLNL 00 246 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 31 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page DMA Channel 3 Base Address = FF_E440 (cont’d.) FF_E444 Reserved – – – FF_E445 DMA3 Destination Address Upper DMA3DARU 00 247 FF_E446 DMA3 Destination Address High DMA3DARH 00 247 FF_E447 DMA3 Destination Address Low DMA3DARL 00 247 FF_E448 Reserved – – – FF_E449 DMA3 Source Address Upper DMA3SARU 00 248 FF_E44A DMA3 Source Address High DMA3SARH 00 248 FF_E44B DMA3 Source Address Low DMA3SARL 00 248 FF_E44C Reserved – – – FF_E44D DMA3 List Address Upper DMA3LARU 00 249 FF_E44E DMA3 List Address High DMA3LARH 00 249 FF_E44F DMA3 List Address Low DMA3LARL 00 249 Analog Block Base Address = FF_E500 ADC Base Address = FF_E500 FF_E500 ADC0 Control Register ADC0CTL 00 219 FF_E501 Reserved – – – FF_E502 ADC0 Data High Byte ADC0D_H Register XX 220 FF_E503 ADC0 Data Low Bit Register XX 221 FF_E504 ADC Sample and ADCSST Settling Time Register 0F 221 FF_E505 ADC Sample Hold Time 3F 222 ADC0D_L ADCST Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 32 Table 5. Register File Address Map (Continued) Address (Hex) Register Description Mnemonic Reset (Hex) Page ADC Base Address = FF_E500 (cont’d.) FF_E506 ADC Clock Prescale Register ADCCP 00 222 FF_E507 ADC0 MAX Register ADC0MAX 00 223 FF_E508–FF_E50F Reserved – – – FF_E510 Comparator and OpAmp Control CMPOPC 00 226 FF_E511 Reserved – – – FF_E512 ADC Sample Timer Capture High ADCTCAPH XX 224 FF_E513 ADC Sample Timer Capture Low ADCTCAPL XX 224 Option Trim Registers Base Address = FF_FF00 FF_FF00–FF_FF24 Reserved for internal – Zilog use – – FF_FF25 IPO Trim 1 IPOTRIM1 XX 264 FF_FF26 IPO Trim 2 IPOTRIM2 XX 264 FF_FF27 ADC Reference Voltage Trim ADCTRIM XX 265 Note: XX = undefined. PS028706-0813 PRELIMINARY Peripheral Address Map Z16FMC Series Motor Control MCUs Product Specification 33 Reset and Stop-Mode Recovery The reset controller within the Z16FMC Series controls the RESET and Stop-Mode Recovery operations. In a typical operation, the following events cause a Reset to occur: • Power-On Reset • Voltage Brown-Out • WDT time-out (when configured through the WDT_RES option bit to initiate a Reset) • External RESET pin assertion • OCD initiated Reset (OCDCTL[0] set to 1) • Fault detect logic When the Z16FMC Series MCU is in STOP Mode, a Stop-Mode Recovery is initiated by either of the following: • WDT time-out • GPIO port input pin transition on an enabled Stop-Mode Recovery source Reset Types The Z16FMC Series MCU provides two different types of Reset operation (System Reset and Stop-Mode Recovery). The type of Reset is a function of both the current operating mode of the Z16FMC device and the source of the Reset. Table 6 lists the types of Reset and their operating characteristics. Table 6. Reset and Stop-Mode Recovery Characteristics and Latency Reset Characteristics and Latency Reset Type Peripheral  Control Registers CPU Reset Latency (Delay) System Reset Reset (as applicable) Reset A minimum of 66 internal precision oscillator cycles. Stop-Mode Recovery Unaffected, except RST- Reset SRC and OSCCTL registers A minimum of 66 internal precision oscillator cycles. PS028706-0813 PRELIMINARY Reset and Stop-Mode Recovery Z16FMC Series Motor Control MCUs Product Specification 34 System Reset During a System Reset, the Z16FMC device is held in Reset for 66 cycles of the IPO. At the beginning of Reset, all GPIO pins are configured as inputs. All GPIO programmable pull-ups are disabled. At the start of a System Reset, the motor control PWM outputs are forced to high-impedance momentarily. When the option bits that control the off-state have been properly evaluated, the PWM outputs are forced to the programmed off-state. During Reset, the ZNEO CPU and on-chip peripherals are nonactive; however, the IPO and WDT oscillator continue to run. During the first 50 clock cycles, the internal option bit registers are initialized, after which the system clock for the core and peripherals begins operating. The ZNEO CPU and on-chip peripherals remain nonactive through the next 16 cycles of the system clock, after which the internal reset signal is deasserted. On Reset, control registers within the register file that have a defined reset value are loaded with their reset values. Other control registers (including the Flags) and generalpurpose RAM are undefined following Reset. The CPU fetches the Reset vector at program memory address 0004h and loads that value into the program counter. Program execution begins at the Reset vector address. Table 7 lists the System Reset sources as a function of the operating mode. The following text provides more detailed information about the individual Reset sources. Note: A POR/VBO event always maintains priority over all other possible reset sources to ensure that a full System Reset occurs. Table 7. System Reset Sources and Resulting Reset Action Operating Mode System Reset Source Action NORMAL or HALT modes POR/VBO System Reset WDT time-out when configured for Reset System Reset RESET pin assertion System Reset Write RSTSCR[0] to 1 System Reset Fault detect logic reset System Reset POR/VBO System Reset RESET pin assertion System Reset Fault detect logic reset System Reset STOP Mode PS028706-0813 PRELIMINARY System Reset Z16FMC Series Motor Control MCUs Product Specification 35 Power-On Reset Each device in the Z16FMC Series contains an internal POR circuit. The POR circuit monitors the supply voltage and holds the device in the Reset state until the supply voltage reaches a safe operating level. After the supply voltage exceeds the POR voltage threshold (VPOR) and has stabilized, the POR counter is enabled and counts 50 cycles of the IPO. At this point, the system clock is enabled and the POR counter counts a total of 16 system clock pulses. The device is held in the Reset state until the second POR counter sequence has timed out. After the Z16FMC MCU exits the POR state, the CPU fetches the Reset vector. Following POR, the POR status bit in the Reset Status and Control Register (see page 39) is set to 1. Figure 6 displays Power-on reset operation. For POR threshold voltage (VPOR), see Table 63 on page 306. VCC = 3.3 V VPOR VVBO Program Execution VCC = 0.0 V System Clock Internal Precision Oscillator Internal RESET Signal Not to Scale Oscillator Start-up Option Bit Counter Delay System Clock Counter Delay Figure 6. Power-On Reset Operation PS028706-0813 PRELIMINARY System Reset Z16FMC Series Motor Control MCUs Product Specification 36 Voltage Brown-Out Reset The Z16FMC MCU provides Low Voltage Brown-Out (VBO) protection. The VBO circuit senses the supply voltage when it drops to an unsafe level (below the VBO threshold voltage) and forces the device into the Reset state. While the supply voltage remains below the POR voltage threshold (VPOR), the VBO holds the device in the Reset state. When the supply voltage exceeds the VPOR and is stabilized, the device progresses through a full System Reset sequence, as described in the Power-On Reset section on page 35. Following Power-On Reset, the POR status bit in the Reset Source Register is set to 1. Figure 7 displays Voltage Brown-Out operation. For VBO and POR threshold voltages (VVBO and VPOR), see the Stop Mode Current Versus Vdd section on page 309. The VBO circuit is either enabled or disabled during STOP Mode. Operation during STOP Mode is controlled by the VBO_AO option bit. For information about configuring VBO_AO, see the Option Bit chapter on page 260. VCC = 3.3 V VCC = 3.3 V VPOR VVBO Program Execution Voltage Brown-Out Program Execution System Clock Internal Precision Oscillator Internal RESET Signal Option Bit System Clock Counter Delay Counter Delay Figure 7. Voltage Brown-Out Reset Operation PS028706-0813 PRELIMINARY System Reset Z16FMC Series Motor Control MCUs Product Specification 37 Watchdog Timer Reset If the device is in NORMAL Mode or HALT Mode, the WDT initiates a System Reset at time-out if the WDT_RES option bit is set to 1. This setting is the default (unprogrammed) setting of the WDT_RES option bit. The WDT status bit in the Reset Status and Control Register (see page 39) is set to signify that the reset was initiated by the WDT. External Pin Reset The input-only RESET pin has a schmitt-triggered input, an internal pull-up, an analog filter and a digital filter to reject noise. After the RESET pin is asserted for at least four system clock cycles, the device progresses through the System Reset sequence. While the RESET input pin is asserted Low, the Z16FMC device continues to be held in the Reset state. If the RESET pin is held Low beyond the System Reset time-out, the device exits the Reset state 16 system clock cycles following RESET pin deassertion. If the RESET pin is released before the System Reset time-out, the RESET pin is driven Low by the chip until the completion of the time-out as described in the next section. In STOP Mode, the digital filter is bypassed as the system clock is disabled. Following a System Reset initiated by the external RESET pin, the EXT status bit in the the Reset Status and Control Register (see page 39) is set to 1. External Reset Indicator During System Reset, the RESET pin functions as an open drain (active Low) RESET mode indicator in addition to the input functionality. This reset output feature allows a Z16FMC device to Reset other components to which it is connected, even if the Reset is caused by internal sources such as POR, VBO, or WDT events and as an indication of when the reset sequence completes. After an internal reset event occurs, the internal circuitry begins driving the RESET pin Low. The RESET pin is held Low by the internal circuitry until the appropriate delay listed in Table 6 on page 33 has elapsed. User Reset A System Reset is initiated by setting RSTSCR[0]. If the Write was caused by the OCD, the OCD is not Reset. Fault Detect Logic Reset Fault detect circuitry exists to detect illegal state changes which is caused by transient power or electrostatic discharge events. When such a fault is detected, a system reset is forced. Following the system reset, the FLTD bit in the the Reset Status and Control Register (see page 39) is set. PS028706-0813 PRELIMINARY System Reset Z16FMC Series Motor Control MCUs Product Specification 38 Stop-Mode Recovery STOP Mode is entered by execution of a STOP instruction by the CPU. For detailed information about STOP Mode, see the Low-Power Modes chapter on page 40. During StopMode Recovery, the device is held in Reset for 66 cycles of the internal precision oscillator. Stop-Mode Recovery only affects the contents of the Reset Status and Control Register (see page 39) and the Oscillator Control Register (see page 301). Stop-Mode Recovery does not affect any other values in the register file, including the stack pointer, register pointer, flags, peripheral control registers and general-purpose RAM. The ZNEO CPU fetches the Reset vector at program memory addresses 0004h–0007h and loads that value into the program counter. Program execution begins at the Reset vector address. Following Stop-Mode Recovery, the stop bit in the Reset Status and Control Register (see page 39) is set to 1. Table 8 lists the Stop-Mode Recovery sources and resulting actions. The following text provides more detailed information about each of the StopMode Recovery sources. Table 8. Stop-Mode Recovery Sources and Resulting Action Operating Mode Stop-Mode Recovery Source Action STOP Mode WDT time-out when configured for Reset Stop-Mode Recovery WDT time-out when configured for System Exception Stop-Mode Recovery followed by WDT System Exception Data transition on any GPIO Port pin Stop-Mode Recovery enabled as a Stop-Mode Recovery source Stop-Mode Recovery Using WDT time-out If the WDT times out during STOP Mode, the device undergoes a Stop-Mode Recovery sequence. In the Reset Status and Control Register (see page 39), the WDT and stop bits are set to 1. If the WDT is configured to generate a System Exception on time-out, the ZNEO CPU services the WDT System Exception following the normal Stop-Mode Recovery sequence. Stop-Mode Recovery Using a GPIO Port Pin Transition Each of the GPIO port pins is configured as a Stop-Mode Recovery input source. If any GPIO pin enabled as a Stop-Mode Recovery source, a change in the input pin value (from High to Low or from Low to High) initiates Stop-Mode Recovery. The GPIO Stop-Mode Recovery signals are filtered to reject pulses less than 10 ns (typical) in duration. In the Reset Status and Control Register (see page 39), the stop bit is set to 1. PS028706-0813 PRELIMINARY Stop-Mode Recovery Z16FMC Series Motor Control MCUs Product Specification 39 Caution: Short pulses on the port pin initiate Stop-Mode Recovery without initiating interrupts (if enabled for the pin). Reset Status and Control Register The Reset Status and Control Register (RSTSCR), shown in Table 9, records the cause of the most recent RESET or Stop-Mode Recovery. All status bits are updated on each RESET or Stop-Mode Recovery event. Table 10 indicates the possible states of the Reset status bits following a RESET or Stop-Mode Recovery event. Table 9. Reset Status and Control Register (RSTSCR) Bit Field 7 6 5 4 3 2 1 0 POR STOP WDT EXT FLT USR Reserved USER_RST R R R R W RESET R/W See Table 10 R R R ADDR FF_E050h The USER_RST bit in this register allows a software-controlled RESET of the part pin. It is a write-only bit that causes a System Reset, with the result identified by the USR bit after being executed. 0 = No action. 1 = Causes System Reset. Table 10. Reset Status Register Values Following Reset Reset or Stop-Mode Recovery Event POR STOP WDT EXT FLT USR Power-on reset. 1 0 0 0 0 0 Reset using RESET pin assertion. 0 0 0 1 0 0 Reset using WDT time-out. 0 0 1 0 0 0 Reset from Fault detect logic. 0 0 0 0 1 0 Stop-Mode Recovery using GPIO pin transition. 0 1 0 0 0 0 Stop-Mode Recovery using WDT time-out. 0 1 1 0 0 0 Reset using software control; write a 1 to bit 0 of this register. 0 0 0 0 0 1 PS028706-0813 PRELIMINARY Reset Status and Control Register Z16FMC Series Motor Control MCUs Product Specification 40 Low-Power Modes Z16FMC Series products contain advanced integrated power-saving features. Power management functions are divided into three categories to include CPU operating modes, peripheral power control and programmable option bits. The highest level of power reduction is provided through a combination of all functions. STOP Mode Execution of the CPU’s STOP instruction places the device into STOP Mode. In STOP Mode, the operating characteristics are: • IPO is stopped; XIN and XOUT pins are driven to VSS • System clock is stopped • The CPU is stopped • Program counter (PC) stops incrementing • If enabled for operation during STOP Mode, the WDT and its internal RC oscillator continue to operate • If enabled for operation in STOP Mode through the associated option bit, the VBO protection circuit continues to operate • All other on-chip peripherals are nonactive To minimize current in STOP Mode, all GPIO pins that are configured as digital inputs must be driven to one of the supply rails (VDD or VSS), the VBO protection must be disabled and WDT must be disabled. The device is brought out of STOP Mode using StopMode Recovery. For detailed information about Stop-Mode Recovery, see the Reset and Stop-Mode Recovery chapter on page 33. Caution: To prevent excess current consumption when using an external clock source in STOP Mode, the external clock must be disabled. HALT Mode Execution of the CPU’s HALT instruction places the device into HALT Mode, which demonstrates the following operating characteristics: PS028706-0813 PRELIMINARY Low-Power Modes Z16FMC Series Motor Control MCUs Product Specification 41 • The System Clock is enabled and continues to operate • The CPU is stopped • The PC stops incrementing • The WDT’s internal RC oscillator continues to operate • If enabled, the WDT continues to operate • All other on-chip peripherals continue to operate Any of the following operations can cause the CPU to exit HALT Mode: • An Interrupt or System Exception • A WDT time-out (System Exception or Reset) • A Power-On reset • A VBO reset • An external RESET pin assertion • An instantaneous Halt-Mode Recovery To minimize current in HALT Mode, all GPIO pins which are configured as inputs must be driven to one of the supply rails (VDD or VSS). Peripheral-Level Power Control On-chip peripherals in the Z16FMC Series automatically enter a low-power mode after Reset and whenever the peripheral is disabled. To minimize power consumption, unused peripherals must be disabled. See the individual peripheral chapters for specific register settings to enable or disable the peripheral. Power Control Option Bit User programmable option bits are available in some versions of the Z16FMC devices that enable very low power STOP Mode operation. These options include disabling the VBO protection circuits and disabling the WDT oscillator. For detailed description of the user options that affect power management, see the Option Bit chapter on page 260. PS028706-0813 PRELIMINARY Peripheral-Level Power Control Z16FMC Series Motor Control MCUs Product Specification 42 General-Purpose Input/Output The Z16FMC products contain general-purpose input/output (GPIO) pins arranged as Ports A–H. Each port contains control and data registers. The GPIO control registers are used to determine data direction, open-drain, output drive current and alternate pin functions. Each port pin is individually programmable. GPIO Port Availability Table 11 lists the available GPIO port pins. Table 11. GPIO Port Availability by Device Device Pin Count Z16FMC 64-pin Port A Port B Port C Port D Port E Port F Port G Port H [7:0] [7:0] [7:0] [7:0] [7:0] [1] [1] [3:0] Architecture Figure 8 displays a simplified block diagram of a GPIO port pin. This figure does not, however, display the ability to accommodate alternate functions or variable port current drive strength. PS028706-0813 PRELIMINARY General-Purpose Input/Output Z16FMC Series Motor Control MCUs Product Specification 43 VDD Pull-up Enable Port Input Data Register Q Schmitt Trigger D System Clock VDD Port Output Control Port Output Data Register Data Bus D Q Port Pin System Clock Port Data Direction GND Figure 8. GPIO Port Pin Block Diagram GPIO Alternate Functions Many GPIO port pins are used for GPIO and to provide access to the on-chip peripheral functions such as timers and serial communication devices. The Port A–H Alternate Function registers configure these pins for either GPIO or alternate function operation. When a pin is configured for alternate function, control of the port pin direction (I/O) is passed from the Port A–H data direction registers to the alternate function assigned to this pin. Table 12 lists the alternate functions associated with each port pin. PS028706-0813 PRELIMINARY GPIO Alternate Functions Z16FMC Series Motor Control MCUs Product Specification 44 Table 12. Port Alternate Function Mapping Port Pin Alternate Function 1 Port A PA0 T0IN/T0OUT PA1 T0OUT PA2 DE0 FAULT1 PA3 CTS0 FAULT0 PA4 RXD0 PA5 TXD0 PA6 SCL PA7 SDA PB0/T0IN0 ANA0 PB1/T0IN1 ANA1 PB2/T0IN2 ANA2 PB3 ANA3/OPOUT PB4 ANA4 PB5 ANA5 PB6 ANA6/OPINP/CINN PB7 ANA7/OPINN PC0 T1IN/T1OUT CINN PC1 T1OUT COMPOUT PC2 SS PC3 SCK PC4 MOSI PC5 MISO PC6 T2IN/T2OUT PWMH0 PC7 T2OUT PWML0 PD0 PWMH1 PD1 PWML1 PD2 PWMH2 PD3 DE1 PD4 RXD1 PD5 TXD1 PD6 CTS1 PD7 PWML2 Port B Port C Port D PS028706-0813 Alternate Function 2 Alternate Function 3 T0INPB PRELIMINARY GPIO Alternate Functions Z16FMC Series Motor Control MCUs Product Specification 45 Table 12. Port Alternate Function Mapping (Continued) Port Pin Port E PE0 Alternate Function 1 Alternate Function 2 Alternate Function 3 PE1 PE2 PE3 PE4 PE5 PE6 PE7 Port F PF7 Port G PG3 Port H PH0 ANA8 PH1 ANA9 PH2 ANA10 PH3 ANA11/CPINP GPIO Interrupts Many of the GPIO port pins are used as interrupt sources. Some port pins are configured to generate an interrupt request on either the rising edge or falling edge of the pin input signal. Other port pin interrupts generate an interrupt when any edge occurs (both rising and falling). For more information about interrupts using the GPIO pins, see the Interrupt Controller chapter on page 54. GPIO Control Register Definitions The section that follows describes the functions of the GPIO control registers. Port A–H Input Data Register Reading from the Port A–H Input Data registers, shown in Table 13, returns the sampled values from the corresponding port pins. The Port A–H Input Data registers are read-only. PS028706-0813 PRELIMINARY GPIO Interrupts Z16FMC Series Motor Control MCUs Product Specification 46 Table 13. Port A–H Input Data Registers (PxIN) Bit 7 6 5 4 3 2 1 0 PIN7 PIN6 PIN5 PIN4 PIN3 PIN2 PIN1 PIN0 RESET X X X X X X X X R/W R R R R R R R R Field ADDR FF_E100, FF_E110, FF_E120, FF_E130, FF_E140, FF_E150, FF_E160, FF_E170, FF_E180, FF_E190 Bit Description [7:0] PINx Port Input Data Sampled data from the corresponding port pin input. 0 = Input data is logical 0 (Low). 1 = Input data is logical 1 (High). Note: x indicates register bits in the range 7 through 0. Port A–H Output Data Registers The Port A–H Output Data registers, shown in Table 14, write output data to the pins. Table 14. Port A–H Output Data Registers (PxOUT) Bit Field RESET R/W 7 6 5 4 3 2 1 0 POUT7 POUT6 POUT5 POUT4 POUT3 POUT2 POUT1 POUT0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E101, FF_E111, FF_E121, FF_E131, FF_E141, FF_E151, FF_E161, FF_E171, FF_E181, FF_E191 Bit Description [7:0] POUTx Port Output Data These bits contain the data to be driven out from the port pins. The values are only driven if the corresponding pin is configured as an output and the pin is not configured for alternate function operation. 0 = Drive a logical 0 (Low). 1 = Drive a logical 1 (High). High value is not driven if the drain has been disabled by setting the corresponding port output control register bit to 1. Note: x indicates register bits in the range 7 through 0. PS028706-0813 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 47 Port A–H Data Direction Registers The Port A–H Data Direction registers, shown in Table 15, configure the specified port pins as either inputs or outputs. Table 15. Port A–H Data Direction Registers (PxDD) Bit Field RESET R/W 7 6 5 4 3 2 1 0 DD7 DD6 DD5 DD4 DD3 DD2 DD1 DD0 1 1 1 1 1 1 1 1 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E102, FF_E112, FF_E122, FF_E132, FF_E142, FF_E152, FF_E162, FF_E172, FF_E182, FF_E192 Bit Description [7:0] DDx Data Direction These bits control the direction of the associated port pin. Port alternate function operation overrides the Data Direction Register setting. 0 = Output. Data in the Port A–H Output Data Register is driven onto the port pin. 1 = Input. The port pin is sampled and the value written into the Port A–H Input Data Register. The output driver is high impedance. Note: x indicates register bits in the range 7 through 0. Port A–H High Drive Enable Registers Writing a 1 to the bits in the Port A–H High Drive Enable registers, shown in Table 16, configures the specified port pins for high current output drive operation. The Port A–H High Drive Enable registers affect the pins directly. As a result, alternate functions are also affected. Table 16. Port A–H High Drive Enable Registers (PxHDE) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PHDE7 PHDE6 PHDE5 PHDE4 PHDE3 PHDE2 PHDE1 PHDE0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR PS028706-0813 FF_E103, FF_E113, FF_E123, FF_E133, FF_E143, FF_E153, FF_E163, FF_E173, FF_E183, FF_E193 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 48 Bit Description [7:0] PHDEx Port High Drive Enable 0 = The port pin is configured for standard output current drive. 1 = The port pin is configured for high output current drive. Note: x indicates register bits in the range 7 through 0. Port A–H Alternate Function High and Low Registers The Port A–H Alternate Function High and Low registers, shown in Tables 17 and 18, select the alternate functions for the selected pins. To determine the alternate function associated with each port pin, see the GPIO Alternate Functions section on page 43. When changing alternate functions, Zilog recommends using word data mode instructions to perform simultaneous writes to the Port Alternate Function High and Low registers. Caution: Do not enable alternate functions for GPIO port pins which do not also offer an associated alternate function. Failure to follow this guideline will result in undefined operation. Table 17. Port A–H Alternate Function High Registers (PxAFH) Bit Field RESET R/W 7 6 5 4 3 2 1 0 AFH[7] AFH[6] AFH[5] AFH[4] AFH[3] AFH[2] AFH[1] AFH[0] 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E104, FF_E124, FF_E134, FF_E174 Table 18. Port A–H Alternate Function Low Registers (PxAFL) Bit Field RESET R/W 7 6 5 4 3 2 1 0 AFL[7] AFL[6] AFL[5] AFL[4] AFL[3] AFL[2] AFL[1] AFL[0] 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR PS028706-0813 FF_E105, FF_E115, FF_E125, FF_E135, FF_E155, FF_E165, FF_E175, FF_E195 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 49 Table 19. Alternate Function Enabling AFH[x] AFL[x] Priority 0 0 No Alternate Function enabled. 0 1 Alternate Function 1 enabled. 1 0 Alternate Function 2 enabled. 1 1 Alternate Function 3 enabled. Note: x indicates register bits in the range 0 through 7. Port A–H Output Control Registers Writing a 1 to the bits in the Port A–H Output Control registers, shown in Table 20, configures the specified port pins for open-drain operation. These registers affect the pins directly and, as a result, alternate functions are also affected. Enabling the I2C controller automatically configures the SCL and SDA pins as open-drain; independent of the setting in the output control registers that have the SCL and SDA alternate functions. Table 20. Port A–H Output Control Registers (PxOC) Bit Field RESET R/W 7 6 5 4 3 2 1 0 POC7 POC6 POC5 POC4 POC3 POC2 POC1 POC0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E106, FF_E116, FF_E126, FF_E136, FF_E146, FF_E156, FF_E166, FF_E176, FF_E186, FF_E196 Bit Description [7:0] POCx Port Output Control These bits function independently of the alternate function bits and disable the drains if set to 1. 0 = The drains are enabled for any output mode. 1 = The drain of the associated pin is disabled (open-drain mode). Note: x indicates register bits in the range 7 through 0. PS028706-0813 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 50 Port A–H Pull-Up Enable Registers Writing a 1 to the bits in the Port A–H Pull-Up Enable registers, shown in Table 21, enables a weak internal resistive pull-up on the specified port pins. These registers affect the pins directly and, as a result, alternate functions are also affected. Table 21. Port A–H Pull-Up Enable Registers (PxPUE) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PUE7 PUE6 PUE5 PUE4 PUE3 PUE2 PUE1 PUE0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E107, FF_E117, FF_E127, FF_E137, FF_E147, FF_E157, FF_E167, FF_E177, FF_E187, FF_E197 Bit Description [7:0] PUEx Port Pull-Up Enable These bits function independently of the alternate function bit and enable the weak pull-up if set to 1. 0 = The weak pull-up on the port pin is disabled. 1 = The weak pull-up on the port pin is enabled. Note: x indicates register bits in the range 7 through 0. PS028706-0813 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 51 Port A–H Stop-Mode Recovery Source Enable Registers Writing a 1 to the bits in the Port A–H Stop-Mode Recovery Source Enable registers, shown in Table 22, configures the specified port pins as a Stop-Mode Recovery source. During STOP Mode, any logic transition on a port pin enabled as a Stop-Mode Recovery source initiates Stop-Mode Recovery. Table 22. Port A–H Stop-Mode Recovery Source Enable Registers (PxSMRE) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PSMRE7 PSMRE6 PSMRE5 PSMRE4 PSMRE3 PSMRE2 PSMRE1 PSMRE0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR Bit FF_E108, FF_E118, FF_E128, FF_E138, FF_E148, FF_E158, FF_E168, FF_E178, FF_E188, FF_E198 Description [7:0] Port Stop-Mode Recovery Source Enable PSMREx 0 = The port pin is not configured as a Stop-Mode Recovery source. Transitions on this pin during STOP Mode do not initiate Stop-Mode Recovery. 1 = The port pin is configured as a Stop-Mode Recovery source. Any logic transition on this pin during STOP Mode initiates Stop-Mode Recovery. Note: x indicates register bits in the range 7 through 0. PS028706-0813 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 52 Port A IRQ MUX1 Register The Port IRQ MUX1 Register, shown in Table 23, selects either Port A/D pins or the comparator/DBG channel as interrupt sources. Table 23. Port A IRQ MUX1 Register (PAIMUX1) Bit 7 Field RESET R/W 6 5 4 CPIMUX 3 2 1 Reserved 0 DBGIMUX 0 0 0 0 0 0 0 0 R/W R/W R R R R R R/W ADDR FF_E10C Bit Description [7] CPIMUX Comparator Interrupt MUX 0 = Select Port A7/D7 based upon the Port A IRQ Edge Register as the interrupt source. 1 = Select the comparator as the interrupt source. [6:1] Reserved These bits are reserved and must be programmed to 000000. [0] DBGIMUX Debug Interrupt MUX 0 = Select Port A0/D0 based on the Port A IRQ Edge Register as the interrupt source. 1 = Select the DBG as the interrupt source. Port A IRQ MUX Register The Port IRQ MUX Register, shown in Table 24, selects either Port A or Port D pins as interrupt sources. Table 24. Port A IRQ MUX Register (PAIMUX) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PAIMUX7 PAIMUX6 PAIMUX5 PAIMUX4 PAIMUX3 PAIMUX2 PAIMUX1 PAIMUX0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E10E Bit Description [7:0] PAIMUXx Port A/D Interrupt Source 0 = Select Port Ax as the interrupt source. 1 = Select Port Dx as the interrupt source. Note: x indicates register bits in the range 7 through 0. PS028706-0813 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 53 Port A IRQ Edge Register The Port IRQ Edge Register, shown in Table 25, selects either positive or negative edge as the port pin interrupt sources. Table 25. Port A IRQ Edge Register (PAIEDGE) Bit 7 Field 6 5 4 3 2 1 0 PAIEDGE7 PAIEDGE6 PAIEDGE5 PAIEDGE4 PAIEDGE3 PAIEDGE2 PAIEDGE1 PAIEDGE0 RESET R/W 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E10F Bit Description [7:0] PAIEDGEx Port A/D Interrupt Edge 0 = Select Port A/D pin negedge as the interrupt source. 1 = Select Port A/D pins posedge as the interrupt source. Note: x indicates register bits in the range 7 through 0. Port C IRQ MUX Register The Port C IRQ MUX Register, shown in Table 26, selects either Port C pins or the DMA channels as interrupt sources. Table 26. Port C IRQ MUX Register (PCIMUX) Bit 7 6 Field 5 4 Reserved 3 2 1 0 PCIMUX3 PCIMUX2 PCIMUX1 PCIMUX0 RESET 0 0 0 0 0 0 0 0 R/W R R R R R/W R/W R/W R/W Address FF_E12E Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3:0] PCIMUXx Port C Interrupt MUX 0 = Select DMA Chan[3:0] as the interrupt source. 1 = Select port C pins as the interrupt source. Note: x indicates register bits in the range 3 through 0. PS028706-0813 PRELIMINARY GPIO Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 54 Interrupt Controller The Z16FMC Series interrupt controller prioritizes interrupt requests from on-chip peripherals and the GPIO port pins. The features of the interrupt controller includes: • Flexible GPIO interrupts: – Eight selectable rising and falling edge GPIO interrupts – Four dual-edge interrupts • Three levels of individually programmable interrupt priority • Software Interrupt Requests (IRQ) assertion The IRQs allow peripheral devices to suspend CPU operation in an orderly manner and force the CPU to start an ISR. Usually this service routine is involved with exchange of data, status information, or control information between the CPU and the interrupting peripheral. When the service routine is completed, the CPU returns to the operation from which it was interrupted. System exceptions are nonmaskable requests which allow critical system functions to suspend CPU operation in an orderly manner and force the CPU to start a service routine. Usually this service routine tries to determine how critical the exception is. When the service routine is complete, the CPU returns to the operation from which it was interrupted. Z16FMC MCUs support both vectored and polled interrupt handling. For polled interrupts, the interrupt control has no effect on operation. For more information about interrupt servicing by this device’s ZNEO CPU core, refer to the ZNEO CPU User Manual (UM0188), available free for download from the Zilog website. Interrupt Vector Listing Table 27 lists all of the available interrupts in order of priority. Table 27. Interrupt Vectors in Order of Priority Priority Program Memory Vector Address Highest 0004h No Reset (not an interrupt) 0008h No System Exceptions 000Ch No Reserved 0010h Yes Timer 2 0014h Yes Timer 1 PS028706-0813 Programmable Priority? Interrupt Source PRELIMINARY Interrupt Controller Z16FMC Series Motor Control MCUs Product Specification 55 Table 27. Interrupt Vectors in Order of Priority (Continued) Priority Program Memory Vector Address Lowest 0018h Yes Timer 0 001Ch Yes UART 0 receiver 0020h Yes UART 0 transmitter 0024h Yes I 2C 0028h Yes SPI 002Ch Yes ADC0 0030h Yes Port A7 or Port D7, rising or falling input edge or Comparator output rising and falling edge (source selected in PortA IRQ MUX registers) 0034h Yes Port A6 or Port D6, rising or falling input edge 0038h Yes Port A5 or Port D5, rising or falling input edge 003Ch Yes Port A4 or Port D4, rising or falling input edge 0040h Yes Port A3 or Port D3, rising or falling input edge 0044h Yes Port A2 or Port D2, rising or falling input edge 0048h Yes Port A1 or Port D1, rising or falling input edge 004Ch Yes Port A0 or Port D0, rising or falling input edge or OCD Interrupt (source selected in PortA IRQ MUX registers) 0050h Yes PWM Timer 0054h Yes UART 1 Receiver 0058h Yes UART 1 Transmitter 005Ch Yes PWM Fault 0060h Yes Port C3, both input edges/DMA 3 0064h Yes Port C2, both input edges/DMA 2 0068h Yes Port C1, both input edges/DMA 1 006Ch Yes Port C0, both input edges/DMA 0 PS028706-0813 Programmable Priority? Interrupt Source PRELIMINARY Interrupt Vector Listing Z16FMC Series Motor Control MCUs Product Specification 56 The most significant byte (MSB) of the four-byte interrupt vector is not used. The vector is stored in the three least significant bytes (LSB) of the vector, as shown in Table 28. Table 28. Interrupt Vector placement Vector Byte Data 0 Reserved 1 IRQ Vector[23:16] 2 IRQ Vector[15:8] 3 IRQ Vector[7:0] Architecture Port Interrupts Internal Interrupts Interrupt Request Latches and Control Figure 9 displays a block diagram of the interrupt controller. High Priority Vector Medium Priority Priority Mux IRQ Request Low Priority Figure 9. Interrupt Controller Block Diagram PS028706-0813 PRELIMINARY Architecture Z16FMC Series Motor Control MCUs Product Specification 57 Operation This section discusses the operational aspects of the Z16FMC Series interrupts, and presents tabled bit descriptions for the interrupt request, enable, and exception registers. Master Interrupt Enable The master interrupt enable bit in the Flag Register globally enables or disables interrupts. This bit has been moved to the Flag Register (bit 0). Thus, any time the register is loaded, it changes the state of the IRQE bit. For the IRET instruction the bit is set based on what has been pushed on the stack. Interrupts are globally enabled by any of the following actions: • Execution of an Enable Interrupt (EI) instruction • Writing a 1 to the IRQE bit in the Flag Register Interrupts are globally disabled by any of the following actions: • Execution of a Disable Interrupt (DI) instruction • CPU acknowledgement of an interrupt service request from the interrupt controller • Writing a 0 to the IRQE bit in the Flag Register • Reset • Execution of a TRAP instruction • All System Exceptions Interrupt Vectors and Priority The interrupt controller supports three levels of interrupt priority. Level 3 is the highest priority, Level 2 is the second highest priority, and Level 1 is the lowest priority. If all the interrupts are enabled with identical interrupt priority (for example, all interrupts enabled as Level 2 interrupts), the interrupt priority is assigned from highest to lowest as specified in Table 27 on page 54. Level 3 interrupts always have higher priority than Level 2 interrupts, which in turn, always have higher priority than Level 1 interrupts. Within each interrupt priority levels (Level 1, Level 2, or Level 3), priority is assigned as specified in Table 27. Reset and System Exceptions have the highest priority. System Exceptions System Exceptions are generated for stack overflow, illegal instructions, divide-by-zero, and divide overflow, etc. The System Exceptions are not affected by the IRQE and share a single vector. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 58 Each exception has a bit in the system exception status register. When a system exception occurs it pushes the program counter and the flags on the stack, fetches the system exception vector from 000008h (similar to a IRQ) and the bit associated with that exception is set in the status register. Additional exceptions from the same source are blocked until the status bit of the particular exception is cleared by writing a 1 to that status bit. Other types of exceptions occur while servicing an exception. When this happens the processor again vectors to the system exception vector and sets the associated exception status bit. The service routine would then have to respond to the new exception. Note: Upon illegal instruction, the program counter and flags are pushed onto the stack only once. If the associated exception bit is not reset, the program counter and flags are not pushed a second time. Interrupt Assertion Interrupt sources assert their interrupt requests for only a single system clock period (single pulse). When the interrupt request is acknowledged by the CPU, the corresponding bit in the Interrupt Request Register is cleared until the next interrupt occurs. Writing a 1 to the corresponding bit in the Interrupt Request Register clears the interrupt request. Program code generates interrupts directly. Writing a 1 to the appropriate bit in the Interrupt Request Set Register triggers an interrupt (assuming that interrupts are enabled). When the interrupt request is acknowledged by the CPU, the bit in the Interrupt Request Register is automatically cleared to 0. System Exception Status Registers When a System Exception occurs, the System Exception Status registers are read to determine which system exception occurred. These registers can be read individually or as a 16-bit quantity. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 59 Table 29. System Exception Register High (SYSEXCPH) Bit Field RESET R/W 7 6 5 4 3 SPOVF PCOVF DIV0 DIVOVF ILL 0 0 0 0 0 0 0 0 R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C ADDR 2 1 0 Reserved FF_E020h Bit Description [7] SPOVF Stack Pointer Overflow If this bit is 1, a stack pointer overflow exception occurred. Writing a 1 to this bit clears it to 0. [6] PCOVF Program Counter Overflow If this bit is 1, a program counter overflow exception occurred. Writing a 1 to this bit clears it to 0. [5] DIV0 Divide by Zero If this bit is 1, a divide operation was executed where the denominator was zero. Writing a 1 to this bit clear it to 0. [4] DIVOVF Divide Over Flow If this bit is 1, a divide overflow occurred. A divide overflow happens when the result is greater than FFFFFFFFh. Writing a 1 to this bit clears it to 0. [3] ILL Illegal Instruction If this bit is 1, an illegal instruction occurred. Writing a 1 to this bit clears it to 0. [2:0] Reserved These bits are reserved and must be programmed to 000. Table 30. System Exception Register Low (SYSEXCPL) Bit 7 6 Field 4 3 Reserved RESET R/W 5 2 1 WDTOSC PRIOSC 0 WDT 0 0 0 0 0 0 0 0 R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C ADDR FF_E021h Bit Description [7:3] Reserved These bits are reserved and must be programmed to 00000. [2] WDTOSC WDT Oscillator Fail If this bit is 1, a WDT oscillator fail exception occurred. Writing a 1 to this bit clears it to 0. [1] PRIOSC Primary Oscillator Fail If this bit is 1, a primary oscillator fail exception occurred. Writing a 1 to this bit clears it to 0. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 60 Bit Description (Continued) [0] WDT Watchdog Timer Interrupt If this bit is 1, a WDT exception occurred. Writing a 1 to this bit clears it to 0. Last IRQ Register When an interrupt occurs, the 5th bit value of the interrupt vector is stored in the Last IRQ Register. This register allows the software to determine which interrupt source was last serviced. It is used by RTOS which have a single interrupt entry point. To implement this the software must set all interrupt vectors to the entry point address. The entry point service routine then reads this register to determine which source caused the interrupt or exception and respond accordingly. Table 31. Last IRQ Register (LASTIRQ) Bit 7 Field 6 5 4 Always 0 3 2 1 IRQADR 0 Always 00 RESET 0 0 0 0 0 1 0 0 R/W R R/W R/W R/W R/W R/W R R ADDR FF_E023h Interrupt Request 0 Register The Interrupt Request 0 (IRQ0) Register, shown in Table 32, stores the interrupt requests for both vectored and polled interrupts. When a request is presented to the interrupt controller, the corresponding bit in the IRQ0 Register becomes 1. If interrupts are globally enabled (vectored interrupts), the interrupt controller passes an interrupt request to the CPU. If interrupts are globally disabled (polled interrupts), the CPU reads the Interrupt Request 0 Register to determine if any interrupt requests are pending. Writing a 1 to the bits in this register clears the interrupt. Clearing the individual flag bits of the IRQ0 Register requires writing a 1 by a means other than using a logical OR; otherwise, unexpected results can occur. Example. If bit 5 must be cleared, then either of the following instructions will clear IRQ0 bit 5: IRQ0 &= ~0xDF; or IRQ0 = 0x20; PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 61 The bits in this register are set by writing a 1 to the Interrupt Request 0 Set Register (IRQ0SET) at address FF_E031h. Table 32. Interrupt Request 0 Register (IRQ0) and Interrupt Request 0 Set Register (IRQ0SET) Bit Field RESET R/W 7 6 5 4 3 2 1 0 T2I T1I T0I U0RXI U0TXI I2CI SPII ADCI 0 0 0 0 0 0 0 0 R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C ADDR Field FF_E030h T2I T1I T0I U0RXI U0TXI I2CI SPII ADCI RESET 0 0 0 0 0 0 0 0 R/W W W W W W W W W ADDR FF_E031h Note: IRQ0SET at address FF_E031h is write only and used to set the interrupts identified. Bit Description [7] T2I Timer 2 Interrupt Request 0 = No interrupt request is pending for timer 2. 1 = An interrupt request from timer 2 is awaiting service. Writing a 1 to this bit resets it to 0. [6] T1I Timer 1 Interrupt Request 0 = No interrupt request is pending for timer 1. 1 = An interrupt request from timer 1 is awaiting service. Writing a 1 to this bit resets it to 0. [5] T0I Timer 0 Interrupt Request 0 = No interrupt request is pending for timer 0. 1 = An interrupt request from timer 0 is awaiting service. Writing a 1 to this bit resets it to 0. [4] U0RXI UART 0 Receiver Interrupt Request 0 = No interrupt request is pending for the UART 0 receiver. 1 = An interrupt request from the UART 0 receiver is awaiting service. Writing a 1 to this bit resets it to 0. [3] U0TXI UART 0 Transmitter Interrupt Request 0 = No interrupt request is pending for the UART 0 transmitter. 1 = An interrupt request from the UART 0 transmitter is awaiting service. Writing a 1 to this bit resets it to 0. [2] I2CI I2C Interrupt Request 0 = No interrupt request is pending for the I2C. 1 = An interrupt request from the I2C is awaiting service. Writing a 1 to this bit resets it to 0. [1] SPII SPI Interrupt Request 0 = No interrupt request is pending for the SPI. 1 = An interrupt request from the SPI is awaiting service. Writing a 1 to this bit resets it to 0. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 62 Bit Description (Continued) [0] ADCI ADC Interrupt Request 0 = No interrupt request is pending for ADC. 1 = An interrupt request from ADC is awaiting service. Writing a 1 to this bit resets it to 0. Interrupt Request 1 Register The Interrupt Request 1 (IRQ1) Register, shown in Table 33, stores interrupt requests for both vectored and polled interrupts. When a request is presented to the interrupt controller, the corresponding bit in the IRQ1 Register becomes 1. If interrupts are globally enabled (vectored interrupts), the interrupt controller passes an interrupt request to the CPU. If interrupts are globally disabled (polled interrupts), the CPU reads the Interrupt Request 1 Register to determine, if any interrupt requests are pending. Writing a 1 to the bits in this register clears the interrupt. The bits of this register are set by writing a 1 to the Interrupt Request 1 Set Register (IRQ1SET) at address FF_E035h. Table 33. Interrupt Request 1 Register (IRQ1) and Interrupt Request 1 Set Register (IRQ1SET) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PAD7I PAD6I PAD5I PAD4I PAD3I PAD2I PAD1I PAD0I 0 0 0 0 0 0 0 0 R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C ADDR Field FF_E034h PAD7I PAD6I PAD5I PAD4I PAD3I PAD2I PAD1I PAD0I RESET 0 0 0 0 0 0 0 0 R/W W W W W W W W W ADDR FF_E035h Note: IRQ1SET at address FF_E035h is write only and used to set the interrupts identified. Bit Description [7:0] PADxI Port A/D Pin x Interrupt Request PAD7I and PAD0I have interrupt sources other than Port A and Port D as selected by the Port A IRQ MUX registers. PAD7I is configured to provide the comparator interrupt. PAD0I is configured to provide the OCD interrupt. 0 = No interrupt request is pending for GPIO port A/D pin x. 1 = An interrupt request from GPIO port A/D pin x is awaiting service. Writing a 1 to these bits resets them to 0. Note: x indicates register bits in the range 7 to 0. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 63 Note: These bits are set any time the selected port is toggled. The setting of these bits is not affected by the associated interrupt enable bits. Interrupt Request 2 Register The Interrupt Request 2 Register (IRQ2), shown in Table 34, stores interrupt requests for both vectored and polled interrupts. When a request is presented to the interrupt controller, the corresponding bit in the IRQ2 Register becomes 1. If interrupts are globally enabled (vectored interrupts), the interrupt controller passes an interrupt request to the CPU. If interrupts are globally disabled (polled interrupts), the CPU reads the Interrupt Request 1 Register to determine, if any interrupt requests are pending. Writing a 1 to the bits in this register clears the interrupt. The bits in this register are set by writing a 1 to the Interrupt Request 2 Set Register (IRQ2SET) at address FF_E039h. Table 34. Interrupt Request 2 Register (IRQ2) and Interrupt Request 2 Set Register (IRQ2SET) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PWMTI U1RXI U1TXI PWMFI PC3I/ DMA3I PC2I/ DMA2I PC1I/ DMA1I PC0I/ DMA0I 0 0 0 0 0 0 0 0 R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C R/W1C ADDR Field FF_E038h PWMTI U1RXI U1TXI PWMFI PC3I/ DMA3I PC2I/ DMA2I PC1I/ DMA1I PC0I/ DMA0I RESET 0 0 0 0 0 0 0 0 R/W W W W W W W W W ADDR FF_E039h Note: IRQ2SET at address FF_E039h is write only and used to set the interrupts identified. Bit Description [7] PWMTI PWM Timer Interrupt Request 0 = No interrupt request is pending for the PWM timer. 1 = An interrupt request from the PWM timer is awaiting service. Writing a 1 to this bit resets it to 0. Note: x indicates register bits in the range 3 to 0. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 64 Bit Description (Continued) [6] U1RXI UART 1 Receiver Interrupt Request 0 = No interrupt request is pending for the UART 1 receiver. 1 = An interrupt request from the UART 1 receiver is awaiting service. Writing a 1 to this bit resets it to 0. [5] U1TXI UART 1 Transmitter Interrupt Request 0 = No interrupt request is pending for the UART 1 transmitter. 1 = An interrupt request from the UART 1 transmitter is awaiting service. Writing a 1 to this bit resets it to 0. [4] PWMFI PWM Fault Interrupt Request 0 = No interrupt request is pending for the PWM fault. 1 = An interrupt request from the PWM fault is awaiting service. Writing a 1 to this bit resets it to 0. [3:0] PCxI/ DMAxI Port C Pin x or DMA x Interrupt Request 0 = No interrupt request is pending for GPIO port C pin x or DMA x. 1 = An interrupt request from GPIO port C pin x or DMAx is awaiting service. Writing a 1 to this bit resets it to 0. Note: x indicates register bits in the range 3 to 0. IRQ0 Enable High and Low Bit Registers The IRQ0 Enable High and Low Bit registers, shown in Tables 36 and 37, form a priorityencoded enabling for interrupts in the Interrupt Request 0 Register. Priority is generated by setting bits in each register. Table 35 describes the priority control for IRQ0. Table 35. IRQ0 Enable and Priority Encoding IRQ0ENH[x] IRQ0ENL[x] Priority Description 0 0 Disabled Disabled 0 1 Level 1 Low 1 0 Level 2 Nominal 1 1 Level 3 High Note: x indicates the register bits from 0 through 7. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 65 Table 36. IRQ0 Enable High Bit Register (IRQ0ENH) Bit Field RESET R/W 7 6 5 4 3 2 1 0 T2ENH T1ENH T0ENH U0RENH U0TENH I2CENH SPIENH ADCENH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E032H Bit Description [7] T2ENH Timer 2 Interrupt Request Enable High Bit [6] T1ENH Timer 0 Interrupt Request Enable High Bit [5] T0ENH Timer 0 Interrupt Request Enable High Bit [4] UART 0 Receive Interrupt Request Enable High Bit U0RENH [3] UART 0 Transmit Interrupt Request Enable High Bit U0TENH [2] I2CENH I2C Interrupt Request Enable High Bit [1] SPIENH SPI Interrupt Request Enable High Bit [0] ADC Interrupt Request Enable High Bit ADCENH Table 37. IRQ0 Enable Low Bit Register (IRQ0ENL) Bit Field RESET R/W 7 6 5 4 3 2 1 0 T2ENL T1ENL T0ENL U0RENL U0TENL I2CENL SPIENL ADCENL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E033h Bit Description [7] T2ENL Timer 2 Interrupt Request Enable Low Bit [6] T1ENL Timer 0 Interrupt Request Enable Low Bit PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 66 Bit Description (Continued) [5] T0ENL Timer 0 Interrupt Request Enable Low Bit [4] UART 0 Receive Interrupt Request Enable Low Bit U0RENL [3] UART 0 Transmit Interrupt Request Enable Low Bit U0TENL [2] I2CENL I2C Interrupt Request Enable Low Bit [1] SPIENL SPI Interrupt Request Enable Low Bit [0] ADC Interrupt Request Enable Low Bit ADCENL IRQ1 Enable High and Low Bit Registers The IRQ1 Enable High and Low Bit registers, shown in Tables 39 and 40, form a priorityencoded enabling for interrupts in the Interrupt Request 1 Register. Priority is generated by setting bits in each register. Table 38 describes the priority control for IRQ1. Table 38. IRQ1 Enable and Priority Encoding IRQ1ENH[x] IRQ1ENL[x] Priority Description 0 0 Disabled Disabled 0 1 Level 1 Low 1 0 Level 2 Nominal 1 1 Level 3 High Note: x indicates register bits in the range 7 to 0. Table 39. IRQ1 Enable High Bit Register (IRQ1ENH) Bit Field RESET R/W 7 6 5 4 3 2 1 0 PAD7ENH PAD6ENH PAD5ENH PAD4ENH PAD3ENH PAD2ENH PAD1ENH PAD0ENH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E036h Note: PADxENH = Port A/D Bit[x] Interrupt Request Enable High Bit PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 67 Table 40. IRQ1 Enable Low Bit Register (IRQ1ENL) Bit 7 Field RESET R/W 6 5 4 3 2 1 0 PAD7ENL PAD6ENL PAD5ENL PAD4ENL PAD3ENL PAD2ENL PAD1ENL PAD0ENL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E037h Note: PAxENL = Port A/D Bit[x] Interrupt Request Enable Low Bit. IRQ2 Enable High and Low Bit Registers The IRQ2 Enable High and Low Bit registers, shown in Tables 42 and 43, form a priorityencoded enabling for interrupts in the Interrupt Request 2 Register. Priority is generated by setting bits in each register. Table 41 describes the priority control for IRQ2. Table 41. IRQ2 Enable and Priority Encoding IRQ2ENH[x] IRQ2ENL[x] Priority Description 0 0 Disabled Disabled 0 1 Level 1 Low 1 0 Level 2 Nominal 1 1 Level 3 High Note: x indicates the register bits from 0 through 7. Table 42. IRQ2 Enable High Bit Register (IRQ2ENH) Bit Field 7 6 5 4 PWMTENH U1RENH U1TENH PWMFENH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W RESET R/W ADDR Bit 3 2 1 0 C3ENH/ C2ENH/ C1ENH/ C0ENH/ DMA3ENH DMA2ENH DMA1ENH DMA0ENH FF_E03Ah Description [7] PWM Timer Interrupt Request Enable High Bit PWMTENH [6] U1RENH UART 1 Receive Interrupt Request Enable High Bit PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 68 Bit Description (Continued) [5] U1TENH UART 1 Transmit Interrupt Request Enable High Bit [4] PWM Fault Interrupt Request Enable High Bit PWMFENH [3:0] CxENH/ DMAxENH Port Cx or DMAx Interrupt Request Enable High Bit Table 43. IRQ2 Enable Low Bit Register (IRQ2ENL) Bit Field 7 6 5 4 3 2 1 0 PWMTENL U1RENL U1TENL PWMFENL C3ENL/ DMA3ENL C2ENL/ DMA2ENL C1ENL/ DMA1ENL C0ENL/ DMA0ENL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W RESET R/W ADDR FF_E03Bh Bit Description [7] PWMTENL PWM Timer Interrupt Request Enable Low Bit [6] U1RENL UART 1 Receive Interrupt Request Enable Low Bit [5] U1TENL UART 1 Transmit Interrupt Request Enable Low Bit [4] PWMFENL PWM Fault Interrupt Request Enable Low Bit [3:0] CxENL/ DMAxENL Port Cx or DMAx Interrupt Request Enable Low Bit. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 69 Timers Z16FMC Series MCUs contain three 16-bit reloadable timers used for timing, event counting, or generation of pulse width modulated (PWM) signals. Features The timers include the following features: • 16-bit reload counter • Programmable prescaler with values ranging from 1 to 128 • PWM output generation (single or differential) • Capture and compare capability • External input pin for event counting, clock gating, or capture signal • Complementary timer output pins • Timer interrupt Architecture Capture and compare capability measures the velocity from a tachometer wheel or reads sensor outputs for rotor position for brushless DC motor commutation. Figure 10 displays the architecture of the timer. PS028706-0813 PRELIMINARY Timers Z16FMC Series Motor Control MCUs Product Specification 70 Timer Block Data Bus Block Control 16-Bit Reload Register System Clock Compare Timer Control Timer Input Gate Input Capture Input 16-Bit PWM/Compare Timer Interrupt TOUT TOUT Compare 16-Bit Counter with Prescaler Interrupt, PWM, and Timer Output Control Figure 10. Timer Block Diagram Operation The general-purpose timer is a 16-bit up-counter. In normal operation, the timer is initialized to 0001h. When the timer is enabled, it counts up to the value contained in the reload High and Low Byte registers, then resets to 0001h. The counter either halts or continues depending on the mode. Minimum time-out delay (1 system clock) is set by loading the value 0001h into the Timer Reload High and Low Byte registers and setting the prescale value to 1. Maximum time-out delay (216 * 27 system clocks) is set by loading the value 0000h into the Timer Reload High and Low Byte registers and setting the prescale value to 128. When the timer reaches FFFFh, the timer rolls over to 0000h. If the reload register is set to a value less than the current counter value, the counter continues counting until it reaches FFFFh, then resets to 0000h. Next, the timer continues to count until it reaches the reload value and it resets to 0001h. Note: When T0IN0, T0IN1 and T0IN2 functions are enabled on the PB0, PB1 and PB2 pins, each Timer0 input will have the same effect as the single Timer0 input pin, T0IN. For example, if the Timer 0 is in CAPTURE Mode, any transitions on any of the PB0, PB1 and PB2 pins will cause a capture. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 71 Timer Operating Modes The timers are configured to operate in the following modes: ONE-SHOT Mode In ONE-SHOT Mode, the timer counts up to the 16-bit reload value stored in the Timer Reload High and Low Byte registers. The timer input is the system clock. When the timer reaches the reload value, it generates an interrupt and the count value in the Timer High and Low Byte registers is reset to 0001h. The timer is automatically disabled and stops counting. If the timer output alternate function is enabled, the timer output pin changes state for one system clock cycle (from Low to High, then back to Low if TPOL = 0) at timer reload. If the timer output is required to make a permanent state change on ONE-SHOT time-out, first set the TPOL bit in the Timer Control 1 Register to the start value before beginning ONE-SHOT Mode. Next, after starting the timer, set TPOL to the opposite value. Observe the following steps to configure a timer for ONE-SHOT Mode and initiate the count. 1. Write to the timer control registers to: – Disable the timer – Configure the timer for ONE-SHOT Mode – Set the prescale value – Set the initial output level (High or Low) using the TPOL bit for the timer output alternate function – Set the INTERRUPT Mode 2. Write to the Timer High and Low Byte registers to set the starting count value. 3. Write to the timer reload High and Low Byte registers to set the reload value. 4. Enable the timer interrupt, if required and set the timer interrupt priority by writing to the relevant interrupt registers. 5. When using the timer output function, configure the associated GPIO port pin for the timer output alternate function. 6. Write to the Timer Control 1 Register to enable the timer and initiate counting. The timer period is calculated by the following equation (start value = 1): One-Shot Mode Time-Out Period(s) PS028706-0813 = (Reload Value – Start Value + 1) x Prescale PRELIMINARY System Clock Frequency (Hz) Operation Z16FMC Series Motor Control MCUs Product Specification 72 TRIGGERED ONE-SHOT Mode In TRIGGERED ONE-SHOT Mode, the timer operates as follows: 1. The timer is nonactive until a trigger is received. The timer trigger is taken from the timer input pin. The TPOL bit in the Timer Control 1 Register selects whether the trigger occurs on the rising edge or the falling edge of the timer input signal. 2. Following the trigger event, the timer counts system clocks up to the 16-bit reload value stored in the timer reload High and Low Byte registers. 3. After reaching the reload value, the timer outputs a pulse on the timer output pin, generates an interrupt and resets the count value in the Timer High and Low Byte registers to 0001h. The duration of the output pulse is a single system clock. The TPOL bit also sets the polarity of the output pulse. 4. The timer now idles until the next trigger event. Trigger events, which occur while the timer is responding to a previous trigger is ignored. Observe the following steps to configure timer 0 in TRIGGERED ONE-SHOT Mode and initiate operation: 1. Write to the timer control registers to: – Disable the timer – Configure the timer for TRIGGERED ONE-SHOT Mode – Set the prescale value – Set the initial output level (High or Low) via the TPOL bit for the timer output alternate function – Set the INTERRUPT Mode 2. Write to the Timer High and Low Byte registers to set the starting count value. 3. Write to the timer reload High and Low Byte registers to set the reload value. 4. Enable the timer interrupt, if required and set the timer interrupt priority by writing to the relevant interrupt registers. 5. When using the timer output function, configure the associated GPIO port pin for the timer output alternate function. 6. Write to the Timer Control 1 Register to enable the timer. Counting does not start until the appropriate input transition occurs. The timer period is calculated by the following equation (Start Value = 1): Triggered One-Shot Mode Time-Out Period(s) PS028706-0813 = (Reload Value – Start Value +1) x Prescale PRELIMINARY System Clock Frequency (Hz) Operation Z16FMC Series Motor Control MCUs Product Specification 73 CONTINUOUS Mode In CONTINUOUS Mode, the timer counts up to the 16-bit reload value stored in the timer reload High and Low Byte registers. After reaching the reload value, the timer generates an interrupt, the count value in the Timer High and Low Byte registers is reset to 0001h and counting resumes. If the timer output alternate function is enabled, the timer output pin changes state (from Low to High or High to Low) after timer reload. Observe the following steps to configure a timer for CONTINUOUS Mode and initiate count: 1. Write to the timer control registers to: – Disable the timer – Configure the timer for CONTINUOUS Mode – Set the prescale value – Set the initial output level (High or Low) through TPOL for the timer output alternate function 2. Write to the Timer High and Low Byte registers to set the starting count value (usually 0001h). This only affects the first pass in CONTINUOUS Mode. After the first timer reload in CONTINUOUS Mode, counting always begins at the reset value of 0001h. 3. Write to the timer reload High and Low Byte registers to set the reload period. 4. Enable the timer interrupt, if required and set the timer interrupt priority by writing to the relevant interrupt registers. 5. When using the timer output function, configure the associated GPIO port pin for the timer output alternate function. 6. Write to the Timer Control 1 Register to enable the timer and initiate counting. The timer period is calculated by the following equation: Continuous Mode Time-Out Period(s) = Reload Value x Prescale System Clock Frequency (Hz) If an initial starting value other than 0001h is loaded into the Timer High and Low Byte registers, use the ONE-SHOT Mode equation to determine the first time-out period. COUNTER and COMPARATOR COUNTER Modes In COUNTER Mode, the timer counts input transitions from a GPIO port pin. The timer input is taken from the associated GPIO port pin. The TPOL bit in the Timer Control 1 Register selects whether the count occurs on the rising edge or the falling edge of the timer input signal. In COUNTER Mode, the prescaler is disabled. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 74 Caution: The input frequency of the timer input signal must not exceed one-fourth the system clock frequency. In COMPARATOR COUNTER Mode, the timer counts output transitions from an analog comparator output. The timer takes its input from the output of the comparator. The TPOL bit in the Timer Control 1 Register selects whether the count occurs on the rising edge or the falling edge of the comparator output signal. The prescaler is disabled in the COMPARATOR COUNTER Mode. Caution: The frequency of the comparator output signal must not exceed one-fourth the system clock frequency. After reaching the reload value stored in the timer reload High and Low Byte registers, the timer generates an interrupt. The count value in the Timer High and Low Byte registers is reset to 0001h and counting resumes. If the timer output alternate function is enabled, the timer output pin changes state (from Low to High or High to Low) at timer reload. Observe the following steps to configure a timer for COUNTER and COMPARATOR COUNTER modes and initiate the count: 1. Write to the timer control registers to: – Disable the timer – Configure the timer for COUNTER or COMPARATOR COUNTER Mode – Select either the rising edge or falling edge of the timer input or comparator output signal for the count. This selection also sets the initial logic level (High or Low) for the timer output alternate function. However, the timer output function does not require enabling. 2. Write to the timer reload High and Low Byte registers to set the starting count value. This affects only the first pass in the COUNTER modes. After the first timer reload, counting always begins at the reset value of 0001h. 3. Write to the timer reload High and Low Byte registers to set the reload value. 4. Enable the timer interrupt, if appropriate and set the timer interrupt priority by writing to the relevant interrupt registers. 5. Configure the associated GPIO port pin for the timer input alternate function (COUNTER Mode). PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 75 6. When using the timer output function, configure the associated GPIO port pin for the timer output alternate function. 7. Write to the Timer Control 1 Register to enable the timer. PWM SINGLE and DUAL OUTPUT Modes In PWM SINGLE OUTPUT Mode, the timer outputs a PWM output signal through a GPIO Port pin. In PWM DUAL OUTPUT Mode, the timer outputs a PWM output signal and also its complement through two GPIO port pins. The timer first counts up to the 16bit PWM match value stored in the timer PWM High and Low Byte registers. When the timer count value matches the PWM value, the timer output toggles. The timer continues counting until it reaches the reload value stored in the timer reload High and Low Byte registers. When it reaches the reload value, the timer generates an interrupt. The count value in the Timer High and Low Byte registers is reset to 0001h and counting resumes. The timer output signal begins with value = TPOL, then transits to TPOL when the timer value matches the PWM value. The timer output signal returns to TPOL after the timer reaches the reload value and is reset to 0001h. In PWM DUAL OUTPUT Mode, the timer also generates a second PWM output signal, timer output complement (TOUT). A programmable deadband is configured (PWMD field) to delay (0 to 128 system clock cycles) the Low to a High (inactive to active) output transitions on these two pins. This configuration ensures a time gap between the deassertion of one PWM output to the assertion of its complement. Observe the following steps to configure a timer for PWM SINGLE or DUAL OUTPUT Mode and initiate the PWM operation: 1. Write to the timer control registers to: – Disable the timer. – Configure the timer for the selected PWM Mode. – Set the prescale value. – Set the initial logic level (High or Low) and PWM High or Low transition for the timer output alternate function with the TPOL bit. – Set the deadband delay (DUAL OUTPUT Mode) with the PWMD field. 2. Write to the Timer High and Low Byte registers to set the starting count value (typically 0001h). The starting count value only affects the first pass in PWM Mode. After the first timer reset in PWM Mode, counting always begins at the reset value of 0001h. 3. Write to the PWM High and Low Byte registers to set the PWM value. 4. Write to the timer reload High and Low Byte registers to set the reload value (PWM period). The reload value must be greater than the PWM value. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 76 5. Enable the timer interrupt, if required and set the timer interrupt priority by writing to the relevant interrupt registers. 6. Configure the associated GPIO port pin(s) for the timer output alternate function. 7. Write to the Timer Control 1 Register to enable the timer and initiate counting. The PWM period is determined by the following equation: PWM Period(s) = Reload Value x Prescale System Clock Frequency (Hz) If an initial starting value other than 0001h is loaded into the Timer High and Low Byte registers, use the ONE-SHOT Mode equation to determine the first PWM time-out period. If TPOL is set to 0, the ratio of the PWM output High time to the total period is determined by: PWM Output High Time Ration (%) = Reload Value – PWM Value Reload Value x 100 If TPOL is set to 1, the ratio of the PWM output High time to the total period is determined by: PWM Output High Time Ration (%) = PWM Value Reload Value x 100 CAPTURE Modes There are three CAPTURE modes which provide slightly different methods for recording the time or time interval between timer input events. These modes are CAPTURE Mode, CAPTURE RESTART Mode and CAPTURE COMPARE Mode. In all the three modes, when the appropriate timer input transition (capture event) occurs, the timer counter value is captured and stored in the PWM high and low Byte registers. The TPOL bit in the Timer Control 1 Register determines if the Capture occurs on a rising edge or a falling edge of the timer input signal. The TICONFIG bit determines whether interrupts are generated on capture events, reload events, or both. The INCAP bit in Timer Control 0 Register clears to indicate an interrupt caused by a reload event and sets to indicate the timer interrupt is caused by an input capture event. If the timer output alternate function is enabled, the timer output pin changes state (from Low to High or High to Low) at timer reload. The initial value is determined by the TPOL bit. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 77 CAPTURE Mode When the timer is enabled in CAPTURE Mode, it counts continuously and resets to 0000h from FFFFh. When the capture event occurs, the timer counter value is captured and stored in the PWM High and Low Byte registers, an interrupt is generated and the timer continues counting. The timer continues counting up to the 16-bit reload value stored in the timer reload High and Low Byte registers. On reaching the reload value, the timer generates an interrupt and continues counting. CAPTURE RESTART Mode When the timer is enabled in CAPTURE RESTART Mode, it counts continuously until the capture event occurs or the timer count reaches the 16-bit Compare value stored in the timer reload High and Low Byte registers. If the Capture event occurs first, the timer counter value is captured and stored in the PWM High and Low Byte registers, an interrupt is generated and the count value in the Timer High and Low Byte registers is reset to 0001h and counting resumes. If no Capture event occurs, on reaching the reload value, the timer generates an interrupt, the count value in the Timer High and Low Byte registers is reset to 0001h and counting resumes. CAPTURE/COMPARE Mode The CAPTURE/COMPARE Mode is identical to CAPTURE RESTART Mode except that counting does not start until the first appropriate external Timer Reload High and Low Byte input transition occurs. Every subsequent appropriate transition (after the first) of the Timer Reload High and Low Byte input signal captures the current count value. When the Capture event occurs, an interrupt is generated, the count value in the Timer Reload High and Low byte High and Low Byte registers is reset to 0001h and counting resumes. If no Capture event occurs, on reaching the Compare value, the timer generates an interrupt, the count value in the Timer High and Low Byte registers is reset to 0001h and counting resumes. Observe the following steps to configure a timer for one of the CAPTURE modes and initiate the count: 1. Write to the timer control registers to: – Disable the timer – Configure the timer for the selected CAPTURE Mode – Set the prescale value – Set the Capture edge (rising or falling) for the timer input – Configure the timer interrupt to be generated at the input capture event, the reload event or both by setting TICONFIG field 2. Write to the timer reload High and Low Byte registers to set the starting count value (typically 0001h). PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 78 3. Write to the timer reload High and Low Byte registers to set the reload value. 4. Enable the timer interrupt, if appropriate and set the timer interrupt priority by writing to the relevant interrupt registers. 5. Configure the associated GPIO port pin for the timer input alternate function. 6. Write to the Timer Control 1 Register to enable the timer. In CAPTURE and CAPTURE RESTART modes, the timer begins counting. In CAPTURE COMPARE Mode the timer does not start counting until the first appropriate input transition occurs. In CAPTURE modes, the elapsed time from timer start to Capture event is calculated using the following equation (start value = 1): Capture Elapsed Time(s) = (Capture Value – Start Value + 1) x Prescale System Clock Frequency (Hz) COMPARE Mode In COMPARE Mode, the timer counts up to the 16-bit Compare value stored in the timer reload High and Low Byte registers. After reaching the compare value, the timer generates an interrupt and counting continues (the timer value is not reset to 0001h). If the timer output alternate function is enabled, the timer output pin changes state (from Low to High or High to Low). If the timer reaches FFFFh, the timer rolls over to 0000h and continues counting. Observe the following steps to configure timer for COMPARE Mode and initiate the count: 1. Write to the timer control registers to: – Disable the timer – Configure the timer for COMPARE Mode – Set the prescale value – Set the initial logic level (High or Low) for the timer output alternate function, if required 2. Write to the Timer High and Low Byte registers to set the starting count value. 3. Write to the timer reload High and Low Byte registers to set the Compare value. 4. Enable the timer interrupt, if appropriate and set the timer interrupt priority by writing to the relevant interrupt registers. 5. When using the timer output function, configure the associated GPIO port pin for the timer output alternate function. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 79 6. Write to the Timer Control 1 Register to enable the timer and initiate counting. The compare time is calculated by the following equation (Start Value = 1): Compare Mode Time(s) = (Compare Value – Start Value + 1) x Prescale System Clock Frequency (Hz) GATED Mode In GATED Mode, the timer counts only when the timer input signal is in its active state as determined by the TPOL bit in the Timer Control 1 Register. When the timer input signal is active, counting begins. A timer interrupt is generated when the timer input signal transits from active to inactive state or a timer reload occurs. To determine if a timer input signal deassertion generated the interrupt, read the associated GPIO input value and compare to the value stored in the TPOL bit. The timer counts up to the 16-bit reload value stored in the timer reload High and Low Byte registers. On reaching the reload value, the timer generates an interrupt, the count value in the Timer High and Low Byte registers is reset to 0001h and counting continues as long as the timer input signal is active. If the timer output alternate function is enabled, the timer output pin changes state (from Low to High or from High to Low) at timer reload. Observe the following steps to configure a timer for GATED Mode and initiate the count: 1. Write to the timer control registers to: – Disable the timer – Configure the timer for GATED Mode – Set the prescale value – Select the active state of the timer input through the TPOL bit 2. Write to the Timer High and Low Byte registers to set the initial count value. This affects only the first pass in GATED Mode. After the first timer Reset in GATED Mode, counting always begins at the reset value of 0001h. 3. Write to the timer reload High and Low Byte registers to set the reload value. 4. Enable the timer interrupt and set the timer interrupt priority by writing to the relevant interrupt registers. 5. Configure the timer interrupt to be generated only at the input deassertion event, the reload event, or both by setting TICONFIG field of the Timer Control 0 Register. 6. Configure the associated GPIO port pin for the timer input alternate function. 7. Write to the Timer Control 1 Register to enable the timer. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 80 8. The timer counts when the timer input is equal to the TPOL bit. Reading Timer Count Values The current count value in the timer is read while counting (enabled). This has no effect on timer operation. Normally, the count must be read with one 16-bit operation. However, 8-bit reads are performed using with the following method. When the timer is enabled and the Timer High Byte Register is read, the contents of the Timer Low Byte Register are placed in a holding register. A subsequent read from the Timer Low Byte Register returns the value in the holding register. This operation allows accurate reads of the full 16-bit timer count value when enabled. When the timer is not enabled, a read from the Timer Low Byte Register returns the actual value in the counter. The Timers can be cascaded by using the Cascade bit in the Timer control registers. When this bit is set for a Timer, the input source is redefined. When the Cascade bit is set for Timer0, the input for Timer0 is the output of the Analog Comparator. When the Cascade bit is set for Timer1 and Timer2, the output of Timer0 and Timer1 become the input for Timer1 and Timer2, respectively. Any Timer Mode can be used. Timer0 can be cascaded to Timer1 only by setting the Cascade bit for Timer1. Timer1 cascaded to Timer2 only by setting the Cascade bit for Timer2. Or all three cascaded, Timer0 to Timer1 or Timer2 for really long counts by setting the Cascade bit for Timer1 and Timer2. Timer Control Register Definitions This section presents the timer high-/low-byte, reload, PWM, and control registers. Timer 0–2 High and Low Byte Registers The Timer 0–2 High and Low Byte registers (TxH and TxL), shown in Tables 44 and 45, contain the current 16-bit timer count value. When the timer is enabled, a read from TxH stores the value in TxL to a temporary holding register. A read from TxL always returns this temporary register when the timer is enabled. When the timer is disabled, reads from the TxL reads the register directly. Writing to the Timer High and Low Byte registers while the timer is enabled is not recommended. There are no temporary holding registers available for Write operations, so simultaneous 16-bit writes are not possible. When either of the Timer High or Low Byte registers are written during counting, the 8-bit written value is placed in the counter (High or Low Byte) at the next clock edge. The counter continues counting from the new value. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 81 Table 44. Timer 0–2 High Byte Register (TxH) Bit 7 6 5 4 3 Field TH RESET 00h R/W R/W ADDR 2 1 0 FF_E300h, FF_E310h, FF_E320h Bit Description [7:0] TH Timer High Byte TH is one of two bytes {TH[7:0], TL[7:0]} which contain the current 16-bit timer count value. Table 45. Timer 0–2 Low Byte Register (TXL) Bit 7 6 5 4 3 Field TL RESET 01h R/W R/W ADDR 2 1 0 FF_E301h, FF_E311h, FF_E321h Bit Description [7:0] TL Timer Low Byte TL is one of two bytes {TH[7:0], TL[7:0]} which contain the current 16-bit timer count value. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 82 Timer X Reload High and Low Byte Registers The timer 0–2 Reload High and Low Byte registers (TxRH and TxRL), shown in Tables 46 and 47, store a 16-bit reload value, {TRH[7:0], TRL[7:0]}. Values written to the Timer Reload High Byte Register are stored in a temporary holding register. When a write to the timer reload low byte register occurs, the temporary holding register value is written to the Timer High Byte Register. This operation allows simultaneous updates of the 16-bit timer reload value. Table 46. Timer 0–2 Reload High Byte Register (TxRH) Bit 7 6 5 4 3 Field TRH RESET FFh R/W R/W ADDR 2 1 0 FF_E302h, FF_E312h, FF_E322h Bit Description 7:0 TRH Timer Reload Register High TRH is one of two bytes which form the 16-bit reload value, {TRH[7:0], TRL[7:0]}. This value sets the maximum count value which initiates a timer reload to 0001h. Table 47. Timer 0–2 Reload Low Byte Register (TxRL) Bit 7 Field 6 5 4 3 2 1 0 TRL RESET FF R/W R/W ADDR FF_E303h, FF_E313h, FF_E323h Bit Description 7:0 TRL Timer Reload Register Low TRL is one of two bytes which form the 16-bit reload value, {TRH[7:0], TRL[7:0]}. This value sets the maximum count value which initiates a timer reload to 0001h. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 83 Timer 0–2 PWM High and Low Byte Registers The timer 0–2 PWM High and Low Byte registers (TxPWMH and TxPWML), shown in Tables 48 and 49, define PWM operations. These registers also store the timer counter values for the CAPTURE modes. Table 48. Timer 0–2 PWM High Byte Register (TxPWMH) Bit 7 6 5 4 Field 3 2 1 0 PWMH RESET 00h R/W R/W ADDR FF_E304h, FF_E314h, FF_E324h Bit Description 7:0 PWMH Pulse-Width Modulator High Byte PWMH is one of two bytes, {PWMH[7:0], PWML[7:0]}, which form a 16-bit value that is compared to the current 16-bit timer count. When a match occurs, the PWM output changes state. The PWM output value is set by the TPOL bit in the Timer Control 1 Register (TxCTL1). The TxPWMH and TxPWML registers also store the 16-bit captured timer value when operating in CAPTURE or CAPTURE/COMPARE modes. Table 49. Timer 0–2 PWM Low Byte Register (TxPWML) Bit 7 Field 6 5 4 3 2 1 0 PWML RESET 00h R/W R/W ADDR FF_E305h, FF_E315h, FF_E315h Bit Description 7:0 PWML Pulse-Width Modulator Low Byte PWHL is one of two bytes, {PWMH[7:0], PWML[7:0]}, which form a 16-bit value that is compared to the current 16-bit timer count. When a match occurs, the PWM output changes state. The PWM output value is set by the TPOL bit in the Timer Control 1 Register (TxCTL1). The TxPWMH and TxPWML registers also store the 16-bit captured timer value when operating in CAPTURE or CAPTURE/COMPARE modes. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 84 Timer 0–2 Control Registers Timer 0–2 Control 0 Register The Timer 0–2 Control 0 (TxCTL0) Register, together with the Timer 0–2 Control 1 (TxCTL1) Register, determines timer configuration and operation. Table 50. Timer 0–2 Control 0 Register (TxCTL0) Bit Field RESET R/W 7 6 5 4 3 2 1 0 TMODE[3] TICONFIG CASCADE PWMD INCAP 0 00 0 000 0 R/W R/W R/W R/W R ADDR FF_E306h, FF_E316h, FF_E326h Bit Description [7] TMODE[3] Timer Mode High Bit This bit, along with the TMODE[2:0] field in T0CTL1 Register, determines the operating mode of the timer; it is the most significant bit of the timer mode selection value. For more details, see the T0CTL1 Register description. [6:5] TICONFIG Timer Interrupt Configuration This field configures timer interrupt definitions. These bits affect all modes. The effect per mode is explained below. ONE SHOT, CONTINUOUS, COUNTER, PWM, COMPARE, DUAL PWM, TRIGGERED ONE-SHOT, COMPARATOR COUNTER 0x = Timer interrupt occurs on reload. 10 = Timer interrupts are disabled. 11 = Timer Interrupt occurs on reload. GATED 0x = Timer interrupt occurs on reload. 10 = Timer interrupt occurs on inactive gate edge. 11 = Timer interrupt occurs on reload. CAPTURE, CAPTURE/COMPARE, CAPTURE RESTART 0x = Timer interrupt occurs on reload and capture. 10 = Timer interrupt occurs on capture only. 11 = Timer interrupt occurs on reload only. [4] CASCADE Timer Cascade This field allows the timers to be cascaded for larger counts. Only Counter Mode must be used with this feature. 0 = The timer is not cascaded. 1 = Timer is cascaded. If timer 0 CASCADE bit is set, ANALOG COMPARATOR output is used as input. If timer 1 CASCADE bit is set, the Timer 0 output is used as the input. If timer 2 CASCADE bit is set, the timer 1 output is used as input. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 85 Bit Description (Continued) [3:1] PWMD PWM Delay Value This field is a programmable delay to control the number of additional system clock cycles following a PWM or reload compare before the timer output or the timer output complement is switched to the active state. This field ensures a time gap between deassertion of one PWM output to the assertion of its complement. 000 = No delay. 001 = 2 cycles delay. 010 = 4 cycles delay. 011 = 8 cycles delay. 100 = 16 cycles delay. 101 = 32 cycles delay. 110 = 64 cycles delay. 111 = 128 cycles delay. [0] INCAP Input Capture Event 0 = The most recent timer interrupt is not a result of a timer input capture event. 1 = The most recent timer interrupt is a result of a timer input capture event. Timer 0–2 Control 1 Register The Timer 0–2 control 1 (TxCTL1) register enables/disables the timer, sets the prescaler value and determines the timer operating mode. Table 51. Timer 0–2 Control 1 Register (TxCTL1) BITS 7 6 FIELD TEN TPOL PRES TMODE RESET 0 0 000 000 R/W R/W R/W R/W R/W ADDR 5 4 3 2 1 0 FF_E307h, FF_E317h, FF_E327h Bit Description [7] TEN Timer Enable 0 = Timer is disabled. 1 = Timer is enabled. Note: This TEN bit is cleared automatically when the timer stops. [6] TPOL Timer Input/Output Polarity This bit is a function of the current operating mode of the timer. It determines the polarity of the input and/or output signal. When the timer is disabled, the timer output signal is set to the value of this bit. ONE-SHOT Mode. If the timer is enabled, the timer output signal pulses (changes state) for one system clock cycle after timer reload. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 86 Bit Description (Continued) [6] TPOL (cont’d.) CONTINUOUS Mode. If the timer is enabled, the timer output signal is complemented after timer reload. COUNTER Mode. If the timer is enabled, the timer output signal is complemented after timer reload. 0 = Count occurs on the rising edge of the timer input signal. 1 = Count occurs on the falling edge of the timer input signal. PWM SINGLE OUTPUT Mode. When enabled, the timer output is forced to TPOL after PWM count match and forced back to TPOL after reload. CAPTURE Mode. If the timer is enabled, the timer output signal is complemented after timer reload. 0 = Count is captured on the rising edge of the timer input signal. 1 = Count is captured on the falling edge of the timer input signal. COMPARE Mode. The timer output signal is complemented after timer reload. GATED Mode. The timer output signal is complemented after timer reload. 0 = Timer counts when the timer input signal is High and interrupts are generated on the falling edge of the timer input. 1 = Timer counts when the timer input signal is Low and interrupts are generated on the rising edge of the timer input. CAPTURE/COMPARE Mode. If the timer is enabled, the timer output signal is complemented after timer reload. 0 = Counting starts on the first rising edge of the timer Input signal.  The current count is captured on subsequent rising edges of the timer  input signal. 1 = Counting starts on the first falling edge of the timer input signal.  The current count is captured on subsequent falling edges of the timer input signal. PWM DUAL OUTPUT Mode. If enabled, the timer output is set=TPOL after PWM match and set = TPOL after reload. If enabled the timer output complement takes on the opposite value of the timer output. The PWMD field in the T0CTL1 Register determines an optional added delay on the assertion (Low to High) transition of both timer output and the timer output complement for deadband generation. CAPTURE RESTART Mode. If the timer is enabled, the timer output signal is complemented after timer reload. 0 = Count is captured on the rising edge of the timer input signal. 1 = Count is captured on the falling edge of the timer input signal. ANALOG COMPARATOR COUNTER Mode. If the timer is enabled, the timer output signal is complemented after timer reload. 0 = Count is captured on the rising edge of the timer input signal. 1 = Count is captured on the falling edge of the timer input signal. TRIGGERED ONE-SHOT Mode. If the timer is enabled, the timer output signal is complemented after timer reload. 0 = The timer triggers on a Low to High transition on the input. 1 = The timer triggers on a High to Low transition on the input. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 87 Bit Description (Continued) [5–3] PRES Prescaler The timer input clock is divided by 2PRES, where PRES is set from 0 to 7. The prescaler is reset each time the timer is disabled. This ensures proper clock division each time the timer is restarted. 000 = Divide by 1. 001 = Divide by 2. 010 = Divide by 4. 011 = Divide by 8. 100 = Divide by 16. 101 = Divide by 32. 110 = Divide by 64. 111 = Divide by 128. [2:0] TMODE Timer Mode This field, along with the TMODE[3] bit in T0CTL0 Register, determines the operating mode of the timer. TMODE[3:0] selects from the following modes:  0000 = ONE-SHOT Mode. 0001 = CONTINUOUS Mode. 0010 = COUNTER Mode. 0011 = PWM SINGLE OUTPUT Mode. 0100 = CAPTURE Mode. 0101 = COMPARE Mode. 0110 = GATED Mode. 0111 = CAPTURE/COMPARE Mode. 1000 = PWM DUAL OUTPUT Mode. 1001 = CAPTURE RESTART Mode. 1010 = COMPARATOR COUNTER Mode. 1011 = TRIGGERED ONE-SHOT Mode. PS028706-0813 PRELIMINARY Timer Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 88 Multi-Channel PWM Timer Z16FMC Series MCUs include a Multi-Channel PWM optimized for motor control applications. The PWM includes the following features: • Six independent PWM outputs or three complementary PWM output pairs. • Programmable deadband insertion for complementary output pairs. • Edge-aligned or center-aligned PWM signal generation. • PWM off-state is an option bit programmable. • PWM outputs driven to off-state on System Reset. • Asynchronous disabling of PWM outputs on system fault. Outputs are forced to offstate. • Fault inputs generate pulse-by-pulse or hard shutdown. • 12-bit reload counter with 1, 2, 4, or 8 programmable clock prescaler. • High current source and sink on all PWM outputs. • PWM pairs used as general purpose inputs when outputs are disabled. • ADC synchronized with PWM period. • Synchronization for current-sense sample and hold. • Narrow pulse suppression with programmable threshold. Architecture The PWM unit consists of a master timer to generate the modulator time base and six independent compare registers to set the PWM for each output. The six outputs are designed to provide control signals for inverter drive circuits. The outputs are grouped into pairs consisting of a high-side driver and a low-side driver output. The output pairs are programmable to operate independently or as complementary signals. In complementary output mode, a programmable dead-time is inserted to ensure nonoverlapping signal transitions. The master count and compare values feed into modulator logic which generates the proper transitions in the output states. Output polarity and fault/offstate control logic allows programming of the default off-states which forces the outputs to a safe state in the event a fault in the motor drive is detected. Figure 11 displays the architecture of the PWM modulator. PS028706-0813 PRELIMINARY Multi-Channel PWM Timer Z16FMC Series Motor Control MCUs Product Specification 89 ISense S/H 12-bit Counter with Prescaler Control Logic IRQ ADC Trig Fault inputs PWM Deadband Data Bus PWMH0D System Clock PWM State Logic Fault Polarity Logic PWM State Logic Fault Polarity Logic PWMH1 PWM State Logic Fault Polarity Logic PWMH2 PWMH0 PWML0 PWML0D PWMH1D PWML1 PWML1D PWMH2D PWML2 PWML2D Figure 11. PWM Block Diagram Operation This section discusses the operational aspects of Z16FMC Series pulse-width modulation, and presents tabled bit descriptions for the PWM high-/low-byte, reload, duty cycle, and control registers. PWM Option Bit To protect the configuration of critical PWM parameters, settings to enable output channels and the default off-state are maintained as user option bits. These values are set when PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 90 the user program code is written to the part and the software cannot change these values (see the Option Bit chapter on page 260). PWM Output Polarity and Off-State The default off-state and polarity of the PWM outputs are controlled by the option bits PWMHI and PWMLO. The PWMHI option controls the off-state and polarity for PWM high-side outputs PWMH0, PWMH1 and PWMH2. The PWMLO option controls the offstate and polarity for low-side outputs PWML0, PWML1 and PWML2. The off-state is the value programmed in the option bit. For example, programming PWMHI to 1 makes the off-state of PWMH0, PWMH1 and PWMH2 a High logic value and the active state a Low logic value. Conversely, programming PWMHI to 0 causes the off-state to be a Low logic value. PWMLO is programmed in a similar manner. PWM Enable The MCEN option bit enables output pairs PWM0, PWM1 and PWM2. If the Motor Control option is not enabled, the PWM outputs remain in a high-impedance state after reset and is used as alternate functions like general purpose input. If the Motor Control option is enabled, following a Power-On Reset (POR) the PWM pins enter a high impedance state. As the internal reset proceeds, the PWM outputs are forced to the off-state as determined by the PWMHI and PWMLO off-state option bits. PWM Reload Event To prevent erroneous PWM pulse-widths and periods, registers that control the timing of the output are buffered. Buffering causes all the PWM compare values to update. In other words, the registers controlling the duty cycle and clock source prescaler only take effect on a PWM reload event. A PWM reload event is configured to occur at the end of each PWM period or only every 2, 4, or 8 PWM periods by setting the RELFREQ bits in the PWM Control 1 Register (PWMCTL1). Software indicates that all new values are ready by setting the READY bit in the PWM Control 0 Register (PWMCTL0) to 1. When the READY bit is set to 1, the buffered values take effect at the next reload event. PWM Prescaler The prescaler decreases the PWM clock signal by factors of 1, 2, 4, or 8 with respect to the system clock. The PRES[1:0] bit field in the PWM Control 1 Register (PWMCTL1) controls prescaler operation. This 2-bit PRES field is buffered so that the prescale value only changes on a PWM Reload event. PWM Period and Count Resolution The PWM counter operates in two modes to allow edge-aligned and center-aligned outputs. Figures 12 and 13 illustrate edge and center-aligned PWM outputs. The mode in PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 91 which the PWM operates determine the period of the PWM outputs (PERIOD). The programmed duty-cycle (PWMDC) and the programmed deadband time (PWMDB) determine the active time of a PWM output. The following sections describe the PWM TIMER modes and the registers controlling the duty-cycle and deadband time. PWMxH No Dead Band PWMLx PERIOD PWMHx Dead Band Insertion PWMLx PWMDB PWMDB PWMDC Figure 12. Edge-Aligned PWM Output PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 92 PWMHx No Dead Band PWMLx PERIOD PWMHx Dead Band Insertion PWMLx PWMDB PWMDB Figure 13. Center-Aligned PWM Output EDGE-ALIGNED Mode In EDGE-ALIGNED PWM Mode, a 12-bit up counter creates the PWM period with a minimum resolution equal to the PWM clock source period. The counter counts up to the reload value, resets to 000h, then resumes counting. Prescaler  Reload Value Edge-Aligned PWM Mode Period = ------------------------------------------------------------f PWMclk CENTER-ALIGNED Mode In CENTER-ALIGNED PWM Mode, a 12-bit up/down counter creates the PWM period with a minimum resolution equal to twice the PWM clock source period. The counter counts up to the reload value, then counts down to 0. 2  Prescaler  Reload Value Center-Aligned PWM Mode Period = ---------------------------------------------------------------------f PWMclk PWM Duty Cycle Registers The PWM duty cycle registers (PWMH0D, PWML0D, PWMH1D, PWML1D, PWMH2D, PWML2D) contain a 16-bit signed value where bit 15 is the sign bit. The duty cycle value is compared to the current 12-bit unsigned PWM count value. If the PWM PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 93 duty cycle value is set less than or equal to 0, the PWM output is deasserted for full PWM period. If the PWM duty cycle value is set to a value greater than the PWM reload value, the PWM output is asserted for full PWM period. Independent and Complementary PWM Outputs The six PWM outputs are configured to operate independently or as three complementary pairs. Operation as six independent PWM channels are enabled by setting the INDEN bit in the PWM Control 1 Register (PWMCTL1). In INDEPENDENT Mode, each PWM output uses its own PWM duty cycle value. When PWM outputs are configured to operate as three complementary pairs, the PWM duty cycle values PWMH0D, PWMH1D and PWMH2D control the modulator output. In COMPLEMENTARY OUTPUT Mode, deadband time is also inserted. The POLx bits in the PWM Control 1 Register (PWMCTL1) select the relative polarity of the high- and low-side signals. As illustrated in Figures 12 and 13 , when the POLx bits are cleared to 0, the PWM high-side output will start in the on-state and transits to the offstate when the PWM timer count reaches the programmed duty cycle. The low-side PWM value starts in the off-state and transits to the on-state as the PWM timer count reaches the value in the associated duty cycle register. Alternately, setting the POLx causes the highside output to start in the off-state and the low-side output to start in the on-state. Manual Off-state Control of PWM Output Channels Each PWM output is controlled directly by the modulator logic or set to the off-state. To manually set the PWM output to the off-state, set the OUTCTL bit and the associated OUTx bits in the PWM Output Control Register (PWMOUT). Off-state control operates individually by channel. For example, suppressing a single output of pair allows the complementary channel to continue operating. Similarly, if the outputs are operating independently disabling one output channel has no effect on the other PWM outputs. Deadband Insertion When the PWM outputs are configured to operate as complementary pairs, an 8-bit deadband value is defined in the PWM Deadband Register (PWMDB). Inserting deadband time causes the modulator to separate the deassertion of one PWM signal from the assertion of its complement. This action is essential for many motor control applications to prevent simultaneous turn-on of the high-side and low-side drive transistors. The deadband counter directly counts system clock cycles and is unaffected by PWM prescaler settings. The width of this deadband is the number of system clock cycles specified in the PWM Deadband Register (PWMDB). The minimum deadband duration is zero system clocks and the maximum time is 255 system clocks. Both PWM outputs of a complementary pair is deasserted during the deadband period. Generation of deadband time does not alter the PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 94 PWM period but the deadband time is subtracted from the active time of the PWM outputs. Figures 12 and 13 display the effect of deadband insertion on the PWM output. Minimum PWM Pulse Width Filter The PWM modulator is capable of producing pulses as narrow as a single system clock cycle in width. The response time of external drive circuit is slower than the period of a system clock. Therefore, a filter is implemented to enforce a minimum width pulse on the PWM output pins. All output pulses, either High or Low, must be at least the minimum number of PWM clock cycles (for details, see the PWM Prescaler section on page 90) in width as specified in the PWM Minimum Pulse Width Filter (PWMMPF) register. If the expected pulse width is less than the threshold, the associated PWM output does not change state until the duty cycle value has changed sufficiently to allow pulse generation of an acceptable width. The minimum pulse width filter also accounts for the duty cycle variation caused by the deadband insertion. The PWM output pulse is filtered even if the programmed duty cycle is greater than the threshold but the decrease in pulse width because of deadband insertion causes the pulse to be too narrow. The pulse width filter value is calculated as: roundup  PWMMPF  = T minPulseOut   T systemClock  PWMprescaler  where TminPulseOut is the shortest allowed pulse width on the PWM outputs (in seconds). Synchronization of PWM and ADC The ADC on Z16FMC Series MCUs is synchronized with the PWM period. Enabling the PWM ADC trigger causes the PWM to generate an ADC conversion signal at the end of each PWM period. Additionally, in CENTER-ALIGNED Mode, the PWM generates a trigger at the center of the period. Setting the ADCTRIG bit in the PWM Control 0 Register (PWMCTL0) enables the ADC synchronization. Synchronized Current-Sense Sample and Hold The PWM controls the current-sense input sample and hold amplifier. The signal controlling the sample/hold is configured to always sample or automatically hold when any or all the PWM High or Low outputs are in the on state. The current-sense sample and hold is controlled by the Current-Sense Sample and Hold Control Register (CSSHR0 and CSSHR1). PWM Timer and Fault Interrupts The PWM generates interrupts to the CPU during any of the following events: PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 95 PWM Reload. The interrupt is generated at the end of a PWM period when a PWM regis- ter reload occurs. PWM Fault. A fault condition is indicated by asserting any FAULT pins or by the asser- tion of the comparator. Fault Detection and Protection Z16FMC Series MCUs contain hardware and software fault controls that allow rapid deassertion of all enabled PWM output signals. A logic Low on an external fault pin (FAULT0 or FAULT1) or the assertion of the over current comparator forces the PWM outputs to the predefined off-state. Similar deassertion of the PWM outputs is accomplished in software by writing to the PWMOFF bit in the PWM Control 0 Register. The PWM counter continues to operate while the outputs are deasserted (inactive) due to one of these fault conditions. The fault inputs are individually enabled through the PWM Fault Control Register. If a fault condition is detected and the source is enabled, the fault interrupt is generated. The PWM Fault Status Register (PWMFSTAT) is read to determine which fault source caused the interrupt. When a fault is detected and the PWM outputs are disabled, modulator control of the PWM outputs are reenabled either by the software or by the fault input signal deasserting. Selection of the reenable method is made using the PWM Fault Control Register (PWMFCTL). Configuration of the fault modes and reenable methods allow pulse-by-pulse limiting and hard shutdown. When configured in AUTOMATIC RESTART Mode, the PWM outputs are reengaged at beginning of the next PWM cycle (master timer value is equal to 0) if all fault signals are deasserted. In a software-controlled restart, all fault inputs must be deasserted and the fault flags must be cleared. The fault input pin is Schmitt-triggered. The input signal from the pin as well as the comparators pass though an analog filter to reject high-frequency noise. The logic path from the fault sources to the PWM output is asynchronous ensuring that the fault inputs forces the PWM outputs to their off-state even if the system clock is stopped. PWM Operation in CPU HALT Mode When the CPU is operating in HALT Mode, the PWM continues to operate if it is enabled. To minimize current in HALT Mode, the PWM must be disabled by clearing the PWMEN bit to 0. PWM Operation in CPU STOP Mode When the CPU is operating in STOP Mode, the PWM is disabled as the system clock ceases to operate in STOP Mode. The PWM output remains in the same state as they were PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 96 prior to entering the STOP Mode. In normal operation, the PWM outputs must be disabled by software prior to the CPU entering the STOP Mode. A fault condition detected in STOP Mode forces the PWM outputs to the predefined off-state. Observing the State of PWM Output Channels The logic value of the PWM outputs is sampled by reading the PWMIN Register. If a PWM channel pair is disabled (option bit is not set), the associated PWM outputs are forced to high impedance and are used as general purpose inputs. PWM Control Register Definitions The following sections describe the various PWM control registers. PWM High and Low Byte Registers The PWM High and Low Byte registers (PWMH and PWML), shown in Tables 52 and 53, contain the current 12-bit PWM count value. Reads from PWMH stores the value in PWML to a temporary holding register. A read from PWML always returns this temporary register value. It is not recommended to write to the PWM High and Low Byte registers when the PWM is enabled. There are no temporary holding registers for Write operations, so simultaneous 12-bit writes are not possible. When either the PWM High and Low Byte registers are written during counting, the 8-bit written value is placed in the counter (High or Low Byte) at the next clock edge. The counter continues counting from the new value. Table 52. PWM High Byte Register (PWMH) Bit 7 Field RESET R/W ADDR 6 5 4 3 2 1 Reserved PWMH 0h 0h R/W R/W 0 FF_E38Ch Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3:0] PWMH PWM High Byte PWMH is one of two bytes, {PWMH[3:0], PWML[7:0]}, which contain the current 12-bit PWM count value. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 97 Table 53. PWM Low Byte Register (PWML) Bit 7 6 5 4 Field 3 2 1 0 PWML RESET 01h R/W R/W ADDR FF_E38Dh Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3:0] PWML PWM Low Byte PWML is one of two bytes, {PWMH[3:0], PWML[7:0]}, which contain the current 12-bit PWM count value. PWM Reload High and Low Byte Registers The PWM Reload High and Low Byte registers (PWMRH and PWMRL), shown in Tables 54 and 55, store a 12-bit reload value, {PWMRH[3:0], PWMRL[7:0]}. The PWM reload value is held in buffer registers. The PWM reload value written to the buffer registers are not used by the PWM generator until the next PWM reload event occurs. Reads from these registers always return the values from the buffer registers. Prescaler  Reload Value Edge-Aligned PWM Mode Period = ------------------------------------------------------------f PWMclk 2  Prescaler  Reload Value Center-Aligned PWM Mode Period = ---------------------------------------------------------------------f PWMclk Table 54. PWM Reload High Byte Register (PWMRH) Bit 7 Field RESET R/W ADDR PS028706-0813 6 5 4 3 2 1 Reserved PWMRH 0h Fh R/W R/W 0 FF_E38Eh PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 98 Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3:0] Reload Register High Byte PWMRH PWMRH is one of two bytes, {PWMRH[3:0], PWMRL[7:0]}, which form the 12-bit reload value, {PWMRH[3:0], PWMRL[7:0]}. This value sets the PWM period Table 55. PWM Reload Low Byte Register (PWMRL) Bit 7 Field 6 5 4 3 2 1 0 PWMRL RESET FF R/W R/W ADDR FF_E38Fh Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3:0] PWMRL Reload Register Low Byte PWMRL is one of two bytes, {PWMRH[3:0], PWMRL[7:0]}, which form the 12-bit reload value, {PWMRH[3:0], PWMRL[7:0]}. This value sets the PWM period. PWM 0–2 Duty Cycle High and Low Byte Registers The PWM 0–2 H/L (High Side/Low Side) Duty Cycle High and Low Byte registers (PWMxDH and PWMxDL), shown in Tables 56 and 57, set the duty cycle of the PWM signal. This 14-bit signed value is compared to the PWM count value to determine the PWM output. Reads from these registers always return the values from the temporary holding registers. The PWM generator does not use the PWM duty cycle value until the next PWM reload event occurs. PWM Duty Cycle Value PWM Duty Cycle = 100  ----------------------------------------------------------PWM Reload Value Writing a negative value (DUTYH[7] = 1) forces the PWM to be OFF for the full PWM period. Writing a positive value greater than the 12-bit PWM reload value forces the PWM to be ON for the full PWM period. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 99 Table 56. PWM 0–2 H/L Duty Cycle High Byte Register (PWMHxDH, PWMLxDH) Bit Field RESET R/W 7 6 5 4 3 2 SIGN Reserved DUTYH X XX X_XXXX R/W R/W R/W ADDR 1 0 FF_E390h, FF_E392h, FF_E394h, FF_E396h, FF_E398h, FF_E39Ah Bit Description [7] SIGN Duty Cycle Sign 0 = Duty cycle is a positive two’s complement number. 1 = Duty cycle is a negative two’s complement number; output is forced to the off-state. [6:5] Reserved These bits are reserved and must be programmed to 00. [4:0] DUTYH PWM Duty Cycle High Byte The two bytes, {DUTYH[7:0], DUTYL[7:0]}, form a 14-bit signed value (bits 5 and 6 of the High byte are always 0). The value is compared to the current 12-bit PWM count. Table 57. PWM 0–2 H/L Duty Cycle Low Byte Register (PWMHxDL, PWMLxDL) Bit 7 6 Field 5 4 3 2 1 0 DUTYL RESET XXH R/W R/W ADDR FF_E391h, FF_E393h, FF_E395h, FF_E397h, FF_E399h, FF_E39Bh Bit Description [7:0] DUTYL PWM Duty Cycle Low Byte The two bytes, {DUTYH[7:0], DUTYL[7:0]}, form a 14-bit signed value (bits 5 and 6 of the High byte are always 0). The value is compared to the current 12-bit PWM count. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 100 PWM Control 0 Register The PWM Control 0 Register (PWMCTL0) controls PWM operation. Table 58. PWM Control 0 Register (PWMCTL0) Bit Field 7 6 PWMOFF OUTCTL RESET R/W 5 ALIGN 4 3 2 Reserved ADCTRIG Reserved 1 0 READY PWMEN 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E380h Bit Description [7] PWMOFF Place PWM Outputs in an OFF State 0 = Disable modulator control of the PWM pins. Outputs are in a predefined OFF state. This action is not dependent on the Reload event. 1 = Reenable modulator control of PWM pins at next PWM Reload event. [6] OUTCTL PWM Output Control 0 = PWM outputs are controlled by the pulse-width modulator. 1 = PWM outputs selectively disabled (set to off-state) according to values in the OUTx bits of the PWMOUT Register. [5] ALIGN PWM Edge Alignment 0 = PWM outputs are edge aligned. 1 = PWM outputs are center aligned. [4] Reserved. This bit is reserved and must be programmed to 0. [3] ADCTRIG ADC Trigger Enable 0 = No ADC trigger pulses. 1 = ADC trigger enabled. [2] Reserved. This bit is reserved and must be programmed to 0. [1] READY Values Ready for Next Reload Event 0 = PWM values (prescale, period and duty cycle) are not ready. Do not use values in holding registers at next PWM reload event. 1 = PWM values (prescale, period and duty cycle) are ready. Transfer all values from temporary holding registers to working registers at next PWM reload event. [0] PWMEN PWM Enable 0 = PWM is disabled and enabled PWM output pins are forced to default off-state. PWM master counter is stopped. 1 = PWM is enabled and PWM output pins are enabled as outputs. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 101 PWM Control 1 Register The PWM Control 1 Register (PWMCTL1), shown in Table 59, controls portions of PWM operation. Table 59. PWM Control 1 Register (PWMCTL1) Bit 7 Field RESET R/W 6 5 4 3 2 RLFREQ[1:0] INDEN POL45 POL23 POL10 PRES[1:0] 00 0 0 0 0 00 R/W R/W R/W R/W R/W R/W ADDR 1 0 FF_E381h Bit Description [7:6] RLFREQ[1:0] Reload Event Frequency This bit field is buffered. Changes to the reload event frequency takes effect at the end of the current PWM period. Reads always return the bit values from the temporary holding register. 00 = PWM reload event occurs at the end of every PWM period. 01 = PWM reload event occurs once every two PWM periods. 10 = PWM reload event occurs once every four PWM periods. 11 = PWM reload event occurs once every eight PWM periods. [5] INDEN Independent PWM Mode Enable The PWM timer should be turned off (PWMCTL0 bit7) prior to modifying any PWM registers. 0 = PWM outputs operate as three complementary pairs. 1 = PWM outputs operate as six independent channels. [4] POL45 PWM2 Polarity 0 = Noninverted polarity for channel pair PWM2. 1 = Invert output polarity for channel pair PWM2. [3] POL23 PWM1 Polarity 0 = Noninverted polarity for channel pair PWM1. 1 = Invert output polarity for channel pair PWM1. [2] POL10 PWM0 Polarity 0 = Noninverted polarity for channel pair PWM0. 1 = Invert output polarity for channel pair PWM0. [1:0] PRES PWM Prescaler The prescaler divides down the PWM input clock (either the system clock or the PWMIN external input). This field is buffered. Changes to this field take effect at the next PWM reload event. Reads always return the values from the temporary holding register. 00 = Divide by 1. 01 = Divide by 2. 10 = Divide by 4. 11 = Divide by 8. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 102 PWM Deadband Register The PWM Deadband Register (PWMDB), shown in Table 60, stores the 8-bit PWM deadband value. The deadband value determines the number of PWM input cycles to use for the deadband time for complementary PWM output pairs. When counting PWM input cycles, the PWM input signal is used directly (no prescaler). The minimum deadband value is 1. Maximum deadband time is programmed by setting a value of 00h. This register is written only once following a System Reset event. All other writes are ignored. Table 60. PWM Deadband Register (PWMDB) Bit 7 6 Field 5 4 3 2 1 0 PWMDB[7:0] RESET 01h R/W R/W ADDR FF_E382h Bit Description [7:0] PWMDB[7:0] PWM Deadband Sets the PWM deadband period for which both PWM outputs of a complementary PWM output pair are deasserted. PWM Minimum Pulse Width Filter The value in the PWMMPF Register, shown in Table 61, determines the minimum width pulse, either High or Low, generated by the PWM module. The minimum pulse width period is calculated as: PWMDB + PWMMPF T minPulseOut = ---------------------------------------------------------------------T systemClock  PwmPrescale PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 103 Table 61. PWM Minimum Pulse Width Filter (PWMMPF) Bit 7 6 5 Field 4 3 2 1 0 PWMMPF[7:0] RESET 00h R/W R/W ADDR FF_E383h Bit Description [7:0] PWMMPF Minimum Pulse Filter Sets the minimum allowed output pulse width in PWM clock cycles. PWM Fault Mask Register The PWM Fault Mask Register, shown in Table 62, enables individual fault sources. When an input is asserted, PWM behavior is determined by the PWM Fault Control Register (PWMFCTL). Bits 0, 1, 2, and 5 in this register can only be set once; all subsequent writes will be ignored. The PWM Fault Mask (PWMF) Comparator0 output generates a PWM fault and the associated fault system exception. Table 62. PWM Fault Mask Register (PWMFM) Bit 7 Field 6 5 4 3 2 1 0 Reserved DBGMSK Reserved F1MASK C0MASK FMASK RESET 00 0 00 0 0 0 R/W R R/W1* R R/W1* R/W1* R/W1* ADDR FF_E384h Note: *This register can only be written to once (W1 only). Bit Description [7:6] Reserved These bits are reserved and must be programmed to 00. [5] DBGMSK Debug Entry Fault Mask 0 = Entering CPU DEBUG Mode generates a PWM Fault. 1 = Entering CPU DEBUG Mode does not generate a PWM Fault. [4:3] Reserved These bits are reserved and must be programmed to 00. [2] F1MASK Fault 1 Fault Mask 0 = Fault 1 generates a PWM Fault. 1 = Fault 1 does not generate a PWM Fault. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 104 Bit Description (Continued) [1] C0MASK Comparator Fault Mask 0 = Comparator generates a PWM Fault. 1 = Comparator does not generate a PWM Fault. [0] F0MASK Fault Pin Mask 0 = Fault 0 pin generates a PWM Fault. 1 = Fault 0 pin does not generate a PWM Fault. PWM Fault Status Register The PWM fault status (PWMFSTAT) register provides status of fault inputs and timer reload. The fault flags indicate the fault source, which is active. If a fault source is masked, the flag in this register is not set when the source is asserted. The reload flag is set when the timer compare values are updated. Clear flags by writing a 1 to the flag bits. Fault flag bits are cleared only if the associated fault source has deasserted. Table 63. PWM Fault Status Register (PWMFSTAT) Bit Field 7 5 RLDFlag Reserved DBGFLAG RESET R/W 6 4 3 2 1 0 Reserved C0FLAG F1FLAG FFLAG U 0 U 00 U U U R/W1C R R/W1C R R/W1C R/W1C R/W1C ADDR FF_E385h Bit Description [7] RLDFLAG Reload Flag This bit is set and latched when a PWM timer reload occurs. Writing a 1 to this bit clears the flag. [6] Reserved This bit is reserved and must be programmed to 0. [5] DBGFLAG Debug Flag This bit is set and latched when DEBUG Mode is entered. Writing a 1 to this bit clears the flag. [4:3] Reserved These bits are reserved and must be programmed to 00. [2] C0FLAG Comparator 0 Flag This bit is set and latched when comparator is asserted. Writing a 1 to this bit clears the flag. [1] F1FLAG FAULT1 Flag This bit is set and latched when FAULT1 is asserted. Writing a 1 to this bit clears the flag. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 105 Bit Description (Continued) [0] FFLAG Fault Flag This bit is set and latched when the fault0 input is asserted. Writing a 1 to this bit clears the flag. Note: For this register, W1C means you must write one to clear the flag. PWM Fault Control Register The PWM Fault Control Register (PWMFCTL), shown in Table 64, determines how the PWM recovers from a fault condition. Settings in this register select either an automatic or a software-controlled PWM restart. Table 64. PWM Fault Control Register (PWMFCTL) Bit Field 7 6 5 4 3 2 1 0 Reserved DBGRST CMP1INT CMP1RST CMP0INT CMP0RST Fault0INT Fault0RST RESET R/W 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W ADDR R/W R/W FF_E388h Bit Description [7] Reserved This bit is reserved and must be programmed to 0. [6] DBGRST Debug Restart 0 = Automatic recovery. PWM resumes control of outputs when all fault sources have deasstered and a new PWM period begins. 1 = Software-controlled recovery. PWM resumes control of outputs only after all fault sources have deasserted, all fault flags have been cleared, and a PWM reload has occurred. [5] CMP1INT Comparator 1 Interrupt 0 = Interrupt on comparator assertion disabled. 1 = Interrupt on comparator assertion enabled. [4] CMP1RST Comparator 1 Restart 0 = Automatic recovery. PWM resumes control of outputs when all fault sources have been deasstered. 1 = Software-controlled recovery. PWM resumes control of outputs only after all fault sources have been deasserted, all fault flags have been cleared, and a PWM reload has occurred. [3] CMP0INT Comparator 0 Interrupt 0 = Interrupt on comparator 0 assertion disabled. 1 = Interrupt on comparator 0 assertion enabled. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 106 Bit Description (Continued) [2] CMP0RST Comparator 1 Restart 0 = Automatic recovery. PWM resumes control of outputs when all fault sources have been deasserted. 1 = Software-controlled recovery. PWM resumes control of outputs only after all fault sources have been deasserted, all fault flags have been cleared, and a PWM reload has occurred. [1] Fault0INT Fault 0 Interrupt 0 = Interrupt on Fault0 pin assertion disabled. 1 = Interrupt on Fault0 pin assertion enabled. [0] Fault0RST Fault 0 Restart 0 = Automatic recovery. PWM resumes control of outputs when all fault sources are deasstered. 1 = Software-controlled recovery. PWM resumes control of outputs only after all fault sources have been, deasserted, all fault flags have been cleared, and a PWM reload has occurred. PWM Input Sample Register PWM pin value is sampled by reading this register. Table 65. PWM Input Sample Register (PWMIN) Bit 7 6 5 4 3 2 1 0 Reserved FAULT IN2L IN2H IN1L IN1H IN0L IN0H RESET 0 0 0 0 0 0 0 0 R/W R R/W R/W R/W R/W R/W R/W R/W Field ADDR FF_E386h Bit Description [7] Reserved This bit is reserved and must be programmed to 0. [6] FAULT Sample Fault0 Pin 0 = A Low-level signal was read on the fault pin. 1 = A High-level signal was read on the fault pin. [5:0] Sample PWM Pins IN2L/IN2H/ 0 = A Low-level signal was read on the pins. IN1L/IN1H/ 1 = A High-level signal was read on the pins. IN0L/IN0H PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 107 PWM Output Control Register The PWM Output Control Register (PWMOUT) enables modulator control of the six PWM output signals. Output control is enabled by the OUTCTL bit in the PWMCTL0 Register. The PWM continues to operate but has no effect on the disabled PWM pins. If a fault condition is detected, all PWM outputs are forced to their selected off state. Table 66. PWM Output Control Register (PWMOUT) Bit 7 Field 6 Reserved 5 4 3 2 1 0 OUT2L OUT2H OUT1L OUT1H OUT0L OUT0H RESET 0 0 0 0 0 0 0 0 R/W R R R/W R/W R/W R/W R/W R/W ADDR FF_E387h Bit Description [7:6] Reserved These bits are reserved and must be programmed to 00. [5, 3, 1] OUT2L/ OUT1L/ OUT0L PWM Output 2 Low 0 = PWM 2L/1L/0L output configuration; the PWM 2L/1L/0L output signal is enabled and controlled by the PWM. 1 = PWM 2L/1L/0L output signal is in a low-side off state. [4, 2, 0] PWM Output 2 High OUT2H/ 0 = PWM 2H/1H/0H output configuration; the PWM 2H/1H/0H output signal is enabled and OUT1H/ controlled by the PWM. OUT0H 1 = PWM 2H/1H/0H output signal is in a high-side off state. Current-Sense Sample and Hold Control Registers The Current-Sense Sample/Hold Control Register defines the behavior of the dedicated current sense sample and hold inputs to the ADC from the operational amplifier. These input hold the current input value whenever all high-side outputs or all low-side outputs are in the on-state. The register bits control which PWM outputs must be asserted to activate the internal hold signal. Disabling the HEN, LEN, NHEN and NLEN bits allows software control of the input sample/hold by writing the SHPOL bit. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 108 Table 67. Current-Sense Sample and Hold Control Register (CSSHR0 and CSSHR1) Bit Field RESET R/W 7 6 5 4 3 SHPOL HEN NHEN LEN NLEN 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR 2 1 0 SHPWM2 SHPWM1 SHPWM0 FF_E38Ah and FF_E38Bh Bit Description [7] SHPOL Sample Hold Polarity 0 = Hold when terms are active. 1 = Hold when terms are not active. [6] HEN High Side Active Enable 0 = Ignore Product of PWMH0, PWMH1, PWMH2 in sample/hold equation. 1 = Hold when PWMH0, PWMH1, PWMH2 are all active. [5] NHEN High Side Inactive Enable 0 = Ignore product of PWMH0, PWMH1, PWMH2 in sample/hold equation. 1 = Hold when are all active. [4] LEN Low Side Active Enable 0 = Ignore product of PWML0, PWML1, PWML2 in sample/hold equation. 1 = Hold when PWML0, PWML1, PWML2 are all active. [3] NLEN Low Side Inactive Enable 0 = Ignore product of PWML0, PWML1, PWML2 in sample/hold equation. 1 = Hold when PWML0, PWML1, PWML2 are all active. [2] SHPWM2 PWM Channel2 Sample/Hold Enable 0 = Channel 2 terms are not used in sample/hold equation. 1 = Channel 2 terms are used in sample/hold equation. [1] SHPWM1 PWM Channel1 Sample/Hold Equation 0 = Channel 1 terms are not used in sample/hold equation. 1 = Channel 1 terms are used in sample/hold equation. [0] SHPWM0 PWM Channel0 Sample/Hold Equation 0 = Channel 0 terms are not used in sample/hold equation. 1 = Channel 0 terms are used in sample/hold equation. PS028706-0813 PRELIMINARY PWM Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 109 Watchdog Timer The Watchdog Timer (WDT) helps protect against corrupt or unreliable software, power faults and other system-level problems which place the Z16FMC device into unsuitable operating states. The WDT includes the following features: • On-chip RC oscillator • A selectable time-out response: short reset or system exception • 16-bit programmable time-out value Operation The WDT is a retriggerable one-shot timer that resets or interrupts the Z16FMC device when the WDT reaches its terminal count. The WDT uses its own dedicated on-chip RC oscillator as its clock source. The WDT features only two modes of operation: on and off. After it is enabled, the WDT always counts and must be refreshed to prevent a time-out. An enable is performed by executing the WDT instruction or by setting the WDT_AO option bit. The WDT_AO bit enables the WDT to operate all the time, even if a WDT instruction has not been executed. To minimize power consumption, the RC oscillator is disabled. The RC oscillator is disabled by clearing the WDTEN bit in the Oscillator Control Register (see page 301). If the RC oscillator is disabled, the WDT will not operate. The WDT is a 16-bit reloadable downcounter that uses two 8-bit registers in the CPU register space to set the reload value. The nominal WDT time-out period is calculated by the following equation. WDT Reload Value WDT Time-out Period (ms) = -----------------------------------------------10 In this equation, the WDT reload value is the decimal value of the 16-bit value furnished by {WDTH[7:0], WDTL[7:0]}, and the typical Watchdog Timer RC oscillator frequency is 10 kHz. Table 68 provides information about approximate time-out delays for the minimum, default and maximum WDT reload values. PS028706-0813 PRELIMINARY Watchdog Timer Z16FMC Series Motor Control MCUs Product Specification 110 Table 68. Watchdog Timer Approximate Time-Out Delays WDT Reload Value (Hex) Approximate Time-Out Delay (with 10 kHz Typical WDT Oscillator Frequency) WDT Reload Value (Decimal) Typical 0400 1024 FFFF 65,536 Description 102.4 ms Reset value time-out delay 6.55 s Maximum time-out delay Watchdog Timer Refresh When enabled first, the WDT is loaded with the value in the Watchdog Timer Reload registers. The WDT next counts down to 0000h unless a WDT instruction is executed by the CPU. Execution of the WDT instruction causes the downcounter to be reloaded with the WDT reload value stored in the Watchdog Timer Reload registers. Counting resumes following the reload operation. When the Z16FMC device is operating in DEBUG Mode (through the OCD), the WDT is continuously refreshed to prevent spurious WDT time-outs. Watchdog Timer Time-Out Response The WDT times out when the counter reaches 0000h. A time-out of the WDT generates either a system exception or a short reset. The WDT_RES option bit determines the timeout response of the WDT. For information about programming of the WDT_RES option bit, see the Option Bit chapter on page 260. WDT System Exception in Normal Operation If configured to generate a system exception when a time-out occurs, the WDT issues an exception request to the interrupt controller. The CPU responds to the request by fetching the System Exception vector and executing code from the vector address. After time-out and system exception generation, the WDT is reloaded automatically and continues counting. WDT System Exception in STOP Mode If configured to generate a system exception when a time-out occurs and the Z16FMC device is in STOP Mode, the WDT automatically initiates a Stop-Mode Recovery and generates a system exception request. Both the WDT status bit and the stop bit in the Reset Status and Control Register (see page 39) are set to 1 following WDT time-out in STOP Mode. For detailed information, see the Reset and Stop-Mode Recovery chapter on page 33. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 111 Following completion of the Stop-Mode Recovery, the CPU responds to the system exception request by fetching the System Exception vector and executing code from the vector address. WDT Reset in Normal Operation If configured to generate a Reset when a time-out occurs, the WDT forces the device into the Reset state. The WDT status bit in the Reset Status and Control Register (see page 39) is set to 1. For more information about Reset and the WDT status bit, see the the Reset and Stop-Mode Recovery chapter on page 33. Following a Reset sequence, the WDT Counter is initialized with its reset value. WDT Reset in STOP Mode If enabled in STOP Mode and configured to generate a Reset when a time-out occurs and the device is in STOP Mode, the WDT initiates a Stop-Mode Recovery. Both the WDT status bit and the stop bit in the Reset Status and Control Register (see page 39) are set to 1 following WDT time-out in STOP Mode. For detailed information, see the Reset and Stop-Mode Recovery chapter on page 33. Watchdog Timer Reload Unlock Sequence Writing the unlock sequence to the Watchdog Timer Reload High (WDTH) register address unlocks the two Watchdog Timer Reload registers (WDTH and WDTL) to allow changes to the time-out period. These Write operations to the WDTH Register address produce no effect on the bits in the WDTH Register. The locking mechanism prevents spurious writes to the reload registers. The following sequence is required to unlock the Watchdog Timer Reload registers (WDTH and WDTL) for write access: 1. Write 55h to the Watchdog Timer Reload High register (WDTH). 2. Write AAh to the Watchdog Timer reload high register (WDTH). 3. Write the appropriate value to the Watchdog Timer reload high register (WDTH). 4. Write the appropriate value to the Watchdog Timer reload low register (WDTL). All steps of the WDT reload unlock sequence must be written in the order just listed. The value in the Watchdog Timer Reload registers is loaded into the counter every time a WDT instruction is executed. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 112 Watchdog Timer Register Definitions Watchdog Timer Reload High and Low Byte Registers The Watchdog Timer Reload High and Low Byte registers (WDTH, WDTL), shown in Tables 69 and 70, form the 16-bit reload value that is loaded into the WDT when a WDT instruction executes. The 16-bit reload value is {WDTH[7:0], WDTL[7:0]}. Writing to these registers following the unlock sequence sets the appropriate reload value. Reading from these registers returns the current WDT count value. Caution: The 16-bit WDT reload value must not be set to a value less than 0004h. Table 69. Watchdog Timer Reload High Byte Register (WDTH) Bit 7 6 5 4 Field RESET R/W 3 2 1 0 WDTH 0 0 0 0 0 1 0 0 R/W* R/W* R/W* R/W* R/W* R/W* R/W* R/W* ADDR FF_E042h Note: *Read returns the current WDT count value; write sets the appropriate reload value. Bit Description [15:8] WDTH WDT Reload High Byte Most significant byte (MSB); bits[15:8] of the 16-bit WDT reload value. Table 70. Watchdog Timer Reload Low Byte Register (WDTL) Bit 7 6 5 4 Field RESET R/W 3 2 1 0 WDTL 0 0 0 0 0 0 0 0 R/W* R/W* R/W* R/W* R/W* R/W* R/W* R/W* ADDR FF_E043h Note: *Read returns the current WDT count value; write sets the appropriate reload value. Bit Description [7:0] WDTL WDT Reload Low Byte Least significant byte (LSB); bits[7:0] of the 16-bit WDT reload value. PS028706-0813 PRELIMINARY Watchdog Timer Register Definitions Z16FMC Series Motor Control MCUs Product Specification 113 LIN-UART The Local Interconnect Network Universal Asynchronous Receiver/Transmitters (LINUART) are full-duplex communication channels capable of handling asynchronous data transfers in standard UART applications as well as providing LIN protocol support. Features of the LIN-UARTs include: • 8-bit asynchronous data transfer • Selectable even and odd-parity generation and checking • Option of one or two stop bits • Selectable MULTIPROCESSOR (9-Bit) Mode with three configurable interrupt schemes • Separate transmit and receive interrupts or DMA requests • Framing, parity, overrun and break detection • 16-bit Baud Rate Generator (BRG), which functions as a general-purpose timer with interrupt • Driver enable output for external bus transceivers • LIN protocol support for both MASTER and SLAVE modes: – Break generation and detection – Selectable slave autobaud – Check Tx vs. Rx data when sending • Configurable digital noise filter on receive data line Architecture The LIN-UART consists of three primary functional blocks: transmitter, receiver and BRG. The LIN-UART’s transmitter and receiver function independently but use the same baud rate and data format. The basic UART operation is enhanced by the noise filter and IrDA blocks. Figure 14 displays the LIN-UART architecture. PS028706-0813 PRELIMINARY LIN-UART Z16FMC Series Motor Control MCUs Product Specification 114 Noise Filter Parity Checker Receiver Control with Address Compare Rx IRQ RxDmaReq Receive Shifter RxD Receive Data Register Control Registers IrDA System Bus Transmit Data Register Status Registers Baud Rate Generator Transmit Shift Register TxD Transmitter Control Parity Generator Tx IRQ TxDmaReq CTS DE Figure 14. LIN-UART Block Diagram PS028706-0813 PRELIMINARY Architecture Z16FMC Series Motor Control MCUs Product Specification 115 Operation This section discusses the operational aspects of the Z16FMC Series LIN-UART feature, and presents tabled bit descriptions for the LIN-UART transmit, receive, status, mode select, multiprocessor control, noise filter, status, baud rate, and control registers. Data Format for Standard UART Modes The LIN-UART always transmits and receives data in an 8-bit data format with the first bit being least-significant bit. An even- or odd-parity bit or multiprocessor address/data bit is optionally added to the data stream. Each character begins with an active Low start bit and ends with either 1 or 2 active High stop bits. Figures 15 and 16 display the asynchronous data format employed by the LIN-UART without parity and with parity, respectively. 1 Data Field Idle State of Line Stop Bit(s) lsb Start Bit0 msb Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 0 1 2 Figure 15. LIN-UART Asynchronous Data Format without Parity 1 Data Field Idle State of Line Stop Bit(s) lsb Start Bit0 msb Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Parity 0 1 2 Figure 16. LIN-UART Asynchronous Data Format with Parity Transmitting Data using the Polled Method Observe the following steps to transmit data using the polled operating method: PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 116 1. Write to the LIN-UART Baud Rate High and Low Byte registers to set the appropriate baud rate. 2. Enable the LIN-UART pin functions by configuring the associated GPIO port pins for alternate function operation. 3. If MULTIPROCESSOR Mode is required, write to the LIN-UART Control 1 Register to enable MULTIPROCESSOR (9-Bit) Mode functions. Set the MULTIPROCESSOR Mode select (MPEN) to enable MULTIPROCESSOR Mode. 4. Write to the LIN-UART Control 0 Register to: a. Set the transmit enable bit (TEN) to enable the LIN-UART for data transmission. b. If parity is required and MULTIPROCESSOR Mode is not enabled, set the parity enable bit (PEN) and select either even- or odd parity (PSEL). c. Set or clear the CTSE bit to enable or disable control from the remote receiver using the CTS pin. 5. Check the TDRE bit in the LIN-UART Status 0 Register to determine if the Transmit Data Register is empty (indicated by a 1). If this register is empty, continue to Step 6. If the Transmit Data Register is full (indicated by a 0), continue to monitor the TDRE bit until the Transmit Data Register becomes available to receive new data. 6. If in MULTIPROCESSOR Mode, write the LIN-UART Control 1 Register to select the outgoing address bit. Set the multiprocessor bit transmitter (MPBT) if sending an address byte; clear it if sending a data byte. 7. Write the data byte to the LIN-UART Transmit Data Register. The transmitter automatically transfers the data to the Transmit Shift Register and transmits the data. 8. If MULTIPROCESSOR Mode is required and MULTIPROCESSOR Mode is enabled, make any changes to the multiprocessor bit transmitter (MPBT) value. 9. To transmit additional bytes, return to Step 4. Transmitting Data Using Interrupt-Driven Method The LIN-UART transmitter interrupt indicates the availability of the Transmit Data Register to accept new data for transmission. Observe the following steps to configure the LINUART for interrupt-driven data transmission: 1. Write to the LIN-UART Baud Rate High and Low Byte registers to set the appropriate baud rate. 2. Enable the LIN-UART pin functions by configuring the associated GPIO port pins for alternate function operation. 3. Execute a DI instruction to disable interrupts. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 117 4. Write to the interrupt control registers to enable the LIN-UART transmitter interrupt and set the appropriate priority. 5. If MULTIPROCESSOR Mode is required, write to the LIN-UART Control 1 Register to enable MULTIPROCESSOR (9-Bit) Mode functions. Set the MULTIPROCESSOR Mode Select (MPEN) to enable MULTIPROCESSOR Mode. 6. Write to the LIN-UART Control 0 Register to: a. Set the transmit enable bit (TEN) to enable the LIN-UART for data transmission b. Enable parity, if MULTIPROCESSOR Mode is not enabled and select either even or odd parity. c. Set or clear the CTSE bit to enable or disable control from the remote receiver through the CTS pin. 7. Execute an EI instruction to enable interrupts. The LIN-UART is now configured for interrupt-driven data transmission. As the LINUART Transmit Data Register is empty, an interrupt is generated immediately. When the LIN-UART transmit interrupt is detected and there is transmit data ready to send, the associated interrupt service rouISR performs the following: 1. If operating in MULTIPROCESSOR Mode, write the LIN-UART Control 1 Register to select the outgoing address bit: a. Set the multiprocessor bit transmitter (MPBT) if sending an address byte; clear it if sending a data byte. 2. Write the data byte to the LIN-UART Transmit Data Register. The transmitter automatically transfers the data to the Transmit Shift Register and transmits the data. 3. Execute the IRET instruction to return from the interrupt service routine and waits for the Transmit Data Register to again become empty. If a transmit interrupt occurs and there is no transmit data ready to send, the interrupt service routine executes the IRET instruction. When the application does have data to transmit, software sets the appropriate interrupt request bit in the interrupt controller to initiate a new transmit interrupt. Another alternative would be for software to write the data to the Transmit Data Register instead of invoking the ISR. Receiving Data Using Polled Method Observe the following steps to configure the LIN-UART for polled data reception: 1. Write to the LIN-UART Baud Rate High and Low Byte registers to set the appropriate baud rate. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 118 2. Enable the LIN-UART pin functions by configuring the associated GPIO port pins for alternate function operation. 3. Write to the LIN-UART Control 1 Register to enable MULTIPROCESSOR Mode functions. 4. Write to the LIN-UART Control 0 Register to: a. Set the receive enable bit (REN) to enable the LIN-UART for data reception. b. Enable parity, if MULTIPROCESSOR Mode is not enabled and select either even or odd parity. 5. Check the RDA bit in the LIN-UART Status 0 Register to determine if the Receive Data Register contains a valid data byte (indicated by a 1). If RDA is set to 1 to indicate available data, continue to Step 6. If the Receive Data Register is empty (indicated by 0), continue to monitor the RDA bit awaiting reception of the valid data. 6. Read data from the LIN-UART Receive Data Register. If operating in MULTIPROCESSOR (9-Bit) Mode, further actions are required depending on the MULTIPROCESSOR Mode bits MPMD[1:0]. 7. Return to Step 5 to receive additional data. Receiving Data using the Interrupt-Driven Method The LIN-UART receiver interrupt indicates the availability of new data (as well as error conditions). Observe the following steps to configure the LIN-UART receiver for interrupt-driven operation: 1. Write to the LIN-UART Baud Rate High and Low Byte registers to set the appropriate baud rate. 2. Enable the LIN-UART pin functions by configuring the associated GPIO port pins for alternate function operation. 3. Execute a DI instruction to disable interrupts. 4. Write to the interrupt control registers to enable the LIN-UART receiver interrupt and set the appropriate priority. 5. Clear the LIN-UART receiver interrupt in the applicable Interrupt Request Register. 6. Write to the LIN-UART Control 1 Register to enable MULTIPROCESSOR (9-Bit) Mode functions: a. Set the MULTIPROCESSOR Mode select (MPEN) to enable MULTIPROCESSOR Mode. b. Set the MULTIPROCESSOR Mode bits, MPMD[1:0], to select the appropriate address matching scheme. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 119 c. Configure the LIN-UART to interrupt on received data and errors or errors only (interrupt on errors only is unlikely to be useful for Z16FMC Series devices without a DMA block). 7. Write the device address to the address compare register (automatic multiprocessor modes only). 8. Write to the LIN-UART Control 0 Register to: a. Set the receive enable bit (REN) to enable the LIN-UART for data reception b. Enable parity, if MULTIPROCESSOR Mode is not enabled and select either even- or odd-parity. 9. Execute an EI instruction to enable interrupts. The LIN-UART is now configured for interrupt-driven data reception. When the LINUART receiver interrupt is detected, the associated ISR performs the following: 1. Check the LIN-UART Status 0 Register to determine whether the source of the interrupt is error, break, or received data. 2. If the interrupt was due to data available, read the data from the LIN-UART Receive Data Register. If operating in MULTIPROCESSOR (9-Bit) Mode, further actions are required depending on the MULTIPROCESSOR Mode bits MPMD[1:0]. 3. Execute the IRET instruction to return from the ISR and await more data. Clear To Send Operation The clear to send (CTS) pin, if enabled by the CTSE bit of the LIN-UART Control 0 Register, performs flow control on the outgoing transmit data stream. The CTS input pin is sampled one system clock before beginning any new character transmission. To delay transmission of the next data character, an external receiver must deassert CTS at least one system clock cycle before a new data transmission begins. For multiple character transmissions, this operation is typically performed during the stop bit transmission. If CTS deasserts in the middle of a character transmission, the current character is sent completely. External Driver Enable The LIN-UART provides a Driver Enable (DE) signal for off-chip bus transceivers. This feature reduces the software overhead associated with using a GPIO pin to control the transceiver when communicating on a multi-transceiver bus such as RS-485. Driver Enable is a programmable polarity signal which envelopes the entire transmitted data frame including parity and stop bits as illustrated in Figure 17. The DE signal asserts when a byte is written to the LIN-UART Transmit Data Register. The DE signal asserts at PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 120 least one bit period and no greater than two bit periods before the start bit is transmitted. This allows a set-up time to enable the transceiver. The DE signal deasserts one system clock period after the final stop bit is transmitted. This one system clock delay allows both time for data to clear the transceiver before disabling it, as well as the ability to determine if another character follows the current character. In the event of back to back characters (new data must be written to the Transmit Data Register before the previous character is completely transmitted) the DE signal is not deasserted between characters. The DEPOL bit in the LIN-UART Control Register 1 sets the polarity of the DE signal. 1 DE 0 1 Stop Bit Data Field Idle State of Line lsb Start Bit0 msb Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Parity 0 1 Figure 17. LIN-UART Driver Enable Signal Timing (shown with 1 Stop Bit and Parity) The DE to start bit set-up time is calculated as follows: 1 2  ------------------------------------  DE to Start Bit Setup Time (s)   ------------------------------------  Baud Rate (Hz)  Baud Rate (Hz) LIN-UART Special Modes The special modes of the LIN-UART: • MULTIPROCESSOR Mode • LIN Mode The LIN-UART has a common control register (Control 0), which has a unique register address and several mode-specific control registers (multiprocessor control, noise filter control and LIN control) which share a common register address (Control 1). When the Control 1 address is read or written, the Mode Select (MSEL[2:0]) field of the Mode Select and Status Register determines which physical register is accessed. Similarly, there are mode-specific status registers, one of which is returned when the Status 0 Register is read, depending on the MSEL field. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 121 MULTIPROCESSOR (9-Bit) Mode The LIN-UART features a MULTIPROCESSOR (9-Bit) Mode which uses an extra (9th) bit for selective communication when a number of processors share a common UART bus. In MULTIPROCESSOR Mode (also referred to as 9-Bit Mode), the multiprocessor bit (MP) is transmitted immediately following the 8 bits of data and immediately preceding the stop bit(s) as illustrated in Figure 18. 1 Data Field Idle State of Line Stop Bit(s) lsb Start Bit0 msb Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 MP 0 1 2 Figure 18. LIN-UART Asynchronous MULTIPROCESSOR Mode Data Format In MULTIPROCESSOR (9-Bit) Mode, the Parity bit location (9th bit) becomes the MULTIPROCESSOR control bit. The LIN-UART Control 1 and Status 1 registers provide MULTIPROCESSOR (9-Bit) Mode control and status information. If an automatic address matching scheme is enabled, the LIN-UART Address Compare Register holds the network address of the device. MULTIPROCESSOR (9-Bit) Mode Receive Interrupts When MULTIPROCESSOR Mode is enabled, the LIN-UART processes only frames addressed to it. You can determine whether a frame of data is addressed to the LIN-UART is made in hardware, software or a combination of the two, depending on the multiprocessor configuration bits. In general, the address compare feature reduces the load on the CPU because it does not need to access the LIN-UART when it receives data directed to other devices on the multi-node network. The following 3 MULTIPROCESSOR modes are available in the hardware: 1. Interrupt on all address bytes. 2. Interrupt on matched address bytes and correctly framed data bytes. 3. Interrupt only on correctly framed data bytes. These modes are selected with MPMD[1:0] in the LIN-UART Control 1 Register. For all MULTIPROCESSOR modes, bit MPEN of the LIN-UART Control 1 Register must be set to 1. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 122 The first scheme is enabled by writing 01b to MPMD[1:0]. In this mode, all incoming address bytes cause an interrupt, while data bytes never cause an interrupt. The ISR checks the address byte which triggered the interrupt. If it matches the LIN-UART address, the software clears MPMD[0]. At this point, each new incoming byte interrupts the CPU. The software determines the end of the frame and checks for it by reading the MPRX bit of the LIN-UART Status 1 Register for each incoming byte. If MPRX=1, a new frame has begun. If the address of this new frame is different from the LIN-UART’s address, then MPMD[0] must be set to 1 by software, causing the LIN-UART interrupts to go inactive until the next address byte. If the address of the new frame matches the LIN-UART address, then the data in the new frame is processed. The second scheme is enabled by setting MPMD[1:0] to 10b and writing the LIN-UART’s address into the LIN-UART Address Compare Register. This mode introduces more hardware control, interrupting only on frames which match the address of LIN-UART. When an incoming address byte does not match the address of LIN-UART, it is ignored. All successive data bytes in this frame are also ignored. When a matching address byte occurs, an interrupt is issued and further interrupts occur on each successive data byte. The first data byte in the frame has NEWFRM = 1 in the LIN-UART Status 1 Register. When the next address byte occurs, the hardware compares it to the address of LIN-UART. If there is a match, the interrupt occurs and the NEWFRM bit is set for the first byte of the new frame. If there is no match, the LIN-UART ignores all incoming bytes until the next address match. The third scheme is enabled by setting MPMD[1:0] to 11b and by writing the address of LIN-UART into the LIN-UART Address Compare Register. This mode is identical to the second scheme, except that there are no interrupts on address bytes. The first data byte of each frame remains accompanied by a NEWFRM assertion. LIN PROTOCOL Mode The LIN protocol, as supported by the LIN-UART module, is defined in revision 2.0 of the LIN specification package. This LIN protocol specification covers all aspects of transferring information between LIN master and slave devices using message frames including error detection and recovery, sleep mode, and wake-up from sleep mode. The LINUART hardware in LIN Mode provides character transfers to support the LIN protocol including break transmission and detection, WAKE-UP transmission and detection and slave autobauding. Part of the error detection of the LIN protocol is for both master and slave devices to monitor their receive data when transmitting. If the receive and transmit data streams do not match, the LIN-UART asserts the PLE bit (a physical-layer error bit in the Status 0 Register). The message frame time-out aspect of the protocol is left to software, requiring the use of an additional general purpose timer. The LIN Mode of the LINUART does not provide any hardware support for computing/verifying the checksum field or to verify the contents of the identifier field. These fields are treated as data and are not interpreted by the hardware. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 123 The LIN bus contains a single master and one or more slaves. The LIN master is responsible for transmitting the message frame header which consists of the Break, Synch, and Identifier fields. Either the master or one of the slaves transmits the associated response section of the message, which consists of data characters followed by a checksum character. In LIN Mode, the interrupts defined for normal UART operation still apply with the following changes: • Parity error (a PE bit in the Status 0 Register) is redefined as the Physical Layer Error (PLE) bit. This PLE bit indicates that receive data does not match transmit data when the LIN-UART is transmitting. This applies to both MASTER and SLAVE OPERATING modes. • The break detect interrupt (BRKD bit in the Status 0 Register) indicates when a break is detected by the slave (break condition for at least 11 bit-times). Software uses this interrupt to start a timer checking for message frame time-out. The duration of the break is read in the RxBreakLength[3:0] field of the Mode Status Register. • The break detect interrupt (BRKD bit in Status 0 Register) indicates when a wake-up message has been received if the LIN-UART is in a LINSLEEP state. • In LIN SLAVE Mode, if the BRG counter overflows while measuring the autobaud period (start bit to beginning of bit 7 of autobaud character) an overrun error is indicated (OE bit in the Status 0 Register). In this case, software sets the LinState field back to 10b, where the slave ignores the current message and waits for the next break signal. The baud reload high and low registers are not updated by hardware if this autobaud error occurs. The OE bit is also set if a data overrun error occurs. LIN System Clock Requirements The LIN master provides the timing reference for the LIN network and is required to have a clock source with a tolerance of ±0.5%. A slave with autobaud capability is required to have a baud clock matching the master oscillator within ±14%. The slave nodes autobaud to lock onto the master timing reference with an accuracy of ±2%. If a slave does not contain autobaud capability, it must include a baud clock which deviates from the masters by no more than ±1.5%. These accuracy requirements must include effects such as voltage and temperature drift during operation. Before sending or receiving messages, the baud reload High/Low registers must be initialized. Unlike standard UART modes, the baud reload High/Low registers must be loaded with the baud interval rather than 1/16 of the baud interval. To autobaud with the required accuracy, the LIN slave system clock must be at least 100 times the baud rate. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 124 LIN Mode Initialization and Operation The LIN PROTOCOL Mode is selected by setting either the LIN master (LMST) or LIN slave (LSLV) and, optionally for the LIN slave, the autobaud enable (ABEN) bits in the LIN Control Register. To access the LIN Control Register, the Mode Select (MSEL) field of the LIN-UART Mode Select/Status Register must be 010b. The LIN-UART Control 0 Register must be initialized with TEN = 1, REN = 1, all other bits = 0. In addition to the LMST, LSLV and ABEN bits in the LIN Control Register, a LinState[1:0] field exists that defines the current state of the LIN logic. This field is initially set by the software. In the LIN SLAVE Mode, the LinState field is updated by hardware as the slave moves through the Wait for Break, AutoBaud and Active states. The noise filter is also required to be enabled and configured when interfacing to a LIN bus. LIN MASTER Mode Operation LIN MASTER Mode is selected by setting the bits LMST = 1, LSLV = 0, ABEN = 0, LinState[1:0] = 11b. If the LIN bus protocol indicates the bus is required go into the LIN Sleep state, the LinState[1:0] bits must be set = 00b by the software. The break is the first part of the message frame transmitted by the master, consisting of at least 13 bit periods of logical zero on the LIN bus. During initialization of the LIN master, the duration (in bit-times) of the break is written to the TxBreakLength field of the LIN Control Register. The transmission of the break is performed by setting the SBRK bit in the Control 0 Register. The LIN-UART starts the break after the SBRK bit is set and any character transmission currently underway has completed. The SBRK bit is deasserted by hardware after the break is completed. The Synch character is transmitted by writing a 55h to the Transmit Data Register (TDRE must be 1 before writing). The Synch character is not transmitted by the hardware until after the break is complete. The Identifier character is transmitted by writing the appropriate value to the Transmit Data Register (TDRE must be 1 before writing). If the master is sending the response portion of the message, these data and checksum characters are written to the Transmit Data Register when the TDRE bit asserts. If the Transmit Data Register is written after TDRE asserts, but before TXE asserts, the hardware inserts one or two stop bits between each character as determined by the stop bit in the Control 0 Register. Additional idle time occurs between characters if TXE asserts before the next character is written. LIN SLEEP Mode While the LIN bus is in a Sleep state, the CPU is in either low-power STOP Mode, in HALT Mode, or in a normal operational state. Any device on the LIN bus issues a wake- PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 125 up message (transmit an 80h character) if it needs the master to initiate a LIN message frame. Following the wake-up message, the master wakes up and initiates a new message. If the CPU is in STOP Mode, the LIN-UART is not active and the wake-up message must be detected by a GPIO edge detect Stop-Mode Recovery. The duration of the Stop-Mode Recovery sequence may preclude making an accurate measurement of the wake-up message duration. If the CPU is in HALT Mode or in an operational mode, the LIN-UART (if enabled) times the duration of the wake-up and provides an interrupt following the end of the break sequence if the duration is  4 bit-times. The total duration of the wake-up message in bittimes is obtained by reading the RxBreakLength field in the Mode Status Register. After a wake-up message is detected, the LIN-UART is placed (by software) into either Lin Master or Lin Slave Wait for Break states as appropriate. If the break duration exceeds fifteen bit-times, the RxBreakLength field contains the value Fh. Lin Sleep state is selected by software setting LinState[1:0] = 00. The decision to move from an active state to sleep state is based on the LIN messages as interpreted by the software. LIN Slave Operation LIN SLAVE Mode is selected by setting the bits LMST = 0, LSLV = 1, ABEN = 1 or 0 and LinState[1:0] = 01b (Wait for Break state). The LIN slave detects the start of a new message by the break which appears to the slave as a break of at least 11 bit-times in duration. The LIN-UART detects the break and generates an interrupt to the CPU. The duration of the break is observable in the RxBreakLength field of the Mode Status Register. A break of less than 11 bit-times in duration does not generate a break interrupt when the LIN-UART is in a Wait for Break state. If the break duration exceeds 15 bit-times, the RxBreakLength field contains the value Fh. Following the break, the LIN-UART hardware automatically transits to the autobaud state, where it autobauds by timing the duration of the first 8 bit-times of the Synch character as defined in the standard. At the end of the autobaud period, the duration measured by the BRG counter (auto baud period divided by 8) is automatically transferred to the baud reload high and low registers if the ABEN bit of the LIN Control Register is set. If the BRG counter overflows before reaching the start of bit 7 in the autobaud sequence the autobaud overrun error interrupt occurs, the OE bit in the Status 0 Register is set and the baud reload registers are not updated. To autobaud within 2% of the master’s baud rate, the slave system clock must be minimum 100 times the baud rate. To avoid an autobaud overrun error, the system clock must not be greater than 219 times the baud rate (16 bit counter following 3-bit prescaler when counting the 8 bit-times of the autobaud sequence). Following the Synch character, the LIN-UART hardware transits to the active state, where the Identifier character is received and the characters of the response section of the message are sent or received. The slave remains in the active state until a break is received or PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 126 the software forces a state change. When it is in active State (autobaud has completed), a break of 10 or more bit-times is recognized and a transition to the autobaud state is caused. LIN-UART Interrupts The LIN-UART features separate interrupts for the transmitter and receiver. In addition, when the LIN-UART primary functionality is disabled, the BRG also functions as a basic timer with interrupt capability. Transmitter Interrupts The transmitter generates a single interrupt when the Transmit Data Register Empty bit (TDRE) is set to 1. This indicates that the transmitter is ready to accept new data for transmission. The TDRE interrupt occurs when the transmitter is initially enabled and after the Transmit Shift Register has shifted the first bit of a character out. At this point, the Transmit Data Register is written with the next character to send. This provides 7 bit periods of latency to load the Transmit Data Register before the Transmit Shift Register completes shifting the current character. Writing to the LIN-UART Transmit Data Register clears the TDRE bit to 0. Receiver Interrupts The receiver generates an interrupt when any of the following occurs: • A data byte is received and is available in the LIN-UART Receive Data Register. This interrupt is disabled independent of the other receiver interrupt sources using the RDAIRQ bit (this feature is useful in devices, which support DMA). The received data interrupt occurs after the receive character is placed in the Receive Data Register. To avoid an overrun error, the software responds to this received data available condition before the next character is completely received. Note: In MULTIPROCESSOR Mode (MPEN = 1), the receive data interrupts are dependent on the multiprocessor configuration and the most recent address byte. • A break is received. • A receive data overrun or LIN slave autobaud overrun error is detected. • A data framing error is detected. • A parity error is detected (physical layer error in LIN Mode). PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 127 LIN-UART Overrun Errors When an overrun error condition occurs, the LIN-UART prevents overwriting of the valid data currently in the Receive Data Register. The break detect and overrun status bits are not displayed until the valid data is read. When the valid data is read, the OE bit of the Status 0 Register is updated to indicate the overrun condition (and Break Detect, if applicable). The RDA bit is set to 1 to indicate that the Receive Data Register contains a data byte. However, because the overrun error occurred, this byte may not contain valid data and must be ignored. The BRKD bit indicates if the overrun is caused due to a break condition on the line. After reading the status byte indicating an overrun error, the Receive Data Register must be read again to clear the error bits in the LIN-UART Status 0 Register. In LIN Mode, an overrun error is signaled for receive data overruns as described above and in the LIN Slave, if the BRG counter overflows during the autobaud sequence (the ATB bit will also be set in this case). There is no data associated with the autobaud overflow interrupt, however the Receive Data Register must be read to clear the OE bit. In this case software must write 10b to the LinState field, forcing the LIN slave back to Wait for break state. LIN-UART Data and Error Handling Procedure Figure 19 displays the recommended procedure for use in LIN-UART receiver interrupt service routines. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 128 Receiver Ready Receiver Interrupt Read Status No Errors? Yes Read Data which clears RDA bit and resets error bits Read Data Discard Data Figure 19. LIN-UART Receiver Interrupt Service Routine Flow Baud Rate Generator Interrupts If the BRGCTL bit of the Multiprocessor Control Register is set (see Table 81 on page 141) and the REN bit of the Control 0 Register is 0, the LIN-UART receiver interrupt asserts when the LIN-UART baud rate generator reloads. This action allows the BRG to function as an additional counter if the LIN-UART receiver functionality is not employed. The transmitter is enabled in this mode. LIN-UART DMA Interface The DMA engine is configured to move UART transmit and/or receive data. This reduces processor overhead, especially when moving blocks of data. The DMA interface on the PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 129 LIN-UART consists of the TxDmaReq and RxDmaReq outputs and the TxDmaAck and RxDmaAck inputs. Any of the DMA channels are configured to process the UART DMA requests. If transmit data is to be moved by the DMA, the transmit interrupt must be disabled in the interrupt controller. If receive data is to be moved by the DMA, the RDAIRQ bit in the LIN-UART Control 1 Register must be set. This disables receive data interrupts when still enabling error interrupts. The receive interrupt must be enabled in the interrupt controller to process error condition interrupts. LIN-UART Baud Rate Generator The LIN-UART baud rate generator creates a lower frequency baud rate clock for data transmission. The input to the BRG is the system clock. The LIN-UART Baud Rate High and Low Byte registers combine to create a 16-bit baud rate divisor value (BRG[15:0]) which sets the data transmission rate (baud rate) of the LIN-UART. The LIN-UART data rate is calculated using the following equation for normal UART operation: System Clock Frequency (Hz) UART Data Rate (bps) = -----------------------------------------------------------------------------------------16  UART Baud Rate Divisor Value The LIN-UART data rate is calculated using the following equation for LIN Mode UART operation: System Clock Frequency (Hz) UART Data Rate (bps) = -----------------------------------------------------------------------------UART Baud Rate Divisor Value When the LIN-UART is disabled, the BRG functions as a basic 16-bit timer with interrupt on time-out. Observe the following steps to configure BRG as a timer with interrupt on time-out: 1. Disable the LIN-UART receiver by clearing the REN bit in the LIN-UART Control 0 Register to 0 (TEN bit is asserted, transmit activity may occur). 2. Load the appropriate 16-bit count value into the LIN-UART Baud Rate High and Low Byte registers. 3. Enable the BRG timer function and associated interrupt by setting the BRGCTL bit in the LIN-UART Control 1 Register to 1. Enable the UART receive interrupt in the interrupt controller. When configured as a general purpose timer, the BRG interrupt interval is calculated using the following equation: PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 130 UART BRG Interrupt Interval (s) = System Clock Period (s)  BRG[15:0] Noise Filter A noise filter circuit is included to filter noise on a digital input signal, such as UART receive data, before the data is sampled by the block. This noise filter circuit is a requirement for protocols operating in a noisy environment. The noise filter includes following features: • Synchronizes the receive input data to the system clock • Noise filter enable (NFEN)input selects whether the noise filter is bypassed (NFEN = 0) or included (NFEN = 1) in the receive data path • Noise filter control (NFCTL[2:0])input selects the width of the up/down saturating counter digital filter. The available widths range is from 4 to11 bits • The digital filter output has hysteresis • Provides an active low saturated state output (FiltSatB), used to indicate presence of noise Architecture Figure 20 displays how the noise filter is integrated with the LIN-UART for use on a LIN network. PS028706-0813 PRELIMINARY Noise Filter Z16FMC Series Motor Control MCUs Product Specification 131 RxD RxD RxD FiltSatB Noise Filter LIN-UART TxD LIN Transceiver GPIO NFEN, NFCTL TxD LIN Bus System Clock TxD Figure 20. Noise Filter System Block Diagram Operation Figure 21 displays the operation of the noise filter with and without noise. The noise filter in this example is a 2-bit up/down counter, which saturates at 00b and 11b. A 2-bit counter is shown for convenience, the operation of wider counters is similar. The output of the filter switches from 1 to 0 when the counter counts down from 01b to 00b and switches from 0 to 1 when the counter counts up from 10b to 11b. The noise filter delays the received data by three system clock cycles. The FiltSatB signal is checked when the filtered RxD is sampled in the center of the bittime. The presence of noise (FiltSatB = 1 at center of bit-time) does not mean the sampled data is incorrect, just that the filter is not in its saturated state of all 1’s or all 0’s. If FiltSatB = 1 when RxD is sampled during a receive character, the NE bit in the ModeStatus[4:0] field is set. An indication of the level of noise in the network is obtained by observing this bit. PS028706-0813 PRELIMINARY Noise Filter Z16FMC Series Motor Control MCUs Product Specification 132 Baud Period 16x Sample Clock Input RxD (ideal) Data Bit = 0 Data Bit = 1 Noise Filter3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 Up/Dn Cntr Noise Filter Output RxD Input RxD (noisy) Clean RxD Example nominal filter delay Data Bit=0 Data Bit=1 Noise Filter3 3 2 1 0 0 0 0 0 0 1 2 1 0 0 0 0 0 1 0 1 2 3 3 3 3 2 3 3 3 3 3 3 3 Up/Dn Cntr Noise RxD Example Noise Filter Output RxD FiltSatB Output UART Sample Point Figure 21. Noise Filter Operation LIN-UART Control Register Definitions The LIN-UART control registers support the LIN-UART, the associated Infrared encoder/ decoder and the noise filter. For detailed information about the infrared operation, see the Infrared Encoder/Decoder chapter on page 149. LIN-UART Transmit Data Register Data bytes written to the LIN-UART Transmit Data Register, shown in Table 71, are shifted out on the TXD pin. The write-only LIN-UART Transmit Data Register shares a Register File address with the read-only LIN-UART Receive Data Register. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 133 Table 71. LIN-UART Transmit Data Register (UxTXD) Bit 7 6 5 4 Field 3 2 1 0 TXD RESET X R/W W ADDR FF_E200h, FF_E210h Bit Description [7:0] TXD Transmit Data LIN-UART transmitter data byte to be shifted out through the TXD pin. LIN-UART Receive Data Register Data bytes received through the RXD pin are stored in the LIN-UART Receive Data Register (Table 72). The read-only LIN-UART Receive Data Register shares a register file address with the write-only LIN-UART Transmit Data Register. Table 72. LIN-UART Receive Data Register (UxRXD) Bit 7 6 5 4 Field 3 2 1 0 RXD RESET X R/W R ADDR FF_E200h, FF_E210h Bit Description [7:0] RXD Receive Data LIN-UART receiver data byte from the RXD pin LIN-UART Status 0 Register The LIN-UART Status 0 Register identifies the current LIN-UART operating configuration and status. Table 73 describes the Status 0 Register for standard UART Mode. Table 74 describes the Status 0 Register for LIN Mode. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 134 Table 73. LIN-UART Status 0 Register, Standard UART Mode (UxSTAT0) Bit 7 6 5 4 3 2 1 0 RDA PE OE FE BRKD TDRE TXE CTS RESET 0 0 0 0 0 1 1 X R/W R R R R R R R R Field ADDR FF_E201h, FF_E211h Bit Description [7] RDA Receive Data Available This bit indicates that the LIN-UART Receive Data Register has received data. Reading the LIN-UART Receive Data Register clears this bit. 0 = The LIN-UART Receive Data Register is empty. 1 = There is a byte in the LIN-UART Receive Data Register. [6] PE Parity Error This bit indicates that a parity error has occurred. Reading the Receive Data Register clears this bit. 0 = No parity error occurred. 1 = A parity error occurred. [5] OE Overrun Error This bit indicates that an overrun error has occurred. An overrun occurs when new data is received and the Receive Data Register has not been read. Reading the Receive Data Register clears this bit. 0 = No overrun error occurred. 1 = An overrun error occurred. [4] FE Framing Error This bit indicates that a framing error (no stop bit following data reception) is detected. Reading the Receive Data Register clears this bit. 0 = No framing error occurred. 1 = A framing error occurred. [3] BRKD Break Detect This bit indicates that a break has occurred. If the data bits, parity/multiprocessor bit and stop bit(s) are all zeroes, then this bit is set to 1. Reading the Receive Data Register clears this bit. 0 = No break occurred. 1 = A break occurred. [2] TDRE Transmitter Data Register Empty This bit indicates that the Transmit Data Register is empty and ready for additional data. Writing to the Transmit Data Register resets this bit. 0 = Do not write to the Transmit Data Register. 1 = The Transmit Data Register is ready to receive an additional byte to be transmitted. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 135 Bit Description (Continued) [1] TXE Transmitter Empty This bit indicates that the Transmit Shift Register is empty and character transmission is finished. 0 = Data is currently transmitting. 1 = Transmission is complete. [0] CTS CTS Signal When this bit is read it returns the CTS signal level. If LBEN = 1, the CTS input signal is replaced by the internal receive data available signal to provide flow control in LOOPBACK Mode. CTS only affects transmission if the CTSE bit = 1. Table 74. LIN-UART Status 0 Register, LIN Mode (UxSTAT0) Bit 7 6 5 4 3 2 1 0 RDA PLE OE FE BRKD TDRE TXE ATB RESET 0 0 0 0 0 1 1 0 R/W R R R R R R R R Field ADDR FF_E201h, FF_E211h Bit Description [7] RDA Receive Data Available This bit indicates that the Receive Data Register has received data. Reading the Receive Data Register clears this bit. 0 = The Receive Data Register is empty. 1 = There is a byte in the Receive Data Register. [6] PLE Physical Layer Error This bit indicates that transmit and receive data do not match when a LIN slave or master is transmitting; it is caused by a fault in the physical layer or multiple devices driving the bus simultaneously. Reading the Status 0 Register or the Receive Data Register clears this bit. 0 = Transmit and receive data match. 1 = Transmit and receive data do not match. [5] OE Receive Data and Autobaud Overrun Error This bit is set just as in normal UART operation if a receive data overrun error occurs. This bit is also set during LIN slave autobaud if the BRG counter overflows before the end of the autobaud sequence, indicating that the receive activity was not an autobaud character or the master baud rate is too slow. The ATB status bit will also be set in this case. This bit is cleared by reading the Receive Data Register. 0 = No autobaud or data overrun error occurred. 1 = An autobaud or data overrun error occurred. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 136 Bit Description (Continued) [4] FE Framing Error This bit indicates that a framing error (no stop bit following data reception) is detected. Reading the Receive Data Register clears this bit. 0 = No framing error occurred. 1 = A framing error occurred. [3] BRKD Break Detect This bit is set in LIN Mode if (a) in LinSleep state and a break of at least 4 bit-times occurred (wake-up event) or (b) in Slave Wait for Break state and a break of at least 11 bit-times occurred (break event), or (c) in Slave Active state and a break of at least 10 bit-times occurs. Reading the Status 0 Register or the Receive Data Register clears this bit. 0 = No LIN break occurred. 1 = A LIN break occurred. [2] TDRE Transmitter Data Register Empty This bit indicates that the Transmit Data Register is empty and ready for additional data. Writing to the Transmit Data Register resets this bit. 0 = Do not write to the Transmit Data Register. 1 = The Transmit Data Register is ready to receive an additional byte to be transmitted. [1] TXE Transmitter Empty This bit indicates that the Transmit Shift Register is empty and character transmission is finished. 0 = Data is currently transmitting. 1 = Transmission is complete. [0] ATB LIN Slave AutoBaud Complete This bit is set in LIN SLAVE Mode when an autobaud character is received. If the ABIEN bit is set in the LIN Control Register, then a receive interrupt is generated when this bit is set. Reading the Status 0 Register clears this bit. This bit will be 0 in LIN MASTER Mode. LIN-UART Mode Select and Status Register The LIN-UART Mode Select and Status Register, shown in Table 75, contains mode select and status bits. The status of these bits is dependent on mode selection; see Tables 76 through 79 for descriptions. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 137 Table 75. LIN-UART Mode Select and Status Register (UxMDSTAT) Bit 7 Field RESET R/W 6 5 4 3 2 MSEL 1 0 Mode Status 0 0 0 0 0 0 0 0 R/W R/W R/W R R R R R ADDR FF_E204h, FF_E214h Bit Description [7:5] MSEL Mode Select This R/W field determines which control register is accessed when performing a Write or Read to the UART Control 1 Register address. This field also determines which status is returned in the mode status field when reading this register. 000 = MULTIPROCESSOR and NORMAL UART control/status; see Table 76. 001 = Noise filter control/status; see Table 77. 010 = LIN Protocol control/status; see Table 78. 011–110 = Reserved = {0, 0, 0, 0, 0}. 111 = LIN-UART hardware revision (allows hardware revision to be read in the mode status field); see Table 79. [4:0] Mode Status This read-only field returns status corresponding to the mode selected by MSEL as follows: 000 = MULTIPROCESSOR and NORMAL UART mode status = {NE, 0, 0, NEWFRM, MPRX}; see Table 76. 001 = Noise filter status = {NE, 0,0,0,0}; see Table 77. 010 = LIN Mode status = {NE, RxBreakLength[3:0]}; see Table 78. 011–110 = Reserved = {0, 0, 0, 0, 0}. 111 = LIN-UART hardware revision; see Table 79. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 138 Table 76. MULTIPROCESSOR Mode Status Field (MSEL = 000b) Bit Description NE Noise Event This bit is asserted if digital noise is detected on the receive data line when the data is sampled (center of bit-time). If this bit is set, it does not mean that the receive data is corrupted (in extreme cases), just that one or more of the noise filter data samples near the center of the bit-time did not match the average data value. NEWFRM New Frame Status bit denoting the start of a new frame. Reading the LIN-UART Receive Data Register resets this bit to 0. 0 = The current byte is not the first data byte of a new frame. 1 = The current byte is the first data byte of a new frame. MPRX Multiprocessor Receive Returns the value of the final multiprocessor bit received. Reading from the LINUART Receive Data Register resets this bit to 0. Table 77. Digital Noise Filter Mode Status Field (MSEL = 001B) Bit Description NE Noise Event This bit is asserted if digital noise is detected on the receive data line while the data is sampled (center of bit-time). If this bit is set, it does not mean that the receive data is corrupted (in extreme cases), just that one or more of the noise filter data samples near the center of the bit-time did not match the average data value. Table 78. LIN Mode Status Field (MSEL = 010b) Bit Description NE Noise Event This bit is asserted if some noise level is detected on the receive data line when the data is sampled (center of bit-time). If this bit is set, it does not indicate that the receive data is corrupt (in extreme cases), just that one or more of the 16x data samples near the center of the bit-time did not match the average data value. RxBreakLength LIN Mode Received Break Length This field is read following a break (LIN WAKE-UP or BREAK) so software determines the measured duration of the break. If the break exceeds 15 bittimes, the value saturates at 1111B. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 139 Table 79. Hardware Revision Mode Status Field (MSEL = 111B) Bit Description 111 This field indicates the hardware revision of the LIN-UART block. 00_xxx LIN UART hardware revision. 01_xxx = reserved. 10_xxx = reserved. 11_xxx = reserved. LIN-UART Control 0 Register The LIN-UART Control 0 Register, shown in Table 80, configures the basic properties of the LIN-UART’s transmit and receive operations. Table 80. LIN-UART Control 0 Register (UxCTL0) Bit Field RESET R/W 7 6 5 4 3 2 1 0 TEN REN CTSE PEN PSEL SBRK STOP LBEN 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E202h, FF_E212h Bit Description [7] TEN Transmit Enable This bit enables or disables the transmitter. The enable is also controlled by the CTS signal and the CTSE bit. If the CTS signal is Low and the CTSE bit is 1, the transmitter is enabled. 0 = Transmitter disabled. 1 = Transmitter enabled. [6] REN Receive Enable This bit enables or disables the receiver. 0 = Receiver disabled. 1 = Receiver enabled. [5] CTSE CTS Enable 0 = The CTS signal has no effect on the transmitter. 1 = The LIN-UART recognizes the CTS signal as an enable control for the transmitter. [4] PEN Parity Enable This bit enables or disables parity. Even or odd is determined by the PSEL bit. 0 = Parity is disabled. This bit is overridden by the MPEN bit. 1 = The transmitter sends data with an additional parity bit and the receiver receives an additional parity bit. [3] PSEL Parity Select 0 = Even parity is transmitted and expected on all received data. 1 = Odd parity is transmitted and expected on all received data. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 140 Bit Description (Continued) [2] SBRK Send Break This bit pauses or breaks data transmission. Sending a break interrupts any transmission in progress, so ensure that the transmitter has finished sending data before setting this bit. In standard UART Mode, the duration of the break is determined by how long software leaves this bit asserted. Also the duration of any required stop bits following the break must be timed by software before writing a new byte to be transmitted to the Transmit Data Register. In LIN Mode, the master sends a break character by asserting SBRK. The duration of the break is timed by hardware and the SBRK bit is deasserted by hardware when the break is completed. The duration of the break is determined by the TxBreakLength field of the LIN Control Register. One or two stop bits are automatically provided by the hardware in LIN Mode as defined by the stop bit. 0 = No break is sent. 1 = The output of the transmitter is 0. [1] STOP Stop Bit Select 0 = The transmitter sends one stop bit. 1 = The transmitter sends two stop bits. [0] LBEN Loop Back Enable 0 = Normal operation. 1 = All transmitted data is looped back to the receiver within the IrDA module. LIN-UART Control 1 Registers Multiple registers (see Tables 81 through 83) are accessible by a single bus address. Register selection is determined by the Mode Select (MSEL) field. These registers provide additional control over the LIN-UART operation. Multiprocessor Control Register When MSEL = 000b, this LIN-UART Control 1 Register provides control for UART MULTIPROCESSOR Mode, IRDA Mode and Baud Rate Timer Mode, as well as other features which apply to multiple modes; see Table 81. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 141 Table 81. Multiprocessor Control Register (UxCTL1 with MSEL = 000b) Bit Field RESET R/W 7 6 5 4 3 2 1 0 MPMD[1] MPEN MPMD[0] MPBT DEPOL BRGCTL RDAIRQ IREN 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E203h, FF_E213h with MSEL = 000b Bit Description [7,5] MPMD[1:0] MULTIPROCESSOR Mode If MULTIPROCESSOR (9-Bit) Mode is enabled, 00 = The LIN-UART generates an interrupt request on all received bytes (data and address). 01 = The LIN-UART generates an interrupt request only on received address bytes. 10 = The LIN-UART generates an interrupt request when a received address byte matches the value stored in the Address Compare Register and on all successive data bytes until an address mismatch occurs. 11 = The LIN-UART generates an interrupt request on all received data bytes for which the most recent address byte matched the value in the Address Compare Register. [6] MPEN MULTIPROCESSOR (9-bit) Enable This bit is used to enable MULTIPROCESSOR (9-Bit) Mode. 0 = Disable MULTIPROCESSOR (9-Bit) Mode. 1 = Enable MULTIPROCESSOR (9-Bit) Mode. [4] MPBT Multiprocessor Bit Transmit This bit is applicable only when MULTIPROCESSOR (9-Bit) Mode is enabled. 0 = Send 0 in the multiprocessor bit location of the data stream (9th bit). 1 = Send 1 in the multiprocessor bit location of the data stream (9th bit). [3] DEPOL Driver Enable Polarity 0 = DE signal is active High. 1 = DE signal is active Low. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 142 Bit Description (Continued) [2] BRGCTL Baud Rate Generator Control This bit causes different LIN-UART behavior depending on whether the LIN-UART receiver is enabled (REN = 1 in the LIN-UART Control 0 Register). When the LIN-UART receiver is not enabled, this bit determines whether the baud rate generator issues interrupts. 0 = BRG is disabled. Reads from the Baud Rate High and Low Byte registers return the BRG reload value. 1 = BRG is enabled and counting. The BRG generates a receive interrupt when it counts down to 0. Reads from the Baud Rate High and Low Byte registers return the current BRG count value. When the LIN-UART receiver is enabled, this bit allows reads from the baud rate registers to return the BRG count value instead of the reload value. 0 = Reads from the Baud Rate High and Low Byte registers return the BRG reload value. 1 = Reads from the Baud Rate High and Low Byte registers return the current BRG count value. Unlike the timers, there is no mechanism to latch the High byte when the Low byte is read. [1] RDAIRQ Receive Data Interrupt Enable 0 = Received data and receiver errors generates an interrupt request to the interrupt controller. 1 = Received data does not generate an interrupt request to the interrupt controller. Only receiver errors generate an interrupt request. [0] IREN Infrared Encoder/Decoder Enable 0 = Infrared encoder/decoder is disabled. LIN-UART operates normally. 1 = Infrared encoder/decoder is enabled. The LIN-UART transmits and receives data through the Infrared encoder/decoder. Noise Filter Control Register When MSEL = 001b, this LIN-UART Control 1 Register provides control for the digital noise filter; see Table 82. Table 82. Noise Filter Control Register (UxCTL1 with MSEL = 001b) Bit Field RESET R/W 7 6 NFEN 5 4 3 2 NFCTL 1 0 Reserved 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R R R R ADDR FF_E203h, FF_E213h with MSEL = 001b Bit Description [7] NFEN Noise Filter Enable 0 = Noise filter is disabled. 1 = Noise filter is enabled. Receive data is preprocessed by the noise filter. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 143 Bit Description (Continued) [6:3] NFCTL Noise Filter Control This field controls the delay and noise rejection characteristics of the noise filter. The wider the counter the more delay that is introduced by the filter and the wider the noise event that is filtered. 000 = 4-bit up/down counter. 001 = 5-bit up/down counter. 010 = 6-bit up/down counter. 011 = 7-bit up/down counter. 100 = 8-bit up/down counter. 101 = 9-bit up/down counter. 110 = 10-bit up/down counter. 111 = 11-bit up/down counter. [2:0] Reserved These bits are reserved and must be programmed to 000. LIN Control Register (LIN-UART Control 1 Register with MSEL = 010b) When MSEL = 010b, this LIN-UART Control 1 Register provides control for the LIN Mode of operation; see Table 83. Table 83. LIN Control Register (UxCTL1 with MSEL = 010b) Bit Field RESET R/W 7 6 5 4 LMST LSLV ABEN ABIEN 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR 3 2 LinState[1:0] 0 TxBreakLength FF_E203h, FF_E213h with MSEL = 010b Bit Description [7] LMST LIN MASTER Mode 0 = LIN MASTER Mode not selected. 1 = LIN MASTER Mode selected (if MPEN, PEN, LSLV = 0). [6] LSLV LIN SLAVE Mode 0 = LIN SLAVE Mode not selected. 1 = LIN SLAVE Mode selected (if MPEN, PEN, LMST = 0). [5] ABEN Autobaud Enable 0 = Autobaud not enabled. 1 = Autobaud enabled if in LIN SLAVE Mode. PS028706-0813 1 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 144 Bit Description (Continued) [4] ABIEN Autobaud Interrupt Enable 0 = Interrupt following autobaud does not occur. 1 = Interrupt following autobaud enabled if in LIN SLAVE Mode. When the autobaud character is received, a receive interrupt is generated and the ATB bit is set in the Status 0 Register. [3:2] LinState[1:0] LIN State Machine The LinState is controlled by both hardware and software. Software force a state change at any time if necessary. In normal operation, software moves the state in and out of Sleep state. For a LIN Slave, software changes the state from Sleep to Wait for Break after which hardware cycles through the Wait for Break, Autobaud and Active states. Software changes the state from one of the active states to Sleep state if the LIN bus goes into Sleep Mode. For a LIN Master, software changes state from Sleep to Active where it remains until software sets it back to the Sleep state. After configuration software does not alter the LinState field during operation. 00 = Sleep State (either LMST or LSLV is set). 01 = Wait for Break state (only valid for LSLV = 1). 10 = Autobaud state (only valid for LSLV = 1). 11 = Active state (either LMST or LSLV is set). [1:0] Used in LIN Mode by the master to control the duration of the transmitted break. TxBreakLength 00 = 13 bit-times. 01 = 14 bit-times. 10 = 15 bit-times. 11 = 16 bit-times. LIN-UART Address Compare Register The LIN-UART Address Compare Register stores the multinode network address of the LIN-UART. When the MPMD[1] bit of the LIN-UART Control Register 0 is set, all incoming address bytes are compared to the value stored in this address compare register. Receive interrupts and RDA assertions occur only in the event of a match. Table 84. LIN-UART Address Compare Register (UxADDR) Bit 7 Field 6 5 4 3 1 0 COMP_ADDR RESET 00h R/W R/W ADDR Bit 2 FF_E205h, FF_E215h Description [7:0] Compare Address COMP_ADDR This 8-bit value is compared to the incoming address bytes. PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 145 LIN-UART Baud Rate High and Low Byte Registers The LIN-UART Baud Rate High and Low Byte registers, shown in Tables 85 and 86, combine to create a 16-bit baud rate divisor value, BRG[15:0], which sets the data transmission rate (baud rate) of the LIN-UART. Table 85. LIN-UART Baud Rate High Byte Register (UxBRH) Bit 7 6 5 4 Field 3 2 1 0 1 0 BRH RESET 1 R/W R/W ADDR FF_E206h, FF_E216h Table 86. LIN-UART Baud Rate Low Byte Register (UxBRL) Bit 7 Field 6 5 4 3 2 BRL RESET 1 R/W R/W ADDR FF_E207h, FF_E217h The LIN-UART data rate is calculated using the following equation for standard UART modes. For LIN protocol, the baud rate registers must be programmed with the baud period rather than 1/16 baud period. Note: The UART must be disabled when updating the baud rate registers because these high and low registers must be written independently. The LIN-UART data rate is calculated using the following equation for standard UART operation: System Clock Frequency (Hz) UART Baud Rate (bits/s) = -----------------------------------------------------------------------------------------16  UART Baud Rate Divisor Value The LIN-UART data rate is calculated using the following equation for LIN Mode UART operation: PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 146 System Clock Frequency (Hz) UART Data Rate (bits/s) = -----------------------------------------------------------------------------UART Baud Rate Divisor Value For a given LIN-UART data rate, the integer baud rate divisor value is calculated using the following equation for standard UART operation: System Clock Frequency (Hz) UART Baud Rate Divisor Value (BRG) = Round  ------------------------------------------------------------------------  16  UART Data Rate (bits/s)  For a given LIN-UART data rate, the integer baud rate divisor value is calculated using the following equation for LIN Mode UART operation: System Clock Frequency (Hz) UART Baud Rate Divisor Value (BRG) = Round  ------------------------------------------------------------------------  UART Data Rate (bits/s)  The baud rate error relative to the appropriate baud rate is calculated using the following equation: Actual Data Rate – Desired Data Rate UART Baud Rate Error (%) = 100   -------------------------------------------------------------------------------------------   Desired Data Rate For reliable communication, the LIN-UART baud rate error must never exceed 5 percent. Table 87 provides information about baud rate errors for popular baud rates and commonly used crystal oscillator frequencies for normal UART Mode of operation. When the LIN-UART is disabled, the baud rate generator functions as a basic 16-bit timer with interrupt on time-out. To configure the baud rate generator as a timer with interrupt on time-out, complete the following procedure: 1. Disable the LIN-UART receiver by clearing the REN bit in the LIN-UART Control 0 Register to 0 (TEN bit is asserted, transmit activity may occur). 2. Load the appropriate 16-bit count value into the LIN-UART Baud Rate High and Low Byte registers. 3. Enable the baud rate generator timer function and associated interrupt by setting the BRGCTL bit in the LIN-UART Control 1 Register to 1. Enable the UART receive interrupt in the interrupt controller. When configured as a general purpose timer, the BRG interrupt interval is calculated using the following equation: PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 147 UART BRG Interrupt Interval (s) = System Clock Period (s)  BRG[15:0] Table 87. LIN-UART Baud Rates 20.0 MHz System Clock 10.0 MHz System Clock BRG Divisor (Decimal) Actual Rate (kHz) BRG Divisor (Decimal) Error (%) Actual Rate (kHz) Error (%) 1250.0 1 1250.0 0.00 1250.0 N/A N/A N/A 625.0 2 625.0 0.00 625.0 1 625.0 0.00 250.0 5 250.0 0.00 250.0 3 208.33 –16.67 115.2 11 113.64 –1.19 115.2 5 125.0 8.51 57.6 22 56.82 –1.36 57.6 11 56.8 –1.36 38.4 33 37.88 –1.36 38.4 16 39.1 1.73 19.2 65 19.23 0.16 19.2 33 18.9 0.16 9.60 130 9.62 0.16 9.60 65 9.62 0.16 4.80 260 4.81 0.16 4.80 130 4.81 0.16 2.40 521 2.399 –0.03 2.40 260 2.40 –0.03 1.20 1042 1.199 –0.03 1.20 521 1.20 –0.03 0.60 2083 0.60 0.02 0.60 1042 0.60 –0.03 0.30 4167 0.299 –0.01 0.30 2083 0.30 0.2 Desired Rate (kHz) PS028706-0813 Desired Rate (kHz) PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 148 Table 87. LIN-UART Baud Rates (Continued) 5.5296 MHz System Clock 3.579545 MHz System Clock BRG Divisor (Decimal) Actual Rate (kHz) BRG Divisor (Decimal) Error (%) Actual Rate (kHz) Error (%) 1250.0 N/A N/A N/A 1250.0 N/A N/A N/A 625.0 N/A N/A N/A 625.0 N/A N/A N/A 250.0 1 345.6 38.24 250.0 1 223.72 –10.51 115.2 3 115.2 0.00 115.2 2 111.9 –2.90 57.6 6 57.6 0.00 57.6 4 55.9 –2.90 38.4 9 38.4 0.00 38.4 6 37.3 –2.90 19.2 18 19.2 0.00 19.2 12 18.6 –2.90 9.60 36 9.60 0.00 9.60 23 9.73 1.32 4.80 72 4.80 0.00 4.80 47 4.76 –0.83 2.40 144 2.40 0.00 2.40 93 2.41 0.23 1.20 288 1.20 0.00 1.20 186 1.20 0.23 0.60 576 0.60 0.00 0.60 373 0.60 –0.04 0.30 1152 0.30 0.00 0.30 746 0.30 –0.04 Desired Rate (kHz) Desired Rate (kHz) 1.8432 MHz System Clock BRG Divisor (Decimal) Actual Rate (kHz) Error (%) 1250.0 N/A N/A N/A 625.0 N/A N/A N/A 250.0 N/A N/A N/A 115.2 1 115.2 0.00 57.6 2 57.6 0.00 38.4 3 38.4 0.00 19.2 6 19.2 0.00 9.60 12 9.60 0.00 4.80 24 4.80 0.00 2.40 48 2.40 0.00 1.20 96 1.20 0.00 0.60 192 0.60 0.00 0.30 384 0.30 0.00 Desired Rate (kHz) PS028706-0813 PRELIMINARY LIN-UART Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 149 Infrared Encoder/Decoder Z16FMC Series products contain two fully-functional, high-performance UART-to-infrared encoders/decoders (endecs). Each infrared endec is integrated with an on-chip UART to allow easy communication between the Z16FMC device and IrDA physical layer specification version 1.3-compliant infrared transceivers. Infrared communication provides secure, reliable, low-cost, point-to-point communication between PCs, PDAs, cell phones, printers and other infrared-enabled devices. Architecture Figure 22 displays the architecture of the infrared endec. System Clock Zilog ZHX1810 RxD RXD TxD UART Baud Rate Clock Interrupt I/O Signal Address Infrared Encoder/Decoder (Endec) TXD RXD TXD Infrared Transceiver Data Figure 22. Infrared Data Communication System Block Diagram Operation When the infrared endec is enabled, the transmit data from the associated on-chip UART is encoded as digital signals in accordance with the IrDA standard and output to the infrared transceiver via the TXD pin. Similarly, data received from the infrared transceiver is passed to the infrared endec via the RXD pin, decoded by the infrared endec, and then passed to the UART. Communication is half-duplex, which means that simultaneous data transmission and reception is not allowed. PS028706-0813 PRELIMINARY Infrared Encoder/Decoder Z16FMC Series Motor Control MCUs Product Specification 150 The baud rate is set by the UART’s baud rate generator and supports IrDA standard baud rates from 9600 baud to 115.2 Kbaud. Higher baud rates are possible, but do not meet IrDA specifications. The UART must be enabled to use the infrared endec. The infrared endec data rate is calculated using the below equation: System Clock Frequency (Hz) Infrared Data Rate (bps) = ---------------------------------------------------------------------------------------16 x UART Baud Rate Divisor Value Transmitting IrDA Data The data to be transmitted using the infrared transceiver is first sent to the UART. The UART’s transmit signal (TXD) and baud rate clock are used by the IrDA to generate the modulation signal (IR_TXD) that drives the infrared transceiver. Each UART/Infrared data bit is 16-clocks wide. If the data to be transmitted is 1, the IR_TXD signal remains Low for the full 16-clock period. If the data to be transmitted is 0, a 3-clock high pulse is output following a 7-clock low period. After the 3-clock high pulse, a 6-clock low pulse is output to complete the full 16-clock data period. Figure 23 displays IrDA data transmission. When the infrared endec is enabled, the UART’s TXD signal is internal to the Z16FMC Series products while the IR_TXD signal is output through the TXD pin. 16-clock period Baud Rate Clock UART’s TXD Start Bit = 0 Data Bit 0 = 1 Data Bit 1 = 0 Data Bit 2 = 1 Data Bit 3 = 1 3-clock pulse IR_TXD 7-clock delay Figure 23. Infrared Data Transmission PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 151 Receiving IrDA Data Data received from the infrared transceiver via the IR_RXD signal through the RXD pin is decoded by the infrared endec and passed to the UART. The UART’s baud rate clock is used by the infrared endec to generate the demodulated signal (RXD) that drives the UART. Each UART/Infrared data bit is 16-clocks wide. Figure 24 displays data reception. When the infrared endec is enabled, the UART’s RXD signal is internal to the Z16FMC Series products when the IR_RXD signal is received through the RXD pin. 16-clock period Baud Rate Clock Start Bit = 0 Data Bit 0 = 1 Data Bit 1 = 0 Data Bit 2 = 1 Data Bit 3 = 1 IR_RXD min. 1.6µs pulse UART’s RXD Start Bit = 0 8-clock delay 16-clock period Data Bit 0 = 1 Data Bit 1 = 0 16-clock period 16-clock period Data Bit 2 = 1 Data Bit 3 = 1 16-clock period Figure 24. Infrared Data Reception Caution: The system clock frequency must be at least 1.0 MHz to ensure proper reception of the 1.6 µs minimum width pulses allowed by the IrDA standard. Endec Receiver Synchronization The IrDA receiver uses a local baud rate clock counter (0 to 15 clock periods) to generate an input stream for the UART and to create a sampling window for detection of incoming pulses. The generated UART input (UART RXD) is delayed by 8 baud rate clock periods with respect to the incoming IrDA data stream. When a falling edge in the input data stream is detected, the Endec counter is reset. When the count reaches a value of 8, the UART RXD value is updated to reflect the value of the decoded data. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 152 When the count reaches 12 baud clock periods, the sampling window for the next incoming pulse opens. The window remains open until the count again reaches 8 (i.e., 24 baud clock periods since the previous pulse was detected). This gives the Endec a sampling window of minus 4 baudrate clocks to plus 8 baudrate clocks around the expected time of an incoming pulse. If an incoming pulse is detected inside this window, this process is repeated. If the incoming data is a logical 1 (no pulse), the Endec returns to the initial state and waits for the next falling edge. As each falling edge is detected, the Endec clock counter is reset, resynchronizing the Endec to the incoming signal. This allows the Endec to tolerate jitter and baud rate errors in the incoming data stream. Resynchronizing the Endec does not alter the operation of the UART, which ultimately receives the data. The UART is only synchronized to the incoming data stream when a start bit is received. Infrared Encoder/Decoder Control Register Definitions Caution: All infrared endec configuration and status information is set by the UART control registers as defined in the beginning of the LIN-UART Control Register Definitions section on page 132. To prevent spurious signals during IrDA data transmission, set the IREN bit in the UARTx Control 1 Register to 1 to enable the Infrared Encoder/Decoder before enabling the GPIO port alternate function for the corresponding pin. PS028706-0813 P R E L I M I N A R Y Infrared Encoder/Decoder Control Register Z16FMC Series Motor Control MCUs Product Specification 153 Enhanced Serial Peripheral Interface The Enhanced Serial Peripheral Interface (ESPI) supports SPI (Serial Peripheral Interface) and Inter-IC Sound (I2S) modes of operation. The features of the ESPI include: • Full-duplex, synchronous, character-oriented communication • Four-wire interface (SS, SCK, MOSI, MISO) • Transmit and receive buffer registers to enable high throughput • Transfer rates up to a maximum of one-fourth the system clock frequency when in SLAVE Mode • Error detection • Dedicated programmable baud rate generator (BRG) • Data transfer control through polling, interrupt, or DMA Architecture The ESPI is a full-duplex, synchronous, character-oriented channel that supporting a fourwire interface (serial clock, transmit and receive data and Slave select). The ESPI block consists of a shift register, transmit and receive data buffer registers, a baud rate (clock) generator, control/status registers and a control state machine. Transmit and receive transfers are in sync as there is a single shift register for both transmit and receive data. Figure 25 displays a block diagram of the ESPI. PS028706-0813 PRELIMINARY Enhanced Serial Peripheral Interface Z16FMC Series Motor Control MCUs Product Specification 154 Peripheral Bus Interrupt ESPI Control Register ESPI Status Register ESPI BRH Register ESPI Mode Register ESPI State Register ESPI BRL Register ESPI State Machine DMA Requests TX RX Baud Rate Generator count = 1 Interrupt/ DMA Logic Transmit Data Register SCK Logic 0 Shift Register 7 data_out Receive Data Register SCK SCK in out SS out SS in MISO MOSI in in Pin Direction Control MISO MOSI out out GPIO Logic and Port Pins SS MISO MOSI SCK Figure 25. ESPI Block Diagram PS028706-0813 PRELIMINARY Architecture Z16FMC Series Motor Control MCUs Product Specification 155 ESPI Signals The four ESPI signals are: • Master-In/Slave-Out (MISO) • Master-Out/Slave-In (MOSI) • Serial clock (SCK) • Slave select (SS)  The following paragraphs describe these signals in both MASTER and SLAVE modes. The appropriate GPIO pins must be configured using the GPIO Alternate Function registers. Master-In/Slave-Out The MISO pin is configured as an input in a master device and as an output in a slave device. Data is transferred to most significant bit first. The MISO pin of a slave device is placed in a high-impedance state if the slave is not selected. When the ESPI is not enabled, this signal is in a high-impedance state. The direction of this pin is controlled by the MMEN bit of the ESPI Control Register. Master-Out/Slave-In The MOSI pin is configured as an output in a master device and as an input in a slave device. Data is transferred to most significant bit first. When the ESPI is not enabled, this signal is in a high-impedance state. The direction of this pin is controlled by the MMEN bit of the ESPI Control Register. Serial Clock The SCK synchronizes data movement both in and out of the shift register via the MOSI and MISO pins. In MASTER Mode (MMEN = 1), the ESPI’s baud rate generator creates the serial clock and drives it out via its SCK pin to the slave devices. In SLAVE Mode, the SCK pin is an input. Slave devices ignore the SCK signal unless their SS pin is asserted. The master and slave are each capable of exchanging a character of data during a sequence of NUMBITS clock cycles (see the NUMBITS field in the the ESPI Mode Register section on page 173). In both master and slave ESPI devices, data is shifted on one edge of the SCK and is sampled on the opposite edge where data is stable. SCK phase and polarity is determined by the PHASE and CLKPOL bits (see the ESPI Control Register section on page 171). PS028706-0813 PRELIMINARY ESPI Signals Z16FMC Series Motor Control MCUs Product Specification 156 Slave Select The SS signal is a bidirectional framing signal with several modes of operation to support SPI and other synchronous serial interface protocols. The SLAVE SELECT Mode is selected by the SSMD field of the ESPI Mode Register. The direction of the SS signal is controlled by the SSIO bit of the ESPI Mode Register. The SS signal is an input on slave devices and is an output on the active master device. Slave devices ignore transactions on the bus unless their slave select input is asserted. In SPI MASTER Mode, additional GPIO pins are required to provide Slave Selects if there is more than one slave device. ESPI Register Overview The ESPI Control/Status registers are summarized in Table 88. These registers are accessed by either Word (16-bit) or Byte operations. Table 88. ESPI Registers Word Address Even Address Odd Address XXXXX0 Data Transmit Data Command XXXXX2 Control Mode XXXXX4 Status State XXXXX6 Baud Rate High Baud Rate Low Comparison with Basic SPI Block The ESPI module includes many enhancements when compared to the simpler SPI module in other Z8 Encore! parts. This section highlights the differences between the ESPI module and the SPI module as follows: • Transmit and receive data buffer register added to support higher performance. • Multiple interrupt sources (transmit data, receive data, errors). SPI module only has data transfer complete interrupt. • DMA controller interface (separate transmit and receive interfaces). • Register addresses redefined to facilitate 16-bit transfers on the Z16FMC Series MCU. • Transmit Data Command Register: a new register to facilitate the DMA interface and improve performance with 16-bit transfers. SSV and TEOF are set on the same cycle upon which the data register is written. • Control register: – IRQE changed to DIRQE to allow data interrupts to be disabled when using the DMA but still allow error interrupts PS028706-0813 PRELIMINARY ESPI Register Overview Z16FMC Series Motor Control MCUs Product Specification 157 – – STR bit on the SPI module replaced with ESPIEN1; SPIEN replaced by ESPIEN0; these enhancements allow unidirectional transfers, which minimize software or DMA overhead BIRQ replaced with BRGCTL • Mode register: – Added SSMD field which adds support for loop back and I2S modes – Moved SSV bit to the Transmit Data Command Register, as described above – Added slave select polarity (SSPO) to support active High and Low slave select on SS pin • Status register: – IRQ split into TDRE and RDRF (separate transmit and receive interrupts) – Replace overrun error with separate transmit under-run and receive overrun • State register: – Replaced SCKEN bit with SCKI – Replaced TCKEN with SDI Operation During transfer, data is sent and received simultaneously by both master and slave devices. Separate signals are required to transmit data, receive data and the serial clock. When a transfer occurs, a multibit (typically 8-bit) character is shifted out one data pin and a multi-bit character is simultaneously shifted in on a second data pin. An 8-bit shift register in the master and an 8-bit shift register in the slave is connected as a circular buffer. The ESPI Shift Register is buffered to support back-to-back character transfers in high performance applications. A transaction is initiated when the Transmit Data Register is written in the master device. The value from the data register is transferred into the Shift Register and the transaction begins. After the transmit data is loaded into the Shift Register, the Transmit Data Register Empty (TDRE) status bit asserts, indicating that the Transmit Data Register is written with the next value. At the end of each character transfer, the Shift Register value (receive data) is loaded into the Receive Data Register. At that point the Receive Data Register Full (RDRF) status bit asserts. When software or DMA reads the receive data from the Receive Data Register, the RDRF signal deasserts. The master sources the SCK and SS signal during the transfer. Internal data movement (either by software or DMA) to/from the ESPI block is controlled by the Transmit Data Register Empty (TDRE) and Receive Data Register Full (RDRF) PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 158 signals. These signals are read only bits in the ESPI Status Register. When either the TDRE or RDRF bits assert, an interrupt is sent to the interrupt controller if the data interrupt request enable (DIRQE) bit is set. The TDRE and RDRF signals also generate transmit and receive DMA requests. In many cases the software application is only moving information in one direction. In such a case, either the TDRE or RDRF interrupts/DMA requests is disabled to minimize software/DMA overhead. Unidirectional data transfer is supported by setting the ESPIEN1, 0 bits in the Control Register to 10 or 01. If the DMA engine is being used to move the data, the transmit and receive data interrupts are disabled through the DIRQE bit of the Control Register. In this case error interrupts still occurs and must be handled directly by the software. Throughput In MASTER Mode, the maximum SCK rate supported is one-half the system clock frequency. This rate is achieved by programming the value 0001h into the baud rate high/ low register pair. Though each character is transferred at this rate, it is unlikely that software interrupt routines or DMA keeps up with this rate. In SPI Mode, the transfer will automatically pause between characters until the current receive character is read and the next transmit data value is written. In SLAVE Mode, the transfer rate is controlled by the master. As long as the TDRE and RDRF interrupt or DMA requests are serviced before the next character transfer completes the slave will keep up with the master. In SLAVE Mode, the baud rate is restricted to a maximum of one-fourth of the system clock frequency to allow for synchronization of the SCK input to the internal system clock. ESPI Clock Phase and Polarity Control The ESPI supports four combinations of SCK phase and polarity using two bits in the ESPI Control Register. The clock polarity bit, CLKPOL, selects an active High or active Low clock and has no effect on the transfer format. The clock phase bit, PHASE, selects one of two fundamentally different transfer formats. The data is output a half-cycle before the receive clock edge which provides a half cycle of setup and hold time. Table 89 lists the ESPI clock phase and polarity operation parameters. Table 89. ESPI Clock Phase and Clock Polarity Operation CLKPOL SCK Transmit Edge SCK Receive Edge SCK Idle State 0 0 Falling Rising Low 0 1 Rising Falling High 1 0 Rising Falling Low 1 1 Falling Rising High PHASE PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 159 Transfer Format with Phase Equals Zero Figure 26 displays the timing diagram for an SPI type transfer in which PHASE = 0. For SPI transfers the clock only toggles during the character transfer. The two SCK waveforms show polarity with CLKPOL = 0 and with CLKPOL = 1. The diagram is interpreted as either a Master or Slave timing diagram as the SCK MISO and MOSI pins are directly connected between the master and the slave. SCK (CLKPOL = 0) SCK (CLKPOL = 1) MOSI Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 MISO Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Input Sample Time SS Figure 26. ESPI Timing when PHASE = 0 Transfer Format with Phase Equals One Figure 27 displays the timing diagram for an SPI type transfer in which PHASE = 1. For SPI transfers the clock only toggles during the character transfer. Two waveforms are depicted for SCK, one for CLKPOL = 0 and another for CLKPOL = 1. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 160 SCK (CLKPOL = 0) SCK (CLKPOL = 1) MOSI Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 MISO Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Input Sample Time SS Figure 27. ESPI Timing when PHASE = 1 Modes of Operation This section describes the different modes of data transfer supported by the ESPI block. The mode is selected by the SLAVE SELECT Mode (SSMD) field of the Mode Register. SPI Mode This mode is selected by setting the SSMD field of the mode Register to 000. In this mode, software or DMA controls the assertion of the SS signal directly via the SSV bit of the SPI Transmit Data Command Register. Either DMA or software is used to control an SPI Mode transaction. Prior to or simultaneously with writing the first transmit data byte, software or DMA sets the SSV bit. Software sets the SSV bit either by performing a byte write to the Transmit Data Command Register prior to writing the first transmit character to the data register or by performing a word write to the data register address which loads the first transmit character and simultaneously sets the SSV bit. The DMA sets the SSV bit via the command field of the descriptor. The SSV bit is written on the DMA command bus prior to or in sync with the first data byte. SS will remain asserted while one or more characters are transferred. There are two mechanisms for deasserting SS at the end of the transaction. One method is used by DMA and also by software, PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 161 is to set the TEOF bit of the Transmit Data Command Register when the final TDRE interrupt or DMA request is being serviced (set TEOF before or simultaneously with writing the final data byte). When the final bit of the final character is transmitted, the hardware will automatically deassert the SSV and TEOF bits. The second method is for software to directly clear the SSV bit after the transaction completes. If software clears the SSV bit directly, it is not necessary for software to also set the TEOF bit on the final transmit byte. After writing the final transmit byte, the end of the transaction is detected by waiting for the final RDRF interrupt or monitoring the TFST bit in the ESPI Status Register. The transmit underrun and receive overrun errors do not occur in an SPI Mode master. If the RDRF and TDRE requests have not been serviced before the current byte transfer completes, SCLK is paused until the data register is read and written. The transmit underrun and receive overrun errors will occur in a slave if the slave’s software/DMA does not keep up with the master data rate. If a transmit underrun occurs in SLAVE Mode, the Shift Register in the slave is loaded with all 1s. In the SPI Mode, the SCK is active only for the data transfer with one SCK period per bit transferred. If the SPI bus has multiple slaves, the slave select lines to all or one of the slaves must be controlled independently by software using GPIO pins. Figure 28 displays multiple character transfer in SPI Mode. Note that while character ’n’ is being transferred using the Shift Register, software/DMA responds to the receive request for character n-1 and the transmit request for character n+1. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 162 SCK (SSMD = 00, PHASE = 0, CLKPOL = 0, SSPO = 0) MOSI, MISO Bit0 Rx Data Register Bit7 Bit6 Bit1 Empty Rx n–1 Tx Data Register Tx n Tx n+1 Shift Register Tx/Rx n–1 Tx/Rx n Bit0 Bit7 Rx n Bit 6 empty Tx n+2 Tx/Rx n+1 TDRE RDRF ESPI Interrupt Figure 28. SPI Mode (SSMD = 000) I2S Mode Inter-Integrated Circuit Sound Mode (I2S) is selected by setting the SSMD field of the Mode Register to 010. The PHASE and CLKPOL bits of the Control Register must be set to 0. This mode is illustrated in Figure 29 with SS alternating between consecutive frames. A frame consists of a fixed number of data bytes as defined in the DMA buffer descriptor or by software. I2S Mode is typically used to transfer left or right channel audio data. The SSV indicates whether the corresponding bytes are left or right channel data. The SSV value must be updated when servicing the TDRE interrupt/request for the first byte in a left or write channel frame. Servicing this request is accomplished by performing a word write when writing the first byte of the audio word, which updates both the ESPI data and transmit data command words or by doing a byte write to update SSV followed by a byte write to the data register. The SS signal leads the data by one SCK period. If a DMA channel is controlling data transfer, each sequence of left (or right) channel byte is considered a frame with a buffer descriptor. The SSV bit is defined in the buffer descriptor command field and is automatically written to the Transmit Data Command Register just prior to or in synchronous with the first data byte of the frame being written. Note that PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 163 the number of bits per frame is a value other than an integral number of 8 bits by setting NUMBITS to a value other than 0. Example To send 20 bits/frame, set NUMBITS = 5 and read/write 4 bytes per frame. The transmit data must be left-justified and the receive data must be right-justified. The transaction is terminated when the master has no more data to transmit. After the final bit is transferred, SCLK stops and SS and SSV returns to their default states. If TEOF is not set on the final byte, a transmit underrun error occurs at this point. SCK (SSMD = 010, PHASE = 0, CLKPOL = 0) SS (SSPO = 0) SSV=1 MOSI, MISO Bit7 SSV=0 Bit0 frame n (may be multiple bytes) Bit7 Bit0 Bit 7 frame n + 1 Figure 29. I2S Mode (SSMD = 010) SPI Protocol Configuration This section describes in detail how to configure the ESPI block for the SPI protocol. In the SPI protocol the master sources the SCK and asserts slave select signals to one or more slaves. The slave select signals are typically active Low. SPI Master Operation The ESPI block is configured for MASTER Mode operation by setting the MMEN bit = 1 in the ESPICTL Register. The SSMD field of the ESPI Mode Register is set to 000 for SPI PROTOCOL Mode. The PHASE, CLKPOL and WOR bits in the ESPICTL Register and the NUMBITS field in the ESPI Mode Register must be consistent with the Slave SPI devices. Typically for an SPI master SSIO = 1 and SSPO = 0. The appropriate GPIO pins are configured for the ESPI alternate function on the MOSI, MISO and SCK pins. The GPIO for the ESPI SS pin is configured in alternate function mode as well though soft- PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 164 ware uses any GPIO pin(s) to drive one or more slave select lines. If the ESPI SS signal is not used to drive a slave select the SSIO bit must still be set to 1 in a single master system. Figure 30 and Figure 31 displays the ESPI block configured as an SPI master. ESPI Master To Slave’s SS Pin From Slave To Slave To Slave SS MISO 8-bit Shift Register Bit 0 Bit 7 MOSI SCK Baud Rate Generator Figure 30. ESPI Configured as an SPI Master in a Single Master, Single Slave System ESPI Master To Slave #2’s SS Pin GPIO To Slave #1’s SS Pin GPIO From Slaves MISO To Slaves To Slaves 8-bit Shift Register Bit 0 Bit 7 MOSI SCK Baud Rate Generator Figure 31. ESPI Configured as an SPI Master in a Single Master, Multiple Slave System PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 165 Multi-Master SPI Operation In a multi-master SPI system, all SCK pins are tied together, all MOSI pins are tied together and all MISO pins are tied together. All SPI pins must be configured in opendrain mode to prevent bus contention. At any time, only one SPI device is configured as the master and all other devices on the bus are configured as slaves. The master asserts the SS pin on the selected slave. Next, the active master drives the clock and transmit data on the SCK and MOSI pins to the SCK and MOSI pins on the slave (including those slaves which are not enabled). The enabled slave drives data out its MISO pin to the MISO master pin. When the ESPI is configured as a master in a multi-master SPI system, the SS pin must be configured as an input. The SS input signal on a device configured as a master must remain High. If the SS signal on the active master goes Low (indicating another master is accessing this device as a slave), a collision error flag is set in the ESPI Status Register. The slave select outputs on a master in a multi-master system must come from GPIO pins. SPI Slave Operation The ESPI block is configured for SLAVE Mode operation by setting the MMEN bit = 0 in the ESPICTL Register and setting the SSIO bit = 0 in the ESPIMODE Register. The SSMD field of the ESPI Mode Register is set to 00 for SPI PROTOCOL Mode. The PHASE, Clkpol and WOR bits in the ESPICTL Register and the NUMBITS field in the ESPIMODE Register must be set to be consistent with the other SPI devices. Typically for an SPI slave SSPO = 0. If the slave has data to send to the master, the data must be written to the data register before the transaction starts (first edge of SCK when SS is asserted). If the data register is not written prior to the slave transaction, the MISO pin outputs all 1s. Due to the delay resulting from synchronization of the SS and SCK input signals to the internal system clock, the maximum SCK baud rate which is supported in SLAVE Mode is the system clock frequency divided by 8. This rate is controlled by the SPI master. Figure 32 illustrates the ESPI configuration in SPI SLAVE Mode. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 166 SPI Slave From Master To Master From Master From Master SS MISO 8-bit Shift Register Bit 7 Bit 0 MOSI SCK Figure 32. ESPI Configured as an SPI Slave Error Detection Error events detected by the ESPI block are described in this section. Error events generate an ESPI interrupt and set a bit in the ESPI Status Register. The error bits of the ESPI Status Register are read/write 1 to clear. Transmit Underrun A transmit underrun error occurs for a master with SSMD = 10 or 11 when a character transfer completes and TDRE = 1. In these modes when a transmit underrun occurs the transfer is aborted (SCK will halt and SSV will be deasserted). For a master in SPI Mode (SSMD = 00), a transmit underrun is not signaled because SCK will pause and wait for the data register to be written. In SLAVE Mode, a transmit underrun error occurs if TDRE = 1 at the start of a transfer. When a transmit underrun occurs in SLAVE Mode, ESPI transmits a character of all 1s. A transmit underrun sets the TUND bit in the ESPI Status Register to 1. Writing a 1 to TUND clears this error flag. Mode Fault (Multi-Master Collision) A mode fault indicates when more than one master is trying to communicate at the same time (a multi-master collision) in SPI Mode. The mode fault is detected when the enabled master’s SS input pin is asserted. For this to happen the control and mode registers must be configured with MMEN = 1, SSIO = 0 (SS is an input) and SS input = 0. A mode fault sets the COL bit in the ESPI Status Register to 1. Writing a 1 to COL clears this error flag. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 167 Receive Overrun A receive overrun error occurs when a transfer completes and the RDRF bit is still set from the previous transfer. A receive overrun sets the ROVR bit in the ESPI Status Register to 1. Writing a 1 to ROVR clears this error flag. The Receive Data Register is not overwritten and will contain the data from the transfer which initially set the RDRF bit. Subsequent received data is lost until the RDRF bit is cleared. Slave Mode Abort In SLAVE Mode of operation if the SS pin deasserts before all bits in a character have been transferred, the transaction is aborted. When this condition occurs the ABT bit is set in the ESPI Status Register. A slave abort error resets the slave control logic to the idle state. A slave abort error is also asserted in SLAVE Mode, if BRGCTL = 1 and a BRG time-out occurs. When BRGCTL = 1 is in SLAVE Mode, it functions as a WDT monitoring the SCK signal. The BRG counter is reloaded every time a transition on SCK occurs while SS is asserted. The baud rate reload registers must be programmed with a value longer than the expected time between SS assertion and the first SCK edge, between SCK transitions while SS is asserted and between the previous SCK edge and SS deassertion. A time-out indicates the master is stalled or disabled. Writing a 1 to ABT clears this error flag. ESPI Interrupts ESPI has a single interrupt output which is asserted when any of the TDRE, TUND, COL, ABT, ROVR, or RDRF bits are set in the ESPI Status Register. The interrupt is a pulse (duration of one system clock) generated when any one of the source bits initially set. The TDRE and RDRF interrupts are enabled/disabled through the Data Interrupt Request Enable (DIRQE) bit of the ESPI Control Register. A transmit interrupt is asserted by the TDRE status bit when the ESPI block is enabled and the DIRQE bit is set. The TDRE bit in the Status Register is cleared automatically when the Transmit Data Register is written or the ESPI block is disabled. When the Transmit Data Register value is loaded into the Shift Register to start a new transfer, the TDRE bit will be set again causing a new transmit interrupt. If information is being received but not transmitted the transmit interrupts are eliminated by selecting RECEIVE ONLY Mode (ESPIEN1,0 = 01). A master operates in Receive Only mode; however, a write to the ESPI (Transmit) Data Register is still required to initiate the transfer of a character. A receive interrupt is generated by the RDRF status bit when the ESPI block is enabled; the DIRQE bit is set and a character transfer completes. At the end of the character transfer, the contents of the Shift Register is transferred into the Receive Data Register, causing the RDRF bit to assert. The RDRF bit is cleared when the Receive Data Register is read. If information is being transmitted but not received by the software application, the receive interrupt is eliminated by selecting Transmit Only mode (ESPIEN1,0 = 10) in either MASTER or SLAVE modes. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 168 ESPI error interrupts occur if any of the TUND, COL, ABT and ROVR bits in the ESPI Status Register are set. These bits are cleared by writing a 1 to the corresponding bit. If the ESPI is disabled (ESPIEN1,0 = 00), an ESPI interrupt is generated by a BRG timeout. This timer function must be enabled by setting the BRGCTL bit in the ESPICTL Register. This timer interrupt does not set any of the bits of the ESPI Status Register. DMA Interface The assertion of the TDRE and RDRF signals generate transmit and receive DMA requests (SPITxReq, SPIRxReq), allowing data movement to be handled by a DMA controller rather than directly by software. The DMA acknowledges these requests through the SPITxAck and SPIRxAck signals). Inputs allow the SSV and TEOF bits of the Transmit Data Command Register to be controlled by the DMA. The SPITxReqEOF and SPIRxReqEOF outputs to the DMA provides an indication that SS has deasserted (transaction complete). If the software application is moving data in only one direction, the ESPIEN1,0 bits are set to 10 or 01, allowing a single DMA channel to control the ESPI data transfer. For a master, the valid options are transmit only or transmit-receive. For a slave, all options are valid. When a slave is operating in Receive Only mode, it will transmit characters of all ones. DMA Descriptors For ESPI Transmit DMA descriptors, the 4-bit CMDSTAT field of the descriptor exists in the format shown in Table 90. The SSV bit in the Master’s transmit buffer descriptor CMDSTAT field controls the ESPI SS output. The SSV bit in the descriptor is transferred to the SSV bit in the ESPI Data Command Register with the first byte of the buffer. If the EOF bit is set in the DMA descriptor control word, the End Of Frame signal from the DMA (EOFSync) will assert coincident with writing the final byte in the buffer to the ESPI Data Register, setting the TEOF bit of the ESPI Data Command Register. After this final byte has been transferred, the Master’s SS output will deassert and the SSV and TEOF bits in the Data Command Register will be cleared. The CMDSTAT field in ESPI Receive DMA Descriptors has no function. Table 90. ESPI Tx DMA Descriptor Command Field Reserved Reserved Reserved SSV For ESPI DMA descriptors, the 4-bit frame status field of the descriptor is depicted in the formats shown in Tables 91 and 92. Table 91. ESPI Tx DMA Descriptor Status field 0 PS028706-0813 0 COL PRELIMINARY TUND Operation Z16FMC Series Motor Control MCUs Product Specification 169 Table 92. ESPI Rx DMA Descriptor Status field 0 RSS ABT ROVR TUND, COL, ABT, ROVR. See the Status Register for a description of these bits. RSS. Value of SS associated with final byte written (useful in I2S Mode to distinguish left/ right channel data). ESPI Baud Rate Generator In ESPI MASTER Mode, the BRG creates a lower frequency serial clock (SCK) for data transmission synchronization between the Master and the external Slave. The input to the BRG is the system clock. The ESPI Baud Rate High and Low Byte registers combine to form a 16-bit reload value, BRG[15:0], for the ESPI BRG. The ESPI baud rate is calculated using the following equation: System Clock Frequency (Hz) SPI Baud Rate (bps) = -----------------------------------------------------------------------2  BRG[15:0] Minimum baud rate is obtained by setting BRG[15:0] to 0000h for a clock divisor value of (2 x 65536 = 131072). When the ESPI is disabled, the BRG functions as a basic 16-bit timer with interrupt on time-out. Observe the following steps to configure the BRG as a timer with interrupt on time-out: 1. Disable the ESPI by clearing the ESPIEN1,0 bits in the ESPI Control Register. 2. Load the appropriate 16-bit count value into the ESPI Baud Rate High and Low Byte registers. 3. Enable the BRG timer function and associated interrupt by setting the BRGCTL bit in the ESPI Control Register to 1. When configured as a general purpose timer, the SPI BRG interrupt interval is calculated using the following equation: SPI BRG Interrupt Interval (s) = System Clock Period (s)  BRG[15:0] ESPI Control Register Definitions The remainder of this chapter describes the functions of the following ESPI control registers. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 170 • ESPI Data Register • ESPI Transmit Data Command Register • ESPI Control Register • ESPI Mode Register • ESPI Status Register • ESPI State Register • ESPI Baud Rate High and Low Byte registers ESPI Data Register The ESPI Data Register, shown in Table 93, addresses both the outgoing Transmit Data Register and the incoming Receive Data Register. Reads from the ESPI Data Register return the contents of the Receive Data Register. The Receive Data Register is updated with the contents of the Shift Register at the end of each transfer. Writes to the ESPI Data Register load the Transmit Data Register unless TDRE = 0. Data is shifted out starting with bit 7. The final bit received resides in bit position 0. With the ESPI configured as a Master, writing a data byte to this register initiates the data transmission. With the ESPI configured as a Slave, writing a data byte to this register loads the Shift Register in preparation for the next data transfer with the external Master. In either the MASTER or SLAVE modes, if TDRE = 0, writes to this register are ignored. When the character length is less than 8 bits (as set by the NUMBITS field in the ESPI Mode Register), the transmit character must be left-justified in the ESPI Data Register. A received character of less than 8 bits is right-justified (final bit received is in bit position 0). For example, if the ESPI is configured for 4-bit characters, the transmit characters must be written to ESPIDATA[7:4] and the received characters are read from ESPIDATA[3:0]. Table 93. ESPI Data Register (ESPIDATA) Bit 7 6 5 4 Field RESET R/W 3 2 1 0 DATA X X X X X X X X R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E260h Bit Description [7:0] DATA Data Transmit and/or receive data. Writes to the ESPIDATA Register load the Shift Register. Reads from the ESPIDATA Register return the value of the Receive Data Register. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 171 ESPI Transmit Data Command Register The ESPI Transmit Data Command Register, shown in Table 94, provides control of the SS pin when it is configured as an output (MASTER Mode). The TEOF and SSV bits are controlled by the DMA interface as well as by a bus write to this register. Table 94. ESPI Transmit Data Command Register (ESPITDCR) Bit 7 6 5 4 3 2 Field 1 0 TEOF SSV RESET 0 0 0 0 0 0 0 0 R/W R R R R R R R/W R/W ADDR FF_E261h Bit Description [7:2] Reserved These bits are reserved and must be programmed to 000000. [1] TEOF Transmit End Of Frame This bit is used in MASTER Mode to indicate that the data in the Transmit Data Register is the final byte of the transfer or frame. When the final byte has been sent SS (and SSV) change state and TEOF automatically clears. 0 = The data in the Transmit Data Register is not the final character in the message. 1 = The data in the Transmit Data Register is the final character in the message. [0] SSV Slave Select Value When SSIO = 1, writes to this register controls the value output on the SS pin. See SSMD field of the ESPI Mode Register for more details. ESPI Control Register The ESPI Control Register, shown in Table 95, configures the ESPI for transmit and receive operations. Table 95. ESPI Control Register (ESPICTL) Bit Field RESET R/W 7 6 5 4 3 2 1 0 DIRQE ESPIEN1 BRGCTL PHASE CLKPOL WOR MMEN ESPIEN0 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR PS028706-0813 FF_E262h PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 172 Bit Description [7] DIRQE Data Interrupt Request Enable This bit is used to disable or enable data (TDRE and RDRF) interrupts. Disabling the data interrupts is needed when controlling data transfer by DMA or polling. Error interrupts are not disabled. To block all ESPI interrupt sources, clear the ESPI interrupt enable bit in the Interrupt Controller. 0 = TDRE and RDRF assertions do not cause an interrupt. Use this setting if controlling data transfer through DMA or by software polling of TDRE and RDRF. The TUND, COL, ABT and ROVR bits cause an interrupt. 1 = TDRE and RDRF assertions will cause an interrupt. TUND, COL, ABT and ROVR will also cause interrupts. Use this setting if controlling data transfer through interrupt handlers. [6,0] ESPIEN1, ESPIEN0 ESPI Enable and Direction Control 00 = ESPI block is disabled. BRG is used as a general purpose timer by setting BRGCTL = 1. 01 = RECEIVE ONLY Mode. Use this setting if the software application is receiving data but not sending. TDRE will assert, however the transmit interrupt and DMA requests will not assert. In SLAVE Mode, the transmitted data will be all 1s. In MASTER Mode software must still write to the Transmit Data Register to initiate the transfer. 10 = TRANSMIT ONLY Mode. Use this setting in MASTER or SLAVE Mode when the software application is sending data but not receiving. RDRF will assert, but receive interrupt and DMA requests not occur. 11 = TRANSMIT/RECEIVE Mode. Use this setting if the software application is both sending and receiving information. Both TDRE and RDRF will be active. [5] BRGCTL Baud Rate Generator Control The function of this bit depends upon ESPIEN1,0. When ESPIEN1,0 = 00, this bit allows enabling the BRG to provide periodic interrupts. If the ESPI is disabled (ESPIEN1, ESPIEN0 = 00): 0 = The BRG timer function is disabled. Reading the Baud Rate High and Low registers returns the BRG reload value. 1 = The BRG timer function and time-out interrupt are enabled. Reading the Baud Rate High and Low registers returns the BRG Counter value. If the ESPI is enabled: 0 = Reading the Baud Rate High and Low registers returns the BRG reload value. If MMEN = 1, the BRG is enabled to generate SCK. If MMEN = 0, the BRG is disabled. 1 = Reading the Baud Rate High and Low registers returns the BRG Counter value. If MMEN = 1, the BRG is enabled to generate SCK. If MMEN = 0, the BRG is enabled to provide a Slave SCK time-out. See Slave Abort error description. CAUTION: If reading the counter one byte at a time while the BRG is counting keep in mind that the values will not be in sync. Zilog recommends reading the counter using word (2byte) reads. [4] PHASE Phase Select Sets the phase relationship of the data to the clock. For more information about operation of the PHASE bit, see the ESPI Clock Phase and Polarity Control section on page 158. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 173 Bit Description (Continued) [3] CLKPOL Clock Polarity 0 = SCK idles Low (0). 1 = SCK idles High (1). [2] WOR Wire-OR (Open-Drain) Mode Enabled 0 = ESPI signal pins not configured for open-drain. 1 = All four ESPI signal pins (SCK, SS, MISO, MOSI) configured for open-drain [1] MMEN ESPI MASTER Mode Enable This bit controls the data I/O pin selection and SCK direction. 0 = Data-out on MISO, data-in on MOSI (used in SPI SLAVE Mode), SCK is an input. 1 = Data-out on MOSI, data-in on MISO (used in SPI MASTER Mode), SCK is an output. ESPI Mode Register The ESPI Mode Register, shown in Table 96, configures the character bit width and mode of the ESPI I/O pins. Table 96. ESPI Mode Register (ESPIMODE) Bit 7 Field 6 5 4 3 2 1 0 SSMD NUMBITS[2:0] SSIO SSPO RESET 000 000 0 0 R/W R/W R/W R/W R/W ADDR PS028706-0813 FF_E263h PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 174 Bit Description [7:5] SSMD SLAVE SELECT Mode This field selects the behavior of SS as a framing signal. For a detailed description of these modes; see the Slave Select section on page 156. 000 = SPI Mode When SSIO = 1, the SS pin is driven directly from the SSV bit in the Transmit Data Command Register. The Master software or DMA must set SSV (or a GPIO output if the SS pin is not connected to the appropriate Slave) to the asserted state prior to or on the same clock cycle with which the Transmit Data Register is written with the initial byte. At the end of a frame (after the final RDRF event), SSV is deasserted by software. Alternatively, SSV is automatically deasserted by hardware if the TEOF bit in the Transmit Data Command Register is set when the final transmit byte is loaded. In SPI Mode, SCK is active only for data transfer (one clock cycle per bit transferred). 001 = LOOPBACK Mode When ESPI is configured as Master (MMEN = 1) the outputs are deasserted and data is looped from shift register out to shift register in. When ESPI is configured as a Slave (MMEN = 0) and SS in asserts, MISO (Slave output) is tied to MOSI (Slave input) to provide an a remote loop back (echo) function. 010 = I2S Mode In this mode, the value from SSV will be output by the Master on the SS pin one SCK period before the data and will remain in that state until the start of the next frame. Typically this mode is used to send back-to-back frames with SS alternating on each frame. A frame boundary is indicated in the Master when SSV changes. A frame boundary is detected in the Slave by SS changing state. The SS framing signal will lead the frame by one SCK period. In this mode, SCK will run continuously, starting with the initial SS assertion. Frames will run back-to-back as long as software/DMA continue to provide data. The I2S protocol (Inter IC Sound) is used to carry left and right channel audio data with the SS signal indicating which channel is being sent. In SLAVE Mode, the change in state of SS (Low to High or High to Low) will trigger the start of a transaction on the next SCK cycle. [4:2] Number of Data Bit Per Character to Transfer NUMBITS[2:0] This field contains the number of bits to shift for each character transfer. For information about valid bit positions when the character length is less than 8 bits, see the ESPI Data Register section on page 170. 000 = 8 bits. 001 = 1 bit. 010 = 2 bits. 011 = 3 bits. 100 = 4 bits. 101 = 5 bits. 110 = 6 bits. 111 = 7 bits. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 175 Bit Description (Continued) [1] SSIO Slave Select I/O This bit controls the direction of the SS pin. In SINGLE MASTER Mode, SSIO is set to 1 unless a separate GPIO pin is being used to provide the SS output function. In the SPI Slave or Multi-Master configuration SSIO is set to 0. 0 = SS pin configured as an input (SPI SLAVE and MULTI-MASTER modes). 1 = SS pin configured as an output (SPI SINGLE MASTER Mode). [0] SSPO Slave Select Polarity This bit controls the polarity of the SS pin. 0 = SS is active Low. (SSV = 1 corresponds to SS = 0). 1 = SS is active High. (SSV = 1 corresponds to SS = 1). ESPI Status Register The ESPI Status Register, shown in Table 97, indicates the current state of the ESPI. All bits revert to their Reset state, if the ESPI is disabled. Table 97. ESPI Status Register (ESPISTAT) Bit 7 6 5 4 3 2 1 0 TDRE TUND COL ABT ROVR RDRF TFST SLAS RESET 0 0 0 0 0 0 0 1 R/W R R/W* R/W* R/W* R/W* R R R Field ADDR FF_E264h Note: *R/W = Read access. Write a 1 to clear the bit to 0. Bit Description [7] TDRE Transmit Data Register Empty 0 = Transmit Data Register is full or ESPI is disabled. 1 = Transmit Data Register is empty. A write to the ESPI (Transmit) Data Register clears this bit. [6] TUND Transmit Underrun 0 = A Transmit Underrun error has not occurred. 1 = A Transmit Underrun error has occurred. [5] COL Collision 0 = A Multi-Master collision (mode fault) has not occurred. 1 = A Multi-Master collision (mode fault) has been detected. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 176 Bit Description (Continued) [4] ABT Slave Mode Transaction Abort This bit is set if the ESPI is configured in SLAVE Mode, a transaction is occurring and SS deasserts before all bits of a character have been transferred as defined by the NUMBITS field of the ESPIMODE Register. This bit is also be set in SLAVE Mode by an SCK monitor time-out (MMEN = 0, BRGCTL = 1). 0 = A SLAVE Mode transaction abort has not occurred. 1 = A SLAVE Mode transaction abort has been detected. [3] ROVR Receive Overrun 0 = A Receive Overrun error has not occurred. 1 = A Receive Overrun error has occurred. [2] RDRF Receive Data Register Full 0 = Receive Data Register is empty. 1 = Receive Data Register is full. A read from the ESPI (Receive) Data Register clears this bit. [1] TFST Transfer Status 0 = No data transfer is currently in progress. 1 = Data transfer is currently in progress. [0] SLAS Slave Select Reading this bit returns the current value of the SS exclusive-OR’d with the SSPO bit. 0 = SS pin is Low, if SSPO = 0, SS pin is High if SSPO = 1 (SS is asserted). 1 = SS pin is High, if SSPO = 0, SS pin is Low if SSPO = 1 (SS is deasserted). ESPI State Register The ESPI State Register, shown in Table 98, provides observability of the ESPI clock, data and internal state. Table 98. ESPI State Register (ESPISTATE) Bit 7 6 SCKI SDI ESPISTATE RESET 0 0 0 R/W R R R Field ADDR 5 4 3 2 1 0 FF_E265h Bit Description [7] SCKI Serial Clock Input This bit reflects the state of the serial clock pin. 0 = The SCK input pin is Low 1 = The SCK input pin is High PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 177 Bit Description (Continued) [6] SDI Serial Data Input This bit reflects the state of the serial data input (MOSI or MISO depending on the MMEN bit). 0 = The serial data input pin is Low. 1 = The serial data input pin is High. [5:0] ESPI State Machine ESPISTATE Indicates the current state of the internal ESPI State Machine. This information is intended for manufacturing test. The state values may change in future hardware revisions and are not intended to be used by a software driver. Table 99 defines the valid states. Table 99. ESPISTATE Values and Description PS028706-0813 ESPISTATE Value Description 00_0000 Idle 00_0001 Slave Wait For SCK 00_0010 I2S SLAVE Mode start delay 00_0011 I2S SLAVE Mode start delay 01_0000 SPI MASTER Mode start delay 11_0001 I2S MASTER Mode start delay 11_0010 I2S MASTER Mode start delay 10_1110 Bit 7 Receive 10_1111 Bit 7 Transmit 10_1100 Bit 6 Receive 10_1101 Bit 6 Transmit 10_1010 Bit 5 Receive 10_1011 Bit 5 Transmit 10_1000 Bit 4 Receive 10_1001 Bit 4 Transmit 10_0110 Bit 3 Receive 10_0111 Bit 3 Transmit 10_0100 Bit 2 Receive 10_0101 Bit 2 Transmit 10_0010 Bit 1 Receive 10_0011 Bit 1 Transmit 10_0000 Bit 0 Receive 10_0001 Bit 0 Transmit PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 178 ESPI Baud Rate High and Low Byte Registers The ESPI Baud Rate High and Low Byte registers, shown in Tables 100 and 101, combine to form a 16-bit reload value, BRG[15:0], for the ESPI Baud Rate Generator. The ESPI baud rate is calculated using the following equation: System Clock Frequency (Hz) SPI Baud Rate (bps) = -----------------------------------------------------------------------2  BRG[15:0] Minimum baud rate is obtained by setting BRG[15:0] to 0000h for a clock divisor value of (2 x 65536 = 131072). When the ESPI function is disabled, the BRG functions as a basic 16-bit timer with interrupt on time-out. Follow the procedure below to configure the BRG as a general purpose timer with interrupt on time-out: 1. Disable the ESPI by setting ESPIEN[1:0] = 00 in the SPI Control Register. 2. Load the appropriate 16-bit count value into the ESPI Baud Rate High and Low Byte registers. 3. Enable the BRG timer function and associated interrupt by setting the BRGCTL bit in the ESPI Control Register to 1. When configured as a general purpose timer, the SPI BRG interrupt interval is calculated using the following equation: SPI BRG Interrupt Interval (s) = System Clock Period (s)  BRG[15:0] Table 100. ESPI Baud Rate High Byte Register (ESPIBRH) Bit 7 6 5 4 Field RESET R/W 3 2 1 0 BRH 1 1 1 1 1 1 1 1 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FF_E266h Bit Description [7:0] BRH ESPI Baud Rate High Byte Most significant byte, BRG[15:8], of the ESPI Baud Rate Generator’s reload value. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 179 Table 101. ESPI Baud Rate Low Byte Register (ESPIBRL) Bit 7 6 5 4 Field RESET R/W 3 2 1 0 BRL 1 1 1 1 1 1 1 1 R/W R/W R/W R/W R/W R/W R/W R/w ADDR FF_E267h Bit Description [7:0] BRL ESPI Baud Rate Low Byte Least significant byte, BRG[7:0], of the ESPI Baud Rate Generator’s reload value. PS028706-0813 PRELIMINARY ESPI Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 180 I2C Master/Slave Controller The I2C Master/Slave Controller makes the ZNEO CPU bus compatible with the I2C protocol. The I2C bus consists of the serial data signal (SDA) and a serial clock (SCL) signal bidirectional lines. Features of the I2C Controller include: • Operates in MASTER/SLAVE or SLAVE ONLY modes • Supports arbitration in a Multi-Master environment (MASTER/SLAVE Mode) • Supports data rates up to 400 kbps • 7-bit or 10-bit slave address recognition (interrupt only on address match) • Optional general call address recognition • Optional digital filter on receive SDA and SCL lines • Optional Interactive Receive Mode allows software interpretation of each received address and/or data byte before acknowledging • Unrestricted number of data bytes per transfer • Baud Rate Generator (BRG) is used as a general purpose timer with interrupt if the I2C  controller is disabled Architecture Figure 33 displays the architecture of the I2C Controller. PS028706-0813 PRELIMINARY I2C Master/Slave Controller Z16FMC Series Motor Control MCUs Product Specification 181 SDA SCL Shift SHIFT Load I2CDATA Baud Rate Generator I2CBRH I2CBRL Tx/Rx State Machine I2CISTAT I2CCTL I2CMODE I2CSLVAD I2C Interrupt Tx and Rx DMA Requests I2CSTATE Register Bus Figure 33. I2C Controller Block Diagram PS028706-0813 PRELIMINARY Architecture Z16FMC Series Motor Control MCUs Product Specification 182 I2C Master/Slave Controller Registers Table 102 summarizes the I2C Master/Slave Controller software-accessible registers. Table 102. I2C Master/Slave Controller Registers Name Abbreviation Description I2C I2CDATA Transmit/Receive Data Register. 2 Data I2CISTAT Interrupt Status Register. 2 I C Control I2CCTL Control Register basic control functions. I2C I C Interrupt Status Baud Rate High I2CBRH High byte of baud rate generator initialization value. 2 I C Baud Rate Low I2CBRL Low byte of baud rate generator initialization value. 2 I C State I2CSTATE State Register. I2C I2CMODE Selects MASTER or SLAVE modes, 7-bit or 10-bit addressing. Configures address recognition, Defines Slave Address bits [9:8]. I2CSLVAD Defines Slave Address bits [7:0]. Mode I2C Slave Address Comparison with MASTER ONLY Mode I2C Controller Porting code written for the Master-Only I2C Controller found on other Z8 Encore! parts to the I2C Master/Slave Controller is straightforward. The I2CDATA, I2CCTL, I2CBRH and I2CBRL register definitions are not changed. The difference between the Master-Only I2C Controller and the I2C Master/Slave Controller designs is explained below. • The Status Register (I2CSTATE) from the Master-only I2C Controller is split into the Interrupt Status (I2CISTAT) Register and the State (I2CSTATE) Register because there are more interrupt sources. The ACK, 10B, TAS (now called AS) and DSS (now called DS) bits formerly in the Status Register are moved to the State Register. • The I2CSTATE Register is called as Diagnostic State (I2CDST) Register in the MASTER ONLY Mode version. The I2CDST Register provides diagnostic information. The I2CSTATE Register contains status and state information that are useful to software in operational mode. • The I2CMODE Register is called as Diagnostic Control (I2CDIAG) Register in the MASTER ONLY Mode version. The I2CMODE Register provides control for SLAVE modes of operation as well as the most significant two bits of the 10-bit slave address. • The I2CSLVAD Register is added for programming the slave address. • The ACKV bit in the I2CSTATE Register enables the Master to verify the Acknowledge from the Slave before sending the next byte. • Support for multi-master environments. If arbitration is lost when operating as a Master, the ARBLST bit in the I2CISTAT Register is set and the mode automatically switches to SLAVE Mode. PS028706-0813 PRELIMINARY Architecture Z16FMC Series Motor Control MCUs Product Specification 183 Operation The I2C Master/Slave Controller operates in either SLAVE ONLY Mode or MASTER/ SLAVE Mode with Master arbitration. In MASTER/SLAVE Mode, it is used as the only Master on the bus or as one of several Masters on the bus with arbitration. In a multi-Master environment, the controller switches from MASTER to SLAVE Mode on losing arbitration. Though slave operation is fully supported in MASTER/SLAVE Mode, if a device is intended to operate only as a slave, the SLAVE ONLY Mode is selected. In SLAVE ONLY Mode, the device does not initiate a transaction even if software inadvertently sets the start bit. SDA and SCL Signals The I2C sends all addresses, data and acknowledge signals over the SDA line, the mostsignificant bit first. SCL is the clock for the I2C bus. When the SDA and SCL pin alternate functions are selected for their respective GPIO ports, the pins are automatically configured for open-drain operation. The Master is responsible for driving the SCL clock signal. During the Low period of the clock, a Slave holds the SCL signal Low to suspend the transaction if it is not ready to proceed. The Master releases the clock at the end of the Low period and notices that the clock remains Low instead of returning to a High level. When the Slave releases the clock, the I2C Master continues the transaction. All data is transferred in bytes and there is no limit to the amount of data transferred in one operation. When transmitting address, data or acknowledge, the SDA signal changes in the middle of the Low period of SCL. When receiving address, data, or acknowledge, the SDA signal is sampled in the middle of the High period of SCL. A low-pass digital filter is applied to the SDA and SCL receive signals by setting the filter enable (FILTEN) bit in the I2C Control Register. When the filter is enabled, any glitch, which is less than a system clock period in width is rejected. This filter must be enabled when running in I2C Fast Mode (400 kbps) and is also used at lower data rates. I2C Interrupts The I2C Controller contains multiple interrupt sources that are combined into one interrupt request signal to the interrupt controller. If the I2C Controller is enabled, the source of the interrupt is determined by bits, which are set in the I2CISTAT Register. If the I2C Controller is disabled, the BRG Controller is used to generate general-purpose timer interrupts. Each interrupt source other than the baud rate generator interrupt has an associated bit in the I2CISTAT Register, which clears automatically when software reads the register or performs some other task such as reading or writing the data register. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 184 Transmit Interrupts Transmit interrupts (TDRE bit = 1 in I2CISTAT) occur under the following conditions: • The Transmit Data Register is empty and the TXI bit = 1 in the I2C Control Register • The I2C Controller is enabled, with any one of the following: – The first bit of a 10-bit address is shifted out – The first bit of the final byte of an address is shifted out and the RD bit is deasserted – The first bit of a data byte is shifted out Writing to the I2C Data Register always clears the TRDE bit to 0. Receive Interrupts Receive interrupts (RDRF bit = 1 in I2CISTAT) occur when a byte of data has been received by the I2C Controller. The RDRF bit is cleared by reading from the I2C Data Register. If the RDRF interrupt is not serviced prior to the completion of the next receive byte, the I2C Controller holds SCL Low during the final data bit of the next byte until RDRF is cleared to prevent receive overruns. A receive interrupt does not occur when a Slave receives an address byte or for data bytes following a slave address that did not match. An exception is if the Interactive Receive Mode (IRM) bit is set in the I2CMODE Register in which case receive interrupts occur for all receive address and data bytes in SLAVE Mode. Slave Address Match Interrupts Slave address match interrupts (SAM bit = 1 in I2CISTAT) occur when the I2C Controller is in SLAVE Mode and an address is received which matches the unique slave address. The General Call Address (0000_0000) and STARTBYTE (0000_0001) are recognized if the GCE bit = 1 in the I2CMODE Register. Software verifies the RD bit in the I2CISTAT Register to determine if the transaction is a read or write transaction. The General Call Address and STARTBYTE addresses are also distinguished by the RD bit. The general call address (GCA) bit of the I2CISTAT Register indicates whether the address match occurred on the unique slave address or the General Call/STARTBYTE address. The SAM bit clears automatically when the I2CISTAT Register is read. If configured using the MODE[1:0] field of the I2C Mode Register for 7-bit slave addressing, the most significant 7 bits of the first byte of the transaction are compared against the SLA[6:0] bits of the Slave Address Register. If configured for 10-bit slave addressing, the first byte of the transaction is compared against {11110,SLA[9:8], R/W} and the second byte is compared against SLA[7:0]. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 185 Arbitration Lost Interrupts Arbitration Lost interrupts (ARBLST bit = 1 in I2CISTAT) occur when the I2C Controller is in MASTER Mode and loses arbitration (outputs a 1 on SDA and receives a 0 on SDA). The I2C Controller switches to SLAVE Mode when this occurs. This bit clears automatically when the I2CISTAT Register is read. Stop/Restart Interrupts A Stop/Restart event interrupt (SPRS bit = 1 in I2CISTAT) occurs when the I2C Controller is in SLAVE Mode and a Stop or Restart condition is received, indicating the end of the transaction. The RSTR bit in the I2C State Register (see page 209) indicates whether the bit was set due to a Stop or Restart condition. When a Restart occurs, a new transaction by the same Master is expected to follow. This bit is cleared automatically when the I2CISTAT Register is read. The Stop/Restart interrupt only occurs on a selected (address match) slave. Not Acknowledge Interrupts Not Acknowledge interrupts (NCKI bit = 1 in I2CISTAT) occur in MASTER Mode when a Not Acknowledge is received or sent by the I2C Controller and the start or stop bit is not set in the I2C State Register (see page 209). In MASTER Mode, the Not Acknowledge interrupt clears by setting the start or stop bit. When this interrupt occurs in MASTER Mode, the I2C Controller waits until it is cleared before performing any action. In SLAVE Mode, the Not Acknowledge interrupt occurs when a Not Acknowledge is received in response to the data sent. The NCKI bit clears in SLAVE Mode when software reads the I2CISTAT Register. General Purpose Timer Interrupt from Baud Rate Generator If the I2C Controller is disabled (IEN bit in the I2CCTL Register = 0) and the BIRQ bit in the I2CCTL Register = 1, an interrupt is generated when the BRG counts down to 1. The BRG reloads and continues counting, providing a periodic interrupt. None of the bits in the I2CISTAT Register are set, allowing the BRG in the I2C Controller to be used as a general purpose timer when the I2C Controller is disabled. Start and Stop Conditions The Master generates the start and stop conditions to start or end a transaction. To start a transaction, the I2C Controller generates a start condition by pulling the SDA signal Low while SCL is High. To complete a transaction, the I2C Controller generates a stop condition by creating a Low-to-High transition of the SDA signal while the SCL signal is High. The start and stop events occur when the start and stop bits in the I2C Control Register are written by software to begin or end a transaction. Any byte transfer currently under way finishes, including the acknowledge phase before the start or stop condition occurs. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 186 Software Control of I2C Transactions The I2C Controller is configured using the I2C Control and I2C Mode registers. The MODE[1:0] field of the I2C Mode Register allows for the configuration of the I2C Controller for MASTER/SLAVE or SLAVE ONLY Mode, and configures the slave for 7-bit or 10-bit addressing recognition. The Baud Rate High and Low Byte registers must be programmed for the I2C baud rate in SLAVE Mode as well as in MASTER Mode. In SLAVE Mode, the baud rate value programmed must match the master's baud rate within +/- 25% for proper operation. MASTER/SLAVE Mode is used for: • Master only operation in a single master, one or more slave I2C system • Master/Slave in a multi-master, multi-slave I2C system • Slave only operation in an I2C system In SLAVE ONLY Mode, the start bit of the I2C Control Register is ignored (software cannot initiate a master transaction by accident). This restricts the operation to SLAVE ONLY Mode and prevents accidental operation in MASTER Mode. Software controls I2C transactions by enabling the I2C Controller interrupt in the interrupt controller or by polling the I2C Status Register. To use interrupts, the I2C interrupt must be enabled in the Interrupt Controller and followed by executing an EI instruction. The TXI bit in the I2C Control Register must be set to enable transmit interrupts. An I2C interrupt service routine then verifies the I2C Status Register to determine the cause of the interrupt. To control transactions by polling, the interrupt bits (TDRE, RDRF, SAM, ARBLST, SPRS and NCKI) in the I2C Status Register must be polled. The TDRE bit asserts regardless of the state of the TXI bit. Master Transactions The following sections describe the Master read and write transactions to both 7- and  10-bit Slaves. Master Arbitration If a Master loses arbitration during the address byte, it releases the SDA line, switches to SLAVE Mode and monitors the address to determine if it is selected as a Slave. If a Master loses arbitration during a transmit data byte, it releases the SDA line and waits for the next stop or start condition. The Master detects a loss of arbitration when a 1 is transmitted but a 0 is received from the bus in the same bit-time. This loss occurs if more than one Master is simultaneously accessing the bus. Loss of arbitration occurs during the address phase (two or more Mas- PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 187 ters accessing different Slaves) or during the data phase when the Masters are attempting to write different data to the same Slave. When a Master loses arbitration, software is informed by means of the Arbitration Lost interrupt. Software repeats the same transaction again at a later time. A special case occurs when a slave transaction starts just before software attempts to start a new master transaction by setting the start bit. In this case the state machine enters the slave states before the start bit is set and the I2C Controller does not arbitrate. If a slave address match occurs and the I2C Controller receives or transmits data, the start bit is cleared and an Arbitration Lost interrupt is asserted. Software minimizes the chance of this occurring by checking the BUSY bit in the I2CSTATE Register before initiating a master transaction. If a slave address match does not occur, the Arbitration Lost interrupt does not occur and the start bit is not cleared. The I2C Controller initiates the master transaction after the I2C bus is no longer busy. Master Address Only Transactions It is sometimes appropriate to perform an address-only transaction to determine if a particular Slave device is able to respond. This transaction is performed by monitoring the ACKV bit in the I2CSTATE Register after the address has been written to the I2CDATA Register and the start bit has been set. After ACKV is set, the ACK bit in the I2CSTATE Register determines if the Slave is able to communicate. The stop bit must be set in the I2CCTL Register to terminate the transaction without transferring data. For a 10-bit slave address, if the first address byte is acknowledged, the second address byte must also be sent to determine if the appropriate slave is responding. Another approach is to set both the stop and start bits (for sending a 7-bit address). After both bits are cleared (7-bit address has been sent and transaction is complete), the ACK bit is read to determine if the slave is acknowledged. For a 10-bit slave, set the stop bit after the second TDRE interrupt (second address byte is being sent). Master Transaction Diagrams In the following transaction diagrams, shaded regions indicate data transferred from the Master to the Slave and unshaded regions indicate data transferred from the Slave to the Master. The transaction field labels are defined as: PS028706-0813 S Start W Write A Acknowledge A Not Acknowledge P Stop PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 188 Master Write Transaction with a 7-Bit Address Figure 34 displays the data transfer format from a Master to a 7-bit addressed Slave. S Slave Address W=0 A Data A Data A Data A/A P/S Figure 34. Data Transfer Format: Master Write Transaction with a 7-Bit Address Follow the procedure below to perform a Master transmit operation to a 7-bit addressed Slave. 1. Software initializes the MODE field in the I2C Mode Register for MASTER/SLAVE Mode with either 7-bit or 10-bit slave address. The MODE field selects the address width for this node when addressed as a Slave, not for the remote Slave. Software asserts the IEN bit in the I2C Control Register. 2. Software asserts the TXI bit of the I2C Control Register to enable Transmit interrupts. 3. The I2C interrupt asserts, because the I2C Data Register is empty. 4. Software responds to the TDRE bit by writing a 7-bit slave address plus write bit (=0) to the I2C Data Register. 5. Software sets the start bit of the I2C Control Register. 6. The I2C Controller sends the start condition to the I2C Slave. 7. The I2C Controller loads the I2C Shift Register with the contents of the I2C Data Register. 8. When one bit of address is shifted out by the SDA signal, the Transmit interrupt asserts. 9. Software responds by writing the transmit data into the I2C Data Register. 10. The I2C Controller shifts the rest of the address and write bit out the SDA signal. 11. The I2C Slave sends an acknowledge (by pulling the SDA signal Low) during the next High period of SCL. The I2C Controller sets the ACK bit in the I2C State Register. If the slave does not acknowledge the address byte, the I2C Controller sets the NCKI bit in the I2C Interrupt Status Register, sets the ACKV bit and clears the ACK bit in the I2C State Register. Software responds to the Not Acknowledge interrupt by setting the stop bit and clearing the TXI bit. The I2C Controller flushes the Transmit Data Register, sends the stop condition on the bus and clears the STOP and NCKI bits. The transaction is complete (ignore the following steps). 12. The I2C Controller loads the contents of the I2C Shift Register with the contents of the I2C Data Register. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 189 13. The I2C Controller shifts the data out of through the SDA signal. When the first bit is sent, the Transmit interrupt asserts. 14. If more bytes remain to be sent, return to step 9. 15. When there is no more data to be sent, software responds by setting the stop bit of the I2C Control Register (or start bit to initiate a new transaction). 16. If no additional transaction is queued by the Master, software clears the TXI bit of the I2C Control Register. 17. The I2C Controller completes transmission of the data on the SDA signal. 18. The I2C Controller sends the stop condition to the I2C bus. Note: If the Slave terminates the transaction early by responding with a Not Acknowledge during the transfer, the I2C Controller asserts the NCKI interrupt and halts. Software must terminate the transaction by setting either the stop bit (end transaction) or the start bit (end this transaction, start a new one). In this case, it is not necessary for software to set the FLUSH bit of the I2CCTL Register to flush the data that was previously written but not transmitted. The I2C Controller hardware automatically flushes transmit data in this Not Acknowledge case. Master Write Transaction with a 10-Bit Address Figure 35 displays the data transfer format from a Master to a 10-bit addressed Slave. S Slave Address 1st Byte W=0 A Slave Address 2nd Byte A Data A Data A/A F/S Figure 35. Data Transfer Format: Master Write Transaction with 10-Bit Address The first seven bits transmitted in the first byte are 11110XX. The two XX bits are the two most-significant bits of the 10-bit address. The lowest bit of the first byte transferred is the read/write control bit (= 0). The transmit operation is carried out in the same manner as 7bit addressing. Follow the procedure below to perform a Master transmit operation to a 10-bit addressed Slave. 1. Software initializes the MODE field in the I2C Mode Register for MASTER/SLAVE Mode with 7- or 10-bit addressing (I2C bus protocol allows mixing slave address types). The MODE field selects the address width for this node when addressed as a PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 190 Slave, not for the remote Slave. Software asserts the IEN bit in the I2C Control Register. 2. Software asserts the TXI bit of the I2C Control Register to enable Transmit interrupts. 3. The I2C interrupt asserts because the I2C Data Register is empty. 4. Software responds to the TDRE interrupt by writing the first slave address byte (11110xx0). The least-significant bit must be 0 for the write operation. 5. Software asserts the start bit of the I2C Control Register. 6. The I2C Controller sends the start condition to the I2C Slave. 7. The I2C Controller loads the I2C Shift Register with the contents of the I2C Data Register. 8. When one bit of address is shifted out by the SDA signal, the Transmit interrupt asserts. 9. Software responds by writing the second byte of address into the contents of the I2C Data Register. 10. The I2C Controller shifts the rest of the first byte of address and write bit out the SDA signal. 11. The I2C Slave sends an acknowledge by pulling the SDA signal Low during the next High period of SCL. The I2C Controller sets the ACK bit in the I2C Status Register. If the slave does not acknowledge the first address byte, the I2C Controller sets the NCKI bit in the I2C Status Register, sets the ACKV bit and clears the ACK bit in the I2C State Register. Software responds to the Not Acknowledge interrupt by setting the stop bit and clearing the TXI bit. The I2C Controller flushes the second address byte from the data register, sends the stop condition on the bus and clears the STOP and NCKI bits. The transaction is complete (ignore the following steps). 12. The I2C Controller loads the I2C Shift Register with the contents of the I2C Data Register (2nd address byte). 13. The I2C Controller shifts the second address byte out the SDA signal. When the first bit is sent, the Transmit interrupt asserts. 14. Software responds by writing the data to be written out to the I2C Control Register. 15. The I2C Controller shifts out the rest of the second byte of slave address (or ensuing data bytes if looping) by the SDA signal. 16. The I2C Slave sends an acknowledge by pulling the SDA signal Low during the next High period of SCL. The I2C Controller sets the ACK bit in the I2C Status Register. If the slave does not acknowledge, see the second paragraph of step 11 above. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 191 17. The I2C Controller shifts the data out by the SDA signal. After the first bit is sent, the Transmit interrupt asserts. 18. If more bytes remain to be sent, return to step 14. 19. Software responds by asserting the stop bit of the I2C Control Register. 20. The I2C Controller completes transmission of the data on the SDA signal. 21. The I2C Controller sends the stop condition to the I2C bus. Note: If the Slave responds with a Not Acknowledge during the transfer, the I2C Controller asserts the NCKI bit, sets the ACKV bit and clears the ACK bit in the I2C State Register and halts. Software terminates the transaction by setting either the stop bit (end transaction) or the start bit (end this transaction, start a new one). The Transmit Data Register is flushed automatically. Master Read Transaction with a 7-Bit Address Figure 36 displays the data transfer format for a read operation to a 7-bit addressed Slave. S Slave Address R=1 A Data A Data A P/S Figure 36. Data Transfer Format: Master Read Transaction with 7-Bit Address Follow the procedure below to perform a Master read operation to a 7-bit addressed Slave. 1. Software initializes the MODE field in the I2C Mode Register for MASTER/SLAVE Mode with 7- or 10-bit addressing (I2C bus protocol allows mixing slave address types). The MODE field selects the address width for this node when addressed as a Slave, not for the remote Slave. Software asserts the IEN bit in the I2C Control Register. 2. Software writes the I2C Data Register with a 7-bit slave address plus the read bit (= 1). 3. Software asserts the start bit of the I2C Control Register. 4. If the operation is a single byte transfer, software asserts the NAK bit of the I2C Control Register so that after the first byte of data has been read by the I2C Controller, a Not Acknowledge instruction is sent to the I2C Slave. 5. The I2C Controller sends the start condition. 6. The I2C Controller sends the address and read bit out the SDA signal. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 192 7. The I2C Slave acknowledges the address by pulling the SDA signal Low during the next High period of SCL. If the slave does not acknowledge the address byte, the I2C Controller sets the NCKI bit in the I2C Status Register, sets the ACKV bit and clears the ACK bit in the I2C State Register. Software responds to the Not Acknowledge interrupt by setting the stop bit and clearing the TXI bit. The I2C Controller flushes the Transmit Data Register, sends the stop condition on the bus and clears the STOP and NCKI bits. The transaction is complete (ignore the following steps). 8. The I2C Controller shifts in the first byte of data from the I2C Slave on the SDA signal. 9. The I2C Controller asserts the Receive interrupt. 10. Software responds by reading the I2C Data Register. If the next data byte is to be the final byte, software must set the NAK bit of the I2C Control Register. 11. The I2C Controller sends a Not Acknowledge to the I2C Slave if it is the final byte; otherwise it sends an Acknowledge. 12. If there are more bytes to transfer, the I2C Controller returns to step 7. 13. A NAK interrupt (NCKI bit in I2CISTAT) is generated by the I2C Controller. 14. Software responds by setting the stop bit of the I2C Control Register. 15. A stop condition is sent to the I2C Slave. Master Read Transaction with a 10-Bit Address Figure 37 displays the read transaction format for a 10-bit addressed Slave. S Slave Address Slave Address Slave Address W=0 A R=1 A S 1st Byte 2nd Byte 1st Byte A Data A Data A P Figure 37. Data Transfer Format: Master Read Transaction with 10-Bit Address The first seven bits transmitted in the first byte are 11110XX. The two XX bits are the two most-significant bits of the 10-bit address. The lowest bit of the first byte transferred is the write control bit. Follow the procedure below to perform a data transfer for a read operation to a 10-bit addressed Slave. 1. Software initializes the MODE field in the I2C Mode Register for MASTER/SLAVE Mode with 7-bit or 10-bit addressing (I2C bus protocol allows mixing slave address types). The MODE field selects the address width for this node when addressed as a PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 193 Slave, not for the remote Slave. Software asserts the IEN bit in the I2C Control Register. 2. Software writes 11110b followed by the two most significant address bits and a 0 (write) to the I2C Data Register. 3. Software asserts the start bit of the I2C Control Register. 4. The I2C Controller sends the start condition. 5. The I2C Controller loads the I2C Shift Register with the contents of the I2C Data Register. 6. When the first bit is shifted out, a Transmit interrupt asserts. 7. Software responds by writing the least significant eight bits of address to the I2C Data Register. 8. The I2C Controller completes shifting of the first address byte. 9. The I2C Slave sends an acknowledge by pulling the SDA signal Low during the next High period of SCL. If the slave does not acknowledge the address byte, the I2C Controller sets the NCKI bit in the I2C Status Register, sets the ACKV bit and clears the ACK bit in the I2C State Register. Software responds to the Not Acknowledge interrupt by setting the stop bit and clearing the TXI bit. The I2C Controller flushes the Transmit Data Register, sends the stop condition on the bus and clears the stop and NCKI bits. The transaction is complete (ignore the following steps). 10. The I2C Controller loads the I2C Shift Register with the contents of the I2C Data Register (lower byte of 10 bit address). 11. The I2C Controller shifts out the next eight bits of address. After the first bit shifts, the I2C Controller generates a Transmit interrupt. 12. Software responds by setting the start bit of the I2C Control Register to generate a repeated Start. 13. Software responds by writing 11110b followed by the 2-bit slave address, and a 1 (read) to the I2C Data Register. 14. If you want to read only one byte, software responds by setting the NAK bit of the I2C Control Register. 15. After the I2C Controller shifts out the address bits mentioned in step 9 (second address transfer), the I2C Slave sends an acknowledge by pulling the SDA signal Low during the next High period of SCL. If the slave does not acknowledge the address byte, the I2C Controller sets the NCKI bit in the I2C Status Register, sets the ACKV bit and clears the ACK bit in the I2C State Register. Software responds to the Not Acknowledge interrupt by setting the PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 194 stop bit and clearing the TXI bit. The I2C Controller flushes the Transmit Data Register, sends the stop condition on the bus and clears the STOP and NCKI bits. The transaction is complete (ignore the following steps). 16. The I2C Controller sends the repeated start condition. 17. The I2C Controller loads the I2C Shift Register with the contents of the I2C Data Register (third address transfer). 18. The I2C Controller sends 11110b followed by the two most significant bits of the Slave read address and a 1 (read). 19. The I2C Slave sends an acknowledge by pulling the SDA signal Low during the next High period of SCL. 20. The I2C Controller shifts in a byte of data from the Slave. 21. The I2C Controller asserts the Receive interrupt. 22. Software responds by reading the I2C Data Register. If the next data byte is to be the final byte, software must set the NAK bit of the I2C Control Register. 23. The I2C Controller sends an Acknowledge or Not Acknowledge to the I2C Slave based on the NAK bit. 24. If there are more bytes to transfer, the I2C Controller returns to step 18. 25. The I2C Controller generates a NAK interrupt (NCKI bit in I2CISTAT). 26. Software responds by setting the stop bit of the I2C Control Register. 27. A stop condition is sent to the I2C Slave. Slave Transactions The following sections describe Read and Write transactions to the I2C Controller configured for 7-bit and 10-bit SLAVE modes. Slave Address Recognition The following slave address recognition options are supported: Slave 7-Bit Address Recognition Mode. If IRM = 0 during the address phase and the controller is configured for Master/Slave or Slave 7-bit address mode, the hardware detects a match to the 7-bit slave address defined in the I2CSLVAD Register and generates the Slave Address Match interrupt (SAM bit = 1 in I2CISTAT Register). The I2C Controller automatically responds during the acknowledge phase with the value in the NAK bit of the I2CCTL Register. Slave 10-Bit Address Recognition Mode. If IRM = 0 during the address phase and the controller is configured for Master/Slave or Slave 10-bit address mode, the hardware detects a match to the 10-bit slave address defined in the I2CMODE and I2CSLVAD reg- PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 195 isters and generates the Slave Address Match interrupt (SAM bit = 1 in I2CISTAT Register). The I2C Controller automatically responds during the acknowledge phase with the value in the NAK bit of the I2CCTL Register. General Call and STARTBYTE Address Recognition. If GCE = 1 and IRM = 0 during the address phase and the controller is configured for Master/Slave or Slave in either 7- or 10-bit address mode, the hardware detects a match to the General Call Address or start byte and generates the Slave Address Match interrupt. A General Call Address is a 7-bit address of all 0’s with the R/W bit = 0. A start byte is a 7-bit address of all 0’s with the R/ W bit = 1. The SAM and GCA bits are set in the I2CISTAT Register. The RD bit in the I2CISTAT Register distinguishes a General Call Address from a start byte (= 0 for General Call Address). For a General Call Address, the I2C Controller automatically responds during the address acknowledge phase with the value in the NAK bit of the I2CCTL Register. If software processes the data bytes associated with the GCA bit, the IRM bit is optionally set following the SAM interrupt to allow software to examine each received data byte before deciding to set or clear the NAK bit. A start byte will not be acknowledged (requirement the I2C specification). Software address recognition. To disable the hardware address recognition, the IRM bit must be set = 1 prior to the reception of the address byte(s). When IRM = 1 each received byte generates a receive interrupt (RDRF = 1 in the I2CISTAT Register). Software must examine each byte and determine whether to set or clear the NAK bit. The Slave holds SCL Low during the acknowledge phase until software responds by writing to the I2CCTL Register. The value written to the NAK bit is used by the controller to drive the I2C Bus, then releasing the SCL. The SAM and GCA bits are not set when IRM = 1 during the address phase, but the RD bit is updated based on the first address byte. Slave Transaction Diagrams In the following transaction diagrams, shaded regions indicate data transferred from the Master to the Slave and unshaded regions indicate data transferred from the Slave to the Master. The transaction field labels are defined as follows: S Start W Write A Acknowledge A Not Acknowledge P Stop Slave Receive Transaction with 7-Bit Address The data transfer format for writing data from Master to Slave in 7-bit address mode is shown in Figure 38. The following procedure describes the I2C Master/Slave Controller operating as a Slave in 7-bit addressing mode, receiving data from the bus Master. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 196 S Slave Address W=0 A Data A Data A Data A/A P/S Figure 38. Data Transfer Format: Slave Receive Transaction with 7-Bit Address 1. Software configures the controller for operation as a Slave in 7-bit addressing mode as follows. a. Initialize the MODE field in the I2C Mode Register for either SLAVE ONLY Mode or MASTER/SLAVE Mode with 7-bit addressing. b. Optionally set the GCE bit. c. Initialize the SLA[6:0] bits in the I2C Slave Address Register. d. Set IEN = 1 in the I2C Control Register. Set NAK = 0 in the I2C Control Register. e. Program the Baud Rate High and Low Byte registers for the I2C baud rate. 2. The bus Master initiates a transfer, sending the address byte. The SLAVE Mode I2C Controller recognizes its own address and detects the R/W bit = 0 (write from Master to Slave). The I2C Controller acknowledges, indicating it is available to accept the transaction.The SAM bit in the I2CISTAT Register is set = 1, causing an interrupt. The RD bit in the I2CISTAT Register is set = 0, indicating a write to the Slave. The I2C Controller holds the SCL signal Low, waiting for software to load the first data byte. 3. Software responds to the interrupt by reading the I2CISTAT Register (which clears the SAM bit). After verifying that the SAM bit = 1, software checks the RD bit. When RD = 0, no immediate action is required until the first byte of data is received. If software is only able to accept a single byte it sets the NAK bit in the I2CCTL Register at this time. 4. The Master detects the acknowledge and sends the byte of data. 5. The I2C controller receives the data byte and responds with Acknowledge or Not Acknowledge depending on the state of the NAK bit in the I2CCTL Register. The I2C controller generates the receive data interrupt by setting the RDRF bit in the I2CISTAT Register. 6. Software responds by reading the I2CISTAT Register, finding the RDRF bit=1 and reading the I2CDATA Register clearing the RDRF bit. If software accepts only one more data byte, it sets the NAK bit in the I2CCTL Register. 7. The Master and Slave loop on steps 4–6 until the Master detects a Not Acknowledge instruction or runs out of data to send. 8. The Master sends the STOP or RESTART signal on the bus. Either of these signals cause the I2C Controller to assert the Stop interrupt (stop bit = 1 in the I2CISTAT Register). When the Slave receive data from the Master, software takes no action in PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 197 response to the Stop interrupt other than reading the I2CISTAT Register, clearing the stop bit in the I2CISTAT Register. Slave Receive Transaction with 10-Bit Address The data transfer format for writing data from Master to Slave with 10-bit addressing is shown in Figure 39. The following procedure describes the I2C Master/Slave Controller operating as a Slave in 10-bit addressing mode, receiving data from the bus Master. S Slave Address 1st Byte W=0 A Slave Address 2nd Byte A Data A Data A/A P/S Figure 39. Data Transfer Format: Slave Receive Transaction with 10-Bit Address 1. Software configures the controller for operation as a Slave in 10-bit addressing mode as follows. – Initialize the MODE field in the I2CMODE Register for either SLAVE ONLY Mode or MASTER/SLAVE Mode with 10-bit addressing – Optionally set the GCE bit – Initialize the SLA[7:0] bits in the I2CSLVAD Register and the SLA[9:8] bits in the I2CMODE Register – Set IEN = 1 in the I2CCTL Register. Set NAK = 0 in the I2C Control Register – Program the Baud Rate High and Low Byte registers for the I2C baud rate 2. The Master initiates a transfer by sending the first address byte. The I2C Controller recognizes the start of a 10-bit address with a match to SLA[9:8] and detects the R/W bit = 0 (write from Master to Slave). The I2C Controller acknowledges, indicating that it is available to accept the transaction. 3. The Master sends the second address byte. The SLAVE Mode I2C Controller detects an address match between the second address byte and SLA[7:0]. The SAM bit in the I2CISTAT Register is set = 1, causing an interrupt. The RD bit is set = 0, indicating a write to the Slave. The I2C Controller Acknowledges, indicating it is available to accept the data. 4. Software responds to the interrupt by reading the I2CISTAT Register, which clears the SAM bit. When RD = 0, no immediate action is taken by software until the first byte of data is received. If software is only able to accept a single byte it sets the NAK bit in the I2CCTL Register. 5. The Master detects the Acknowledge and sends the first byte of data. 6. The I2C controller receives the first byte and responds with Acknowledge or Not Acknowledge, depending on the state of the NAK bit in the I2CCTL Register. The I2C PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 198 controller generates the receive data interrupt by setting the RDRF bit in the I2CISTAT Register. 7. Software responds by reading the I2CISTAT Register, finding the RDRF bit = 1, then reading the I2CDATA Register, which clears the RDRF bit. If software accepts only one more data byte, it sets the NAK bit in the I2CCTL Register. 8. The Master and Slave loops on steps 5–7 until the Master detects a Not Acknowledge instruction or runs out of data to send. 9. The Master sends the STOP or RESTART signal on the bus. Either of these signals cause the I2C Controller to assert the Stop interrupt (stop bit = 1 in the I2CISTAT Register). When the Slave receive data from the Master, software takes no action in response to the Stop interrupt other than reading the I2CISTAT Register, clearing the stop bit. Slave Transmit Transaction with 7-Bit Address The data transfer format for a Master reading data from a Slave in 7-bit address mode is shown in Figure 40. The following procedure describes the I2C Master/Slave Controller operating as a Slave in 7-bit addressing mode, transmitting data to the bus Master. Slave Address S R=1 A Data A Data A P/S Figure 40. Data Transfer Format: Slave Transmit Transaction with 7-Bit Address 1. Software configures the controller for operation as a Slave in 7-bit addressing mode as follows. a. Initialize the MODE field in the I2C Mode Register for either SLAVE ONLY Mode or MASTER/SLAVE Mode with 7-bit addressing. b. Optionally set the GCE bit. c. Initialize the SLA[6:0] bits in the I2C Slave Address Register. d. Set IEN = 1 in the I2C Control Register. Set NAK = 0 in the I2C Control Register. e. Program the Baud Rate High and Low Byte registers for the I2C baud rate. 2. The Master initiates a transfer, sending the address byte. The SLAVE Mode I2C Controller finds an address match and detects the R/W bit = 1 (read by Master from Slave). The I2C Controller acknowledges, indicating that it is ready to accept the transaction.The SAM bit in the I2CISTAT Register is set = 1, causing an interrupt. The RD bit is set = 1, indicating a read from the Slave. 3. Software responds to the interrupt by reading the I2CISTAT Register, clearing the SAM bit. When RD = 1, software responds by loading the first data byte into the PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 199 I2CDATA Register. Software sets the TXI bit in the I2CCTL Register to enable transmit interrupts. When the Master initiates the data transfer, the I2C Controller holds SCL Low until software has written the first data byte to the I2CDATA Register. 4. SCL is released and the first data byte is shifted out. 5. When the first bit of the first data byte is transferred, the I2C controller sets the TDRE bit, which asserts the transmit data interrupt. 6. Software responds to the transmit data interrupt (TDRE = 1) by loading the next data byte into the I2CDATA Register, which clears TDRE. 7. When the Master receives the data byte, the Master transmits an Acknowledge instruction (or Not Acknowledge instruction for the final data byte). 8. The bus cycles through steps 5–7 until the final byte has been transferred. If software has not yet loaded the next data byte when the Master brings SCL Low to transfer the most significant data bit, the Slave I2C Controller holds SCL Low until the data register is written. When the Slave receives a Not Acknowledge instruction, the I2C Controller sets the NCKI bit in the I2CISTAT Register and generates the Not Acknowledge interrupt. 9. Software responds to the Not Acknowledge interrupt by clearing the TXI bit in the I2CCTL Register and by asserting the FLUSH bit of the I2CCTL Register to empty the data register. 10. When the Master completes the final acknowledge cycle, it asserts the STOP or RESTART condition on the bus. 11. The Slave I2C Controller asserts the STOP/RESTART interrupt (set SPRS bit in I2CISTAT Register). 12. Software responds to the STOP/RESTART interrupt by reading the I2CISTAT Register which clears the SPRS bit. Slave Transmit (Master Read) Transaction with 10-Bit Address Figure 41 displays the data transfer format for a Master reading data from a Slave with 10bit addressing. S Slave Address Slave Address Slave Address W=0 A R=1 A S 1st Byte 2nd Byte 1st Byte A Data A Data A P Figure 41. Data Transfer Format: Slave Transmit Transaction with 10-Bit Address The following procedure describes the I2C Master/Slave Controller operating as a Slave in 10-bit addressing mode, transmitting data to the bus Master: PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 200 1. Software configures the controller for operation as a Slave in 10-bit addressing mode. a. Initialize the MODE field in the I2C Mode Register for either SLAVE ONLY Mode or MASTER/SLAVE Mode with 10-bit addressing. b. Optionally set the GCE bit. c. Initialize the SLA[7:0] bits in the I2CSLVAD Register and SLA[9:8] in the I2CMODE Register. d. Set IEN = 1, NAK = 0 in the I2C Control Register. e. Program the Baud Rate High and Low Byte registers for the I2C baud rate. 2. The Master initiates a transfer, sending the first address byte. The SLAVE Mode I2C Controller recognizes the start of a 10-bit address with a match to SLA[9:8] and detects the R/W bit = 0 (write from Master to Slave). The I2C Controller acknowledges, indicating that it is available to accept the transaction. 3. The Master sends the second address byte. The SLAVE Mode I2C Controller compares the second address byte with the value in SLA[7:0]. If there is a match, the SAM bit in the I2CISTAT Register is set = 1, causing a Slave Address Match interrupt. The RD bit is set = 0, indicating a write to the Slave. If a match occurs, the I2C Controller acknowledges on the I2C bus, indicating that it is available to accept the data. 4. Software responds to the Slave Address Match interrupt by reading the I2CISTAT Register which clears the SAM bit. When the RD bit = 0, no further action is required. 5. The Master notifies the Acknowledge and sends a Restart instruction, followed by the first address byte with the R/W = 1. The SLAVE Mode I2C Controller recognizes the Restart followed by the first address byte with a match to SLA[9:8] and detects the R/ W = 1 (Master reads from Slave). The Slave I2C Controller sets the SAM bit in the I2CISTAT Register, which causes the Slave Address Match interrupt. The RD bit is set = 1. The SLAVE Mode I2C Controller acknowledges on the bus. 6. Software responds to the interrupt by reading the I2CISTAT Register, clearing the SAM bit. Software loads the initial data byte into the I2CDATA Register and sets the TXI bit in the I2CCTL Register. 7. The Master starts the data transfer by asserting SCL Low. After the I2C Controller has data available to transmit the SCL is released and the Master proceeds to shift the first data byte. 8. When the first bit of the first data byte is transferred, the I2C controller sets the TDRE bit, which asserts the transmit data interrupt. 9. Software responds to the transmit data interrupt by loading the next data byte into the I2CDATA Register. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 201 10. The I2C Master shifts in the remainder of the data byte. The Master transmits the Acknowledge (or Not Acknowledge for the final data byte). 11. The bus cycles through steps 7–10 until the final byte has been transferred. If software has not yet loaded the next data byte when the Master brings SCL Low to transfer the most significant data bit, the Slave I2C Controller holds SCL Low until the data register is written. When the Slave receives a Not Acknowledge, the I2C Controller sets the NCKI bit in the I2CISTAT Register and generates the NAK interrupt. 12. Software responds to the NAK interrupt by clearing the TXI bit in the I2CCTL Register and by asserting the FLUSH bit of the I2CCTL Register. 13. When the Master has completed the acknowledge cycle of the final transfer it asserts the STOP or RESTART condition on the bus. 14. The Slave I2C Controller asserts the STOP/RESTART interrupt (set SPRS bit in I2CISTAT Register). 15. Software responds to the Stop interrupt by reading the I2CISTAT Register, clearing the SPRS bit. DMA Control of I2C Transactions The DMA engine is configured to support transmit and receive DMA requests from the I2C Controller. The I2C data interrupt requests must be disabled by setting the DMAIF bit in the I2C Mode Register and clearing the TXI bit in the I2C Control Register. This allows error condition interrupts to be handled by software while data movement is handled by the DMA engine. The DMA interface on the I2C Controller is intended to support data transfer but not MASTER Mode address byte transfer. The start, stop and NAK bits must be controlled by software. A summary of the I2C transfer of data using the DMA follows. Master Write Transaction with Data DMA • Configure the selected DMA channel for I2C transmit. The IEOB bit must be set in the DMACTL Register for the final buffer to be transferred. • The I2C interrupt must be enabled in the interrupt controller to alert software of any I2C error conditions. A Not Acknowledge interrupt occurs on the final byte transferred. • The I2C Master/Slave must be configured as defined in the sections above describing MASTER Mode transactions. The TXI bit in the I2CCTL Register must be cleared. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 202 • Initiate the I2C transaction as described in the Master Address Only Transactions section on page 187, using the ACKV and ACK bits in the I2CSTATE Register to determine if the slave acknowledges. • Set the DMAIF bit in the I2CMODE Register. • The DMA transfers the data, which is to be transmitted to the slave. • When the DMA interrupt occurs, poll the I2CSTAT Register until the TDRE bit = 1. This ensures that the I2C Master/Slave hardware has commenced transmitting the final byte written by the DMA. • Set the stop bit in the I2CCTL Register. The stop bit is polled by software to determine when the transaction is actually completed. • Clear the DMAIF bit in the I2CMODE Register. The following procedure describes the I2C Master/Slave Controller operating as a Slave in 10-bit addressing mode, transmitting data to the bus Master. Note: If the slave sends a Not Acknowledge prior to the final byte, a Not Acknowledge interrupt occurs. Software must respond to this interrupt by clearing the DMAIF bit and setting the stop bit to end the transaction. Master Read Transaction with Data DMA In master read transactions, the Master is responsible for the Acknowledge for each data byte transferred. The Master software must set the NAK bit after the next to the final data byte has been received or while the final byte is being received. The DMA supports this by setting the DMA watermark to 0x01, which results in a DMA interrupt when the next to the final byte has been received. A DMA interrupt also occurs when the final byte is received. Otherwise, the sequence is similar to that described above for the Master write transaction. • Configure the selected DMA channel for I2C receive. The IEOB bit must be set in the DMACTL Register for the final buffer to be transferred. Typically one buffer is defined with a transfer length of N where N bytes are expected to be read from the slave. The watermark is set to 1 by writing a 0x01 to DMAxLAR[23:16]. • The I2C interrupt must be enabled in the interrupt controller to alert software of any I2C error conditions. A Not Acknowledge interrupt occurs on the final byte transferred. • The I2C Master/Slave must be configured as defined in the sections above describing MASTER Mode transactions. The TXI bit in the I2CCTL Register must be cleared. • Initiate the I2C transaction as described in the Master Address Only Transactions section on page 187, using the ACKV and ACK bits in the I2CSTATE Register to deter- PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 203 mine if the slave acknowledges. Do not set the stop bit unless ACKV = 1 and ACK = 0 (slave did not acknowledge). • Set the DMAIF bit in the I2CMODE Register. • The DMA transfers the data to memory as it is received from the slave. • When the first DMA interrupt occurs indicating the (N–1)st byte has been received, the NAK bit must be set in the I2CCTL Register. • When the second DMA interrupt occurs, it indicates that the Nth byte has been received. Set the stop bit in the I2CCTL Register. The stop bit is polled by software to determine when the transaction is actually completed. • Clear the DMAIF bit in the I2CMODE Register. Slave Write Transaction with Data DMA In a transaction where the I2C Master/Slave operates as a slave receiving data written by a master, the software must set the NAK bit after the N–1st byte has been received or during the reception of the final byte. As in the Master Read transaction described above, the watermark DMA interrupt is used to notify software when the N–1st byte has been received. • Configure the selected DMA channel for I2C receive. The IEOB bit must be set in the DMACTL Register for the final buffer to be transferred. Typically one buffer will be defined with a transfer length of N where N bytes are expected to be received from the master. The watermark is set to 1 by writing a 0x01 to DMAxLAR[23:16]. • The I2C interrupt must be enabled in the interrupt controller to alert software of any I2C error conditions. • The I2C Master/Slave must be configured as defined in the sections above describing SLAVE Mode transactions. The TXI bit in the I2CCTL Register must be cleared. • When the SAM interrupt occurs, set the DMAIF bit in the I2CMODE Register. • The DMA transfers the data to memory as it is received from the master. • When the first DMA interrupt occurs indicating that the (N–1)st byte is received, the NAK bit must be set in the I2CCTL Register. • When the second DMA interrupt occurs, it indicates that the Nth byte is received. A Stop I2C interrupt occurs (SPRS bit set in the I2CSTAT Register) when the master issues the STOP (or RESTART) condition. • Clear the DMAIF bit in the I2CMODE Register. Slave Read Transaction with Data DMA In this transaction the I2C Master/Slave operates as a slave, sending data to the master. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 204 Note: • Configure the selected DMA channel for I2C transmit. The IEOB bit must be set in the DMACTL Register for the final buffer to be transferred. Typically a single buffer with a transfer length of N is defined. • The I2C interrupt must be enabled in the interrupt controller to alert software of any I2C error conditions. A Not Acknowledge interrupt occurs on the final byte transferred. • The I2C Master/Slave must be configured as defined in the sections above describing SLAVE Mode transactions. The TXI bit in the I2CCTL Register must be cleared. • When the SAM interrupt occurs, set the DMAIF bit in the I2CMODE Register. • The DMA transfers the data to be transmitted to the master. • When the DMA interrupt occurs, the final byte is being transferred to the master. The master must send a Not Acknowledge for this final byte, setting the NCKI bit in the I2CSTAT Register and generating the I2C interrupt. A Stop or Restart interrupt (SPRS bit set in I2CSTAT Register) follows. • Clear the DMAIF bit in the I2CMODE Register. If the master sends a Not Acknowledge prior to the final byte, software responds to the Not Acknowledge interrupt by clearing the DMAIF bit. I2C Control Register Definitions The following section describes the I2C Control registers. I2C Data Register The I2C Data Register, shown in Table 103, holds the data that is to be loaded into the Shift Register to transmit onto the I2C bus. This register also holds data that is loaded from the Shift Register after it is received from the I2C bus. The I2C Shift Register is not accessible in the Register File address space, but is used only to buffer incoming and outgoing data. Writes by software to the I2CDATA Register are blocked if a slave write transaction is underway (I2C Controller in SLAVE Mode, data being received). PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 205 Table 103. I2C Data Register (I2CDATA) Bit 7 6 5 4 3 Field 2 1 0 DATA RESET 0 R/W R/W ADDR FF_E240h I2C Interrupt Status Register The read-only I2C Interrupt Status Register, shown in Table 104, indicates the cause of any current I2C interrupt and provides status of the I2C Controller. When an interrupt occurs, one or more of the TDRE, RDRF, SAM, ARBLST, SPRS or NCKI bits is set. The GCA and RD bits do not generate an interrupt but rather provide status associated with the SAM bit interrupt. Table 104. I2C Interrupt Status Register (I2CISTAT) Bit 7 6 5 4 3 2 1 0 TDRE RDRF SAM GCA RD ARBLST SPRS NCKI RESET 1 0 0 0 0 0 0 0 R/W R R R R R R R R Field ADDR FF_E241h Bit Description [7] TDRE Transmit Data Register Empty When the I2C Controller is enabled, this bit is 1 if the I2C Data Register is empty. When set, the I2C Controller generates an interrupt, except when the I2C Controller is shifting in data during the reception of a byte or when shifting an address and the RD bit is set. This bit clears by writing to the I2CDATA Register. [6] RDRF Receive Data Register Full This bit is set = 1 when the I2C Controller is enabled and the I2C Controller has received a byte of data. When asserted, this bit causes the I2C Controller to generate an interrupt. This bit clears by reading the I2CDATA Register. [5] SAM Slave Address Match This bit is set = 1 if the I2C Controller is enabled in SLAVE Mode and an address is received which matches the unique slave address or General Call Address (if enabled by the GCE bit in the I2C Mode Register). In 10-bit addressing mode, this bit is not set until a match is achieved on both address bytes. When this bit is set, the RD and GCA bits are also valid. This bit clears by reading the I2CISTAT Register. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 206 Bit Description (Continued) [4] GCA General Call Address This bit is set in SLAVE Mode when the General Call Address or start byte is recognized (in either 7- or 10-bit SLAVE Mode). The GCE bit in the I2C Mode Register must be set to enable recognition of the General Call Address and start byte. This bit clears when IEN = 0 and is updated following the first address byte of each SLAVE Mode transaction. A General Call Address is distinguished from a start byte by the value of the RD bit (RD = 0 for General Call Address, 1 for start byte). [3] RD Read This bit indicates the direction of transfer of the data. It is set when the Master is reading data from the Slave. This bit matches the least-significant bit of the address byte after the start condition occurs (for both Master and Slave modes). This bit clears when IEN = 0 and is updated following the first address byte of each transaction. [2] Arbitration Lost ARBLST This bit is set when the I2C Controller is enabled in MASTER Mode and loses arbitration (outputs a 1 on SDA and receives a 0 on SDA). The ARBLST bit clears when the I2CISTAT Register is read. [1] SPRS Stop/Restart Condition Interrupt This bit is set when the I2C Controller is enabled in SLAVE Mode and detects a STOP or RESTART condition during a transaction directed to this slave. This bit clears when the I2CISTAT Register is read. Read the RSTR bit of the I2CSTATE Register to determine whether the interrupt was caused by a STOP or RESTART condition. [0] NCKI NAK Interrupt In MASTER Mode, this bit is set when a Not Acknowledge condition is received or sent and neither the start nor the stop bit is active. In MASTER Mode, this bit is cleared only by setting the start or stop bits. In SLAVE Mode, this bit is set when a Not Acknowledge condition is received (Master reading data from Slave), indicating the Master is finished reading. A STOP or RESTART condition follows. In SLAVE Mode this bit clears when the I2CISTAT Register is read. I2C Control Register The I2C Control Register, shown in Table 105, enables and configures the I2C operation. Table 105. I2C Control Register (I2CCTL) Bit Field RESET R/W 7 6 5 4 3 2 1 0 IEN START STOP BIRQ TXI NAK FLUSH FILTEN 0 0 0 0 0 0 0 0 R/W R/W1 R/W1 R/W R/W R/W1 R/W R/W ADDR FF_E242h Note: R/W1 = bit is set (write 1) but not cleared. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 207 Bit Description [7] IEN I2C Enable This bit enables the I2C Controller. [6] START Send Start Condition When set, this bit causes the I2C Controller (when configured as the Master) to send the start condition. After assertion, this bit is cleared by the I2C Controller after it sends the start condition or by deasserting the IEN bit. If this bit is 1, it cannot be cleared by writing to the bit. After this bit is set, the start condition is sent if there is data in the I2CDATA or I2CSHIFT Register. If there is no data in one of these registers, the I2C Controller waits until data is loaded. If this bit is set while the I2C Controller is shifting out data, it generates a RESTART condition after the byte shifts and the acknowledge phase completes. If the stop bit is also set, it also waits until the stop condition is sent before the start condition. If start is set while a SLAVE Mode transaction is underway to this device, the start bit is cleared and ARBLST bit in the Interrupt Status Register will be set. [5] STOP Send Stop Condition When set, this bit causes the I2C Controller (when configured as the Master) to send the stop condition after the byte in the I2C Shift Register has completed transmission or after a byte has been received in a receive operation. When set, this bit is reset by the I2C Controller after a stop condition has been sent or by deasserting the IEN bit. If this bit is 1, it cannot be cleared to 0 by writing to the register. If a stop is set while a SLAVE Mode transaction is underway, the stop bit will be cleared by hardware. [4] BIRQ Baud Rate Generator Interrupt Request This bit is ignored when the I2C Controller is enabled. If this bit is set = 1 when the I2C Controller is disabled (IEN = 0) the baud rate generator is used as an additional timer causing an interrupt to occur every time the baud rate generator counts down to one. The baud rate generator runs continuously in this mode, generating periodic interrupts. [3] TXI Enable TDRE Interrupts This bit enables interrupts when the I2C Data Register is empty. [2] NAK Send NAK Setting this bit sends a Not Acknowledge condition after the next byte of data has been received. It is automatically deasserted after the Not Acknowledge is sent or the IEN bit is cleared. If this bit is 1, it cannot be cleared to 0 by writing to the register. [1] FLUSH Flush Data Setting this bit clears the I2C Data Register and sets the TDRE bit to 1. This bit allows flushing of the I2C Data Register when an NAK condition is received after the next data byte has been written to the I2C Data Register. Reading this bit always returns 0. [0] FILTEN I2C Signal Filter Enable Setting this bit enables low-pass digital filters on the SDA and SCL input signals. This function provides the spike suppression filter required in I2C Fast Mode. These filters reject any input pulse with periods less than a full system clock cycle. The filters introduce a 3-system clock cycle latency on the inputs. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 208 I2C Baud Rate High and Low Byte Registers The I2C Baud Rate High and Low Byte registers, shown in Tables 106 and 107, combine to form a 16-bit reload value, BRG[15:0], for the I2C Baud Rate Generator. The Baud Rate High and Low Byte registers must be programmed for the I2C baud rate in SLAVE Mode as well as in MASTER Mode. In SLAVE Mode, the baud rate value programmed must match the master's baud rate within +/- 25% for proper operation. The I2C baud rate is calculated using the below equation. Note: If BRG = 0000h, use 10000h in the equation. System Clock Frequency (Hz) I2C Baud Rate (bps) = -----------------------------------------------------------------------4  BRG[15:0] . : Table 106. I2C Baud Rate High Byte Register (I2CBRH) Bit 7 6 5 4 3 Field BRH RESET FFh R/W R/W ADDR 2 1 0 FF_E243h Bit Description [7:0] BRH I2C Baud Rate High Byte Most significant byte, BRG[15:8], of the I2C Baud Rate Generator’s reload value. Note: If the DIAG bit in the I2C Mode Register is set to 1, a read of the I2CBRH Register returns the current value of the I2C Baud Rate Counter[15:8]. Table 107. I2C Baud Rate Low Byte Register (I2CBRL) Bit 7 6 5 4 3 Field BRL RESET FFh R/W R/W ADDR PS028706-0813 2 1 0 FF_E244h PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 209 Bit Description [7:0] BRL I2C Baud Rate Low Byte Least significant byte, BRG[7:0], of the I2C Baud Rate Generator’s reload value. Note: If the DIAG bit in the I2C Mode Register is set to 1, a read of the I2CBRL Register returns the current value of the I2C Baud Rate Counter[7:0]. I2C State Register The read only I2C State Register provides information about the state of the I2C bus and the I2C Bus Controller. When the DIAG bit of the I2C Mode Register is cleared, this register provides information about the internal state of the I2C Controller and I2C Bus as shown in Table 108. Conversely, when the DIAG bit of the I2C Mode Register is set, this register returns the value of the I2C Controller state machine as shown in Table 109. Table 108. I2C State Register (I2CSTATE), Description when DIAG = 0 Bit 7 6 5 4 3 2 1 0 ACKV ACK AS DS 10B RSTR SCLOUT BUSY RESET 0 0 0 0 0 0 X X R/W R R R R R R R R Field ADDR FF_E245h Bit Description [7] ACKV ACK Valid This bit is set if sending data (Master or Slave) and the ACK bit in this register is valid for the byte just transmitted. This bit is monitored if it is appropriate for software to verify the ACK value before writing the next byte to be sent. To operate in this mode, the data register must not be written when TDRE asserts; instead, software waits for ACKV to assert. This bit clears when transmission of the next byte begins or the transaction is ended by a STOP or RESTART condition. [6] ACK Acknowledge This bit indicates the status of the Acknowledge for the final byte transmitted or received. This bit is set for an Acknowledge and cleared for a Not Acknowledge condition. [5] AS Address State This bit is active High while the address is being transferred on the I2C bus. [4] DS Data State This bit is active High while the data is being transferred on the I2C bus. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 210 Bit Description (Continued) [3] 10B 10B This bit indicates whether a 10- or 7-bit address is being transmitted when operating as a Master. After the start bit is set, if the five most-significant bits of the address are 11110b, this bit is set. When set, it is reset after the address has been sent. [2] RSTR Restart This bit is updated each time a STOP or RESTART interrupt occurs (SPRS bit set in I2CISTAT Register). 0 = Stop condition. 1 = Restart condition. [1] Serial Clock Output SCLOUT Current value of Serial Clock being output onto the bus. The actual values of the SCL and SDA signals on the I2C bus is observed via the GPIO Input Register. [0] BUSY I2C Bus Busy 0 = No activity on the I2C Bus. 1 = A transaction is underway on the I2C bus. Table 109. I2C State Register (I2CSTATE), Description when DIAG = 1 Bit 7 6 Field 5 4 3 I2CSTATE_H 2 1 0 I2CSTATE_L RESET 0 0 0 0 0 0 0 0 R/W R R R R R R R R ADDR FF_E245h Bit Description [7:4] I2CSTATE_H I2C State High This field defines the current state of the I2C Controller. It is the most significant nibble of the internal state machine. Table 110 defines the states for this field. [3:0] I2CSTATE_L I2C State Low Least significant nibble of the I2C state machine. This field defines the substates for the states defined by I2CSTATE_H. Table 111 defines the values for this field. Table 110. I2CSTATE_H State Encoding State Name State Description 0000 Idle I2C bus is idle or I2C Controller is disabled. 0001 Slave Start I2C Controller has received a start condition. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 211 Table 110. I2CSTATE_H (Continued) State Encoding State Name State Description 0010 Slave Bystander Address did not match; ignore remainder of transaction. 0011 Slave Wait Waiting for STOP or RESTART condition after sending a Not Acknowledge instruction. 0100 Master Stop2 Master completing stop condition (SCL = 1, SDA = 1). 0101 Master Start/Restart MASTER Mode sending start condition (SCL = 1, SDA = 0). 0110 Master Stop1 Master initiating stop condition (SCL = 1, SDA = 0). 0111 Master Wait Master received a Not Acknowledge instruction, waiting for software to assert stop or start control bits. 1000 Slave Transmit Data Nine substates, one for each data bit and one for the acknowledge. 1001 Slave Receive Data Nine substates, one for each data bit and one for the acknowledge. 1010 Slave Receive Addr1 Slave Receiving first address byte (7 and 10 bit addressing) Nine substates, one for each address bit and one for the acknowledge. 1011 Slave Receive Addr2 Slave Receiving second address byte (10 bit addressing) Nine substates, one for each address bit and one for the acknowledge. 1100 Master Transmit Data Nine substates, one for each data bit and one for the acknowledge. 1101 Master Receive Data Nine substates, one for each data bit and one for the acknowledge. 1110 Master Transmit Addr1 Master sending first address byte (7- and 10-bit addressing) Nine substates, one for each address bit and one for the acknowledge. 1111 Master Transmit Addr2 Master sending second address byte (10-bit addressing) Nine substates, one for each address bit and one for the acknowledge. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 212 Table 111. I2CSTATE_L State I2CSTATE_H Sub-State I2CSTATE_L Sub-State Name State Description 0000–0100 0000 – There are no substates for these I2CSTATE_H values. 0110–0111 0000 – There are no substates for these I2CSTATE_H values. 0101 0000 Master Start Initiating a new transaction. 0001 Master Restart Master is ending one transaction and starting a new one without letting the bus go nonactive. 0111 send/receive bit 7 Sending/Receiving most significant bit. 0110 send/receive bit 6 0101 send/receive bit 5 0100 send/receive bit 4 0011 send/receive bit 3 0010 send/receive bit 2 0001 send/receive bit 1 0000 send/receive bit 0 Sending/Receiving least significant bit 1000 send/receive Acknowledge Sending/Receiving Acknowledge 1000–1111 I2C Mode Register The I2C Mode Register, shown in Table 112, provides control over the Master vs. Slave operating mode, plus the slave address and diagnostic modes. Table 112. I2C Mode Register (I2CMODE) Bit Field RESET R/W 7 6 5 4 3 2 1 0 DMAIF MODE[1:0] IRM GCE SLA[9:8] DIAG 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W ADDR PS028706-0813 FF_E246h PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 213 Bit Description [7] DMAIF DMA Interface Mode 0 = Used when software polling or interrupts are used to move data. 1 = Used when the DMA is used to move data. The TDRE and RDRF bits in the Status Register are not affected but the I2C interrupt is not asserted when TDRE or RDRF are set. The I2C interrupt reflects only the error conditions. The assertion of TDRE causes a transmit DMA request. The assertion of RDRF causes a receive DMA request. [6:5] MODE Selects the I2C Controller Operational Mode 00 = Master/Slave capable (supports multi-Master arbitration) with 7-bit slave address. 01 = Master/Slave capable (supports multi-Master arbitration) with 10-bit slave address. 10 = Slave Only capable with 7-bit address. 11 = Slave Only capable with 10-bit address. [4] IRM Interactive Receive Mode Valid in SLAVE Mode when software needs to interpret each received byte before acknowledging. This bit is useful for processing the data bytes following a General Call Address or if software wants to disable hardware address recognition. 0 = Acknowledge occurs automatically and is determined by the value of the NAK bit of the I2CCTL Register. 1 = A receive interrupt is generated for each byte received (address or data). The SCL is held Low during the acknowledge cycle until software writes to the I2CCTL Register. The value written to the NAK bit of the I2CCTL Register is output on SDA. This value allows software to Acknowledge or Not Acknowledge after interpreting the associated address/data byte. [3] GCE General Call Address Enable Enables reception of messages beginning with the General Call Address or start byte. 0 = Do not accept a message with the General Call Address or start byte. 1 = Do accept a message with the General Call Address or start byte. When an address match occurs, the GCA and RD bits in the I2C Status Register indicates whether the address matched the General Call Address/start byte or not. Following the General Call Address byte, software sets the IRM bit that allows software to examine the following data byte(s) before acknowledging. [2:1] Slave Address Bit 9 and 8 SLA[9:8] Initialize with the appropriate slave address value when using 10-bit Slave addressing. These bits are ignored when using 7-bit Slave addressing. [0] DIAG Diagnostic Mode Selects read back value of the Baud Rate Reload and State registers. 0 = Reading the Baud Rate registers returns the Baud Rate Register values. Reading the State Register returns I2C Controller state information. 1 = Reading the Baud Rate registers returns the current value of the baud rate counter. Reading the State Register returns additional state information. I2C Slave Address Register The I2C Slave Address Register, shown in Table 113, provides control over the lower order address bits used in 7-bit and 10-bit slave address recognition. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 214 Table 113. I2C Slave Address Register (I2CSLVAD) Bit 7 Field 6 5 4 3 1 0 SLA[7:0] RESET 00h R/W R/W ADDR Bit 2 FF_E247h Description [7:0] Slave Address Bit 7–0 SLA[7:0] Initialize with the appropriate slave address value. When using 7-bit Slave addressing, bits in the range SLA[9:7] are ignored. PS028706-0813 PRELIMINARY I2C Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 215 Analog Functions Z16FMC Series devices include a 12-channel Analog-to-Digital Converter (ADC), an operational amplifier and a comparator. The features of the analog functions include: • ADC with 12 analog input sources multiplexed with General-Purpose Input/Output (GPIO) ports • Operational amplifier with output internally connect to the ADC • Comparator with separate inputs or shared with the operational amplifier Figure 42 shows a block diagram displaying these analog functions. Figure 42. Analog Functions Block Diagram PS028706-0813 PRELIMINARY Analog Functions Z16FMC Series Motor Control MCUs Product Specification 216 ADC Overview Z16FMC Series devices include a 12-channel ADC. The ADC converts an analog input signal to a 10-bit binary number. The features of the successive approximation ADC include: • 12 analog input sources multiplexed with GPIO ports • Fast conversion time (2.5 µs) • Programmable timing controls • Interrupt on conversion complete • Internal voltage reference generator • Internal reference voltage available externally • Ability to supply external reference voltage • Ability to do simultaneous or independent conversions Architecture The architecture as illustrated in Figure 42 consists of an 12-input multiplexer, sampleand-hold amplifier and 10-bit successive approximation ADC. The ADC digitizes the signal on selected channel and stores the digitized data in the ADC data registers. In environment with high electrical noise, an external RC filter must be added at the input pins to reduce high frequency noise. Operation The ADC converts the analog input, ANAx, to a 10-bit digital representation. The equation for calculating the digital value is represented by: ADC Output = 1024*(ANAx/VREF) Assuming zero gain and offset errors, any voltage outside the ADC input limits of AVSS and VREF returns all 0s or 1s, respectively. A new conversion is initiated by either software write to the ADC Control Register’s start bit or by PWM trigger. For detailed information about the PWM trigger, see s. Initiating a new conversion stops any conversion currently in progress and begins a new conversion. To avoid disrupting a conversion already in progress, the start bit is read to indicate ADC operation status (busy or available). PS028706-0813 PRELIMINARY ADC Overview Z16FMC Series Motor Control MCUs Product Specification 217 ADC Timing Each ADC measurement consists of three phases: 1. Input sampling (programmable, minimum of 1.0 µs). 2. Sample-and-hold amplifier settling (programmable, minimum of 0.5 µs). 3. Conversion is 12 ADCLK cycles. Figure 43 displays the timing of an ADC conversion. conversion period Start bit set by user cleared by BUSY 1.0µs min sample period SAMPLE/HOLD Internal signal Programable settling period BUSY Internal signal 12 clock convert period Figure 43. ADC Timing Diagram Figure 44 displays the timing of the conversion period showing the 10-bit progression of the output. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 7 8 9 convertbit0 and store 6 convertbit1 convertbit3 5 convertbit2 convertbit4 4 convertbit5 3 convertbit6 2 convertbit7 1 convertbit 8 convert msb 218 10 11 12 13 14 15 16 17 ADC Clock BUSY 12 clocks convert period Figure 44. ADC Convert Timing ADC Interrupts The ADC generates an interrupt request when a conversion has been completed. An interrupt request pending when the ADC is disabled is not automatically cleared. ADC0 Timer0 Capture The Timer0 count is captured for every ADC0 conversion. The information is used to determine the zero crossing of back EMF in motor control applications. The capture of the Timer0 count occurs when the programmed sample time is complete for every conversion and stored in the ADC Timer Capture Register (ADCTCAP). ADC Convert on Read The ADC is set up to automatically convert the next channel input after reading the results of the current conversion. The conversions continue up to the channel listed in the ADC0MAX Register, then start over at the initial channel. The initial channel to convert is written to the Control Register, ADC0CTL, prior to starting the convert on Read process. After conversions have started, they continue to loop from the initial channel to Max channel until the convert on Read bit, CVTRD0, is cleared or the data is not read from the data registers. Reference Buffer, RBUF The reference buffer, RBUF, supplies the reference voltage for the ADC. When enabled, the internal voltage reference generator supplies the ADC and the voltage is available on PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 219 the VREF pin. When RBUF is disabled, the reference voltage must be supplied externally through the VREF pin. RBUF is controlled by the REFEN bit in the ADC0 Control Register. Internal Voltage Reference Generator The internal voltage reference generator provides the voltage to RBUF. The internal reference voltage is 2 V. ADC Control Register Definitions This section defines the control registers for the Analog-to-Digital Converter block. ADC0 Control Register 0 The ADC0 Control Register initiates the A/D conversion and provides ADC0 status information. Table 114. ADC0 Control Register 0 (ADC0CTL) Bit Field RESET R/W 7 6 5 4 START0 CVTRD0 REFEN ADC0EN 0 0 0 0 0 0 0 0 R/W1 R/W R/W R/W R/W R/W R/W R/W ADDR 3 2 1 0 ANAIN0[3:0] FF_E500h Bit Description [7] START0 ADC0 Start/Busy 0 = Writing to 0 has no effect. Reading a 0 indicates the ADC0 is available to begin a conversion. 1 = Writing to 1 starts a conversion on ADC0. Reading a 1 indicates a conversion is currently in progress. [6] Convert On Read CVTRD0 0 = The ADC0 operates normally. 1 = If this bit is set to 1, whenever the ADC0D Register is read it increments the ANAIN field by one and start a new conversion. The ANAIN field increments until it reaches the value set in the ADC0MAX Register. After doing the conversion on the channel specified by the ADC0MAX Register, the next read resets the ANAIN field to zero. This function is used with the DMA to perform continuous conversions. PS028706-0813 PRELIMINARY ADC Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 220 Bit Description (Continued) [5] REFEN Reference Enable 0 = Internal reference voltage is disabled allowing an external reference voltage to be used by the ADC0. 1 = Internal reference voltage for the ADC0 is enabled. The internal reference voltage is measured on the VREF pin. [4] ADC0 Enable ADC0EN 0 = ADC0 is disabled for low power operation. 1 = ADC0 is enabled for normal use. [3:0] ANAIN0 Analog Input Select 0000 = ANA0 input is selected for analog-to-digital conversion. 0001 = ANA1 input is selected for analog-to-digital conversion. 0010 = ANA2 input is selected for analog-to-digital conversion. 0011 = ANA3 input is selected for analog-to-digital conversion. 0100 = ANA4 input is selected for analog-to-digital conversion. 0101 = ANA5 input is selected for analog-to-digital conversion. 0110 = ANA6 input is selected for analog-to-digital conversion. 0111 = ANA7 input is selected for analog-to-digital conversion. 1000 = ANA8 input is selected for analog-to-digital conversion. 1001 = ANA9 input is selected for analog-to-digital conversion. 1010 = ANA10 input is selected for analog-to-digital conversion. 1011 = ANA11 input is selected for analog-to-digital conversion. 1100–1111 = Reserved. ADC0 Data High Byte Register The ADC0 Data High Byte Register contains the upper eight bits of the ADC0 output. Access to the ADC0 Data High Byte Register is read-only. Table 115. ADC0 Data High Byte Register (ADC0D_H) Bit 7 6 Field 5 4 3 2 1 0 ADC0D_H RESET X R/W R ADDR FF_E502h Bit Description (Continued) [7:0] ADC0D_H ADC0 High Byte 00h–FFh = The final conversion output is held in the data registers until the next ADC conversion is completed. PS028706-0813 PRELIMINARY ADC Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 221 ADC0 Data Low Bit Register The ADC0 Data Low Bit Register contains the lower bits of the ADC0 output. Access to the ADC0 Data Low Bit Register is read-only. Table 116. ADC0 Data Low Bit Register (ADC0D_L) Bit 7 Field 6 5 4 3 2 ADC0D_L Reserved RESET X X R/W R R ADDR 1 0 FF_E503h Bit Description [7:6] ADC0D_L ADC0 Low Bit 00–11b = These bits are the 2 least significant bits of the 10-bit ADC0 output. These bits are undefined after a Reset. [5:0] Reserved Reserved These bits are reserved and must be programmed to 000000. Sample Settling Time Register The Sample Settling Time Register is used to program the length of time from the SAMPLE/HOLD signal to the start signal, when the conversion begins. The number of clock cycles required for settling varies from system to system depending on the system clock period used. You must program this register to contain the number of clocks required to meet a 0.5 µs minimum settling time. Table 117. Sample and Settling Time (ADCSST) Bit 7 Field RESET 6 5 4 3 Reserved 0 R/W 0 1 0 1 1 SST 0 1 1 R ADDR 2 1 R/W FF_E504h Bit Description [7:5] Reserved These bits are reserved and must be programmed to 000. [4:0] SST Sample Settling Time 00h–1Fh = Sample settling time in number of system clock periods to meet 0.5 µs minimum. PS028706-0813 PRELIMINARY ADC Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 222 Sample Time Register The Sample Time Register is used to program the length of active time for the sample after a conversion has begun by setting the start bit in the ADC Control Register or initiated by the PWM. The number of system clock cycles required for sample time varies from system to system depending on the clock period used. You must program this register to contain the number of system clocks required to meet a 1 µs minimum sample time. Table 118. Sample Time (ADCST) Bit 7 Field 6 5 4 3 Reserved RESET 0 R/W R 2 1 0 1 1 1 ST 1 1 1 R/W ADDR FF_E505h Bit Description [7:6] Reserved These bits are reserved and must be programmed to 00. [5:0] SHT Sample Hold Time 00h–3Fh = Sample Hold time in number of system clock periods to meet 1 µs minimum. ADC Clock Prescale Register The ADC Clock Prescale Register is used to provide a divided system clock to the ADC. When this register is programmed with 0h, the system clock is used for the ADC Clock. Table 119. ADC Clock Prescale Register (ADCCP) Bit 7 3 2 1 0 Reserved DIV16 DIV8 DIV4 DIV2 RESET 0 0 0 0 0 R/W R Field ADDR 6 5 4 R/W FF_E506h Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3] DIV16 DIV16 0 = Clock is not divided. 1 = System Clock is divided by 16 for ADC Clock. PS028706-0813 PRELIMINARY ADC Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 223 Bit Description (Continued) [2] DIV8 DIV8 0 = Clock is not divided. 1 = System Clock is divided by 8 for ADC Clock. [1] DIV4 DIV4 0 = Clock is not divided. 1 = System Clock is divided by 4 for ADC Clock. [0] DIV2 DIV2 0 = Clock is not divided. 1 = System Clock is divided by 2 for ADC Clock. ADC0 Max Register The ADC0 Max Register determines the highest channel that the Convert on Read increments too. Table 120. ADC0 Max Register (ADC0MAX) Bit 7 6 Field RESET 5 4 3 2 1 Reserved LASTCHAN0 0 0h R/W 0 R/W ADDR FF_E507h Bit Description [7:4] Reserved These bits are reserved and must be programmed to 0000. [3:0] LASTCHAN0 LAST CHANNEL0 0 = These bits determine the final channel number to increment to when the Convert On Read is set. ADC Timer0 Capture Register The ADC Timer0 Capture Register contains the sixteen bits of the ADC Timer0 count and can read a 16-bit word or read 8 bits at a time. Access to the ADC Timer0 Capture Register is read-only. PS028706-0813 PRELIMINARY ADC Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 224 Table 121. ADC Timer0 Capture Register, High Byte (ADCTCAP_H) Bit 7 6 5 Field 4 3 2 1 0 ADCTCAPH RESET X R/W R ADDR FF_E512h Bit Description [7:0] ADCTCAPH ADC Timer0 Count High Byte 00h–FFh = The Timer0 count is held in the data registers until the next ADC conversion is started. Table 122. ADC Timer0 Capture Register, Low Byte (ADCTCAP_L) Bit 7 6 Field 5 4 3 2 1 0 ADCTCAPL RESET X R/W R ADDR FF_E513h Bit Description [7:0] ADCTCAPL ADC Timer0 Count Low Byte 00h–FFh = The Timer0 count is held in the data registers until the next ADC conversion is started. Comparator and Operational Amplifier Overview Z16FMC Series devices feature a general-purpose comparator and an operational amplifier. The comparator is a moderate speed (200 ns propagation delay) device which is designed for a maximum input offset of 5 mV. The comparator is used to compare two analog input signals. General-purpose input pins (CINP and CINN) provides the comparator inputs. The output is available as an interrupt source. The operational amplifier is a two-input, one-output operational amplifier with a typical open loop gain of 10,000 (80 dB). The general-purpose input pin (OPINP) provides the noninverting amplifier input, while general-purpose input pin (OPINN) provides the inverting amplifier input. The output is available at the output pin (OPOUT). The key operating characteristics of the operational amplifier are: PS028706-0813 PRELIMINARY Comparator and Operational Amplifier Z16FMC Series Motor Control MCUs Product Specification 225 • Frequency compensated for unity gain stability • Input common-mode-range from GND (0.0 V) to VDD–1 V • Input offset voltage less than 15 mV • Output voltage swing from GND + 0.1 V to VDD–0.1 V • Input bias current less than 1 µA • Operating the operational amplifier open loop (no feedback) effectively provides another on-chip comparator Comparator Operation The comparator output reflects the relationship between the noninverting input and the inverting (reference) input. If the voltage on the noninverting input is higher than the voltage on the inverting input, the comparator output is at a high state. If the voltage on the noninverting input is lower than the voltage on the inverting input, the comparator output is at a low state. To operate, the comparator must be enabled by setting the CMPEN bit in the Comparator and Op-Amp Register to 1. In addition, the CINP and CINN comparator input alternate functions must be enabled on their respective GPIO pins. For more information, see s. The comparator does not automatically power-down. To reduce operating current when not in use, the comparator is disabled by clearing the CMPEN bit to 0. Operational Amplifier Operation To operate, the operational amplifier must be enabled by setting the OPEN bit in the Comparator and Op-Amp Register to 1. In addition, the OPINP, OPINN and OPOUT alternate functions must be enabled on their respective general-purpose I/O pins. For more information, see s. The logical value of the operational amplifier output (OPOUT) is read from the Port 3 Data Input Register if both the operational amplifier and input pin Schmitt trigger are enabled. For more information, see s. The operational amplifier generates an interrupt via the GPIO Port B3 input interrupt, if enabled. The output of the operational amplifier is also connected to an analog input (ANA3) of the ADC multiplexer. The operational amplifier does not automatically power-down. To reduce operating current when not in use, the operational amplifier is disabled by clearing the OPEN bit in the Comparator and Op-Amp Register to 0. When the operational amplifier is disabled, the output is high impedance. PS028706-0813 PRELIMINARY Comparator Operation Z16FMC Series Motor Control MCUs Product Specification 226 Interrupts The comparator generates an interrupt on any change in the logic output value (from 0 to 1 and from 1 to 0). For information about enabling and prioritization of the comparator interrupt, see the Interrupt Controller chapter on page 54. Comparator Control Register Definitions The following sections describe the comparator control registers. Comparator and Operational Amplifier Control Register The Comparator and Operational Amplifier Control Register (CMPOPC) enables the comparator and operational amplifier and provides access to the comparator output. Table 123. Comparator and Op Amp Control Register (CMPOPC) Bit Field RESET R/W 7 6 5 4 3 2 1 0 OPEN Reserved CPISEL CMPIRQ CMPIV CMPOUT CMPEN 0 00 0 0 0 X 0 R/W R R/W R/W R/W R R/W ADDR FF_E510h Bit Description [7] OPEN Operational Amplifier Disable 0 = Operational amplifier is disabled. 1 = Operational amplifier is enabled. [6:5] Reserved These bits are reserved and must be programmed to 00. [4] CPISEL Comparator Input Select 0 = PortB6 provides the comparator; input. 1 = PortC0 provides the comparator; input. [3] CMPIRQ Comparator Interrupt Edge Select 0 = Interrupt Request on Comparator Rising Edge. 1 = Interrupt Request on Comparator Falling Edge. [2] CMPIV PWM Fault Comparator Polarity 0 = PWM Fault is active when cp+ > cp1 = PWM Fault is active when cp- > cp+ [1] CMPOUT Comparator Output Value 0 = Comparator output is logical 0. 1 = Comparator output is logical 1. PS028706-0813 PRELIMINARY Interrupts Z16FMC Series Motor Control MCUs Product Specification 227 Bit Description (Continued) [0] CMPEN Comparator Enable 0 = Comparator is disabled. 1 = Comparator is enabled. PS028706-0813 PRELIMINARY Comparator Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 228 DMA Controller The four DMA channels are used to transfer data from memory to memory, memory to peripherals, peripherals to memory, or peripherals to peripherals. DMA Features The features of DMA controller include: • Four independent DMA channels • Memory memory, memory peripheral, peripheral memory, peripheral peripheral transfers • Direct or linked list modes of operation • Byte, word, or quad operation • DMA and CPU bandwidth sharing control • Up to 64 K transfers (64 KB, 64 KWord or 64 KQuad) A block diagram of the DMA Controller is shown in Figure 45. PS028706-0813 PRELIMINARY DMA Controller Z16FMC Series Motor Control MCUs Product Specification 229 Channel 0 Request0 Request EOF0 Acknowledge0 Interrupt0 Channel MUX Channel 1 Request1 Request EOF1 Acknowledge1 Interrupt1 DMA Bus Controller Channel 2 Request2 Request EOF2 Acknowledge2 Interrupt2 Channel 3 Request3 Request EOF3 (Internal Only) Acknowledge3 Interrupt3 CMDVLD EOFSYNC RDSTAT CMDBUS STATBUS Memory Bus Figure 45. DMA Block Diagram PS028706-0813 PRELIMINARY DMA Features Z16FMC Series Motor Control MCUs Product Specification 230 DMA Description The DMA is used to off load the processor from doing repetitive tasks. DMA transfers data from one memory address to another memory address. Because all peripherals are mapped in memory, the DMA transfers data to or from peripherals. The DMA transfers data from the source address to the destination address. This requires a read and/or write cycle that is generated by the DMA controller. Each DMA transfer requires a minimum of two system clock cycles to execute. The DMA operates in DIRECT or LINKED LIST Mode. DIRECT Mode and LINKED LIST Mode are almost identical. In DIRECT Mode, the software loads the DMA channel registers directly. In LINKED LIST Mode, the DMA loads its registers from memory. DMA Register Description Each DMA channel consists of 16-bit control register, a 16-bit transfer length register, a 24-bit destination address register, a 24-bit source address register and a 24-bit list address register, shown in Figure 46. DMA Control (DMACTL) Transfer Length (TXLN) Destination Address (DAR) Source Address (SAR) List Address (LAR) Figure 46. DMA Channel Registers Buffers A buffer is an allocation of contiguous memory bytes. Buffers are allocated by software to be used by the DMA. The DMA transfers data to or from buffers. A typical application would be to send data to serial channels such as I2C, UART and SPI. The data to be sent is placed in a buffer by software. Frames A frame is a single buffer or a collection of buffers. Frame boundaries spans multiple buffers. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 231 Source Address Register The Source Address Register (SAR) points to the data to be transferred. Each time a transfer occurs the SAR is selected to stay fixed or increment/decrement by the size of the transfer (example 1, 2, 4). If we were sending data to a serial channel, the SAR points to the data to be transferred and the SAR would be set to increment or decrement depending on the order of data in the buffer (ascending or desending). Destination Address Register The Destination Address Register (DAR) points to the location to store the data transferred from the address pointed to by the SAR. Each time a transfer occurs the DAR is selected to stay fixed or increment/decrement by the size of the transfer (for example, 1, 2 and 4). When sending data to a serial channel, the DAR points to the data register of the serial channel and is set to a fixed address. Each transfer is then sent to the serial channel data register because the DAR would not change. Transfer Length The Transfer Length Register (TXLN) is used to specify how many transfers need to occur to transfer this buffer. If we were sending bytes to a serial channel, the value of the number of bytes in the buffer pointed to by the SAR would be placed in this register. Each time a transfer takes place this register is decremented by one. When the transfer length decrements to zero, the buffer is complete and the DMA either stops or loads new control information and addresses. List Address Register The List Address Register (LAR) is only used for LINKED LIST Mode. The LAR points to a list of descriptors (described below). This descriptor list contains set-up information for each buffer that the DMA will transfer. Linked-list DMAs reduce the amount of overhead on the CPU to service the DMA. Descriptor A Descriptor is a 16-byte field in the memory space. It must be aligned on 16-byte boundaries (i.e., the lower 4 bits of the address is 0). Table 124 provides the descriptor format. Table 124. Linked List Descriptor PS028706-0813 Address Even LAR CONTROL LAR + 02h TXLN LAR + 04h DAR High LAR + 08h SAR High LAR + 0Ch LAR High PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 232 DMA Control Bit Definitions The following paragraphs explain the control bits of each DMA channel. DMAxEN This bit if set by the CPU enables the DMA channel for direct operation. Direct operation uses the addresses and transfer length, which has been directly written to the DMA Channel by software. If this bit is set by a descriptor read, then LINKED LIST Mode is enabled. Linked list operation starts when an address is written to the DMAxLAR. This write causes the DMA to read in the descriptor control value and addresses and place them in the DMA Channel. LOOP If the DMA is in LINKED LIST Mode and this bit is set to 1, it prevents the DMA from updating the descriptor when the buffer is closed. This bit is set to allow lists to loop on themselves without software intervention. TXSIZE The TXSIZE bits sets the width of the transfer. 00 = 8-bit bytes are transferred on each DMA transfer. The destination and source addresses increment or decrement by one for each transfers if the DSTCTL and/or SRCCTL is selected for increment or decrement. The transfer length is decremented by one, allowing 64 KB to be transferred. 01 = A 16-bit word is transferred on each DMA transfer. The destination and source addresses increment or decrement by two if the DSTCTL and/or SRCCTL is selected for increment or decrement. In word mode the transfer length is still decremented by one. This allows 64 Kwords to be transferred. 10 = A 32-bit quad is transferred on each DMA transfer. The destination and source addresses increment or decrement by four if the DSTCTL and/or SRCCTL is selected for increment or decrement. In quad mode, the transfer length is still decremented by one. This allows 64 Kquads to be transferred. DSTCTL and SRCCTL Fields The DSTCTL and SRCCTL fields control the increment or decrement of the source and destination addresses. The address is set to increment, decrement or not change on each DMA transfer. 00 = Fixed 01 = Increment 10 = Decrement 11 = Reserved PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 233 Interrupt on End Of Buffer (IEOB) The Interrupt on end of buffer bit forces the DMA channel to generate an interrupt when the buffer is closed. If the DMA is operating in DIRECT Mode, the TXLN decrements to the watermark value (see the DMA Watermark section on page 233) and this bit is set, then a interrupt is also generated. Transfer List (TXFR) If the DMA is operating in LINKED LIST Mode and this bit is set, the DMA uses the next LAR address in the descriptor for the next descriptor address instead of incrementing the current DMAxLAR address by 16. This allows looping, true linked lists with buffers following the descriptor or just transfers to other loops. End Of Frame (EOF) If this bit is set, the EOF signal is sent to the peripheral on the final transfer in the buffer (i.e., TXLN == 1). This action signals the peripheral to close the current frame; it is only used for on-chip peripherals. This bit is also set if a peripheral requests an End Of Frame before the buffer transfer is completed. Halt After This Buffer (HALT) If this bit is set, then the DMA stops after this buffer is closed. The DMAxLAR points to the next descriptor but the descriptor will not be fetched. Command Status (CMDSTAT) These four bits are exported to the requesting device on the CMDBUS on the first transfer of a new buffer. These bits are set by a software write or from the DMA reading the descriptor. At the end of a buffer these four bits will contain status from the peripheral if the EOF bit is set. See Zilog’s peripheral devices specifications for definitions of commands and status. DMA Watermark When operating in DIRECT Mode, the DMAxLAR[23:16] byte is used as a watermark interrupt. If these bits are set to any value other than 0, they are compared to the low byte of the decremented transfer length during a transfer. If the IEOB bit is set and the upper byte of DMAxTXLN[15:8] is zero and DMAxTXLN[7:0] == DMAxLAR[23:16], then an interrupt is generated. This function allows the DMA channel to generate an interrupt prior to the buffer becoming empty. DMA Peripheral Interface signals The DMA uses two input signals, four output signals and two 4-bit buses to communicate with the peripherals. The input signals are Request (REQ) and Request EOF. The output PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 234 signals are Acknowledge (ACK), Command Valid (CMDVLD), End Of Frame (EOFSYNC) and Read Status (RDSTAT). The two 4-bit busses are Command Bus (CMDBUS) and Stat Bus (STATBUS). A DMA transfer is initiated with the Request (REQ). When the DMA is servicing a Request from a peripheral it will assert its acknowledge signal (ACK) to let the peripheral know that a transfer is in progress. When the first byte of the transfer is written the CMDVLD is asserted and the command bits are placed on the CMDBUS. The peripheral needs to latch the command from the bus when it sees this combination of signals. If the EOF bit is set on the current buffer, and when the TXLN decrements to zero, the EOFSYNC signal is asserted on the final data transfer to the peripheral to signal that it is the final byte in the frame. After receiving the EOFSYNC signal the peripheral need to assert the Request EOF signal to the DMA to let the DMA know that the descriptor is closed. This could be immediately or at some later time if the data transferred still needs to be processed. For peripherals, which do not support a Request EOF, the EOFSYNC is tied to Request EOF to terminate the transfer. After the Request EOF is asserted the DMA closes the descriptor. The DMA asserts the ACK and RDSTAT signal, if the descriptor EOF bit is set. The peripheral, if it has status, places it on the STATBUS. This status is then placed in the descriptor and DMA status bits when it is closed. If a peripheral needs to close a descriptor because of an error or the end of a packet is reached, then it asserts it is Request EOF. If the transfer length is not zero, then the DMA will set the EOF bit, close the descriptor and generate an interrupt. Buffer Closure A DMA buffer closure is requested in two ways. The first is when the transfer length reaches zero. The second is when the DMA receives a request End Of Frame from the peripheral. When either of these cases occur, the DMA begins closure of the buffer. Loop Mode Closure If the LOOP bit is set, then the current buffer descriptor is not modified. The DMAxLAR increments or a new LAR value is fetched from the descriptor. EOF Closure The DMAxEN bit is reset to 0. If the EOF bit is set, the CMDSTAT field is set with the status data from the peripheral. If the channel is in LINKED LIST Mode, then the DMAxCTL word is written back to the CONTROL word of the descriptor. The DMAxLAR increments or is loaded with new LAR data from the descriptor if the TXFR bit is set. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 235 Normal Closure The DMAxEN bit is reset to 0. If the channel is in LINKED LIST Mode, then the DMAxCTL word is written back to the CONTROL word of the descriptor. The DMAxLAR increments or is loaded with new LAR data from the descriptor if the TXFR bit is set. DMA Modes Each DMA channel operates in two modes, direct and linked list. Both modes use the DMA channel registers. The only difference is in how they are loaded. In DIRECT Mode, the DMA channel registers are directly loaded by software. When the transfer is complete, the DMA stops. In LINKED LIST Mode the DMA will load its own registers from a descriptor list which is pointed to by the DMAxLAR Register. It next loads the next descriptor in the list and continue executing. The descriptor Control/Status field and address bytes have the same format as the control and address registers in the DMA. DIRECT Mode DIRECT Mode only uses the registers in the DMA for operation. The software writes these register directly to set up and enable the DMA. DIRECT Mode is entered by directly setting the DMAxEN bit in the DMAxCTL0 Register. Figure 47 displays the DMA registers and how they point to the buffers allocated in memory. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 236 Memory Map Destination Buffer DMA Channel Registers DMA Control (DMACTL0,1) Transfer Length (TXLN) Destination Address (DAR) Source Address (SAR) List Address (LAR) Source Buffer Figure 47. Direct DMA Diagram Direct DMA Setup and Operation Observe the following steps to set up the DMA in DIRECT Mode: 1. Write the DMAxREQSEL to select the request source. 2. Write the DMAxDAR Register with the destination address. 3. Write the DMAxSAR Register with the source address. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 237 4. Write the DMAxTXLN with the transfer length. 5. Write DMAxLARU with watermark if required; otherwise write to zero. 6. Write DMAxCTL, and note that the control register and the address are directly written with word and quad operations. – DMAxEN; set to 1 – LOOP; reset to 0, not used in this mode – TXSIZE; set to the transfer size, byte, word or quad – DSTCTL; set to fixed, increment, or decrement – SRCCTL; set to fixed, increment, or decrement – IEOB; set to 1 to generate an interrupt at the end of buffer or watermark – TXFR; reset to 0, not used in this mode – EOF; set this bit to one if it is an EOF buffer – HALT; reset to 0, not used in this mode – CMDSTAT; set these bits with the command for the peripheral 7. The DMA is now set up and begins operating when it receives a request. After the DMA is set up and a request is received the DMA does the following: 1. Generate a request to the CPU. 2. It transfers data for each request until the transfer length reaches zero or the DMA receives a Request EOF signal. 3. When the DMA receives the Request EOF signal, or when the transfer length reaches zero, it resets the DMAxEN bit. Next, based upon the EOF and IEOB bits, and if EOF is set, then the DMA reads the status from the peripheral and places it in the CMDSTAT field of the DMAxCTL Register. If the IEOB bit is set, or if the buffer ended with a Request EOF, the DMA channel generates a request to the CPU. If EOF is not set and IEOB is set, then the DMA channel generates a request to the CPU. LINKED LIST Mode LINKED LIST Mode requires the software to allocate buffers and set up a list of descriptors for each buffer. After this allocation is performed, the software writes to DMAxLAR with the address of the first descriptor. After the DMAxLAR is written, the DMA reads the first descriptor into the DMA control and address registers with the exception of the LAR data. It executes the transfers as specified by the descriptor data in the DMA. When the transfers are complete, the DMA reads in the next descriptor in the list and continue executing transfers. Figure 48 displays two descriptors and two sets of destination and source buffers. It also displays how the descriptors are loaded into the DMA and then executed. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 238 Memory Destination Pointers Destination Buffer 0 Destination Buffer 1 Source Pointers List Address (LAR) Source Address (SAR) Destination Address (DAR) Transfer Length (TXLN) DMA Control (DMACTL0,1) DMA Channel Source Buffer 1 Descriptor Pointer Source Buffer 0 1rst Descriptor Control/Status TXLN DAR SAR 2nd Descriptor LAR Control/Status TXLN DAR SAR TXFR Bit Set LAR Figure 48. Linked List Diagram PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 239 Linked List Setup and Operation The software initially needs to create the descriptor lists and allocate the buffers for each list. In addition, software needs to do the following: 1. Write the DMAxREQSEL to select the appropriate request source. 2. Set the CONTROL field in the descriptor (not the DMA) for the appropriate operation: – DMAxEN; set to 1 – LOOP; set to 1 to not have the descriptor modified – TXSIZE; set the appropriate size for byte, word or quad – DSTCTL; set this for increment, decrement, or fixed – SRCCTL; set this for increment, decrement, or fixed – IEOB; set to 1 if an interrupt must be generated when this descriptor is closed – TXFR; set this bit if the LAR is used to point to the next descriptor – EOF; if it is an End Of Frame buffer, then set this bit – HALT; if the DMA must stop at the end of this buffer, then set this bit to one – CMDSTAT; set this field with a command for the selected peripheral 3. Write the destination address to the destination field. 4. Write the source address to the source field. 5. Write the transfer length for this buffer. 6. If this descriptor has its TXFR bit set, then the LAR address to point to the next descriptor. 7. If there are additional descriptors in the list, then set them up using the same procedure listed above. After the descriptor has been set up, the software must write the DMAxLAR in the appropriate DMA with the address of the descriptor. The DMA performs the following: 1. Generate a request to the CPU. 2. Place the DMAxLAR address on the bus and fetch the CONTROL word from the descriptor. This word is then placed in the DMAxCTL Register of the DMA channel. 3. Fetch the Destination address from the descriptor and place it in the DMAxDAR Register in the DMA channel. 4. Fetch the Source address from the descriptor and place it in the DMAxSAR Register in the DMA channel. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 240 5. Fetch the TXLN length from the descriptor and place it in the DMAxTXLN Register in the DMA channel. 6. After the reads have been completed, the DMA starts looking for requests and transfer data until the transfer length reaches zero or the DMA receives a Request EOF signal. 7. When the DMA receives the Request EOF signal, it performs the following operations based upon the LOOP and EOF bit: – 00 = The DMA writes the descriptor Control/Status word with the DMAxEN bit reset to 0. – 01 = The DMA requests status from the peripheral. It then writes the descriptor Control/Status word with the DMAxEN bit reset to 0 and the status returned from the peripheral. The DMA then writes the TXLN length to the descriptor. – 1X: The DMA does not modify the descriptor. 8. If the HALT bit is set the DMA closes the current buffer but does not fetch the next descriptor. 9. After a new DMAxLAR address has been updated, the DMA goes back to step 2 above and fetches the control/status byte. DMA Priority The DMA priority is based upon the final channel serviced. After a channel is serviced it becomes the lowest-priority channel. Table 125 lists the DMA priority. Table 125. DMA Priority PS028706-0813 Last Channel Serviced DMA Priority DMA0 DMA1 (Highest) DMA2 DMA3 DMA0 (Lowest) DMA1 DMA2 (Highest) DMA3 DMA0 DMA1 (Lowest) DMA2 DMA3 (Highest) DMA0 DMA1 DMA2 (Lowest) DMA3 DMA 0 (Highest) DMA 1 DMA 2 DMA 3 (Lowest) PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 241 Each DMA has equal priority under this scheme. DMA Bandwidth Selection In the CPUCTL Register, the DMABW mode bits set the maximum bus bandwidth the DMA is allowed; there are four modes. (For more detail, refer to the ZNEO CPU Core User Manual (UM0188), available free for download from the Zilog website.) Table 126 lists the DMA bandwidth selection. Table 126. DMA Bandwidth Selection Bit Description 00 DMA uses 100% of the bandwidth 01 DMA is allowed one transfer for each CPU operation 10 DMA is allowed one transfer for every two CPU operations 11 DMA is allowed one transfer for every three CPU operations DMA Interrupts Each DMA has its own interrupt vector. For additional information about the interrupts, see the Interrupt Controller chapter on page 54. Interrupts occur on the following conditions: • Whenever a buffer is completed which has its IEOB set • When the upper eight bits of the transfer length equal zero and the lower eight bits of the transfer length is equal to the DMAxLAR[23:16] and the DMA is in DIRECT Mode • If a buffer has been terminated by a Request EOF DMA Request Select Register The DMA Request Select Register, shown in Table 127, controls the states of the DMA channel, whether LINKED LIST Mode or DIRECT Mode. PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 242 Table 127. DMA Request Select Register (DMAxREQSEL) Bit 7 Field 6 5 4 3 2 CHANSTATE 1 0 REQSEL RESET 0 0 0 0 0 0 0 0 R/W R R R R R/W R/W R/W R/W ADDR FFE400h, FFE401h, FFE402h, FFE403h Note: x indicates values in the range 0–3. Bit Description [7:4] CHANSTATE Channel State 0000 = DMA Off 0001 = DIRECT Mode, Waiting for End Of Frame signal 0010 = LINKED LIST Mode, Waiting for End Of Frame signal 0011 = Reserved 0100 = DIRECT Mode, First byte transfer, send command 0101 = LINKED LIST Mode, First byte transfer, send command 0110 = DIRECT Mode, Transfer of buffer in progress 0111 = LINKED LIST Mode, Transfer of buffer in progress 1000 = DIRECT Mode, Close Descriptor 1001 = LINKED LIST Mode, New List 1010 = LINKED LIST Mode, Close Descriptor 1011–1111 = Reserved [3:0] DMA0, DMA1, DMA2, DMA3 REQSEL DMA 0 Request Select 0000 = Continuous (i.e., Memory to Memory) 0001 = Timer 0 0010 = Timer 1 0011 = Timer 2 0100 = UART 0 RXD  0101 = UART 0 TXD 0110 = UART 1 RXD 0111 = UART 1 TXD 1000 = I2C RX 1001 = I2C TX 1010 = SPI RX 1011 = SPI TX 1100 = ADC0 1101 = Reserved 1110 = Reserved 1111 = Reserved PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 243 Bit Description (Continued) [3:0] DMA0, DMA1, DMA2, DMA3 REQSEL (cont’d.) DMA 1 Request Select 0000 = Continuous (i.e., Memory to Memory) 0001 = Timer 0 0010 = Timer 1 0011 = Timer 2  0100 = UART 0 RXD 0101 = UART 0 TXD 0110 = UART 1 RXD 0111 = UART 1 TXD 1000 = I2C RX 1001 = I2C TX 1010 = SPI RX 1011 = SPI TX 1100 = ADC0 1101 = Reserved 1110 = Reserved 1111 = Reserved DMA 2 Request Select 0000 = Continuous (i.e., Memory to Memory) 0001 = Timer 0 0010 = Timer 1 0011 = Timer 2  0100 = UART 0 RXD 0101 = UART 0 TXD 0110 = UART 1 RXD 0111 = UART 1 TXD 1000 = I2C RX 1001 = I2C TX 1010 = SPI RX 1011 = SPI TX 1100 = ADC0 1101 = Reserved 1110 = Reserved 1111 = Reserved PS028706-0813 PRELIMINARY DMA Description Z16FMC Series Motor Control MCUs Product Specification 244 Bit Description (Continued) [3:0] DMA0, DMA1, DMA2, DMA3 REQSEL (cont’d.) DMA 3 Request Select 0000 = Continuous (i.e., Memory to Memory) 0001 = Timer 0 0010 = Timer 1 0011 = Timer 2  0100 = UART 0 RXD 0101 = UART 0 TXD 0110 = UART 1 RXD 0111 = UART 1 TXD 1000 = I2C RX 1001 = I2C TX 1010 = SPI RX 1011 = SPI TX 1100 = ADC0 1101 = Reserved 1110 = Reserved 1111 = Reserved DMA Control Registers This section describes the DMA control registers. DMA Control Register The DMA Control Register, shown in Table 128, enables and controls DMA transfers. PS028706-0813 PRELIMINARY DMA Control Registers Z16FMC Series Motor Control MCUs Product Specification 245 Table 128. DMA Control Register A (DMAxCTL)) Bit Field 15 14 DMAxEN LOOP 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W RESET R/W ADDR 13 12 11 TXSIZE 10 9 DSTCTL 8 SRCCTL FFE410h, FFE420h, FFE430h, FFE440h Field RESET R/W IEOB TXFR EOF HALT 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR CMDSTAT FFE411h, FFE421h, FFE431h, FFE441h Note: x indicates values in the range 0–3. Bit Description [15] DMAxEN DMA X Enable If this bit is written directly, then normal mode is executed. If this bit is read in from a descriptor, then LINKED LIST Mode is executed. 0 = DMA is disabled. 1 = DMA is enabled. [14] LOOP LOOP Mode 0 = Descriptor is modified when the buffer is closed. 1 = Descriptor is not modified when buffer is closed. [13:12] TXSIZE Transfer Size 00 = Byte 01 = Word 10 = Quad 11 = Reserved [11:10] DSTCTL Destination Control Register 00 = Destination address does not change 01 = Destination address increments 10 = Destination address decrements 11 = Reserved [9:8] SRCCTL Source Control Register 00 = Source address does not change 01 = Source address increments 10 = Source address decrements 11 = Reserved [7] IEOB Interrupt On End Of Buffer 0 = Do not generate an interrupt when the DMA completes this buffer 1 = Generate interrupt at the end of this buffer PS028706-0813 PRELIMINARY DMA Control Registers Z16FMC Series Motor Control MCUs Product Specification 246 Bit Description (Continued) [6] TXFR Transfer to New List Address This bit is used only in LINKED LIST Mode. 0 = Increment DMAxLAR by 16 at the end of this buffer. 1 = Load the DMAxLAR with the new List Address value from the descriptor. [5] EOF End Of Frame 0 = Not an End Of Frame buffer. 1 = This buffer is the end of the current frame. [4] HALT Halt After This Buffer This bit is used only in LINKED LIST Mode. 0 = Next descriptor is loaded. 1 = The DMA will halt at the end of this buffer. [3:0] CMDSTAT Command Status Field On the first transfer of a buffer this field is placed on the CMDBUS and the CMDVALID is asserted. If the EOF bit is set, the DMA requests a status from the peripheral and places it in this field. In LINKED LIST Mode, this field is written back to the descriptor. The DMA does not use this field it simply passes it on. The definitions of these bits are specified in each peripheral. DMA X Transfer Length Register These two registers form a 16-bit transfer length. This register is decremented each time a DMA transfer occurs. Table 129. DMA X Transfer Length High Register (DMAxTXLNH) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxTXLNH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE412h, FFE422h, FFE432h, FFE442h Note: x indicates values in the range 0–3. Table 130. DMA X Transfer Length Low Register (DMAxTXLNL) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxTXLNL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE413h, FFE423h, FFE433h, FFE443h Note: x indicates values in the range 0–3. PS028706-0813 PRELIMINARY DMA Control Registers Z16FMC Series Motor Control MCUs Product Specification 247 DMA Destination Address These three register form the destination address. This address points to where the data from the transfer will be stored. Table 131. DMA Destination Address Register Upper (DMAxDARU) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxDARU 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE415h, FFE425h,FFE435h,FFE445 Note: x indicates values in the range 0–3. Table 132. DMA Destination Address Register High (DMAxDARH) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxDARH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE416h, FFE426h, FFE436h, FFE446h Note: x indicates values in the range 0–3. Table 133. DMA Destination Address Register Low (DMAxDARL) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxDARL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE417h, FFE427h, FFE437h, FFE447h Note: x indicates values in the range 0–3. PS028706-0813 PRELIMINARY DMA Control Registers Z16FMC Series Motor Control MCUs Product Specification 248 DMA Source Address Registers The source address registers form a 24-bit source address. This address is used to point to the source data for the transfer. Table 134. DMA X Source Address Register Upper (DMAxSARU) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxSARU 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE419h, FFE429h, FFE439h, FFE449h Note: x indicates values in the range 0–3. Table 135. DMA X Source Address Register High (DMAxSARH) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxSARH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE41Ah, FFE42Ah, FFE43Ah, FFE44Ah Note: x indicates values in the range 0–3. Table 136. DMA X Source Address Register Low (DMAxSARL) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxSARL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE41Bh, FFE42Bh, FFE43Bh, FFE44Bh Note: x indicates values in the range 0–3. PS028706-0813 PRELIMINARY DMA Control Registers Z16FMC Series Motor Control MCUs Product Specification 249 DMA List Address Register This registers is written when the list mode for the DMA is used. This register contains the address of the current list the DMA is operating on. Writing the DMAxLARL Register enables the DMA for list operation. Table 137. DMA X List Address Register Upper (DMAxLARU) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxLARU 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE41Dh, FFE42Dh, FFE43Dh, FFE44Dh Note: x indicates values in the range 0–3. In DIRECT Mode, this register is used to set a watermark interrupt. This interrupt occurs when the DMATXLN[15:8] equals 0 and DMAxTXLN[7:0] equals DMAxLARU. Note when using the watermark the DMAxLARL must not be written. Table 138. DMA X List Address Register High (DMAxLARH) Bit 7 6 5 Field RESET R/W 4 3 2 1 0 DMAxLARH 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W 2 1 0 ADDR FFE41Eh, FFE42Eh, FFE43Eh, FFE44Eh Note: x indicates values in the range 0–3. Table 139. DMA X List Address Register Low (DMAxLARL) Bit 7 6 5 Field RESET R/W 4 3 DMAxLARL 0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W R/W ADDR FFE41Fh, FFE42Fh, FFE43Fh, FFE44Fh Note: x indicates values in the range 0–3. Writing the DMAxLARL Register causes the DMA to enter LINKED LIST Mode. PS028706-0813 PRELIMINARY DMA Control Registers Z16FMC Series Motor Control MCUs Product Specification 250 Flash Memory The products in the Z16FMC Series MCUs feature up to 128 KB of nonvolatile Flash memory with read/write/erase capability. Flash memory is programmed and erased incircuit by either user code or through the OCD. The Flash memory array is arranged in 2 KB pages. The 2 KB page is the minimum Flash block size that is erased. Flash memory is also divided into eight sectors, which is protected from programming and erase operations on a per sector basis. Table 140 describes the Flash memory configuration for each device in the Z16FMC Series. Table 141 lists the sector address ranges. Figure 49 displays the Flash memory arrangement. Table 140. Flash Memory Configurations Part Number Internal Flash Size Number of Pages Program Memory Number of Addresses Sector Size Sectors Pages per Sector Z16FMC28 128 KB 64 000000h–01FFFFh 16 KB 8 8 Z16FMC64 64 KB 32 0000h–FFFFh 8 KB 8 4 Z16FMC32 32 KB 16 0000h–7FFFh 4 KB 8 2 Table 141. Flash Memory Sector Addresses Flash Sector Address Ranges Sector Number Z16FMC28 Z16FMC64 Z16FMC32 0 000000h–003FFFh 000000h–001FFFh 000000h–000FFFh 1 004000h–007FFFh 002000h–003FFFh 001000h–001FFFh 2 008000h–00BFFFh 004000h–005FFFh 002000h–002FFFh 3 00C000h–00FFFFh 006000h–007FFFh 003000h–003FFFh 4 010000h–013FFFh 008000h–009FFFh 004000h–004FFFh 5 014000h–017FFFh 00A000h–00BFFFh 005000h–005FFFh 6 018000h–01BFFFh 00C000h–00DFFFh 006000h–006FFFh 7 01C000h–01FFFFh 00E000h–00FFFFh 007000h–007FFFh PS028706-0813 PRELIMINARY Flash Memory Z16FMC Series Motor Control MCUs Product Specification 251 128KB Flash Program Memory Addresses 01FFFFh 01F800h 01F7FFh 01F000h 01EFFFh 01E800h 64 Pages 2KB per Page 0017FFh 001000h 000FFFh 000800h 0007FFh 000000h Figure 49. Flash Memory Arrangement Information Area Table 142 describes the Z16FMC MCU’s Information Area. This 128-byte Information Area is accessed by setting bit 7 of the Flash Control Register to 1. When access is enabled, the Information Area is mapped into program memory and overlays the 128 bytes at addresses 000000h to 00007Fh. When the Information Area access is enabled, instructions access data from the Information Area. The CPU instruction fetches always come from Main Memory regardless of the Information Area access bit. Access to the Information Area is read-only. PS028706-0813 PRELIMINARY Information Area Z16FMC Series Motor Control MCUs Product Specification 252 Table 142. Information Area Map Program Memory Address (Hex) Function 000000h–00003Fh Reserved. 000040h–000053h Part Number: a 20-character ASCII alphanumeric code that is leftjustified and padded with zeroes. 000054h–00007Fh Reserved. Operation The Flash Controller provides the proper signals and timing for the word programming, Page Erase and Mass erase functions within Flash memory. The Flash Controller contains a protection mechanism, using the Flash Command Register (FCMD), to prevent accidental programming or erasure. The following subsections provide details about the various operations (Lock, Unlock, Sector Protect, Byte Programming, Page Erase and Mass Erase). Timing Using the Flash Frequency Register Before performing a program or erase operation on the Flash memory, you must first configure the Flash Frequency Register. The Flash Frequency Register allows programming and erasure of the Flash with system clock frequencies ranging from 32 kHz through 20 MHz (the valid range is limited to the device operating frequencies). The 16-bit Flash Frequency Register must be written with the system clock frequency in kHz before a program or erase operation is initiated. This value is calculated using the following equation: FFREQ[15:0] System Clock Frequency (Hz) = -----------------------------------------------------------------1000 Caution: Flash programming and erasure is not supported for system clock frequencies below 32 kHz, above 20 MHz, or outside of the device operating frequency range. The Flash Frequency Register must be loaded with the correct value to ensure proper Flash programming and erase operations. Flash Read Protection The user code within Flash memory is protected from external access. Programming the Flash Read Protect option bit prevents reading of user code by the OCD or by using the PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 253 Flash Controller Bypass Mode. For more information, see the Option Bit chapter on page 260 and the On-Chip Debugger chapter on page 266. Flash Write/Erase Protection Z16FMC Series MCUs provide several levels of protection against accidental program and erasure of Flash memory contents. This protection is provided by the Flash Controller unlock mechanism, the Flash Sector Protect Register and the Flash Write Protect option bit. Flash Controller Unlock Mechanism At Reset, the Flash Controller locks to prevent accidental program or erasure of Flash memory. To program or erase Flash memory, the Flash controller must be unlocked. After unlocking the Flash Controller, the Flash is programmed or erased. Any value written by user code to the Flash Command Register or Flash Page Select Register out of sequence locks the Flash Controller. Observe the following steps to unlock the Flash Controller from user code: 1. Write the page to be programmed or erased to the Flash Page Select Register. 2. Write the first unlock command 73h to the Flash Command Register. 3. Write the second unlock command 8Ch to the Flash Command Register. Flash Sector Protection The Flash Sector Protect Register is configured to prevent sectors from being programmed or erased. After a sector is protected, it cannot be unprotected by user code. The Flash Sector Protect Register is cleared after reset and any previously written protection values will be lost. User code must write this register in their initialization routine if they want to enable sector protection. When user code writes the Flash Sector Protect Register, bits are set to 1 only. Thus, sectors are protected, but not unprotected, using register write operations. Flash Write Protection Option Bit The Flash Write Protect option bit is enabled to block all program and erase operations from user code. For detailed information, see the Option Bit chapter on page 260. Programming When the Flash Controller is unlocked, word writes to Program memory from user code programs a word into the Flash if the address is located in the unlocked page. An erased Flash word contains all ones (FFFFh). The programming operation is used to change bits from one to zero. To change a Flash bit (or multiple bits) from zero to one requires a Page Erase or Mass Erase operation. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 254 The Flash must be programmed one word (16 bits) at a time. If a byte (8-bit) write to Flash memory occurs, the Flash controller waits until the other byte within the word is written before beginning the programming operation. While the Flash Controller programs Flash memory, Flash reads are held in wait. If the CPU is fetching instruction from Flash, the CPU idles until the programming operation is complete. Interrupts that occur when a programming operation is in progress are serviced after the programming operation is complete. To exit Programming mode and lock the Flash Controller, write 00h to the Flash Command Register. User code cannot program Flash Memory on a page that lies in a protected sector. When user code writes memory locations, only addresses located in the unlocked page are programmed. Memory writes outside of the unlocked page are ignored. Caution: Each memory location must not be programmed more than twice before an erase occurs. Observe the following steps to program the Flash from user code: 1. Write the page of memory to be programmed to the Flash Page Select Register. 2. Write the first unlock command 73h to the Flash Command Register. 3. Write the second unlock command 8Ch to the Flash Command Register. 4. Write a word to Program memory. 5. Repeat step 4 to program additional memory locations on the same page. 6. Write 00h to the Flash Command Register to lock the Flash Controller. Page Erase Flash memory is erased one page (2 KB) at a time. Page-erasing Flash memory sets all words in a page to the value FFFFh. The Flash Page Select Register identifies the page to be erased. While the Flash Controller executes the Page Erase operation, Flash reads are held in wait. Interrupts that occur when the Page Erase operation is in progress will be serviced after the Page Erase operation is complete. When the Page Erase operation is complete, the Flash Controller returns to its locked state. Only pages located in unprotected sectors are erased. The steps to perform a Page Erase operation are: 1. Write the page to be erased to the Flash Page Select Register. 2. Write the first unlock command 73h to the Flash Command Register. 3. Write the second unlock command 8Ch to the Flash Command Register. 4. Write the Page Erase command 95h to the Flash Command Register. PS028706-0813 PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 255 Mass Erase The Flash memory cannot be Mass Erased by user code. Flash Controller Bypass The Flash Controller is bypassed and the control signals for the Flash memory brought out to the GPIO pins. Bypassing the Flash Controller allows faster Programming algorithms by controlling the Flash programming signals directly. Flash Controller Bypass is recommended for large volume gang programming applications, which do not require in-circuit programming of the Flash memory. Flash Controller Behavior Using the On-Chip Debugger The following changes in behavior of the Flash Controller occur when the Flash Controller is accessed using the On-Chip Debugger: • The Flash Controller does not have to be unlocked for program and erase operations • The Flash Write Protect option bit is ignored • The Flash Sector Protect Register is ignored for programming and erase operations • Programming operations are not limited to the page selected in the Flash Page Select Register • Bit in the Flash Sector Protect Register is written to one or zero • The Flash Page Select Register is written when the Flash Controller is unlocked • The Mass Erase command is enabled Flash Control Register Definitions This section defines the features of the following Flash Control registers. Flash Command Register: see page 256 Flash Status Register: see page 256 Flash Control Register: see page 257 Flash Sector Protect Register: see page 257 Flash Page Select Register: see page 258 Flash Frequency Register: see page 259 PS028706-0813 PRELIMINARY Flash Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 256 Flash Command Register The Flash Command Register, shown in Table 143, unlocks the Flash Controller for programming and erase operations. The write-only Flash Command Register shares its address with the read-only Flash Status Register. Table 143. Flash Command Register (FCMD) Bit 7 6 5 4 Field 3 2 1 0 FCMD RESET XXH R/W W ADDR FF_E060h Bit Description [7:0] FCMD Flash Command 73h = First unlock command. 8Ch = Second unlock command. 95h = Page erase command. 63h = Mass erase command. Note: *All other commands, or any command out of sequence locks the Flash Controller. Flash Status Register The Flash Status Register, shown in Table 144, indicates the current state of the Flash Controller. This register is read at any time. The read-only Flash Status Register shares its address with the write-only Flash Command Register. Table 144. Flash Status Register (FSTAT) Bit 7 6 UNLOCK Reserved FSTAT RESET 0 0 00h R/W R R R Field ADDR Bit 5 4 3 2 1 0 FF_E060h Description [7] Unlocked UNLOCK This status bit is set when the flash controller is unlocked. 0 = Flash Controller locked. 1 = Flash Controller unlocked. PS028706-0813 PRELIMINARY Flash Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 257 Bit Description (Continued) [6] Reserved This bit is reserved and is 0. [5:0] FSTAT Flash Controller status 00_0000 = Flash Controller idle. 00_1xxx = Program operation in progress. 01_0xxx = Page erase operation in progress. 10_0xxx = Mass erase operation in progress. Flash Control Register The Flash Control Register selects how the Flash memory is accessed. Table 145. Flash Control Register (FCTL) Bit 7 Field RESET R/W 6 5 4 3 INFO Reserved 0 00h R/W R ADDR 2 1 0 FF_E061h Bit Description [7] INFO Information Area Access This bit selects access to the information area. 0 = Information Area is not selected. 1 = Information Area is selected. The Information area is mapped into the Program memory address space at addresses 000000h through 00007Fh. [6:0] Reserved These bits are reserved and must be written to zero. Flash Sector Protect Register The Flash Sector Protect Register, shown in Table 146, protects Flash memory sectors from being programmed or erased from user code. User code can only write bits in this register to 1 (bits cannot be cleared to 0 by user code). PS028706-0813 PRELIMINARY Flash Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 258 Table 146. Flash Sector Protect Register (FSECT) Bit Field 7 6 5 4 3 2 1 0 SECT7 SECT6 SECT5 SECT4 SECT3 SECT2 SECT1 SECT0 0 0 0 0 0 0 0 0 R/W1 R/W1 R/W1 R/W1 R/W1 R/W1 R/W1 R/W1 RESET R/W ADDR FF_E062h R/W1 = Register is accessible for Read operations. Register is written to 1 only (via user code). Bit Description [7:0] SECTn Sector Protect 0 = Sector n is programmed or erased from user code. 1 = Sector n is protected and cannot be programmed or erased from user code. Note: *User code write bits from 0 to 1 only. Flash Page Select Register The Flash Page Select (FPAGE) Register, shown in Table 147, selects one of the 64 available Flash memory pages to be erased or programmed. Each Flash Page contains 2048 words of Flash memory. During a Page Erase operation, all Flash memory locations within the page will be erased to FFFFh. Table 147. Flash Page Select Register (FPAGE) Bit 15 14 Field RESET R/W 13 12 11 10 9 8 7 6 5 4 3 2 1 Reserved PAGE Reserved 00h 00h 0h R R/W R ADDR 0 FF_E064-FF_E065h Bit Description [15:9] Reserved These bits are reserved and are 0. [8:3] PAGE Page Select This 6-bit field selects the Flash memory page for Programming and Page Erase operations. Program Memory Address[16:11] = FPAGE[8:3] = PAGE[5:0]. [2:0] Reserved These bits are reserved and are 0. PS028706-0813 PRELIMINARY Flash Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 259 Flash Frequency Register The Flash Frequency Register, shown in Table 148, sets the time for Flash program and erase operations. The 16-bit Flash Frequency Register must be written with the system clock frequency in kiloHertz. The Flash Frequency value is calculated using the following equation: FFREQ[15:0] System Clock Frequency (Hz) = -----------------------------------------------------------------1000 Caution: Flash programming and erasure is not supported for system clock frequencies below 32 kHz, above 20 MHz, or outside of the valid operating frequency range for the device. The Flash Frequency Register must be loaded with the correct value to ensure proper program and erase times. Table 148. Flash Frequency Register (FFREQ) Bits 15 14 Field 13 12 11 10 9 8 7 6 5 4 3 2 1 0 FFREQ RESET 0000h R/W R/W Addr FF_E066–FF_E067h Bit Description [15:0] FFREQ Flash Frequency This value is used to time Flash program and erase operations. PS028706-0813 PRELIMINARY Flash Control Register Definitions Z16FMC Series Motor Control MCUs Product Specification 260 Option Bit Option bits allow user configuration of certain aspects of the Z16FMC operation. The feature configuration data is stored in the Program memory and read during Reset. The features available for control using the option bits are: • WDT time-out response selection – interrupt or Reset • WDT enabled at Reset • The ability to prevent unwanted read access to user code in Program memory • The ability to prevent accidental programming and erasure of the user code in Program memory • Voltage Brown-Out (VBO) configuration – always enabled or disabled during STOP Mode to reduce STOP Mode power consumption • Oscillator mode selection for high, medium and low power crystal oscillators, or external RC oscillator • PWM pin set up for motor control application Option Bit Configuration By Reset Each time the option bits are programmed or erased, the device must be Reset for the change to take place. During any reset operation (System Reset, Short Reset, or StopMode Recovery), the option bits are automatically read from the Program memory and written to Option Configuration registers. The Option Configuration registers control operation of the device. Option Bit control registers are loaded before the device exits Reset and the CPU begins code execution. The Option Configuration registers are not part of the Register file and are not accessible for read or write access. Option Bit Address Space The first four bytes of Program Memory at addresses 0000h through 0003h, shown in Table 150, are reserved for the user option bits. These bytes are used to configure user specific options. You can change the option bits to meet the application needs. Program Memory Address 0000h Option bits in this space are altered to change the chip configuration at reset. PS028706-0813 PRELIMINARY Option Bit Z16FMC Series Motor Control MCUs Product Specification 261 Table 149. Option Bit At Program Memory Address 0000h Bit Field RESET R/W 7 6 OSC_SEL[1:0] 5 4 WDT_RES WDT_AO 3 2 VBO_AO DBGUART 1 0 FWP RP U U U U U U U U R/W R/W R/W R/W R/W R/W R/W R/W ADDR Program Memory 0000h Note: U = Unchanged by Reset; R/W = Read/Write. Bit Description [7:6] OSC_SEL Oscillator Mode Selection 00 = On-chip oscillator configured for use with external RC networks ( --> 0000_0000 RevID[15:8] RevID[7:0] CRC[0:7] Read Status Register. The Read Status Register command returns the contents of the OCDSTAT Register. DBG status[7:0] DBG --> CRC[0:7] Read Control Register. The Read Control Register command returns the contents of the OCDCTL Register. DBG OCDCTL[7:0] DBG --> CRC[0:7] Write Control Register. The Write Control Register command writes data to the OCDCTL Register. DBG ->> ->> ->> --> 0000_0100 regdata[31:24] regdata[23:16] regdata[15:8] regdata[7:0] CRC[0:7] PRELIMINARY Operation Z16FMC Series Motor Control MCUs Product Specification 278 Write Registers. The Write registers command writes data to CPU registers R15 through R0. DBG DBG DBG DBG DBG DBG
Z16FMC64AG20EG 价格&库存

很抱歉,暂时无法提供与“Z16FMC64AG20EG”相匹配的价格&库存,您可以联系我们找货

免费人工找货