본문 바로가기

DMA

(6)
[RP2040_W5500] RP2040 C++ SDK 환경에서 SPI DMA 성능 측정, Arduino 개발환경과 속도 비교 RP2040 을 SDK에서 구동하면 Aduino 개발환경에서 보다 속도가 빨라지는데 SPI DMA 테스트도 RP2040 C/C++ SDK로 테스트 해보자. Aduino IDE에서 SPI 테스트 했던 코드로 SPI 속도를 측정해 보자. SDK에서 제공하는 SPI 예제를 이용하여 기본 테스트를 해 볼수 있다. #include #include #include "pico/stdlib.h" #include "pico/binary_info.h" #include "hardware/spi.h" int main() { stdio_init_all(); printf("Hello, MPU9250! Reading raw data from registers via SPI...\n"); // This example will use..
[GD32-48 SSM] GD32F303 SPI DMA 테스트 GD32F303보드의 SPI 최대 클럭속도는 스펙상 30Mhz까지 가능하다. 핀투핀 호환되는 STM32F103 보드의 SPI 전송 테스트를 SPI DMA 와 비교해서 테스트 해보자 먼저 STM32CubeIDE를 이용하여 새로운 프로젝트를 생성하고 SPI 세팅을 한다. STM32CubeIDE에서 SPI 클럭 설정은 STM32F103 기준이라 최대 클럭주파수이상 설정하면 경고가 발생한다. GD32F303의 경우 120Mhz까지 설정 가능하므로 SPI클럭을 60Mhz로 설정이 가능하다. SPI DMA를 사용하지 않으면 SPI 출력 간격이 650ns정도로 측정이 된다. SPI DMA를 추가 해보자. GD32 SPI DMA 사용을 위해 SPI1_TX 를 추가 한다. GD32F303 에서 SPI DMA를 사용하면 ..
RP2040 Arduino IDE에서 SPI DMA 사용하기 Arduino IDE 개발환에서 RP2040의 SPI 전송률 테스트 하면 데이터 전송 간격이 1.2us 정도로 측정 된다.(RP2040 SPI테스트 참고) 고속의 데이터 전송을 위해서는 DMA가 필요한데 RP2040에서 SPI DMA 테스트를 진행 해 보자. DMA 초기화 함수 #include "hardware/dma.h" int32_t dma_tx_channel; dma_channel_config dma_tx_config; #define SPI_X spi0 bool initDMA(bool ctrl_cs) { //ctrl_cs = ctrl_cs; // stop unused parameter warning dma_tx_channel = dma_claim_unused_channel(false); if (dm..
[STM32G4 SM] STM32G431 - STM32CubeIDE 에서 SPI DMA 테스트 STM32CubeIDE 를 이용하여 STM32G431 프로젝트를 생성하고 SPI설정을 한다. STM32G431의 SPI 최대 클럭속도는 스펙상 75Mhz까지 가능하다. SPI를 통해 2바이트를 연속해서 전송하는 코드로 SPI 전송 지연시간을 측정해 보자. SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_SPI1_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while..
[STM32-64 Ardu] STM32F405 -STM32CubeIDE에서 SPI DMA 속도 테스트 STM32F405 보드의 SPI 전송 테스트를 SPI DMA 와 비교해서 테스트 해보자 먼저 STM32CubeIDE를 이용하여 새로운 프로젝트를 생성하고 SPI 세팅을 한다. SPI DMA를 사용하지 않고 일반 모드로 구동 해 보자 unsigned char buf[10] = {1,2}; /* USER CODE END 0 */ /** * @brief The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of al..
STM32G0 SSM - STM32CubeIDE SPI DMA 테스트 STM32CubeIDE 를 이용해서 STM32G031의 SPI DMA 테스트를 진행 해 보자. 우선 STM32CubeIDE에서 STM32G031용 프로젝트를 생성하고 기본 페리를 설정한다. SPI 클럭은 최대 32Mhz 까지 가능하다. SPI DMA 채널을 추가 SPI DMA 인터럽트 추가 GPIO 핀 스피드 설정 SPI클럭을 최대 주파수로 사용하기 때문에 GPIO 스피드 설정도 VeryHigh 로 설정해 주어야 한다. STM32G031 SPI DMA 처기 테스트 코드 일반 SPI통신과 DMA 통신의 차이를 확인하기 위해 두가지 방식이 가능하도록 코드를 작성 했다. #define _SPI_DMA_USE1 #define hSPIhspi2 #define SPIx_TIMEOUT_MAX ((uint32_t)0x..

반응형