资源描述:
《基于ARM9的三轴加速度传感器动作识别装置设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于ARM9的三轴加速度传感器动作识别装置设计摘要:该装置以ARM9为核心,采用linux操作系统,驱动飞思卡尔的三轴陀螺仪mma7660fc传感器采集外部动作的数据。加以算法分析处理,即可得到方向的角度变化、震动、敲击的外部信息。该装置可用于MP3、PDA、MID、智能手机等各种手持电子设备的人性化智能控制。关键字:三轴加速度传感器、linux操作系统、ARM9ARM9-basedthree-axisaccelerationsensordevicedesignedtoidentifytheactionAbstract:The
2、devicetoARM9core,usinglinuxoperatingsystem,driversofthree-axisgyroscopemma7660fcFreescalesensordataacquisitionexternalaction.Toalgorithmanalysisandprocessing,canbeobtainedbychangingtheangleoforientation,vibration,percussionexternalinformation.ThedevicecanbeusedforMP
3、3,PDA,MID,smartphonesandotherhandheldelectronicdevices,humanintelligentcontrol.Keywords:three-axisaccelerometer,linuxoperatingsystem,ARM90引言随着电子消费品性能和功能的不断发展,消费者对产品的各种人性化的操作的需求也不断提高,因此,在手持设备等便携电子产品上使用各种智能传感器采集外部各种信息,并用于完善设备本身功能的控制,使其更加人性化,具有现实意义。1装置概述该装置由ARM9处理器结合li
4、nux操作系统,通过i2c总线驱动,获取ma7660fc采集外部动作:设备被转动方向的变化和角度的大小,和速度的快慢,震动或被敲击的数据,并进行适当的算法处理,提取出有用的控制信息。其硬件原理图如图1所示,其软件系统结构如图2所示。图1I2CconnectiontoMCU3软件设计3.1驱动核心代码分析……staticstructtimer_list*sensor_timer;staticstructwork_structsensor_work_q;……//定时器中断服务程序staticvoidsensor_timer_han
5、dler(unsignedlongdata){//调度工作队列if(schedule_work(&sensor_work_q)==0){sensor_dbg("cannotschedulework!!!");}}……//注册一个内核定时器staticvoidsensor_timer_registertimer(structtimer_list*ptimer,unsignedinttimeover){init_timer(ptimer);ptimer->expires=jiffies+msecs_to_jiffies(tim
6、eover);ptimer->data=(unsignedlong)NULL;ptimer->function=sensor_timer_handler;add_timer(ptimer);}……//定时器中断底半部处理函数staticvoidsensor_fetch_thread(structwork_struct*work){mma7660_sensor_get_accel();sensor_timer_registertimer(sensor_timer,sensor_duration);}int__inittcc_se
7、nsor_init(void){……//初始化工作队列并将工作队列与处理函数绑定INIT_WORK(&sensor_work_q,sensor_fetch_thread);return0;}3.2测试应用程序分析……#include#include……intmain(intargc,char**argv){//打开设备文件fd=open(/dev/sensor,O_RDWR);……//读数据xyz数据ret=read(fd,&calib_data,sizeof(cal
8、ib_data));……//读取加速度数据ioctl(fd,IOCTL_SENSOR_GET_DATA_ACCEL,&accel);……//设置采样时间ioctl(fd,IOCTL_SENSOR_SET_DELAY_ACCEL,&delay_time);……//读取驱动状态标