#ifndef __SPBAPI_H__ #define __SPBAPI_H__ #include "stdint.h" #include "hy9225.h" #include "bl_ic_config.h" #define DIP_PORT GPIOA #define DIP1_PIN GPIO_PIN_0 #define DIP2_PIN GPIO_PIN_1 #define DIP3_PIN GPIO_PIN_2 #define DIP4_PIN GPIO_PIN_3 #define DIP5_PIN GPIO_PIN_5 #define DIP6_PIN GPIO_PIN_6 #define DIP7_PIN GPIO_PIN_7 #define DIP8_PIN GPIO_PIN_8 #define DIP9_PIN GPIO_PIN_10 #define DIP10_PIN GPIO_PIN_11 #define DIP11_PIN GPIO_PIN_12 #define DIP12_PIN GPIO_PIN_15 #define DIP1 0 #define DIP2 1 #define DIP3 2 #define DIP4 3 #define DIP5 5 #define DIP6 6 #define DIP7 7 #define DIP8 8 #define DIP9 10 #define DIP10 11 #define DIP11 12 #define DIP12 15 #define DOS1_PORT GPIOB #define DOS1_PIN GPIO_PIN_0 #define DOS2_PORT GPIOB #define DOS2_PIN GPIO_PIN_1 #define DOS3_PORT GPIOB #define DOS3_PIN GPIO_PIN_2 #define DOS4_PORT GPIOB #define DOS4_PIN GPIO_PIN_3 #define DOS5_PORT GPIOB #define DOS5_PIN GPIO_PIN_4 #define DOS6_PORT GPIOB #define DOS6_PIN GPIO_PIN_5 #define DOS7_PORT GPIOB #define DOS7_PIN GPIO_PIN_6 #define DOS8_PORT GPIOB #define DOS8_PIN GPIO_PIN_7 #define DOS9_PORT GPIOB #define DOS9_PIN GPIO_PIN_8 #define DOS10_PORT GPIOB #define DOS10_PIN GPIO_PIN_9 #define DOS11_PORT GPIOB #define DOS11_PIN GPIO_PIN_14 #define DOS12_PORT GPIOD #define DOS12_PIN GPIO_PIN_15 #define DOS1_EXTI_LINE_SOURCE EXTI_LINE_SOURCE0 #define DOS2_EXTI_LINE_SOURCE EXTI_LINE_SOURCE1 #define DOS3_EXTI_LINE_SOURCE EXTI_LINE_SOURCE2 #define DOS4_EXTI_LINE_SOURCE EXTI_LINE_SOURCE3 #define DOS5_EXTI_LINE_SOURCE EXTI_LINE_SOURCE4 #define DOS6_EXTI_LINE_SOURCE EXTI_LINE_SOURCE5 #define DOS7_EXTI_LINE_SOURCE EXTI_LINE_SOURCE6 #define DOS8_EXTI_LINE_SOURCE EXTI_LINE_SOURCE7 #define DOS9_EXTI_LINE_SOURCE EXTI_LINE_SOURCE8 #define DOS10_EXTI_LINE_SOURCE EXTI_LINE_SOURCE9 #define DOS11_EXTI_LINE_SOURCE EXTI_LINE_SOURCE14 #define DOS12_EXTI_LINE_SOURCE EXTI_LINE_SOURCE15 #define DOS1 0 #define DOS2 1 #define DOS3 2 #define DOS4 3 #define DOS5 4 #define DOS6 5 #define DOS7 6 #define DOS8 7 #define DOS9 8 #define DOS10 9 #define DOS11 14 #define DOS12 15 #define DIP_TIM TIM2 #define DIP_TIM2 TIM3 #define DOS_TIM TIM4 typedef struct { uint16_t ch:4; uint16_t ic:7; uint16_t lane:5; } MAP_U16; typedef struct { uint8_t width; uint8_t height; uint16_t zones; uint16_t soc_spi_len; uint16_t dos_mask1; uint16_t dos_mask2; // uint16_t dos_mask3; uint8_t ic_num; uint16_t di_cascade; uint8_t dip_dis_combine; uint8_t di_number; uint8_t* di_tab; uint16_t di_mask; #if defined HY8810 || HY8602 || HY8811 || HY8603 || HY8822 || HY8612 uint8_t dis_number; uint16_t dis_mask; uint8_t* dis_tab; #endif uint8_t checksum_right; uint8_t subframe_type; uint16_t fb_init_duty; uint16_t fb_init_freq; uint8_t bfi_lines; uint8_t pi_mode; MAP_U16* mapping; MAP_U16* mapping2; uint16_t* channel_delay; uint8_t* bfi_tab; uint16_t* bfi_delay; #if defined HY8810 || HY8602 || HY8811 || HY8603 || HY8822 uint32_t *di_buff[MAXDIP]; #elif defined HY8608 ||HY8612 || HY8108 uint16_t *di_buff[MAXDIP]; #endif uint16_t *di_out_buf; } MACHINE_t; typedef enum { ALL_BLOCK=0, BLOCK1, BLOCK2, BLOCK3, } block_type; typedef struct { volatile uint16_t step; volatile uint16_t tx_len; block_type type; uint16_t mask1; uint16_t *OutDat1; uint32_t port_addr; volatile uint8_t status; //BIT0 1: busy 0: free } spb_tx_t; typedef struct { volatile uint16_t dos_len; uint16_t mask; volatile int32_t timeout; uint8_t *InData; volatile uint8_t status; //BIT0 1: busy 0: free } spb_rx_dos_t; extern MACHINE_t machine; extern volatile spb_rx_dos_t spb_rx_dos; extern volatile spb_tx_t spb_tx; extern uint8_t spb_dos_inbuf[256]; extern void SpbApi_DisSetHigh(void); extern void SpbApi_DisSetLow(void); extern void Dip_Set_High(void); extern void Dip_Set_Low(void); #if defined HY8810 || HY8811 || HY8603 || HY8822 || HY8612 extern void Dis_Set_High(void); extern void Dis_Set_Low(void); #endif extern void SpbApi_SendDipBit(void); extern void SpbApi_DisSendBit(void); extern void SpbApi_ReadyDosCap(uint8_t index); extern void SpbApi_StartDosCap(void); extern void SpbApi_StopDosCap(void); extern void SpbApi_DosCapFunction(void); extern void SpbApi_SpbBspInit(void); #endif