匿名
未登录
登录
百问网嵌入式Linux wiki
搜索
查看“DFSDM Linux driver”的源代码
来自百问网嵌入式Linux wiki
名字空间
页面
讨论
更多
更多
页面选项
Read
查看源代码
历史
←
DFSDM Linux driver
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== Article purpose == 本文的目的是介绍用于[[DFSDM internal peripheral]]的Linux<sup>®</sup>驱动程序: * 驱动程序支持哪些DFSDM功能 * 如何配置,使用和调试它 * 驱动程序的结构是什么,在哪里可以找到源代码。 == Short Description == DFSDM Linux<sup>®</sup>驱动程序(内核空间)基于 [[IIO overview|IIO]] 和 [[ALSA overview|ALSA]]框架。 它提供多种模式: # '''IIO直接模式''': 在一个频道上进行单次捕获 # '''IIO软件缓冲区''': 捕获一个或多个频道 # '''IIO触发缓冲模式''':使用触发器在一个或多个通道上捕获<br/>它使用IIO中可用的硬件触发器。请参见[[TIM Linux driver]] and [[LPTIM Linux driver]]. 它提供了扩展的API<ref name="stm32-dfsdm-adc-h">{{CodeSource | Linux kernel | include/linux/iio/adc/stm32-dfsdm-adc.h}}, DFSDM IIO custom API</ref> for audio usage which allows ''',它允许通过SPI接口捕获'''PDM麦克风'''。 == Configuration == === Kernel configuration === 通过使用[[Menuconfig or how to configure kernel|menuconfig]] 工具,在内核配置中激活DFSDMLinux<sup>®</sup>驱动程序。 ==== IIO driver ==== 配置标志: CONFIG_STM32_DFSDM_ADC <pre> Device Drivers ---> <*> Industrial I/O support ---> Analog to digital converters ---> <*> STMicroelectronics STM32 dfsdm adc <*> STMicroelectronics STM32 adc # DFSDM ADC IIO driver </pre> 使用DFSDM ADC IIO驱动程序(仅限)时,用户还必须使能外部模拟前端的驱动程序(例如Sigma Delta调制器)。 例如,可以使用通用sigma delta调制器驱动程序(CONFIG_SD_ADC_MODULATOR): <pre> Device Drivers ---> <*> Industrial I/O support ---> Analog to digital converters ---> <*> Generic sigma delta modulator # sigma delta modulator driver </pre> ==== Audio driver ==== 配置标志: CONFIG_SND_SOC_STM32_DFSDM (注意:此配置取决于[[#IIO_driver|CONFIG_STM32_DFSDM_ADC]]) <pre> Device Drivers ---> <*> Sound card support ---> <*> Advanced Linux Sound Architecture ---> <*> ALSA for SoC audio support ---> STMicroelectronics STM32 SOC audio support ---> <*> SoC Audio support for STM32 DFSDM # DFSDM Audio driver for digital microphone capture </pre> === Device tree === 配置DFSDM Linux内核驱动程序时,请参考[[DFSDM device tree configuration]] 文章。 == How to use == === IIO driver === 在 "''''IIO直接模式'''"中,可以直接从'''sysfs'''中读取转换结果,请参见: [[How to use the IIO user space interface#How to do a simple ADC conversion using the sysfs interface|How to do a simple ADC conversion using the sysfs interface]]. 在“'''IIO触发缓冲区模式'''”中,必须先使用'''sysfs'''来执行配置。 然后,使用'''字符设备'''(/dev/io:deviceX)读取数据,参见 For information on the standard IIO consumer interface, please refer to [[IIO_overview#How_to_use_IIO_kernel_API|How to use IIO kernel API]] 给出了IIO使用者内核API的示例。 === Audio driver === 可以通过ALSA设备从用户域访问DFSDM Linux驱动程序。 有关如何列出和使用ALSA设备的信息,请参考[[ALSA_overview#How_to_use|ALSA overview]]。 ==How to trace and debug== === How to monitor === The DFSDM driver uses resources such as clocks and GPIOs. * Refer to [[Pinctrl_overview#How_to_monitor]] to check DFSDM GPIOs. * Refer to [[Clock_overview#How_to_monitor_with_debugfs]] to check DFSDM clocks. ==== How to monitor with debugfs ==== The DFSDM registers are accessed using REGMAP by ''DFSDM Linux<sup>®</sup> driver''. It comes with [[Debugfs|debugfs]] entries to dump registers: $ {{highlight|cd /sys/kernel/debug/regmap/4400d000.dfsdm/}} $ {{highlight|cat registers}} 000: 00000000 004: 00000000 008: 00000000 ==== Other ways to monitor ==== * Man can check the DFSDM '''interrupts''' and/or the DFSDM '''DMA''' interrupts: $ {{highlight|cat /proc/interrupts}} CPU0 CPU1 ... 99: 0 0 GIC-0 142 Level 4400d000.dfsdm:filter@0 100: 0 0 GIC-0 143 Level 4400d000.dfsdm:filter@1 101: 0 0 GIC-0 144 Level 4400d000.dfsdm:filter@2 ... === How to trace === ==== IIO driver ==== Refer to [[IIO_overview#How_to_trace_with_dynamic_debug|How to trace with dynamic debug]] for how to enable the debug logs in the driver and in the framework. {{Board$}} dmesg -n8 {{Board$}} echo "file drivers/iio/adc/stm32-dfsdm* +p" > /sys/kernel/debug/dynamic_debug/control To enable dynamic debug at boot time, append the following arguments on the kernel command line: loglevel=8 dyndbg="file drivers/iio/adc/stm32-dfsdm* +p" ==== Audio driver ==== Refer to [[ALSA_overview#How_to_trace]] for details on trace tools. === How to debug === ==== Audio driver ==== Refer to [[ALSA_overview#How_to_debug]] for details on debugging tools. == Source code location == It is composed of: * {{CodeSource | Linux kernel | drivers/iio/adc/stm32-dfsdm-core.c | stm32-dfsdm-core.c}}, core part of DFSDM Linux driver to handle common resources: registers, clock * {{CodeSource | Linux kernel | drivers/iio/adc/stm32-dfsdm-adc.c | stm32-dfsdm-adc.c}}, ADC part of DFSDM Linux driver to handle '''ADC''' operations * {{CodeSource | Linux kernel | sound/soc/stm/stm32_adfsdm.c | stm32_adfsdm.c}}, ASoC DAI part of DFSDM Linux driver to handle '''audio''' operations See also sigma delta modulator driver: * {{CodeSource | Linux kernel | drivers/iio/adc/sd_adc_modulator.c | sd_adc_modulator.c}}, sigma delta modulator Linux driver to handle analog front-end ==References== <references />
该页面使用的模板:
模板:Board$
(
查看源代码
)
模板:CodeSource
(
查看源代码
)
模板:Highlight
(
查看源代码
)
返回至
DFSDM Linux driver
。
导航
导航
WIKI首页
官方店铺
资料下载
交流社区
所有页面
所有产品
MPU-Linux开发板
MCU-单片机开发板
Linux开发系列视频
单片机开发系列视频
所有模块配件
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志