欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

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

    • 资源ID:3409838       资源大小:22.50KB        全文页数:4页
    • 资源格式: DOC        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    基于Dragonboard 410c的超声波测距应用层激活驱动编写前言:最近基于dragonboard410c上做一个demo,其中就要用到超声波模块来测距以达到当人靠近超声波一定距离的时候,驱动会上报single,激活应用层。这个驱动写的有点简单,如果大家有什么见解可以提出。一、硬件搭建1.Dragonboard410c开发板:低速接口中pin1,pin23,pin25,ping35对应的GPIO接口,见Low speed Expansion connector分布图2.US-100电平触发测距工作原理:在模块上电前,首先去掉模式选择跳线上的跳线帽,使模块处于电平触发模式。电平触发测距的时序如图:只需要在 Trig/TX 管脚输入一个 10US 以上的高电平,系统便可发出 8 个 40KHZ 的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX 管脚输出。在此模式下,模块将距离值转化为 340m/s 时的时间值的 2倍,通过 Echo 端输出一高电平,可根据此高电平的持续时间来计算距离值。即距离值为:(高电平时间*340m/s)/2。3.按照下表的方式将US-100与开发板电气连接二、软件环境搭建根据blog教程在装有Ubuntu的主机上下载相应源码以及编译工具。注意:在dts中要修改apq8016-sbc.dtsi文件,增加超声波驱动的节点信息:sonarcompaTIble = thundersoft,sonar;thunder,poll_TIme =50;thunder,gpio_cmd = msm_gpio 13 0;thunder,gpio_irq = msm_gpio 36 0;三、驱动编写1./匹配设备树定义接口staTIc int parse_dt(struct platform_device* pdev,struct us100_data* data)int rc;struct device_node* node = pdev-dev.of_node;/将node 50 写入到poll_TIme中rc = of_property_read_u32(node,thunder,poll_time,data-poll_time);if(rc)pr_warning(%s you should point time,_FUNCTION_);data-poll_time = 20;/* -TrigPin3-PIN25- gpio13- gpio_cmd -cmd_gpio- */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_gpio0 | data-echo_gpio0)pr_err(%s,error gpion,_FUNCTION_);return -EINVAL;return 0;2./启动、关闭方波产生static ssize_t hs100_store_enable(struct device *dev,struct device_attribute *attr,const char *buf, size_t size)struct us100_data* data = dev_get_drvdata(dev);int enable = simple_strtoul(buf,NULL,10);if(enable)/调用cmd_work_funcschedule_delayed_work(data-cmd_work,0);data-enable =1;else/取消调用cmd_work_funccancel_delayed_work_sync(data-cmd_work);data-enable=0;return size;3./实现12us的方波功能static void cmd_work_func(struct work_struct* work)struct us100_data* data = container_of(work,struct us100_data,cmd_work.work);gpio_set_value(data-cmd_gpio,1);延迟12us产生方波udelay(12);gpio_set_value(data-cmd_gpio,0);/genarate a 12 us pluse/ printk(%s send cmdn,_FUNCTION_);/激活工作队列中的cmd_work_funcschedule_delayed_work(data-cmd_work,msecs_to_jiffies(data-poll_time);/实现获得实际距离的功能static void report_work_func(struct work_struct* work)struct timespec now,last;s64 diff_time;/*-通过结构体中成员的首地址获结构体变量首地址-*/struct us100_data* data = container_of(work,struct us100_data,report_work);/时间格式转换now = ktime_to_timespec(data-now_ktime);last= ktime_to_timespec(data-last_ktime);/时间差diff_time = now.tv_sec*1000000000UL+now.tv_nsec-last.tv_sec*1000000000UL-last.tv_nsec;/ printk(ns=%lldn,diff_time);mutex_lock(data-data_lock);/实际距离data-distance = diff_time*170*100*10/1000000000UL;mutex_unlock(data-data_lock);data- data_ready = true;/ 唤醒data_queue 指定的注册在等待队列上的进程wake_up_interruptible(data-data_queue);/ printk(dis=%dn,data-distance);

    注意事项

    本文(基于Dragonboard 410c的超声波测距应用层激活驱动编写.doc)为本站会员(白大夫)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开