//////////////////////////////////////////////////////////////////////////// ///@copyright Copyright (c) 2018, 传控科技 All rights reserved. ///------------------------------------------------------------------------- /// @file bsp_gc6133.c.h /// @brief bsp @ driver config ///------------------------------------------------------------------------- /// @version 1.0 /// @author CC /// @date 20180331 /// @note cc_AS_stc02 ////////////////////////////////////////////////////////////////////////////// #ifndef _bsp_cam_H #define _bsp_cam_H #include "../bsp/bsp_config.h" #include "../tpc/tpc_uart.h" #include "../msp/uart0.h" #include "bsp_gc032a.h" //>>>>>>>>>>>>>>>>>>>>>0gc63xxtask //#define D_i2c_addr_gc61xx 0x80 //page8/30 @pdf #define D_i2c_addr_gc032A 0x42 //page15/31 @pdf ///// 400KHz Tlow > 1.3us #define L0_GC032A_write(R,D) L2_I2C_WriteCmd(D_i2c_addr_gc032A,(R),(D)) #define L0_GC032A_read(R,D,N) L2_I2C_ReadReg(D_i2c_addr_gc032A,(R),(D),(N)) #define L0_GC032A_reg(R,D) L2_tws_ReadReg(D_i2c_addr_gc032A,(R),(D)) /// p55 pwdn /// p54 inclk /// p3.7 vsync /// p3.6 hsync #if 0 #define L0_GC032A_work() D_P55_OFF(); #define L0_GC032A_standby() #else #define L0_GC032A_work() D_P55_OFF();D_stdIO_P1_ALL();\ D_stdIO_P5(BITN4);\ D_stdIO_P5(BITN5);\ D_stdIO_P3(BITN7);\ D_stdIO_P3(BITN6); #define L0_GC032A_standby() D_HighR_P1_ALL();\ D_HighI_P5(BITN4);\ D_HighI_P5(BITN5);\ D_HighI_P3(BITN7);\ D_HighI_P3(BITN6);D_P55_ON(); ///pwdn 100uAD_P55_OFF();// #endif #define GC6123_SERIAL_write_cmos_sensor L0_GC032A_write ///#define D_pclk_per_hs 628 ///#define D_pclk_per_hs 688 #define D_pclk_per_hs 639 ///027F #define D_pclk_per_hs_570 570 //#define D_pclk_per_hs 580 #define D_pclk_per_hs_2 D_pclk_per_hs ///#define D_pclk_per_hs_2 (110) //#define D_pclk_per_hs 6 struct _s_task_GC032A_ { TS_task task; /// vU32 t_stamp; unsigned short lines; ///当前行采样结束 unsigned short frames; ///当前行采样结束 unsigned char next_line:1; ///下一行采样开始 unsigned char cal_ok:1; ///当前行采样结束// unsigned char lamp:1; ///当前灯的标志 unsigned char line_get:1; ///当前需要的行采样结束 可以计算了 unsigned char line_ok:1; /// 采样的开关 unsigned char vs_ok:1; /// 开始一帧的采样 代表收到了vs信号 unsigned char line_onf:2; /// D_line_onf_get=0发送需要发送的一个line\\ D_line_onf_all=1 发送连续line // volatile unsigned short usHs_count; // volatile unsigned short usPclk; unsigned char buf2_ok; /// volatile unsigned short usN; ////// unsigned short usMax; unsigned char buf[D_pclk_per_hs +2]; }; #define D_line_onf_all 1 #define D_line_onf_get 0 extern struct _s_task_GC032A_ s_task_GC032A; void L2_task_GC032A_init(void); #define D_task_GC032A_init_standby 0x36 #define D_task_GC032A_init_DVDD 0x30 #define D_task_GC032A_init_AVDD 0x31 #define D_task_GC032A_init_pwdn 0x32 #define D_task_GC032A_init_pwdn_wait 0x33 #define D_task_FLOW_PreSend 0xa3 #define D_task_FLOW_PreSend2 0xa4 #define D_task_FLOW_send 0x90 #define D_task_FLOW_send2 0x91 #define D_task_FLOW_send3 0x92 #define D_task_FLOW_send4 0x93 #define D_task_FLOW_send5 0x94 #define D_task_GC032A_write_reg 0x40 #define D_task_GC032A_wakup_sample 0x41 #define D_task_GC032A_start_time2 0x43 #define D_task_GC032A_wakup_sample2 0x44 #define D_task_GC032A_wait 0x51 #define D_task_GC032A_one_frame 0x52 #define D_task_GC032A_write_reg2 0x53 #define D_task_GC032A_div 0x54 #define D_task_GC032A_dat 0x55 #define D_task_GC032A_led 0x56 #define D_task_GC032A_send_line 0x61 #define D_task_GC032A_send2 0x62 #define D_task_GC032A_send3 0x63 #define D_task_GC032A_send4 0x64 ////#define D_task_GC032A_over 0x63 #define D_task_GC032A_cal 0x65 ///#define D_task_GC032A_send_over 0x64 #define D_task_GC032A_sleep 0x67 #define D_task_GC032A_06 0x68 #define D_task_GC032A_07 0x69 #define D_task_GC032A_08 0x6a #define D_task_GC032A_09 0x6b #define D_task_GC032A_sample 0x68 #define D_task_GC032A_end 0x69 #define D_task_GC032A_next_line 0x70 extern void L2_task_GC032A_handle(struct _s_task_GC032A_ *s); extern void L2_task_GC032A_handleTest(struct _s_task_GC032A_ *s); //////////////////////////////////////////////////////////////////// extern void GC032A_port_init(void); extern void L3_GC032A_fun(U8 *pPara); extern void L1_GC032A_sleep(unsigned char onf); #define D_cam_led_on(); L1_cw63_reg_set(D_power_VCC2,D_CW63XX_ON|D_CW63XX_3V2);//P34 = 1;/////s_task_GC032A.lamp = D_ON; #define D_cam_led_off(); L1_cw63_reg_set(D_power_VCC2,D_CW63XX_OFF|D_CW63XX_3V2);///P34 = 0;/////s_task_GC032A.lamp = D_OFF; #endif // #ifndef _bsp_gc6133_H