Skip to main content

STM32 MCUs Products

Ask questions, find answers, and share insights on STM32 products and their technical features.

  • 10000+ Topics
  • 222,403 Replies
10000+ Topics
硬件不变的情况下,SPI+DMA 循环模式主机接收 采集电压异常,Normal模式却正常

用SPI+DMA驱动AD4001,用片选信号代替 CONV,采集一个正弦信号。Normalnormal正常,循环模式却不对,求大佬解答!!Normal模式下,每次在 HAL_SPI_RxCpltCallback 函数里面重新启动数据正常,能看到正弦变化规律                                 循环模式下数据就不对了,采集的同样一个交流信号,我在半传输完成回调里面查看,按道理后半部分的数据应该是正常的正弦变化才对,实际却不是,但是去采集直流时又是正常的。                PS:缓冲区开的1200,感觉应该不会更新这么快,就算更新应该局部的数据具有正弦规律    我得猜想:是不是因为我再keil里面是打断点查看的数据,并不会停下SPI+DMA 在循环模式下的硬件工作,导致后台一直在更新,keil显示的数据其实不对配置:配置的区别只修改了DMA是正常还是循环void MX_SPI1_Init(void){/* 用户代码开始 SPI1_Init 0 *//* 用户代码结束 SPI1_Init 0 *//* 用户代码开始SPI1_Init 1 *//* 用户代码结束 SPI1_Init 1 */hspi1.实例 = SPI1;HSPI1 的。Init.Mode = SPI_MODE_MASTER;HSPI1 的。Init.Direction = SPI_DIRECTION_2LINES_RXONLY;HSPI1 的。Init.DataSize = SPI_DATASIZE_32BIT;HSPI1 的。Init.CLKPolarity = SPI_POLARITY_LOW;HSPI1 的。Init.CLKPhase = SPI_PHASE_1EDGE;HSPI1 的。Init.NSS = SPI_NSS_HARD_OUTPUT;HSPI1 的。Init.BaudRatePrescal

How to configure "Delay between 2 sampling phases" on the STM32G431

板:STM32G431 NUCLEO-64我的目标是在 ADC1 和 ADC2 上实现 4 MSPS 的采样率。通过使用交错采样,我的目标是获得 8 MSPS 的有效采样率。虽然我知道这可能与数据表中针对多通道 ADC作的声明限制不严格一致,但我相信这种差异与我遇到的问题没有直接关系。根据数据表中的图1、ADC 时钟应低于 52 MHz。图 1在我的设置中,我在交错模式下使用 TIM + DMA + ADC,配置如下:定时器触发频率:4 MHzADC 分辨率:12 位ADC 时钟:60 MHz采样时间:2.5 次循环我的输入信号是由板载 DAC 生成的连续正弦波,频率为 50 kHz。在查看与 timing calculations相关的 datasheet 部分后,总转换时间似乎应该在7.5 cycles 左右。但是,STM32CubeMX 只允许采样时间设置介于 1 和 12 之间的整数值,因此我选择了 7 个周期。以下是我观察到的:当我将“Delay between 2 sampling phases”设置为 7 个周期时,采样间隔看起来不规则,并且与预期的交错模式不匹配(参见图 2)。当我将“Delay between 2 sampling phases”设置为 12 个周期时,得到的采样间隔看起来是均匀分布的(参见图 3)。  图 2 Figure 3What I want to understand is:What is the correct value to set for “Delay between 2 sampling phases” to achieve ideal interleaved sampling with evenly spaced samples?