STM32 DMA (동시 스트림, FIFO, 버스트 모드, 이중 버퍼)
-
21-12-2019 - |
문제
STM32F4 시리즈의 DMA에는 몇 가지 고급 기능이 있으며 여기에서 설명을 요청할 수 있습니까?
-
동시 스트림 : 두 개의 스트림이 동시에 데이터를 전송할 수 있습니까? 1 바이트 전송이 허용되므로. 버스 폭이 32 비트이면 4 개의 동시 전송이 가능합니다. BTW, STM32 용 AHB 버스의 폭은 무엇입니까?
-
FIFO 모드 : 동시 전송이 불가능한 경우 FIFO가 여기에서 사용될 수 있습니다. FIFO는 AHB 버스를 차지하지 않고 저속 주변 장치에서 DMA로 데이터를 대기하는 데 도움이됩니다. 일정량의 데이터가 준비되면 데이터 덩어리가 함께 메모리로 보내집니다. 내 이해가 맞습니까?
4 워드 깊이 32 FIFENT-IN, 스트림 당 첫 번째 메모리 버퍼 (FIFOS)
그게 무슨 뜻 이죠? FIFO에 얼마나 많은 데이터를 저장할 수 있습니까? 4 또는 4 * 32?
-
버스트 모드 : 실제로 버스트 모드는 무엇을합니까? 데이터 시트에서 65535 데이터를 전송할 수 있습니다. 버스트 모드로 65535의 관계는 무엇입니까?
-
이중 버퍼 모드 :
이중 버퍼 유형 트랜잭션 : 두 개의
이중 버퍼 전송 메모리에 대한 메모리 포인터 (DMA가 읽기 / 쓰기 중에있는 동안 또는 버퍼로, 응용 프로그램은 다른
완충기). ----- STM32F4의 참조 설명서에서
내 질문은 다음과 같습니다. DMA 전송 중에는 Cortex M4에서는 AHB 버스를 사용할 수 없으며 어떻게 응용 프로그램이 다른 버퍼에서 읽을 수 있습니까?
해결책
일부 연구를 수행 한 후에, 여기에서 누군가가 필요할 수 있으면 찾은 것입니다.
-
동시 스트림 : 하나의 DMA에서는 불가능합니다. DMA1, DMA2가 동시에 실행되도록 할 수 있습니다. 예 : F427은 동시에 수행 할 수 있습니다 :
- 플래시에 대한 액세스 (읽기 코드)
- DMA1 SRAM에 대한 액세스 (일부 버퍼 전송)
- DMA2 SDRAM (다른 버퍼) 에 대한 액세스
FIFO는 저속 장치에서 일시적으로 데이터를 저장하는 데 사용됩니다. 일정량의 데이터가 축적되었을 때 AHB의 자원을 저장하기 위해 버스트가 전송 될 수 있습니다. AHB가 DMAC에서 사용되는 경우, 프로세서에서는 사용할 수 없습니다. FIFO에는 4 * 32 비트 크기가 있습니다. 그것은 16 * 8 비트 (16 * 0NE 바이트)로 구성 할 수 있습니다.