Files
CW_A5H_9225_8108/A5H_9225_8108_SPIV3.0/HY88xx/SpbApi.h
2025-09-29 16:49:49 +08:00

211 lines
4.5 KiB
C

#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