본문 바로가기

Embedded system9

Bus 정리 BUS CPU에서 메모리나 입출력기기에 데이터 송출/ 데이터 읽기, 양방향버스 AMBA (Advanced Microcontroller Bus Architecture) ARM사의 BUS Protocol - AHB (Advanced High Performance BUS) 고속으로 동작하는 장치들이 연결된 버스 Multiplex Bus 기반 (주소라인, 제어라인, 데이터라인 모두 공유) - ASB (Advanced System Bus) 고속으로 동작하며 AHB와는 달리 Rising edge와 Falling edge 모두 사용 주소, 제어, 데이터라인 모두 분리 - APB (Advanced Peripehral Bus) 비교적 느린 속도의 주변장치를 제어, 전력 소모를 위해 간단한 인터페이스 가짐 - AXI(Ad.. 2023. 3. 14.
os 카테고리를 만든 것에 대하여 오랜만에 블로그에 들어왔다. 갓생을 사느라 너무 바빴다. 난 펌웨어 개발자로 취직했다. C언어만 잘하면 되니 얼마나 장땡인가? (그나마 자신있는 언어) 하지만 현실은 달랐다. 내가 학부시절 가장 싫어했던 과목이 딱 두가지가 있다. 하드웨어 과목(논리회로, 디지털회로 등)과 운영체제 과목을 제일 싫어했다. 특히 난 하드웨어 과목을 들으면서 내가 평생 논리회로, 디지털회로와 같은 보드 만질 일이 절 대 !! 없다고 생각했다. 하지만 사람의 인생은 생각과 다르게 흘러간다. 펌웨어 개발자는 기본적으로 회로도와 데이터시트를 달고 살아야했던 것이다. 단순 C언어만 잘해도 보드를 모르니 코드를 짤 수가 없는 것이였다. 그래서 울면서 회로도와 데이터시트를 다시 공부하고 펌웨어를 짜는 날이 늘어갔다.. 하지만 역시 사람.. 2022. 4. 15.
ATmega2560의 ADC (2) 이번에는 Atmega2560의 ADC를 이용하여 가변 저항의 값을 읽어보도록 하겠습니다. 가변저항은 ATmega2560보드에 부착되어 있는 것으로 사용했습니다. 우선 두 가지의 모드가 존재합니다. 프리 러닝 모드 코드 단일 변환 모드 코드 프리 러닝 모드는 자동 트리거 모드에 속하는 모드입니다. 자동 트리거 모드는 이전 변환이 끝나면 특정 신호에 의해 다시 AD 변환이 시작되는 모드인데, 이에 속하는 프리 러닝 모드는 이전 변환이 끝나면 자동으로 다음 변환이 시작됩니다. 단일 변환 모드는 변환 시작 신호가 주어지면 한 번 AD 변환을 수행하고 끝내는 모드입니다. 딱 한번만 변환하려면 단일 변환 모드 여러번 반복할건데, 특정 신호에 의해 시작하고 싶다면 자동 트리거모드 여러번 반복할건데, 자동으로 시작하고.. 2021. 10. 26.
ATmega2560의 ADC (1) ADC란? 아날로그 – 디지털 변환기 (Analog-Digital Converter ADC) ATmega2560을 비롯하여 대다수의 uC에는 ADC가 꼭 필요합니다. ATmega2560의 ADC 특징 uC는 디지털 컴퓨터의 일종으로 디지털 데이터만을 처리 가능 온도, 조도 등 주변환경에서 측정할 수 있는 데이터들은 연속적인 아날로그 데이터 아날로그 데이터를 처리하기 위해서는 디지털 데이터로 변환해야 함 10비트 해상도 ADC : 아날로그 전압을 0~1023사이의 디지털 값으로 변환v16개의 채널은 포트 F(PF0~PF7)와 포트 K(PK0~PK7)에 연결 ADC 채널 16개이며, 하나의 AD 변환기에 멀티플렉서로 연결되어 있어 한 번에 하나의 아날로그 입력만을 디지털로 변환할 수 있음 Ex. 온도 센서의.. 2021. 10. 26.
Raspberry Pi 4로 SPI 통신하기 이번에는 Raspberry Pi로 SPI 통신을 해보겠습니다. 원래 SPI는 마스터와 슬레이브 두 개의 장치를 세팅한 후 진행해야 하지만, 라즈베리파이 1개로 셀프통신이 가능합니다. 라즈베리파이에 있는 MISO , MOSI를 서로 연결해주면 됩니다. 제가 사용할 보드는 Raspberry Pi 4이며 핀 배치도는 아래와 같습니다. 라즈베리파이는 버전마다 핀 배치도가 다르니 버전에 따른 핀 배치도를 참고바랍니다. 저는 19번핀과 21번핀을 연결해주었습니다. 그리고 라즈베리파이에 접속하여 터미널에서 SPI코드를 작성합니다. spidev_test.c /* * SPI testing utility (using spidev driver) * * Copyright (c) 2007 MontaVista Software, .. 2021. 9. 16.
ATmega2560의 EEPROM을 SPI 통신으로 데이터 읽고 쓰기 ATmega2560의 EEPROM을 이용하여 바이트 데이터를 읽고, 쓰는 과정을 진행해보겠습니다. 우선 ATmega2560에서 EEPROM의 위치와 Schematic을 확인합니다. ATmega2560에서 사용하는 EEPROM은 마이크로칩사의 25LCn EEPROM입니다. 64Kbit의 메모리를 가지고 있습니다. 1바이트 데이터를 읽는 방법 EEPROM 칩 선택 CS핀에 LOW 가하기 읽기에 해당하는 8비트 명령어 전송(0x03) 데이터를 읽을 EEPROM의 주소를 전송(13비트) 바이트 단위로 상위 바이트부터 2번에 나누어 전송 EEPROM에서는 해당 메모리 번지의 바이트 값을 마이크로컨트롤러로 전송할 준비 완료 실제로 EEPROM에서 1바이트의 데이터를 읽기 위해서는 임의의 1바이트 값을 슬레이브로 전.. 2021. 9. 16.
SPI(Serial Peripheral Interface) SPI란 UART와 같은 전이중 방식의 시리얼 통신 마스터 – 슬레이브 구조 가짐 일대다(1:N) 통신이 가능 마스터 -> 연결 시작 후 통신을 제어 연결이 성립되면 두 개의 데이터 선을 통해 데이터 주고 받음 동기화의 문제를 해결하기 위해 SPI는 송신과 수신이 항상 동시 진행 마스터 장치가 제공하는 클록에 의해 데이터 전송 이루어짐 마스터와 슬레이브 장치의 데이터 버퍼가 원형 큐 구조를 가짐 SPI에서 사용하는 핀 MOSI(Master Output Slave Input) : 마스터 -> 슬레이브 데이터 전송 MISO(Master Input Slave Output) : 슬레이브 -> 마스터 데이터 전송 SCK(Serial Clock) : SPI 동기화를 위한 클록 전송 SS(Slave Select) 혹.. 2021. 9. 16.
[STM32F103R8T6-M] GPIO를 이용하여 LED 제어하기 STM32F103R8T6의 LED를 GPIO를 이용하여 제어해보도록 하겠습니다. LED는 베이스보드에 내장된 D1을 사용합니다. STM32F103R8T6의 라이브러리와 예제를 사용하므로 아래 링크에서 라이브러리를 다운받습니다. 1) 라이브러리 http://lkembedded.synology.me:5000/fsdownload/7e2AJiLpp/LC_CATEGORY(ARM%EA%B3%84%EC%97%B4) 2) 예제 http://lkembedded.synology.me:5000/fsdownload/7e2AJiLpp/LC_CATEGORY(ARM%EA%B3%84%EC%97%B4) 다운로드 폴더 버튼을 클릭하면 다운로드가 완료됩니다. Keil 컴파일러를 사용할 것이므로 Keil 컴파일러를 미리 설치하시고 압축을 .. 2021. 8. 13.
[STM32F103R8T6-M] SCHEMATIC 확인하기 ARM의 STM32F103 보드를 사용해보겠습니다. LK EMBEDDED에서 판매하고 있는 ARM 32비트 STM32F103 개발보드를 사용하였습니다. 이 보드는 두가지 보드가 결합되어 있는 구조로, 상단에 있는 보드는 LK-STM32F103R8T6-M 이며, CPU는 ARM STM32F103R8T6입니다. 하단에 있는 베이스 보드는 STM32F103 DEV Board입니다. 해당 보드를 사용하기 위해서는 두 개의 데이터시트를 모두 확인해야 합니다. 데이터시트는 LK EMBEDDED 홈페이지의 자료실에서 확인할 수 있습니다. http://lkembedded.synology.me:5000/fsdownload/7e2AJiLpp/LC_CATEGORY(ARM%EA%B3%84%EC%97%B4) 여기서 회로도를 참.. 2021. 8. 13.