问题描述
我的 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 (将#修改为@)