지식 13

USB 키보드 통신 파형 분석하기 2편

안녕하세요. 1편에서는 기본적인 데이터해석 방법을 알아봤고 2편에서는 키보드의 통신파형을 알아보겠습니다.키보드를 컴퓨터에 연결하면 장치연결감지,주소할당,장치설명요청 등등 하고  이후에 키보드에게 주기적으로 키를 입력할것이 있는지 물어봅니다. 키보드가 LS인 경우 10ms속도로 물어보고 FS인경우 1ms로 물어봅니다.이 글에서는 키보드에게 주기적으로 키를 입력할것이 있는지, 어떤식으로 키보드가 입력을 알려주는지, 어떤방식으로 파형을 해석해야하는지 알아보겠습니다.먼저 키보드를 컴퓨터에 연결하면, 자신이 어떤 장치인지 컴퓨터에게 알려줘야 합니다. 그래야지 키보드가 보내는 신호를 컴퓨터가 해석할 수 있습니다. 장치를 연결하면 장치설명요청(Device Descriptor Request)이 있는데 이때 자신의 VI..

지식/USB지식 2024.09.16

USB 키보드 통신 파형 분석하기 1편

안녕하세요. 오늘은 USB 키보드 통신 파형에 대해 알아보겠습니다. 1편에서는 키보드 통신파형을 분석하기위한 지식들을 알아보겠습니다.해당 글은 아래의 유튜브를 참고했습니다.https://www.youtube.com/watch?v=wdgULBpRoXk키보드는 LS인 것도 있고 FS인 것도 있습니다. 이전 글에서 LS는 D-가 pull-up이고 FS는 D+가 pull-up이라고 했었는데 실제 키보드를 가지고 그렇게 나오는지 확인해 보겠습니다.먼저 LS 키보드를 연결했습니다. D-가 HIGH 입니다.FS 키보드를 연결했습니다. D+가 HIGH입니다.LS키보드의 통신파형을 분석해보겠습니다.Differential 1일때는 D+ 가 HIGH고 D-가 LOW입니다.Differential 0일때는 D+가 LOW고 D-..

지식/MCU지식 2024.09.07

USB 2.0 SOF 통신파형 알아보기

안녕하세요. 오늘은 USB SOF 통신 파형을 알아보겠습니다. (FS기준)USB D+ D- 파형을 측정해보면 주기적으로 통신을 합니다. FS기준으로 1ms마다 통신을하고 HS기준으로는 125us마다 통신을 합니다. 주기적으로 통신을 하는 이 파형에 대해 알아보겠습니다. 이 파형은 SOF 패킷입니다.(GPT 지식)USB 통신에서 SOF(Start of Frame)는 USB 버스에서 시간을 동기화하기 위해 전송됩니다. USB는 비동기 통신 프로토콜이며, 여러 장치들이 한 버스를 공유하면서 동작합니다. 따라서 시간을 동기화하여 데이터를 정확하게 전송하고 수신할 수 있도록 합니다. SOF 패킷은 매 프레임마다 전송되며, USB 장치들은 이를 기반으로 데이터를 전송하거나 수신할 타이밍을 조절합니다. 이를 통해 U..

지식/USB지식 2024.05.12

USB2.0 데이터 신호 인코딩

안녕하세요. 오늘은 USB2.0에서 사용하는 데이터 신호 인코딩 방식에 대해 알아보겠습니다.USB2.0은 D+, D-라인을 통해서 통신을 합니다. D+,D-라인에서 읽은 전압을가지고 연산을 통해서 값을 얻습니다. D+,D-를 사용하므로 차등신호라고 부릅니다. 예를들어 D+ -  D-  > 0.2V면 1이라고하고 D+ - D- D+ LOW  ,  D- HIGH  : 0D+ HIGH ,  D- LOW : 11은 J라고 부르고 0은 K라고 부르겠습니다.이렇게 D+, D-를 가지고 J,K로 나눈다음에 NRZI방식으로  데이터를 해석하면 됩니다. NRZI방식은 이전상태와 같으면 1이고 다르면 0으로 해석합니다.J에서 K로 변했으면 0, K에서 J로 변했으면 0입니다.J에서 J로 변했으면 1, K에서 K로 변했으면..

지식/USB지식 2024.04.10

USB2.0 기본개념

안녕하세요. 오늘은 USB 통신에 대해 알아보겠습니다. USB 란 Universal Serial Bus의 약자입니다. 범용 직렬 버스라고 부릅니다. 일반적인 USB는 통신할때 선이 4가닥(USB 2.0) 필요합니다. (VCC, GND, D+, D-) VCC랑 GND는 전원(5V) 이고 D+,D-는 통신라인입니다. 아래의 사진은 USB 2.0 허브입니다.선이 4가닥있는것을 볼 수 있습니다. 그래서 통신파형을 측정할때는 D+,D-,GND를 측정하면 됩니다. *용어 USB관련 자료를 볼때 자주 사용하는 용어들을 정리해보겠습니다. 호스트(Host) : USB의 마스터를 호스트라고 부릅니다. 일반적으로 PC가 됩니다. 디바이스(Device) : USB의 슬레이브를 디바이스라고 부릅니다. 일반적으로 PC에 연결하는..

지식/USB지식 2024.03.30

MCU-Open drain 알아보기

안녕하세요. 오늘은 Open drain에 대해 알아보겠습니다.Open drain을 알아보기전에 먼저 push pull을 알고있어야 합니다. Push pull?Open drain은 push-pull에서 P-MOS를 사용하지않고 N-MOS만 사용합니다. GPIO OUTPIN BIT가 LOW면 GPIO OUTPUT PIN에 그라운드가 연결됩니다.GPIO OUTPUT BIT가 HIGH면 GPIO OUTPIN이 High impedance상태가 됩니다. (플러팅)GPIO OUTPUT PIN에는 주로 풀업저항을 연결해서 사용합니다.위와같은 방법으로 사용하면 외부전원을 사용할수 있게됩니다.이러한 방법을 사용하는곳중에 가장 대표적인게 I2C통신 입니다. I2C통신에서는 한개의 SDA랑 SCL라인을 가지고 다양한 DEVI..

지식/MCU지식 2023.10.15

ARM 명령어 아키텍처

안녕하세요. 오늘은 ARM 명령어 아키텍처에 대해 알아보겠습니다 * Instruction Set Architecture(ISA)소프트웨어와 하드웨어 사이에서 합의된 규칙입니다. 명령어 집합, 명령어 형식을 지정합니다. 컴파일러 개발자는 이러한 규칙을 가지고 C와같은 고급언어에서 기계어로 번역하는 컴파일러를 설계합니다. 하드웨어디자이너는 이러한 규칙을 따라 프로세서를 만듭니다. ISA에는 RISC(Reduced Instruction Set Computer)와 CISC(Complexe Instruction Set Computer) 두가지 범주로 구분할 수 있습니다. 모바일, 임베디드에서는 주로 RISC를 사용하고 데스크탑, 서버에서 사용되는 x86은 CISC를 사용합니다. RISC프로세서는 일반적으로 간단한..

지식/MCU지식 2023.04.23

엔디안이란?(빅엔디안, 리틀엔디안)

안녕하세요 오늘은 엔디안에 대해 알아보겠습니다.엔디안이란 데이터에 여러 바이트가 있는 경우 바이트 순서를 정하는 규칙입니다.빅 엔디안(big endian)과 리틀 엔디안(little endian)두가지 방법이 있습니다. 리틀 엔디안은 숫자의 하위 바이트가 메모리의 최하위 주소에 저장되고 상위 바이트가 최상위 주소에 저장됨을 의미합니다.빅 엔디안은 숫자의 상위 바이트가 최하위 주소에 저장되고 하위 바이트가 최상위 주소에 저장됨을 의미합니다.  STM32는 일반적으로 리틀 엔디안 형식입니다 실제로 빌드된 STM32의 메모리값을 보겠습니다.볼 메모리 값은 _estack입니다_estack은 ORIGIN(RAM) + LENGTH(RAM)이므로 0x20005000입니다..bin파일을 HxD에디터로 열어봤습니다(Hx..

지식/MCU지식 2023.03.26

MCU GPIO 전류 측정하기

안녕하세요. 오늘은 MCU GPIO 전류를 측정해보겠습니다사용하는 보드는 nucleo-f103rb(STM32F103RB)입니다. 측정방식측정방식은 아래의 그림처럼 멀티미터를 이용해서 측정합니다. 이 경우 멀티미터에는 3.3mA가 측정됩니다    회로에 pull-down, pull-up일때 GPIO의 설정을 변경하고 전류를 측정하겠습니다. 저항은 1kΩ을 사용했습니다pull-down인 경우먼저 INPUT일때 측정되는 소비전류입니다.1,3번인경우 전압이 없으므로 0A가 나옵니다.2번에서 pull up일때는 85uA가 측정됩니다.pull-up 이므로 위의 회로처럼 됩니다. 이때 내부풀업의 저항값을 구해보면 3.3=0.000085(1000+R)이므로 약R=37.8kΩ입니다.데이터시트에도 40kΩ로 나와있으므로 ..

지식/MCU지식 2023.01.23

UART통신 알아보기

안녕하세요. 오늘은 UART통신에 대해 알아보겠습니다.UART통신은 전송(TX)/수신(RX) 핀이 각각있고 핀이 HIGH / LOW로 변하면서 통신을 합니다.핀이 HIGH/LOW로 변하는 시간을 가지고 데이터를 판단합니다. - Baud rate시간은 Baud rate값으로 세팅합니다. Baud rate단위는 bps(bits per second)이고  초당 비트 수 입니다. 예를들어 Baud rate가 9600이라면 1초에 9600bit를 보냅니다. 1초에 9600bit면 1bit는 104us입니다.위의 사진에서 HIGH/LOW가 변하는걸 1bit로 봅니다. 9600bps에서는 1bit가 104us인 모습입니다.  - 패킷 구조START하기: UART통신핀의 상태는 기본적으로 HIGH입니다. 그래서 HIG..

지식/MCU지식 2022.12.24