2012-05-21 5 views
3

저는 STM32 Cortex M3 마이크로 컨트롤러 용 C 코드를 개발하는 프로젝트를 인수했습니다.Cortex M3의 DMA 채널이 유휴 상태 일 때를 감지 할 수 있습니까?

내가 즉시 가지고있는 문제는 2 개의 USART 사이에서 데이터를 전송하는 자유로운 DMA 채널이 있지만 때때로 다른 소스의 데이터를 대상 USART로 전송해야한다는 것입니다.

DMA가 데이터 전송 또는 유휴 상태로 전환 중일 때를 감지하거나 전송이 완료되면 인터럽트가 트리거되는지 감지 할 수있는 방법이 있습니까? 어떤 응답을

많은 감사,

데이브 여기

+1

이것은 주제에서 벗어난 것이 아니지만 여기에서 원하는 답을 얻지 못하면 Electronics StackExchange에서 더 좋은 결과를 얻을 수 있습니다. – Polynomial

+0

주변기기에 2 개의 DMA 채널이있어 데이터를 스트리밍하는 경우 DMA 컨트롤러가 DMA 채널을 조정하여 한 번에 하나의 위치 만 기록하도록 할 수 있습니까? – davidpcl1977

+0

고맙습니다. 다항식 - 나는 그곳을 살펴볼 것입니다. – davidpcl1977

답변

2

는 DMA 작업을 완료 한 경우 내가 확인하는 일이다

DMA_Cmd(DMA2_Channel5, ENABLE); // start 
while (!DMA_GetFlagStatus(DMA2_FLAG_TC5)); // wait to finish 
DMA_ClearFlag(DMA2_FLAG_TC5); // clear flag (needed?) 
+0

고맙습니다. 시도해 보겠습니다. – davidpcl1977

3

DMA 완료는 모두 폴링하거나 인터럽트 구동. 자세한 내용은 특정 부품에 대한 참조 설명서에 나와 있습니다. "STM32 Cortex-M3"은 구체적으로 필요한 문서를 한정하지는 않지만 ST's website에서 다운로드 할 수 있습니다.

DMA를 구현하는 가장 간단한 방법은 STM32 Stanadard Peripheral Library을 사용하는 것입니다. 여기에는 USART에 대한 DMA 폴링 및 DMA 인터럽트 예제를 포함하여 모든 주변 장치에 대한 예제 프로젝트가 포함됩니다. 도구 체인에 이미 라이브러리가 포함되어있을 수 있지만 모든 예제가 포함되지는 않습니다. 이미 라이브러리가있는 경우에도 최신 개정판인지 확인하는 것이 좋습니다.