OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2043|回复: 3

STM32F1 与PYD1698通讯,无数据输出

[复制链接]

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2018-1-6
在线时间
18 小时
发表于 2019-8-16 11:03:25 | 显示全部楼层 |阅读模式
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
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-8-17 02:01:28 | 显示全部楼层
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-11-24
在线时间
0 小时
发表于 2019-11-24 06:41:24 | 显示全部楼层
搞定了吗?
回复

使用道具 举报

1

主题

7

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2019-1-9
在线时间
101 小时
发表于 2020-3-5 14:30:48 | 显示全部楼层
顶上去
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-21 15:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表