11511|41

9794

帖子

24

TA的资源

版主

楼主
 

STM32驱动LIS25BA [复制链接]

 
 
本帖最后由 littleshrimp 于 2019-11-20 14:32 编辑

先来一段使用LIS25BA录制的小朋友说话声

  1.mp3 (34.76 KB, 下载次数: 67)

LIS25BAST推出的一款低噪声高带宽加速度传感器,最大输出速率可达24KH,可以用来采集音频信号。

官方有用它和MEMS麦克风结合降噪的演示,但是没有提供设计文件和固件源码,这些都要自己去摸索。

这款传感器使用I2C+TDM接口,I2C用来配置寄存器TDM用来读取加速度数据,和一些音频编解码器有些类似。

前段时间论坛活动送了一些LIS25BA的评估板,有一些网友在测试中也遇到了一些问题,一方面是因为使用TDM接口,不是搞音频的很少能接触到,而且很多单片机不一定都支持这种接口,另一个最主要的原因还是因为它使用1.8V电平,需要配一个电平转换才能正常使用。

我没接触过那些高端DSP,手里支持TDM接口的板子不多,STM32的板子的SAI接口可以配置成TDM模式,不考虑电平兼容问题应该算是最适合的,也是唯一的选择。

将我手里的IKS01A3做了改动,凑齐了SCLSDAMCLKWSSCLKSD这六条数据线,电平的问题解决剩下就是I2C配置和TDM读取。

配置方面LIS25BA比较简单,一共7个寄存器,实际只需要配置2个即可

弄好I2C后一定要试着读取一下WHO_AM_I寄存器判断I2C总线是否能够正常工作,还有器件地址是否正确。

ST提供的评估板的I2C_A0引脚悬空并预留选择焊盘,需要自己将它焊到VDD或者GND,因为是柔性PCB焊盘又很小我一直没敢动它,试着用I2C读了一下0x19这个设备地址,发现可以正常读取到WHO_AM_I,所以这个焊盘就先不管它了。

寄存器配置方面一个是CTRL_REG (26h)的第5位需要设置为0,使器件工作

然后是TDM_CTRL_REG (2Eh)的第7位需要配置为0mapping选择0slot012对应X,Y,Z轴数据,这个可以根据实际情况设置,TDM_CTRL_REG (2Eh)的其它位也需要根据实际情况来配置,这些配置应该和STM32SAI配置相对应,数据手册的4.5 TDM configurations中有详细介绍。

 

解决I2C的配置问题后接下来处理TDM接口

使用STM32CubeMX创建一个工程,我使用的开发板是STM32L4R5(只要支持SAI接口的STM32单片机应该都能用),在SAI模式选择Master,虽然里边还有一个Master with Master Clock Out的选项可以直接通过一个引脚输出MCLK时钟给LIS25BA,但是它的配置不能满足LIS25BA的要求,需要单独生成。

其它配置如下:

Protocol选择Free

Audio Mode 选择Master Receive

Frame Length选择128bits,每个slot=16bit一共8slot

Data Size选择16bits,Slot Size选择和DataSize相同,Slot Sizes可以大于Data Size但不能小于Data SizeSlot Sizes大于Data Size时,有一部分数据位相当于是丢弃的。

FrameSynchro..主要用来设置WS数据线的规则,为了测试方便Slot Active只使能 Slot2,对应LIS25BAZ

剩下需要设置对应的频率和读取数据时使用的时钟沿等等

 

DMA选项卡中使能DMAMODE选择Circular循环写入,DataWidth选择Half Word(16bit)

 

 

MCLK使用PWM生成,采样率设置成16KHz时实际的采样率为15.625KHz这个和主频有关,15.625KHz对应的BCLK频率正好是2MHz(15.625KHz * 128bit)

根据LIS25BA手册的要求采样率在16KHzMCLK的频率是WS频率的768倍,15.625对应的MCLK频率为12MHz,所以使用定时器生成12MHz 50%占空比的PWM即可。

我使用120MHz的主频,定时器的Counter Period设置为10-1时正好为12MH

 

STM32CubeMX配置好以后行成工程文件

在生成main.c中添加I2C配置代码

 

然后是使能PWM输出,延时一小会后启用SAIDMA读取功能

 

实现DMA的回调函数,定义一个标志dma_flagDMA读取到一半时配置为1

DMA读取完时配置为2

然后在主函数中判断DMA回调的类形,当读取到一半时通过串口发送DMA数据的前半部分,读取完时发送DMA数据的后半部分。

 

运行代码就可以将LIS25BAZ轴数据通过串口发送到电脑

 

其实最简单的方法是通过USB实现一个Audio Device直接作为电脑的声卡使用,缺点是最多只能支持2个通道,如果想测试X,Y,Z这三个轴还是自己写一个上位机软件比较方便。

 

单片机的工作完成后接下来是电脑端的配置

设计一个简单的界面

一个combobox一个按钮

点击按钮后判断是否选择过存储录音文件的路径,如果没有打开选择文件对话框

 

选择好路径后会创建一个以当前日期为文件名的文件,然后将按钮名设置为“停止”,循环读取串口数据将并将数据写入到对应的文件,当再次点击按钮时停止读取串口,将当前的数据长度和头文件写入文件,生成一个完整的音频TXT文件。

为什么是TXT文件不应该是WAV或者mp3文件吗?因为我对这些音频文件不熟悉!!

TXT文件怎么播放? Adobe Audition可以直接读取。

 

上位机写好后点录音,就会在指定的目录下录制相应的音频文件,然后用audition读取即可

为了让声音效果更好些,我把LIS25BA粘在一段胶带的中心,用手接住两端,对着胶带说话录音的效果还不错,在离胶带1米处说话声也隐约能录到。

 

下边是audition里显示声音波形

 

对应的音频文件:

2.mp3 (139.24 KB, 下载次数: 28)

LIS25BA的单片机源码和上位机源码全提供,回复可见看看玩这个的传感器的人多不多。另外需要注意,录音时因为单片机一直在发送数据,以字节方式,上位机读取到的数据可能会不对齐,只要多点几次录音和停止就可以。具体可以看串口下边的加速度数值来判断数据是否已经对齐。

 


游客,如果您要查看本帖隐藏内容请回复


此内容由EEWORLD论坛网友littleshrimp原创,如需转载或用于商业用途需征得作者同意并注明出处

最新回复

请问mclk一定要设置吗?我看数据手册,似乎是可以不用设置?  详情 回复 发表于 2024-9-27 23:25
点赞(1) 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复
举报

31

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

请教一个问题,比如ST的三轴加速度传感器的ODR设置为952HZ,这是不是表示三个轴每秒能同时刷新952个数据,而不是每秒三个轴加起来共同刷新952个数据。

点评

对,LIS25BA的ODR对应的是WS的频率,每一个WS周期可以有8个slot,每个slot16位,相当于每个ws周期都会更新3个轴的数据  详情 回复 发表于 2019-11-22 11:02
 
 
 

回复

9794

帖子

24

TA的资源

版主

板凳
 
duguyining 发表于 2019-11-22 10:52 请教一个问题,比如ST的三轴加速度传感器的ODR设置为952HZ,这是不是表示三个轴每秒能同时刷新952个数据, ...

对,LIS25BA的ODR对应的是WS的频率,每一个WS周期可以有8个slot,每个slot16位,相当于每个ws周期都会更新3个轴的数据

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

4
 

可是我实际测试的时候,发现每秒钟只能输出三百多个三轴加速度数据。

 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

5
 

不对,只有一百多个数据。

[2019-11-22 11:26:01.431]# RECV ASCII>
I2C communication successd!!!
ax[0] = 0.000000, ay[0] = 0.000000, az[0] = 0.000000
ax[1] = 9.647861, ay[1] = -0.710668, az[1] = 0.918844
ax[2] = 9.734002, ay[2] = -0.660419, az[2] = 0.782453
ax[3] = 15.060425, ay[3] = -3.129812, az[3] = 20.315063
ax[4] = 9.662217, ay[4] = -1.292124, az[4] = 0.803988
ax[5] = 7.968099, ay[5] = -1.507478, az[5] = 0.725025
ax[6] = 9.626325, ay[6] = -1.622334, az[6] = 0.653241
ax[7] = 9.705288, ay[7] = -1.356730, az[7] = 0.660419
ax[8] = 9.820145, ay[8] = -1.414158, az[8
[2019-11-22 11:26:01.480]# RECV ASCII>
] = 0.703490
ax[9] = 9.676575, ay[9] = -1.012164, az[9] = 0.868595
ax[10] = 9.812965, ay[10] = -0.918844, az[10] = 0.638884
ax[11] = 9.576076, ay[11] = -0.882951, az[11] = 0.868595
ax[12] = 9.748359, ay[12] = -1.019342, az[12] = 0.746561
ax[13] = 9.626325, ay[13] = -1.033699, az[13] = 0.969093
ax[14] = 9.475577, ay[14] = -1.033699, az[14] = 1.198804
ax[15] = 9.705288, ay[15] = -1.191626, az[15] = 0.832702
ax[16] = 9.525826, ay[16] = -1.134198, az[16] = 0.882951
ax[17] = 9.626325, ay[17] = -0.976272
[2019-11-22 11:26:01.529]# RECV ASCII>
, az[17] = 0.890130
ax[18] = 9.690931, ay[18] = -1.048056, az[18] = 0.803988
ax[19] = 9.568897, ay[19] = -1.026521, az[19] = 0.969093
ax[20] = 9.590433, ay[20] = -0.897308, az[20] = 0.969093
ax[21] = 9.719646, ay[21] = -0.818345, az[21] = 0.839881
ax[22] = 9.734002, ay[22] = -0.990629, az[22] = 0.746561
ax[23] = 9.683753, ay[23] = -0.940379, az[23] = 0.725025
ax[24] = 9.798608, ay[24] = -1.263410, az[24] = 0.739382
ax[25] = 9.597611, ay[25] = -1.478764, az[25] = 0.782453
ax[26] = 9.597611, ay[26] =
[2019-11-22 11:26:01.578]# RECV ASCII>
 -1.536192, az[26] = 0.725025
ax[27] = 9.590433, ay[27] = -1.450050, az[27] = 0.725025
ax[28] = 9.633504, ay[28] = -1.177269, az[28] = 0.725025
ax[29] = 9.712466, ay[29] = -1.119841, az[29] = 0.832702
ax[30] = 9.676575, ay[30] = -0.976272, az[30] = 0.768096
ax[31] = 9.690931, ay[31] = -0.933201, az[31] = 0.832702
ax[32] = 9.619146, ay[32] = -1.026521, az[32] = 0.832702
ax[33] = 9.626325, ay[33] = -1.076770, az[33] = 0.811167
ax[34] = 9.568897, ay[34] = -1.091127, az[34] = 0.969093
ax[35] = 9.482756
[2019-11-22 11:26:01.628]# RECV ASCII>
, ay[35] = -1.048056, az[35] = 0.882951
ax[36] = 9.604790, ay[36] = -1.091127, az[36] = 0.890130
ax[37] = 9.576076, ay[37] = -1.055235, az[37] = 0.796810
ax[38] = 9.604790, ay[38] = -1.048056, az[38] = 0.803988
ax[39] = 9.777073, ay[39] = -1.105484, az[39] = 0.732204
ax[40] = 9.726824, ay[40] = -1.119841, az[40] = 0.710668
ax[41] = 9.741180, ay[41] = -1.234696, az[41] = 0.725025
ax[42] = 9.640682, ay[42] = -1.292124, az[42] = 0.674776
ax[43] = 9.669396, ay[43] = -1.349552, az[43] = 0.782453
ax[44] 
[2019-11-22 11:26:01.677]# RECV ASCII>
= 9.633504, ay[44] = -1.227518, az[44] = 0.667597
ax[45] = 9.726824, ay[45] = -1.234696, az[45] = 0.624527
ax[46] = 9.590433, ay[46] = -1.141376, az[46] = 0.660419
ax[47] = 9.726824, ay[47] = -1.141376, az[47] = 0.646062
ax[48] = 9.626325, ay[48] = -1.040878, az[48] = 0.753739
ax[49] = 9.611968, ay[49] = -1.162912, az[49] = 0.725025
ax[50] = 9.705288, ay[50] = -1.234696, az[50] = 0.667597
ax[51] = 9.554541, ay[51] = -1.141376, az[51] = 0.825524
ax[52] = 9.662217, ay[52] = -1.184447, az[52] = 0.71066
[2019-11-22 11:26:01.726]# RECV ASCII>
8
ax[53] = 9.669396, ay[53] = -1.263410, az[53] = 0.631705
ax[54] = 9.640682, ay[54] = -1.177269, az[54] = 0.674776
ax[55] = 9.791430, ay[55] = -1.263410, az[55] = 0.617348
ax[56] = 9.676575, ay[56] = -1.213161, az[56] = 0.631705
ax[57] = 9.748359, ay[57] = -1.227518, az[57] = 0.660419
ax[58] = 9.755538, ay[58] = -1.363909, az[58] = 0.531207
ax[59] = 9.712466, ay[59] = -1.399801, az[59] = 0.710668
ax[60] = 9.626325, ay[60] = -1.320838, az[60] = 0.681954
ax[61] = 9.640682, ay[61] = -1.356730, az[61]
[2019-11-22 11:26:01.775]# RECV ASCII>
 = 0.545564
ax[62] = 9.705288, ay[62] = -1.249053, az[62] = 0.710668
ax[63] = 9.698110, ay[63] = -1.220340, az[63] = 0.746561
ax[64] = 9.669396, ay[64] = -1.004985, az[64] = 0.638884
ax[65] = 9.734002, ay[65] = -1.134198, az[65] = 0.595813
ax[66] = 9.726824, ay[66] = -1.205983, az[66] = 0.689133
ax[67] = 9.698110, ay[67] = -1.227518, az[67] = 0.624527
ax[68] = 9.669396, ay[68] = -1.256232, az[68] = 0.782453
ax[69] = 9.583255, ay[69] = -1.249053, az[69] = 0.753739
ax[70] = 9.611968, ay[70] = -1.1916
[2019-11-22 11:26:01.824]# RECV ASCII>
26, az[70] = 0.775274
ax[71] = 9.676575, ay[71] = -1.119841, az[71] = 0.674776
ax[72] = 9.698110, ay[72] = -1.069592, az[72] = 0.746561
ax[73] = 9.655039, ay[73] = -1.069592, az[73] = 0.768096
ax[74] = 9.748359, ay[74] = -1.162912, az[74] = 0.760918
ax[75] = 9.583255, ay[75] = -1.184447, az[75] = 0.739382
ax[76] = 9.669396, ay[76] = -1.170090, az[76] = 0.746561
ax[77] = 9.705288, ay[77] = -1.198804, az[77] = 0.696311
ax[78] = 9.640682, ay[78] = -1.256232, az[78] = 0.746561
ax[79] = 9.619146, ay[79]
[2019-11-22 11:26:01.874]# RECV ASCII>
 = -1.162912, az[79] = 0.703490
ax[80] = 9.676575, ay[80] = -1.170090, az[80] = 0.760918
ax[81] = 9.748359, ay[81] = -1.184447, az[81] = 0.760918
ax[82] = 9.597611, ay[82] = -1.141376, az[82] = 0.753739
ax[83] = 9.640682, ay[83] = -1.241875, az[83] = 0.674776
ax[84] = 9.741180, ay[84] = -0.983450, az[84] = 0.710668
ax[85] = 9.726824, ay[85] = -1.148555, az[85] = 0.768096
ax[86] = 9.669396, ay[86] = -1.148555, az[86] = 0.638884
ax[87] = 9.511470, ay[87] = -1.191626, az[87] = 0.789631
ax[88] = 9.7052
[2019-11-22 11:26:01.923]# RECV ASCII>
88, ay[88] = -1.299303, az[88] = 0.732204
ax[89] = 9.698110, ay[89] = -1.263410, az[89] = 0.660419
ax[90] = 9.633504, ay[90] = -1.184447, az[90] = 0.746561
ax[91] = 9.590433, ay[91] = -1.112662, az[91] = 0.753739
ax[92] = 9.834500, ay[92] = -1.198804, az[92] = 0.509671
ax[93] = 9.626325, ay[93] = -0.961915, az[93] = 0.854238
ax[94] = 9.827322, ay[94] = -1.198804, az[94] = 0.430708
ax[95] = 9.489934, ay[95] = -1.220340, az[95] = 0.775274
ax[96] = 9.662217, ay[96] = -1.292124, az[96] = 0.696311
ax[97
[2019-11-22 11:26:01.968]# RECV ASCII>
] = 9.561719, ay[97] = -1.277767, az[97] = 0.638884
ax[98] = 9.604790, ay[98] = -1.227518, az[98] = 0.653241
ax[99] = 9.741180, ay[99] = -1.234696, az[99] = 0.602991
ax[100] = 9.619146, ay[100] = -1.205983, az[100] = 0.710668
ax[101] = 9.698110, ay[101] = -1.198804, az[101] = 0.624527
ax[102] = 9.698110, ay[102] = -1.213161, az[102] = 0.617348
ax[103] = 9.647861, ay[103] = -1.127019, az[103] = 0.674776
ax[104] = 9.712466, ay[104] = -1.205983, az[104] = 0.5
[2019-11-22 11:26:02.017]# RECV ASCII>
52742
ax[105] = 9.547362, ay[105] = -1.213161, az[105] = 0.811167
ax[106] = 9.655039, ay[106] = -1.313660, az[106] = 0.617348
ax[107] = 9.662217, ay[107] = -1.249053, az[107] = 0.732204
ax[108] = 9.741180, ay[108] = -1.177269, az[108] = 0.595813
ax[109] = 9.712466, ay[109] = -1.234696, az[109] = 0.610170
ax[110] = 9.633504, ay[110] = -1.213161, az[110] = 0.624527
ax[111] = 9.690931, ay[111] = -1.213161, az[111] = 0.638884
ax[112] = 9.669396, ay[112] = -1.320838, az[112] = 0.660419
ax[113] = 9.67657
[2019-11-22 11:26:02.066]# RECV ASCII>
5, ay[113] = -1.284946, az[113] = 0.538385
ax[114] = 9.690931, ay[114] = -1.292124, az[114] = 0.681954
ax[115] = 9.741180, ay[115] = -1.320838, az[115] = 0.545564
ax[116] = 9.676575, ay[116] = -1.342373, az[116] = 0.567099
ax[117] = 9.784252, ay[117] = -1.263410, az[117] = 0.581456
ax[118] = 9.640682, ay[118] = -1.270589, az[118] = 0.588634
ax[119] = 9.583255, ay[119] = -1.249053, az[119] = 0.653241
ax[120] = 9.626325, ay[120] = -1.141376, az[120] = 0.760918
ax[121] = 9.676575, ay[121] = -1.177269, 
[2019-11-22 11:26:02.115]# RECV ASCII>
az[121] = 0.646062
ax[122] = 9.705288, ay[122] = -1.098306, az[122] = 0.703490
ax[123] = 9.676575, ay[123] = -1.105484, az[123] = 0.775274
ax[124] = 9.690931, ay[124] = -1.155733, az[124] = 0.667597
ax[125] = 9.683753, ay[125] = -1.155733, az[125] = 0.732204
ax[126] = 9.640682, ay[126] = -1.256232, az[126] = 0.796810
ax[127] = 9.604790, ay[127] = -1.234696, az[127] = 0.760918
ax[128] = 9.647861, ay[128] = -1.198804, az[128] = 0.811167
ax[129] = 9.626325, ay[129] = -1.112662, az[129] = 0.854238
ax[1
[2019-11-22 11:26:02.164]# RECV ASCII>
30] = 9.647861, ay[130] = -1.112662, az[130] = 0.717847
ax[131] = 9.626325, ay[131] = -1.083949, az[131] = 0.825524
ax[132] = 9.640682, ay[132] = -1.098306, az[132] = 0.782453
ax[133] = 9.662217, ay[133] = -1.170090, az[133] = 0.796810
ax[134] = 9.683753, ay[134] = -1.119841, az[134] = 0.753739
ax[135] = 9.619146, ay[135] = -1.148555, az[135] = 0.782453
ax[136] = 9.698110, ay[136] = -1.112662, az[136] = 0.782453
ax[137] = 9.647861, ay[137] = -1.184447, az[137] = 0.739382
ax[138] = 9.640682, ay[138] 
[2019-11-22 11:26:02.213]# RECV ASCII>
= -1.191626, az[138] = 0.818345
ax[139] = 9.662217, ay[139] = -1.205983, az[139] = 0.796810
ax[140] = 9.647861, ay[140] = -1.062413, az[140] = 0.847059
ax[141] = 9.604790, ay[141] = -1.162912, az[141] = 0.861416
ax[142] = 9.626325, ay[142] = -1.076770, az[142] = 0.875773
ax[143] = 9.690931, ay[143] = -1.134198, az[143] = 0.897308
ax[144] = 9.662217, ay[144] = -1.148555, az[144] = 0.796810
ax[145] = 9.561719, ay[145] = -1.127019, az[145] = 0.732204
ax[146] = 9.655039, ay[146] = -1.148555, az[146] = 0
[2019-11-22 11:26:02.262]# RECV ASCII>
.825524
ax[147] = 9.633504, ay[147] = -1.170090, az[147] = 0.768096
ax[148] = 9.619146, ay[148] = -1.162912, az[148] = 0.768096
ax[149] = 9.777073, ay[149] = -1.091127, az[149] = 0.753739
ax[150] = 9.719646, ay[150] = -1.220340, az[150] = 0.689133
ax[151] = 9.633504, ay[151] = -1.249053, az[151] = 0.811167
ax[152] = 9.597611, ay[152] = -1.148555, az[152] = 0.789631
ax[153] = 9.662217, ay[153] = -1.083949, az[153] = 0.760918
ax[154] = 9.698110, ay[154] = -1.069592, az[154] = 0.753739
ax[155] = 9.633
[2019-11-22 11:26:02.311]# RECV ASCII>
504, ay[155] = -1.033699, az[155] = 0.746561
ax[156] = 9.647861, ay[156] = -1.134198, az[156] = 0.818345
ax[157] = 9.597611, ay[157] = -1.213161, az[157] = 0.861416
ax[158] = 9.690931, ay[158] = -1.205983, az[158] = 0.746561
ax[159] = 9.698110, ay[159] = -1.155733, az[159] = 0.710668
ax[160] = 9.683753, ay[160] = -1.170090, az[160] = 0.760918
ax[161] = 9.576076, ay[161] = -1.234696, az[161] = 0.847059
ax[162] = 9.439685, ay[162] = -1.119841, az[162] = 1.040878
ax[163] = 9.712466, ay[163] = -1.170090
[2019-11-22 11:26:02.360]# RECV ASCII>
, az[163] = 0.904487
ax[164] = 9.820145, ay[164] = -0.839881, az[164] = 0.739382
ax[165] = 9.913465, ay[165] = -1.249053, az[165] = 0.602991
ax[166] = 9.619146, ay[166] = -1.263410, az[166] = 0.818345
ax[167] = 9.812965, ay[167] = -1.213161, az[167] = 0.760918
ax[168] = 9.611968, ay[168] = -1.363909, az[168] = 0.811167
ax[169] = 9.360722, ay[169] = -1.069592, az[169] = 1.134198
ax[170] = 9.554541, ay[170] = -0.983450, az[170] = 0.868595
ax[171] = 9.604790, ay[171] = -0.696311, az[171] = 0.904487
ax
[2019-11-22 11:26:02.409]# RECV ASCII>
[172] = 9.726824, ay[172] = -0.983450, az[172] = 0.725025
ax[173] = 9.748359, ay[173] = -1.162912, az[173] = 0.653241
ax[174] = 9.382257, ay[174] = -1.162912, az[174] = 0.847059
ax[175] = 9.174082, ay[175] = -1.277767, az[175] = 0.725025
ax[176] = 9.963714, ay[176] = -1.263410, az[176] = 0.423530
ax[177] = 9.698110, ay[177] = -1.263410, az[177] = 0.732204
ax[178] = 9.655039, ay[178] = -1.256232, az[178] = 0.638884
ax[179] = 9.611968, ay[179] = -1.191626, az[179] = 0.624527
ax[180] = 9.669396, ay[180
[2019-11-22 11:26:02.458]# RECV ASCII>
] = -1.213161, az[180] = 0.545564
ax[181] = 9.970891, ay[181] = -1.263410, az[181] = 0.423530
ax[182] = 9.798608, ay[182] = -1.270589, az[182] = 0.301496
ax[183] = 9.791430, ay[183] = -1.342373, az[183] = 0.344566
ax[184] = 9.985249, ay[184] = -1.406980, az[184] = 0.107677
ax[185] = 9.734002, ay[185] = -1.579263, az[185] = 0.667597
ax[186] = 9.827322, ay[186] = -1.586441, az[186] = 0.344566
ax[187] = 9.439685, ay[187] = -1.529014, az[187] = 0.373280

点评

也是LIS25BA吗  详情 回复 发表于 2019-11-22 12:24
 
 
 

回复

9794

帖子

24

TA的资源

版主

6
 
duguyining 发表于 2019-11-22 11:27
不对,只有一百多个数据。

[2019-11-22 11:26:01.431]# RECV ASCII>
I2C communication successd!!!
...

也是LIS25BA吗
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

7
 

不是 是LSM9DS1

点评

你用的中断还是轮询?  详情 回复 发表于 2019-11-22 13:23
 
 
 

回复

9794

帖子

24

TA的资源

版主

8
 
duguyining 发表于 2019-11-22 13:02
不是 是LSM9DS1

你用的中断还是轮询?
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

9
 

轮询模式

点评

把代码拿出来看下 是先读状态寄存器 判断后再读加速度数据? I2C通信速率多少?  详情 回复 发表于 2019-11-22 14:03
 
 
 

回复

9794

帖子

24

TA的资源

版主

10
 
duguyining 发表于 2019-11-22 13:28
轮询模式

把代码拿出来看下
是先读状态寄存器 判断后再读加速度数据?
I2C通信速率多少?
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

11
 

这是I2C配置代码:

   

void MX_I2C1_Init(void)
{

  hi2c1.Instance = I2C1;
  hi2c1.Init.Timing = 0x00501E6C;
  hi2c1.Init.OwnAddress1 = 0;
  hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  hi2c1.Init.OwnAddress2 = 0;
  hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
  hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  if (HAL_I2C_Init(&hi2c1) != HAL_OK)
  {
    Error_Handler();
  }
  /** Configure Analogue filter 
  */
  if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
  {
    Error_Handler();
  }
  /** Configure Digital filter 
  */
  if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
  {
    Error_Handler();
  }

}

void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(i2cHandle->Instance==I2C1)
  {
  /* USER CODE BEGIN I2C1_MspInit 0 */

  /* USER CODE END I2C1_MspInit 0 */
  
    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**I2C1 GPIO Configuration    
    PB8     ------> I2C1_SCL
    PB9     ------> I2C1_SDA 
    */
    /* I2C1 clock enable */
    __HAL_RCC_I2C1_CLK_ENABLE();
    GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* USER CODE BEGIN I2C1_MspInit 1 */

  /* USER CODE END I2C1_MspInit 1 */
  }
}

这是读取数据的代码:

    lsm9ds1_dev_reset_set(&dev_ctx_mag, &dev_ctx_imu, PROPERTY_ENABLE);
    do
    {
        lsm9ds1_dev_reset_get(&dev_ctx_mag, &dev_ctx_imu, &rst);
    } while (rst);

    //    Enable Block Data Update
    lsm9ds1_block_data_update_set(&dev_ctx_mag, &dev_ctx_imu, PROPERTY_ENABLE);

    //    Set full scale
    lsm9ds1_xl_full_scale_set(&dev_ctx_imu, LSM9DS1_16g);

    //    Set Output Data Rate / Power mode
    lsm9ds1_imu_data_rate_set(&dev_ctx_imu, LSM9DS1_IMU_952Hz);

while (1)

{

            lsm9ds1_dev_status_get(&dev_ctx_mag, &dev_ctx_imu, &reg);

            if (reg.status_imu.xlda)
            {
                //Read device status register
                lsm9ds1_acceleration_raw_get(&dev_ctx_imu, data_raw_acceleration.u8bit);

                acceleration_g[0] = lsm9ds1_from_fs16g_to_g(data_raw_acceleration.i16bit[0]);
                acceleration_g[1] = lsm9ds1_from_fs16g_to_g(data_raw_acceleration.i16bit[1]);
                acceleration_g[2] = lsm9ds1_from_fs16g_to_g(data_raw_acceleration.i16bit[2]);

}

点评

检查一下你配置的I2C速率看能不能满足要求 参考下边代码中加速度的配置 https://github.com/STMicroelectronics/STMems_Standard_C_drivers/blob/master/lsm9ds1_STdC/example/read_data_simple.c 不行使用  详情 回复 发表于 2019-11-22 17:12
 
 
 

回复

9794

帖子

24

TA的资源

版主

12
 
duguyining 发表于 2019-11-22 14:14 这是I2C配置代码:     void MX_I2C1_Init(void) {   hi2c1.Instance = I2C1; & ...

检查一下你配置的I2C速率看能不能满足要求

参考下边代码中加速度的配置

https://github.com/STMicroelectronics/STMems_Standard_C_drivers/blob/master/lsm9ds1_STdC/example/read_data_simple.c

不行使用中断方式看看

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

13
 

请问一下 0.01 µA w/o RTC和 0.20 µA w/ RTC是什么意思

 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

14
 

功耗0.01 µA w/o RTC和 0.20 µA w/ RTC是什么意思

点评

w/o 是 without 缩写 w/ 是  with  缩写 一个是不用RTC的功耗,一个是用了RTC的功耗。 注意,RTC不包括32k晶振的振荡电路。  详情 回复 发表于 2019-12-11 10:32
在哪看到的?  详情 回复 发表于 2019-12-10 12:06
 
 
 

回复

9794

帖子

24

TA的资源

版主

15
 
duguyining 发表于 2019-12-10 11:32
功耗0.01 µA w/o RTC和 0.20 µA w/ RTC是什么意思

在哪看到的?
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

16
 

点评

单片机吗 在哪个文档看到的?  详情 回复 发表于 2019-12-10 13:35
 
 
 

回复

9794

帖子

24

TA的资源

版主

17
 

单片机吗 在哪个文档看到的?

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

18
 

C277951_STM32L431CBT6_2018-09-05.PDF (2.8 MB, 下载次数: 10)

芯片手册

点评

看到了,这个我也不是很确定,建议你去STM32版块发贴提问  详情 回复 发表于 2019-12-10 17:17
 
 
 

回复

9794

帖子

24

TA的资源

版主

19
 

看到了,这个我也不是很确定,建议你去STM32版块发贴提问

点评

有单片机源码和上位机源码吗  详情 回复 发表于 2024-1-22 15:05
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

1381

帖子

2

TA的资源

五彩晶圆(初级)

20
 
duguyining 发表于 2019-12-10 11:32 功耗0.01 µA w/o RTC和 0.20 µA w/ RTC是什么意思

w/o 是 without 缩写

w/ 是  with  缩写

一个是不用RTC的功耗,一个是用了RTC的功耗。 注意,RTC不包括32k晶振的振荡电路。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表