본문 바로가기

STM32H7

(11)
STM32H7 SPI - W5500 TCP/IP 전송속도 테스트 에러 문제 해결 STM32F7 evm 보드에서 테스트 했던 W5500 소스코드를 이용하여 STM32H7 보드에서 테스트 중인데 컴파일 에러가 발생한다. STM32F7 에서 W5500제어 테스트 에서 사용 했던 코드와 동일한데 왜 에러가 발생할까? #문제발생 에러코드 설명 자원 경로 위치 유형 expected identifier or '(' before numeric constant w5500.h /ex24_spi_w5500/Src 행 70 C/C++ Problem F7 코드에서는 문제가 없었는데... 에러를 찾아 가 보니 헤더파일의 선언 순서가 문제가 된다. 같은 컴파일러 인데 왜 문지가 되지? #문제해결 w5500.c #include "w5500.h" #include "config.h" #include "config...
STMH7 EVM - USB Mass Storage Host Mode 테스트 STMH7 EVM - USB Mass Storage Host Mode 테스트 STM32H7 EVM 보드에는 USB Host 및 Device를 테스트 할 수 있는 커넥터가 있다. CubeMX로 USB HOST 모드 설정 USB_HOST 모드설정을 Mass Storage Host Class 로 설정한다.VBUS 파워 공급을 GPIO로 설정 할 수도 있지만 이번에는 그냥 하드웨어 적으로 Host Mode 고정으로 전원을 강제로 공급하도록 했다. CubeMX에서 FATFS 설정은 USB Disk로 설정한다. 이렇게 CubeMX 설정으로 마무리 하여 코드를 생성하면 대부분 자동으로 생성이 된다.생성된 코드에서 수정 할 부분을 usb_host.c 파일의 USBH_UserProcess() 함수에 추가하면 된다. ma..
STM32H7 CubeMx SD Card Test STM32H7 CubeMx SD Card Test [STM32H7 EVM] 보드에는 4bit SD 인터페이스가 있어 SD카드 FAT 연결 테스트를 Stm32CubeMx를 이용하여 해 보았다. 우선 SD카드는 하드웨어 적으로 STM32H7의 디폴트 SDMMC1에 연결되어 있다. STM32H7 EVM보드는에 아래면에 SD소켓이 장착되어 있다. STM32CubeMx 를 이용하여 SDMMC1을 SD 4bit 모드로 선택한다. Middleware 탭의 FATFS에서 Mode를 SD Card로 선택 한다. 이렇게 해서 기본으로 코드 생성하면 아래와 같은 코드가 생성 되는데... 주의 해야 할 사항은 bsp_driver_sd.c 파일에 있는 BSP_SD_Init() 함수를 호출 해 주어야 한다는 것이다. int ma..
STM32H7 EVM - 이더넷 테스트 (TCP/IP전송 속도 테스트) STM32H7 EVM - 이더넷 테스트 (TCP/IP전송 속도 테스트) STM32H743의 경우 100핀 페키지에 이더넷을 지원하고 480Mhz로 동작 하기 때문에 작은 사이즈에 고성능 이더넷이 필요한 어플리케이션에 사용하기에 좋을것 같다. STM32H7 EVM 보드에는 Ethernet PHY 모듈을 연결할 수 있어 STM32H7 의 Ethernet을 연결을 할 수 있다. Ethernet PHY 모듈 핀맵 먼저 STM32CubeMx 로 Connectivity -> ETH 탭에서 RMII 모드로 설정해 준다. Middleware -> LWIP 탭에서 TCP/IP stack 를 설정해야 하는데... 활성화가 안되어 있다. SYS탭에서 DCache를 Enable 해야 활성화가 된다. DCashe 도 설정 해 ..
STM32H7 Timer 테스트 - 1초 만들기 (내부 클럭 vs 외부클럭) STM32H7 Timer 테스트 - 1초 만들기 (내부 클럭 vs 외부클럭) 별다른 기능이 없는 TIMER6을 사용하여 테스트 해 보자 CubeMX 에서 세팅 인터럽트 체크하고... 생성된 코드에서 stm32h7xx_it.c파일을 보면 TIM6_DAC_IRQHandler()가 생성되어 있고 인터럽트 발생시 마다 HAL_TIM_IRQHandler() 함수를 호출한다. void TIM6_DAC_IRQHandler(void){ /* USER CODE BEGIN TIM6_DAC_IRQn 0 */ /* USER CODE END TIM6_DAC_IRQn 0 */ HAL_TIM_IRQHandler(&htim6); /* USER CODE BEGIN TIM6_DAC_IRQn 1 */ /* USER CODE END TIM..
STM32H7 FMC - TFT LCD 출력하기 (STM32F7 FMC와 다른점) STM32H7 FMC - TFT LCD 출력하기 (STM32F7 FMC와 다른점) STM32H7 EVM 보드에는 FMC를 이용하여 기존에 제작 해 두었던 TFT LCD 모듈을 연결할 수 있도록 구성하였다. STM32H7에서 FMC로 TFC LCD 테스트를 진행 해 볼 수 있다. STM32H7 의 FMC는 Data(16), WR, RD, CS, A16 핀을 할당 할 수 있다.메모리 맵핑은 기존 STM32 시리즈와 동일하게 0x6000 0000 에 가능하다. STM32CubeMX에서 FMC 설정을 LCD Interface 타입으로 설정하여 코드 생성 한다. STM32H7 FMC 기본 동작 테스트FMC 제어를 위해 STM32CubeMx의 HAL 라이브러리가 제공된다. uint8_t BSP_SRAM_WriteD..
STM32H7 CubeMx를 이용한 PWM출력 테스트 - 1Mhz PWM STM32H7 CubeMx를 이용한 PWM출력 테스트 - 1Mhz PWM STM32CubeMx를 실행해 프로젝트 생성후 핀맵 할당한다.STM32H7_EVM 보드의 TIM2_CH1(PA5)에 PWM출력 되도록 했다. TIM2에서 PWM 모드 설정해 주면 된다. STM32H7 CubeMx 프로젝트 생성후 아래와 같이 HAL코드(HAL_TIM_PWM_Start 함수)로 PWM 출력을 시작 할 수 있다. HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); //주파수 편경 TIM2->ARR = 100-1;// 100 x 5ns //펄스폭 가변 TIM2->CCR1 = 50-1; 생성된 코드를 돌려보면 PWM이 2Mhz로 출력이 된다.뭐가 설정이 잘못 되었나?APB2 클럭 최대가 100Mhz로..
STM32H7 vs STM32F7 MCU성능 테스트 - FPU 성능테스트 STM32H7 vs STM32F7 MCU성능 테스트 - FPU 성능테스트 STM32H7 GPIO 토글 속도 테스트 결과에서 STM32H7의 버스 구조의 특성상 GPIO접근에 속도 제한이 있다는 것은 확인 했는데 그렇다면 CPU부하를 걸어 속도 체크를 해 보면 루프 성능을 확인 할수 있을것 같다. FPU를 사용할수 있도록 루트처리 함수를 이용해 수행 속도를 측정해 보았다. #include volatile double sq_result; int i; while (1) { GPIO_TEST_PORT->BSRR = GPIO_TEST_PIN; d = 0; for(i=0;iBSRR = (uint32_t)GPIO_TEST_PIN