#ifndef __FLOW_H_
#define __FLOW_H_

//====================================================PMW3901硬件 SPI 驱动====================================================
#define PMW3901_SPI_SPEED                          ((uint32)5 * 1000 * 1000U)          // 硬件 SPI 速率
#define PMW3901_SPI                                (SPI_2)         // 硬件 SPI 号
#define PMW3901_MOS_PIN                            (SPI2_CH2_MOSI_P25)         // 硬件 SPI SCK 引脚
#define PMW3901_CLK_PIN                            (SPI2_CH2_SCLK_P27)         // 硬件 SPI MOSI 引脚
#define PMW3901_MIS_PIN                            (SPI2_CH2_MISO_P26)         // 硬件 SPI MISO 引脚
#define PMW3901_CS_PIN                             (IO_P22)                       // CS 片选引脚
#define PMW3901_CS(x)                              (x? (gpio_high(PMW3901_CS_PIN)): (gpio_low(PMW3901_CS_PIN)))
uint8 PMW3901_read_register(spi_index_enum spi_n, uint8 register_name);
void PMW3901_write_register(spi_index_enum spi_n, uint8 register_name,uint8 dat);
void PMW3901_initRegisters();
void PMW3901_init();
void readMotionCount(int16 *deltax, int16 *deltay);
//====================================================PMW3901硬件 SPI 驱动====================================================


//====================================================vl53软件iic驱动====================================================
// 测距距离为(0~1.4m)
// 测距频率,可选填100,66,50,30,20,10,5,2(单位Hz)
#define	TOF400C_FREQ							50
// TOF400C激光测距模块管脚宏定义
// TOF400C,SCL和SDA管脚	
#define TOF400C_SCL								P23
#define TOF400C_SDA  							P24
// TOF400C引脚电平操作
#define TOF400C_SCL_LEVEL(level)	(TOF400C_SCL=level)
#define TOF400C_SDA_LEVEL(level)	(TOF400C_SDA=level)
// TOF400C延时
#define TOF400C_DELAY							0
#define TOF400C_DELAY_MS(time)		(system_delay_ms(time))
// TOF400C初始化超时次数限制
#define TOF400C_TIMEOUT_COUNT    	10
extern uint16 TOF_distance;
void TOF400C_init(void);
uint16 Get_Distance_TOF400C(void);
// VL53L1X相关地址宏定义
#define VL53L1X_DEFAULT_DEVICE_ADDRESS												0x0052  
#define VL53L1_I2C_SLAVE__DEVICE_ADDRESS                    	0x0001	
#define GPIO_HV_MUX__CTRL                                     0x0030	
#define GPIO__TIO_HV_STATUS                                   0x0031	
#define RANGE_CONFIG__TIMEOUT_MACROP_A_HI                     0x005E	
#define RANGE_CONFIG__TIMEOUT_MACROP_B_HI                     0x0061	
#define SYSTEM__INTERRUPT_CLEAR                               0x0086	
#define RESULT__RANGE_STATUS                                 	0x0089
#define VL53L1_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0	0x0096	
//====================================================vl53软件iic驱动====================================================//
void FLOW_init();



#endif