728x90

Embedded/1. STM32, Arduino 30

STM32 - I2C 이론

I2CInter-Integrated Circuit 반도체 칩과 반도체 칩간의 통신 방법으로 널리 사용된다. Data(SDA) 선과 Clock(SCL) 선 2개로만 통신이 가능하다. 주로 control용으로 사용되며 저속이기 때문에 전용 HW없이 일반 GPIO로도 구현이 가능하다. I2C는 하나의 마스터와 여러개의 Slave로 구성되어 있다.  Master의 SDA는 Slave의 SDA와 Master의 SCL은 Slave의 SCL과 연결되어 있다.또한 각각의 라인들은 Pull Up 저항에 연결되어 있다. Slave 장치에는 7bit 장치 주소가 있고, Slave 장치 내부에는 8bit or 16bit 내부 저장 영역 (또는 레지스터) 주소가 있다.위 그림은 Slave의 Address 주소와 내주 저장 영역..

STM32 - DAC (DAC를 통한 LED 밝기 조절)

DAC (Digital to Analog Converter) 디지털 신호를 아날로그로 전압 신호로 변환하는 출력 장치다. STM32F429의 DAC 특징2개(2채널)의 12비트 DAC 컨버터 - DAC1 : 출력 핀이 DAC_OUT1 (PA4)- DAC2 : 출력 핀이 DAC_OUT2 (PA5) - 다중 DAC 채널 독립 또는 동시 변환 가능하다.- 각 채널마다 DMA 가능하다.- 변환 시작을 위해 외부 트리거 신호를 사용 가능하다.- Vref+의 입력 전압도 사용 가능하다. 단일 채널 사용 시단일 DAC 채널의 경우 입력 데이터의 포맷은 3가지 방법이 가능하다.1. 8bit 오른쪽 정렬 [7:0] 비트에 데이터를 로드2. 12bit 왼쪽 정렬 [15:4] 비트에 데이터를 로드3. 12bit 오른쪽 정렬..

STM32 - ADC값에 따른 LED 점멸 (Nucleo-144용 I/O 보드)

Nucleo-144용 I/O 보드는 위와 같이 생겼고, 각 부품에 대한 포트 및 핀 번호는 위의 표와 같다. 이전 글에서 ADC를 통해 아날로그 신호를 디지털로 변환시켜 출력하는 작업을 해보았다. I/O 보드에 있는 가변 저항과 LED를 통해 ADC 결과값에 따라 LED를 점멸할 것이다. ADC : 0~4095까지 표현이 가능하다. LED = 8개0~500 : led 1 500~1000 : led 2 1000~1500 : led 3 1500~2000 : led 4 2000~2500 : led 5 2500~3000 : led 6 3000~3500 : led 7 3500~ 최대 : led 8 ADC 값이 위와 같을 때 해당 LED를 점멸하도록 할 것이다. I/O 보드의 가변저항은 PC0에 해당한다.해당 AD..

STM32 - ADC 구현 (Polling, Interrupt, DMA / 아두이노 Plotter 모드로 그래프 확인)

https://insoobaik.tistory.com/617 STM32 - ADC 이론 (DMA, ADC 함수)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.com이론에 이어서 ADC를 직접 구현해 볼 것이다.Polling, Interrupt, DMA, 아두이노 Plotter를 통한 그래프 확인을 위해 위와 같이 STM32F429, 가변저항, 아두이노를 연결한다.STM32F429와 아두이노의 경우 Analog 신호를 전달하기 위한 Pin은 A0를 사용하였다. 기본적으로 ADC1,2,3번을 사용 가능하고 ADC1의 IN3을 사용할 것이다. (빨간색으로 표시된 것은 사용할 수 없다.)Parameter Settings를 통해 파라미터 값을 설정할 수 있다.ADC..

STM32 - ADC 이론 (DMA, ADC 함수)

ADC (Analog to Digital Converter) 아날로그 신호를 디지털로 변환해주는 장치다. ADC 특징1. 3개의 ADC 컨트롤러가 있다.2. 각각 최대 12비트의 해상도를 가지고 있다. (0~4095의 디지털 값을 얻을 수 있다.)3. 최대 24개의 채널로 동시에 아날로그 신호를 24개까지 처리할 수 있다.4. 처리 속도는 7.2MSPS(Mega Sampling Per Second)의 속도로 샘플링 가능하다.Vref+, Vref- : 아날로그 신호의 음과 양의 최대 범위인 기준 전압을 입력 받는다.ADCx_IN0~15 : 총 16개의 입력을 받을 수 있다.Temp sensor : 내부에 온도센서가 있어 ADC를 통해 디지털 온도값을 받을 수 있다.ADCCLK : ADC를 동작시키는 클럭에..

STM32 - UART 구현 - (3) (Interrupt, 코드 상세 구현)

https://insoobaik.tistory.com/615  STM32 - UART 구현 - (2) (Echo, Polling 코드 상세 분석)https://insoobaik.tistory.com/614 STM32 - UART 구현 - (1)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comUART 통신은 기본적으로 8bit 데이터를 전송하기 때문에 char, uint8_tinsoobaik.tistory.comecho, polling 모드에 이어 interrupt 모드에 대해 알아볼 것이다.Interrupt 모드 Polling 모드의 경우 CPU가 주기적으로 상태를 확인하고 데이터를 처리해야 하기 때문에 사용량이 높은 반면 Interrupt 모드의 경우..

STM32 - UART 구현 - (2) (Echo, Polling 코드 상세 분석)

https://insoobaik.tistory.com/614 STM32 - UART 구현 - (1)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comUART 통신은 기본적으로 8bit 데이터를 전송하기 때문에 char, uint8_t와 같이 8bit 이하 데이터 전송만 가능하다.__io_putchar __io_putchar는 printf문을 출력하기 위한 가장 기본적인 함수다.putchar는 printf에 입력된 문자열의 문자 하나하나마다 함수가 실행된다. Transmit() 함수를 이용하여 전달받은 ch값을 UART 통신을 통해 출력한다. echo 모드 Uart의 echo 모드는 송신한 데이터를 수신 측에서 다시 그대로 송신 측으로 되돌려 보내는 모드를..

STM32 - UART 구현 - (1)

https://insoobaik.tistory.com/613 STM32 - UART 이론 - (2)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.com이론 내용을 바탕으로 UART를 구현해보겠다. Nucleo board에 MCU파트와 ST-Link 파트가 있는데 MCU의 PD8, 9는 ST-Link와 송수신을 담당하는 Pin인 것을 확인할 수 있다.기본적으로 USART3을 사용하며 비동기식 방식을 사용한다. UART 통신에 필요한 Buad Rate, Word Length 등 값을 설정할 수 있다. UART를 Polling mode로 사용할지 Interrupt로 사용할지에 따라 체크를 해주면 된다.DataSheet를 보게되면 USART3은 APB1 Bus를 ..

STM32 - UART 이론 - (2)

https://insoobaik.tistory.com/612 STM32 - UART 이론 - (1)보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.insoobaik.tistory.comUART에 대한 기본적인 이론에 이어서 STM32를 통해 UART에 대해 조금 더 자세히 알아보겠다.UART (Universal Asynchronous Receiver/Transmitter) 범용 비동기식 직렬 통신 컨트롤러PC와 타겟 보드가 통신할 때 가장 기본으로 사용하는 통신 포트다. UART는 CPU와 PC등에 기본 장착되어 있어 호환성이 좋지만 1대 1 통신등의 제한이 있어 확장성이 떨어진다. UART는 RS-232형식을 따라 총 9개의 신호선으로 구성되어 있다.그 중 2 - Received Data..

STM32 - UART 이론 - (1)

장비 간의 유선 디지털 통신 방식은 Parallel, Serial 통신이 있다.Parallel 통신은 디지털 데이터의 각 비트 별로 장비 통신 회선을 하나씩 할당하여 한꺼번에 데이터를 전송한다.Serial 통신은 모든 비트들이 공통의 선을 이용하여 순차적으로 데이터를 전송한다. UART는 시리얼 통신을 하기 때문에 시리얼 통신에 대해 자세히 알아보도록 할 것이다.장치와 장치 간의 타이밍을 결정하는 방식은 크게 두가지가 있다.1. 하나의 장치에서 하나의 비트마다 클록 펄스를 생성하고 그 신호를 다른 장치에 함께 전송하는 방법2. 장치 간에 타이밍 길이를 서로 약속한 상태에서 근사적으로 비트를 전송하는 방법 1. 방법은 클록에 의해 시간 동기를 맞추기 때문에 동기식(Synchronous)통신 방식이라하고, ..

728x90