You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
6.3 KiB
183 lines
6.3 KiB
#ifndef __OPTICALDATA__
|
|
#define __OPTICALDATA__
|
|
|
|
#include "bsp_config.h"
|
|
#include "../app/app_config.h"
|
|
|
|
/******************************************************************************************************
|
|
配置参数
|
|
*******************************************************************************************************/
|
|
#define ROM009_HANDWRITE 0
|
|
#define DATA_FORMAT_2 0
|
|
#define OID_4C 0
|
|
#define DEBOUNCE_FUNC 0
|
|
#define LOG_REGISTER 0
|
|
|
|
#if DEBOUNCE_FUNC
|
|
#define DEBOUNCE_TIMES 3 // 连续三笔相同,才触发,debounce时,可设置。去抖动时间
|
|
#define DEBOUNCE_RELESE_TIME 20 //5ms * 20 = 100ms,100ms无任何码,认为抬笔。
|
|
#endif
|
|
/******************************************************************************************************
|
|
2-wire GPIO
|
|
|
|
#define D_stdIO_P5(n) BITN_0(P5M1,n);BITN_0(P5M0,n); //////00 准双向口 灌电流20mA 拉电流270-150uS
|
|
#define D_HighI_P5(n) BITN_0(P5M1,n);BITN_1(P5M0,n); //////01 推挽输出 20mA 加限流
|
|
#define D_HighR_P5(n) BITN_1(P5M1,n);BITN_0(P5M0,n); /////////10 高阻
|
|
#define D_OpenD_P5(n) BITN_1(P5M1,n);BITN_1(P5M0,n); /////11 开漏 open-Drain 内部上拉电阻断开 开漏模式既可以度外部状态也可以对外输出高低电平
|
|
*******************************************************************************************************/
|
|
#define LD_oid_io_init() LD_Oid_SCK_INIT()
|
|
////#define LD_Oid_SCK_INIT() D_stdIO_P3(BITN4);
|
|
|
|
#define LD_Oid_SCK_LOW() D_P34_OFF();
|
|
#define LD_Oid_SCK_HIGH() D_P34_ON();
|
|
|
|
#define LD_Oid_SCK_INIT(); D_HighI_P3(BITN4);LD_Oid_SCK_LOW();
|
|
|
|
|
|
#define LD_Oid_SDIO_INIT() D_HighR_P5(BITN0)
|
|
#define LD_Oid_SDIO_LOW() D_P50_OFF()
|
|
#define LD_Oid_SDIO_HIGH() D_P50_ON()
|
|
#define LD_Oid_SDIO_IN() D_HighR_P5(BITN0)//高阻输入
|
|
#define LD_Oid_SDIO_OUT() D_HighI_P5(BITN0)//推挽输出
|
|
|
|
#define LD_Oid_SDIO_AT() D_P50_AT()
|
|
|
|
|
|
#define LD_Oid_DIO_INIT(); LD_Oid_SCK_INIT();LD_Oid_SDIO_INIT();
|
|
|
|
|
|
#define OID_DET P50
|
|
|
|
/******************************************************************************************************
|
|
OID命令
|
|
*******************************************************************************************************/
|
|
|
|
|
|
////20211229依据53xx和54xx系列操作
|
|
#define USERCMD_20FPS 0x24
|
|
#define USERCMD_30FPS 0x25
|
|
#define USERCMD_40FPS 0x26
|
|
#define USERCMD_50FPS 0x27
|
|
#define USERCMD_80FPS 0x3C
|
|
#define USERCMD_80FPS_EXIT 0x3B
|
|
#define USERCMD_DECODE_SHUT 0x4D
|
|
#define USERCMD_LIANCHUAN 0x40
|
|
#define USERCMD_SUSPEND 0x57
|
|
#define USERCMD_EN_ANGLE 0x10
|
|
#define USERCMD_EN_POSITION 0x35
|
|
#define USERCMD_SW_POSITION 0x43
|
|
#define USERCMD_DATA_FORMAT_2 0x2C
|
|
#define USERCMD_LOU_GUANG 0xD7
|
|
#define USERCMD_POWER_DOWN 0x56
|
|
|
|
|
|
|
|
#define OIDCMD_POWER_ON 0x0000FFF8
|
|
#define OIDCMD_POWER_OFF 0x0000FFF7
|
|
/******************************************************************************************************
|
|
OID版本
|
|
*******************************************************************************************************/
|
|
#define OID_VER_D 0x1169
|
|
#define OID_VER_REG 0x1670
|
|
#define OID_VER_F 0x1168
|
|
#define REG_READOID_SET 0xD40
|
|
#define REG_EN_DECODE 0xD63
|
|
#define REG_ROM008 0xDA5
|
|
#define REG_ROM009 0xDA6
|
|
#define ROM_009 0x09
|
|
#define ROM_008 0x00
|
|
/******************************************************************************************************
|
|
Dataformat 2定义
|
|
*******************************************************************************************************/
|
|
#define CHECK_INVALID_DF2 0x40000000
|
|
#define CHECK_OID_VERSION_DF2 0xFC000000
|
|
#define OID_2_GENERAL_DF2 0x00000000
|
|
#define OID_3_GENERAL_DF2 0x08000000
|
|
#define OID_3_POSITION_DF2 0x04000000
|
|
#define OID_3S_GENERAL_DF2 0x10000000
|
|
#define OID_3S_POSITION_DF2 0x0C000000
|
|
#define OID_35_GENERAL_DF2 0x14000000
|
|
#define OID_4_GENERAL_DF2 0x1C000000
|
|
#define OID_4_POSITION_DF2 0x18000000
|
|
#define OID_4C_POSITION_DF2 0x20000000
|
|
/******************************************************************************************************
|
|
函数声明
|
|
*******************************************************************************************************/
|
|
typedef enum
|
|
{
|
|
eHandWrite = 0,
|
|
ePointRead_2000A = 1,
|
|
ePointRead_3000A = 2,
|
|
ePointRead_LightGuide = 3,
|
|
eCar_LightGuide = 4,
|
|
}AppDevice;
|
|
extern AppDevice eAppDevice;
|
|
/*****************
|
|
|
|
void OidTaskLoop(void);
|
|
uint8_t L1_oid_TransCmd(uint8_t Cmd);
|
|
uint8_t WakeUpOID(void);
|
|
|
|
|
|
void L1_oid_RecvOptData(void);
|
|
|
|
void LogRegister(void);
|
|
uint8_t L1_oid_CheckVersionAndInit(AppDevice eAppDevice);
|
|
|
|
/*****************************/
|
|
/**********************************************************
|
|
Bit Indication
|
|
63–60 0110b
|
|
59–54 Reserved
|
|
53–45 Angle
|
|
44 Reserved
|
|
43–36 1111 0010b (Y decimal)
|
|
35–28 0111 0100b (X decimal)
|
|
27–14 00 0000 0000 0100b (Y integer)
|
|
13–0 00 0000 0000 0100b (X integer) 变量定义
|
|
******************************************************/
|
|
|
|
|
|
|
|
typedef struct _ts_OID
|
|
{//8byte
|
|
/// u8 d[8];
|
|
U_U64 rec;
|
|
U8 oid_type; //类型63–60 0110b
|
|
U16 angle; // 53–45 Angle 53,52 51 50 49,48 47 46 45
|
|
U8 Ydec; //小数部分43–36 1111 0010b (Y decimal)
|
|
U8 Xdec; //小数部分35–28 0111 0100b (X decimal)
|
|
vU16 Yint; //整数部分 27–14 00 0000 0000 0100b (Y integer)
|
|
vU16 Xint; //整数部分 13–0 00 0000 0000 0100b (X integer)
|
|
|
|
vU16 Y100,X100;///放大100倍的输出
|
|
vU32 gCode; //
|
|
|
|
vU32 time;
|
|
vU32 last_time;
|
|
|
|
vU32 overtime;
|
|
|
|
|
|
float x,y;//cut
|
|
vU16 pre_x,pre_y;//cut
|
|
U8 oid_x;
|
|
U8 oid_p;
|
|
|
|
|
|
}Ts_OID_;
|
|
extern Ts_OID_ ts_oid;
|
|
///extern volatile uint32_t RecvData[3];
|
|
|
|
void L0_Oid_Init(void);
|
|
|
|
uint8_t L1_oid_TransCmd(uint8_t Cmd);
|
|
void L1_print_rcv(char *str);
|
|
uint32_t L1_oidReadRegister (uint16_t Data1);
|
|
void L1_Oid_readoid(void);
|
|
uint8_t L1_OID_WakeUp(void);
|
|
void L2_oid_ParseF1(void);
|
|
void L0_oid_Recv64(void);
|
|
|
|
#endif // __OPTICALDATA__
|
|
|
|
|