본문 바로가기

[ST_MICRO]

(291)
[STM32C011 SSP] I2C 테스트시 주의사항 - PCF8574, SSD1306 구동하기 STM32C011 SSP EVM 보드에서 Arduion코드가 동작 하기 때문에 다양한 라이브러리를 지원하는 I2C 테스트를 진행해 보자.확장 테스트 보드에서 I2C는 아래 핀맵으로 할당되어 있다. PCF8574 테스트 보드를 SSM_EVM 확장 커넥터에 연결하여 간단하게 I2C GPIO테스를 해 보자.#include #define PCF_8574_ADDR 0x20void write8(uint8_t Address, uint8_t Value){ Wire.beginTransmission(Address); Wire.write(Value); Wire.endTransmission();}void setup() { //Serial.begin(115200); //Serial.println("P..
[STM32C011 SSP] Arduino에서 UART 핀 설정 문제 Arduino 에서 STM32C011J 의 UART 테스트시 출력이 정상적으로 되지 않는다.디폴트 C011J(4-6)M\variant_generic.h 파일을 보면 UART는 PA0, PA1에 할당되어 있다.#ifndef PIN_SERIAL_RX #define PIN_SERIAL_RX PA1#endif#ifndef PIN_SERIAL_TX #define PIN_SERIAL_TX PA0#endif PB7(PC25)로 설정해서 사용하고 싶은데... 확인해 보니 HAL_SYSCFG_SetPinBinding 함수로 핀 재정의 해 주어 한다. 핀 하나에 다양한 기능이 있는 칩을 설정할 수 있는것 같다. 주의 setTx 함수로 핀맵 설정은 serial begin 호출 전에 설정되어..
[STM32C011 SSP] Arduino 에서 NeoPixel WS2812 제어 STM32C011J는 8핀 SOIC 패키로 작고 간단하게 사용하기 좋다. 그런 의미에서 Arduino가 지원 되면 펌웨어도 쉽고 빠르고 간단하게 작성해서 테스트 할 수 있을것 같다. Arduino에서 "Generic STM32C0 series" 를지원하고 C011J4Mx, C011J6Mx 를 선택 할 수 있다. NeoPixel 모듈은 SSM Type EVM 핀맵으로 제작된 WS2812 SSM Module 보드를 이용하여 테스트 하였다.제어 핀은 PA8의 PWM 출력을 이용하고 WS2812 모듈의 SO 입력핀에 연결 되도록 하였다. 기존에 테스트 했던 NeoPixel 예제를 구동해 보면 문제 없이 정상 동작 하는것을 확인 할 수 있다.#include #include #define PIN ..
[STM32C011 SSP] 저전력 (STOP Mode) 동작 테스트 STM32C0 시리즈는 비용 효율적인 범용 MCU임에도 불구하고, 다양한 저전력 모드를 통해 에너지 효율을 극대화할 수 있다고 한다. 저전력 모드 설정에 따라 아래와 같이 소모 전류를 줄일 수 있다. 각 저전력 모드의 주요 특징은 아래와 같다.Sleep Mode: CPU 코어만 멈추고 모든 주변 장치(Peripheral)는 계속 작동하므로, 인터럽트 발생 시 즉각적으로 복구할 수 있다.Stop Mode: 시스템 클럭(PLL, HSI, HSE 등)이 모두 꺼지지만 RAM의 내용은 보존된다. 저전력 애플리케이션에서 가장 빈번하게 사용되는 모드.Standby/Shutdown Mode: 전압 레귤레이터가 꺼지며 RAM 데이터가 손실(단, 특정 레지스터는 유지 가능). 깨어날 때는 시스템 리셋과 유사하게 동작..
[STM32C011 SSP] SMT32C0 내장온도 센서를 이용한 PID 온도 제어 내부 온도 센서 테스트를 이용하여 온도 출력을 시도 하는데…기존에 테스트 했던 STM32G0 내부 온도 테스트 예제를 적용하면 온도가 변하지 않는것 같다. uint16_t cal1 = *((uint16_t*)0x1FFF75A8);uint16_t cal2 = *((uint16_t*)0x1FFF75CA);int32_t get_temp_manual(uint16_t adc_raw){ int32_t v30_adc = 943; int32_t slope_x1000 = 3140; int32_t temp_x100 = ((adc_raw - v30_adc) * 100000) / slope_x1000 + 3000; return temp_x100;} 뭐가 문제 일까? STM32C0 ADC 관련..
[STM32C011 SSP] STM32C011J PWM 테스트 STM32C011는 핀수도 작고 저렴해서 간단한 팬모터 제어용으로 사용하기에 딱 좋은 솔루션이 될 수 있을것 같다.STM32C011을 이용해서 PWM출력으로 팬모터를 구동해 보자. 기존에 테스트 했던 STM32C011의 ADC 테스트 프로젝트에서 PA8에 TIM1_CH1 PWM채널을 설정한다. 기본 내장 클럭 12Mhz에서 Prescaler 12로 설정해 1Mhz 를 타이머 입력 클럭으로 하고 Counter Period를 1000으로 설정해 1Khz PWM 주파수를 설정한다. STM32CubeIDE 설정 완료후 생성된 코드에서 HAL_TIM_PWM_Start함수로 PWM 출력을 시작하고 가변저항의 ADC값에 따라 __HAL_TIM_SET_COMPARE 함수로 PWM 값을 출력하면 FAN모터의 ..
[STM32C011 SSP] STM32C011J ADC 테스트 STM32C011 보드를이용하여 가변저항의 전압값을 ADC로 읽어 PWM출력로 모터 속도 제어를 하는 간단한 프로젝트를 진행하기 위해 ADC를 테스트해 보자.우선 ADC입력값을 UART로 출력해서 값을 확인해 보자.UART 출력값을 확인하기 위해 기존에 제작했던 시리얼 FND 모듈에 값을 출력해서 표시 해 보는것이 좋을것 같다. STM32C011J UART 테스트 예제에서 사용했던 코드에서 ADC를 추가하고 ADC관련 설정을 해 준다. ADC 관련 기본값으로 설정하고 저장하면 자동으로 코드가 생성된다. 설정한 ADC 채널의 ADC 값을 polling 방식으로 가져오는 GetAdcValue 함수를 생성한다.unsigned int GetAdcValue(uint32_t channel){ ADC_Channe..
[STM32C011 SSP] UART 테스트 중 문제 발생 - STM32G0 와 차이점 발견 STM32C011J는 8핀 SOIC 타입으로 간단한 프로젝트에 적용하기 좋은데 특히 UART로 상태 정보를 전달하는 용도로 사용하기 좋은것 같다. 예전에 제작했던 STM32G030J SSP-EVM 보드와 핀맵이 동일하므로 칩만 변경해서 간단히 테스트 해 볼 수 있을것 같다. 앞으로 STM32C011 SSP EVM 보드와 확장 테스트 보드를 이용해서 다양한 테스트를 진행해 보자.우선 가장 기본이 되는 UART 테스트를 해 보자. 그런데 기존 STM32G030J 에서 잘 사용 했던 UART코드가 정상적으로 동작하지 않는 현상이 발생했다.4번 핀을 RX로 사용하면 UART 인터럽트 수신시 리셋이 걸리는 현상이 발생하고 있음1번 핀을 RX로 사용하면 정상 동작 하지만 TX가 되지 않음RX, TX핀을 자유롭게..