OpenEdv-开源电子网

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

stm32串口查询方式接受16位数据(us100超声波模块),只能接受高8位数据,为啥????

[复制链接]

18

主题

54

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-2-27
在线时间
39 小时
发表于 2016-4-1 09:23:47 | 显示全部楼层 |阅读模式
5金钱
最近在用US100超声波模块,已经用串口中断方式实现,想尝试用串口查询方式接受数据,但经检验:只能接收到高8位正常数据,低8位跟高8位数据相同。US—100:
  • 串口触发测距工作原理
在模块上电前,首先插上模式选择跳线上的跳线帽,使模块处于串口触发模式
在此模式下只需要在Trig/TX管脚输入0X55(波特率9600),系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。
输出的距离值共两个字节,第一个字节是距离的高8位(HDate),第二个字节为距离的低8位(LData),单位为毫米。即距离值为(HData*256 +LData)mm。


int main(void)
{
        u8 Hdata=0,Ldata=0;
        u16 data=0;
        uart_init(9600);
        usart_init(9600);
        delay_init(84);
        while(1)
        {

                USART_SendData(USART2,0x55);        //超声波模块串口模式 测距 触发数据
                Hdata=USART_ReceiveData(USART2);
                Ldata=USART_ReceiveData(USART2);
                data=((Hdata*256 +Ldata)/10);     //计算距离
                printf("\r\n您发送的消息为:%d",data);
                delay_ms(1000);       

        }

}



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

使用道具 举报

12

主题

132

帖子

1

精华

高级会员

Rank: 4

积分
798
金钱
798
注册时间
2015-8-3
在线时间
184 小时
发表于 2016-4-1 09:33:56 | 显示全部楼层
串口接收不要用轮询,要用中断,
现在你只是连续读两次,如果第二次数据还没有发过来,那么第一次的数据你就读取了两次,
改为中断接收即可。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11531
金钱
11531
注册时间
2014-4-1
在线时间
1312 小时
发表于 2016-4-1 10:01:59 | 显示全部楼层

串口是很慢的方式,用查询没问题。
但要正确操作:一是有接收标志再读数据;二是保证查询密度,才能不丢数据。


回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2016-4-1 11:00:31 | 显示全部楼层
像上面講的一樣 你根本沒作查詢就直接讀了...
所以你讀到的不知道是啥東東...確定是high byte?? 我怎麼覺得是讀到上一筆的low byte
你要先檢查SR的RXNE位是不是1才能讀...
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-6-11
在线时间
9 小时
发表于 2019-6-12 17:36:59 | 显示全部楼层
我最近也在研究US100超声波测距,能不能发一份中断的代码让我借鉴一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 00:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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