为什么我的 STM32L476 上的 DFSDM 寄存器位没有改变?

问题描述

我的 STM32L476RE 的 DFSDM(用于 Sigma-Delta 调制的数字滤波器)出现问题。事实上,尽管我已经启用了 DFSDM 的时钟,但当我设置位时,所有与我的过滤器相关的寄存器(在下面的代码中:DFSDM1_Filter1->...)永远不会改变,而与我的通道相关的寄存器DFSDM1_Channel1->... 确实改变得很好。由于设置时钟通常是此类问题的解决方案,我被卡住了,因为正如我所说,我的时钟已经为 DFSDM 启用了。任何人都可以帮忙吗?提前致谢!

// Enable DFSDM clock
RCC->CCIPR &= ~RCC_CCIPR_DFSDM1SEL;     // Choose PCLK2 as clock
RCC->APB2ENR |= RCC_APB2ENR_DFSDM1EN;   // Enable DFSDM clock

// Make sure DFSDM is disabled
DFSDM1_Channel0->CHCFGR1 &= ~DFSDM_CHCFGR1_DFSDMEN;

// Channel 1
DFSDM1_Channel1->CHCFGR1 &= ~DFSDM_CHCFGR1_CHINSEL; // Select own input (DATIN1)
DFSDM1_Channel1->CHCFGR1 &= ~DFSDM_CHCFGR1_DATMPX;  // Data is taken from DATIN1 as 1 bit values
DFSDM1_Channel1->CHCFGR1 |= (0x01 <<2U);            // Use internal clock for SPI format
DFSDM1_Channel1->CHCFGR1 |= (0x00 <<0U);            // Strobe data on rising edge
DFSDM1_Channel1->CHCFGR1 |= DFSDM_CHCFGR1_CHEN;     // Enable channel 1

// Filter 1 -> Channel 1,continuous regular conversion
DFSDM1_Filter1->FLTCR1 |= (0x01 <<24U);             // Regular channel 1
DFSDM1_Filter1->FLTCR1 |= DFSDM_FLTCR1_FAST;        // Fast mode enabled
DFSDM1_Filter1->FLTCR1 |= DFSDM_FLTCR1_RCONT;       // Continuous mode
DFSDM1_Filter1->FLTCR1 |= DFSDM_FLTCR1_RDMAEN;      // Enable DMA requests on regular conversion
DFSDM1_Filter1->FLTFCR |= ( 0x02   <<29U);          // Select Sinc2 filter mode
DFSDM1_Filter1->FLTFCR |= ((1023) <<16U);           // with FOSR  = 1024
DFSDM1_Filter1->FLTFCR |= ((255)  <<00U);           // with IOSR = 256
DFSDM1_Filter1->FLTCR1 |= DFSDM_FLTCR1_DFEN;        // Enable filter

// Global enable for DFSDM interface
DFSDM1_Channel0->CHCFGR1 |= DFSDM_CHCFGR1_DFSDMEN;

// Start conversion
DFSDM_Filter1->FLTCR1 |= DFSDM_FLTCR1_RSWSTART;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)