IRNAS / irnas-t5838-driver

Zephyr compatible driver for TDK's MEMS microphone T5838

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

T5838: initial general features and planned work

MarkoSagadin opened this issue · comments

Context

Multiple projects need a full-featured, Zephyr supported, T5838 driver.

This epic issue will list and track all relevant work connected to it. It is expected that the described work in it is broken into smaller issues, to make reviewing process easier.

Required steps / Implementation details

  • Prepare repository for driver development.
  • Implement T5838 driver by using Zephyr's dmic API
  • Basic sampling sample - similar to this one: https://github.com/zephyrproject-rtos/zephyr/tree/main/samples/drivers/audio/dmic
  • On wake trigger sampling sample - Microphone is in low power, when increase in loudness is detected, the wake pin goes high, driver handles that, it samples for X seconds and then returns to low power.
  • Wake, sample, got to sleep, repeat sample - Demonstrate that microphone can go to low power several times.

Extra notes

Most important thing: Understand what microphone modes are and which ones are accessible to us when using Nordic chips. Use this devzone issue and chip's documentation as a starting point. Can we access all modes? If not, what do we lose with this?


Desirable configurable parameters:

  • wakeup threshold
  • band pass filter
  • sampling interval
  • mono/stereo mode (if this is too much effort then support only mono for now, no project needs stereo)

It is expected that Zephyr dmic API will not cover everything that this microphone does. Read this to learn how to expand the interface.

Definition of Done

All above work is implemented, documented, tested and reviewed.

@vid553 @KajbaM

Check above and see if I forgot anything.

On wake trigger sampling sample - Microphone is in low power, when increase in loudness is detected, the wake pin goes high, driver handles that and starts sampling - it samples for X seconds and then returns to low power