ADC+DMA在CubeMX中还有DMA Continuous Requests,所以排列组合有多种情况,下面是配套的几种方案(自用):
基本参数
ADC Conversion Modes
- Singular Conversion Mode:
- The ADC performs a single conversion for each trigger event.
- Useful for applications where you only need periodic sampling.
- Continuous Conversion Mode:
- The ADC continuously performs conversions until stopped.
- Ideal for real-time data acquisition where constant monitoring is required.
DMA Modes
- Normal Mode:
- The DMA transfers data a specified number of times and then stops.
- Suitable for applications where a fixed number of samples are needed.
- Circular Mode:
- The DMA continuously transfers data, looping back to the beginning when the buffer is full.
- Useful for applications requiring a constant stream of data, like audio processing.
DMA Continuous Requests
- Enabled:
- DMA keeps requesting data transfers indefinitely.
- Used in conjunction with Circular mode to ensure continuous data flow without interruption.
- Disabled:
- DMA requests stop after the specified number of transfers.
- Suitable for applications needing data transfer in bursts.
Use Cases for Combinations
1. Singular Conversion + Normal DMA + DMA Continuous Requests Disabled:
Use when a single batch of conversions is needed without further triggering.
2. Singular Conversion + Circular DMA + DMA Continuous Requests Enabled:
Use when periodic single conversions are needed, and each should overwrite the previous data.
3. Continuous Conversion + Normal DMA + DMA Continuous Requests Disabled:
Useful when you want to fill a buffer with continuous data once and then process it.
4. Continuous Conversion + Circular DMA + DMA Continuous Requests Enabled:
Ideal for applications like audio or sensor data streaming where continuous, uninterrupted data flow is required.
* Additional Option: Scan Mode
Scan Mode:
Allows multiple channels to be converted in sequence.
Useful for applications requiring data from multiple sensors or inputs in a single cycle.
说明
例如:Continuous Conversion + Normal DMA + DMA Continuous Requests Enabled 这种组合通常不常用,因为:
Continuous Conversion Mode 会让ADC不断地进行转换。
Normal DMA Mode 只允许一次性传输指定数量的数据,然后停止,不适合持续数据流。
DMA Continuous Requests Enabled 意味着DMA会持续请求数据传输,但在Normal模式下DMA会完成指定次数的传输后停止。
这种配置会导致不匹配,因为Normal DMA模式不支持持续数据流,而Continuous Conversion模式会一直产生数据。因此,这种组合通常是非预期的,容易导致数据丢失或系统行为不稳定。对于持续数据流,Circular DMA模式更合适。
如果手动重新启动ADC DMA传输,可以实现 Continuous Conversion + Normal DMA + DMA Continuous Requests Enabled 的效果。不过,这需要在软件中额外管理:
中断或轮询机制: 在DMA传输完成时(传输完成中断或状态标志),手动重启DMA以接收新的转换数据。
数据处理: 在每次DMA传输完成后,及时处理或存储数据,以避免数据覆盖。
这种方法增加了软件的复杂性,但可以在需要精确控制每批数据处理的情况下使用。要确保系统响应足够快,以免丢失ADC数据。