3419|8

1297

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

【linknode评测】06 并不成功的LinkNode的三轴加速度计 [复制链接]

概要:按照官方代码,读不到正常数据。初步估计原因可能有以下几个:1、SPI驱动有问题。可是呢IO口没有引出,没法测试。2、主芯片和LIS3DH之间的连接有问题,导致不能正常通信。看了看引脚太小,没法测试。具体过程描述如下。


LinkNode上有一个LIS3DH,可是官方手册上并没有给出参考代码。就连SPI的参考代码都没有。不过linksprite的wiki上有,可以在以下网址找到(http://linksprite.com/wiki/index ... IS3DH_accelerometer)。
本来想利用mbed的库从头建个工程看看,但是搜索了以下,发现LIS3DH的库和项目都只有2个,而且都是i2c接口的。虽然芯片CS拉高就是i2c模式,但是看原理图,并没有看到有接i2c上拉电阻,所以还是乖乖用SPI,参考官方代码来写吧。有时间再转换一下i2c驱动到SPI吧。

官方代码比较简单,就是写了一个SPI的初始化,读写寄存区的子函数,然后调用。结果烧写以后满屏的“device err”。这又是什么鬼??!!

看了下代码,每次读数都会查看下芯片的ID,如果是0x33,表示有芯片,如果不是,则显示上图的出错信息。
打印了一下收到的who am i,发现都是255。这说明MI上全是高电平啊。

绕过who am I检测,强制读取三轴的值就是这么个死相

改造下显示代码,其实是以下这么回事,也就是说,读到的全是1。和读who am I的结果一致。真是醉了

可怜的SPI引脚也没有引出,无法测试。有没有人可以跑动这个例程的呢?

此帖出自无线连接论坛

最新回复

汇总帖在此: 【linknode评测】—— by johnrey https://bbs.eeworld.com.cn/forum ... 0308&fromuid=536508  详情 回复 发表于 2016-5-30 13:50
点赞 关注
 

回复
举报

1万

帖子

2853

TA的资源

管理员

来自 9楼
 
汇总帖在此:

【linknode评测】—— by johnrey
https://bbs.eeworld.com.cn/forum ... 0308&fromuid=536508
此帖出自无线连接论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

沙发
 
就是说,其实SPI根本就没通,id都读不对了你去强读就没意义了,要冷静。我看你挺淡定的啊,怎么连强读数据这种事情都干出来了
此帖出自无线连接论坛

点评

验证下其他寄存器读取是不是也不正常呗  详情 回复 发表于 2016-5-24 15:03
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

板凳
 
你可以进这个linksprite的网站看看有没有解决方案:http://cnlearn.linksprite.com/
此帖出自无线连接论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

4
 
好着啊,是你考虑的太复杂了吧


代码如下:
  1. uint16_t x_a,y_a,z_a;
  2. bool flag = 0;
  3. SPI spi_master(P0_6,P0_5,P0_7); //mosi miso sclk
  4. DigitalOut cs(P0_4);
  5. Serial pc(P0_23,P0_25);
  6. uint8_t LIS3DH_SPI_RD(uint8_t addr)
  7. {
  8.      uint8_t  temp;
  9.      cs = 0;
  10.      wait_us(10);
  11.      spi_master.write(addr);      
  12.      temp=spi_master.write(0xff);
  13.      wait_us(10);
  14.      cs = 1;
  15.      return temp;
  16. }
  17. void LIS3DH_SPI_WR(uint8_t addr,uint8_t wrdata)
  18. {  
  19.      cs = 0;
  20.      wait_us(10);
  21.      spi_master.write(addr);
  22.      spi_master.write(wrdata);
  23.      wait_us(10);
  24.      cs = 1;
  25. }
  26. void SPI_LIS3DH_Init()
  27. {
  28.     spi_master.format(8,3);
  29.     spi_master.frequency(100000);
  30.     wait_ms(5);
  31.     LIS3DH_SPI_WR(0x24,0x80);
  32.     wait_ms(5);
  33.     LIS3DH_SPI_WR(0x20,0x17);
  34.     LIS3DH_SPI_WR(0x23,0x80);
  35. }
  36. void get_val(void)
  37. {
  38.      uint8_t Dx_L=1,Dy_L=1,Dz_L=1;
  39.      uint8_t Dx_H=1,Dy_H=1,Dz_H=1;
  40.      if(LIS3DH_SPI_RD(0x0f|0x80)==0x33)
  41.      {
  42.           printf("check device ok!\r\n");
  43.           flag=1;
  44.           Dx_H=LIS3DH_SPI_RD(0x29|0x80);   
  45.           Dx_L=LIS3DH_SPI_RD(0x28|0x80);
  46.           Dy_H=LIS3DH_SPI_RD(0x2b|0x80);
  47.           Dy_L=LIS3DH_SPI_RD(0x2A|0x80);
  48.           Dz_H=LIS3DH_SPI_RD(0x2d|0x80);
  49.           Dz_L=LIS3DH_SPI_RD(0x2C|0x80);  
  50.      }
  51.      else printf("check device err!\r\n");
  52.      x_a=Dx_H<<8|Dx_L/16;
  53.      y_a=Dy_H<<8|Dy_L/16;
  54.      z_a=Dz_H<<8|Dz_L/16;
  55. }
  56. int main(void)
  57. {
  58.    SPI_LIS3DH_Init();
  59.    while(1)
  60.    {  
  61.       get_val();
  62.       if(flag)
  63.       {
  64.           printf("Dx=:%d\r\n",x_a);
  65.           printf("Dy=:%d\r\n",y_a);
  66.           printf("Dz=:%d\r\n",z_a);
  67.           flag=0;
  68.           wait(1);
  69.       }
  70.    }
  71. }
复制代码



此帖出自无线连接论坛

点评

enna,那基本判定硬件问题吧。代码都是一字未改。不知道是不是焊接啥的问题  详情 回复 发表于 2016-5-24 15:07
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

5
 
辛昕 发表于 2016-5-24 11:18
就是说,其实SPI根本就没通,id都读不对了你去强读就没意义了,要冷静。我看你挺淡定的啊,怎么连强读数据 ...

验证下其他寄存器读取是不是也不正常呗
此帖出自无线连接论坛
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

6
 
数码小叶 发表于 2016-5-24 14:48
好着啊,是你考虑的太复杂了吧


代码如下:

enna,那基本判定硬件问题吧。代码都是一字未改。不知道是不是焊接啥的问题
此帖出自无线连接论坛

点评

要是硬件那就没辙了,只能放弃了,不行你可以免费给换个器件,就是焊接手工基本不可能的样子  详情 回复 发表于 2016-5-24 15:14
 
 
 

回复

2549

帖子

0

TA的资源

五彩晶圆(初级)

7
 
johnrey 发表于 2016-5-24 15:07
enna,那基本判定硬件问题吧。代码都是一字未改。不知道是不是焊接啥的问题

要是硬件那就没辙了,只能放弃了,不行你可以免费给换个器件,就是焊接手工基本不可能的样子
此帖出自无线连接论坛

点评

这个好像太难了。还好bmp180还能用  详情 回复 发表于 2016-5-24 16:35
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

8
 
数码小叶 发表于 2016-5-24 15:14
要是硬件那就没辙了,只能放弃了,不行你可以免费给换个器件,就是焊接手工基本不可能的样子

这个好像太难了。还好bmp180还能用
此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表