1<?xml version="1.0" encoding="utf-8"?>
2
3
4<!--****************************************************************************
5* \file csd.cypersonality
6* \version 3.0
7*
8* \brief
9* CSD personality description file. Supports CAT1A family of devices.
10*
11********************************************************************************
12* \copyright
13* (c) (2018-2022), Cypress Semiconductor Corporation (an Infineon company) or
14* an affiliate of Cypress Semiconductor Corporation.
15*
16* SPDX-License-Identifier: Apache-2.0
17*
18* Licensed under the Apache License, Version 2.0 (the "License");
19* you may not use this file except in compliance with the License.
20* You may obtain a copy of the License at
21*
22*     http://www.apache.org/licenses/LICENSE-2.0
23*
24* Unless required by applicable law or agreed to in writing, software
25* distributed under the License is distributed on an "AS IS" BASIS,
26* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27* See the License for the specific language governing permissions and
28* limitations under the License.
29*****************************************************************************-->
30
31<Personality id="mxs40csd" name="CSD" version="3.0" xmlns="http://cypress.com/xsd/cyhwpersonality_v7">
32  <Dependencies>
33    <IpBlock name="mxcsdv2" />
34    <Resource name="csd\.csd" />
35  </Dependencies>
36  <ExposedMembers>
37    <ExposedMember key="suppressCodeGen" paramId="suppressAmuxCodeGen" />
38    <ExposedMember key="CapSenseEnable" paramId="CapSenseEnable" />
39  </ExposedMembers>
40  <Parameters>
41    <!-- PDL documentation -->
42    <ParamDoc id="pdlDoc"
43            name="Configuration Help"
44            group="Overview"
45            default="file:///`${cy_libs_path()}`/docs/pdl_api_reference_manual/html/group__group__csd.html"
46            linkText="Open CSD Documentation"
47            visible="true"
48            desc="Opens the Peripheral Driver Library Documentation" />
49
50    <ParamDoc id="capSenseDoc"
51            name="CAPSENSE™ Middleware"
52            group="Overview"
53            default="https://infineon.github.io/capsense/capsense_api_reference_manual/html/index.html"
54            linkText="Open CAPSENSE™ Documentation"
55            visible="true"
56            desc="Opens the CAPSENSE™ Middleware Library Documentation" />
57
58    <ParamDoc id="csdAdcDoc"
59            name="CSDADC Middleware"
60            group="Overview"
61            default="https://infineon.github.io/csdadc/csdadc_api_reference_manual/html/index.html"
62            linkText="Open CSDADC Documentation"
63            visible="true"
64            desc="Opens the CSDADC Middleware Library Documentation" />
65
66    <ParamDoc id="csdIdacDoc"
67            name="CSDIDAC Middleware"
68            group="Overview"
69            default="https://infineon.github.io/csdidac/csdidac_api_reference_manual/html/index.html"
70            linkText="Open CSDIDAC Documentation"
71            visible="true"
72            desc="Opens the CSDIDAC Middleware Library Documentation" />
73
74    <!-- ExposedMember -->
75    <ParamBool id="suppressAmuxCodeGen" name="Suppress Amuxbus Configuration Code Generation" group="Internal" default="true"
76            visible="false" editable="false" desc="Prevents pins connected to this personality to generate configuration code" />
77
78    <!-- IP Block property CAPSENSE™ capable-->
79    <ParamBool id="capSenseCapable" name="CAPSENSE™ capable" group="Internal" default="`${hasBlock(&quot;csd[0].capsense[0]&quot;)}`"
80            visible="false" editable="false" desc="This parameter specifies if CSD is CAPSENSE™ capable" />
81
82    <!-- Inputs -->
83    <ParamSignal port="clock[0]" name="Clock" group="Inputs" visible="true" desc="Peripheral clock divider" canBeEmpty="false" />
84
85    <!-- VDDA Voltage query -->
86    <ParamBool id="isPowerEnabled" name="Is Power Enabled" group="System" default="`${isBlockUsed(&quot;srss[0].power[0]&quot;)}`"
87            visible="false" editable="false" desc="" />
88    <ParamRange id="vddaMv" name="VDDA Voltage (mV)" group="System"
89            default="`${isPowerEnabled ? getExposedMember(&quot;srss[0].power[0]&quot;, &quot;vddaMv&quot;) : 3300}`"
90            min="0" max="5000" resolution="1" visible="false" editable="false" desc="VDDA voltage in millivolts" />
91
92    <!-- Peripheral / CPU clock query -->
93    <ParamString id="pclk" name="PCLK" group="System" default="`${getBlockFromSignal(&quot;clock[0]&quot;)}`"
94            visible="false" editable="false" desc="Connected peripheral clock divider (PCLK)" />
95    <ParamBool id="pclkOk" name="PCLK Valid" group="System" default="`${hasConnection(&quot;clock&quot;, 0) &amp;&amp; isBlockUsed(pclk)}`"
96            visible="false" editable="false" desc="Checks whether there is a PCLK connected and enabled" />
97    <ParamRange id="pclkIndex" name="PCLK Index" group="System" default="`${pclkOk ? getExposedMember(pclk, &quot;number&quot;) : 0}`"
98            min="0" max="63" resolution="1" visible="false" editable="false" desc="" />
99    <ParamString id="pclkType" name="PCLK Type" group="System"
100            default="`${pclkOk ? getExposedMember(pclk, &quot;type&quot;) : &quot;CY_SYSCLK_DIV_8_BIT&quot;}`" visible="false" editable="false" desc="" />
101    <ParamString id="pclkDst" name="PCLK Destination" group="System" default="PCLK_CSD_CLOCK" visible="false" editable="false" desc="" />
102    <ParamString id="periClkRsc" name="CLK_PERI Resource" group="System" default="srss[0].clock[0].periclk[0]"
103            visible="false" editable="false" desc="" />
104    <ParamBool id="periClkOk" name="CLK_PERI Valid" group="System" default="`${isBlockUsed(periClkRsc)}`"
105            visible="false" editable="false" desc="Checks whether CLK_PERI is enabled" />
106    <ParamRange id="periClkFreq" name="CLK_PERI Frequency (Hz)" group="System"
107            default="`${periClkOk ? getExposedMember(periClkRsc, &quot;frequency&quot;) : 0}`" min="0" max="200000000" resolution="1"
108            visible="false" editable="false" desc="Peripheral clock frequency in Hz" />
109    <ParamString id="cpuClkRsc" name="CLK_HF0 Resource" group="System" default="srss[0].clock[0].hfclk[0]" visible="false" editable="false" desc="" />
110    <ParamBool id="cpuClkOk" name="CLK_HF0 Valid" group="System" default="`${isBlockUsed(cpuClkRsc)}`"
111            visible="false" editable="false" desc="Checks whether CLK_HF0 is enabled" />
112    <ParamRange id="cpuClkFreq" name="CLK_HF0 Frequency (Hz)" group="System"
113            default="`${cpuClkOk ? getExposedMember(cpuClkRsc, &quot;frequency&quot;) : 0}`" min="0" max="200000000" resolution="1"
114            visible="false" editable="false" desc="CPU clock frequency in Hz" />
115
116    <!-- CAPSENSE™ -->
117    <ParamBool id="CapSenseEnable" name="Enable CAPSENSE™" group="CAPSENSE™" default="`${capSenseCapable}`" visible="`${capSenseCapable}`" editable="`${capSenseCapable}`"
118            desc="Enables CAPSENSE™ function of CSD hardware block" />
119    <ParamChoice id="CapSenseCore" name="Target CPU core" group="CAPSENSE™" default="4" visible="true" editable="true" desc="Configures the target CPU core for CAPSENSE™ middleware" >
120      <Entry name="Cortex M0+" value="0" visible="true" />
121      <Entry name="Cortex M4" value="4" visible="true" />
122    </ParamChoice>
123    <ParamRange id="SensorCount" name="Sensor count" group="CAPSENSE™" default="0" min="0" max="256" resolution="1" visible="false" editable="true" desc="Sensor count" />
124    <ParamRange id="CapacitorCount" name="Capacitor count" group="CAPSENSE™" default="0" min="0" max="256" resolution="1" visible="false" editable="true" desc="Capacitor count" />
125    <Repeat count="256">
126      <ParamString id="SensorName$idx" name="SensorName$idx" group="Internal" default="" visible="false" editable="`${$idx &lt; SensorCount}`" desc="" />
127    </Repeat>
128
129    <!-- External tools -->
130    <ParamString id="cfgFileName" name="cfgFileName" group="External Tools" default="design.cycapsense" visible="false" editable="false" desc="" />
131    <ParamString id="cfgFilePath" name="cfgFilePath" group="External Tools" default="`${cy_design_path() . &quot;/&quot; . cfgFileName}`" visible="false" editable="false" desc="" />
132    <ParamCustom id="CapSenseConfigurator" name="CAPSENSE™ Configurator" group="External Tools" default="0"
133            path="`${cy_tools_path(&quot;capsense-configurator&quot;) . &quot;/capsense-configurator&quot;}`"
134            modal="true" visible="`${CapSenseEnable}`" editable="true" desc="Launch CAPSENSE™ Configurator">
135      <Arg value="`${&quot;--config=&quot; . cfgFilePath}`" />
136      <Arg value="`${&quot;--output-dir=&quot; . cy_codegen_path()}`" />
137      <Arg value="`${&quot;--design=&quot; . cy_design_file()}`" />
138      <Arg value="`${&quot;--library=&quot; . cy_libs_file()}`" />
139    </ParamCustom>
140    <ParamCustom id="CapSenseTuner" name="CAPSENSE™ Tuner" group="External Tools" default="0" path="`${cy_tools_path(&quot;capsense-configurator&quot;) . &quot;/capsense-tuner&quot;}`" modal="false" visible="`${CapSenseEnable}`" editable="true" desc="Launch CAPSENSE™ Tuner">
141      <Arg value="`${&quot;--config=&quot; . cfgFilePath}`" />
142      <Arg value="`${&quot;--output-dir=&quot; . cy_codegen_path()}`" />
143    </ParamCustom>
144
145    <!-- CSDADC -->
146    <ParamBool id="CsdAdcEnable" name="Enable CSDADC" group="CSDADC" default="`${!capSenseCapable}`" visible="true" editable="true"
147            desc="Enables the CSDADC function of the CSD hardware block. The CSD ADC middleware must be enabled in the Middleware Selector" />
148    <ParamRange id="numChannels" name="Number of Input Channels" group="CSDADC" default="1" min="1" max="32" resolution="1"
149            visible="`${CsdAdcEnable}`" editable="true" desc="The number of channels to scan. After changing the number, check the pins assignments of all enabled CSD features (CAPSENSE™, CSDADC, CSDIDAC)." />
150    <ParamChoice id="resolution" name="Resolution" group="CSDADC" default="CY_CSDADC_RESOLUTION_10BIT" visible="`${CsdAdcEnable}`" editable="true"
151            desc="Configures the CSDADC resolution" >
152      <Entry name="8 bit" value="CY_CSDADC_RESOLUTION_8BIT" visible="true" />
153      <Entry name="10 bit" value="CY_CSDADC_RESOLUTION_10BIT" visible="true" />
154    </ParamChoice>
155    <ParamChoice id="range" name="Measurement Range" group="CSDADC" default="CY_CSDADC_RANGE_VDDA"
156            visible="`${CsdAdcEnable}`" editable="true" desc="Configures the CSDADC measurement range" >
157      <Entry name="GND to VREF" value="CY_CSDADC_RANGE_VREF" visible="true" />
158      <Entry name="GND to VDDA" value="CY_CSDADC_RANGE_VDDA" visible="true" />
159    </ParamChoice>
160    <ParamRange id="acqTime" name="Acquisition Time (us)" group="CSDADC" default="10" min="1" max="100" resolution="1"
161            visible="`${CsdAdcEnable}`" editable="true" desc="Sample acquisition time interval in microseconds" />
162    <ParamRange id="autoCalibrInterval" name="Calibration Interval for Continuous Mode (number of scans) " group="CSDADC" default="30"
163            min="0" max="120" resolution="1" visible="false" editable="true"
164            desc="Run-time auto-calibration interval. If set to 0, auto-calibration is not performed" />
165    <ParamRange id="vref" name="VREF Reference Voltage (mV)" group="CSDADC" default="-1" min="-1" max="`${(vddaMv - 600)}`" resolution="1"
166            visible="`${CsdAdcEnable}`" editable="true"
167            desc="Sets the Vref value in mV. Set -1 to choose Vref automatically depending on VDDA.
168            If the Vref is set manually, it should be in a range from 800 mV to (VDDA - 600) mV for the SRSS Vref source." />
169    <ParamRange id="operClkDivider" name="Operation Clock Divider" group="CSDADC" default="`${(periClkOk ? (ceil(periClkFreq / 50000000.0)) : 1)}`"
170            min="1" max="255" resolution="1" visible="`${CsdAdcEnable}`" editable="true"
171            desc="CSD HW block clock divider. It will overwrite the specified peripheral clock divider that is set on the Peripheral-Clocks tab." />
172    <ParamRange id="csdClkFreq" name="CSD HW Block Input Frequency (Hz)" group="CSDADC"
173            default="`${((periClkOk &amp;&amp; CsdAdcEnable) ? ((getExposedMember(periClkRsc, &quot;frequency&quot;))/operClkDivider) : 1)}`"
174            min="1" max="50000000" resolution="1" visible="`${CsdAdcEnable}`" editable="false"
175            desc="CSD HW Block Input Frequency in Hz. For reliable block operation, the frequency should not exceed 50 MHz. " />
176    <ParamRange id="azTime" name="Auto-Zero Time (us)" group="CSDADC" default="5" min="1" max="20" resolution="1"
177            visible="`${CsdAdcEnable}`" editable="true" desc="Time interval of comparator auto-zero in microseconds" />
178    <ParamRange id="csdInitTime" name="Hardware Initialization Time (us)" group="CSDADC" default="25" min="0" max="100" resolution="1"
179            visible="`${CsdAdcEnable}`" editable="true" desc="CSD HW block initialization time in us for CSDADC MW" />
180    <ParamBool id="inFlash" name="Store the CSDADC Configuration in Flash" group="CSDADC" default="true" visible="`${CsdAdcEnable}`" editable="true"
181            desc="Controls whether the CSDADC configuration structure is stored in flash (const, true) or SRAM (not const, false)." />
182
183    <!-- CSDIDAC -->
184    <ParamBool id="CsdIdacEnable" name="Enable CSDIDAC" group="CSDIDAC" default="false" visible="true" editable="true"
185            desc="Enables the CSDIDAC function of the CSD hardware block. The CSD IDAC middleware must be enabled in the Middleware Selector" />
186    <ParamChoice id="CsdIdacAselect" name="IDAC A Channel" group="CSDIDAC" default="CY_CSDIDAC_GPIO"
187            visible="`${CsdIdacEnable}`" editable="true" desc="Configures the IDAC A channel" >
188      <Entry name="Disabled" value="CY_CSDIDAC_DISABLED" visible="true" />
189      <Entry name="GPIO" value="CY_CSDIDAC_GPIO" visible="true" />
190      <Entry name="AMuxBus A" value="CY_CSDIDAC_AMUX" visible="true" />
191      <Entry name="Joined with IDAC B" value="CY_CSDIDAC_JOIN" visible="true" />
192    </ParamChoice>
193    <ParamChoice id="CsdIdacBselect" name="IDAC B Channel" group="CSDIDAC" default="CY_CSDIDAC_DISABLED"
194            visible="`${CsdIdacEnable}`" editable="true" desc="Configures the IDAC B channel" >
195      <Entry name="Disabled" value="CY_CSDIDAC_DISABLED" visible="true" />
196      <Entry name="GPIO" value="CY_CSDIDAC_GPIO" visible="true" />
197      <Entry name="AMuxBus B" value="CY_CSDIDAC_AMUX" visible="true" />
198      <Entry name="Joined with IDAC A" value="CY_CSDIDAC_JOIN" visible="true" />
199    </ParamChoice>
200    <ParamString id="CsdIdacAEnable" name="Enable Idac A" group="CSDIDACA" default="`${CsdIdacAselect eq CY_CSDIDAC_DISABLED ? false : true}`"
201            visible="false" editable="false" desc="An internal variable for the IDAC A enabling" />
202    <ParamString id="CsdIdacBEnable" name="Enable Idac B" group="CSDIDACB" default="`${CsdIdacBselect eq CY_CSDIDAC_DISABLED ? false : true}`"
203            visible="false" editable="false" desc="An internal variable for the IDAC B enabling" />
204    <ParamString id="IdacAbusOnly" name="Enable Idac A channel only on the AmuxBusA" group="CSDIDACA"
205            default="`${(CsdIdacAselect eq CY_CSDIDAC_AMUX) || (CsdIdacAselect eq CY_CSDIDAC_JOIN) ? true : false}`" visible="false" editable="false"
206            desc="Enables an Idac A output current connection only on the AmuxBusA" />
207    <ParamString id="IdacBbusOnly" name="Enable Idac B channel only on the AmuxBusB" group="CSDIDACB"
208            default="`${(CsdIdacBselect eq CY_CSDIDAC_AMUX) || (CsdIdacBselect eq CY_CSDIDAC_JOIN) ? true : false}`" visible="false" editable="false"
209            desc="Enables an Idac B output current connection only on the AmuxBusB" />
210    <ParamRange id="csdIdacInitTime" name="Hardware Initialization Time (us)" group="CSDIDAC" default="25" min="0" max="100" resolution="1"
211            visible="`${CsdIdacEnable}`" editable="true" desc="CSD HW block initialization time in us for CSDIDAC MW" />
212    <ParamBool id="idacInFlash" name="Store CSDIDAC Configuration in Flash" group="CSDIDAC" default="true" visible="`${CsdIdacEnable}`" editable="true"
213            desc="Controls whether the CSDIDAC configuration structure is stored in flash (const, true) or SRAM (not const, false)." />
214
215    <!-- Common MUX for sensors, ADC inputs and IDAC outputs -->
216    <ParamMux id="sense" name="Sensors" group="Sensors" armSelectGroup="CSD`${getInstNumber(&quot;csd&quot;)}`" allowedIp="^(csd|ioss)">
217        <Common port="amuxbus_a[0]" />
218        <Common port="amuxbus_b[0]" />
219        <Arm name="`${SensorName$idx}`"
220        desc="Pin connection for sense[$idx] signal"
221        visible="`${(CapSenseEnable &amp;&amp; ($idx &lt; SensorCount))}`"
222        canBeEmpty="`${!(CapSenseEnable &amp;&amp; ($idx &lt; SensorCount))}`"
223        group="`${($idx &lt; CapacitorCount) ? &quot;CAPSENSE Capacitors&quot; : &quot;CAPSENSE Sensors&quot;}`"
224                repeatCount="256"/>
225    </ParamMux>
226
227    <ParamMux id="adcChannel" name="Channels" group="Sensors" armSelectGroup="CSD`${getInstNumber(&quot;csd&quot;)}`" allowedIp="^(csd|ioss)">
228        <Common port="amuxbus_a[0]" />
229        <Common port="amuxbus_b[0]" />
230        <Arm name="Channel[$idx]"
231        desc="Pin connection for CSDADC channel[$idx]"
232        visible="`${(CsdAdcEnable &amp;&amp; ($idx &lt; numChannels))}`"
233        canBeEmpty="`${!(CsdAdcEnable &amp;&amp; ($idx &lt; numChannels))}`"
234        group="CSDADC Channels" repeatCount="32"/>
235    </ParamMux>
236
237    <ParamMux id="idacA" name="IdacA" group="Sensors" armSelectGroup="CSD`${getInstNumber(&quot;csd&quot;)}`" allowedIp="^(csd|ioss)">
238        <Common port="amuxbus_a[0]" />
239        <Common port="amuxbus_b[0]" />
240        <Arm name="IdacAchannel"
241        desc="Pin connection for CSD IdacA Channel"
242        visible="`${CsdIdacEnable &amp;&amp; CsdIdacAEnable &amp;&amp; !IdacAbusOnly}`"
243        canBeEmpty="`${!(CsdIdacEnable &amp;&amp; CsdIdacAEnable &amp;&amp; !IdacAbusOnly)}`"
244        group="CSDIDAC Channels" repeatCount="1"/>
245    </ParamMux>
246
247    <ParamMux id="idacB" name="IdacB" group="Sensors" armSelectGroup="CSD`${getInstNumber(&quot;csd&quot;)}`" allowedIp="^(csd|ioss)">
248        <Common port="amuxbus_a[0]" />
249        <Common port="amuxbus_b[0]" />
250        <Arm name="IdacBchannel"
251        desc="Pin connection for CSD IdacB Channel"
252        visible="`${CsdIdacEnable &amp;&amp; CsdIdacBEnable &amp;&amp; !IdacBbusOnly}`"
253        canBeEmpty="`${!(CsdIdacEnable &amp;&amp; CsdIdacBEnable &amp;&amp; !IdacBbusOnly)}`"
254        group="CSDIDAC Channels" repeatCount="1"/>
255    </ParamMux>
256
257    <Repeat count="256">
258      <ParamString id="SensorSignal$idx" name="" group="Sensors"
259      default="`${$idx &lt; SensorCount ? getBlockFromSignalValue(getMuxArmSignal(&quot;sense&quot;, $idx)) : &quot;&quot;}`"
260      visible="false" editable="false" desc="" />
261    </Repeat>
262    <Repeat count="32">
263      <ParamString id="ChannelSignal$idx" name="" group="Sensors"
264      default="`${$idx &lt; numChannels ? getBlockFromSignalValue(getMuxArmSignal(&quot;adcChannel&quot;, $idx)) : &quot;&quot;}`"
265      visible="false" editable="false" desc="" />
266    </Repeat>
267    <ParamString id="IdacAsignal" name="" group="Sensors"
268       default="`${CsdIdacAEnable ? getBlockFromSignalValue(getMuxArmSignal(&quot;idacA&quot;, 0)) : &quot;&quot;}`"
269       visible="false" editable="false" desc="" />
270    <ParamString id="IdacBsignal" name="" group="Sensors"
271       default="`${CsdIdacBEnable ? getBlockFromSignalValue(getMuxArmSignal(&quot;idacB&quot;, 0)) : &quot;&quot;}`"
272       visible="false" editable="false" desc="" />
273
274    <!-- CSD instance number -->
275    <ParamString id="InstNumber" name="InstNumber" group="Internal" default="`${getInstNumber(&quot;csd&quot;)}`"
276    visible="false" editable="false" desc="CSD Instance name number." />
277
278  </Parameters>
279
280  <DRCs>
281    <DRC type="ERROR" text="The CLK_PERI clock is not enabled" condition="`${!periClkOk}`" >
282      <FixIt action="ENABLE_BLOCK" target="`${periClkRsc}`" value="" valid="true" />
283    </DRC>
284    <DRC type="ERROR" text="The CLK_HF0 clock is not enabled" condition="`${!cpuClkOk}`" >
285      <FixIt action="ENABLE_BLOCK" target="`${cpuClkRsc}`" value="" valid="true" />
286    </DRC>
287<!-- CSDIDAC -->
288    <DRC type="ERROR" text="At least one IDAC channel should be enabled"
289         condition="`${(CsdIdacAselect eq CY_CSDIDAC_DISABLED) &amp;&amp; (CsdIdacBselect eq CY_CSDIDAC_DISABLED) &amp;&amp; CsdIdacEnable}`"
290         paramId="CsdIdacAselect">
291    </DRC>
292    <DRC type="ERROR" text="The IDAC A channel cannot join the disabled IDAC B channel"
293         condition="`${(CsdIdacAselect eq CY_CSDIDAC_JOIN) &amp;&amp; (CsdIdacBselect eq CY_CSDIDAC_DISABLED) &amp;&amp; CsdIdacEnable}`"
294         paramId="CsdIdacAselect">
295    </DRC>
296    <DRC type="ERROR" text="The IDAC B channel cannot join the disabled IDAC A channel"
297         condition="`${(CsdIdacBselect eq CY_CSDIDAC_JOIN) &amp;&amp; (CsdIdacAselect eq CY_CSDIDAC_DISABLED) &amp;&amp; CsdIdacEnable}`"
298         paramId="CsdIdacBselect">
299    </DRC>
300    <DRC type="ERROR" text="The IDAC A channel and the IDAC B channel cannot join one another"
301         condition="`${(CsdIdacAselect eq CY_CSDIDAC_JOIN) &amp;&amp; (CsdIdacBselect eq CY_CSDIDAC_JOIN) &amp;&amp; CsdIdacEnable}`"
302         paramId="CsdIdacAselect">
303    </DRC>
304  </DRCs>
305
306  <ConfigFirmware>
307    <!-- External tools -->
308    <ConfigTool value="`${cy_tools_path(&quot;capsense-configurator&quot;) . &quot;/capsense-configurator-cli&quot;}`" include="`${CapSenseEnable}`">
309      <Arg value="`${&quot;--config=&quot; . cfgFilePath}`" />
310      <Arg value="`${&quot;--output-dir=&quot; . cy_codegen_path()}`" />
311    </ConfigTool>
312
313    <ConfigInclude value="cy_sysclk.h" include="`${pclkOk}`" />
314    <ConfigInclude value="cy_csd.h" include="`${CsdAdcEnable || CapSenseEnable || CsdIdacEnable}`" />
315    <ConfigInclude value="cy_csdadc.h" include="`${CsdAdcEnable}`" />
316    <ConfigInclude value="cy_csdidac.h" include="`${CsdIdacEnable}`" />
317
318    <ConfigDefine name="CY_CAPSENSE_CORE" value="`${CapSenseCore}`u" public="true" include="`${CapSenseEnable}`" />
319    <ConfigDefine name="CY_CAPSENSE_CPU_CLK" value="`${cpuClkFreq}`u" public="true" include="`${CapSenseEnable &amp;&amp; cpuClkOk}`" />
320    <ConfigDefine name="CY_CAPSENSE_PERI_CLK" value="`${periClkFreq}`u" public="true" include="`${CapSenseEnable &amp;&amp; periClkOk}`" />
321    <ConfigDefine name="CY_CAPSENSE_VDDA_MV" value="`${vddaMv}`u" public="true" include="`${CapSenseEnable}`" />
322    <ConfigDefine name="CY_CAPSENSE_PERI_DIV_TYPE" value="`${pclkType}`" public="true" include="`${CapSenseEnable}`" />
323    <ConfigDefine name="CY_CAPSENSE_PERI_DIV_INDEX" value="`${pclkIndex}`u" public="true" include="`${CapSenseEnable}`" />
324    <ConfigDefine name="`${SensorName$idx}`_PORT"
325            value="GPIO_PRT`${getInstFromLocation(getParamValue(&quot;SensorSignal$idx&quot;), &quot;port&quot;)}`" public="true"
326            include="`${CapSenseEnable &amp;&amp; ($idx &lt; SensorCount) &amp;&amp; isBlockUsed(SensorSignal$idx)}`" repeatCount="256" />
327    <ConfigDefine name="`${SensorName$idx}`_PIN"
328            value="`${getInstFromLocation(getParamValue(&quot;SensorSignal$idx&quot;), &quot;pin&quot;)}`u" public="true"
329            include="`${($idx &lt; SensorCount) &amp;&amp; isBlockUsed(SensorSignal$idx)}`" repeatCount="256" />
330    <ConfigDefine name="`${SensorName$idx}`_PORT_NUM"
331            value="`${getInstFromLocation(getParamValue(&quot;SensorSignal$idx&quot;), &quot;port&quot;)}`u" public="true"
332            include="`${($idx &lt; CapacitorCount) &amp;&amp; isBlockUsed(SensorSignal$idx)}`" repeatCount="4" />
333    <ConfigDefine name="`${INST_NAME}`_HW" value="CSD`${InstNumber}`" public="true" include="`${CsdAdcEnable || CapSenseEnable || CsdIdacEnable}`" />
334    <ConfigDefine name="`${INST_NAME}`_IRQ" value="csd_interrupt_IRQn" public="true" include="`${CsdAdcEnable || CapSenseEnable}`" />
335    <ConfigDefine name="`${INST_NAME}`_CSDADC_CHANN_NUM" value="`${numChannels}`u" public="true" include="`${CsdAdcEnable}`" />
336    <ConfigDefine name="`${INST_NAME}`_CSDADC_ALL_CHAN_MASK" value="((1u &lt;&lt; `${INST_NAME}`_CSDADC_CHANN_NUM) - 1u)" public="true"
337            include="`${CsdAdcEnable}`" />
338
339
340    <ConfigStruct name="cy_csd_`${InstNumber}`_context" type="cy_stc_csd_context_t" const="false" public="true"
341            include="`${CsdAdcEnable || CapSenseEnable || CsdIdacEnable}`" >
342        <Member name="lockKey" value="CY_CSD_NONE_KEY" />
343    </ConfigStruct>
344
345    <ConfigStruct name="`${INST_NAME}`_csdadc_channel_list" type="cy_stc_csdadc_ch_pin_t" const="true" isArray="true" public="false"
346            include="`${CsdAdcEnable}`">
347      <Member name="`${##}`" value="{&#xA;
348           .ioPcPtr = GPIO_PRT`${getInstFromLocation(getParamValue(&quot;ChannelSignal##&quot;), &quot;port&quot;)}`, &#xA;
349           .pin = `${getInstFromLocation(getParamValue(&quot;ChannelSignal##&quot;), &quot;pin&quot;)}`u, &#xA;
350         }"
351      include="`${CsdAdcEnable &amp;&amp; (numChannels &gt; ##) &amp;&amp; isBlockUsed(ChannelSignal##)}`"
352      count="32"/>
353    </ConfigStruct>
354    <ConfigStruct name="`${INST_NAME}`_csdidac_a_pin" type="cy_stc_csdidac_pin_t" const="`${idacInFlash}`" public="false"
355            include="`${CsdIdacEnable &amp;&amp; CsdIdacAEnable &amp;&amp; isBlockUsed(IdacAsignal) &amp;&amp; (!IdacAbusOnly)}`">
356        <Member name="ioPcPtr" value="GPIO_PRT`${getInstFromLocation(getParamValue(&quot;IdacAsignal&quot;), &quot;port&quot;)}`" />
357        <Member name="pin" value="`${getInstFromLocation(getParamValue(&quot;IdacAsignal&quot;), &quot;pin&quot;)}`u" />
358    </ConfigStruct>
359    <ConfigStruct name="`${INST_NAME}`_csdidac_b_pin" type="cy_stc_csdidac_pin_t" const="`${idacInFlash}`" public="false"
360    include="`${CsdIdacEnable &amp;&amp; CsdIdacBEnable &amp;&amp; isBlockUsed(IdacBsignal) &amp;&amp; (!IdacBbusOnly)}`">
361        <Member name="ioPcPtr" value="GPIO_PRT`${getInstFromLocation(getParamValue(&quot;IdacBsignal&quot;), &quot;port&quot;)}`" />
362        <Member name="pin" value="`${getInstFromLocation(getParamValue(&quot;IdacBsignal&quot;), &quot;pin&quot;)}`u" />
363    </ConfigStruct>
364
365    <ConfigStruct name="`${INST_NAME}`_csdadc_config" type="cy_stc_csdadc_config_t" const="`${inFlash}`" public="true" include="`${CsdAdcEnable}`">
366      <Member name="ptrPinList" value="&amp;`${INST_NAME}`_csdadc_channel_list[0u]"/>
367      <Member name="base" value="`${INST_NAME}`_HW" />
368      <Member name="cpuClk" value="`${cpuClkFreq}`u"/>
369      <Member name="periClk" value="`${periClkFreq}`u"/>
370      <Member name="vref" value="`${vref}`"/>
371      <Member name="vdda" value="`${vddaMv}`u"/>
372      <Member name="calibrInterval" value="`${autoCalibrInterval}`u"/>
373      <Member name="range" value="`${range}`"/>
374      <Member name="resolution" value="`${resolution}`"/>
375      <Member name="periDivTyp" value="`${pclkType}`"/>
376      <Member name="numChannels" value="`${numChannels}`u"/>
377      <Member name="idac" value="31u"/>
378      <Member name="operClkDivider" value="`${operClkDivider}`u"/>
379      <Member name="azTime" value="`${azTime}`u"/>
380      <Member name="acqTime" value="`${acqTime}`u"/>
381      <Member name="csdInitTime" value="`${csdInitTime}`u"/>
382      <Member name="idacCalibrationEn" value="0u"/>
383      <Member name="periDivInd" value="`${pclkIndex}`u"/>
384      <Member name="csdCxtPtr" value="&amp;cy_csd_`${InstNumber}`_context"/>
385    </ConfigStruct>
386    <ConfigStruct name="`${INST_NAME}`_csdidac_config" type="cy_stc_csdidac_config_t" const="`${idacInFlash}`" public="true" include="`${CsdIdacEnable}`">
387      <Member name="base" value="`${INST_NAME}`_HW" />
388      <Member name="csdCxtPtr" value="&amp;cy_csd_`${InstNumber}`_context"/>
389      <Member name="configA" value="`${CsdIdacAselect}`"/>
390      <Member name="configB" value="`${CsdIdacBselect}`"/>
391      <Member name="ptrPinA" value="`${CsdIdacAEnable  &amp;&amp; (!IdacAbusOnly)?
392            &quot;(const cy_stc_csdidac_pin_t *) &amp;&quot; . INST_NAME . &quot;_csdidac_a_pin&quot; : &quot;NULL&quot;}`"/>
393      <Member name="ptrPinB" value="`${CsdIdacBEnable  &amp;&amp; (!IdacBbusOnly)?
394            &quot;(const cy_stc_csdidac_pin_t *) &amp;&quot; . INST_NAME . &quot;_csdidac_b_pin&quot; : &quot;NULL&quot;}`"/>
395      <Member name="cpuClk" value="`${cpuClkFreq}`u"/>
396      <Member name="csdInitTime" value="`${csdIdacInitTime}`u"/>
397    </ConfigStruct>
398    <ConfigInstruction value="Cy_SysClk_PeriphAssignDivider(`${pclkDst}`, `${getExposedMember(pclk, &quot;clockSel&quot;)}`);" include="`${pclkOk}`" />
399  </ConfigFirmware>
400</Personality>
401