没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
一、 敲击检测配置
1
,设置敲击检测阈值,
THRESH_TAP
;
2
、
设置最大敲击持续时间,
DUR
(峰值时间 ) ,即敲击的持续时间不能
超过
DUR
的规定值
; 3
、 敲击延迟时间
LATENT
。 第二次敲击检测
在
window
时间内完成
二、 中断控制配置
1
、 中断使能 (
INT_ENABLE
) 。 中断使能配置
。
DATA_READY
,
WA TERMARK,OVERRUN
仅使用中断输出,这些
功能总是处于使能状态。
2
、选择中怕输出(
INT_MAP
) 。需要使用
哪能些功能,然后设置相应的中断输出到
INT1
或
INT2
从而从中断
口输出中断 。
3
、 判断中断源 (
INT_SOURCE)
。 中断源判断 , 从而确
定是不是需要的功能的中断。
三、
ADXL345
每次读写都要一次性的写入两个字节,才可以。
SPI 总线对 ADXL345 内部寄存器的读写操作都是以字节为单位进行的(这是 由
ADXL345 内部 30 个可操作寄存器均为字节寄存器所决定的 ) ,然而每两个字节数据 /
地址之间 CS_n 和 SCLK 一直需要保持有效 。
四、
五、
1 、和 ADXL345 通信是不是只能用输入输出口模拟的 SPI 通信接口;如果用片子上自带 的
SPI 接口就要每次发送两个字节的数据,写时没有什么问题,可是读取 ADXL345 内寄存器的
数据时,当第输入的地址和此地址的数据返回后,后面还要跟 8 个(或者是 64 个时钟脉冲,
不是很清楚 ) ,而这个 8 个时钟脉冲就不知道如何产生了(不是模拟的 SPI 接口 ) 。
2 、 从 DATAx0 , DATAx1 …… 读取的数据 : 其一 、 两个字节合并成一个有符号的整型
,
再判断正负,如果为负则转为原码,去掉符号位,然后与比例因子 0.0039g 相乘。其二、
DATAx0,DATAx1 都转为原码再合并为一个整型数,去掉符号位再 * 比例因子。
程序段一 、 (向 ADXL345 写入两个字节)
void SPI_write_char(uchar addr,uchar data )
{
ADXL_CS=0;
U0DBUF = addr;
while(!U0TX_BYTE);// 即使中断不使能发送中断 * 发送中断标志也
会置位
U0TX_BYTE=0;
U0DBUF = data;
while(!U0TX_BYTE);// 即使中断不使能发送中断 * 发送中断标志也
会置位
U0TX_BYTE=0;
ADXL_CS=1;
}
程序段二 、 (数据处理及显示)
void fomart_data()
{
int X=0,Y=0,Z=0; // 三轴数据
uchar Xbuf[10]; // 显示缓存
X = (acc_buf[1]<<8)|acc_buf[0]; // 合并为一个整型
if(X&0x2000) // 判断正负
{
// X=-X;
Xbuf[2]='-'; // 显示时添加负号
X=(~X)+1; // 补码转成原码
}
else
{
Xbuf[2]=' '; // 如果是正数则显示空格
}
X=(float)X*0.0039*10000; // 换算成具体的加速度数 * 单位为 g
Xbuf[0]='X'; // 显示时标识是 X 轴 *Y 轴或 Z 轴
Xbuf[1]=':';
Xbuf[3]=0x30+X/10000; // 通过串口向电脑显示十进制数据
Xbuf[4]='.';
Xbuf[5]=0x30+X%10000/1000;
Xbuf[6]=0x30+X%10000%1000/100;
Xbuf[7]=0x30+X%10000%1000%100/10;
剩余10页未读,继续阅读
资源评论
- zhangyangbrave2012-12-04描述详细,值得推荐
- 鸿雁凌霄2012-12-04很不错,资料很好,尤其代码
biuepw
- 粉丝: 6
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功