1<?xml version="1.0" encoding="utf-8"?> 2 3 4<!--**************************************************************************** 5* \file mcwdt.cypersonality 6* \version 3.0 7* 8* \brief 9* Multi-counter watchdog personality description file. It supports CAT1A and 10* CAT1B devices. 11* 12******************************************************************************** 13* \copyright 14* Copyright 2018-2022 Cypress Semiconductor Corporation 15* SPDX-License-Identifier: Apache-2.0 16* 17* Licensed under the Apache License, Version 2.0 (the "License"); 18* you may not use this file except in compliance with the License. 19* You may obtain a copy of the License at 20* 21* http://www.apache.org/licenses/LICENSE-2.0 22* 23* Unless required by applicable law or agreed to in writing, software 24* distributed under the License is distributed on an "AS IS" BASIS, 25* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 26* See the License for the specific language governing permissions and 27* limitations under the License. 28*****************************************************************************--> 29 30<Personality id="mcwdt" name="Multi-counter watchdog" version="3.0" xmlns="http://cypress.com/xsd/cyhwpersonality_v7"> 31 <Dependencies> 32 <IpBlock name="mxs40srss,mxs40ssrss,mxs22srss" /> 33 <Resource name="srss\.mcwdt" /> 34 </Dependencies> 35 <ExposedMembers /> 36 <Parameters> 37 <!-- PDL documentation --> 38 <ParamDoc id="pdlDoc" name="Configuration Help" group="Overview" default="file:///`${cy_libs_path()}`/docs/pdl_api_reference_manual/html/group__group__mcwdt.html" linkText="Open MCWDT Documentation" visible="true" desc="Opens the Peripheral Driver Library Documentation" /> 39 40 <!--Counter0--> 41 <ParamChoice id="C0ClearOnMatch" name="Clear on Match" group="Counter0" default="FREE_RUNNING" visible="true" editable="true" desc="Controls whether the counter is free running, with a period of 65,536 counts, or clear on match, where the period equals the match value + 1."> 42 <Entry name="Free Running" value="FREE_RUNNING" visible="true" /> 43 <Entry name="Clear on Match" value="CLEAR_ON_MATCH" visible="true" /> 44 </ParamChoice> 45 <ParamRange id="C0Match" name="Match" group="Counter0" default="32768" min="`${(C0ClearOnMatch eq CLEAR_ON_MATCH) ? 1 : 0}`" max="65535" resolution="1" visible="true" editable="true" desc="Counter match comparison value, for interrupt or watchdog timeout. The frequency is the interrupt frequency in interrupt action mode. The period is the inverse of the frequency." /> 46 <ParamChoice id="C0Mode" name="Mode" group="Counter0" default="CY_MCWDT_MODE_NONE" visible="true" editable="true" desc="Counter 0 mode."> 47 <Entry name="Interrupt" value="CY_MCWDT_MODE_INT" visible="true" /> 48 <Entry name="Watchdog Reset" value="CY_MCWDT_MODE_RESET" visible="true" /> 49 <Entry name="Three Interrupts then Watchdog Reset" value="CY_MCWDT_MODE_INT_RESET" visible="true" /> 50 <Entry name="No Action" value="CY_MCWDT_MODE_NONE" visible="true" /> 51 </ParamChoice> 52 53 <!--Counter1--> 54 <ParamChoice id="C1ClearOnMatch" name="Clear on Match" group="Counter1" default="FREE_RUNNING" visible="true" editable="true" desc="Controls whether the counter is Free Running, with a period of 65,536 counts, or clear on match, where the period equals the match value + 1."> 55 <Entry name="Free Running" value="FREE_RUNNING" visible="true" /> 56 <Entry name="Clear on Match" value="CLEAR_ON_MATCH" visible="true" /> 57 </ParamChoice> 58 <ParamRange id="C1Match" name="Match" group="Counter1" default="32768" min="`${(C1ClearOnMatch eq CLEAR_ON_MATCH) ? 1 : 0}`" max="65535" resolution="1" visible="true" editable="true" desc="Counter match comparison value, for interrupt or watchdog timeout. The frequency is the interrupt frequency in interrupt action mode. The period is the inverse of the frequency." /> 59 <ParamChoice id="C1Mode" name="Mode" group="Counter1" default="CY_MCWDT_MODE_NONE" visible="true" editable="true" desc="Counter 1 mode."> 60 <Entry name="Interrupt" value="CY_MCWDT_MODE_INT" visible="true" /> 61 <Entry name="Watchdog Reset" value="CY_MCWDT_MODE_RESET" visible="true" /> 62 <Entry name="Three Interrupts then Watchdog Reset" value="CY_MCWDT_MODE_INT_RESET" visible="true" /> 63 <Entry name="No Action" value="CY_MCWDT_MODE_NONE" visible="true" /> 64 </ParamChoice> 65 66 <!--Counter2--> 67 <ParamChoice id="C2Mode" name="Mode" group="Counter2" default="CY_MCWDT_MODE_NONE" visible="true" editable="true" desc="Counter 2 mode."> 68 <Entry name="Interrupt" value="CY_MCWDT_MODE_INT" visible="true" /> 69 <Entry name="No Action" value="CY_MCWDT_MODE_NONE" visible="true" /> 70 </ParamChoice> 71 <ParamRange id="C2Period" name="Period / Toggle Bit" group="Counter2" default="16" min="0" max="31" resolution="1" visible="true" editable="true" desc="Counter 2 period (toggle bit) select. The 32 values are calculated based on the counter clock frequency divided for each of the 32 bits in the counter." /> 72 <ParamBool id="CascadeC0C1" name="Cascade C0C1" group="Cascade" default="false" visible="true" editable="true" desc="Controls whether Counter1 is clocked by LFCLK or from Counter0." /> 73 <ParamBool id="CascadeC1C2" name="Cascade C1C2" group="Cascade" default="false" visible="true" editable="true" desc="Controls whether Counter2 is clocked by LFCLK or from Counter1 cascade." /> 74 75 <!--Window Operation--> 76 <ParamChoice id="C0LowerLimitMode" name="C0 Lowerlimit Mode" group="Window Operation" default="CY_MCWDT_LOWER_LIMIT_MODE_NOTHING" visible="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" editable="true" desc="Counter0 Lowerlimit Mode."> 77 <Entry name="No Action" value="CY_MCWDT_LOWER_LIMIT_MODE_NOTHING" visible="true" /> 78 <Entry name="Interrupt" value="CY_MCWDT_LOWER_LIMIT_MODE_INT" visible="true" /> 79 <Entry name="Reset" value="CY_MCWDT_LOWER_LIMIT_MODE_RESET" visible="true" /> 80 </ParamChoice> 81 <ParamRange id="C0LowerLimit" name="C0 Lowerlimit" group="Window Operation" default="0" min="0" max="65535" resolution="1" visible="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" editable="true" desc="C0 Lowerlimit." /> 82 83 <ParamChoice id="C1LowerLimitMode" name="C1 Lowerlimit Mode" group="Window Operation" default="CY_MCWDT_LOWER_LIMIT_MODE_NOTHING" visible="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" editable="true" desc="Counter1 Lowerlimit Mode."> 84 <Entry name="No Action" value="CY_MCWDT_LOWER_LIMIT_MODE_NOTHING" visible="true" /> 85 <Entry name="Interrupt" value="CY_MCWDT_LOWER_LIMIT_MODE_INT" visible="true" /> 86 <Entry name="Reset" value="CY_MCWDT_LOWER_LIMIT_MODE_RESET" visible="true" /> 87 </ParamChoice> 88 <ParamRange id="C1LowerLimit" name="C1 Lowerlimit" group="Window Operation" default="0" min="0" max="65535" resolution="1" visible="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" editable="true" desc="C1 Lowerlimit." /> 89 90 <!-- MCWDT instance number --> 91 <ParamString id="InstNumber" name="InstNumber" group="Internal" default="`${getInstNumber("mcwdt")}`" visible="false" editable="false" desc="MCWDT Instance name number." /> 92 93 <!--Config--> 94 <ParamBool id="inFlash" name="Store Config in Flash" group="Advanced" default="true" visible="true" editable="true" desc="Controls whether the configuration structure is stored in flash (const, true) or SRAM (not const, false)." /> 95 </Parameters> 96 <ConfigFirmware> 97 <ConfigInclude value="cy_mcwdt.h" include="true" /> 98 <ConfigInclude value="cyhal_hwmgr.h" include="true" guard="defined (CY_USING_HAL)" /> 99 100 <ConfigDefine name="`${INST_NAME}`_HW" value="MCWDT_STRUCT`${InstNumber}`" public="true" include="true" /> 101 <ConfigDefine name="`${INST_NAME}`_IRQ" value="srss_interrupt_mcwdt_`${InstNumber}`_IRQn" public="true" include="`${(C0Mode eq CY_MCWDT_MODE_INT) || (C0Mode eq CY_MCWDT_MODE_INT_RESET) || (C1Mode eq CY_MCWDT_MODE_INT) || (C1Mode eq CY_MCWDT_MODE_INT_RESET) || (C2Mode eq CY_MCWDT_MODE_INT)}`" /> 102 <ConfigStruct name="`${INST_NAME . "_config"}`" type="cy_stc_mcwdt_config_t" const="`${inFlash}`" public="true" include="true" > 103 <Member name="c0Match" value="`${C0Match}`U" /> 104 <Member name="c1Match" value="`${C1Match}`U" /> 105 <Member name="c0Mode" value="`${C0Mode}`" /> 106 <Member name="c1Mode" value="`${C1Mode}`" /> 107 <Member name="c2ToggleBit" value="`${C2Period}`U" /> 108 <Member name="c2Mode" value="`${C2Mode}`" /> 109 <Member name="c0ClearOnMatch" value="`${(C0ClearOnMatch eq CLEAR_ON_MATCH) ? "true" : "false"}`" /> 110 <Member name="c1ClearOnMatch" value="`${(C1ClearOnMatch eq CLEAR_ON_MATCH) ? "true" : "false"}`" /> 111 <Member name="c0c1Cascade" value="`${CascadeC0C1}`" /> 112 <Member name="c1c2Cascade" value="`${CascadeC1C2}`" /> 113 <Member name="c0LowerLimitMode" value="`${C0LowerLimitMode}`" include="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" /> 114 <Member name="c0LowerLimit" value="`${C0LowerLimit}`U" include="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" /> 115 <Member name="c1LowerLimitMode" value="`${C1LowerLimitMode}`" include="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" /> 116 <Member name="c1LowerLimit" value="`${C1LowerLimit}`U" include="`${("mxs40ssrss" eq getIpBlockName()) || ("mxs22srss" eq getIpBlockName())}`" /> 117 </ConfigStruct> 118 119 <ConfigStruct name="`${INST_NAME}`_obj" type="cyhal_resource_inst_t" const="true" public="true" include="true" guard="defined (CY_USING_HAL)"> 120 <Member name="type" value="CYHAL_RSC_LPTIMER" /> 121 <Member name="block_num" value="`${getInstNumber("mcwdt")}`U" /> 122 <Member name="channel_num" value="0U" /> 123 </ConfigStruct> 124 125 <ConfigInstruction value="cyhal_hwmgr_reserve(&`${INST_NAME}`_obj);" include="true" guard="defined (CY_USING_HAL)" /> 126 </ConfigFirmware> 127</Personality> 128