본 포스팅은 STM32F7 Serise 의 ADC(Analog to Digital Converter) 기능의 레퍼런스메뉴얼의 자료를 번역서비스를 거쳐 자료를 올리게 되었습니다. 다소 오해가 있는 부분이 있다면 알려주시고, 글을 퍼가시지 마시고 댓글로 알려 주시면 문제의 부분은 업데이트 하여 개선을 하도록 하겠습니다.
ADC 소개
12 비트 ADC는 연속 근사 아날로그-디지털 변환기입니다.
최대 19 개의 멀티플렉싱 채널이 있습니다 16 외부 외부 소스, VBAT 채널의 신호를 선택하십시오.
채널의 A / D 변환이 가능하다, 연속, 스캔 또는 불연속 모드에서 수행된다.
ADC의 결과는 16 비트 데이터 옵션입니다.
아날로그 워치 독 기능 응용 프로그램을 입력하십시오.
ADC 주요 기능
– 12 비트, 10 비트, 8 비트 또는 6 비트 구성 가능 해상도
– 변환 종료, 주입 된 변환 종료 및 아날로그 워치 독 또는 오버런 이벤트의 경우 인터럽트 생성
– 단일 및 연속 변환 모드
– 채널 0을 채널 ‘N’으로 자동 변환
– 내장 데이터 일관성을 통한 데이터 정렬
– 채널 별 프로그램 가능 샘플링 시간
– 일반 및 주입 변환 모두에 대해 구성 가능한 극성을 가진 외부 트리거 옵션
– 불연속 모드
– 듀얼 / 트리플 모드 (장치에서) 2 개 이상의 ADC 포함)
-이중 / 삼중 ADC 모드-DMA 데이터 저장
-이중 / 삼중 상호 리브 모드에서 변환 간 구성 지연 가능
-ADC 공급 요구 사항 : 최고 속도에서 2.4V ~ 3.6V, 가변에서 1.8V까지
-ADC 입력 방식 : 정규 채널 변환 중 VREF–≤ VIN≤ VREF + (VREF – 사용 가능 여부 (패키지에 따라) VSSA에 연결 가능)
-DMA 요청 생성
ADC 기능 설명
[그림 70]은 ADC 블록 다이어그램을 보여줌
[표 93]은 ADC 핀을 설명 함
1. ADC 온-오프 제어
ADC_CR2 ADCA 전원 비트 설정. ADON 비트를 처음 설정하면 ADC가 파워 다운 모드입니다.
SWSTART 또는 JSWSTART 비트가 설정되었습니다.
사용자가 변환을 중지하고 ADC를 파워 다운 모드로 전환 할 수 있습니다. 이 모드에서 ADC는 거의 전력을 소비하지 않았다.
2. ADC 1/2/3 연결성
ADC1, ADC2 및 ADC3은 [그림 71], [그림 72], [그림 73]에 대한 설명이 있습니다.
ADC ADC ADC
.
-아날로그 회로 용인 : 모든 ADC에 대한 ADCCLKi 프로세서는 APB2 프로세서를 통해 실행 가능한 프리스케일러로 나뉘어 생성됨 ADC가 fPCLK2 / 2, / 4, / 6 또는 / 8에서 작동합니다.
ADCCLK의 최대 값에 따라 데이터 시트를 참조하십시오.
-디지털 인터페이스 용의 잠금 (레지스터 읽기 / 쓰기 액세스에 사용) RCC APB2 주변 장치가 활성화 될 수있다 (RCC_APB2ENR).
4. 채널 선택
다음은 16입니다.
일반 그룹과 스위치 그룹의 두 그룹으로 전환을 구성 할 수 있습니다.
그룹은 모든 채널에서
예를 들어, ADC_IN3, ADC_IN8, ADC_IN2, ADC_IN2, ADC_IN0, ADC_IN2, ADC_IN2, ADC_IN15 명령으로 변환 할 수 있습니다.
– 일반 그룹 은 최대 16 일입니다. ADC_SQRx 일반적으로 채널 및 변환 순서를 선택해야합니다. 일반 그룹의 총 변환 수는 ADC_SQR1 효소의 L [3 : 0] 비트로 기록됩니다.
– 그룹 그룹 은 최대 4입니다. ADC_JSQR 변환에서 선택해야합니다. ADC [JSQR]의 L [1 : 0] 비트로 기록이 있습니다. ADC_SQRx 또는 ADC_JSQR ADC를 변환하십시오.
온도 센서, VREFINT 및 VBAT 내부 채널
-온도 센서는 VBAT와 함께 ADC1_IN18 채널을 연결합니다. 한 번에 하나의 변환, 온도 센서 또는 VBAT 만 선택해야합니다. VBAT 변환 만 수행됨.
VBAT 채널은 ADC1_IN18 채널에 연결됩니다.
일반 또는 일반 채널로 변환 할 수 있습니다.
참고 : 온도 센서, VREFINT 및 VBAT 채널은 마스터 ADC1
5. CHAPTER 2-mode one-
one-CHAPTER 2-mode에서 ADC는 한 번의 변환을 수행합니다.
이 모드는 다음 중 하나에 있습니다.
• ADC_CR2 스위치에서 SWSTART 비트 설정 (일반 채널 만 해당)
• JSWSTART 비트 설정 (주입 및 채널)
• 외부 트리거 (일반 또는 각 채널)
신호 채널의 변환이 완료되었습니다 :
• 표준 채널 이 변환되었습니다 :
–
EOC (변환 끝) 플래그가 설정되었습니다.
• 주입 된 채널이 변환 된 경우 :
– 변환 된 데이터는 16 비트 ADC_JDR1 레지스터에 저장됩니다
– JEOC (변환 종료 주입) 플래그가 설정되었습니다.
– JEOCIE 비트가 설정 메뉴얼 생성.
그런 다음 ADC가 멈췄다.
6. 연속 변환 모드
연속 변환 모드에서 ADC는 변환이 완료되었습니다.
이 모드는 외부 트리거 또는 ADC_CR2 스위치의 SWSTRT 비트를 설정하여 CONT 비트를 1로 시작합니다.
각 전환 후 :
• 정기 채널 그룹이 변환되었습니다.
– – 마지막으로 변환되었습니다.
– EOC (변환 끝) 플래그가 설정되었습니다.
– EOCIE 비트가 발생했습니다. 참고 : 채널이 연속적으로 변환 될 수 있습니다.
단, 인젝션이 채널이 연속 모드 (JAUTO 비트 사용)입니다.
7. 타이밍 다이어그램
[그림 74] tSTAB의 마지막 시간이 필요합니다. ADC 변환 시작 후 및 15 버퍼 사이클 후 EOC
8. 아날로그 워치독
AWD 아날로그 워치 독 상태 비트는 ADC에 의해 변환 된 아날로그 전압이 낮은 임계 값보다 낮거나 높은 임계 값보다 높은 경우 설정됩니다. 이 임계 값은 ADC_HTR 및 ADC_LTR 16 비트 레지스터의 12 개 최하위 비트에 프로그래밍됩니다.
ADC_CR1 레지스터의 AWDIE 비트를 사용하여 인터럽트를 활성화 할 수 있습니다. 임계 값은 ADC_CR2 레지스터의 ALIGN 비트에 의해 선택된 정렬과 무관합니다. 아날로그 전압은 정렬 전 낮은 임계 값과 높은 임계 값과 비교됩니다.
[표 94]는 하나 이상의 채널에서 아날로그 워치 독을 활성화하기 위해 ADC_CR1 레지스터를 구성하는 방법을 보여줍니다.
9. 스캔 모드
이 모드는 아날로그 채널 그룹을 스캔하는 데 사용됩니다.
스캔 모드는 ADC_CR1 레지스터에서 SCAN 비트를 설정하여 선택됩니다. 이 비트가 설정되면 ADC는 ADC_SQRx 레지스터 (일반 채널의 경우) 또는 ADC_JSQR 레지스터 (주입 된 채널의 경우)에서 선택한 모든 채널을 스캔합니다. 그룹의 각 채널에 대해 단일 변환이 수행됩니다. 변환이 끝날 때마다 그룹의 다음 채널이 자동으로 변환됩니다.
CONT 비트가 설정된 경우 일반 채널 변환은 그룹에서 마지막으로 선택된 채널에서 중지되지 않고 첫 번째 선택된 채널에서 다시 계속됩니다.
DMA 비트가 설정되면 DMA (직접 메모리 액세스) 컨트롤러를 사용하여 각 정규 채널 변환 후 일반 채널 그룹 (ADC_DR 레지스터에 저장된)에서 SRAM으로 변환 된 데이터를 전송합니다. ADC_SR 레지스터 :
• EOCS 비트가 0으로 해제되면 각 일반 그룹 시퀀스의 끝에서
• EOCS 비트가 1로 설정된 경우 각 일반 채널 변환이 끝날 때
주입 된 채널에서 변환 된 데이터는 항상 ADC_JDRx 레지스터에 저장됩니다.
10. 주입 된 채널 관리( Injected channel management )
트리거 주입 ( Triggered injection )
트리거 주입을 사용하려면 ADC_CR1 레지스터에서 JAUTO 비트를 지워야합니다.외부 트리거 또는 ADC_CR2 레지스터에서 SWSTART 비트를 설정하여 일반 채널 그룹의 변환을 시작하십시오.
1. 외부 주입 트리거가 발생하거나 일반 채널 그룹을 변환하는 동안 JSWSTART 비트가 설정되면 현재 변환이 재설정되고 주입 된 채널 시퀀스가 Scan-once 모드로 전환됩니다.
2. 그런 다음 정규 채널 그룹의 정규 변환이 마지막 중단 된 정규 변환에서 다시 시작됩니다.
3. 주입 된 변환 중에 규칙적인 이벤트가 발생하면 주입 된 변환은 중단되지 않지만 주입 된 시퀀스의 끝에서 규칙적인 시퀀스가 실행됩니다.
[그림 76]은 해당 타이밍 다이어그램을 보여줍니다.
참고 : 트리거 주입을 사용할 때는 트리거 이벤트 간격이 주입 시퀀스보다 길어야합니다. 예를 들어, 시퀀스 길이가 30 ADC 클록 사이클 (즉, 샘플링 시간이 3 클록주기 인 두 번의 변환) 인 경우 트리거 간의 최소 간격은 31 ADC 클록 사이클이어야합니다.
자동 주입( Auto-injection )
JAUTO 비트가 설정되면 주입 된 그룹의 채널은 일반 채널 그룹 이후에 자동으로 변환됩니다. ADC_SQRx 및 ADC_JSQR 레지스터에 프로그래밍 된 최대 20 개의 변환 시퀀스를 변환하는 데 사용할 수 있습니다.
이 모드에서는 주입 된 채널의 외부 트리거를 비활성화해야합니다.
JAUTO 비트 외에 CONT 비트도 설정하면 일반 채널과 주입 된 채널이 계속 변환됩니다.
참고 : 자동 주입 모드와 불연속 모드를 동시에 사용할 수는 없습니다.
11. 불연속모드 ( Discontinuous mode )
정규 그룹( Regular group )
이 모드는 ADC_CR1 레지스터에서 DISCEN 비트를 설정하여 활성화됩니다. ADC_SQRx 레지스터에서 선택한 변환 시퀀스의 일부인 짧은 n 시퀀스 변환 (n ≤ 8)을 변환하는 데 사용할 수 있습니다. n의 값은 ADC_CR1 레지스터의 DISCNUM [2 : 0] 비트에 기록하여 지정됩니다.
외부 트리거가 발생하면 시퀀스의 모든 변환이 완료 될 때까지 ADC_SQRx 레지스터에서 선택된 다음 n 변환을 시작합니다. 총 시퀀스 길이는 ADC_SQR1 레지스터의 L [3 : 0] 비트로 정의됩니다.
예:
• n = 3, 변환 될 채널 = 0, 1, 2, 3, 6, 7, 9, 10
• 첫 번째 트리거 : 시퀀스 변환 0, 1, 2. EOC 이벤트는 각 변환마다 생성됩니다.
• 2 차 트리거 : 3, 6, 7로 변환 된 시퀀스. 각 변환마다 EOC 이벤트가 생성됩니다.
• 세 번째 트리거 : 시퀀스 변환 9, 10. EOC 이벤트가 각 변환에서 생성됩니다.
• 4 번째 트리거 : 시퀀스 변환 0, 1, 2. EOC 이벤트가 각 변환에서 생성됩니다.
참고 : 일반 그룹이 불연속 모드로 변환되면 롤오버가 발생하지 않습니다. 모든 하위 그룹이 변환되면 다음 트리거가 첫 번째 하위 그룹의 변환을 시작합니다. 위의 예에서 4 번째 트리거는 1 번째 하위 그룹의 채널 0, 1 및 2를 다시 변환합니다.
주사그룹 ( Injected group )
이 모드는 ADC_CR1 레지스터에서 JDISCEN 비트를 설정하여 활성화됩니다. 외부 트리거 이벤트 후 ADC_JSQR 레지스터에서 선택한 시퀀스를 채널별로 변환하는 데 사용할 수 있습니다.
외부 트리거가 발생하면 시퀀스의 모든 변환이 완료 될 때까지 ADC_JSQR 레지스터에서 선택된 다음 채널 변환이 시작됩니다. 총 시퀀스 길이는 ADC_JSQR 레지스터의 JL [1 : 0] 비트로 정의됩니다.
예:
n = 1, 변환 될 채널 = 1, 2, 3
첫 번째 트리거 : 채널 1 변환
두 번째 트리거 : 채널 2 변환
세 번째 트리거 : 채널 3 변환 및 JEOC 이벤트 생성
4 번째 트리거 : 채널 1
참고 : 모든 주입 된 채널이 변환되면 다음 트리거는 첫 번째 주입 된 채널의 변환을 시작합니다. 위의 예에서, 네 번째 트리거는 첫 번째 주입 된 채널 1을 다시 변환합니다.
자동 주입 모드와 불연속 모드를 동시에 사용할 수는 없습니다.
불연속 모드는 일반 그룹과 주입 그룹에 동시에 설정되어서는 안됩니다. 불연속 모드는 한 그룹의 변환에 대해서만 활성화해야합니다.
데이터 정렬
ADC_CR2 레지스터의 ALIGN 비트는 변환 후 저장된 데이터의 정렬을 선택합니다. [그림 77] 및 [그림 78]과 같이 데이터를 오른쪽 또는 왼쪽으로 정렬 할 수 있습니다.
주입 된 채널 그룹에서 변환 된 데이터 값은 ADC_JOFRx 레지스터에 기록 된 사용자 정의 오프셋에 의해 감소하므로 결과는 음수 값이 될 수 있습니다. SEXT 비트는 확장 부호 값을 나타냅니다.
일반 그룹의 채널의 경우 오프셋을 빼지 않으므로 12 비트 만 중요합니다.
특수한 경우 : 왼쪽 정렬하면 해상도가 6 비트로 설정된 경우를 제외하고 데이터가 반 워드 단위로 정렬됩니다. 이 경우 데이터는 [그림 79]와 같이 바이트 단위로 정렬됩니다.
채널 별 프로그램 가능 샘플링 시간
ADC는 ADC_SMPR1 및 ADC_SMPR2 레지스터의 SMP [2 : 0] 비트를 사용하여 수정할 수있는 여러 ADCCLK 사이클에 대한 입력 전압을 샘플링합니다. 각 채널은 다른 샘플링 시간으로 샘플링 될 수 있습니다.
총 전환 시간은 다음과 같이 계산됩니다.
Tconv = 샘플링 시간 + 12 사이클
예:
ADCCLK = 30 MHz 및 샘플링 시간 = 3주기 :
60 MHz에서 APB2의 Tconv = 3 + 12 = 15 사이클 = 0.5 μs
외부 트리거 및 트리거 극성 변환
외부 이벤트 (예 : 타이머 캡처, EXTI 라인)에 의해 변환이 트리거 될 수 있습니다.
EXTEN [1 : 0] 제어 비트 (정규 변환의 경우) 또는 JEXTEN [1 : 0] 비트 (주입 된 변환의 경우)가 “0b00″과 다른 경우 외부 이벤트가 선택된 극성으로 변환을 트리거 할 수 있습니다. . [표 95]는 EXTEN [1 : 0] 및 JEXTEN [1 : 0] 값과 트리거 극성 간의 일치 성을 제공합니다.
참고 : 외부 트리거의 극성은 즉시 변경할 수 있습니다.
EXTSEL [3 : 0] 및 JEXTSEL [3 : 0] 제어 비트는 16 개의 가능한 이벤트 중 정규 및 주입 그룹에 대한 변환을 트리거 할 수있는 이벤트를 선택하는 데 사용됩니다.
[표 96]은 정규 변환을위한 가능한 외부 트리거를 제공합니다.
[표 97]은 주입 변환을위한 가능한 외부 트리거를 제공합니다.
소프트웨어 소스 트리거 이벤트는 ADC_CR2에서 SWSTART (정기 변환) 또는 JSWSTART (주입 변환)를 설정하여 생성 할 수 있습니다.
주입 된 트리거에 의해 정기적 인 그룹 변환이 중단 될 수 있습니다.
노트 :
트리거 선택은 즉시 변경 될 수 있습니다. 그러나 선택이 변경되면 트리거 감지가 비활성화되는 1 APB 클럭주기의 시간 프레임이 있습니다. 이는 전환 중 가짜 탐지를 피하기위한 것입니다.
빠른 변환 모드
ADC 분해능을 줄임으로써 더 빠른 변환을 수행 할 수 있습니다. RES 비트는 데이터 레지스터에서 사용 가능한 비트 수를 선택하는 데 사용됩니다. 각 해상도의 최소 변환 시간은 다음과 같습니다.
• 12 비트 : 3 + 12 = 15 ADCCLK주기
• 10 비트 : 3 + 10 = 13 ADCCLK주기
• 8 비트 : 3 + 8 = 11 ADCCLK주기
• 6 비트 : 3 + 6 = 9 ADCCLK주기
자료 관리
1. DMA 사용
변환 된 일반 채널 값은 고유 한 데이터 레지스터에 저장되므로 DMA를 사용하여 둘 이상의 일반 채널을 변환하는 것이 유용합니다. 이는 ADC_DR 레지스터에 이미 저장된 데이터의 손실을 방지합니다.
DMA 모드가 활성화되면 (ADC_CR2 레지스터에서 DMA 비트가 1로 설정 됨) 정규 채널을 변환 할 때마다 DMA 요청이 생성됩니다. 이를 통해 ADC_DR 레지스터에서 변환 된 데이터를 소프트웨어가 선택한 대상 위치로 전송할 수 있습니다.
그럼에도 불구하고 데이터가 손실 (오버런)되면 ADC_SR 레지스터의 OVR 비트가 설정되고 인터럽트가 발생합니다 (OVRIE 활성화 비트가 설정된 경우). 그런 다음 DMA 전송이 비활성화되고 DMA 요청이 더 이상 수락되지 않습니다. 이 경우 DMA 요청을하면 진행중인 정기 변환이 중단되고 추가 정기 트리거가 무시됩니다. 그런 다음 사용 된 DMA 스트림에서 OVR 플래그와 DMAEN 비트를 지우고 원하는 변환 된 채널 데이터가 올바른 메모리 위치로 전송되도록 DMA와 ADC를 다시 초기화해야합니다. 그래야만 변환을 재개하고 데이터 전송을 다시 활성화 할 수 있습니다. 주입 된 채널 변환은 오버런 오류의 영향을받지 않습니다.
DMA 모드에서 OVR = 1 인 경우 마지막 유효 데이터가 전송 된 후 DMA 요청이 차단되므로 RAM으로 전송 된 모든 데이터가 유효한 것으로 간주 될 수 있습니다.
마지막 DMA 전송 종료시 (DMA 컨트롤러의 DMA_SxNTR 레지스터에 구성된 전송 수) :
• ADC_CR2 레지스터에서 DDS 비트가 0으로 지워지면 DMA 컨트롤러에 새로운 DMA 요청이 발행되지 않습니다 (이로 인해 오버런 오류가 발생하지 않습니다). 그러나 DMA 비트는 하드웨어에 의해 지워지지 않습니다. 새 전송을 시작하려면 0에 기록한 다음 1에 기록해야합니다.
• DDS 비트가 1로 설정된 경우 요청이 계속 생성 될 수 있습니다. 이렇게하면 DMA를 이중 버퍼 순환 모드로 구성 할 수 있습니다.
DMA를 사용할 때 OVR 상태에서 ADC를 복구하려면 다음 단계를 수행하십시오.
1. DMA를 사용할 때 OVR 상태에서 ADC를 복구하려면 다음 단계를 수행하십시오.
2. DMA를 다시 초기화하십시오 (대상 주소 및 NDTR 카운터 조정)
3. ADC_SR 레지스터 3에서 ADC OVR 비트를 지 웁니다. ADC를 트리거하여 변환을 시작하십시오.
2. DMA를 사용하지 않고 일련의 변환 관리
변환 속도가 느리면 소프트웨어에서 변환 순서를 처리 할 수 있습니다. 이 경우 EOCS 비트는 ADC_CR2 레지스터에 설정되어 있어야 EOC 상태 비트는 시퀀스의 끝뿐만 아니라 각 변환의 끝에서 설정됩니다. EOCS = 1이면 오버런 감지가 자동으로 활성화됩니다. 따라서 변환이 완료 될 때마다 EOC가 설정되고 ADC_DR 레지스터를 읽을 수 있습니다. 오버런 관리는 DMA 사용시와 동일합니다.
EOCS 설정시 OVR 상태에서 ADC를 복구하려면 다음 단계를 수행하십시오.
1. ADC_SR 레지스터에서 ADC OVR 비트를 지 웁니다.
2. ADC를 트리거하여 변환을 시작합니다.
3. DMA가없고 오버런 감지가없는 변환
매번 데이터를 읽지 않고 ADC가 하나 이상의 채널을 변환하도록하는 것이 유용 할 수 있습니다 (예를 들어 아날로그 워치 독이있는 경우). 이를 위해서는 DMA를 비활성화해야하고 (DMA = 0) EOC 비트는 시퀀스 끝에서만 설정해야합니다 (EOCS = 0). 이 구성에서는 오버런 감지가 비활성화됩니다.
다중 ADC 모드
ADC가 두 개 이상인 장치에서는 듀얼 (두 개의 ADC가있는) 및 트리플 (세 개의 ADC가있는) ADC 모드를 사용할 수 있습니다 (그림 80 참조).
다중 ADC 모드에서, ADC_CCR 레지스터의 MULTI [4 : 0] 비트에 의해 선택된 모드에 따라, ADC1 마스터에 의해 ADC2 및 ADC3 슬레이브로의 변환 시작이 교대로 또는 동시에 트리거된다.
참고 : 다중 ADC 모드에서 외부 이벤트로 변환 트리거를 구성 할 때 응용 프로그램은 마스터 만 트리거를 설정하고 원하지 않는 슬레이브 변환을 시작하는 스퓨리어스 트리거를 방지하기 위해 슬레이브에 의한 트리거를 비활성화해야합니다.
아래 네 가지 가능한 모드가 구현됩니다.
• 주사 동시 모드
• 일반 동시 모드
• 인터리브 모드
• 대체 트리거 모드
다음 방법으로 결합 된 이전 모드를 사용할 수도 있습니다.
• 주입 동시 모드 + 일반 동시 모드
• 일반 동시 모드 + 대체 트리거 모드
참고 : 다중 ADC 모드에서는 변환 된 데이터를 다중 모드 데이터 레지스터 (ADC_CDR)에서 읽을 수 있습니다. 상태 비트는 다중 모드 상태 레지스터 (ADC_CSR)에서 읽을 수 있습니다.
다중 ADC 모드의 DMA 요청 :
다중 ADC 모드에서, DMA는 변환 된 데이터를 3 가지 상이한 모드로 전송하도록 구성 될 수있다. 모든 경우에 사용할 DMA 스트림은 ADC에 연결된 것입니다.
– DMA 모드 1 : 각 DMA 요청 (하나의 데이터 항목 사용 가능)에서 ADC로 변환 된 데이터 항목을 나타내는 하프 워드가 전송됩니다.
이중 ADC 모드에서는 첫 번째 요청에서 ADC1 데이터가 전송되고 두 번째 요청에서 ADC2 데이터가 전송됩니다.
트리플 ADC 모드에서 ADC1 데이터는 첫 번째 요청에서 전송되고 ADC2 데이터는 두 번째 요청에서 전송되고 ADC3 데이터는 세 번째 요청에서 전송됩니다. 시퀀스가 반복됩니다. 따라서 DMA는 먼저 ADC1 데이터와 ADC2 데이터, ADC3 데이터 등을 전송합니다.
DMA 모드 1은 일반 동시 트리플 모드에서 사용됩니다.
예 :
일반 동시 트리플 모드 : 3 개의 연속 DMA 요청이 생성됩니다 (변환 된 각 데이터 항목마다 하나씩)
첫 번째 요청 : ADC_CDR [31 : 0] = ADC1_DR [15 : 0]
두 번째 요청 : ADC_CDR [31 : 0] = ADC2_DR [15 : 0]
세 번째 요청 : ADC_CDR [31 : 0] = ADC3_DR [15 : 0]
네 번째 요청 : ADC_CDR [31 : 0] = ADC1_DR [15 : 0]
– DMA 모드 2 : 각 DMA 요청 (두 개의 데이터 항목 사용 가능)에서 두 개의 ADC 변환 된 데이터 항목을 나타내는 두 개의 하프 워드가 워드로 전송됩니다.
이중 ADC 모드에서 ADC2 및 ADC1 데이터는 첫 번째 요청에서 전송됩니다 (ADC2 데이터는 상위 하프 워드를 취하고 ADC1 데이터는 하위 하프 워드를 취합니다).
트리플 ADC 모드에서는 세 개의 DMA 요청이 생성됩니다. 첫 번째 요청에서 ADC2 및 ADC1 데이터가 모두 전송됩니다 (ADC2 데이터는 상위 하프 워드를 취하고 ADC1 데이터는 하위 하프 워드를 취합니다). 두 번째 요청에서는 ADC1 및 ADC3 데이터가 모두 전송됩니다 (ADC1 데이터는 상위 하프 워드를 취하고 ADC3 데이터는 하위 하프 워드를 가져옵니다) 세 번째 요청에서는 ADC3 및 ADC2 데이터가 모두 전송됩니다 (ADC3 데이터는 상위 반 단어 및 ADC2 데이터는 하위 반 단어를 사용합니다).
DMA 모드 2는 인터리브 모드 및 일반 동시 모드에서 사용됩니다 (이중 ADC 모드에만 해당).
예:
a) 인터리브 된 듀얼 모드 : 2 개의 데이터 항목을 사용할 수있을 때마다 DMA 요청이 생성됩니다.
첫 번째 요청 : ADC_CDR [31 : 0] = ADC2_DR [15 : 0] | ADC1_DR [15 : 0]
두 번째 요청 : ADC_CDR [31 : 0] = ADC2_DR [15 : 0] | ADC1_DR [15 : 0]
b) 인터리브 트리플 모드 : 2 개의 데이터 아이템이 이용 가능할 때마다 DMA 요청이 생성됨
첫 번째 요청 : ADC_CDR [31 : 0] = ADC2_DR [15 : 0] | ADC1_DR [15 : 0]
두 번째 요청 : ADC_CDR [31 : 0] = ADC1_DR [15 : 0] | ADC3_DR [15 : 0]
세 번째 요청 : ADC_CDR [31 : 0] = ADC3_DR [15 : 0] | ADC2_DR [15 : 0]
네 번째 요청 : ADC_CDR [31 : 0] = ADC2_DR [15 : 0] | ADC1_DR [15 : 0]
– DMA 모드 3 : 이 모드는 DMA 모드 2와 유사합니다. 유일한 차이점은 각 DMA 요청 (두 개의 데이터 항목 사용 가능)에서 두 개의 ADC 변환 데이터 항목을 나타내는 2 바이트가 반 워드로 전송된다는 것입니다. 데이터 전송 순서는 DMA 모드 2와 유사합니다.
DMA 모드 3은 6 비트 및 8 비트 해상도의 인터리브 모드에서 사용됩니다.
예:
a) 인터리브 된 듀얼 모드 : 2 개의 데이터 항목을 사용할 수있을 때마다 DMA 요청이 생성됩니다.
첫 번째 요청 : ADC_CDR [15 : 0] = ADC2_DR [7 : 0] | ADC1_DR [7 : 0]
두 번째 요청 : ADC_CDR [15 : 0] = ADC2_DR [7 : 0] | ADC1_DR [7 : 0]
b) 인터리브 트리플 모드 : 2 개의 프레임 데이터 아이템 사용 가능할 때마다 DMA 요청이 생성 단계 단계 단계
요청 : ADC_CDR [15 : 0] = ADC2_DR [7 : 0] | ADC1_DR [7 : 0]
두 번째 요청 : ADC_CDR [15 : 0] = ADC1_DR [7 : 0] | ADC3_DR [15 : 0]
세 번째 요청 : ADC_CDR [15 : 0] = ADC3_DR [7 : 0] | ADC2_DR [7 : 0]
네 번째 요청 : ADC_CDR [15 : 0] = ADC2_DR [7 : 0] | ADC1_DR [7 : 0]
오버런 감지 : 관련 ADC 중 하나 (이중 및 트리플 모드의 ADC1 및 ADC2, 트리플 모드의 ADC3) 오버런 감지 : 관련 ADC 중 하나 발행자 발표. . 이 ADC의 데이터는 EOC 비트가 될 수 있습니다.
1. 주입 된 동시 모드