HPM SDK
HPMicro Software Development Kit
hpm_sei_drv.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023-2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_SEI_DRV_H
9 #define HPM_SEI_DRV_H
10 
11 #include "hpm_common.h"
12 #include "hpm_sei_regs.h"
13 #include "hpm_soc_feature.h"
14 #include "hpm_soc_ip_feature.h"
15 
19 typedef enum {
23 
27 typedef enum {
31 
35 typedef enum {
40 
44 typedef enum {
48 
52 typedef enum {
56 
60 typedef enum {
65 
69 typedef enum {
73 
77 typedef enum {
81 
85 typedef enum {
91 
95 typedef enum {
105 typedef enum {
132 } sei_irq_event_t;
137 typedef enum {
164 } sei_dma_en_t;
169 #define SEI_SELECT_CMD true
170 #define SEI_SELECT_DATA false
175 #define SEI_DAT_CMD (1UL)
176 #define SEI_DATA_CONST_0 (30UL)
177 #define SEI_DATA_CONST_1 (31UL)
178 
182 #define SEI_INSTR_OP_HALT 0u
183 #define SEI_INSTR_OP_JUMP 1u
184 #define SEI_INSTR_OP_SEND_WDG 2u
185 #define SEI_INSTR_OP_SEND 3u
186 #define SEI_INSTR_OP_WAIT_WDG 4u
187 #define SEI_INSTR_OP_WAIT 5u
188 #define SEI_INSTR_OP_RECV_WDG 6u
189 #define SEI_INSTR_OP_RECV 7u
194 #define SEI_INSTR_M_CK_LOW 0u
195 #define SEI_INSTR_M_CK_RISE_FALL 1u
196 #define SEI_INSTR_M_CK_FALL_RISE 2u
197 #define SEI_INSTR_M_CK_HIGH 3u
202 #define SEI_INSTR_S_CK_DEFAULT 0u
203 #define SEI_INSTR_S_CK_TRX_EXCH 1u
204 #define SEI_INSTR_S_CK_TIMEOUT_EN 2u
205 #define SEI_INSTR_S_CK_TRX_EXCH_TIMEOUT_EN 3u
210 #define SEI_SYNC_SLAVE_RX_TX_POINT_ON_RISE_EDGE 0x8002
211 #define SEI_SYNC_SLAVE_RX_TX_POINT_ON_FALL_EDGE 0x0002
212 
216 #define SEI_JUMP_INIT_INSTR_IDX 0x00u
217 #define SEI_JUMP_WDG_INSTR_IDX 0x01u
218 #define SEI_JUMP_CMD_TABLE_INSTR_IDX0 0x10u
219 #define SEI_JUMP_CMD_TABLE_INSTR_IDX1 0x11u
220 #define SEI_JUMP_CMD_TABLE_INSTR_IDX2 0x12u
221 #define SEI_JUMP_CMD_TABLE_INSTR_IDX3 0x13u
222 #define SEI_JUMP_CMD_TABLE_INSTR_IDX4 0x14u
223 #define SEI_JUMP_CMD_TABLE_INSTR_IDX5 0x15u
224 #define SEI_JUMP_CMD_TABLE_INSTR_IDX6 0x16u
225 #define SEI_JUMP_CMD_TABLE_INSTR_IDX7 0x17u
226 #define SEI_JUMP_CMD_TABLE_INSTR_IDX8 0x18u
227 #define SEI_JUMP_CMD_TABLE_INSTR_IDX9 0x19u
228 #define SEI_JUMP_CMD_TABLE_INSTR_IDX10 0x1Au
229 #define SEI_JUMP_CMD_TABLE_INSTR_IDX11 0x1Bu
230 #define SEI_JUMP_CMD_TABLE_INSTR_IDX12 0x1Cu
231 #define SEI_JUMP_CMD_TABLE_INSTR_IDX13 0x1Du
232 #define SEI_JUMP_CMD_TABLE_INSTR_IDX14 0x1Eu
233 #define SEI_JUMP_CMD_TABLE_INSTR_IDX15 0x1Fu
238 typedef struct {
240  uint8_t data_cdm_idx;
241  uint8_t data_base_idx;
242  uint8_t init_instr_idx;
245  uint8_t wdg_instr_idx;
246  uint16_t wdg_time;
252 typedef struct {
257  uint32_t baudrate;
263 typedef struct {
268  uint32_t max_baudrate;
269  uint16_t ck0_timeout_us;
270  uint16_t ck1_timeout_us;
276 typedef struct {
277  uint8_t wait_len;
278  uint8_t data_len;
283  uint32_t baudrate;
289 typedef struct {
292  uint32_t src_clk_freq;
301 typedef struct {
311 #if defined(HPM_IP_FEATURE_SEI_TRIG_IN_DIV) && HPM_IP_FEATURE_SEI_TRIG_IN_DIV
312  uint8_t trig_in0_div;
313  uint8_t trig_in1_div;
314 #endif
320 typedef struct {
329 typedef struct {
334  uint8_t word_len;
337  uint8_t crc_len;
338  uint8_t last_bit;
339  uint8_t first_bit;
340  uint8_t max_bit;
341  uint8_t min_bit;
342  uint32_t gold_value;
343  uint32_t crc_init_value;
344  uint32_t crc_poly;
350 typedef struct {
351  uint32_t cmd_min_value;
352  uint32_t cmd_max_value;
353  uint32_t cmd_mask_value;
354  uint8_t instr_idx[8];
360 typedef struct {
377 typedef struct {
378  bool enable;
379  uint8_t output_select;
380  uint16_t delay;
386 typedef struct {
387  uint8_t acc_data_idx;
388  uint8_t spd_data_idx;
389  uint8_t rev_data_idx;
390  uint8_t pos_data_idx;
395  uint8_t latch_select;
397  uint16_t sample_window;
404 typedef struct {
405  uint8_t acc_data_idx;
406  uint8_t spd_data_idx;
407  uint8_t rev_data_idx;
408  uint8_t pos_data_idx;
415  uint8_t latch_select;
419 #if defined(__cplusplus)
420 extern "C" {
421 #endif /* __cplusplus */
422 
431 static inline void sei_set_engine_enable(SEI_Type *ptr, uint8_t idx, bool enable)
432 {
433  if (enable) {
434  ptr->CTRL[idx].ENGINE.CTRL |= SEI_CTRL_ENGINE_CTRL_ENABLE_MASK;
435  } else {
436  ptr->CTRL[idx].ENGINE.CTRL &= ~SEI_CTRL_ENGINE_CTRL_ENABLE_MASK;
437  }
438 }
439 
445 static inline void sei_set_engine_rewind(SEI_Type *ptr, uint8_t idx)
446 {
447  ptr->CTRL[idx].ENGINE.CTRL |= SEI_CTRL_ENGINE_CTRL_REWIND_MASK;
448 }
449 
456 static inline void sei_set_engine_init_instr_idx(SEI_Type *ptr, uint8_t idx, uint8_t init_instr_idx)
457 {
458  ptr->CTRL[idx].ENGINE.PTR_CFG = (ptr->CTRL[idx].ENGINE.PTR_CFG & ~SEI_CTRL_ENGINE_PTR_CFG_POINTER_INIT_MASK)
460 }
461 
468 static inline void sei_set_engine_wdg_instr_idx(SEI_Type *ptr, uint8_t idx, uint8_t wdg_instr_idx)
469 {
470  ptr->CTRL[idx].ENGINE.PTR_CFG = (ptr->CTRL[idx].ENGINE.PTR_CFG & ~SEI_CTRL_ENGINE_PTR_CFG_POINTER_WDOG_MASK)
472 }
473 
480 static inline void sei_set_engine_data_base_idx(SEI_Type *ptr, uint8_t idx, uint8_t data_base_idx)
481 {
482  ptr->CTRL[idx].ENGINE.PTR_CFG = (ptr->CTRL[idx].ENGINE.PTR_CFG & ~SEI_CTRL_ENGINE_PTR_CFG_DAT_BASE_MASK)
483  | SEI_CTRL_ENGINE_PTR_CFG_DAT_BASE_SET(data_base_idx);
484 }
485 
494 static inline void sei_set_trig_input_in0_enable(SEI_Type *ptr, uint8_t idx, bool enable)
495 {
496  if (enable) {
497  ptr->CTRL[idx].TRG.IN_CFG |= SEI_CTRL_TRG_IN_CFG_IN0_EN_MASK;
498  } else {
499  ptr->CTRL[idx].TRG.IN_CFG &= ~SEI_CTRL_TRG_IN_CFG_IN0_EN_MASK;
500  }
501 }
502 
511 static inline void sei_set_trig_input_in1_enable(SEI_Type *ptr, uint8_t idx, bool enable)
512 {
513  if (enable) {
514  ptr->CTRL[idx].TRG.IN_CFG |= SEI_CTRL_TRG_IN_CFG_IN1_EN_MASK;
515  } else {
516  ptr->CTRL[idx].TRG.IN_CFG &= ~SEI_CTRL_TRG_IN_CFG_IN1_EN_MASK;
517  }
518 }
519 
528 static inline void sei_set_trig_input_period_enable(SEI_Type *ptr, uint8_t idx, bool enable)
529 {
530  if (enable) {
531  ptr->CTRL[idx].TRG.IN_CFG |= SEI_CTRL_TRG_IN_CFG_PRD_EN_MASK;
532  } else {
533  ptr->CTRL[idx].TRG.IN_CFG &= ~SEI_CTRL_TRG_IN_CFG_PRD_EN_MASK;
534  }
535 }
536 
544 static inline void sei_set_trig_input_soft_enable(SEI_Type *ptr, uint8_t idx)
545 {
546  ptr->CTRL[idx].TRG.SW |= SEI_CTRL_TRG_SW_SOFT_MASK;
547 }
548 
556 static inline void sei_set_trig_input_command_value(SEI_Type *ptr, uint8_t idx, sei_trig_in_type_t type, uint32_t data)
557 {
558  ptr->CTRL[idx].TRG_TABLE.CMD[type] = data;
559 }
560 
568 static inline uint32_t sei_get_trig_input_time(SEI_Type *ptr, uint8_t idx, sei_trig_in_type_t type)
569 {
570  return ptr->CTRL[idx].TRG_TABLE.TIME[type];
571 }
572 
584 static inline uint32_t sei_get_latch_time(SEI_Type *ptr, uint8_t idx, uint8_t latch_idx)
585 {
586  return ptr->CTRL[idx].LATCH[latch_idx].TIME;
587 }
588 
595  static inline uint16_t sei_get_xcvr_baud_div(SEI_Type *ptr, uint8_t idx)
596  {
597  return SEI_CTRL_XCVR_BAUD_CFG_BAUD_DIV_GET(ptr->CTRL[idx].XCVR.BAUD_CFG);
598  }
599 
606 static inline void sei_set_xcvr_rx_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
607 {
608  uint32_t tmp;
609 
610  assert(point > 0);
611  tmp = ptr->CTRL[idx].XCVR.DATA_CFG;
614  ptr->CTRL[idx].XCVR.DATA_CFG = tmp;
615 }
616 
623 static inline void sei_set_xcvr_tx_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
624 {
625  uint32_t tmp;
626 
627  assert(point > 0);
628  tmp = ptr->CTRL[idx].XCVR.DATA_CFG;
631  ptr->CTRL[idx].XCVR.DATA_CFG = tmp;
632 }
633 
640 static inline void sei_set_xcvr_ck0_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
641 {
642  uint32_t tmp;
643 
644  assert(point > 0);
645  tmp = ptr->CTRL[idx].XCVR.CLK_CFG;
648  ptr->CTRL[idx].XCVR.CLK_CFG = tmp;
649 }
650 
657 static inline void sei_set_xcvr_ck1_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
658 {
659  uint32_t tmp;
660 
661  assert(point > 0);
662  tmp = ptr->CTRL[idx].XCVR.CLK_CFG;
665  ptr->CTRL[idx].XCVR.CLK_CFG = tmp;
666 }
667 
674 static inline uint16_t sei_get_xcvr_ck0_point(SEI_Type *ptr, uint8_t idx)
675 {
676  return SEI_CTRL_XCVR_CLK_CFG_CK0_POINT_GET(ptr->CTRL[idx].XCVR.CLK_CFG);
677 }
678 
685 static inline uint16_t sei_get_xcvr_ck1_point(SEI_Type *ptr, uint8_t idx)
686 {
687  return SEI_CTRL_XCVR_CLK_CFG_CK1_POINT_GET(ptr->CTRL[idx].XCVR.CLK_CFG);
688 }
689 
696 static inline uint32_t sei_get_command_value(SEI_Type *ptr, uint8_t idx)
697 {
698  return ptr->CTRL[idx].CMD.CMD;
699 }
700 
706 static inline void sei_set_command_rewind(SEI_Type *ptr, uint8_t idx)
707 {
708  ptr->CTRL[idx].CMD.MODE |= SEI_CTRL_CMD_MODE_REWIND_MASK;
709 }
710 
711 #if defined(HPM_IP_FEATURE_SEI_LATCH_REWIND_CMD) && HPM_IP_FEATURE_SEI_LATCH_REWIND_CMD
719 static inline void sei_config_command_rewind_by_latch(SEI_Type *ptr, uint8_t idx, uint8_t latch_select, bool enable)
720 {
721  ptr->CTRL[idx].TRG.IN_CFG = (ptr->CTRL[idx].TRG.IN_CFG & ~(SEI_CTRL_TRG_IN_CFG_REWIND_EN_MASK | SEI_CTRL_TRG_IN_CFG_REWIND_SEL_MASK))
723 }
724 #endif
725 
732 static inline void sei_set_data_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
733 {
734  ptr->DAT[idx].DATA = data;
735 }
736 
743 static inline uint32_t sei_get_data_value(SEI_Type *ptr, uint8_t idx)
744 {
745  return ptr->DAT[idx].DATA;
746 }
747 
753 static inline void sei_set_data_rewind(SEI_Type *ptr, uint8_t idx)
754 {
755  ptr->DAT[idx].MODE |= SEI_DAT_MODE_REWIND_MASK;
756 }
757 
764 static inline void sei_set_sample_pos_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
765 {
766  ptr->CTRL[idx].POS.SMP_POS = data;
767 }
768 
775 static inline void sei_set_sample_rev_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
776 {
777  ptr->CTRL[idx].POS.SMP_REV = data;
778 }
779 
786 static inline void sei_set_sample_spd_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
787 {
788  ptr->CTRL[idx].POS.SMP_SPD = data;
789 }
790 
797 static inline void sei_set_sample_acc_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
798 {
799  ptr->CTRL[idx].POS.SMP_ACC = data;
800 }
801 
808 static inline void sei_set_update_pos_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
809 {
810  ptr->CTRL[idx].POS.UPD_POS = data;
811 }
812 
819 static inline void sei_set_update_rev_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
820 {
821  ptr->CTRL[idx].POS.UPD_REV = data;
822 }
823 
830 static inline void sei_set_update_spd_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
831 {
832  ptr->CTRL[idx].POS.UPD_SPD = data;
833 }
834 
841 static inline void sei_set_update_acc_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
842 {
843  ptr->CTRL[idx].POS.UPD_ACC = data;
844 }
845 
852 static inline void sei_set_update_time_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
853 {
854  ptr->CTRL[idx].POS.UPD_TIME = data;
855 }
856 
863 static inline void sei_set_irq_match_instr0_ptr(SEI_Type *ptr, uint8_t idx, uint8_t instr_idx)
864 {
865  ptr->CTRL[idx].IRQ.POINTER0 = SEI_CTRL_IRQ_POINTER0_POINTER_SET(instr_idx);
866 }
867 
874 static inline void sei_set_irq_match_instr1_ptr(SEI_Type *ptr, uint8_t idx, uint8_t instr_idx)
875 {
876  ptr->CTRL[idx].IRQ.POINTER1 = SEI_CTRL_IRQ_POINTER1_POINTER_SET(instr_idx);
877 }
878 
885 static inline void sei_set_irq_match_instr0_value(SEI_Type *ptr, uint8_t idx, uint32_t instr_value)
886 {
887  ptr->CTRL[idx].IRQ.INSTR0 = SEI_CTRL_IRQ_INSTR0_INSTR_SET(instr_value);
888 }
889 
896 static inline void sei_set_irq_match_instr1_value(SEI_Type *ptr, uint8_t idx, uint32_t instr_value)
897 {
898  ptr->CTRL[idx].IRQ.INSTR1 = SEI_CTRL_IRQ_INSTR1_INSTR_SET(instr_value);
899 }
900 
910 static inline void sei_set_irq_enable(SEI_Type *ptr, uint8_t idx, uint32_t irq_mask, bool enable)
911 {
912  if (enable) {
913  ptr->CTRL[idx].IRQ.INT_EN |= irq_mask;
914  } else {
915  ptr->CTRL[idx].IRQ.INT_EN &= ~irq_mask;
916  }
917 }
918 
925 static inline uint32_t sei_get_irq_enable_status(SEI_Type *ptr, uint8_t idx)
926 {
927  return ptr->CTRL[idx].IRQ.INT_EN;
928 }
929 
938 static inline bool sei_get_irq_status(SEI_Type *ptr, uint8_t idx, uint32_t irq_mask)
939 {
940  return ((ptr->CTRL[idx].IRQ.INT_FLAG & irq_mask) == irq_mask) ? true : false;
941 }
942 
950  static inline uint32_t sei_get_irq_flag(SEI_Type *ptr, uint8_t idx)
951  {
952  return ptr->CTRL[idx].IRQ.INT_FLAG;
953  }
954 
961 static inline void sei_clear_irq_flag(SEI_Type *ptr, uint8_t idx, uint32_t irq_mask)
962 {
963  ptr->CTRL[idx].IRQ.INT_FLAG = irq_mask;
964 }
965 
975 static inline void sei_set_dma_req_enable(SEI_Type *ptr, uint8_t idx, uint32_t dma_en_mask, bool enable)
976 {
977  if (enable) {
978  ptr->CTRL[idx].DMA_EN |= dma_en_mask;
979  } else {
980  ptr->CTRL[idx].DMA_EN &= ~dma_en_mask;
981  }
982 }
983 
992 
1003 hpm_stat_t sei_cmd_data_format_config_init(SEI_Type *ptr, bool cmd_data_select, uint8_t idx, sei_data_format_config_t *config);
1004 
1013 hpm_stat_t sei_cmd_table_config_init(SEI_Type *ptr, uint8_t idx, uint8_t table_idx, sei_command_table_config_t *config);
1014 
1032 hpm_stat_t sei_state_transition_config_init(SEI_Type *ptr, uint8_t idx, uint8_t latch_idx, uint8_t state, sei_state_transition_config_t *config);
1033 
1047 
1056 
1065 
1074 
1083 
1092 
1142 void sei_set_instr(SEI_Type *ptr, uint8_t idx, uint8_t op, uint8_t ck, uint8_t crc, uint8_t data, uint8_t opr);
1143 
1144 
1145 #if defined(__cplusplus)
1146 }
1147 #endif /* __cplusplus */
1148 
1149 #endif
#define SEI_CTRL_IRQ_INT_FLAG_TRX_ERR_MASK
Definition: hpm_sei_regs.h:2416
#define SEI_CTRL_XCVR_CLK_CFG_CK0_POINT_MASK
Definition: hpm_sei_regs.h:573
#define SEI_CTRL_CMD_MODE_REWIND_MASK
Definition: hpm_sei_regs.h:1073
#define SEI_CTRL_DMA_EN_TIMEOUT_MASK
Definition: hpm_sei_regs.h:2946
#define SEI_CTRL_XCVR_DATA_CFG_RXD_POINT_SET(x)
Definition: hpm_sei_regs.h:554
#define SEI_CTRL_DMA_EN_PTR1_ST_MASK
Definition: hpm_sei_regs.h:3026
#define SEI_CTRL_ENGINE_PTR_CFG_POINTER_INIT_MASK
Definition: hpm_sei_regs.h:254
#define SEI_CTRL_IRQ_INT_FLAG_LATCH2_MASK
Definition: hpm_sei_regs.h:2376
#define SEI_CTRL_IRQ_INT_FLAG_LATCH1_MASK
Definition: hpm_sei_regs.h:2386
#define SEI_CTRL_DMA_EN_PTR1_END_MASK
Definition: hpm_sei_regs.h:2986
#define SEI_CTRL_IRQ_INT_FLAG_PTR0_ST_MASK
Definition: hpm_sei_regs.h:2496
#define SEI_CTRL_IRQ_INSTR1_INSTR_SET(x)
Definition: hpm_sei_regs.h:2807
#define SEI_CTRL_IRQ_POINTER0_POINTER_SET(x)
Definition: hpm_sei_regs.h:2774
#define SEI_CTRL_IRQ_INT_FLAG_TRIGER1_MASK
Definition: hpm_sei_regs.h:2336
#define SEI_CTRL_XCVR_DATA_CFG_TXD_POINT_SET(x)
Definition: hpm_sei_regs.h:544
#define SEI_CTRL_ENGINE_CTRL_ENABLE_MASK
Definition: hpm_sei_regs.h:200
#define SEI_CTRL_TRG_IN_CFG_IN0_EN_MASK
Definition: hpm_sei_regs.h:790
#define SEI_CTRL_DMA_EN_INSTR1_ST_MASK
Definition: hpm_sei_regs.h:3006
#define SEI_CTRL_DMA_EN_TRIGER0_MASK
Definition: hpm_sei_regs.h:2886
#define SEI_CTRL_DMA_EN_LATCH0_MASK
Definition: hpm_sei_regs.h:2936
#define SEI_CTRL_DMA_EN_TRIGER1_MASK
Definition: hpm_sei_regs.h:2876
#define SEI_CTRL_IRQ_INT_FLAG_TRG_ERR2_MASK
Definition: hpm_sei_regs.h:2286
#define SEI_CTRL_IRQ_INT_FLAG_PTR1_ST_MASK
Definition: hpm_sei_regs.h:2486
#define SEI_CTRL_IRQ_INT_FLAG_PTR0_END_MASK
Definition: hpm_sei_regs.h:2456
#define SEI_CTRL_IRQ_INT_FLAG_SMP_ERR_MASK
Definition: hpm_sei_regs.h:2356
#define SEI_CTRL_DMA_EN_WDOG_MASK
Definition: hpm_sei_regs.h:3046
#define SEI_DAT_MODE_REWIND_MASK
Definition: hpm_sei_regs.h:3260
#define SEI_CTRL_IRQ_INT_FLAG_INSTR1_END_MASK
Definition: hpm_sei_regs.h:2426
#define SEI_CTRL_ENGINE_PTR_CFG_POINTER_INIT_SET(x)
Definition: hpm_sei_regs.h:256
#define SEI_CTRL_DMA_EN_LATCH2_MASK
Definition: hpm_sei_regs.h:2916
#define SEI_CTRL_IRQ_INT_FLAG_TRIGER0_MASK
Definition: hpm_sei_regs.h:2346
#define SEI_CTRL_IRQ_INT_FLAG_TIMEOUT_MASK
Definition: hpm_sei_regs.h:2406
#define SEI_CTRL_IRQ_INT_FLAG_EXCEPT_MASK
Definition: hpm_sei_regs.h:2516
#define SEI_CTRL_IRQ_POINTER1_POINTER_SET(x)
Definition: hpm_sei_regs.h:2785
#define SEI_CTRL_DMA_EN_SMP_ERR_MASK
Definition: hpm_sei_regs.h:2896
#define SEI_CTRL_DMA_EN_TRX_ERR_MASK
Definition: hpm_sei_regs.h:2956
#define SEI_CTRL_IRQ_INT_FLAG_STALL_MASK
Definition: hpm_sei_regs.h:2526
#define SEI_CTRL_DMA_EN_PTR0_ST_MASK
Definition: hpm_sei_regs.h:3036
#define SEI_CTRL_DMA_EN_TRG_ERR0_MASK
Definition: hpm_sei_regs.h:2846
#define SEI_CTRL_IRQ_INT_FLAG_WDOG_MASK
Definition: hpm_sei_regs.h:2506
#define SEI_CTRL_DMA_EN_INSTR0_END_MASK
Definition: hpm_sei_regs.h:2976
#define SEI_CTRL_IRQ_INT_FLAG_TRG_ERR1_MASK
Definition: hpm_sei_regs.h:2296
#define SEI_CTRL_IRQ_INT_FLAG_INSTR0_ST_MASK
Definition: hpm_sei_regs.h:2476
#define SEI_CTRL_DMA_EN_LATCH1_MASK
Definition: hpm_sei_regs.h:2926
#define SEI_CTRL_DMA_EN_PTR0_END_MASK
Definition: hpm_sei_regs.h:2996
#define SEI_CTRL_IRQ_INT_FLAG_PTR1_END_MASK
Definition: hpm_sei_regs.h:2446
#define SEI_CTRL_ENGINE_PTR_CFG_POINTER_WDOG_MASK
Definition: hpm_sei_regs.h:244
#define SEI_CTRL_IRQ_INSTR0_INSTR_SET(x)
Definition: hpm_sei_regs.h:2796
#define SEI_CTRL_DMA_EN_TRG_ERR3_MASK
Definition: hpm_sei_regs.h:2816
#define SEI_CTRL_ENGINE_CTRL_REWIND_MASK
Definition: hpm_sei_regs.h:188
#define SEI_CTRL_XCVR_CLK_CFG_CK1_POINT_GET(x)
Definition: hpm_sei_regs.h:566
#define SEI_CTRL_XCVR_DATA_CFG_RXD_POINT_MASK
Definition: hpm_sei_regs.h:552
#define SEI_CTRL_DMA_EN_TRIGER3_MASK
Definition: hpm_sei_regs.h:2856
#define SEI_CTRL_DMA_EN_TRIGER2_MASK
Definition: hpm_sei_regs.h:2866
#define SEI_CTRL_XCVR_DATA_CFG_TXD_POINT_MASK
Definition: hpm_sei_regs.h:542
#define SEI_CTRL_DMA_EN_INSTR1_END_MASK
Definition: hpm_sei_regs.h:2966
#define SEI_CTRL_IRQ_INT_FLAG_INSTR1_ST_MASK
Definition: hpm_sei_regs.h:2466
#define SEI_CTRL_XCVR_CLK_CFG_CK0_POINT_GET(x)
Definition: hpm_sei_regs.h:576
#define SEI_CTRL_XCVR_CLK_CFG_CK0_POINT_SET(x)
Definition: hpm_sei_regs.h:575
#define SEI_CTRL_TRG_IN_CFG_IN1_EN_MASK
Definition: hpm_sei_regs.h:764
#define SEI_CTRL_DMA_EN_EXCEPT_MASK
Definition: hpm_sei_regs.h:3056
#define SEI_CTRL_DMA_EN_TRG_ERR2_MASK
Definition: hpm_sei_regs.h:2826
#define SEI_CTRL_IRQ_INT_FLAG_LATCH3_MASK
Definition: hpm_sei_regs.h:2366
#define SEI_CTRL_XCVR_BAUD_CFG_BAUD_DIV_GET(x)
Definition: hpm_sei_regs.h:534
#define SEI_CTRL_DMA_EN_TRG_ERR1_MASK
Definition: hpm_sei_regs.h:2836
#define SEI_CTRL_IRQ_INT_FLAG_TRIGER3_MASK
Definition: hpm_sei_regs.h:2316
#define SEI_CTRL_IRQ_INT_FLAG_INSTR0_END_MASK
Definition: hpm_sei_regs.h:2436
#define SEI_CTRL_TRG_IN_CFG_PRD_EN_MASK
Definition: hpm_sei_regs.h:738
#define SEI_CTRL_XCVR_CLK_CFG_CK1_POINT_SET(x)
Definition: hpm_sei_regs.h:565
#define SEI_CTRL_TRG_SW_SOFT_MASK
Definition: hpm_sei_regs.h:817
#define SEI_CTRL_IRQ_INT_FLAG_TRG_ERR0_MASK
Definition: hpm_sei_regs.h:2306
#define SEI_CTRL_ENGINE_PTR_CFG_DAT_BASE_MASK
Definition: hpm_sei_regs.h:234
#define SEI_CTRL_ENGINE_PTR_CFG_DAT_BASE_SET(x)
Definition: hpm_sei_regs.h:236
#define SEI_CTRL_IRQ_INT_FLAG_TRIGER2_MASK
Definition: hpm_sei_regs.h:2326
#define SEI_CTRL_DMA_EN_INSTR0_ST_MASK
Definition: hpm_sei_regs.h:3016
#define SEI_CTRL_IRQ_INT_FLAG_TRG_ERR3_MASK
Definition: hpm_sei_regs.h:2276
#define SEI_CTRL_ENGINE_PTR_CFG_POINTER_WDOG_SET(x)
Definition: hpm_sei_regs.h:246
#define SEI_CTRL_DMA_EN_LATCH3_MASK
Definition: hpm_sei_regs.h:2906
#define SEI_CTRL_DMA_EN_STALL_MASK
Definition: hpm_sei_regs.h:3066
#define SEI_CTRL_IRQ_INT_FLAG_LATCH0_MASK
Definition: hpm_sei_regs.h:2396
#define SEI_CTRL_XCVR_CLK_CFG_CK1_POINT_MASK
Definition: hpm_sei_regs.h:563
#define SEI_CTRL_TRG_IN_CFG_REWIND_EN_MASK
Definition: hpm_sei_regs.h:736
#define SEI_CTRL_TRG_IN_CFG_REWIND_SEL_SET(x)
Definition: hpm_sei_regs.h:752
#define SEI_CTRL_TRG_IN_CFG_REWIND_EN_SET(x)
Definition: hpm_sei_regs.h:738
#define SEI_CTRL_TRG_IN_CFG_REWIND_SEL_MASK
Definition: hpm_sei_regs.h:750
uint32_t hpm_stat_t
Definition: hpm_common.h:135
hpm_stat_t sei_state_transition_latch_config_init(SEI_Type *ptr, uint8_t idx, uint8_t latch_idx, sei_state_transition_latch_config_t *config)
Init SEI state transition latch configuration.
Definition: hpm_sei_drv.c:242
static void sei_set_engine_data_base_idx(SEI_Type *ptr, uint8_t idx, uint8_t data_base_idx)
Set the SEI bias for data register access.
Definition: hpm_sei_drv.h:480
sei_irq_event_t
sei irq event
Definition: hpm_sei_drv.h:105
@ sei_irq_trx_err_event
Definition: hpm_sei_drv.h:117
@ sei_irq_trig3_err_event
Definition: hpm_sei_drv.h:131
@ sei_irq_execpt_event
Definition: hpm_sei_drv.h:107
@ sei_irq_latch2_event
Definition: hpm_sei_drv.h:121
@ sei_irq_latch1_event
Definition: hpm_sei_drv.h:120
@ sei_irq_latch3_event
Definition: hpm_sei_drv.h:122
@ sei_irq_instr_ptr0_start_event
Definition: hpm_sei_drv.h:109
@ sei_irq_instr_ptr1_end_event
Definition: hpm_sei_drv.h:114
@ sei_irq_trig2_err_event
Definition: hpm_sei_drv.h:130
@ sei_irq_wdog_event
Definition: hpm_sei_drv.h:108
@ sei_irq_timeout_event
Definition: hpm_sei_drv.h:118
@ sei_irq_sample_err_event
Definition: hpm_sei_drv.h:123
@ sei_irq_trig2_event
Definition: hpm_sei_drv.h:126
@ sei_irq_instr_value1_start_event
Definition: hpm_sei_drv.h:112
@ sei_irq_instr_ptr0_end_event
Definition: hpm_sei_drv.h:113
@ sei_irq_trig3_event
Definition: hpm_sei_drv.h:127
@ sei_irq_trig1_event
Definition: hpm_sei_drv.h:125
@ sei_irq_trig1_err_event
Definition: hpm_sei_drv.h:129
@ sei_irq_latch0_event
Definition: hpm_sei_drv.h:119
@ sei_irq_instr_value0_start_event
Definition: hpm_sei_drv.h:111
@ sei_irq_instr_value1_end_event
Definition: hpm_sei_drv.h:116
@ sei_irq_instr_ptr1_start_event
Definition: hpm_sei_drv.h:110
@ sei_irq_stall_event
Definition: hpm_sei_drv.h:106
@ sei_irq_instr_value0_end_event
Definition: hpm_sei_drv.h:115
@ sei_irq_trig0_event
Definition: hpm_sei_drv.h:124
@ sei_irq_trig0_err_event
Definition: hpm_sei_drv.h:128
static uint32_t sei_get_data_value(SEI_Type *ptr, uint8_t idx)
Get the SEI data value.
Definition: hpm_sei_drv.h:743
sei_data_mode_t
sei data mode
Definition: hpm_sei_drv.h:60
@ sei_data_mode
Definition: hpm_sei_drv.h:61
@ sei_crc_mode
Definition: hpm_sei_drv.h:63
@ sei_check_mode
Definition: hpm_sei_drv.h:62
hpm_stat_t sei_sample_config_init(SEI_Type *ptr, uint8_t idx, sei_sample_config_t *config)
Init SEI sample configuration.
Definition: hpm_sei_drv.c:254
hpm_stat_t sei_engine_config_init(SEI_Type *ptr, uint8_t idx, sei_engine_config_t *config)
Init SEI engine configuration.
Definition: hpm_sei_drv.c:358
static void sei_set_sample_rev_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI sample revolution (multiturn) override value.
Definition: hpm_sei_drv.h:775
static bool sei_get_irq_status(SEI_Type *ptr, uint8_t idx, uint32_t irq_mask)
Get the SEI irq status.
Definition: hpm_sei_drv.h:938
sei_state_tran_condition_t
sei state transition condition
Definition: hpm_sei_drv.h:85
@ sei_state_tran_condition_low_dismatch
Definition: hpm_sei_drv.h:87
@ sei_state_tran_condition_high_match
Definition: hpm_sei_drv.h:86
@ sei_state_tran_condition_rise_entry
Definition: hpm_sei_drv.h:88
@ sei_state_tran_condition_fall_leave
Definition: hpm_sei_drv.h:89
static void sei_set_xcvr_rx_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
Set the SEI transceiver rx point.
Definition: hpm_sei_drv.h:606
static void sei_set_irq_match_instr0_ptr(SEI_Type *ptr, uint8_t idx, uint8_t instr_idx)
Set the SEI irq match pointer0.
Definition: hpm_sei_drv.h:863
static uint16_t sei_get_xcvr_ck0_point(SEI_Type *ptr, uint8_t idx)
Get the SEI transceiver ck0 point.
Definition: hpm_sei_drv.h:674
static uint32_t sei_get_irq_flag(SEI_Type *ptr, uint8_t idx)
Get the SEI irq flag.
Definition: hpm_sei_drv.h:950
static void sei_set_engine_rewind(SEI_Type *ptr, uint8_t idx)
Rewind the SEI engine.
Definition: hpm_sei_drv.h:445
void sei_set_instr(SEI_Type *ptr, uint8_t idx, uint8_t op, uint8_t ck, uint8_t crc, uint8_t data, uint8_t opr)
Set SEI Intsructions.
Definition: hpm_sei_drv.c:378
static void sei_set_update_rev_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI update revolution (multiturn) override value.
Definition: hpm_sei_drv.h:819
sei_data_bit_order_t
sei data bit order
Definition: hpm_sei_drv.h:69
@ sei_bit_lsb_first
Definition: hpm_sei_drv.h:70
@ sei_bit_msb_first
Definition: hpm_sei_drv.h:71
static void sei_clear_irq_flag(SEI_Type *ptr, uint8_t idx, uint32_t irq_mask)
Clear the SEI irq flag.
Definition: hpm_sei_drv.h:961
static void sei_set_xcvr_ck0_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
Set the SEI transceiver ck0 point.
Definition: hpm_sei_drv.h:640
static void sei_set_sample_pos_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI sample position (singleturn) override value.
Definition: hpm_sei_drv.h:764
static uint32_t sei_get_irq_enable_status(SEI_Type *ptr, uint8_t idx)
Get the SEI irq enable status.
Definition: hpm_sei_drv.h:925
sei_arming_mode_t
sei arming action
Definition: hpm_sei_drv.h:19
@ sei_arming_direct_exec
Definition: hpm_sei_drv.h:20
@ sei_arming_wait_trigger
Definition: hpm_sei_drv.h:21
static void sei_set_irq_match_instr0_value(SEI_Type *ptr, uint8_t idx, uint32_t instr_value)
Set the SEI irq match instr0.
Definition: hpm_sei_drv.h:885
hpm_stat_t sei_trigger_input_config_init(SEI_Type *ptr, uint8_t idx, sei_trigger_input_config_t *config)
Init SEI trigger input configuration.
Definition: hpm_sei_drv.c:302
sei_idle_state_t
sei ilde state
Definition: hpm_sei_drv.h:52
@ sei_idle_high_state
Definition: hpm_sei_drv.h:54
@ sei_idle_low_state
Definition: hpm_sei_drv.h:53
static void sei_set_sample_spd_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI sample speed override value.
Definition: hpm_sei_drv.h:786
static void sei_set_command_rewind(SEI_Type *ptr, uint8_t idx)
Rewind the SEI command.
Definition: hpm_sei_drv.h:706
static void sei_set_trig_input_in0_enable(SEI_Type *ptr, uint8_t idx, bool enable)
Set the SEI trigger input trig in0 enable or disable.
Definition: hpm_sei_drv.h:494
static void sei_set_xcvr_ck1_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
Set the SEI transceiver ck1 point.
Definition: hpm_sei_drv.h:657
static void sei_set_data_rewind(SEI_Type *ptr, uint8_t idx)
Rewind the SEI data.
Definition: hpm_sei_drv.h:753
sei_wdg_action_t
sei watchdog action
Definition: hpm_sei_drv.h:27
@ sei_wdg_exec_exception_instr
Definition: hpm_sei_drv.h:29
@ sei_wdg_exec_next_instr
Definition: hpm_sei_drv.h:28
hpm_stat_t sei_cmd_table_config_init(SEI_Type *ptr, uint8_t idx, uint8_t table_idx, sei_command_table_config_t *config)
Init SEI command table configuration.
Definition: hpm_sei_drv.c:183
static void sei_set_xcvr_tx_point(SEI_Type *ptr, uint8_t idx, uint16_t point)
Set the SEI transceiver tx point.
Definition: hpm_sei_drv.h:623
static uint32_t sei_get_trig_input_time(SEI_Type *ptr, uint8_t idx, sei_trig_in_type_t type)
Get the SEI trigger input time.
Definition: hpm_sei_drv.h:568
static void sei_set_data_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI data value.
Definition: hpm_sei_drv.h:732
hpm_stat_t sei_transceiver_config_init(SEI_Type *ptr, uint8_t idx, sei_transceiver_config_t *config)
Init SEI transceiver configuration.
Definition: hpm_sei_drv.c:10
static uint16_t sei_get_xcvr_baud_div(SEI_Type *ptr, uint8_t idx)
Get the SEI transceiver baud div.
Definition: hpm_sei_drv.h:595
static void sei_set_irq_match_instr1_ptr(SEI_Type *ptr, uint8_t idx, uint8_t instr_idx)
Set the SEI irq match pointer1.
Definition: hpm_sei_drv.h:874
static void sei_set_update_time_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI update time override value.
Definition: hpm_sei_drv.h:852
static void sei_set_irq_match_instr1_value(SEI_Type *ptr, uint8_t idx, uint32_t instr_value)
Set the SEI irq match instr1.
Definition: hpm_sei_drv.h:896
hpm_stat_t sei_trigger_output_config_init(SEI_Type *ptr, uint8_t idx, sei_trigger_output_config_t *config)
Init SEI trigger output configuration.
Definition: hpm_sei_drv.c:333
static void sei_set_trig_input_command_value(SEI_Type *ptr, uint8_t idx, sei_trig_in_type_t type, uint32_t data)
Set the SEI trigger input command value.
Definition: hpm_sei_drv.h:556
static void sei_set_update_spd_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI update speed override value.
Definition: hpm_sei_drv.h:830
static uint32_t sei_get_latch_time(SEI_Type *ptr, uint8_t idx, uint8_t latch_idx)
Get the SEI latch time.
Definition: hpm_sei_drv.h:584
static uint32_t sei_get_command_value(SEI_Type *ptr, uint8_t idx)
Get the SEI command value.
Definition: hpm_sei_drv.h:696
hpm_stat_t sei_state_transition_config_init(SEI_Type *ptr, uint8_t idx, uint8_t latch_idx, uint8_t state, sei_state_transition_config_t *config)
Init SEI state transition configuration.
Definition: hpm_sei_drv.c:211
static void sei_set_engine_wdg_instr_idx(SEI_Type *ptr, uint8_t idx, uint8_t wdg_instr_idx)
Set the SEI instruction index which engine execution when watchdog active.
Definition: hpm_sei_drv.h:468
static void sei_set_sample_acc_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI sample acceleration override value.
Definition: hpm_sei_drv.h:797
static void sei_set_engine_init_instr_idx(SEI_Type *ptr, uint8_t idx, uint8_t init_instr_idx)
Set the SEI instruction index which engine start execution.
Definition: hpm_sei_drv.h:456
hpm_stat_t sei_cmd_data_format_config_init(SEI_Type *ptr, bool cmd_data_select, uint8_t idx, sei_data_format_config_t *config)
Init SEI command or data format configuration.
Definition: hpm_sei_drv.c:121
sei_dma_en_t
sei dma enable bit
Definition: hpm_sei_drv.h:137
@ sei_dma_en_instr_ptr1_start_event
Definition: hpm_sei_drv.h:142
@ sei_dma_en_latch2_event
Definition: hpm_sei_drv.h:153
@ sei_dma_en_latch1_event
Definition: hpm_sei_drv.h:152
@ sei_dma_en_timeout_event
Definition: hpm_sei_drv.h:150
@ sei_dma_en_instr_value0_start_event
Definition: hpm_sei_drv.h:143
@ sei_dma_en_latch3_event
Definition: hpm_sei_drv.h:154
@ sei_dma_en_stall_event
Definition: hpm_sei_drv.h:138
@ sei_dma_en_latch0_event
Definition: hpm_sei_drv.h:151
@ sei_dma_en_trig2_event
Definition: hpm_sei_drv.h:158
@ sei_dma_en_sample_err_event
Definition: hpm_sei_drv.h:155
@ sei_dma_en_instr_ptr0_start_event
Definition: hpm_sei_drv.h:141
@ sei_dma_en_instr_ptr0_end_event
Definition: hpm_sei_drv.h:145
@ sei_dma_en_instr_ptr1_end_event
Definition: hpm_sei_drv.h:146
@ sei_dma_en_trig1_err_event
Definition: hpm_sei_drv.h:161
@ sei_dma_en_trig2_err_event
Definition: hpm_sei_drv.h:162
@ sei_dma_en_instr_value0_end_event
Definition: hpm_sei_drv.h:147
@ sei_dma_en_trig0_err_event
Definition: hpm_sei_drv.h:160
@ sei_dma_en_trig1_event
Definition: hpm_sei_drv.h:157
@ sei_dma_en_wdog_event
Definition: hpm_sei_drv.h:140
@ sei_dma_en_trig0_event
Definition: hpm_sei_drv.h:156
@ sei_dma_en_execpt_event
Definition: hpm_sei_drv.h:139
@ sei_dma_en_trig3_event
Definition: hpm_sei_drv.h:159
@ sei_dma_en_instr_value1_start_event
Definition: hpm_sei_drv.h:144
@ sei_dma_en_instr_value1_end_event
Definition: hpm_sei_drv.h:148
@ sei_dma_en_trig3_err_event
Definition: hpm_sei_drv.h:163
@ sei_dma_en_trx_err_event
Definition: hpm_sei_drv.h:149
static void sei_set_trig_input_soft_enable(SEI_Type *ptr, uint8_t idx)
Set the SEI trigger input soft enable or disable.
Definition: hpm_sei_drv.h:544
static void sei_set_dma_req_enable(SEI_Type *ptr, uint8_t idx, uint32_t dma_en_mask, bool enable)
Set the SEI DMA request enable or disable.
Definition: hpm_sei_drv.h:975
static uint16_t sei_get_xcvr_ck1_point(SEI_Type *ptr, uint8_t idx)
Get the SEI transceiver ck1 point.
Definition: hpm_sei_drv.h:685
sei_transceiver_mode_t
sei transfer mode
Definition: hpm_sei_drv.h:35
@ sei_synchronous_master_mode
Definition: hpm_sei_drv.h:36
@ sei_synchronous_slave_mode
Definition: hpm_sei_drv.h:37
@ sei_asynchronous_mode
Definition: hpm_sei_drv.h:38
sei_trig_in_type_t
sei trig in type
Definition: hpm_sei_drv.h:95
@ sei_trig_in_soft
Definition: hpm_sei_drv.h:99
@ sei_trig_in_period
Definition: hpm_sei_drv.h:98
@ sei_trig_in1
Definition: hpm_sei_drv.h:97
@ sei_trig_in0
Definition: hpm_sei_drv.h:96
static void sei_set_trig_input_in1_enable(SEI_Type *ptr, uint8_t idx, bool enable)
Set the SEI trigger input trig in1 enable or disable.
Definition: hpm_sei_drv.h:511
static void sei_set_trig_input_period_enable(SEI_Type *ptr, uint8_t idx, bool enable)
Set the SEI trigger input period enable or disable.
Definition: hpm_sei_drv.h:528
static void sei_set_update_acc_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI update acceleration override value.
Definition: hpm_sei_drv.h:841
sei_data_word_order_t
sei data word order
Definition: hpm_sei_drv.h:77
@ sei_word_reverse
Definition: hpm_sei_drv.h:79
@ sei_word_nonreverse
Definition: hpm_sei_drv.h:78
hpm_stat_t sei_update_config_init(SEI_Type *ptr, uint8_t idx, sei_update_config_t *config)
Init SEI update configuration.
Definition: hpm_sei_drv.c:278
static void sei_set_irq_enable(SEI_Type *ptr, uint8_t idx, uint32_t irq_mask, bool enable)
Set the SEI irq enable or disable.
Definition: hpm_sei_drv.h:910
sei_asynchronous_parity_t
sei asynchronous mode parity
Definition: hpm_sei_drv.h:44
@ sei_asynchronous_parity_odd
Definition: hpm_sei_drv.h:46
@ sei_asynchronous_parity_even
Definition: hpm_sei_drv.h:45
static void sei_set_engine_enable(SEI_Type *ptr, uint8_t idx, bool enable)
Set the SEI engine enable or disable.
Definition: hpm_sei_drv.h:431
static void sei_set_update_pos_override_value(SEI_Type *ptr, uint8_t idx, uint32_t data)
Set the SEI update position (singleturn) override value.
Definition: hpm_sei_drv.h:808
Definition: hpm_sei_regs.h:12
__RW uint32_t CTRL
Definition: hpm_sei_regs.h:15
__RW uint32_t DATA
Definition: hpm_sei_regs.h:132
struct SEI_Type::@341 DAT[10]
__RW uint32_t MODE
Definition: hpm_sei_regs.h:52
sei command table config structure
Definition: hpm_sei_drv.h:350
uint32_t cmd_min_value
Definition: hpm_sei_drv.h:351
uint32_t cmd_mask_value
Definition: hpm_sei_drv.h:353
uint32_t cmd_max_value
Definition: hpm_sei_drv.h:352
sei data format config structure
Definition: hpm_sei_drv.h:329
uint8_t max_bit
Definition: hpm_sei_drv.h:340
sei_data_mode_t mode
Definition: hpm_sei_drv.h:330
bool crc_shift_mode
Definition: hpm_sei_drv.h:336
uint8_t crc_len
Definition: hpm_sei_drv.h:337
uint8_t last_bit
Definition: hpm_sei_drv.h:338
uint32_t crc_init_value
Definition: hpm_sei_drv.h:343
uint32_t gold_value
Definition: hpm_sei_drv.h:342
uint32_t crc_poly
Definition: hpm_sei_drv.h:344
bool signed_flag
Definition: hpm_sei_drv.h:331
uint8_t min_bit
Definition: hpm_sei_drv.h:341
sei_data_bit_order_t bit_order
Definition: hpm_sei_drv.h:332
bool crc_invert
Definition: hpm_sei_drv.h:335
uint8_t first_bit
Definition: hpm_sei_drv.h:339
sei_data_word_order_t word_order
Definition: hpm_sei_drv.h:333
uint8_t word_len
Definition: hpm_sei_drv.h:334
sei engine config structure
Definition: hpm_sei_drv.h:238
bool wdg_enable
Definition: hpm_sei_drv.h:243
sei_arming_mode_t arming_mode
Definition: hpm_sei_drv.h:239
uint8_t data_cdm_idx
Definition: hpm_sei_drv.h:240
uint8_t data_base_idx
Definition: hpm_sei_drv.h:241
uint8_t wdg_instr_idx
Definition: hpm_sei_drv.h:245
uint16_t wdg_time
Definition: hpm_sei_drv.h:246
sei_wdg_action_t wdg_action
Definition: hpm_sei_drv.h:244
uint8_t init_instr_idx
Definition: hpm_sei_drv.h:242
sei sample config structure
Definition: hpm_sei_drv.h:386
uint32_t data_register_select
Definition: hpm_sei_drv.h:398
uint8_t spd_data_idx
Definition: hpm_sei_drv.h:388
bool pos_data_use_rx
Definition: hpm_sei_drv.h:394
uint16_t sample_window
Definition: hpm_sei_drv.h:397
bool spd_data_use_rx
Definition: hpm_sei_drv.h:392
uint8_t latch_select
Definition: hpm_sei_drv.h:395
uint8_t acc_data_idx
Definition: hpm_sei_drv.h:387
bool acc_data_use_rx
Definition: hpm_sei_drv.h:391
uint8_t rev_data_idx
Definition: hpm_sei_drv.h:389
bool rev_data_use_rx
Definition: hpm_sei_drv.h:393
bool sample_once
Definition: hpm_sei_drv.h:396
uint8_t pos_data_idx
Definition: hpm_sei_drv.h:390
sei state transition config structure
Definition: hpm_sei_drv.h:360
uint8_t instr_ptr_value
Definition: hpm_sei_drv.h:363
sei_state_tran_condition_t txd_cfg
Definition: hpm_sei_drv.h:367
sei_state_tran_condition_t timeout_cfg
Definition: hpm_sei_drv.h:371
sei_state_tran_condition_t clk_cfg
Definition: hpm_sei_drv.h:365
bool disable_rxd_check
Definition: hpm_sei_drv.h:368
sei_state_tran_condition_t rxd_cfg
Definition: hpm_sei_drv.h:369
bool disable_clk_check
Definition: hpm_sei_drv.h:364
bool disable_txd_check
Definition: hpm_sei_drv.h:366
bool disable_timeout_check
Definition: hpm_sei_drv.h:370
sei_state_tran_condition_t instr_ptr_cfg
Definition: hpm_sei_drv.h:362
bool disable_instr_ptr_check
Definition: hpm_sei_drv.h:361
sei state transition latch config structure
Definition: hpm_sei_drv.h:377
uint16_t delay
Definition: hpm_sei_drv.h:380
uint8_t output_select
Definition: hpm_sei_drv.h:379
bool enable
Definition: hpm_sei_drv.h:378
sei transceiver asynchronous mode config structure
Definition: hpm_sei_drv.h:276
bool data_idle_high_z
Definition: hpm_sei_drv.h:281
uint32_t baudrate
Definition: hpm_sei_drv.h:283
bool parity_enable
Definition: hpm_sei_drv.h:279
uint8_t data_len
Definition: hpm_sei_drv.h:278
sei_asynchronous_parity_t parity
Definition: hpm_sei_drv.h:280
uint8_t wait_len
Definition: hpm_sei_drv.h:277
sei_idle_state_t data_idle_state
Definition: hpm_sei_drv.h:282
sei transceiver config structure
Definition: hpm_sei_drv.h:289
uint32_t src_clk_freq
Definition: hpm_sei_drv.h:292
sei_transceiver_synchronous_slave_config_t synchronous_slave_config
Definition: hpm_sei_drv.h:294
bool tri_sample
Definition: hpm_sei_drv.h:291
sei_transceiver_mode_t mode
Definition: hpm_sei_drv.h:290
sei_transceiver_synchronous_master_config_t synchronous_master_config
Definition: hpm_sei_drv.h:293
sei_transceiver_asynchronous_config_t asynchronous_config
Definition: hpm_sei_drv.h:295
sei transceiver synchronous master mode config structure
Definition: hpm_sei_drv.h:252
bool data_idle_high_z
Definition: hpm_sei_drv.h:253
bool clock_idle_high_z
Definition: hpm_sei_drv.h:255
sei_idle_state_t data_idle_state
Definition: hpm_sei_drv.h:254
uint32_t baudrate
Definition: hpm_sei_drv.h:257
sei_idle_state_t clock_idle_state
Definition: hpm_sei_drv.h:256
sei transceiver synchronous master mode config structure
Definition: hpm_sei_drv.h:263
bool data_idle_high_z
Definition: hpm_sei_drv.h:264
sei_idle_state_t clock_idle_state
Definition: hpm_sei_drv.h:267
sei_idle_state_t data_idle_state
Definition: hpm_sei_drv.h:265
bool clock_idle_high_z
Definition: hpm_sei_drv.h:266
uint16_t ck0_timeout_us
Definition: hpm_sei_drv.h:269
uint32_t max_baudrate
Definition: hpm_sei_drv.h:268
uint16_t ck1_timeout_us
Definition: hpm_sei_drv.h:270
sei trigger input config structure
Definition: hpm_sei_drv.h:301
bool trig_in1_enable
Definition: hpm_sei_drv.h:304
bool trig_period_sync_enable
Definition: hpm_sei_drv.h:308
uint8_t trig_in1_select
Definition: hpm_sei_drv.h:305
uint32_t trig_period_time
Definition: hpm_sei_drv.h:310
bool trig_period_enable
Definition: hpm_sei_drv.h:306
sei_arming_mode_t trig_period_arming_mode
Definition: hpm_sei_drv.h:307
uint8_t trig_period_sync_select
Definition: hpm_sei_drv.h:309
bool trig_in0_enable
Definition: hpm_sei_drv.h:302
uint8_t trig_in0_select
Definition: hpm_sei_drv.h:303
sei trigger output config structure
Definition: hpm_sei_drv.h:320
bool trig_out_enable
Definition: hpm_sei_drv.h:322
uint8_t src_latch_select
Definition: hpm_sei_drv.h:321
uint8_t trig_out_select
Definition: hpm_sei_drv.h:323
sei update config structure
Definition: hpm_sei_drv.h:404
bool pos_data_use_rx
Definition: hpm_sei_drv.h:412
bool acc_data_use_rx
Definition: hpm_sei_drv.h:409
bool rev_data_use_rx
Definition: hpm_sei_drv.h:411
uint8_t spd_data_idx
Definition: hpm_sei_drv.h:406
bool time_use_override
Definition: hpm_sei_drv.h:413
uint8_t latch_select
Definition: hpm_sei_drv.h:415
bool update_on_err
Definition: hpm_sei_drv.h:414
uint32_t data_register_select
Definition: hpm_sei_drv.h:416
uint8_t acc_data_idx
Definition: hpm_sei_drv.h:405
uint8_t rev_data_idx
Definition: hpm_sei_drv.h:407
bool spd_data_use_rx
Definition: hpm_sei_drv.h:410
uint8_t pos_data_idx
Definition: hpm_sei_drv.h:408