본문 바로가기

STM32_Study

(13)
STM32F030 I2C, UART 디자인시 주의 사항 STM32F030 I2C, UART 디자인시 주의 사항 STM32F030, STM32F050 시리즈에서 TSSOP타입의 소형 페키지는 기존 STM32F1 시리즈와 비교 했을때 약간의 핀맵 차이가 있다. 대부분의 핀은 거의 유사한데 I2C의 경우 UART와 공유하기 때문에 I2C와 UART를 동시에 사용해야 한다면 UART 핀을 리맵해서 사용해야 하므로 주의가 필요하다. PA9USART1_TX,TIM1_CH2,TIM15_BKIN,I2C1_SCL PA10USART1_RX,TIM1_CH3,TIM17_BKIN,I2C1_SDA PA13SWCLK, IR_OUT PA14USART1_TX, USART2_TX, SWCLK PA15SPI1_NSS, USART1_RX, USART2_RX, EVENTOUT STM32F103,..
STM32F439 Ehternet 테스트 STM32F439 Ehternet 테스트 STM32 시리즈에는 Ethernet 을 위한 MAC 제어기가 포함되어 있고 외부에 Ethernet PHY만 연결하면 간단히 Ethernet 을 위한 제어가 가능하다.STM32F439 EVM 보드에는 기본적으로 핀수가 줄어드는 RMII방식의 PHY가 포함되어 있고 경우에 따라서 기존에 제작해 둔 MII, RMII 모듈을 연결할 수 있는 커넥터가 있어 다양한 방법으로 이더넷 테스를 할 수 있다.(참고로 STM32F439 EVM 보드에 내장되어 있는 PHY는 "Low deterministic latency supports IEEE1588" 를 지원하는 TI의 TLK106를 사용하였다.) Ethernet Phy 연결하는방식에 따라 MII, RMII Mode로 가능하며 ..
[STM32F4] I2C 테스트 - 3축 가속도 센서 TFT LCD 출력 [STM32F4] I2C 테스트 - 3축 가속도 센서 TFT LCD 출력 3축 가속도 센서를 테스트 해야할 일이 있어 STM32F407 보드를 이용하여 I2C 테스트를 해보았다. 기존 STM32F103 I2C 테스트 코드과 크게 차이 없이 테스트 가능했다. [EXP-NET EVM] 보드에는 I2C(SPI)로 연결되는 자이로, 가속도, 온도, 압력 센서등의 모듈을 연결할 수 있는 표준핀맵 커넥터가 있다. SM-Type EVM 에는 핀 8번에, M-Type EVM에는 핀 13번에 각각 CS핀이 할당되어 있다. STM32F4 I2C테스트 동영상STM32F407 을 이요하여 3가속도 센서의 데이터를 TFT-LCD에 그래프로 표시하는 테스트 예제 STM32F4 I2C 초기화 코드void i2c_init1(unsi..
[STM32F4 ] PLL 설정 [STM32F4 ] PLL 설정 STM32F4 의 최대 동작 속도는 168Mhz이다. SystemInit() 함수를 이용하여 PLL을 설정 가능하고 startup_stm32f4xx.s 에서 초기화시 실행된다. 외부 입력 클럭은 8Mhz로 설정했다. #if !defined (HSE_VALUE) #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */ #endif /* HSE_VALUE */ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */ #define PLL_M 8 void SystemInit(void) { /* FPU settings -------------..
[STM32F4] GPIO 테스트 [STM32F4] GPIO 테스트 STM32F103과 하드웨어 적으로 크게 변경된 것이 없지만 소프트웨어 적으로 약간의 변경이 있는것 같다. 대부분의 코드는 호환 되지만 기능이 약간 추가되고 레지스터명이 조금 변경 된것 같다. STM32F4 에서는 GPIO 제어 레지스터가 변경되어 약간 수정 해 주었다. //#define sbi(Port, Bit) Port->BSRR = Bit //#define cbi(Port, Bit) Port->BRR = Bit #define sbi(Port, Bit) Port->BSRRH = Bit #define cbi(Port, Bit) Port->BSRRL = Bit STM32F4 GPIO 설정 HAL 드라이버 코드 //--------------------------------..
STM32 Infomation block 내부 EEPROM처럼 사용하기 STM32 Infomation block EEPROM처럼 사용하기 STM32는 AVR과 달리 내부 EEPROM이 없다. 대신 내부 플래시를 EEPROM처럼 쓸 수 있다고 한다. 제작한 보드에 ID를 부여해 인식하려고 하는데.. 데이트시트를 보면 내부 영역중 Information block 이 있다. 이부분은 ST에서 제공하는 플래시 프로그램으로 제어 가능하기 때문에 PC 소프웨어 부담없이 가능할것 같다. Option Byte 영역을 수정하여 ID를 부여해 보도록 하겠다. Flash Loder에서 Edit Option Byte를 선택하여 수정할 수 있다. Option Byte에서 Byte for user data storage 부분을 FF에서 EC로 변경하고 저장한다. 이제 펌웨어에서 이부분을 읽어서 ID..
STM32 SPI Slave Mode 테스트 STM32 SPI Slave Mode 테스트 SPI Slave통신에 시간을 많이 까먹었는데... 아무튼 아래와 같이 해결 했다. Master로 부터 데이터 수신클럭 받고 SPI_I2S_ReceiveData()로 데이터를 받아주어야 했는데... 이부분을 생각 못해서 데이터가 이상하게 출력되었다. //SPI Master로 부터 클럭이 들어오면 데이터 받고 while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET); temp = SPI_I2S_ReceiveData(SPI2); //DebugPrint("SPI2 RX:%02X\r\n", temp); //원하는 데이터를 보낸다. //Send SPI2 data SPI_I2S_SendData(SPI2, cnt++..
SysTick 인터럽트 사용 하기 SysTick 인터럽트 사용 하기 Cortex-M3코어 내부에 SYSTICK 타이머가 NVIC에 직접되어 있으며 우선순위도 높고 다른칩간에 호환성에도 유리하다. 24비트 타이머 이고 클럭소스는 칩마다 조금씩 다르다고 한다. STM32의 SysTick 타이머는 ST에서 제공하는 API로 간단히 몇개 함수를 이용해 초기화 가능하다. void SysTimerInit(void) { //SysTick end of count event each 1ms with input clock equal to 9MHz (HCLK/8, default) //SysTick_SetReload(9000); //1ms SysTick_SetReload(36); //4us NVIC_SystemHandlerPriorityConfig(Syste..