211 lines
4.5 KiB
C
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
|
|
|
|
|