社区导航

 

搜索
查看: 653|回复: 5

[原创] 实验LIS25BA骨振动传感器采集音频

[复制链接]

1189

TA的帖子

1

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

发表于 2019-8-23 18:25 | 显示全部楼层 |阅读模式

  收到的ST这个骨振动传感器带了一个FPC适配板,免了制作PCB封装的问题,方便接线测试。
acc1.jpg   不过,因为电压支持只有 1.8V, 于是蝴蝶粉手头的 Nucleo 板子都不能直接用。要不得自己画一块带 3.3V <--> 1.8V 电平转换的板子,要不就想办法把MCU电压用成1.8V 以直接连接。

  因为传感器的信号输出是 TDM 接口,STM32 的具备 SAI (Serial Audio Interface) 的型号都可以直接支持(真的不少了,SAI也算主流配置该有的)。我实验音频采集用的是 STM32L476, 借用了一块自己设计的带USB的评估板来接收TDM信号,因为没有引出空余的I/O口,只好飞线连接。

acc2.jpg

  传感器一共需要 MCLK, BCLK, WCLK 三个时钟信号,其中 MCLK 是主时钟,内部ADC转换必须用这个时钟,它决定了采样频率。在 MCLK=12.288MHz 时,对应输出 24kHz 或 16kHz, 8kHz 采样频率。假如 MCLK 变了,采样频率也会随之变化。BCLK, WCLK 是 TDM 接口传输数据需要的,WCLK 输出采样频率,BCLK 决定码流的速率。注意,WCLK 和 BCLK 必须与 MCLK 同步,必须是 MCLK 的整数分频,且 BCLK 也必须是 WCLK 整数倍频。按照手册表格中来,WCLK 就只能取 8kHz/16kHz/24kHz 三种了,对应 MCLK/WCLK 比 1536x, 768x 和 512x

tdmfig.PNG

  STM32 SAI 的引脚在 TDM 模式与传感器连接关系就是:

       SAI_FS  ----  WCLK

       SAI_SCK ---- BCLK

       SAI_SD  ----  SDOUT

  至于 MCLK, 12.288MHz 时钟的产生有多种办法,只要保证与 SAI 接口的时钟同源就可以了,比如用 MCU 的 MCO 输出,用 SAI, SPI, Timer 等等硬件输出。

  TDM是对数字音频常用的I2S接口的扩展,因为 I2S 只能传输 L/R 两个通道数据,而 TDM 支持多通道。这个传感器需要 XYZ 3个通道。按照手册中典型的 8kHz/1.024MHz 这样的 WCLK/BCLK 比例,一个采样周期可以传输 128 bits 数据,等于 8 个 slot (每个数据占16 bits)。

  SDOUT 与 WCLK 波形对应是这样的:(我的示波器只有两通道,不能同时看BCLK)

20190721004852.png   这是选择在前三个slot发送数据,SDOUT相对WCLK没有延迟。SAI 输出 TDM WCLK 高电平为16个BCLK周期(一个slot长度)。

 

  LIS25BA上电的时候是 power-down 的,TDM接口也关闭了,所以必须用 I2C 配置一下才可以用。

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

来源:EEWorld ST传感器与低功耗无线技术论坛板块,转载请附上链接


回复

使用道具 举报

1189

TA的帖子

1

TA的资源

纯净的硅(高级)

Rank: 6Rank: 6

 楼主| 发表于 2019-8-23 19:00 | 显示全部楼层

SAI 的 TDM 配置方法:

MCU引脚分配,我用了两个SAI模块,其中一个仅仅用来产生 MCLK (原因后面讲)

ioconfig.png

  SAI1 Block A 工作在 TDM (master receive) 模式,并启用 DMA 传输数据。我的 SAI 时钟是 24.576MHz, FS频率(即WCLK频率)是 24kHz,那么要使用 SAI CR1寄存器 MCKDIV 位配置分频。

clkgen.PNG   这里并没有体现出来 FS 的频率,但是手册中有一句:In the SAI, the single ratio MCLK/FS = 256 is considered. 于是,图上的 MCLK_x 该为 256x24kHz = 6.144MHz, 需要 MCKDIV 进行4分频。也正是因为 SAI 的 MCLK/FS 比例与传感器需要的不一致,不能直接用 SAI 输出的 MCLK 给传感器,所以我才单独用了 SAI2 Block B 来提供 MCLK 输出。

sai.PNG   我只选择了 slot 0, slot 1两个通道的数据接收,对应到 USB audio 数据的左右声道,方便于录音。因为测试代码是在USB声卡的代码上改来的,DMA采集也保留了32-bit传输,实际有效数据只有低16位。

  这个传感器是三轴加速度计,对重力方向也是敏感的,从测试录音的直流偏移可以体现出来。

rec.PNG

  录音的效果? 因为缺乏载具,拖着一堆飞线也很不方便,我不保证它可靠采集了“骨振动”。如果手持板子,让传感器靠在脸上,录下来的声音很微弱,浑浊。后来,我干脆用手指把传感器按在皮肤上,录了下面这一段,粗略能听出来是在说话了。附件中 mp3 是用软件处理做过加了增益的。

 

lis25ba_test.wav.mp3

193.69 KB, 阅读权限: 5, 下载次数: 7



回复

使用道具 举报

8587

TA的帖子

14

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2019-8-23 21:20 | 显示全部楼层

没有合适的配套板子,这个传感器用起来真的非常麻烦



回复

使用道具 举报

285

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-8-29 13:46 | 显示全部楼层

见识了,感谢分享,这种资料还是第一次接触



回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-8-31 14:05 | 显示全部楼层

学习了



回复

使用道具 举报

1

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-9-3 17:05 | 显示全部楼层

楼主是用的3.3V转1.8V,还是MCU降压到1.8V直接连接呢?



回复

使用道具 举报

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

关闭

站长推荐上一条 /6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-9-21 14:39 , Processed in 0.205080 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表