初级会员

- 积分
- 67
- 金钱
- 67
- 注册时间
- 2018-1-6
- 在线时间
- 18 小时
|
1金钱
发送接收时序如下
#define Serial_In PDout(6)
#define Direct_Link_IN PGin(9)
#define Direct_Link_OUT PGout(9)
#define T_SL 1 //200-2000ns
#define T_SH 1 //200-2000ns
#define T_SHD 100 // > 72 data in hold
#define T_SLT 1000 // > 580 data load time
#define T_DS 120 //data SETUP time 110-150us
#define T_DL 1 //200-2000ns
#define T_DH 1 //200-2000ns
typedef union{
struct{
uint32_t Reserved : 5 ; // [4:0],Must be written to 16 decimal.
uint32_t Filter_Source : 2 ; // 0 = PIR (BPF),
// 1 = PIR (LPF)
// 2 = reserved
// 3 = Temperature Sensor
uint32_t Operation_Modes : 2 ; // 0 = Forced Read Out Mode
// 1 = Interrupt Read Out Mode
// 2 = Wake Up Operation Mode
// 3 = reserved
uint32_t Window_Time : 2 ; // Window time = 4s + [RegisterValue] * 4s
uint32_t Pulse_Counter : 2 ; // Number of pulses = 1 + [RegisterValue]
uint32_t Blind_Time : 4 ; // Blind time = 0.5s + [RegisterValue] * 0.5s
uint32_t Sensitivity : 8 ; // This value defines the threshold for detection
uint32_t : 7;
}Register;
uint32_t Configuration_Register;
}Configuration_Register_Typedef;
void Send_Data_TO_PYD1698( uint32_t dat ){
uint8_t i;
Serial_In = 0;
delay_us (T_SLT);
for( i = 0 ; i < 25 ;i ++){
Serial_In = 0;
delay_us(T_SL);
Serial_In = 1;
delay_us(T_SH);
if(dat&(1<<(24-i))){
Serial_In = 1;
}
else{
Serial_In = 0;
}
delay_us (T_SHD);
}
Serial_In = 0;
// delay_us (T_SLT); //data load time
delay_ms (10);
}
void Receive_Data_From_PYD1698( void){
uint8_t i;
uint16_t ADC_data = 0x0000;
uint32_t Config_Reg = 0x00000000;
Net_SDA_OUT();
Direct_Link_OUT = 1;
delay_us (T_DS);
for( i = 0 ; i < 15 ;i ++){
ADC_data <<= 1;
Net_SDA_OUT();
Direct_Link_OUT = 0;
delay_us(T_SL);
Direct_Link_OUT = 1;
delay_us(T_SH);
Net_SDA_IN();
delay_us (50);
if(Direct_Link_IN)
ADC_data ++;
}
for( i =0 ;i < 25 ; i ++){
Config_Reg <<= 1;
Net_SDA_OUT();
Direct_Link_OUT = 0;
delay_us(T_SL);
Direct_Link_OUT = 1;
delay_us(T_SH);
Net_SDA_IN();
delay_us (50);
if(Direct_Link_IN)
Config_Reg ++;
}
Net_SDA_OUT();
Direct_Link_OUT = 0;
delay_us (T_SLT); //data load time
}
|
|