STM32는 외부에서 입력된 Clock과 내부 발진회로에서 생성된 Clock을 사용하여 동작 될 수 있습니다. System clock과 Peripheral에 정확한 Clock을 설정 하기 위해 STM32 내부에서 Clock이 어떻게 공급되는지 확인할 필요가 있습니다. STM32 Clock Tree Clock Tree는 STM32 내부의 Clock흐름을 보여줍니다. 다음은 STM32F42x, 43x의 Clock Tree입니다. Clock Source에서 공급된 Clock은 PLL, Prescaler등을 거쳐 Core와 Ethernet등에 사용되며 AHB(Advanced High-performance Bus), APB(Advanced Peripheral Bus)에도 Clock을 제공합니다. STM32 Clo..
[STM32F103VCT6] FT232RL 칩으로 USART 통신 개발환경 : 컴파일러는 Keil uVision5사용 하고 miniJLINK를 이용하여 F/W 다운로드 하였다. 본 시험은 FT232RL 칩을 이용하여 RS232 to USB 통신으로 STM32F103 코어와 PC간의 시리얼 통신 테스트이다. 아래와 같이 UART1 사용 핀 GPIO_Pim_9, GPIO_Pin10을 초기화 후 USART 초기화를 실행한다. 아래와 같이 main함수를 작성하여 "Hello world"를 전송한다. USART_SendData함수는 1byte 크기의 데이터를 처리함으로 FT232RL_Send함수를 아래와 같이 작성하여 데이터를 처리하였다. USART 인터럽트사용은 USART 초기화에 아래 두 함수를 추가하고 핸들..
STM32F103VCT6 LED On/Off 제어 우선 컴파일러는 Keil uVision5 를 사용하였고, miniJLINK 를 이용하여 F/W를 다운로드 하였다. miniJLINK V2.0 Spec 📌 STM32F407 칩이 내장된 개발 보드에 F/W 다운로드를 위하여 miniJLINK V2.0을 써보기로 하였다. 아래는 devtool 에서 긁어온 miniJLINK V2.0 의 설명이다. 기능 설명 miniJLINK V2.0 는 기존의 V1.0의 최신펌웨어 mystyle1057.tistory.com PORT PD15, PD14, PD13 에 연결된 RGB LED및 PC6에 연결된 SM-1205C BUZ를 사용하였다. 아래는 GPIO 포트를 초기화하는 함수 이다. GPIO_initTypeDef는 헤더파일..
I2C Start/Stop I2C는 SCL, SDA 두 라인으로만 구성된 간단한 버스이고, 여러개의 디바이스가 동시에 연결될 수 있다. 연결된 디바이스 중에 전송을 주관하는 것은 마스터(master), 마스터의 요청에 따라 데이터를 주고 받는 것을 슬레이브(slave)라고 한다. I2C에는 마스터가 여러개 연결(multi-master)될 수 도 있는데, 이런 상황에서는 마스터간에 서로 버스를 차지하기 위한 일종의 경쟁 상황이 발생 할 수 있다. 이런 상황을 적절히 중재하는 방법을 아비트레이션(arbitration)이라고 하며, 이 때문에 마스터가, 여럿인 상황에서도 안전하게 전송이 이루어질 수 있다. 일단 마스터가 하나이고 슬레이브가 여럿인 시스템이 있다면 버스상에 아무런 데이터 전송이 업는 상태에서는 ..
I2C 오픈 콜렉터 (Open Collector) 오픈 드레인 (Open Drain) I2C 버스는 두 라인에 여러 개의 디바이스를 달 수 있다. 로직 디바이스의 출력단에는 내부의 트랜지스터가 출력 전류의 소스(source) 또는 싱크(sink)로 동작하도록 되어있다. 내부 회로를 보면 보통 트랜지스터 하나가 다른 트랜지스터를 머리에 이고 있는 모습을 하고 있어서, 이를 보통 토템폴(totem pole)구조라 한다. 이런 구조 외에 또 하나 자주 쓰이는 것이 오픈 콜렉터, 오픈 드레인 출력단이다. 오픈 콜렉터나 오픈 드레인이나 모두 같은 개념이며, 단지 로직회로가 TTL(트렌지스터를 사용)이냐 CMOS(CMOS FET 트렌지스터를 사용)이냐에 따라 구분된다. 오픈 콜렉터 구조는 위의 그림에 나타난대로 로..
[I2C 개념 정리] I2C(Inter-Integrated Cicuit)는 1980년대 필립스사가 개발한 디바이스 간의 저속 데이터 전송을 위한 버스 표준이다. AVR에서는 Tow wire라는 이름을 사용하고 있는데, 내용상 I2C와 동일하다.I2C라고 표기를 했는데, 실제로 2는 윗첨자를 올려써야하며, 자승(square)를 의미한다. 즉 읽을때 '아이 스쿼어 씨'라고 읽는다. I2C는 전형적인 버스구조로 multi-master, multi-slave를 지원하고, 하나의 버스에 최대 128개의 디바이스가 연결될 수 있다.버스는 매우 느린 편으로, 현재 5MHz 정도까지 표준이 나와있다고 하는데, 보통 100k를 저속, 400k를 고속이라고 하며,대부분 이 정도의 속도만 지원한다. AVR도 최고 속도는 4..
Keil uVision5 컴파일러를 이용한 STM32F407VET6 UART 동작 테스트 STM32F407VET6 의 UART 를 이용하여 PC와 RS-232 통신 테스트를 진행한다. 제작 보드의 UART PIN 도면은 아래와 같이 UART1-EXT : PA10, PA9, UART6-EXT : PC7, PC6 이다. main 함수와 UART 초기화 함수를 아래와 같이 구현한다. 시리얼 통신프로그램을 이용하여 아래와같이 옵션을 정의한 후 통신결과를 확인한다.