228 lines
4.4 KiB
C
228 lines
4.4 KiB
C
#ifndef __SPBDRIVERAPI_H__
|
|
#define __SPBDRIVERAPI_H__
|
|
|
|
#include "stdbool.h"
|
|
#include "stdint.h"
|
|
#include "BfiApi.h"
|
|
|
|
typedef enum {
|
|
#if defined HY8810 || HY8602
|
|
PWM=0,
|
|
DC,
|
|
MIX_8DC_8HT,
|
|
MIX_10DC_6HT,
|
|
MIX_6DC_10HT,
|
|
MIX_11DC_5HT,
|
|
MIX_4DC_12HT,
|
|
MIX_9DC_7HT,
|
|
#elif defined HY8811 || HY8603 || HY8822
|
|
PWM=0,
|
|
DC_DITHER8_8,
|
|
MIX_6DC_10HT,
|
|
MIX_8DC_8HT,
|
|
DC,
|
|
#elif defined HY8612 || HY8608
|
|
PWM=0,
|
|
DC_DITHER10_6,
|
|
DC_DITHER8_8,
|
|
MIX_6DC_10HT,
|
|
MIX_8DC_8HT,
|
|
MIX_10DC_6HT,
|
|
DC,
|
|
#elif defined HY8108
|
|
PWM=0,
|
|
DC_DITHER10_6,
|
|
MIX_6DC_10HT,
|
|
MIX_10DC_6HT,
|
|
DC,
|
|
DC_DITHER8_8,
|
|
#endif
|
|
} dimming_mode_t;
|
|
|
|
typedef enum {
|
|
|
|
SINGLE=0,
|
|
CH_SICK_INT1,
|
|
SHORT_INT,
|
|
OPEN_INT,
|
|
OTP_INT,
|
|
CRC_INT,
|
|
PWM_HIGH_TO_SMALL,
|
|
CH_SICK_INT2,
|
|
|
|
#if defined HY8811
|
|
DEVICE_ID,
|
|
OH,
|
|
SELECTED_FAULT,
|
|
#elif defined HY8603 || HY8822 || HY8612 || HY8608
|
|
OH,
|
|
DEVICE_ID,
|
|
SELECTED_FAULT,
|
|
#endif
|
|
|
|
#if defined HY8612 || HY8608
|
|
ADDRESS_CHECK,
|
|
DIP_TIMEOUT,
|
|
UART=0XF,
|
|
#endif
|
|
|
|
#if defined HY8108
|
|
OH,
|
|
DEVICE_ID,
|
|
ADDRESS_CHECK=0xB,
|
|
UART=0XF,
|
|
#endif
|
|
|
|
} dos_mode_t;
|
|
|
|
|
|
|
|
enum {
|
|
UNBLOCKING=0,
|
|
BLOCKING,
|
|
};
|
|
|
|
typedef enum {
|
|
OK=0,
|
|
PRE_ERR,
|
|
SOP_ERR,
|
|
CRC_ERR,
|
|
EOP_ERR,
|
|
INCOMPLETE,
|
|
} fb_err_t;
|
|
|
|
|
|
typedef enum {
|
|
|
|
#if defined HY8810 || HY8602 || HY8811 || HY8603 || HY8822
|
|
|
|
CMD_DIMMING =0x999f,
|
|
CMD_BROADCAST =0x9a9a,
|
|
CMD_CONFIG =0x955a,
|
|
CMD_ADDR =0x959f,
|
|
CMD_READ_BACK =0x5559,
|
|
|
|
#elif defined HY8612 || HY8608 || HY8108
|
|
CMD_DIMMING =0x71,
|
|
CMD_BROADCAST =0x72,
|
|
CMD_CONFIG =0x73,
|
|
CMD_ADDR =0x74,
|
|
CMD_READ_BACK =0x75,
|
|
CMD_READ_FAULT =0x76,
|
|
#endif
|
|
}sop_type;
|
|
|
|
#if defined HY8810 || HY8602 || HY8811 || HY8603 || HY8822
|
|
#define BMC_BIT_LENGTH(len) ((len+6) * 20+5)
|
|
#elif defined HY8612
|
|
#define BMC_BIT_LENGTH(len) ((len+6) * 16)
|
|
#elif defined HY8608 || HY8108
|
|
#define BMC_BIT_LENGTH(len) ((len+7) * 16)
|
|
#endif
|
|
|
|
|
|
#define PREAMBER_VALUE 0X5555
|
|
#define SOP_ADDR 0xc6711
|
|
#define SOP_READ_BACK 0xce738
|
|
#define SOP_CONFIG 0xc6727
|
|
#define SOP_BROADCAST 0xc1f07
|
|
#define SOP_DIMMING 0xc6311
|
|
|
|
typedef union {
|
|
|
|
#if defined HY8608 || HY8108
|
|
struct{
|
|
uint16_t pre;
|
|
uint16_t head;
|
|
uint16_t addr;
|
|
uint16_t subaddr;
|
|
uint16_t feedback;
|
|
uint16_t datalength;
|
|
uint16_t d[MAXCASCADE];
|
|
uint16_t crc;
|
|
}frame;
|
|
uint16_t data[MAXCASCADE+7];
|
|
#elif defined HY8612
|
|
struct{
|
|
uint16_t pre;
|
|
uint16_t head;
|
|
uint16_t addr;
|
|
uint16_t subaddr;
|
|
uint16_t datalength;
|
|
uint16_t d[MAXCASCADE];
|
|
uint16_t crc;
|
|
}frame;
|
|
uint16_t data[MAXCASCADE+6];
|
|
#elif defined HY8810 || HY8602 || HY8811 || HY8603 || HY8822
|
|
struct{
|
|
uint32_t pre;
|
|
uint32_t pre2;
|
|
uint32_t pre3;
|
|
uint32_t sop;
|
|
uint32_t startaddress;
|
|
uint32_t d[MAXCASCADE];
|
|
uint32_t crc;
|
|
uint32_t eop;
|
|
}frame;
|
|
uint32_t data[MAXCASCADE+7];
|
|
|
|
#endif
|
|
}LANE_DATA_t;
|
|
|
|
|
|
extern LANE_DATA_t lane_data[MAXDIP];
|
|
|
|
extern uint16_t lane_outbuf[PORTOUTBUFSIZE];
|
|
|
|
void Spb_Init(void);
|
|
void Spb_Lock(void);
|
|
void Spb_Unlock(void);
|
|
void Spb_Lock_REG58or5A(void);
|
|
void Spb_Unlock_REG58or5A(void);
|
|
|
|
fb_err_t SpbDriverApi_Fb_Decode(uint16_t *rdata);
|
|
|
|
|
|
void Spb_Address(uint8_t first_id,uint8_t last_id);
|
|
void Spb_Readback(uint8_t reg,uint8_t id,uint8_t reg_num,uint8_t ic_num);
|
|
void Spb_Config(uint8_t reg,uint8_t id,uint8_t reg_num,uint8_t ic_num,uint16_t datas_len);
|
|
void Spb_Broadcast(uint8_t reg,uint16_t value,uint8_t head_L8);
|
|
void Spb_Dimming(dimming_mode_t mode,dos_mode_t dos_mode,uint8_t id,uint8_t ic_num,uint16_t data_offset,uint16_t datas_len);
|
|
|
|
#if defined HY8608 || HY8108
|
|
|
|
enum{
|
|
BUFF_BCON_TO_DRIVER=0,
|
|
SLAVE_BCON_TO_DRIVER,
|
|
BUFF_DRIVER_TO_BCON,
|
|
SLAVE_DRIVER_TO_BCON,
|
|
};
|
|
typedef enum
|
|
{
|
|
BCON_driver_parallel = 0x0000, //BCON => driver:parallel
|
|
BCON_driver_serial = 0x4000, //BCON => driver:serial
|
|
driver_BCON_parallel = 0x8000, //driver => BCON:parallel
|
|
driver_BCON_serial = 0xc000, //driver => BCON:serial
|
|
}next_commad_type;
|
|
|
|
typedef struct {
|
|
uint8_t dos_mode;//HEAD bit4-7
|
|
uint8_t dimming_mode;//HEAD bit1-3
|
|
uint8_t effect;//HEAD bit0
|
|
uint16_t address;
|
|
uint16_t sub_addr;
|
|
uint16_t feedback;
|
|
next_commad_type next_commad_type;//DATA_LENGTH bit14-15
|
|
} Frame_Format_t;
|
|
|
|
extern Frame_Format_t ospb_frame;
|
|
|
|
void update_frame_data(uint8_t dos_mode,uint16_t addr,uint16_t subaddr,uint16_t feedback);
|
|
void update_ospb_type(uint8_t type);
|
|
void update_frame_mode(uint8_t dos_mode,uint8_t dimming_mode,uint8_t effect,next_commad_type next_commad_type);
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|