본문 바로가기

[ST_MICRO]

(264)
STM32F401 - ST의 저렴한 Cortex-M4 STM32F401 - ST의 저렴한 Cortex-M4 ST에서 저렴한 Cortex-M4코어를 출시 했다. 최대 84Mhz로 동작하고 저렴한 가격으로 FPU가 필요한 어플리케이션에 적용하도록 타겟하고 있다. 기존 STM32F4x 시리즈와 핀맵 호환하면서 가격및 성능을 줄인 버전으로 초기에 STM32F4로 개발하고 양산으로 STM32F401로 적용하면 좋을것 같다. 물론 하드웨어적으로 약간의 수정이 필요하다. 소매점에서 5천원대 이므로 양산구매시는 상당히 저렴해 질수 있을것 같다.
STM32 내부클럭 사용하기 STM32 내부클럭 사용하기보드 단가를 낮추기 위해서는 내부 오실레이터를 이용하면 좋은데 특히 STM32F100 시리즈는 저렴하기 때문에 보드 단가 측면에서 내부 오실레이터를 사용하는것이 유리하다. 다만 디폴트가 PLL클럭의 1/2이다.따라서 최대 64Mhz로 구동 하므로 주의가 필요 하다. (외부 8Mhz 구동시 최대 72Mhz로 구동가능하다.) PLLCLK = 8MHz/2 * 16 = 64 MHz /* PLL entry clock source */#define RCC_PLLSource_HSI_Div2 ((u32)0x00000000)#define RCC_PLLSource_HSE_Div1 ((u32)0x00010000)#define RCC_PLLSource_HSE_Div2 ((u32)0x00030000)..
STM32F429 180Mhz 클럭 구동 설정 STM32F429 180Mhz 클럭 구동 설정 STM32F429는 180Mhz까지 구동 가능하다. 기존 STM32F4 코드 system_stm32f4xx.c 파일에서 수정가능하다. #if _USE_MAINCLK_168MHZ// 168Mhz#define PLL_N 336 uint32_t SystemCoreClock = 168000000;#endif #if _USE_MAINCLK_180MHZ// 180Mhz#define PLL_N 360 uint32_t SystemCoreClock = 180000000;#endif
STM32F4 타이머 인터럽트 테스트 - 1초 만들기 STM32F4 타이머 인터럽트 테스트 STM32F4에서 TIM2, TIM5는 32bit 타이머 모드를 지원한다. 이를 이용하여 1초 만들기 테스트를 해 보았다. STM32F4 타이머 인터럽트 초기화 함수void TimerInit2(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; uint16_t PrescalerValue = 0; NVIC_InitTypeDef NVIC_InitStructure; /* TIM2 clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /* TIM2 gloabal Interrupt 초기화 */ ..
STM8S - 타이머 테스트 (1초 만들기) STM8S - 타이머 테스트 (1초 만들기) 마이컴 다루면서 가장 기본으로 필요한 타이머 인터럽트인데, STM8S에서 타이머 인터럽트를 어떻게 제어 하는지 테스트 해 보았다. STM8S 타이머 구조STM8S는 3개의 타이머가 있다. TIM4 는 8bit 베이직타이머로 일반 시간 계산하는데 사용하면 편리하다. Auto-reload 기능이 있어 한번만 설정하면 계속해서 자동으로 타이머 설정이 가능하다. 동급의 AVR에서는 이 기능이 없어서 인터럽트가 걸릴때 마다 매번 갱신해 주었어야 했었다. 메인클럭이 16Mhz 이므로 프리스케일로 1/128 하면 125khz가 되고 이는 8us 마다 한번씩 카운트 된다.1초를 만드려면 1000ms/8ms -> 125번 만다 한번씩 인터럽트 걸리도록 하면 된다. ST제공 예..
STM8S - PWM테스트 (DC모터 속도 제어) STM8S - PWM테스트 (DC모터 속도 제어) 16비트 타이머 TIM1, TIM2를 이용하여 PWM출력을 각각 4, 3채널씩 출력 가능하다. 그리고 특이사항으로 PD4는 BEEP 핀이고 1, 2 , 4 kHz 로 사운드 출력을 할수 있다. (이 기능을 사용하려면 옵션비트 AFR7 을 리맵해야 한다고 한다.)PC6(HS)/SPI_MOSI [TIM1_CH1] PC7(HS)/SPI_MISO[TIM1_CH2] PC3(HS)/TIM1_CH3/[TIM1_CH1N] PC4(HS)/TIM1_CH4/CLK_CCO/AIN2/[TIM1_CH2N] PD4(HS)/TIM2_CH1/UART1_CK/BEEP PD3(HS)/TIM2_CH2/AIN4/ADC_ETR PA3(HS)/TIM2_CH3/[SPI_NSS] PC5(HS)/SP..
STM8S - ADC 테스트 STM8S - ADC 테스트 STM8S 는 10bit SAR ADC가 내장되어 있고 fADC = 1 to 4 or 6 MHz 로 동작한다. STM8S003F3 의 경우 VREF는 VDD이다. 저렴한 만큼 ADC의 성능은 기대할 수준은 아닌것 같다.LPC812와 같이 ADC없는것 보다는 나은것 같다. STM8S ADC 블록도STM8S003F3에서 ADC관련 핀맵은 아래와 같고 UART를 제외 하면 실제 2채널을 할당 할 수 있다.STM8-SS EVM에서는 ADC가 PD2/AIN3에 연결되어 있다. ADC테스트는 가변저항에 따라 변화되는 ADC값을 LCD에 표시하는 예제를 작성해 보았다. PD2(HS)/AIN3PD3 (HS)/AIN4/TIM2_CH2/ADC_ETR PD5(HS)/AIN5/UART1_TXPD6..
STM8S - SPI 테스트 STM8S - SPI 테스트 STM8S의 SPI는 최대 클럭 스피드 10Mhz로 동작한다. 동급의 8bit MCU인 AVR과 비교하면 조금더 성능이 좋아 보인다.S-Type EVM 보드를 이용하여 SPI인터페이스의 가속도센서를 테스트 해 보았다. STM8S SPI블록도8bit MCU의 전형적이 SPI구조 이고 AVR과 비교 했을때 큰 차이가 없어 보인다. STM8S SPI초기화 함수void SPI0_Init(void){SPI_DeInit();SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_32, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_LOW, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLE..