基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc

基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc

ID:27870221

大小:190.50 KB

页数:6页

时间:2018-12-06

基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc_第1页
基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc_第2页
基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc_第3页
基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc_第4页
基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc_第5页
资源描述:

《基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于Dragonboard410c的超声波测距应用层激活驱动编写1.Dragonboard410c开发板:  低速接口中pin1,pin23,pin25,ping35对应的GPIO接口,见《LowspeedExpansionconnector》分布图  2.US-100电平触发测距工作原理:  在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式。  电平触发测距的时序如图:    只需要在Trig/TX管脚输入一个10US以上的高电平,系统便可发出8个40KHZ的超声波脉冲,然后检

2、测回  波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。  在此模式下,模块将距离值转化为340m/s时的时间值的2倍,通过Echo端输出一高电平,可根据此高电平的持续时间来计算距离值。即距离值为:(高电平时间*340m/s)/2。  3.按照下表的方式将US-100与开发板电气连接  二、软件环境搭建  根据blog教程在装有Ubuntu的主机上下载相应源码以及编译工具。  注意:在dts中要修改apq8016-s

3、bc.dtsi文件,增加超声波驱动的节点信息:  sonar{  compaTIble=“thundersoft,sonar”;  thunder,poll_TIme=;  thunder,gpio_cmd=;  thunder,gpio_irq=;  };三、驱动编写1.//匹配设备树定义接口  staTIcintparse_dt(structplatform_device*pdev,structus100_data*data){  intrc;  structdevice_node*node=p

4、dev->dev.of_node;  //将node50写入到poll_TIme中  rc=of_property_read_u32(node,“thunder,poll_time”,&data->poll_time);  if(rc){  pr_warning(“%syoushouldpointtime”,__FUNCTION__);  data->poll_time=20;  }  /*--TrigPin3---PIN25----gpio13----gpio_cmd---cmd_gpio----

5、-------*/  data->cmd_gpio=of_get_named_gpio(node,“thunder,gpio_cmd”,0);  /*--EchoPin2---PIN23----gpio36----gpio_irp---echo_gpio-----------*/  data->echo_gpio=of_get_named_gpio(node,“thunder,gpio_irq”,0);  if(data->cmd_gpioecho_gpio2.//启动、关闭方波产生  static

6、ssize_ths100_store_enable(structdevice*dev,  structdevice_attribute*attr,  constchar*buf,size_tsize){  structus100_data*data=dev_get_drvdata(dev);  intenable=simple_strtoul(buf,NULL,10);  if(enable){  //调用cmd_work_func  schedule_delayed_work(&data->cmd

7、_work,0);  data->enable=1;  }  else{  //取消调用cmd_work_func  cancel_delayed_work_sync(&data->cmd_work);  data->enable=0;  }  returnsize;  }3.//实现12us的方波功能  staticvoidcmd_work_func(structwork_struct*work){  structus100_data*data=container_of(work,structus

8、100_data,cmd_work.work);  gpio_set_value(data->cmd_gpio,1);  延迟12us产生方波  udelay(12);  gpio_set_value(data->cmd_gpio,0);//genaratea12uspluse  //printk(“%ssendcmd”,__FUNCTION__);  //激活工作队列中的cmd_work_func  schedule_delayed_work(&data->cm

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。