본문 바로가기

Robot/임베디드6

[STM32] CORDIC 가속기 CORDIC 기초 COordinate Rotation DIgital Computer의 약자로, 덧셈과 시프트 연산으로만으로 빠르게 삼각함수를 구할 수 있도록 하는 알고리즘입니다. 1959년 Jack Volder에 의해 고안되었으며, 이에 Volder's algorithm라는 명칭으로 불리기도 합니다. ST사의 MCU 중 STM32G4 시리즈, STM32U5 시리즈, STM32H5와 STM32H7의 일부 제품이 해당 가속기를 내장하고 있습니다. ST칩 내부의 CORDIC 연산기는 BLDC 모터 제어에서 FOC 알고리즘 계산 시, 삼각함수를 도출해내기 위해 주로 사용되며, 그외에 쌍곡선함수, 루트, 자연로그 처리 가속에도 사용될 수 있습니다. 알고리즘의 기본 아이디어를 대략적으로 표현하자면 다음과 같습니다... 2023. 10. 8.
[STM32] printf와 float 출력하기 Printf추가하기 다음 부분을 코드에 추가한다. /* USER CODE BEGIN 0 */ #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /** * @brief Retargets the C library printf function to the USART * @param None * @retval None */ PUTCHAR_PROTOTYPE{ if (ch == '\n') HAL_UART_Transmit(&huart2, (uint8_t*)"\r", 1, 0xFFFF); HAL_UART_Transmit(&huart2.. 2022. 3. 17.
[RTOS] 개발 환경 구성 개발환경 - 리눅스 20.04 크로스 컴파일러 설치하기 ARM용 펌웨어를 만들기 위해서는 ARM용 컴파일러가 있어야한다. 따라서 크로스 컴파일러를 다운로드하자. gcc-arm을 하고 탭탭 누르면 $ sudo apt install gcc-arm- gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf gcc-arm-none-eabi gcc-arm-none-eabi-source 아래 패키지들이 나온다. linux 또는 none이라는 이름이 있다. Linux는 ARM용 리눅스의 실행 파일을 만들 때 쓰는 것이며, none은 플랫폼이 없다는 의미이다. none은 날것의 ARM 바이너리를 생성한다는 의미이다. 그 뒤에 gnueabi, eabi가 있다. 이는 ABI는 Application.. 2022. 2. 23.
[STM32] Microsecond Delay 생성 HAL_Delay 함수는 최소 1ms만 지원한다. 따라서 이보다 더 작은 1ns 나 1us를 생성하기 위해서는 별도의 함수를 정의해야한다. 여기서는 타이머 기능을 이용하여 1us 딜레이 생성을 목표로 한다. 타이머 설정 어느 타이머를 설정할 것인가를 선정한다. 일단 timer1를 사용하기로 결정. 사진은 STM32F103의 다이어그램이다. TIM1 은 APB2 블록에 연결된 것을 알 수 있다. CUBE IDE에서 APB264의 클락은 64MHz 인 것을 확인할 수 있다. TIMER1 은 64MHz로 설정되어있다는 뜻이다. Pinout & Configuration에서 TIM1의 Clock Source를 Internal Clock으로 하여 내부 클락으로 변경한다. 64MHz는 64 x 10^6Hz이다. 따라.. 2022. 2. 23.
[STM32] Serial 통신 - UART UART - Universal Asynchronous Receiver/Transmitter USART - Universal Synchronous/Asynchronous Receiver/Transmitter 동기화 클락의 유무로 UART, USART가 나뉜다. UART는 비동기 직렬 데이터 송수신, USART는 동기식 직렬 데이터를 송수신한다. 따라서 동기작업을 위해 USART는 클락 신호를 전송한다. USART - 데이터 송수신 효율이 높음 - Clock을 사용하기 때문에 데이터가 고정속도로 전송됨 - 데이터를 블록 형태로 전송 - 비동기에 비해 높은 데이터 전송 속도를 가짐 - Clockl핀 추가로 구조적 난이도 및 비용 상승 UART - 데이터 시작을 알 수 없어 시작 비트와 정지 비트가 필요함 - .. 2022. 2. 23.
[STM32] 데이터 시트 읽기 데이터 시트는 아래 주소에서 혹은 STM32CubeIDE의 Tool 칸에서 얻을 수 있습니다. https://www.st.com/resource/en/datasheet/cd00161566.pdf 제목 제목의 제일 상단에 STM32F103x8 와 STM32F103xB 두 모델에 대한 데이터시트라는 것을 확인 가능합니다. 코어의 성능이 동일하기 때문에 같은 묶음으로하여 설명합니다. Medium-density performance line ARM ® -based 32-bit MCU with 64 or 128 KB Flash F1은 STM32 시리즈 중 중간 레벨의 퍼포먼스를 나타냅니다. 상위 퍼포먼스 라인업에는 F7, F4 모델이, 하위 퍼포먼스 라인업에는 L0, L1 시리즈 등이 있습니다. USB, CAN,.. 2022. 2. 19.