欢迎来到天天文库
浏览记录
ID:27870221
大小:190.50 KB
页数:6页
时间:2018-12-06
《基于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
此文档下载收益归作者所有