본문 바로가기

임베디드 개발287

Momentary switch and Latching switch Latching switches Latching switches are switched on by the user and then remain on until switched off again. They do not require continuous compression from the user. Latching switches can be found in the home and are used for things like light switches, central heating switches or on stereos. Momentary switches Momentary switches require continuous compression. They will switch on when the user.. 2023. 9. 15.
D-SUB Overview D-sub 커넥터는 D-subminiature의 약자로, D모양의 금속 쉘 내부에 2열 이상의 커넥션(핀 또는 소켓)이 있는 것이 특징이다. D-sub 도입 당시엔 컴퓨터에 사용되는 가장 작은 커넥터여서 subminiature(초소형)이라는 이름이 붙었다. Types 쉘 크기와 핀 또는 소켓 수, Male/Female 타입에 따라 여러 종류가 있다. 주로 RS-232, RS-485와 같은 직렬 통신에 DB-9 커넥터를 사용하고, 컴퓨터와 디스플레이간 연결에 DE-15 커넥터를 사용한다. Pin Numbering 2023. 9. 15.
TMS320F28388D ] 부트 과정 Reset이 일어나면 먼저 PC(Program Counter)는 Reset Vector가 fetch되어있는 0x3FFFC0으로 설정된다. Reset Vector의 내용은 Boot ROM 영역에 있는 InitBoot 코드로 점프하는 것이다. Boot ROM은 한번만 프로그래밍 가능한 영역으로 공장 출하시 TI사가 부트로더 Software를 마스킹해둔 곳인데, 여기에 부트로더 역할을 하는 InitBoot 함수가 있다. InitBoot 코드가 실행되면 부트로딩을 위한 루틴을 수행하고 I/O 핀 상태에 따라 BootMode를 결정한 뒤 BootMode에 따라 온칩 메모리의 특정 Entry Point를 실행하게 된다. 참고로 Boot ROM에 마스킹된 Boot Code는 아래 경로에서 살펴볼 수 있다. C:\ti.. 2023. 8. 16.
TMS320F28388D ] Reset Sources 유저매뉴얼의 Reset Sources 테이블 첫번째 열이 Reset Source 목록이고 첫번째 행이 각 Reset이 발생했을 때 초기화되는 여부를 표시한다. Yes인 것은 해당 회로가 리셋 된다는 뜻이고, - 는 해당회로 기존 상태로 남는다는 뜻이며, Hi-z는 하이 임피던스 상태라는 뜻이다. Power-On Reset (POR) POR 회로는 칩에 전원이 인가되고 안정된 상태에 이르기까지 칩을 계속 리셋 상태로 묶어두는 회로로, GPIO 핀들의 글리치를 억제하고, 칩이 깨끗하게 시동 될 수 있게한다. POR이 발생하면 칩의 모든 회로는 리셋상태가 되고, IO핀은 Hi-Z 상태가 되며, /XRS 핀은 Low 신호를 출력하게 된다. 이때 /XRS 핀의 출력 신호는 칩과 연결된 다른 IC 소자들을 리셋 시.. 2023. 8. 14.
TMS320F28388D ] SPI Clocking Schemes / CPOL, CPHA 설정 TMS320F2838x칩 Clock Phase 설정에는 주의할 점이있다. 우선 SPI 통신을 하려면 CPOL(Clock Polarity)과 CPHA(Clock Phase)라는 두 가지 파라미터를 설정하는데 이 설정 조합에 따라 다음의 4가지 SPI 모드가 있다. 그리고 TMS320F2838x driverlib에도 Mode 설정이 존재하는데 CPOL은 동일하지만, CPHA를 설정할 때 주의가 필요하다. 보통은 CPOL, CPHA 설정에 따라 클럭과 데이터를 동기화하는 방법은 다음과 같다. CPOL = 0: IDLE 일 때 클럭이 LOW 레벨이다. CPHA = 0 : 데이터가 클럭의 first edge에서 캡쳐(샘플링)되고, 그 다음 edge에서 전파(출력)된다. CPHA = 1 : 데이터가 클럭의 seco.. 2023. 8. 14.
TMS320F28388D ] eCAP으로 ePWM 신호 Period와 Duty Cycle 측정 특정 주파수, 듀티사이클의 PWM신호를 생성하고 eCAP으로 PWM신호 측정    PWM 설정 ePWM의 TBCLK(Time Base Clock)은 아래 공식으로 설정하는데 prescale 값은 둘 다 1로 한다. TBCLK = EPWMCLK/(HSPCLKDIV * CLKDIV) Period를 25000으로 설정하고, Counter Mode는 up-down으로 한다. 카운터가 up-dwon 모드일 때 PWM 파형의 주파수는 TBCLK/(2*period)인데 EPWMCLK는 따로 클락설정이 없으면 디폴트가 SYSCLK/2여서 100MHz니까 100,000,000 / 50,000 = 2kHz가 된다.     Counter Compare 값은 18750으로 설정.  .. 2023. 8. 14.
TMS320F28388D ] ECAP ECAP CAP 은 Capture 의 약자로 펄스 신호의 시간정보를 검출하는 기능을 한다. 펄스의 Rising edge와 Falling edge 시간 정보를 확인하여 주기, 듀티 등을 측정할 수 있고, 펄스의 특정 edge에서 인터럽트를 발생시킬 수도 있다. ECAP의 사용 예 회전체의 속도 검출 신호의 Pulse period, Duty ratio 측정 출력이 PWM 타입인 센서의 정보 디코딩 ECAP의 특징 TMS320F28388D 칩에는 7개의 eCAP 모듈이 있다. 그리고 eCAP 모듈의 특징은 다음과 같다. 200MHz 시스템 클럭사용, 5ns의 시간 분해능 캡쳐 핀은 Input X-BAR를 통해 라우팅되므로 어떤 GPIO든 사용 가능 32-bit 타이머 기반 4개의 32-bit 타임 스탬프 캡쳐.. 2023. 8. 14.
Difference between Cold Reset and Warm Reset Cold Reset : A cold reset is a method of resetting the system by completely turning off the power and then turning it back on. It is used to bring the system back to its initial state and can be used to resolve hardware-related issues. Caution needed when performing a cold reset as it may lead to data loss or affect system stability. Warm Reset: A warm reset is a method of restarting the system .. 2023. 8. 14.
Types of IC Packages IC 패키지 종류 https://electrical-information.com/package-types/ Types of IC Packages There are way too many different types of semiconductor (IC or transistor) packages. For example, SO electrical-information.com 2023. 7. 24.
W25Q64JV, SPI Interface NOR 플래시 메모리 데이터시트 분석 TMS320F28388D DSP 사용 기준으로 작성되었다. W25Q64JV 스펙 64Mbit(=8MB) 용량을 가진 Winbond사의 Serial Flash Memory이다. Pin Configuration 다음과 같이 핀을 연결한다. 데이터시트를 보면 모든 instruction 직전에 /CS핀의 falling edge가 필요하므로 /CS핀을 GND에 묶어두거나 하는 건 안된다. MCU SPI MOSI → Flash DI MCU SPI MISO ← Flash DO MCU SPI CLK → Flash CLK MCU CS용 GPIO → Flash /CS 작동전압은 2.7V to 3.6V이다. SPI Baud Rate TMS320F2838x 매뉴얼을 확인하면 설정 가능한 최대 SPI Baud Rate는 LSP.. 2023. 7. 24.
STM32 ] TouchGFX, 하드웨어와 상호작용하기 1. TouchGFX Designer에서 사용보드를 선택하고 New Project를 생성한다. 2. Designer 툴에서 GUI를 만들고 Generate Code를 한다. 3. 프로젝트 경로에 들어가면 .ioc 파일과 STM32CubeIDE 프로젝트 파일이 있다. 4. STM32CubeMX로 .ioc 파일을 편집하고 STM32CubeIDE로 .cproject를 열어 편집할 수 있다. 5. 하드웨어 상호작용 코드 작성 아래 경로에서 main.c와 gui관련 .cpp 파일을 수정할 수 있다. TouchGFX는 OS없이도 실행할 수는 있지만 그렇게 하면 다른 Task와 TouchGFX 함께 실행하기 어렵기 때문에 FreeRTOS 환경에서 테스트하며 개발되었고 자동생성 코드도 FreeRTOS와 같이 제공된다... 2023. 7. 18.
STM32 ] TouchGFX 설치하고 여러 Widget과 Interaction 사용 해보기 TouchGFX 설치하고 사용해보기 HTML 삽입 미리보기할 수 없는 소스 1. 공식 웹사이트에서 TOUCHGFX를 다운받아 설치한다. https://www.st.com/en/embedded-software/x-cube-touchgfx.html X-CUBE-TOUCHGFX - STMicroelectronics X-CUBE-TOUCHGFX - TouchGFX advanced and free of charge graphical framework optimized for STM32 microcontrollers, X-CUBE-TOUCHGFX, STMicroelectronics www.st.com 압축 해제 후 아래 경로에 .msi 설치파일이 있다. Utilities\PC_Software\TouchGFXDesi.. 2023. 7. 17.
MIL, SIL, PIL and HIL Summary “M”, “S”, “P” and “H” are all referring to the Controller status. They represent how real the controller is. MIL uses the Controller Model SIL uses the C code converted from Model PIL uses the Controller Processor only (no I/O connectivity) HIL uses the full Controller Hardware, including I/O. Terms These terms are used in the context of control systems development which means that typic.. 2023. 7. 11.
CAN FD Bus Load Calculator CAN FD Bus Load Calculator Classic CAN bus load 계산기는 인터넷에 찾으면 있던데 CAN FD는 아무리 찾아도 안보여서 직접 만들었다. 공식은 아래 사이트를 참고했다. https://ieeexplore.ieee.org/document/8338047 2023. 6. 25.
readelf 명령어와 elf 파일 구조 ELF 파일 HTML 삽입 미리보기할 수 없는 소스 소스코드를 컴파일하면 목적코드로 변환되고, 목적코드와 필요한 라이브러리들을 링커커맨드파일 정보를 통해 링킹하는 과정이 끝나면 실행가능한 이진형식 파일인 Executable and Linkable Format 파일이 생성된다. ELF 파일의 구성 ELF 파일 기본 정보를 포함한 ELF Header 세그먼트의 정보를 포함한 Program Header Table 섹션에 대한 정보를 포함하는 Section Header Table Program Header Table 또는 Section Header Table의 엔트리들에 의해 참조되는 데이터 이 중섹션들이 링킹과 재배치에 필요한 중요한 정보를 포함하는 반면, 세그먼트들은 파일의 런타임 실행에 필요한 정보를 포함.. 2023. 6. 25.
JTAG, SWD JTAG (Joint Test Action Group)과 SWD (Serial Wire Debug)는 MCU와 통신을 통해 디버깅과 플래시 프로그래밍을 가능하게 해주는 인터페이스이다. JTAG와 SWD는 서로 다른 프로토콜이며, JTAG는 여러 디바이스에 널리 사용된다는 장점이 있고 SWD는 비교적 간단한 구성을 가지고 있다는 장점이 있다. VCC와 GND 제외 필수 연결 핀은 다음과 같다. HTML 삽입 미리보기할 수 없는 소스 TCK (Test Clock) : 클럭 신호 전송핀. 디버깅 장치와 타겟 장치 사이의 동기화 역할을 한다. TMS (Test Mode Select) : 타겟 장치의 상태를 테스트 모드로 선택하는 데 사용되는 핀. TDI (Test Data In) : 데이터 전송핀(디버깅 장치→.. 2023. 6. 25.
PXI PXI PCI eXtensions for Instrumentation PXI (PCI eXtensions for Instrumentation) is a proven PC-based platform for measurement and automation systems. PXI uses commercial PC-based PCI bus technology while combining rugged CompactPCI modular packaging, as well as key timing and synchronization features. PXI systems are composed of three main hardware components: chassis, controller, and peripheral.. 2023. 6. 25.
UDS (차량용 진단 통신) UDS (차량용 진단 통신) HTML 삽입 미리보기할 수 없는 소스 UDS란 Unified Diagnostic Services의 약자로 차량의 전자제어장치(ECU, Electronic Control Units)들 간에 진단, 펌웨어 업데이트, 테스트 목적의 통신에 사용되는 프로토콜이다. 주로 CAN(Controller Area Network) 버스를 통해 CAN 메시지형식으로 통신하는것이 일반적이지만 UDSonLIN, UDSonIP(UDS) 등 여러 Variation이 있다. UDS는 요청기반(Request based) 프로토콜로 클라이언트-서버 관계에서 수행되며 테스터 툴이 클라이언트가 되고, ECU가 서버가 된다. 실제로 차에 있는 OBD2 커넥터를 통해 CAN bus 인터페이스에 연결하고 UDS r.. 2023. 6. 9.
CAN ISO-TP Classic CAN 프레임의 경우 페이로드가 8바이트로 제한되고 CAN FD의 경우 페이로드가 64바이트로 제한된다. 이보다 큰 대용량 페이로드를 전송하려면 어떻게 해야할까? ISO-TP (ISO transfer protocol)는 이 문제를 해결하기 위해 ISO 15765-2 표준에 정의된 프로토콜로, 페이로드 데이터 크기를 최대 4095바이트까지 확장한다.ISO-TP의 가장 일반적인 기능은 송신측에서 패킷을 작은 조각(세그먼트)으로 분할하고 수신측에서 다시 재조립해 원래의 데이터로 복원하는 것이다.       ISO TP가 정의하는 Frame type은 다음의 4가지이다. Frame별로 1~3바이트 길이의 PCI(Protocol Control Information).. 2023. 5. 31.
ARINC-429 Word Format ARINC-429 글 : 2023.05.31 - [DSP, MCU/펌웨어공부] - ARINC-429 HTML 삽입 미리보기할 수 없는 소스 ARINC 429 의 data words 는 일반적으로 아래의 5개의 필드로 구성된 32 bit words이다. Parity - 1 bit Sign/Status Matrix (SSM) - 2 bits Data - 19 bits Source/Destination Identifier (SDI) - 2 bits Label - 8 bits 단, 이중에서 Parity bit와 Label 만 필수이고 나머지 비트들은 비표준에서 high resolution data 등을 전송하기 위해 다양한 포맷으로 사용될 수 있다. 연결된 Transmitter는 항상 data words 또는 .. 2023. 5. 31.
ARINC-429 Protocol ARINC ARINC는 미국 소유 비영리단체인 Aeronautical Radio, Inc.의 약자로 여기서 제정된 항공전자 표준이 ARINC 프로토콜이다. 항공 기술 분야에서 사용되는 매우 다양한 ARINC 표준이 있으며 ARINC 400, 500, 600, 700, 800 같은 다양한 하위 시리즈들이 있다. ARINC 429 그 중에서도 ARINC 429는 항공전자 장비간 데이터 전송을 위한 가장 널리 사용되는 표준으로 Mark 33 Digital Information Transfer System(DITS)으로 알려져 있기도 하다. Network Topology ARINC 429 네트워크는 single transmitter(source)에 receivers(sink)가 연결된 구조로 한 transmit.. 2023. 5. 31.
Vector CANdb++ editor 아래 주소에서 다운로드 https://www.vector.com/int/en/download/candb-31-sp3/ 공식 매뉴얼 중국사이트이긴 한데 자세히 나와있는 매뉴얼 https://blog.csdn.net/qfmzhu/article/details/111403266 【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC_【dbc专题】-11_汽车电子助手的博客-CSDN博客 目录 0关键字/术语描述 1 启动“CANdb++ Editor” 2 创建一个新的DBC(CANdb network file (Data Base for CAN)) 3 创建CAN网络当中的Network nodes网络节点 4 创建CAN网络当中的Message消息 5 创建Message消息中Signals信 blog.csdn.net 2023. 5. 14.
CRC-16-CCITT CRC-16-CCITT의 다항식(Polynomial)은 아래와 같다. XMODEM, YMODEM 등에 쓰이는 방식이다. 이 다항식의 16진수 표현 CRC-16-CCITT 함수 uint16_t UpdateCRC16(uint16_t crc_in, uint8_t byte) { uint32_t crc = crc_in; uint32_t in = byte | 0x100; do { crc 2023. 5. 7.
CRC-32 CRC (Cyclic Redundancy Check) 는 데이터 전송 과정에서 오류를 검출하거나 파일의 무결성을 검증하기 위한 방법으로, 그 과정에서 여러 종류의 다항식이 쓰일 수 있는 데 가장 널리 사용되는 CRC 다항식은 CRC-16-CCITT와 CRC-32이다. CRC 다항식 종류 : https://en.wikipedia.org/wiki/Cyclic_redundancy_check 그 중 CRC-32의 다항식(Polynomial)은 아래와 같다. 이 다항식을 16진수로 표현한게 0x04C11DB7이고, reverse한 값이 0xEDB88320이다. 다항식을 16진수로 표현하는 방법은 먼저 x의 차수에 해당하는 비트에 1을 쓴다. 나머지 비트는 0으로 한다. 그럼 바이너리로 아래처럼 되는데 이걸 31번.. 2023. 5. 7.
TMS320F28388D ] CM, C28x 코어 진입점으로 점프 CM 먼저 CM코어의 경우는 Application 실행을 위한 Entry Point는 0x200001 이고 해당 주소로 점프하면 된다. https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/923512/tms320f28388d-cm-core-code-jump-to-execution-giving-meets-error-asking-for-how-to-do TMS320F28388D: CM core code jump to execution giving meets error, asking for how to do - C2000 microcontrollers forum - .. 2023. 5. 7.
Online CRC 계산 사이트 CRC 계산 사이트 https://crccalc.com/?crc=01020304&method=crc32&datatype=hex http://www.sunshine2k.de/coding/javascript/crc/crc_js.html https://www.lammertbies.nl/comm/info/crc-calculation 파일 CRC 계산 사이트 https://emn178.github.io/online-tools/crc32_checksum.html https://simplycalc.com/crc32-file.php 2023. 5. 7.
TMS320F28388D ] CSS에서 bin 파일 생성하는 법, filling a hole with 0xFF not 0x00 프로젝트를 빌드하면 기본적으로 .out 실행파일이 나오는데 바이너리 파일을 생성하기 위해서는 TI에서 제공하는 유틸을 사용하면 된다. 아래 경로에 있는 툴이고, 이걸 ccs의 post build step 기능으로 빌드와 동시에 bin 파일이 생성되게 할 수 있다. C:\ti\ccs[Version No]\ccs\utils\tiobj2bin 프로젝트 우클릭 - Build - Steps - Post-build steps 해당 부분에 아래 문구를 적는다. C28x 코어 "${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin" "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin" "${CG_TOOL_ROOT}/bin/ofd200.. 2023. 4. 23.
TMS320F28388D ] 라이브러리 램에 복사해 실행 Flash API 라이브러리를 램에 올려서 실행할 필요가 있다. 단순히 time critical 코드를 고속으로 사용하려는 것 뿐만은 아니고 예를 들어 부트로더를 만들 때 필요하다. Application이 코드영역에서 한창 동작하고 있는데 이 코드영역을 중간에 erase하려고 하면 프로그램이 halt될 것이 아닌가. 하지만 전부 Ram에서 동작하는 함수를 사용하면 코드영역을 침범해 조작해도 halt 되지 않는다. 근데 Flash API를 호출해서 사용하는 copyData()라는 사용자정의 함수가 있다고 하면 이걸 Ram에 올린다고 다 되는 게 아니라, 그 안에 있는 모든 함수들이 램에서 동작해야하고 사용하는 버퍼도 램에 올라간 데이터여야 한다. 아래와 같은 과정을 거치지 않고 Flahs API를 사용한다.. 2023. 4. 22.
TMS320F28388D ] Flash API 사용 일단 아래 경로에 있는 FlashAPI 라이브러리를 복사해 프로젝트 안에 가져온다. C:\ti\c2000\C2000Ware_[Version No]\libraries\flash_api\f2838x\cm\lib 그리고 아래 경로의 FlashAPI를 사용하기 위한 헤더가 모여있는 폴더도 복사해서 프로젝트에 가져온다. C:\ti\c2000\C2000Ware_[Version No]\libraries\flash_api\f2838x\cm\include\FlashAPI 그리고 Include search path에 추가해준다. 복사해서 가져오지 않아도 c2000ware 폴더 내 경로를 추가하면 되긴하지만 선호하지 않는방법이다. 이제 아래 헤더를 include하면 FlashAPI를 가져다 쓸 수 있다. #include ".. 2023. 4. 20.
TMS320F28388D ] TI 제공 부트로더 사용해서 CPU2, CM application 다운로드하기 사용방법은 README.txt 파일에서 찾을 수 있다. When the application starts, the serial connection is with the SCI module which is owned by CPU1. Only commands designated for CPU1 are acceptable at this point before booting CPU2.  If a CPU2 command is selected, the application asks the user for a different option.  After booting to CPU2, either with "Run CPU1 Boot CPU2" or "Reset CPU1 Boot CPU2," CPU.. 2023. 4. 19.