中级10、重力感应-三轴加速mma_第1页
中级10、重力感应-三轴加速mma_第2页
中级10、重力感应-三轴加速mma_第3页
中级10、重力感应-三轴加速mma_第4页
中级10、重力感应-三轴加速mma_第5页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

0、友情提《零死角玩转STM32》系0、友情提《零死角玩转STM32》系由初级篇、中级篇、高级篇、系统四个部分组成,根据野火STM32开发板旧写,重新排版,更适合初学者,步步为营,从入门到精通, 奔到系统,您零死角玩转STM32。M3的世界,于野另外,野火团队历时一年精心打造的《STM32库开发实战指南》10月份由机械工于查阅资料。内容上会给你带 的惊喜。是一本学习STM32必备的工10、重力感应/三10.1实验描述及工程10、重力感应/三10.1实验描述及工程源线和SDA,SCL端口连接到开发板上的I2C总线即可。EEPROM的也使用I2C总线,所以可以参照EEPROM的件原理图 用到 用户编写的野火STM32开发板2.4G无线模块接口图10.2MMA7455野火STM32开发板2.4G无线模块接口图10.2MMA7455简I2C2g10.3代码分首先要添加用 件,在工程文件夹下Fwlib还要在stm32f10x_conf.h中把相应的头文件添加进来#include"stm32f10x_gpio.h"#include"stm32f10xi2c.h"#include"stm32f10xrcc.h"#include"stm32f10x_usart.h"件之后 ****描述:主函数输入:无输出:无返回:无{/*配置系统时钟为72M*/输出:无返回:无{/*配置系统时钟为72M*//*1初始化*/I2C_MMA_Init(); /*检测倾角*/ if(I2C_MMA_Standby()==SAccelerationenterstandbymode!StandbymodeERROR!SystemInit()72M,USART1_Config()*****:I2C外设(MMA7455)void{I2C_MMA_Init();I2C_GPIO_Config();I2CI/OI2C_Mode_Configu();I2C的工作模式,并使能相关外设I2C_MMA_Init();I2C_GPIO_Config();I2CI/OI2C_Mode_Configu();I2C的工作模式,并使能相关外设*****:测量倾角和度(0-voidI2C_MMA_Test(MMA_Dat*{u8/*MMA进入2g量程测试模式*/测得的数据MMA_Value->Out=I2C_MMA_ByteRead(MMA_Value-if((MMA_Value->Out&0x80==0x00/*{temp=MMA_Value- 度,乘以-1为方向处理MMA_Value->Acc=(float)(-1)*tempif(temp 度值大于1g*/MMA_Value->Angle90.0;1g,Angle57.32=MMA_Value->Angle=}/*读出的原始值为负数{temp=MMA_Value-temp-=1;temp~temp; 度MMA_Value->Acc=(float)tempMMA_Value->Angle-1为方向处理/*Angle=asin(Acc/9.8)*57.32MMA_Value->Angle=(-}*******}*******I2CMMA:-pBuffer-WriteAddrMMA icvoidI2C_MMA_ByteWrite(u8pBuffer,u8/*waituntilI2Cbusisnot /*SendSTARTcondition*/I2C_GenerateSTART(I2C1,ENABLE);/*TestonEV5andclearitwhile(!I2C_CheckEvent(I2C1,/*SendMMAaddressforwriteI2C_Send7bitAddress(I2C1,MMA_ADRESS,/*TestonEV6andclearitwhile(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECT/*SendtheMMA'sRegisteraddresstowriteto*/I2C_SendData(I2C1,WriteAddr);/*TestonEV8andclearitwhile(!I2C_CheckEvent(I2C1,/*Sendthebytetobewritten*/I2C_SendData(I2C1,pBuffer);/*TestonEV8andclearitwhile(!I2C_CheckEvent(I2C1,/*SendSTOPcondition*/I2C_GenerateSTOP(I2C1,ENABLE);EEPROMI2C_EE_PageWrite()函数很类似,第一个参数为要写入的数MMA7455的器件地址(分清器件地址与寄存器地址的区别哦!),MMA7455的DataSheet0X1D,但这0x3A。有区别,市面上的传感器一般^_^I2C_MMA_Test()函数中,I2C_MMA_Test()的13行MMA7455^_^I2C_MMA_Test()函数中,I2C_MMA_Test()的13行MMA7455写度转化完成。以下为DataSheet的说明,附上野取出来,各个方向的原始数据储存在相应的结构体的.Out变量中:{s8float在结构体初始化的时候把寄存器的地址和名称1.MMA_DatMMA_DatMMA_Dat1.MMA_DatMMA_DatMMA_DatMMA7455中的数据以二补数把二补数转换为原码后就可以像处理ADC的数据一样了2g量程,敏感度为:64LSB/g度或-1是野火根据传感器上标注的向,并以此为正方向X*******:MMA7455void{写000g校准。这个函数在第一次测量前必须调用,而且每个传感器的校正值都有不同,其中的校正参数就要大家亲手去调试出来啦。参照DataSheet《AN3745》按以下步骤校准1.这个情况下,Z轴方向标准输出应为1g,X轴和Y轴均为0。对应到各个寄ZOUT864,XOUT80,YOUT80。但是未校准2.向相应的2.向相应的OffSet寄存器写入校准值1/2LSB倍写入的值要相应地XOUT8很标准,不用写入校准值,或向XOFFL写入YOUT8输出为-19YOFFL38=2*19;ZOUT875-222*(64-75);MMA7455寄存器中数值是以补码-220xEA。但是,向ZOFFL0xEA还MMA7455寄存器中数值是以补码-220xEA。但是,向ZOFFL0xEA还是未能校准,因为校准寄存器的还有8位,高8位必须全写入1才是-22的补码,所以还要向ZOFFH写入0xff最后讲解一下Standby模式,只要向MCTL寄存器写入0x04命令就可进Standby模式,这时传感器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论