Astra MCU SDK Peripheral Driver Library
 
Loading...
Searching...
No Matches
spwm.h
1
20
21#ifndef SPWM_H_
22#define SPWM_H_
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28#include <stdint.h>
29#include <stdbool.h>
30#include <stddef.h>
31#include "syna_device.h"
32#include "spwm_registers.h"
33
34/*******************************************************************************
35* Macro definitions
36*******************************************************************************/
37#define SPWM_TRIG_IN_COUNT 6
39#define SPWM_TRIG_OUT_COUNT 2
40#define SPWM_SEMA_COUNT 2
41
43#define DESC_BLOCK_SIZE (SPWM_CONFIG_DESC_MEM_SIZE / SPWM_CONFIG_DESC_INSTANCE_NUM)
44
45/***************************************************************************/
227
228/*******************************************************************************
229* Enumerated Types
230*******************************************************************************/
231
236
252
269
282
296
310
327
342
402
414
431
442
455
467
491
504
518
533
547
566
570
571/*******************************************************************************
572* Type Definitions
573*******************************************************************************/
574
579
589typedef void (*spwm_isr_cb_t)(spwm_instance_en id, uint32_t irq_mask, void *user_ctx);
590
600typedef void (*spwm_desc_isr_cb_t)(spwm_instance_en id, uint8_t desc_id, void *param);
601
610typedef struct spwm_dsc_chain spwm_dsc_chain_t;
611
623
633
650
677
684typedef struct {
686 uint16_t deadtime;
687 uint16_t compl_deadtime;
689
697typedef struct {
699 uint16_t lfsr_seed;
700 uint16_t lfsr_tap;
702
708typedef struct {
712
747
754typedef struct
755{
756 bool running;
757 bool done;
758 bool error;
762
766
767/*******************************************************************************
768* Function Prototypes
769*******************************************************************************/
770
775
776/*******************************************************************************
777* Function Name: spwm_init
778****************************************************************************/
792spwm_status_en spwm_init(spwm_instance_en id);
793
794/*******************************************************************************
795* Function Name: spwm_deinit
796****************************************************************************/
809spwm_status_en spwm_deinit(spwm_instance_en id);
810
811/*******************************************************************************
812* Function Name: spwm_enable
813****************************************************************************/
830spwm_status_en spwm_enable(spwm_instance_en id, uint8_t group_id);
831
832/*******************************************************************************
833* Function Name: spwm_disable
834****************************************************************************/
851spwm_status_en spwm_disable(spwm_instance_en id, uint8_t group_id);
852
853/*******************************************************************************
854* Function Name: spwm_clkdiv_config
855****************************************************************************/
878spwm_status_en spwm_clkdiv_config(spwm_instance_en id, uint8_t clkdiv_id,
879 uint32_t int_div, uint32_t fra_div);
880
881/*******************************************************************************
882* Function Name: spwm_clkdiv_enable
883****************************************************************************/
907spwm_status_en spwm_clkdiv_enable(spwm_instance_en id, uint8_t clkdiv_id,
908 bool enable, uint8_t phase_align_sel);
909
910/*******************************************************************************
911* Function Name: spwm_otrigclk_config
912****************************************************************************/
929spwm_status_en spwm_otrigclk_config(spwm_instance_en id, uint8_t clkdiv_id);
930
931/*******************************************************************************
932* Function Name: spwm_configure
933****************************************************************************/
954spwm_status_en spwm_configure(spwm_instance_en id, uint8_t group_id,
955 const spwm_config_t *config);
956
957/*******************************************************************************
958* Function Name: spwm_trigger
959****************************************************************************/
979spwm_status_en spwm_trigger(spwm_instance_en id, uint8_t group_id, spwm_trigger_en trig);
980
981/*******************************************************************************
982* Function Name: spwm_group_trigger
983****************************************************************************/
1000spwm_status_en spwm_group_trigger(spwm_instance_en id, uint8_t group_trigger_id);
1001
1002/*******************************************************************************
1003* Function Name: spwm_get_counter
1004****************************************************************************/
1024spwm_status_en spwm_get_counter(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1025
1026/*******************************************************************************
1027* Function Name: spwm_get_cc0
1028****************************************************************************/
1048spwm_status_en spwm_get_cc0(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1049
1050/*******************************************************************************
1051* Function Name: spwm_get_cc1
1052****************************************************************************/
1072spwm_status_en spwm_get_cc1(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1073
1074/*******************************************************************************
1075* Function Name: spwm_get_period
1076****************************************************************************/
1096spwm_status_en spwm_get_period(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1097
1098/*******************************************************************************
1099* Function Name: spwm_get_line_sel
1100****************************************************************************/
1120spwm_status_en spwm_get_line_sel(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1121
1122/*******************************************************************************
1123* Function Name: spwm_get_cc0_buff
1124****************************************************************************/
1148spwm_status_en spwm_get_cc0_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1149
1150/*******************************************************************************
1151* Function Name: spwm_get_cc1_buff
1152****************************************************************************/
1176spwm_status_en spwm_get_cc1_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1177
1178/*******************************************************************************
1179* Function Name: spwm_get_period_buff
1180****************************************************************************/
1204spwm_status_en spwm_get_period_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1205
1206/*******************************************************************************
1207* Function Name: spwm_get_line_sel_buff
1208****************************************************************************/
1233spwm_status_en spwm_get_line_sel_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val);
1234
1235/*******************************************************************************
1236* Function Name: spwm_set_clkdiv
1237****************************************************************************/
1257spwm_status_en spwm_set_clkdiv(spwm_instance_en id, uint8_t group_id, uint8_t clkdiv_id);
1258
1259/*******************************************************************************
1260* Function Name: spwm_set_mode
1261****************************************************************************/
1282spwm_status_en spwm_set_mode(spwm_instance_en id, uint8_t group_id,
1283 spwm_mode_en mode);
1284
1285/*******************************************************************************
1286* Function Name: spwm_set_count_mode
1287****************************************************************************/
1307spwm_status_en spwm_set_count_mode(spwm_instance_en id, uint8_t group_id,
1308 spwm_count_mode_en count_mode);
1309
1310/*******************************************************************************
1311* Function Name: spwm_set_counter
1312****************************************************************************/
1332spwm_status_en spwm_set_counter(spwm_instance_en id, uint8_t group_id, uint32_t val);
1333
1334/*******************************************************************************
1335* Function Name: spwm_set_one_shot
1336****************************************************************************/
1357spwm_status_en spwm_set_one_shot(spwm_instance_en id, uint8_t group_id, bool one_shot);
1358
1359/*******************************************************************************
1360* Function Name: spwm_set_prescale
1361****************************************************************************/
1381spwm_status_en spwm_set_prescale(spwm_instance_en id, uint8_t group_id,
1382 spwm_prescale_en prescale);
1383
1384/*******************************************************************************
1385* Function Name: spwm_set_deadtime
1386****************************************************************************/
1409spwm_status_en spwm_set_deadtime(spwm_instance_en id, uint8_t group_id,
1410 uint32_t deadtime, uint32_t compl_deadtime);
1411
1412/*******************************************************************************
1413* Function Name: spwm_set_cc0
1414****************************************************************************/
1434spwm_status_en spwm_set_cc0(spwm_instance_en id, uint8_t group_id, uint32_t val);
1435
1436/*******************************************************************************
1437* Function Name: spwm_set_cc1
1438****************************************************************************/
1458spwm_status_en spwm_set_cc1(spwm_instance_en id, uint8_t group_id, uint32_t val);
1459
1460/*******************************************************************************
1461* Function Name: spwm_set_period
1462****************************************************************************/
1481spwm_status_en spwm_set_period(spwm_instance_en id, uint8_t group_id, uint32_t val);
1482
1483/*******************************************************************************
1484* Function Name: spwm_set_line_sel
1485****************************************************************************/
1504spwm_status_en spwm_set_line_sel(spwm_instance_en id, uint8_t group_id, uint32_t val);
1505
1506/*******************************************************************************
1507* Function Name: spwm_set_cc0_buff
1508****************************************************************************/
1533spwm_status_en spwm_set_cc0_buff(spwm_instance_en id, uint8_t group_id, uint32_t val);
1534
1535/*******************************************************************************
1536* Function Name: spwm_set_cc1_buff
1537****************************************************************************/
1562spwm_status_en spwm_set_cc1_buff(spwm_instance_en id, uint8_t group_id, uint32_t val);
1563
1564/*******************************************************************************
1565* Function Name: spwm_set_period_buff
1566****************************************************************************/
1592spwm_status_en spwm_set_period_buff(spwm_instance_en id, uint8_t group_id, uint32_t val);
1593
1594/*******************************************************************************
1595* Function Name: spwm_set_line_sel_buff
1596****************************************************************************/
1622spwm_status_en spwm_set_line_sel_buff(spwm_instance_en id, uint8_t group_id, uint32_t val);
1623
1624/*******************************************************************************
1625* Function Name: spwm_set_trig_in_all
1626****************************************************************************/
1650 uint8_t group_id,
1651 const spwm_trigger_in_cfg_t *cfg);
1652
1653/*******************************************************************************
1654* Function Name: spwm_set_trig_in
1655****************************************************************************/
1679spwm_status_en spwm_set_trig_in(spwm_instance_en id, uint8_t group_id,
1680 spwm_trigger_en trigger, const spwm_trigger_in_cfg_t *config);
1681
1682/*******************************************************************************
1683* Function Name: spwm_set_trig_out
1684****************************************************************************/
1708spwm_status_en spwm_set_trig_out(spwm_instance_en id, uint8_t group_id,
1709 int out_id, spwm_trigger_out_en out);
1710
1711/*******************************************************************************
1712* Function Name: spwm_set_sema
1713****************************************************************************/
1738spwm_status_en spwm_set_sema(spwm_instance_en id, uint8_t group_id,
1739 uint8_t sema_id, uint8_t val);
1740
1741/*******************************************************************************
1742* Function Name: spwm_set_sema_sel
1743****************************************************************************/
1767spwm_status_en spwm_set_sema_sel(spwm_instance_en id, uint8_t group_id,
1768 int sema_id, spwm_trigger_out_en out);
1769
1770/*******************************************************************************
1771* Function Name: spwm_make_line_sel
1772****************************************************************************/
1793
1794/*******************************************************************************
1795* Function Name: spwm_get_interrupt_status
1796****************************************************************************/
1818spwm_status_en spwm_get_interrupt_status(spwm_instance_en id, uint8_t group_id,
1819 uint32_t *irq_status);
1820
1821/*******************************************************************************
1822* Function Name: spwm_enable_interrupt
1823****************************************************************************/
1844spwm_status_en spwm_enable_interrupt(spwm_instance_en id, uint8_t group_id,
1845 spwm_intr_en intr);
1846
1847/*******************************************************************************
1848* Function Name: spwm_disable_interrupt
1849****************************************************************************/
1870spwm_status_en spwm_disable_interrupt(spwm_instance_en id, uint8_t group_id,
1871 spwm_intr_en intr);
1872
1873/*******************************************************************************
1874* Function Name: spwm_disable_all_interrupts
1875****************************************************************************/
1893spwm_status_en spwm_disable_all_interrupts(spwm_instance_en id, uint8_t group_id);
1894
1895/*******************************************************************************
1896* Function Name: spwm_clear_all_interrupts
1897****************************************************************************/
1915spwm_status_en spwm_clear_all_interrupts(spwm_instance_en id, uint8_t group_id);
1916
1917/*******************************************************************************
1918* Function Name: spwm_output_select
1919****************************************************************************/
1943spwm_status_en spwm_output_select(spwm_instance_en id, uint8_t group_id,
1944 spwm_io_pin_en pin, bool compl);
1945
1946/*******************************************************************************
1947* Function Name: spwm_clear_interrupt
1948****************************************************************************/
1968spwm_status_en spwm_clear_interrupt(spwm_instance_en id, uint8_t group_id,
1969 uint32_t mask);
1970
1971/*******************************************************************************
1972* Function Name: spwm_clear_desc_interrupt
1973****************************************************************************/
1991spwm_status_en spwm_clear_desc_interrupt(spwm_instance_en id, uint8_t desc_id);
1992
1993/*******************************************************************************
1994* Function Name: spwm_enable_desc_interrupt
1995****************************************************************************/
2014spwm_status_en spwm_enable_desc_interrupt(spwm_instance_en id, uint8_t desc_id);
2015
2016/*******************************************************************************
2017* Function Name: spwm_disable_desc_interrupt
2018****************************************************************************/
2036spwm_status_en spwm_disable_desc_interrupt(spwm_instance_en id, uint8_t desc_id);
2037
2038/*******************************************************************************
2039* Function Name: spwm_register_callback
2040****************************************************************************/
2061spwm_status_en spwm_register_callback(spwm_instance_en id, spwm_isr_cb_t cb, void *user_ctx);
2062
2063/*******************************************************************************
2064* Function Name: spwm_register_desc_callback
2065****************************************************************************/
2087 void *param);
2088
2089/*******************************************************************************
2090* Function Name: spwm_dsc_mem_alloc
2091****************************************************************************/
2109spwm_dsc_status_en spwm_dsc_mem_alloc(size_t size_bytes, uint16_t *handle);
2110
2111/*******************************************************************************
2112* Function Name: spwm_dsc_mem_free
2113****************************************************************************/
2127void spwm_dsc_mem_free(uint16_t handle);
2128
2129/*******************************************************************************
2130* Function Name: spwm_dsc_chain_create
2131****************************************************************************/
2144
2145/*******************************************************************************
2146* Function Name: spwm_dsc_chain_destroy
2147****************************************************************************/
2161
2162/*******************************************************************************
2163* Function Name: spwm_dsc_chain_init_for_handle
2164****************************************************************************/
2186 uint16_t handle);
2187
2188/*******************************************************************************
2189* Function Name: spwm_dsc_chain_init
2190****************************************************************************/
2216 uint32_t start_offset_bytes, uint32_t block_size_bytes);
2217
2218/*******************************************************************************
2219* Function Name: spwm_dsc_chain_add_cfg
2220****************************************************************************/
2254 spwm_dsc_reg_id_en reg_id, const uint32_t *values,
2255 uint32_t num_values, bool last);
2256
2257/*******************************************************************************
2258* Function Name: spwm_dsc_chain_add_syn
2259****************************************************************************/
2295 uint8_t group, uint32_t counter_mask, bool last);
2296
2297/*******************************************************************************
2298* Function Name: spwm_dsc_chain_add_nxt
2299****************************************************************************/
2318spwm_dsc_status_en spwm_dsc_chain_add_nxt(spwm_dsc_chain_t *chain, uint32_t target_offset_bytes);
2319
2320/*******************************************************************************
2321* Function Name: spwm_dsc_chain_start
2322****************************************************************************/
2346 uint8_t desc_id, bool enable_interrupt);
2347
2348/*******************************************************************************
2349* Function Name: spwm_dsc_chain_get_status
2350****************************************************************************/
2374 uint8_t instance, spwm_dsc_chain_status_t *status);
2375
2382
2383#ifdef __cplusplus
2384}
2385#endif
2386
2387#endif /* SPWM_H_ */
void(* spwm_desc_isr_cb_t)(spwm_instance_en id, uint8_t desc_id, void *param)
ISR callback function type for descriptor interrupts.
Definition spwm.h:600
void(* spwm_isr_cb_t)(spwm_instance_en id, uint32_t irq_mask, void *user_ctx)
ISR callback function type for SPWM group interrupts.
Definition spwm.h:589
struct spwm_dsc_chain spwm_dsc_chain_t
SPWM descriptor chain handle.
Definition spwm.h:610
spwm_mode_en
SPWM operating mode selection.
Definition spwm.h:259
spwm_prescale_en
Prescaler division values.
Definition spwm.h:317
spwm_intr_en
Interrupt types.
Definition spwm.h:437
spwm_trigger_src_en
Trigger input source selection.
Definition spwm.h:350
spwm_pwm_ctrl_en
PWM control event types.
Definition spwm.h:497
spwm_trigger_en
Input trigger identifiers.
Definition spwm.h:334
spwm_pwm_ctrl_mode_en
PWM control modes for compare/overflow/underflow behavior.
Definition spwm.h:449
spwm_status_en
SPWM return status codes.
Definition spwm.h:243
spwm_trigger_out_en
Output trigger event sources.
Definition spwm.h:421
spwm_dsc_status_en
SPWM descriptor status codes.
Definition spwm.h:525
spwm_io_pin_en
SPWM I/O pin identifiers.
Definition spwm.h:473
spwm_quad_mode_en
Quadrature decoder modes.
Definition spwm.h:289
spwm_trigger_edge_sel_en
Trigger edge selection.
Definition spwm.h:408
spwm_quad_encoding_en
Quadrature encoding modes.
Definition spwm.h:303
spwm_count_mode_en
Counting direction modes.
Definition spwm.h:276
spwm_line_src_en
PWM line output source selection.
Definition spwm.h:510
spwm_dsc_reg_id_en
Descriptor register identifiers.
Definition spwm.h:553
spwm_dsc_syn_op_en
Descriptor synchronization operations.
Definition spwm.h:541
spwm_disable_mode_en
PWM disable output modes.
Definition spwm.h:461
@ SPWM_MODE_PWM_DT
Definition spwm.h:265
@ SPWM_MODE_RESERVED1
Definition spwm.h:261
@ SPWM_MODE_CAPTURE
Definition spwm.h:262
@ SPWM_MODE_SR
Definition spwm.h:267
@ SPWM_MODE_QUAD
Definition spwm.h:263
@ SPWM_MODE_PWM_PR
Definition spwm.h:266
@ SPWM_MODE_PWM
Definition spwm.h:264
@ SPWM_MODE_TIMER
Definition spwm.h:260
@ SPWM_PRESCALE_DIV4
Definition spwm.h:320
@ SPWM_PRESCALE_DIV128
Definition spwm.h:325
@ SPWM_PRESCALE_DIV8
Definition spwm.h:321
@ SPWM_PRESCALE_DIV32
Definition spwm.h:323
@ SPWM_PRESCALE_DIV1
Definition spwm.h:318
@ SPWM_PRESCALE_DIV64
Definition spwm.h:324
@ SPWM_PRESCALE_DIV2
Definition spwm.h:319
@ SPWM_PRESCALE_DIV16
Definition spwm.h:322
@ SPWM_INTR_CC0_MATCH
Definition spwm.h:439
@ SPWM_INTR_CC1_MATCH
Definition spwm.h:440
@ SPWM_INTR_TC
Definition spwm.h:438
@ SPWM_TRIN_TROUT2_0
Definition spwm.h:371
@ SPWM_TRIN_TROUT6_1
Definition spwm.h:380
@ SPWM_TRIN_SM_CAP2
Definition spwm.h:356
@ SPWM_TRIN_0
Definition spwm.h:351
@ SPWM_TRIN_1
Definition spwm.h:352
@ SPWM_TRIN_SM_CAP11
Definition spwm.h:365
@ SPWM_TRIN_TROUT4_0
Definition spwm.h:375
@ SPWM_TRIN_TROUT6_0
Definition spwm.h:379
@ SPWM_TRIN_NUM
Definition spwm.h:400
@ SPWM_TRIN_TROUT11_1
Definition spwm.h:390
@ SPWM_TRIN_CNT_GRP_3
Definition spwm.h:395
@ SPWM_TRIN_TROUT10_1
Definition spwm.h:388
@ SPWM_TRIN_TROUT7_1
Definition spwm.h:382
@ SPWM_TRIN_TROUT10_0
Definition spwm.h:387
@ SPWM_TRIN_TROUT9_0
Definition spwm.h:385
@ SPWM_TRIN_CNT_GRP_6
Definition spwm.h:398
@ SPWM_TRIN_CNT_GRP_7
Definition spwm.h:399
@ SPWM_TRIN_SM_CAP8
Definition spwm.h:362
@ SPWM_TRIN_TROUT5_1
Definition spwm.h:378
@ SPWM_TRIN_CNT_GRP_5
Definition spwm.h:397
@ SPWM_TRIN_TROUT3_0
Definition spwm.h:373
@ SPWM_TRIN_CNT_GRP_0
Definition spwm.h:392
@ SPWM_TRIN_SM_CAP0
Definition spwm.h:354
@ SPWM_TRIN_SM_CAP4
Definition spwm.h:358
@ SPWM_TRIN_SM_CAP5
Definition spwm.h:359
@ SPWM_TRIN_SM_CAP3
Definition spwm.h:357
@ SPWM_TRIN_TROUT1_1
Definition spwm.h:370
@ SPWM_TRIN_SM_CAP6
Definition spwm.h:360
@ SPWM_TRIN_TROUT4_1
Definition spwm.h:376
@ SPWM_TRIN_CNT_GRP_2
Definition spwm.h:394
@ SPWM_TRIN_TROUT11_0
Definition spwm.h:389
@ SPWM_TRIN_TROUT1_0
Definition spwm.h:369
@ SPWM_TRIN_TROUT8_0
Definition spwm.h:383
@ SPWM_TRIN_TROUT9_1
Definition spwm.h:386
@ SPWM_TRIN_SM_CAP10
Definition spwm.h:364
@ SPWM_TRIN_TROUT3_1
Definition spwm.h:374
@ SPWM_TRIN_TROUT7_0
Definition spwm.h:381
@ SPWM_TRIN_SM_CAP1
Definition spwm.h:355
@ SPWM_TRIN_CNT_GRP_4
Definition spwm.h:396
@ SPWM_TRIN_CNT_GRP_1
Definition spwm.h:393
@ SPWM_TRIN_SM_CAP7
Definition spwm.h:361
@ SPWM_TRIN_TROUT0_1
Definition spwm.h:368
@ SPWM_TRIN_SM_CAP9
Definition spwm.h:363
@ SPWM_TRIN_TROUT5_0
Definition spwm.h:377
@ SPWM_TRIN_TROUT2_1
Definition spwm.h:372
@ SPWM_TRIN_TROUT0_0
Definition spwm.h:367
@ SPWM_TRIN_TROUT8_1
Definition spwm.h:384
@ SPWM_PWM_CTRL_CC1_MATCH
Definition spwm.h:501
@ SPWM_PWM_CTRL_UNDERFLOW
Definition spwm.h:500
@ SPWM_PWM_CTRL_CC0_MATCH
Definition spwm.h:498
@ SPWM_PWM_CTRL_OVERFLOW
Definition spwm.h:499
@ SPWM_PWM_CTRL_NUM
Definition spwm.h:502
@ SPWM_TRIG_CAPTURE1
Definition spwm.h:340
@ SPWM_TRIG_CAPTURE0
Definition spwm.h:335
@ SPWM_TRIG_START
Definition spwm.h:339
@ SPWM_TRIG_COUNT
Definition spwm.h:336
@ SPWM_TRIG_STOP
Definition spwm.h:338
@ SPWM_TRIG_RELOAD
Definition spwm.h:337
@ SPWM_CTRL_SET
Definition spwm.h:450
@ SPWM_CTRL_CLEAR
Definition spwm.h:451
@ SPWM_CTRL_NO_CHANGE
Definition spwm.h:453
@ SPWM_CTRL_INVERT
Definition spwm.h:452
@ SPWM_ERROR_BUSY
Definition spwm.h:248
@ SPWM_ERROR_PARAMETER
Definition spwm.h:246
@ SPWM_ERROR_TIMEOUT
Definition spwm.h:249
@ SPWM_OK
Definition spwm.h:244
@ SPWM_ERROR_NOT_INITIALIZED
Definition spwm.h:250
@ SPWM_ERROR
Definition spwm.h:245
@ SPWM_ERROR_UNSUPPORTED
Definition spwm.h:247
@ SPWM_TR_OUT_TC
Definition spwm.h:424
@ SPWM_TR_OUT_DISABLED
Definition spwm.h:429
@ SPWM_TR_OUT_CC1_MATCH
Definition spwm.h:426
@ SPWM_TR_OUT_UNDERFLOW
Definition spwm.h:423
@ SPWM_TR_OUT_OVERFLOW
Definition spwm.h:422
@ SPWM_TR_OUT_RESERVED6
Definition spwm.h:428
@ SPWM_TR_OUT_LINE_OUT
Definition spwm.h:427
@ SPWM_TR_OUT_CC0_MATCH
Definition spwm.h:425
@ SPWM_DSC_ERROR_NOSPACE
Definition spwm.h:528
@ SPWM_DSC_ERROR_INVALID
Definition spwm.h:531
@ SPWM_DSC_ERROR_RANGE
Definition spwm.h:527
@ SPWM_DSC_ERROR_NULL
Definition spwm.h:530
@ SPWM_DSC_ERROR_BUSY
Definition spwm.h:529
@ SPWM_DSC_OK
Definition spwm.h:526
@ SPWM_CAP_IN_2
Definition spwm.h:488
@ SPWM_CAP_IN_0
Definition spwm.h:486
@ SPWM_PWM_OUT_11
Definition spwm.h:485
@ SPWM_PWM_OUT_5
Definition spwm.h:479
@ SPWM_PWM_OUT_1
Definition spwm.h:475
@ SPWM_PWM_OUT_10
Definition spwm.h:484
@ SPWM_CAP_IN_1
Definition spwm.h:487
@ SPWM_PWM_OUT_9
Definition spwm.h:483
@ SPWM_PWM_OUT_0
Definition spwm.h:474
@ SPWM_PWM_OUT_6
Definition spwm.h:480
@ SPWM_PWM_OUT_3
Definition spwm.h:477
@ SPWM_PWM_OUT_4
Definition spwm.h:478
@ SPWM_PWM_OUT_7
Definition spwm.h:481
@ SPWM_PWM_OUT_2
Definition spwm.h:476
@ SPWM_PWM_OUT_8
Definition spwm.h:482
@ SPWM_IO_PIN_MAX
Definition spwm.h:489
@ SPWM_QUAD_MODE_RANGE0_CMP
Definition spwm.h:291
@ SPWM_QUAD_MODE_RANGE1_CAPT
Definition spwm.h:292
@ SPWM_QUAD_MODE_RANGE1_CMP
Definition spwm.h:293
@ SPWM_QUAD_MODE_RANGE0
Definition spwm.h:290
@ SPWM_QUAD_MODE_RANGE1_NUM
Definition spwm.h:294
@ SPWM_TR_RISING_EDGE
Definition spwm.h:409
@ SPWM_TR_NO_EDGE_DET
Definition spwm.h:412
@ SPWM_TR_ANY_EDGE
Definition spwm.h:411
@ SPWM_TR_FALLING_EDGE
Definition spwm.h:410
@ SPWM_QUAD_ENC_X4
Definition spwm.h:306
@ SPWM_QUAD_ENC_X2
Definition spwm.h:305
@ SPWM_QUAD_ENC_X1
Definition spwm.h:304
@ SPWM_QUAD_ENC_NUM
Definition spwm.h:308
@ SPWM_QUAD_ENC_UP_DOWN
Definition spwm.h:307
@ SPWM_COUNT_UPDOWN2
Definition spwm.h:280
@ SPWM_COUNT_DOWN
Definition spwm.h:278
@ SPWM_COUNT_UPDOWN1
Definition spwm.h:279
@ SPWM_COUNT_UP
Definition spwm.h:277
@ SPWM_LINE_SRC_H
Definition spwm.h:512
@ SPWM_LINE_SRC_NUM
Definition spwm.h:516
@ SPWM_LINE_SRC_PWM
Definition spwm.h:513
@ SPWM_LINE_SRC_L
Definition spwm.h:511
@ SPWM_LINE_SRC_Z
Definition spwm.h:515
@ SPWM_LINE_SRC_INV
Definition spwm.h:514
@ SPWM_DSC_REG_TR_CMD
Definition spwm.h:563
@ SPWM_DSC_REG_CC1_BUFF
Definition spwm.h:559
@ SPWM_DSC_REG_LINE_SEL_BUFF
Definition spwm.h:562
@ SPWM_DSC_REG_PERIOD
Definition spwm.h:557
@ SPWM_DSC_REG_CC1
Definition spwm.h:556
@ SPWM_DSC_REG_CC0
Definition spwm.h:555
@ SPWM_DSC_REG_CC0_BUFF
Definition spwm.h:558
@ SPWM_DSC_REG_INTR_STA
Definition spwm.h:564
@ SPWM_DSC_REG_PERIOD_BUFF
Definition spwm.h:560
@ SPWM_DSC_REG_LINE_SEL
Definition spwm.h:561
@ SPWM_DSC_SYN_SET
Definition spwm.h:544
@ SPWM_DSC_SYN_CLEAR
Definition spwm.h:545
@ SPWM_DSC_SYN_WAIT_ALL
Definition spwm.h:542
@ SPWM_DSC_SYN_WAIT_ANY
Definition spwm.h:543
@ SPWM_DISABLE_Z
Definition spwm.h:462
@ SPWM_DISABLE_HIGH
Definition spwm.h:465
@ SPWM_DISABLE_RETAIN
Definition spwm.h:463
@ SPWM_DISABLE_LOW
Definition spwm.h:464
spwm_status_en spwm_enable_desc_interrupt(spwm_instance_en id, uint8_t desc_id)
spwm_dsc_status_en spwm_dsc_chain_start(spwm_instance_en id, const spwm_dsc_chain_t *chain, uint8_t desc_id, bool enable_interrupt)
spwm_status_en spwm_set_cc0_buff(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_status_en spwm_init(spwm_instance_en id)
spwm_status_en spwm_disable_interrupt(spwm_instance_en id, uint8_t group_id, spwm_intr_en intr)
spwm_dsc_status_en spwm_dsc_chain_init(spwm_instance_en id, spwm_dsc_chain_t *chain, uint32_t start_offset_bytes, uint32_t block_size_bytes)
spwm_status_en spwm_set_sema(spwm_instance_en id, uint8_t group_id, uint8_t sema_id, uint8_t val)
spwm_status_en spwm_set_period(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_status_en spwm_set_counter(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_status_en spwm_set_prescale(spwm_instance_en id, uint8_t group_id, spwm_prescale_en prescale)
spwm_status_en spwm_set_trig_in_all(spwm_instance_en id, uint8_t group_id, const spwm_trigger_in_cfg_t *cfg)
spwm_status_en spwm_configure(spwm_instance_en id, uint8_t group_id, const spwm_config_t *config)
spwm_status_en spwm_disable_desc_interrupt(spwm_instance_en id, uint8_t desc_id)
spwm_status_en spwm_get_cc0(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_dsc_status_en spwm_dsc_chain_get_status(spwm_instance_en id, const spwm_dsc_chain_t *chain, uint8_t instance, spwm_dsc_chain_status_t *status)
spwm_status_en spwm_get_counter(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_dsc_chain_t * spwm_dsc_chain_create(void)
spwm_status_en spwm_enable(spwm_instance_en id, uint8_t group_id)
spwm_status_en spwm_enable_interrupt(spwm_instance_en id, uint8_t group_id, spwm_intr_en intr)
spwm_status_en spwm_get_line_sel_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_dsc_status_en spwm_dsc_chain_add_nxt(spwm_dsc_chain_t *chain, uint32_t target_offset_bytes)
spwm_status_en spwm_clkdiv_enable(spwm_instance_en id, uint8_t clkdiv_id, bool enable, uint8_t phase_align_sel)
spwm_status_en spwm_get_line_sel(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_status_en spwm_otrigclk_config(spwm_instance_en id, uint8_t clkdiv_id)
spwm_status_en spwm_clear_interrupt(spwm_instance_en id, uint8_t group_id, uint32_t mask)
spwm_status_en spwm_group_trigger(spwm_instance_en id, uint8_t group_trigger_id)
spwm_status_en spwm_set_sema_sel(spwm_instance_en id, uint8_t group_id, int sema_id, spwm_trigger_out_en out)
spwm_status_en spwm_clear_desc_interrupt(spwm_instance_en id, uint8_t desc_id)
spwm_status_en spwm_clkdiv_config(spwm_instance_en id, uint8_t clkdiv_id, uint32_t int_div, uint32_t fra_div)
spwm_status_en spwm_disable_all_interrupts(spwm_instance_en id, uint8_t group_id)
spwm_status_en spwm_get_cc1(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_status_en spwm_set_cc0(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_dsc_status_en spwm_dsc_chain_add_syn(spwm_dsc_chain_t *chain, spwm_dsc_syn_op_en opcode, uint8_t group, uint32_t counter_mask, bool last)
spwm_status_en spwm_set_line_sel(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_dsc_status_en spwm_dsc_mem_alloc(size_t size_bytes, uint16_t *handle)
spwm_status_en spwm_get_cc1_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_status_en spwm_set_one_shot(spwm_instance_en id, uint8_t group_id, bool one_shot)
spwm_status_en spwm_trigger(spwm_instance_en id, uint8_t group_id, spwm_trigger_en trig)
spwm_status_en spwm_get_period_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_status_en spwm_set_cc1(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_status_en spwm_disable(spwm_instance_en id, uint8_t group_id)
spwm_status_en spwm_set_trig_out(spwm_instance_en id, uint8_t group_id, int out_id, spwm_trigger_out_en out)
spwm_status_en spwm_clear_all_interrupts(spwm_instance_en id, uint8_t group_id)
void spwm_dsc_chain_destroy(spwm_dsc_chain_t *chain)
spwm_status_en spwm_deinit(spwm_instance_en id)
spwm_status_en spwm_register_desc_callback(spwm_instance_en id, spwm_desc_isr_cb_t cb, void *param)
spwm_status_en spwm_set_deadtime(spwm_instance_en id, uint8_t group_id, uint32_t deadtime, uint32_t compl_deadtime)
spwm_status_en spwm_output_select(spwm_instance_en id, uint8_t group_id, spwm_io_pin_en pin, bool compl)
spwm_status_en spwm_set_cc1_buff(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_status_en spwm_get_cc0_buff(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_status_en spwm_set_count_mode(spwm_instance_en id, uint8_t group_id, spwm_count_mode_en count_mode)
spwm_status_en spwm_set_trig_in(spwm_instance_en id, uint8_t group_id, spwm_trigger_en trigger, const spwm_trigger_in_cfg_t *config)
spwm_status_en spwm_get_period(spwm_instance_en id, uint8_t group_id, uint32_t *val)
spwm_status_en spwm_register_callback(spwm_instance_en id, spwm_isr_cb_t cb, void *user_ctx)
spwm_dsc_status_en spwm_dsc_chain_init_for_handle(spwm_instance_en id, spwm_dsc_chain_t *chain, uint16_t handle)
uint32_t spwm_make_line_sel(spwm_line_src_en out, spwm_line_src_en compl)
spwm_status_en spwm_set_period_buff(spwm_instance_en id, uint8_t group_id, uint32_t val)
spwm_dsc_status_en spwm_dsc_chain_add_cfg(spwm_dsc_chain_t *chain, uint8_t group_id, spwm_dsc_reg_id_en reg_id, const uint32_t *values, uint32_t num_values, bool last)
spwm_status_en spwm_set_clkdiv(spwm_instance_en id, uint8_t group_id, uint8_t clkdiv_id)
spwm_status_en spwm_set_line_sel_buff(spwm_instance_en id, uint8_t group_id, uint32_t val)
void spwm_dsc_mem_free(uint16_t handle)
spwm_status_en spwm_get_interrupt_status(spwm_instance_en id, uint8_t group_id, uint32_t *irq_status)
spwm_status_en spwm_set_mode(spwm_instance_en id, uint8_t group_id, spwm_mode_en mode)
Unified SPWM configuration structure.
Definition spwm.h:719
spwm_prescale_en prescale
Definition spwm.h:737
uint32_t cc1_buff
Definition spwm.h:723
spwm_pwmpr_cfg_t pwmpr
Definition spwm.h:743
spwm_count_mode_en count_mode
Definition spwm.h:728
spwm_mode_en mode
Definition spwm.h:735
spwm_pwm_cfg_t pwm
Definition spwm.h:740
uint32_t period_buff
Definition spwm.h:727
spwm_trigger_in_cfg_t trig_in[SPWM_TRIG_IN_COUNT]
Definition spwm.h:730
int clkdiv_sel
Definition spwm.h:724
spwm_timer_cfg_t timer
Definition spwm.h:739
uint32_t counter
Definition spwm.h:726
uint32_t cc1
Definition spwm.h:722
spwm_sr_cfg_t sr
Definition spwm.h:744
spwm_quad_cfg_t quad
Definition spwm.h:742
uint32_t period
Definition spwm.h:725
spwm_pwmdt_cfg_t pwmdt
Definition spwm.h:741
uint32_t cc0
Definition spwm.h:720
uint32_t cc0_buff
Definition spwm.h:721
spwm_trigger_out_en trig_out[SPWM_TRIG_OUT_COUNT]
Definition spwm.h:732
bool one_shot
Definition spwm.h:736
Descriptor chain execution status.
Definition spwm.h:755
bool irq_pending
Definition spwm.h:760
bool irq_enabled
Definition spwm.h:759
bool running
Definition spwm.h:756
bool done
Definition spwm.h:757
bool error
Definition spwm.h:758
PWM mode configuration.
Definition spwm.h:657
spwm_pwm_ctrl_mode_en overflow_mode
Definition spwm.h:671
bool pwm_sync_kill
Definition spwm.h:668
bool pwm_stop_on_kill
Definition spwm.h:667
bool auto_reload_period
Definition spwm.h:660
spwm_pwm_ctrl_mode_en cc0_match_mode
Definition spwm.h:670
uint32_t line_sel
Definition spwm.h:674
bool cc0_match_up_en
Definition spwm.h:662
spwm_pwm_ctrl_mode_en cc1_match_mode
Definition spwm.h:673
bool cc1_match_down_en
Definition spwm.h:665
bool pwm_imm_kill
Definition spwm.h:666
bool auto_reload_cc0
Definition spwm.h:658
uint32_t line_sel_buff
Definition spwm.h:675
spwm_disable_mode_en disable_mode
Definition spwm.h:669
bool auto_reload_cc1
Definition spwm.h:659
spwm_pwm_ctrl_mode_en underflow_mode
Definition spwm.h:672
bool cc0_match_down_en
Definition spwm.h:664
bool auto_reload_line_sel
Definition spwm.h:661
bool cc1_match_up_en
Definition spwm.h:663
PWM with Dead-Time configuration.
Definition spwm.h:684
uint16_t deadtime
Definition spwm.h:686
spwm_pwm_cfg_t pwm
Definition spwm.h:685
uint16_t compl_deadtime
Definition spwm.h:687
PWM with Pseudo-Random configuration.
Definition spwm.h:697
uint16_t lfsr_tap
Definition spwm.h:700
spwm_pwm_cfg_t pwm
Definition spwm.h:698
uint16_t lfsr_seed
Definition spwm.h:699
Quadrature decoder configuration.
Definition spwm.h:640
spwm_trigger_in_cfg_t trig_b
Definition spwm.h:645
spwm_quad_encoding_en encoding
Definition spwm.h:648
spwm_quad_mode_en quad_mode
Definition spwm.h:647
bool auto_reload_period
Definition spwm.h:643
spwm_trigger_in_cfg_t trig_a
Definition spwm.h:644
bool auto_reload_cc0
Definition spwm.h:641
spwm_trigger_in_cfg_t trig_idx
Definition spwm.h:646
bool auto_reload_cc1
Definition spwm.h:642
Shift Register configuration.
Definition spwm.h:708
uint8_t auto_reload_cc0
Definition spwm.h:709
uint8_t auto_reload_cc1
Definition spwm.h:710
Timer/Counter mode configuration.
Definition spwm.h:629
bool auto_reload_cc1
Definition spwm.h:631
bool auto_reload_cc0
Definition spwm.h:630
Input trigger configuration structure.
Definition spwm.h:618
spwm_trigger_src_en src
Definition spwm.h:619
spwm_trigger_edge_sel_en edge
Definition spwm.h:620
bool invert
Definition spwm.h:621