//////////////////////////////////////////////////////////////////////////// ///@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 "msp_uart1.h" #include "TTSS_task.h" #include "bsp_gc032a.h" #include "msp_iicMx.h" //>>>>>>>>>>>>>>>>>>>>>0gc63xxtask //#define D_i2c_addr_gc61xx 0x80 //page8/30 @pdf #define D_i2c_addr_gc032A 0x42 //page15/31 @pdf #define D_0xfa 0x33 ///16 2ms 921600bps发送一帧数据耗时640*0.1/4 = 8ms ///8 1ms 921600bps发送一帧数据耗时640*0.1/4 = 8ms ///921600bps 92,160Byte 92B/ms 1ms发送90Bytes ////640 / 90 = 6.9ms ///640x480 = 307,200 307200 / 90 = 3,333ms = 3.3s = 6.9msx480 ////div = 16 每1/480行数据 采样耗时 2ms 那么发送 1s多发送一帧画面(640x480) 发送一行(640点)的时间为6.9ms /// div = 16 发送就是4等份 ///div = 8 0.5ms 一帧 发送8等分 #define MCLKOCR_P54 0 #define MCLKOCR_P16 BITN7 #define D_cam_speed 16 #if(D_cam_speed == 16) #define D_480_div 8 //// 和MCLKOCR_DIV关联 //#define D_row_max 640 #define MCLKOCR_DIV D_cam_speed//4分频 需要测试 16 = 1.2svs 4= 300ms 32不出数据 #elif(D_cam_speed == 8) #define D_480_div 4 //// 和MCLKOCR_DIV关联 //#define D_row_max 640 #define MCLKOCR_DIV D_cam_speed//4分频 需要测试 16 = 1.2svs 4= 300ms 32不出数据 #elif(D_cam_speed == 4) #define D_480_div 4 //// 和MCLKOCR_DIV关联 //#define D_row_max 640 #define MCLKOCR_DIV D_cam_speed//4分频 需要测试 16 = 1.2svs 4= 300ms 32不出数据 #elif(D_cam_speed == 2) #define D_480_div 96 //// 和MCLKOCR_DIV关联 //#define D_row_max 640 #define MCLKOCR_DIV D_cam_speed//4分频 需要测试 16 = 1.2svs 4= 300ms 32不出数据 #endif #define L0_GC032A_write(R,D) L2_IICMx_WriteCmd(D_iicch_gc032a,D_i2c_addr_gc032A,(R),(D))////L2_I2C_WriteCmd(D_i2c_addr_gc032A,(R),(D)) #define L0_GC032A_read(R,D,N) L2_IICMx_ReadReg(D_iicch_gc032a,D_i2c_addr_gc032A,(R),(D),(N))/// L2_I2C_ReadReg(D_i2c_addr_gc032A,(R),(D),(N)) #define L0_GC032A_reg(R,D) L2_tws_ReadReg(D_iicch_gc032a,D_i2c_addr_gc032A,(R),(D)) #define L0_GC032A_work() D_P35_OFF(); #define L0_GC032A_standby() D_P35_ON();//fixme D_P55_ON(); ///Sensor power down control:0: normal work 1: standby ///#define L0_GC032A_RCLK() D_P35_OFF();D_P35_ON(); //λ74hc595洢 ///#define L0_GC032A_RCLK_ok() D_P35_OFF(); #define GC6123_SERIAL_write_cmos_sensor L0_GC032A_write //#define D_row_max 640 //#define D_row_max 680 ///#define D_row_max 510 #define D_row_max 1200 extern vU16 data gdataUs02,gdataUs03,gdataUs05; /****** /// gRccUs03, gRccUs01_H,// gRccUs01_L, gRccUs04,//// ;// ******/ typedef struct { vU16 pclk_n; vU16 hs_n; }TS_clk_; extern TS_clk_ data ts_clk; typedef struct { TS_task task; /// vU32 t_stamp; vU16 pclk_max; vU16 HS_max; vU16 VS_max; //// vU16 HS_max; vU16 HS_n; //// vU16 pclk_n; vU16 pclk_m; vU16 HS[481]; u8 hs_ok; u8 vs_ok; u8 m; unsigned char status; // volatile unsigned short usHs_count; // volatile unsigned short usPclk; //volatile unsigned short up_point; //volatile unsigned short down_point; /// unsigned char line_onf; unsigned char fisrt; /// volatile unsigned short usN; ////// unsigned short usMax; unsigned char buf[4][D_row_max +2]; }TS_task_GC032A_; extern TS_task_GC032A_ ts_task_GC032a; void L2_task_GC032A_init(void); #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_GC032A_write_reg 0x40 #define D_task_GC032A_start_time 0x41 #define D_task_GC032A_wait 0x42 #define D_task_GC032A_div 0x43 #define D_task_GC032A_dat 0x34 #define D_task_GC032A_send_line 0x35 #define D_task_GC032A_send1 0x55 #define D_task_GC032A_send2 0x36 #define D_task_GC032A_send3 0x37 #define D_task_GC032A_send4 0x38 #define D_task_GC032A_send5 0x39 ////#define D_task_GC032A_over 0x63 #define D_task_GC032A_cal 0x63 #define D_task_GC032A_433 0x64 #define D_task_GC032A_sleep 0x67 void L2_task_GC032A_handle(TS_task_GC032A_ *s); #define D_cam_led_on(); LED3 = 1;////L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC2,D_CW63XX_ON|D_CW63XX_3V2); #define D_cam_led_off(); LED3 = 0;//L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC2,D_CW63XX_OFF|D_CW63XX_2V8); #define D_cam_DVDD_on(); ///LED3 = 1;//L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC,D_CW63XX_ON|D_CW63XX_2V8); #define D_cam_DVDD_off(); //L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC,D_CW63XX_OFF|D_CW63XX_2V8); #define D_cam_AVDD_on(); ///L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC3,D_CW63XX_ON|D_CW63XX_2V8); #define D_cam_AVDD_off(); ////L2_I2C_WriteCmd(D_i2c_addr_cw63xx,D_power_VCC3,D_CW63XX_OFF|D_CW63XX_2V8); //////////////////////////////////////////////////////////////////// ////extern TS_P_rf TS_paer_value; void GC032A_port_init(void); void L3_GC032A_fun(U8 *pPara); void L1_GC032A_sleep(unsigned char onf); void L3_GC032A_debug(u8 filter); #endif // #ifndef _bsp_gc6133_H