找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1929|回复: 8
打印 上一主题 下一主题
收起左侧

超声波模块,我持续给trig口高电平,用万用表去测echo口总为低电平是怎么...

[复制链接]
跳转到指定楼层
楼主
ID:1022410 发表于 2022-4-28 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求答,我用的是普中的板子
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:752974 发表于 2022-4-28 16:41 | 只看该作者
如果echo口输出是脉冲的话,应该用示波器查看。
回复

使用道具 举报

板凳
ID:161164 发表于 2022-4-28 18:54 | 只看该作者
因为Echo的高电平时间是微秒级别的
万用表反应不过来
应该用逻辑分析议或示波器
回复

使用道具 举报

地板
ID:1022951 发表于 2022-4-30 16:01 | 只看该作者
用示波器查看。
回复

使用道具 举报

5#
ID:1022410 发表于 2022-5-2 09:50 | 只看该作者

哦哦,那请问一下,在串口发送数据时只有插拔送电才会出现数据,怎么回事啊,就是接vcc那条杜邦线只有碰一下超声波的vcc端才会发送数据这是怎么回事啊?杜邦线直接插到超声波vcc就不会发送数据了,trig高低脉冲转换放到while里面和外面都没用
回复

使用道具 举报

6#
ID:161164 发表于 2022-5-2 14:40 | 只看该作者
岁晚 发表于 2022-5-2 09:50
哦哦,那请问一下,在串口发送数据时只有插拔送电才会出现数据,怎么回事啊,就是接vcc那条杜邦线只有碰 ...

哦哦,那请问一下,在串口发送数据时只有插拔送电才会出现数据,怎么回事啊,
出现什么数据?

就是接vcc那条杜邦线只有碰一下超声波的vcc端才会发送数据这是怎么回事啊?
发送什么数据?

杜邦线直接插到超声波vcc就不会发送数据了,
发送什么数据?

trig高低脉冲转换放到while里面和外面都没用
贴代码

回复

使用道具 举报

7#
ID:1022410 发表于 2022-5-2 20:43 | 只看该作者
lkc8210 发表于 2022-5-2 14:40
哦哦,那请问一下,在串口发送数据时只有插拔送电才会出现数据,怎么回事啊,
出现什么数据?

出现的是捕获的高电平时间


回复

使用道具 举报

8#
ID:1022410 发表于 2022-5-2 20:58 | 只看该作者
lkc8210 发表于 2022-5-2 14:40
哦哦,那请问一下,在串口发送数据时只有插拔送电才会出现数据,怎么回事啊,
出现什么数据?

出现的是捕获高电平的时间


        while(1)
        {

                  GPIO_ResetBits(GPIOB,GPIO_Pin_5);
                        delay_us(30);
                        GPIO_ResetBits(GPIOB,GPIO_Pin_5);
               
                if(TIM_ICUserValueStructure.Capture_FinishFlag == 1)
                {
                        // 计算高电平时间的计数器的值
                        time = TIM_ICUserValueStructure.Capture_Period * (0xffff+1) +
                               (TIM_ICUserValueStructure.Capture_CcrValue+1);
                       
                        // 打印高电平脉宽时间
                        printf ( "\r\n测得高电平脉宽时间:%d.%d s\r\n",time/TIM_PscCLK,time%TIM_PscCLK );
                       
                        TIM_ICUserValueStructure.Capture_FinishFlag = 0;                       
                }       






void TIM4_IRQHandler(void)
{
        // 当要被捕获的信号的周期大于定时器的最长定时时,定时器就会溢出,产生更新中断
        // 这个时候我们需要把这个最长的定时周期加到捕获信号的时间里面去
        if ( TIM_GetITStatus ( GENERAL_TIM, TIM_IT_Update) != RESET )               
        {       
                TIM_ICUserValueStructure.Capture_Period ++;               
                TIM_ClearITPendingBit ( GENERAL_TIM, TIM_FLAG_Update );                
        }

        // 上升沿捕获中断
        if ( TIM_GetITStatus (GENERAL_TIM, GENERAL_TIM_IT_CCx ) != RESET)
        {
                // 第一次捕获
                if ( TIM_ICUserValueStructure.Capture_StartFlag == 0 )
                {
                        // 计数器清0
                        TIM_SetCounter ( GENERAL_TIM, 0 );
                        // 自动重装载寄存器更新标志清0
                        TIM_ICUserValueStructure.Capture_Period = 0;
      // 存捕获比较寄存器的值的变量的值清0                       
                        TIM_ICUserValueStructure.Capture_CcrValue = 0;

                        // 当第一次捕获到上升沿之后,就把捕获边沿配置为下降沿
                        TIM_OC1PolarityConfig(GENERAL_TIM, TIM_ICPolarity_Falling);
      // 开始捕获标准置1                       
                        TIM_ICUserValueStructure.Capture_StartFlag = 1;                       
                }
                // 下降沿捕获中断
                else // 第二次捕获
                {
                        // 获取捕获比较寄存器的值,这个值就是捕获到的高电平的时间的值
                        TIM_ICUserValueStructure.Capture_CcrValue =
                         TIM_GetCapture1 (GENERAL_TIM);

                        // 当第二次捕获到下降沿之后,就把捕获边沿配置为上升沿,好开启新的一轮捕获
                        TIM_OC1PolarityConfig(GENERAL_TIM, TIM_ICPolarity_Rising);
      // 开始捕获标志清0               
                        TIM_ICUserValueStructure.Capture_StartFlag = 0;
      // 捕获完成标志置1                       
                        TIM_ICUserValueStructure.Capture_FinishFlag = 1;               
                }

                TIM_ClearITPendingBit (GENERAL_TIM,GENERAL_TIM_IT_CCx);            
        }               
}




回复

使用道具 举报

9#
ID:1022410 发表于 2022-5-2 21:00 | 只看该作者
lkc8210 发表于 2022-5-2 14:40
哦哦,那请问一下,在串口发送数据时只有插拔送电才会出现数据,怎么回事啊,
出现什么数据?

现在主要我想弄清楚为什么那个串口不能连续接收到数据,只能碰一下接收一个,trig高低电平转换放while里面外面都一样
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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