libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
ccs.h
Go to the documentation of this file.
1/**
2 * @brief Clock Control and System Defines for the Qorvo PAC55xx series of microcontrollers.
3 *
4 * @defgroup system_defines Clock Config and System Defines
5 * @ingroup PAC55xx_defines
6 * @author Brian Viele <vielster@allocor.tech>
7 * @author Kevin Stefanik <kevin@allocor.tech>
8 * LGPL License Terms @ref lgpl_license
9 * @date 1 Dec 2019
10 *
11 * Definitions in this file come from the PAC55XX Family User Guide Rev 1.21
12 * by Active-Semi dated August 26, 2019.
13 */
14/*
15 * This file is part of the libopencm3 project.
16 *
17 * This library is free software: you can redistribute it and/or modify
18 * it under the terms of the GNU Lesser General Public License as published by
19 * the Free Software Foundation, either version 3 of the License, or
20 * (at your option) any later version.
21 *
22 * This library is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU Lesser General Public License for more details.
26 *
27 * You should have received a copy of the GNU Lesser General Public License
28 * along with this library. If not, see <http://www.gnu.org/licenses/>.
29 */
30#ifndef LIBOPENCM3_PAC55XX_CCS_H_
31#define LIBOPENCM3_PAC55XX_CCS_H_
32
37
38/**@{*/
39
40/** @defgroup ccs_frequencies CCS Frequencies
41@{*/
42/** Ring Oscillator Frequency */
43#define CCS_ROSC_FREQ (16000000U)
44/** Internally generated and trimmed 4MHz clock */
45#define CCS_CLKREF_FREQ (4000000U)
46/** Maximum external clock frequency */
47#define CCS_EXTCLK_MAX_FREQ (20000000U)
48/**@}*/
49
50/** @defgroup ccs_ctl_reg Clock Control Register
51@{*/
52#define CCSCTL MMIO32(SCC_BASE)
53#define CCS_CTL_FRCLKMUXSEL_MASK (0x03)
54#define CCS_CTL_FRCLKMUXSEL(sel) ((sel) & CCS_CTL_FRCLKMUXSEL_MASK)
55#define CCS_CTL_FRCLKMUXSEL_ROSC (0)
56#define CCS_CTL_FRCLKMUXSEL_CLKREF (1)
57#define CCS_CTL_FRCLKMUXSEL_EXTCLK (3)
58#define CCS_CTL_ROSCEN BIT2
59#define CCS_CTL_SCLKMUXSEL BIT4
60#define CCS_CTL_SCLKMUXSEL_FRCLK (0)
61#define CCS_CTL_SCLKMUXSEL_PLLCLK (1)
62#define CCS_CTL_CLKFAILEN BIT5
63#define CCS_CTL_CLKFAILMUXSEL BIT6
64#define CCS_CTL_CLKFAILIF BIT7
65#define CCS_CTL_LDOEN BIT8
66#define CCS_CTL_SWRESET BIT11
67#define CCS_CTL_PCLKEN BIT12
68#define CCS_CTL_ACLKEN BIT13
69#define CCS_CTL_ADCCLKEN BIT14
70#define CCS_CTL_STCLKSLPEN BIT15
71#define CCS_CTL_PCLKDIV_MASK (0x07)
72#define CCS_CTL_PCLKDIV_SHIFT (16)
73/* Supported PCLK divisors: 1-8 */
74#define CCS_CTL_PCLKDIV(div) (((div-1) & CCS_CTL_PCLKDIV_MASK) << CCS_CTL_PCLKDIV_SHIFT)
75#define CCS_CTL_ACLKDIV_MASK (0x07)
76#define CCS_CTL_ACLKDIV_SHIFT (20)
77/* Supported ACLK divisors: 1-8 */
78#define CCS_CTL_ACLKDIV(div) (((div-1) & CCS_CTL_ACLKDIV_MASK) << CCS_CTL_ACLKDIV_SHIFT)
79#define CCS_CTL_HCLKDIV_MASK (0x07)
80#define CCS_CTL_HCLKDIV_SHIFT (24)
81/* Supported HCLK divisors: 1-8 */
82#define CCS_CTL_HCLKDIV(div) (((div-1) & CCS_CTL_HCLKDIV_MASK) << CCS_CTL_HCLKDIV_SHIFT)
83#define CCS_CTL_USAMODE BIT28
84#define CCS_CTL_USBMODE BIT29
85#define CCS_CTL_USCMODE BIT30
86#define CCS_CTL_USDMODE BIT31
87/**@}*/
88
89/** @defgroup ccs_pllctl_reg CCS PLL Control Register
90@{*/
91#define CCSPLLCTL MMIO32(SCC_BASE + 0x04)
92/** PLL Enable */
93#define CCS_PLLCTL_PLLEN BIT0
94/** PLL Bypass */
95#define CCS_PLLCTL_PLLBP BIT1
96#define CCS_PLLCTL_PLLOUTDIV_MASK (0x03)
97#define CCS_PLLCTL_PLLOUTDIV_SHIFT (2)
98/** PLL Output Divisor */
99#define CCS_PLLCTL_PLLOUTDIV(div) (((div) & CCS_PLLCTL_PLLOUTDIV_MASK) << CCS_PLLCTL_PLLOUTDIV_SHIFT)
100#define CCS_PLLCTL_PLLOUTDIV1 (0)
101#define CCS_PLLCTL_PLLOUTDIV2 (1)
102#define CCS_PLLCTL_PLLOUTDIV4 (2)
103#define CCS_PLLCTL_PLLOUTDIV8 (3)
104#define CCS_PLLCTL_PLLINDIV_MASK (0x0F)
105#define CCS_PLLCTL_PLLINDIV_SHIFT (4)
106/** PLL Input Divisor */
107#define CCS_PLLCTL_PLLINDIV(div) (((div) & CCS_PLLCTL_PLLINDIV_MASK) << CCS_PLLCTL_PLLINDIV_SHIFT)
108#define CCS_PLLCTL_PLLFBDIV_MASK (0x3FFF)
109#define CCS_PLLCTL_PLLFBDIV_SHIFT (8)
110/** PLL Feedback Divisor */
111#define CCS_PLLCTL_PLLFBDIV(div) (((div) & CCS_PLLCTL_PLLFBDIV_MASK) << CCS_PLLCTL_PLLFBDIV_SHIFT)
112/** PLL Lock */
113#define CCS_PLLCTL_PLLLOCK BIT24
114/**@}*/
115
116/** @defgroup ccs_rosctrim Ring Oscillator Trim Control Register
117@{*/
118#define CCSROSCTRIM_MASK (0x7F)
119#define CCSROSCTRIM MMIO32(SCC_BASE + 0x08)
120/**@}*/
121
122/** Port Pin Config Addresses
123 * @defgroup port_pin_addresses Port Pinmux Register Base.
124 * @{*/
125#define CCS_PORTA (SCC_BASE + 0x0C)
126#define CCS_PORTB (SCC_BASE + 0x10)
127#define CCS_PORTC (SCC_BASE + 0x14)
128#define CCS_PORTD (SCC_BASE + 0x18)
129#define CCS_PORTE (SCC_BASE + 0x1C)
130#define CCS_PORTF (SCC_BASE + 0x20)
131#define CCS_PORTG (SCC_BASE + 0x24)
132/**@}*/
133
134/** Port Pin Mux Select Registers
135 * @defgroup pmux_sel_regs PMUXSEL register mapping.
136 * @{*/
137#define CCS_MUXSELR(base) MMIO32(base)
138#define CCS_PAMUXSELR CCS_MUXSELR(CCS_PORTA)
139#define CCS_PBMUXSELR CCS_MUXSELR(CCS_PORTB)
140#define CCS_PCMUXSELR CCS_MUXSELR(CCS_PORTC)
141#define CCS_PDMUXSELR CCS_MUXSELR(CCS_PORTD)
142#define CCS_PEMUXSELR CCS_MUXSELR(CCS_PORTE)
143#define CCS_PFMUXSELR CCS_MUXSELR(CCS_PORTF)
144#define CCS_PGMUXSELR CCS_MUXSELR(CCS_PORTG)
145#define CCS_MUXSELR_MASK 0x7
146#define CCS_MUXSELR_MASK_PIN(pin) (CCS_MUXSELR_MASK << ((pin) * 4))
147#define CCS_MUXSELR_VAL(pin, muxsel) (((muxsel) & CCS_MUXSELR_MASK) << ((pin) * 4))
148
149/* Enum type for port function setting for type specificity. */
150typedef enum {
160/**@}*/
161
162/** Port Pull-Up/Down Enable Registers.
163 * @defgroup pden_regs PUEN PDEN register mapping.
164 * @{*/
165#define CCS_PUENR(base) MMIO32(base + 0x1C)
166#define CCS_PAPUENR CCS_PUENR(CCS_PORTA)
167#define CCS_PBPUENR CCS_PUENR(CCS_PORTB)
168#define CCS_PCPUENR CCS_PUENR(CCS_PORTC)
169#define CCS_PDPUENR CCS_PUENR(CCS_PORTD)
170#define CCS_PEPUENR CCS_PUENR(CCS_PORTE)
171#define CCS_PFPUENR CCS_PUENR(CCS_PORTF)
172#define CCS_PGPUENR CCS_PUENR(CCS_PORTG)
173#define CCS_PDENR(base) MMIO32(base + 0x38)
174#define CCS_PAPDENR CCS_PDENR(CCS_PORTA)
175#define CCS_PBPDENR CCS_PDENR(CCS_PORTB)
176#define CCS_PCPDENR CCS_PDENR(CCS_PORTC)
177#define CCS_PDPDENR CCS_PDENR(CCS_PORTD)
178#define CCS_PEPDENR CCS_PDENR(CCS_PORTE)
179#define CCS_PFPDENR CCS_PDENR(CCS_PORTF)
180#define CCS_PGPDENR CCS_PDENR(CCS_PORTG)
181/** Pull Up/Down enum for type specificity. */
182typedef enum {
187/**@}*/
188
189/** Port Drive Strength Enable Registers.
190 * @defgroup dsr_regs DSR register mapping.
191 * @{*/
192#define CCS_DSR(base) MMIO32(base + 0x54)
193#define CCS_PADSR CCS_DSR(CCS_PORTA)
194#define CCS_PBDSR CCS_DSR(CCS_PORTB)
195#define CCS_PCDSR CCS_DSR(CCS_PORTC)
196#define CCS_PDDSR CCS_DSR(CCS_PORTD)
197#define CCS_PEDSR CCS_DSR(CCS_PORTE)
198#define CCS_PFDSR CCS_DSR(CCS_PORTF)
199#define CCS_PGDSR CCS_DSR(CCS_PORTG)
200#define CCS_DSR_MASK 0x7
201#define CCS_DSR_MASK_PIN(pin) (CCS_DSR_MASK << ((pin) * 4))
202#define CCS_DSR_DS_VAL(pin, ds) (((ds)&CCS_DSR_MASK) << ((pin)*4))
203#define CCS_DSR_SCHMIDT_PIN(pin) (BIT0 << (((pin)*4) + 3))
204
205/** Drive strength enumeration for type specificity. */
206typedef enum {
216/**@}*/
217
218/**@}*/
219
221
222/**
223 * @defgroup ccs_api Clock Control System API
224 * @ingroup peripheral_apis
225 * @brief <b>PAC5xx CCS Driver</b>
226 * @author @htmlonly &copy; @endhtmlonly 2020 Kevin Stefanik <kevin@allocor.tech>
227 * @date March 7, 2020
228 *
229 * This library supports the CCS module in the PAC55xx SoC from Qorvo.
230 *
231 * LGPL License Terms @ref lgpl_license
232 */
233
234/**@{*/
235
236/**
237 * Select the source for FRCLK.
238 * @param[in] sel one of:
239 * - /ref CCS_CTL_FRCLKMUXSEL_ROSC - 16MHz ring oscillator
240 * - /ref CCS_CTL_FRCLKMUXSEL_CLKREF - trimmed 4MHz clock
241 * - /ref CCS_CTL_FRCLKMUXSEL_EXTCLK
242 */
243void ccs_frclkmux_select(uint32_t sel);
244/** Enable the 16MHz Ring oscillator */
245void ccs_rosc_enable(void);
246/** Disable the 16MHz Ring oscillator */
247void ccs_rosc_disable(void);
248/** Select FRCLK for SCLK */
249void ccs_sclkmux_select_frclk(void);
250/** Select PLLCLK for SCLK */
252/** Enable Clock Fail Detection */
253void ccs_clkfail_enable(void);
254/** Disable Clock Fail Detection */
255void ccs_clkfail_disable(void);
256/** Select FRCLK for Clock Fail Detection */
258/** Select PLLCLK for Clock Fail Detection */
260/** Enable the LDO */
261void ccs_ldo_enable(void);
262/** Disable the LDO */
263void ccs_ldo_disable(void);
264/** Enable the Peripheral Clock */
265void ccs_pclk_enable(void);
266/** Disable the Peripheral Clock */
267void ccs_pclk_disable(void);
268/** Enable the Auxiliary Clock */
269void ccs_aclk_enable(void);
270/** Disable the Auxiliary Clock */
271void ccs_aclk_disable(void);
272/** Enable the ADC Clock */
273void ccs_adcclk_enable(void);
274/** Disable the ADC Clock */
275void ccs_adcclk_disable(void);
276/** Enable SysTick clock gating in deep sleep mode */
277void ccs_stclk_sleep_enable(void);
278/** Disable SysTick clock gating in deep sleep mode */
279void ccs_stclk_sleep_disable(void);
280/**
281 * Set the divisor for the Peripheral Clock.
282 * @param[in] div PCLK Divisor: 1-8.
283 */
284void ccs_set_pclkdiv(uint32_t div);
285/**
286 * Set the divisor for the Auxiliary Clock.
287 * @param[in] div ACLK Divisor: 1-8.
288 */
289void ccs_set_aclkdiv(uint32_t div);
290/**
291 * Set the divisor for the AHB Clock.
292 * @param[in] div HCLK Divisor: 1-8.
293 */
294void ccs_set_hclkdiv(uint32_t div);
295/** Enable the PLL */
296void ccs_pll_enable(void);
297/** Disable the PLL */
298void ccs_pll_disable(void);
299/** Check if the PLL is locked.
300 * @return true if locked.
301 */
302bool ccs_pll_locked(void);
303/** Enable the PLL bypass */
304void ccs_pll_bypass_enable(void);
305/** Disable the PLL bypass */
306void ccs_pll_bypass_disable(void);
307/**
308 * Set the output divisor.
309 * @param[in] div Output divisor, one of:
310 * - /ref CCS_PLLCTL_PLLOUTDIV1
311 * - /ref CCS_PLLCTL_PLLOUTDIV2
312 * - /ref CCS_PLLCTL_PLLOUTDIV4
313 * - /ref CCS_PLLCTL_PLLOUTDIV8
314 */
315void ccs_pll_set_outdiv(uint32_t div);
316/**
317 * Set the PLL input divisor.
318 * @param[in] div Input divisor, 1-15.
319 */
320void ccs_pll_set_indiv(uint32_t div);
321/**
322 * Set the PLL feedback divisor.
323 * @param[in] div Feedback divisor, 4-16383.
324 */
325void ccs_pll_set_fbdiv(uint32_t div);
326/**
327 * Configure the CCS PLL, enable it, and wait for lock.
328 * @param[in] indiv Input divisor, 1-15.
329 * @param[in] fbdiv Feedback divisor, 4-16383.
330 * @param[in] outdiv Output divisor, one of:
331 * - /ref CCS_PLLCTL_PLLOUTDIV1
332 * - /ref CCS_PLLCTL_PLLOUTDIV2
333 * - /ref CCS_PLLCTL_PLLOUTDIV4
334 * - /ref CCS_PLLCTL_PLLOUTDIV8
335 */
336void css_pll_config_enable(uint32_t indiv, uint32_t fbdiv, uint32_t outdiv);
337/**
338 * Get the clock rate (in Hz) of the specified peripheral. This will pull the
339 * proper sources out of the clock tree and calculate the clock for the
340 * peripheral for return to the user, based on current settings.
341 * @param[in] periph Peripheral base address to get the clock rate for.
342 * @param[in] select Peripheral-controlled clock select value. Set to 0 when not applicable.
343 * @return Clock rate in Hz for the specified peripheral. 0 if undefined or error.
344 */
345uint32_t ccs_get_peripheral_clk_freq(uint32_t periph, uint32_t select);
346/** Restores CCSCTL and CCSPLLCTL registers to default/safe values */
347void ccs_reset_clocks(void);
348
349/** CCS Clock Configuration structure. */
351 uint32_t frclk_source; /**< FRCLK source input selection */
352 uint32_t extclk_frequency; /**< EXTCLK frequency, 0 if none. */
353 uint32_t sclk_source; /**< SCLK source selection */
354 uint32_t pll_indiv; /**< PLL Input Divider 1-15 */
355 uint32_t pll_fbdiv; /**< PLL Feedback Divider 4-16383 */
356 uint32_t pll_outdiv; /**< PLL Output Divider */
357 uint32_t hclkdiv; /**< Divisor from SCLK to HCLK */
358 uint32_t aclkdiv; /**< Divisor from SCLK to ACLK */
359 uint32_t pclkdiv; /**< Divisor from HCLK to PCLK */
360 uint32_t mem_wstate; /**< Number of Flash Read wait states */
361 uint32_t mem_mclkdiv; /**< Divisor from HCLK to MCLK */
362 bool mem_mclksel; /**< false: ROSCLK, true: HCLK/MCLK */
363 bool mem_enable_cache; /**< false: disable cache, true: enable cache */
364};
365/**
366 * Setup the PAC55xx clocks with the given struct.
367 * @param[in] config CCS Clock configuration struct /ref ccs_clk_config
368 */
369void ccs_configure_clocks(const struct ccs_clk_config *config);
370
371/**@}*/
372
374
375#endif /* LIBOPENCM3_PAC55XX_CCS_H_ */
#define END_DECLS
Definition: common.h:34
#define BEGIN_DECLS
Definition: common.h:33
void ccs_clkfail_disable(void)
Disable Clock Fail Detection.
Definition: ccs.c:57
void ccs_stclk_sleep_disable(void)
Disable SysTick clock gating in deep sleep mode.
Definition: ccs.c:93
void ccs_pll_bypass_enable(void)
Enable the PLL bypass.
Definition: ccs.c:114
void ccs_set_pclkdiv(uint32_t div)
Set the divisor for the Peripheral Clock.
Definition: ccs.c:96
bool ccs_pll_locked(void)
Check if the PLL is locked.
Definition: ccs.c:111
void ccs_aclk_disable(void)
Disable the Auxiliary Clock.
Definition: ccs.c:81
void ccs_configure_clocks(const struct ccs_clk_config *config)
Setup the PAC55xx clocks with the given struct.
Definition: ccs.c:184
void ccs_pll_set_indiv(uint32_t div)
Set the PLL input divisor.
Definition: ccs.c:123
void ccs_clkfail_enable(void)
Enable Clock Fail Detection.
Definition: ccs.c:54
void ccs_clkfailmux_select_pllclk(void)
Select PLLCLK for Clock Fail Detection.
Definition: ccs.c:63
void ccs_reset_clocks(void)
Restores CCSCTL and CCSPLLCTL registers to default/safe values.
Definition: ccs.c:177
void ccs_pll_set_fbdiv(uint32_t div)
Set the PLL feedback divisor.
Definition: ccs.c:130
void ccs_stclk_sleep_enable(void)
Enable SysTick clock gating in deep sleep mode.
Definition: ccs.c:90
void ccs_aclk_enable(void)
Enable the Auxiliary Clock.
Definition: ccs.c:78
void ccs_ldo_enable(void)
Enable the LDO.
Definition: ccs.c:66
void ccs_ldo_disable(void)
Disable the LDO.
Definition: ccs.c:69
void ccs_rosc_enable(void)
Enable the 16MHz Ring oscillator.
Definition: ccs.c:42
void ccs_frclkmux_select(uint32_t sel)
Select the source for FRCLK.
Definition: ccs.c:39
void ccs_pll_enable(void)
Enable the PLL.
Definition: ccs.c:105
void ccs_clkfailmux_select_frclk(void)
Select FRCLK for Clock Fail Detection.
Definition: ccs.c:60
void ccs_set_hclkdiv(uint32_t div)
Set the divisor for the AHB Clock.
Definition: ccs.c:102
void ccs_pll_set_outdiv(uint32_t div)
Set the output divisor.
Definition: ccs.c:120
void ccs_set_aclkdiv(uint32_t div)
Set the divisor for the Auxiliary Clock.
Definition: ccs.c:99
uint32_t ccs_get_peripheral_clk_freq(uint32_t periph, uint32_t select)
Get the clock rate (in Hz) of the specified peripheral.
Definition: ccs.c:145
void css_pll_config_enable(uint32_t indiv, uint32_t fbdiv, uint32_t outdiv)
Configure the CCS PLL, enable it, and wait for lock.
Definition: ccs.c:137
void ccs_pclk_disable(void)
Disable the Peripheral Clock.
Definition: ccs.c:75
void ccs_pclk_enable(void)
Enable the Peripheral Clock.
Definition: ccs.c:72
void ccs_pll_disable(void)
Disable the PLL.
Definition: ccs.c:108
void ccs_sclkmux_select_pllclk(void)
Select PLLCLK for SCLK.
Definition: ccs.c:51
void ccs_pll_bypass_disable(void)
Disable the PLL bypass.
Definition: ccs.c:117
void ccs_adcclk_enable(void)
Enable the ADC Clock.
Definition: ccs.c:84
void ccs_adcclk_disable(void)
Disable the ADC Clock.
Definition: ccs.c:87
void ccs_rosc_disable(void)
Disable the 16MHz Ring oscillator.
Definition: ccs.c:45
void ccs_sclkmux_select_frclk(void)
Select FRCLK for SCLK.
Definition: ccs.c:48
ccs_drive_strength_t
Drive strength enumeration for type specificity.
Definition: ccs.h:206
@ CCS_DSR_DS_8MA
Definition: ccs.h:208
@ CCS_DSR_DS_22MA
Definition: ccs.h:213
@ CCS_DSR_DS_11MA
Definition: ccs.h:209
@ CCS_DSR_DS_17MA
Definition: ccs.h:211
@ CCS_DSR_DS_14MA
Definition: ccs.h:210
@ CCS_DSR_DS_6MA
Definition: ccs.h:207
@ CCS_DSR_DS_20MA
Definition: ccs.h:212
@ CCS_DSR_DS_25MA
Definition: ccs.h:214
ccs_pull_updown_t
Pull Up/Down enum for type specificity.
Definition: ccs.h:182
@ CCS_IO_PULL_DOWN
Definition: ccs.h:185
@ CCS_IO_PULL_NONE
Definition: ccs.h:183
@ CCS_IO_PULL_UP
Definition: ccs.h:184
ccs_muxsel_func_t
Definition: ccs.h:150
@ CCS_MUXSEL_AF2
Definition: ccs.h:153
@ CCS_MUXSEL_AF3
Definition: ccs.h:154
@ CCS_MUXSEL_GPIO
Definition: ccs.h:151
@ CCS_MUXSEL_AF1
Definition: ccs.h:152
@ CCS_MUXSEL_AF6
Definition: ccs.h:157
@ CCS_MUXSEL_AF5
Definition: ccs.h:156
@ CCS_MUXSEL_AF7
Definition: ccs.h:158
@ CCS_MUXSEL_AF4
Definition: ccs.h:155
CCS Clock Configuration structure.
Definition: ccs.h:350
uint32_t pll_outdiv
PLL Output Divider.
Definition: ccs.h:356
uint32_t aclkdiv
Divisor from SCLK to ACLK.
Definition: ccs.h:358
uint32_t frclk_source
FRCLK source input selection.
Definition: ccs.h:351
bool mem_mclksel
false: ROSCLK, true: HCLK/MCLK
Definition: ccs.h:362
uint32_t hclkdiv
Divisor from SCLK to HCLK.
Definition: ccs.h:357
uint32_t mem_wstate
Number of Flash Read wait states.
Definition: ccs.h:360
uint32_t pll_indiv
PLL Input Divider 1-15.
Definition: ccs.h:354
uint32_t sclk_source
SCLK source selection.
Definition: ccs.h:353
uint32_t mem_mclkdiv
Divisor from HCLK to MCLK.
Definition: ccs.h:361
uint32_t extclk_frequency
EXTCLK frequency, 0 if none.
Definition: ccs.h:352
bool mem_enable_cache
false: disable cache, true: enable cache
Definition: ccs.h:363
uint32_t pll_fbdiv
PLL Feedback Divider 4-16383.
Definition: ccs.h:355
uint32_t pclkdiv
Divisor from HCLK to PCLK.
Definition: ccs.h:359