完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
做一个测试ADXL345采集数据的实验,ADXL345通过IO模拟SPI连接单片机,单片机通过串口连接PC并显示读出的加速度值,可是读出任何寄存器的的数据不变只是66 或者76,请求帮助,下边是程序:
#include #include #define SDO P0^2; ***it SDI=P0^3; ***it CS=P0^4; ***it SCLK=P0^5; #define uchar unsigned char #define uint unsigned int int temp=0; uint i; uchar strm; void SPI_Wrt(uint addr,uint dat); void SPI_SWrt(uint spib); int SPI_Read(uint addr); void delay(uint z); uint zh,zl,flag; void main() { SPI_Wrt(0x2D,0x28); //ADXL初始化 SPI_Wrt(0x31,0x0B); //数据通信格式;设置为自检功能禁用,4线制Spi接口,低电平中断输出,13位全分辨率,输出数据右对齐,16g量程 SPI_Wrt(0x1E,0x00); //X轴误差补偿; (15.6mg/LSB) SPI_Wrt(0x1F,0x00); //Y轴误差补偿; (15.6mg/LSB) SPI_Wrt(0x20,0x05); //Z轴误差补偿; (15.6mg/LSB) SPI_Wrt(0x21,0x00); //禁用敲击延迟 SPI_Wrt(0x22,0x00); SPI_Wrt(0x23,0x00); SPI_Wrt(0x24,0x01); //保存检测活动阀值; (62.5mg/LSB) SPI_Wrt(0x25,0x01); //保存检测静止阀值; (62.5mg/LSB) SPI_Wrt(0x26,0x2B); //检测静止时间阀值; (1s/LSB) SPI_Wrt(0x27,0x77); //ACT_INACT_CTL; SPI_Wrt(0x2C,0x08); //设置采样率为25Hz //SPI_Wrt(0x2D,0x28); //设置为正常工作模式 SPI_Wrt(0x2E,0x00); //中断功能设定,不使用中断 SPI_Wrt(0x2f,0x00); SPI_Wrt(0x38,0x9f); TMOD=0x20; //串口初始化 TH1=0xfA; TL1=0xfA; TR1=1; REN=1; SM0=0; SM1=1; EA=1; //ES=0; flag=0; delay(100); while(1) { zl=SPI_Read(0x35); delay(100); SBUF=zl; delay(100); } } void SPI_Wrt(uint addr,uint dat) //ADXL写数据//地址格式:0xFF 数据格式:0xFF { CS=1; SCLK=1; delay(50); CS=0; SPI_SWrt(addr); delay(50); SPI_SWrt(dat); delay(50); CS=1; } int SPI_Read(uint addr) //ADXL读数据//地址格式:0xFF 数据格式:0xFF { CS=1; SCLK=1; delay(10); CS=0; addr|=0x80; SPI_SWrt(addr); delay(100); strm=0x00; for(i=0;i<8;i++) { SCLK=0; strm=strm+SDO; strm=strm<<1; SCLK=1; } delay(10); CS=1; return strm; } void SPI_SWrt(uint spib) { for(i=0;i<8;i++) { SCLK=0; if((spib&0x80)==0x80)SDI=1; else SDI=0; SCLK=1; spib=(spib<<1); } } void delay(uint z)//延迟函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); |
|
相关推荐
1个回答
|
|
ADXL345静止,还是上下左右来回晃,数据也不变?
|
|
|
|
只有小组成员才能发言,加入小组>>
982 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1379 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1935 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4266 浏览 2 评论
9055 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1506浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1690浏览 2评论
984浏览 2评论
1665浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1381浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 22:17 , Processed in 0.713821 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号