STM32
Arduino to STM32
https://rorsi.tistory.com/38 STM32 to Arduino이번에는 STM32 MCU에서 Arduino로 Uart 통신하는 방법에 대해서 알아보고자 한다. 사용하는 STM32 MCU는 Nucleo-411RE이고 Arduino는 Nano를 사용한다. Nucleo-411RE에 대한 자세한 설명은 블로그에 정리해두었으..rorsi.tistory.com에 이어서 이번에는 반대로 Arduino에서 STM32로 데이터를 전송해 본다. IDE 설정은 전과 똑같이 해주고 코드를 수정해준다. /* USER CODE BEGIN WHILE */ uint8_t a; uint8_t b = 'B'; while (1) { if(HAL_UART_Receive(&huart1, &a, sizeof(a)..
STM32 to Arduino
이번에는 STM32 MCU에서 Arduino로 Uart 통신하는 방법에 대해서 알아보고자 한다.사용하는 STM32 MCU는 Nucleo-411RE이고 Arduino는 Nano를 사용한다. Nucleo-411RE에 대한 자세한 설명은 블로그에 정리해두었으니 확인하면 된다.https://rorsi.tistory.com/29 Nucleo-f411reSTM32 Nucleo MCU 의 최소 기능만으로 구성된 개발 보드로 ST사에서 제작한 개발 보드이다. 개발 측면에서는 대부분의 Port에 1:1로 매칭되도록 많은 확장핀을 할당하여 개발편의성을 확실히 제공해rorsi.tistory.com 우선 보드와 보드끼리 점퍼선을 이용하여 연결해준다. Nucelo-F411RE 보드의 PA10(RX)와 Nano 보드의 D1(..
B-L475E-IOT01A
Discovery kit NUCLEO보다는 마이너하지만 그래도 많많찮은 저렴한 가격과 종류를 가지고 있다. 주로 녹색 PCB로 생산되며 NUCLEO와는 다르게 디버거 파트를 따로 잘라내기 힘들다. 다만 ST-LINK/DISCOVERY 변환 점퍼와 핀헤더는 NUCLEO와 동일하게 유지되고 있어서 ST-LINK로도 활용할 수 있다. NUCLEO는 보드 내장 주변장치가 상대적으로 빈약하여 사용자의 디바이스 추가 연결에 의존하는 비율이 높은데 비해 DISCOVERY 계열은 주변장치가 좀 더 많이 포함되고 별도 인터페이스 규격의 도터보드 형태로 확장할 수 있는 경우가 많다. 대신에 가격대도 NUCLEO보드들 보다 높은 편에 속한다. 마이크로컨트롤러 기능 STM32L475VGT6 in LQFP100 package ..
Nucleo-f411re
STM32 Nucleo MCU 의 최소 기능만으로 구성된 개발 보드로 ST사에서 제작한 개발 보드이다. 개발 측면에서는 대부분의 Port에 1:1로 매칭되도록 많은 확장핀을 할당하여 개발편의성을 확실히 제공해 주고, 아두이노의 핀헤더 규격까지 지원해 주는 데다가 무엇보다도 동사의 ST-LINK 다운로더/디버거가 보드에 기본으로 포함된다. 때문에 개발 편의성과 범용성이 매우 높은 주제에 가격까지 저렴하다.대체로 아두이노 방식의 확장 핀헤더와 STM32방식의 확장 핀헤더를 동시에 제공하는데 이러한 확장헤더에 아두이노 용으로 널려있는 센서모듈이나 모터구동모듈 등을 바로 끼우거나 점퍼와이어로 연결하면 제품개발 검증에 필요한 간단한 프로토타입을 순식간에 구성할 수 있다마이크로컨트롤러 기능LQFP64 패키지의 ST..
STM32_RPI4_thingspark
이번에는 AWSIOT가 아닌 thingspark에 데이터를 전송해보겠습니다. STM32 설정은 전에 했던 실습과 동일합니다. https://rorsi.tistory.com/22?category=534836 thingspark란 the K system에서 만든 IOT Cloud Service로 여러 센서 데이터를 모으고 바로 차트를 확인할 수 있습니다. RESTFull, MQTT, WebSocket등을 지원합니다. https://www.thingspark.co.kr/ thingspark - IoT 데이터 수집,분석 및 활용 thingspark에서 IoT 데이터 수집, 분석 및 활용해보세요. thingspark는 개방형 IoT 플랫폼입니다. www.thingspark.co.kr thingspark 홈페이지에..
STM32_RPI4_AWS IOT
STM32 Device에서 Rpi4(라즈베리파이 4)를 거쳐 AWSIOT까지 무사히 전송해보는것을 소개하고자 합니다. 우선 본문에 사용되는 STM32 Device는 STM32L475VGT6칩을 사용하는 B-L475E-IOT01A1입니다. STM32 Project 생성 STM32CUBEIDE를 통해 Project를 생성하면 다음과 같은 창이 나오게 되는데 Board Selector를 클릭해준뒤 보드 모델을 검색해줍니다. 해당 보드를 찾았다면 Next 버튼을 눌러줍니다. 원하는 Project명을 정한뒤 Finish를 누르면 다음과 같은 창이 나오게 되는데 Yes를 눌러줍니다. 그러면 모든 핀들이 활성화된 상태로 설정이 됩니다. 이어서 라즈베리파이와 uart 통신을 하기 위해서 uart4를 활성화 시켜주고 B..
STM32CubeIDE에서 FreeRTOS중 printf 오류 해결
STM32를 사용하여 FreeRTOS를 작성할 때에 코드에서 printf를 수행할 때 특정 경우에 오류가 발생(코드가 제대로 출력이 안된다거나, hardfalut)하는 것을 볼 수 있다. 또는 malloc을 사용하여 큰 용량의 데이터를 Heap에서 확보하고자 할때 오류가 발생한다. https://github.com/mpaland/printf GitHub - mpaland/printf: Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test s Tiny, fast, non-dependent and fully loaded printf implementation for embedded..
ARM 이란
ARM이란 Adavanced RISC Machine의 약자로 CPU의 한 종류입니다. ARM 프로세스 1985년 최초 에어콘 컴퓨터스(Acorm Computers)사에서 ARM 프로세서 개발. 1990년, 애플과 VLSI합작해서 ARM 회사설립 저전력, 32bit-RISC의 고효율, 낮은 가격이 특징 소형 디바이스, 모바일 단말기 등에서 강점을 드러냄 ARM 프로세스와 상대적인 개념으로 인텔 프로세서가 있다. ARM은 fabless 기업으로 공장이 없고 설계만 한다. ARM의 설계를 바탕으로 반도체 회사에서 주변장치를 더해 반도체 칩을 생산한다. (Apple, Samsung, IBM, NVIDIA 등) 설계한 프로세스에 대한 라이센스로 수익을 창출한다. 2016년, 소프트뱅크가 IoT산업의 대박 성장을 ..
GPIO_LED_수동제어2
이전에 수동제어1에서 했던거를 이어서 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_LED_Pin; //PC13 1 Pin)); assert_param(IS_GPIO_MODE(GPIO_Init->Mode)); /* Configure the port pins */ while (((GPIO_Init->Pin) >> position) != 0x00u) { /* Get the IO position */ ioposition = (0x01uL Pin) & ioposition; if (iocurrent == ioposition) { /* Check the Alternate function parameters */ assert_param(IS_G..
GPIO_LED_수동제어1
STM32CubeIDE에서는 HAL 드라이버를 통해 편하게 GPIO를 간편한 코드로 제어할 수 있다. 이번에는 그 원리를 알아내어 GPIO를 수동으로 제어하는 방법에 대해 알아보고자 한다. LED 핀은 PC13에 GPIO_OUPUT 연결되어 있는 상태로 진행한다. static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin..