본문 바로가기

임베디드 개발304

LDD ] PCIe 디바이스 드라이버 작성하기 - (2) Parallel Port에 대해서먼저 맨땅에 데이터시트를 읽으려니 이해가 힘들어서 Parallel port 프로토콜에 대해 대충 알아봤다. Parallel port란 물리적인 포트를 의미하기도 하지만, 이를 통해 이루어지는 통신 방식도 포함한다. 먼저 Parallel port는 보통 DB-25 커넥터를 사용하며 아래 핀 배열을 기반으로 한다. 핀 번호신호 이름설명방향1Strobe데이터 전송 시작 신호출력2-9Data0-Data78비트 데이터 라인출력(기본)/입력10Ack데이터 수신 확인 신호입력11Busy장치 사용 중 신호입력12Paper-Out용지 부족 신호입력13Select장치 선택 신호입력14Auto Feed자동 줄 바꿈 제어출력15Error장치 오류 신호입력16Initialize장치 초기화 제어출.. 2025. 1. 15.
SCPI 사용해 DC Power supply 제어하기 이전에 SCPI에 대한 글을 썼었는데 이번에는 SCPI를 직접 사용하여 계측장비를 제어해보도록 한다. SCPI(Standard Commands for Programmable Instruments)란? 다양한 계측 장비를 프로그래밍하기 위한 표준화된 명령어 세트이다. SCPI 명령어는 주로 장비를 원격으로 제어할 때 사용되며 여러 제조사의 다양한 장비 간 호환성을 확보하도록 개발되었다. Standard라는 말이 무색하게도 명령어 셋은 장비별로 차이가 있기 때문에 매뉴얼을 찾아보면 된다.    내가 다룬 GW INSTEK 사의 GPD-4303S 제품은 후면 USB Type-B port를 통해서 PC와 연결하고 Com port를 아래와 같이 설정하면 시리얼 인터페이스로 제어할 수 있다.   명령어는 직관적인 .. 2025. 1. 3.
VSCode에서 리눅스 커널 모듈 개발시 Intellisense Error 없애기 Workspace에서 .vscode/c_cpp_properties.json 추가 (Ctrl + Shift + P > Edit Configuration) 그리고 커널 모듈 코드 작성시 필요한 매크로와 헤더 경로를 추가해주면 된다. { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include", "/usr/local/include", "/usr/src/linux-headers-5.4.0-150-generic/include", .. 2024. 12. 29.
LDD ] PCIe 디바이스 드라이버 작성하기 - (1) PCIe 카드 구입  이제부터 PCIe 리눅스 디바이스 드라이버를 공부해보려고 PCIe 카드 하나를 구입했다. 학습용으로 사용할거기 때문에 네이버에서 낮은 가격순으로 정렬해서 가장 저렴한걸 구입해봤다. COMS 사의 SW562 제품으로 CH382L 칩셋을 탑재한 x1 슬롯 타입 PCIe 페러럴 포트 카드이며 윈도우 디바이스 드라이버CD와 함께 제공된다.   📝 페러럴 포트란? Parallel Port는 예전에는 프린터, 스캐너, 산업용 장비 등 다양한 외부 장치를 연결하는 데 사용되었지만, 최근에는 USB나 네트워크 연결 방식으로 대체되어 PC에서 기본적으로 제공되지 않는 경우가 많다. 때문에 레거시 장비와 호환을 위해서 PCIe 슬롯에 꼽으면 PC에 Parallel Port를 추가해주는 이런 확장 카.. 2024. 12. 25.
USB Serial 장치의 COM Port 고정하는 방법 (Windows) 먼저 USB 장치는 모두 고유 식별자를 가지고 있으며 USB 시리얼 장치의 경우 해당 식별자를 바탕으로 운영체제가 COM port를 할당하게 된다.  USB 장치의 고유 식별자 VID (Vender ID) : USB-IF(USB Implementers Forum)에서 제조사에게 고유하게 부여하는 제조사 식별자PID (Product ID) : 각 제조사가 제품 라이업에 따라 자체적으로 관리하는 제품 식별자Serial Number : 동일한 모델의 제품이라도 각각의 장치를 구분하기 위한 고유 문자열   USB 장치의 고유 식별자 확인 방법장치 관리자 > 포트 > 장치 선택 후 우클릭 > 속성 > 자세히 > 속성 : 장치 인스턴스 경로 선택 > 값 확인  값이 위와 같은 경우 VID, PID, Serial N.. 2024. 12. 21.
Jetson Xavier NX ] 고정 IP 설정 netplan 사용하여 네트워크 구성 설정하기 netplan.io 설치$sudo apt update$sudo apt install netplan.io  네트워크 인터페이스 설정 추가$sudo vim /etc/netplan/config.yamlnetwork: version: 2 ethernets: eth0: dhcp4: no addresses: [192.168.0.123/24] gateway4: 192.168.0.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]  설정 파일 적용$sudo netplan apply   설정 적용확인$ifconfig     ➕ 네트워크 인터페이스의 하드웨어 설정은 ethtool 명령을 통해.. 2024. 12. 19.
AMBA (AHB, APB, AXI) AMBA(Advanced Microcontroller Bus Architecture)란?ARM에서 도입한 오픈-표준 온칩 인터커넥트 사양이다. System-on-Chip (SoC) 설계에서 프로세서, 메모리 컨트롤러, 주변 장치와 같은 다양한 컴포넌트 간 상호 연결을 위한 표준으로, AMBA의 프로토콜은 잘 문서화되어 있고 로열티 없이 사용할 수 있기 때문에 오늘날 임베디드 프로세서 버스 아키텍처의 사실상 표준이다. AMBA 아키텍처의 대표적 버스 프로토콜은 다음과 같다.  AHB (Advanced High-Performance Bus) : 프로세서와 메모리 또는 고속 주변 장치 간 연결에 사용한다.APB (Advanced Peripheral Bus) : 저전력, 저속 주변 장치를 위해 설계된 버스 프로.. 2024. 12. 11.
CCS ] .out(ELF) 파일에서 섹션 정보 파싱하기 CCS에서 프로젝트를 빌드하면 .out 확장자의 ELF 형식 실행파일이 생성된다. 해당 파일을 파싱하여 섹션 정보를 획득해보자.     CCS 폴더 경로에서 주운 elf.h 파일, 여기서 함수 원형은 무시하고 구조체 정의랑 매크로 상수만 활용하자. 근데 또 여기엔 Elf32_Phdr 정보가 없어서 다른데서 구해왔다. /* * ======== elf.h ======== */#ifndef ELF_#define ELF_ 1/* * ======== Elf32_Handle ======== */typedef struct Elf32_Object *Elf32_Handle;typedef Bits32 Elf32_Addr;typedef Bits16 Elf32_Half;typedef Bits32 Elf32_Of.. 2024. 12. 7.
Line Coding (선로 부호화) 1. Line Coding (선로 부호화)이란?Line Coding은 디지털 데이터를 전기적 디지털 신호로 변환하는 과정이다. 이 과정에서 데이터를 전송 매체에 맞춰 변환함으로써 신호 왜곡을 줄이고, 오류 검출과 복구를 용이하게 하는 역할을 한다.    2. Line Code의 분류2.1 Unipolar (단극형) ( A+, 0 )Unipolar 방식은 신호를 하나의 전압 레벨로 표현한다. 즉, 데이터 비트가 1일 때는 일정한 전압(+A)을 사용하고, 비트가 0일 때는 0 전압을 사용한다. 이 방식은 단순하지만, DC 성분이 포함되기 쉽고, 클럭 동기화가 어렵기 때문에 장거리 전송에 적합하지 않다.- 대표 방식 : Unipolar RZ, Unipolar NRZ    2.2 Polar (극형) ( +A, .. 2024. 10. 30.
SerDes SerDes란?   SerDes(서데스, Serializer/Deserializer)는 병렬 데이터를 직렬로 변환(Serialize)하고, 다시 직렬 데이터를 병렬로 변환(Deserialize)하는 기능을 수행하는 회로 블록을 말한다. SerDes는 칩간 고속 통신에 사용되어 여러개의 병렬 라인을 고속의 하나의 직렬 라인으로 통합하여 더욱 간단하고 안정적으로 고속 데이터 전송을 가능하게 한다.     SerDes의 기능 Serialize : 송신 측에서는 전송할 병렬 데이터를 하나의 직렬 신호로 변환한다.Deserialize : 수신 측에서는 들어온 직렬 데이터를 다시 병렬 데이터로 변환한다.Impedance matching : 고속 데이터 전송 시 발생할 수 있는 신호 반사를 줄이기 위해 임피던스 매칭.. 2024. 10. 20.
PCIe PCIe에 대해 한번 알아보자. 먼저 PCI와 PCIe는 어떻게 다를까 1. PCI vs PCIe1.1 PCI (Peripheral Component Interconnect)개념 : PCI는 1992년에 인텔이 개발한 병렬 버스 인터페이스로 CPU와 주변 장치를 연결하는데 사용되었다.동작 방식 :병렬 전송 방식 : 여러 비트의 데이터를 병렬로 동시에 전송한다.버스 아키텍처 : 여러 장치들이 동일한 버스를 공유하여 데이터를 전송하는데 한 번에 하나의 장치만 버스를 사용할 수 있다. 또한 이 버스는 제한된 대역폭(32비트 또는 64 비트 폭, 33MHz 또는 66MHz 클럭속도)을 가진다.주소 기반 메모리 접근 : CPU는 PCI장치와 직접 메모리 주소를 기반으로 통신한다.속도 : 최대 533 MB/s의 속.. 2024. 10. 8.
LDD ] printk를 활용한 디버깅 1. printk커널 공간에서는 C 표준 라이브러리를 사용할 수 없으므로 printf와 유사한 printk를 사용한다.   2. printk 사용법사용법은 printf와 거의 동일하며 단순히 printf를 printk로 대체하면 된다.단, %f, %e 등 부동소수점 형식의 포맷지정자는 지원하지 않으며, linux/Documentation/printk-formats.txt에서 사용 가능한 포맷지정자를 확인할 수 있다. ex.printk("num: %d, hex: %x\n", num, hex_num); Typeprintk format specifierint%d / %xunsigned int%u / %xlong%ld / %lxunsigned long%lu / %lxlong long%lld / %llxunsig.. 2024. 10. 6.
LDD ] 리눅스 커널 모듈 In-tree building In-tree 빌드란? In-tree 빌드는 커널 모듈을 리눅스 커널 소스 트리 안에 추가하여 커널 빌드 시스템이 커널과 함께 해당 모듈을 빌드하도록 하는 방법이다. 이 방법을 사용하면 사용자는 menuconfig 명령어를 통해 메뉴 형태로 구성된 커널 설정 화면에서 모듈을 선택하거나 선택해제할 수 있다.   In-tree building 과정 요약리눅스 커널 소스 트리 내에 모듈 추가로컬 Kconfig 파일 작성로컬 Makefile 작성상위 레벨 Kconfig 파일에 로컬 Koconfig 파일 추가상위 레벨 Makefile에 로컬 Makefile 추가커널 소스 루트 디렉토리로 이동해서 make menuconfig를 이용해 설정 (Optional)커널 소스 루트 디렉토리로 이동해서 모듈 빌드  1. 리눅.. 2024. 10. 4.
LDD ] Hello World 커널 모듈 + Makefile 작성법 가장 단순한 예시인 Hello World 모듈로 커널 모듈을 빌드하고 실행해보면서 커널 모듈 작성법을 익혀보자.   hello.c /* HEADER SECTION BEGIN */#include/* HEADER SECTION END *//* CODE SECTION BEGIN */static int __init hello_init(void){ pr_info("Hello world\n"); return 0;}static void __exit hello_exit(void){ pr_info("Goodbye world\n");}/* CODE SECTION END *//* REGISTRATION SECTION BEGIN */module_init(hello_init);module_exit(hello_e.. 2024. 10. 2.
modprobe와 insmod의 차이 1. modprobe커널 모듈을 로드하는데 사용하는 명령어로 모듈의 이름만 지정하면 /lib/modules/$(uname -r) 경로에서 해당 모듈과 모듈의 의존성을 자동으로 처리해 로드한다.(ex. modprobe e1000e) 2. insmod커널 모듈 파일을 직접 로드하는 명령어로 모듈 파일(.ko)의 경로를 지정하여 로드해야 하며 모듈의 의존성을 자동으로 처리하지 않는다.(ex. insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e.ko) 2024. 9. 30.
리눅스 커널 모듈 (Linux Kernel Module) 1. Linux Kernel Module리눅스 커널 모듈은 리눅스 커널에 동적으로 로드하거나 언로드할 수 있는 코드 조각으로 커널의 기능을 확장하거나 특정 기능을 추가할 때 사용된다. 커널 모듈은 실행 중인 커널에 동적으로 추가될 수 있어 커널을 재부팅하지 않고도 기능을 추가하거나 제거할 수 있는 장점이 있다.   2. Linux Device Driver디바이스 드라이버는 특정 하드웨어 장치를 제어하기 위해 커널에서 실행되는 소프트웨어이다. 하드웨어 장치와 커널 간의 인터페이스를 제공하여 응용 프로그램이 하드웨어를 제어할 수 있게 하는 용도로 사용되며, 대부분의 디바이스 드라이버는 커널 모듈로 구현된다. 이를 통해 사용자가 원하는 하드웨어를 커널에 동적으로 추가하거나 제거할 수 있다. 즉, 커널 모듈은 .. 2024. 9. 28.
BBB ] 커널 업데이트 Host PC 정보 : Ubuntu 16.04 LTS, 64비트  1. 커널 소스 크로스 컴파일을 위한 툴체인 설치호스트는 x86이고 타겟은 ARM 아키텍처이므로 Linaro 사이트에서 크로스 컴파일을 위한 툴체인을 특정 경로에 다운받아 놓는다. https://releases.linaro.org/components/toolchain/binaries/$wget -c https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/arm-linux-gnueabihf/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz 압축 해제$tar xf gcc-linaro-7.5.0-2019.12-x86_64.. 2024. 9. 26.
BBB ] Internet over USB 설정 전원공급에 사용되는 USB 케이블을 통해 PC의 인터넷 연결을 공유해서 사용할 수 있는 Internet over USB 기능 활성화 방법   호스트(Linux PC) 설정/etc/sysctl.conf에 다음 문장 주석 해제하여 IP 패킷 포워딩 enable$sudo vim /etc/sysctl.confnet.ipv4.ip_forward=1  ifconfig 명령으로 인터넷과 연결된 인터페이스의 이름을 확인해 둔다.$ifconfig  그 다음은 매번 리부트 시마다 실행시켜야 하는 명령이라 다음과 같이 스크립트 파일로 만들어 두고 실행 권한을 부여한다.$vim usbnet.shsudo iptables --table nat --append POSTROUTING --out-interface [인터페이스명] -j.. 2024. 9. 24.
ADC SNR ADC SNR (Signal to Noise Ratio) 신호와 잡음의 비율을 나타내는 SNR은 ADC 회로 상에서 발생하는 노이즈와 신호의 비율을 나타내기 위해서도 사용한다. 즉, 해당 값이 클수록 설계한 ADC 시스템이 신호에 비해 잡음이 얼마나 적고, 신호를 얼마나 정확하게 전달하는지 나타낸다. 이전 글(https://eteo.tistory.com/917)에서도 설명하였는데 SNR은 신호 수준 대 노이즈 수준의 비에 상용로그를 취한 뒤 20을 곱하여 dB 스케일로 표현한다. 단, ADC SNR을 말할 때의 '노이즈'는 양자화 오류만을 고려한 값이다. SNR은 내부 회로의 잡음이나 열 잡음, 전자기 간섭이로 인한 잡음 등 추가 잡음원을 고려하지 않고 양자화 오류만을 고려한 이상적인 값으로 ADC 시스.. 2024. 9. 8.
OP Amp 연산증폭기(OP-Amp, Operational Amplifier)는 회로 설계에 따라 다양한 용도로 사용될 수 있다. 몇가지 기본 회로에 대해서 한 번 알아보자.      1. 버퍼 (Buffer) - 구성 : 연산 증폭기의 비반전 입력(+)에 신호를 연결하고, 출력은 반전 입력(-)으로 피드백 된다 - 특징 전압 이득이 1이라서 입력 신호가 그대로 출력으로 전달되는데, 입력 전압과 출력 전압이 동일한 점 때문에 전압 팔로워(Voltage Follower)라고도 부른다.버퍼 회로는 입력 임피던스가 매우 높고 출력 임피던스가 낮아 입력 신호를 다른 회로에 전달할 때 소스 신호에 영향을 미치지 않고 전압 수준을 그대로 유지하면서 전달하는 용도로 사용된다.        2. 비교기 (Comparator)  -.. 2024. 9. 6.
오버슈트와 언더슈트 오버슈트 (Overshoot)오버슈트는 신호의 출력이 목표 값에 도달하기 위해 반응할 때 일시적으로 목표 값을 초과하여 상승하는 것을 의미한다. 언더슈트 (Undershoot)언더슈트는 신호가 목표 값으로 수렴하는 과정에서 일시적으로 목표 값보다 낮은 값을 기록하는 현상을 의미한다. 2024. 8. 22.
멀티미터를 사용해 다이오드 테스트 하는법 디지털 멀티미터(DMM)를 사용해 다이오드의 극성을 구별하거나 고장여부를 테스트 하는 방법을 알아보겠다. 그 전에 먼저 다이오드에 대해 알아보자.   다이오드 (Diode)다이오드는 전류가 한 방향으로만 흐르게 하는 특성을 가진 전자 부품으로 애노드와 캐소드라는 두 단자로 구성된다. 순방향 바이어스에서는 약 0.7V 이상의 전위차가 발생할 때 전류가 흐르기 시작하며, 역방향 바이어스에서는 전류가 거의 흐르지 않는 특징을 가진다.   다이오드의 극성 애노드 (Anode) : 전류가 들어오는 쪽의 단자로 기호에서 화살표가 가리키는 곳의 반대 부분이다.캐소드 (Cathode) : 전류가 흘러나가는 쪽의 단자로 기호에서 세로 막대기 쪽이다.   다이오드의 주요 특징 순방향 바이어스 (Forward Bias) :.. 2024. 8. 20.
TMS320F28388D ] 링커커맨드 파일과 컴파일러 섹션 링커커맨드 파일과 컴파일러 섹션에 대한 이해...  Compiler Sections C 코드는 컴파일러를 통해 어셈블리 코드로 변환되고 어셈블리 코드는 어셈블러를 거쳐 오브젝트 파일이 된다. 모든 C 코드는 섹션이라고 불리는 여러 부분으로 분리될 수 있는데 컴파일러는 컴파일 과정에서 C 코드를 분석하여 각 섹션에 들어갈 데이터를 구분한다. 그리고 오브젝트 파일의 구성을 보면 각 섹션별로 데이터가 저장되며 이외에도 변수, 함수 등의 심볼 정보를 가지고 있는 심볼 테이블이 포함된다. 이러한 섹션의 이름에는 .text, .stack, .bss 등 공통적으로 사용되는 것들도 있지만 툴체인마다 섹션의 이름이 약간씩 다르거나 추가적인 섹션이 있을 수 있다. C28x 컴파일러의 섹션은 다음과 같다. Section N.. 2024. 8. 16.
함수발생기 50옴, High-Z 설정에 관해 (함수 발생기 출력이 2배로 측정되는 이유) 함수발생기에서 출력 임피던스를 50옴으로 설정하면 계측장비에서 측정시 진폭이 2배로 측정되는 이유는? 보통 계측 장비의 입력 임피던스는 높을수록 입력 신호에 미치는 영향을 최소화할 수 있다. 따라서 오실로스코프의 경우 특별한 상황이 아니면 기본 설정이 1MΩ이다. 여기서 '특별한 상황'이란 수 MHz 이상의 고주파 신호를 측정할 때를 말하는데, 고주파 신호는 송신단과 수신단의 임피던스가 일치하지 않으면 신호가 반사되어 왜곡될 수 있다. 이 때문에 임피던스를 정확히 매칭해 신호를 관찰하는 것이 중요하며, 이때 주로 사용하는 값이 50Ω이다. 그래서 함수 발생기의 출력 임피던스 기본 설정도 50Ω인 경우가 많다. 다만 여기서 고려할 점은 함수 발생기와 계측 장비 모두 임피던스를 50Ω으로 설정하면 전압 분배.. 2024. 8. 14.
의사난수 생성기 (PRNG, Pseudo Random Number Generator) 1. 의사난수(Pseudo Random Number)란?컴퓨터는 본질적으로 계산기이기 때문에 특정 연산의 결과는 항상 동일하며 스스로 난수를 만들어낼 수 없다. 따라서 우리는 일반적으로 알고리즘을 사용해 무작위성을 흉내내는데 이를 의사난수 생성기(PRNG)라고 한다. 의사 난수 생성기는 초기값(시드)에 의해 결정되는 수열을 생성하며 같은 시드값을 사용하면 항상 동일한 수열을 생성한다. 이러한 특성 때문에 사람이 보기에는 어느정도 난수로 보이지만 진짜 난수는 아니기에 가짜 난수라는 의미로 Pseudo Random Number라고 부른다.    2. 의사난수의 종류 2.1 중앙제곱법(Middle Square Method)중앙제곱법은 존 폰 노이만이 제안한 초창기 난수 생성 알고리즘이다. 이 방법은 숫자를 제.. 2024. 8. 8.
TMS320F28388D ] DAC 겸용 ADC 핀 사용시 주의점 DAC 겸용 채널인 ADCINA0, ADCINA1, ADCINB1의 경우 내부의 50k옴 풀다운이 있다.      해당 채널을 ADC로 사용시 영향성은? 만약 ADC 입력 단에 높은 값의 저항이 있다면 전압분배기를 형성하여 게인 오류를 일으킬 수 있다고 한다.    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/839807/tms320f28075-adcina1-internal-50kohm-pulldown-resistor-question     그리고 데이터시트를 찾아보면 ADC 입력 회로의 소스 임피던스에 대한 언급도 있다. 이건 모든 ADC 채널에 적용되.. 2024. 8. 4.
SMD 타입 저항 읽는법 3 digit 혹은 4 digit 저항은 마지막 숫자가 10의 승수로 앞자리 숫자들과 곱하면 되고, 중간에 R/K/M이 오는 저항은 뒷부분이 소수점이하 자리로 생각하면 된다.    출처 :https://www.youtube.com/watch?v=tjISrZy5S9chttps://www.youtube.com/watch?v=ziJGxqbn45A 2024. 7. 28.
아두이노 ] VIN으로 외부전원을 공급하는 동시에 USB 케이블을 연결해도 될까? 아두이노는 USB 포트를 통해 PC로부터 5V 전원을 공급받을 수 있는데 VIN 또는 배럴잭을 통해 외부 전원을 공급하는 동시에 USB 케이블을 연결해도 괜찮을까? 결론만 말하면 괜찮다이다. 다음 아두이노 전원쪽 회로를 보면 VIN이 1/2 전압분배를 거쳐 비교기의 +단자로 들어가고 비교기 -단자에는 3.3V 전압이 인가되는데 비교기는 +입력이 -입력보다 높을때 출력이 높은상태가 되고, +입력이 -입력보다 낮은 상태일 때 출력이 낮은상태가 된다. 그 다음 비교기 출력 MOSFET Gate를 제어하는데 출력이 높은상태인 경우 P 채널 MOSFET이 꺼지게 되어 USBVCC 전원을 차단하게 된다. 즉, VIN과 USB가 모두 연결된 상태일 때 VIN이 6.6V를 초과하면 공급전원이 스위칭된다. 2024. 7. 26.
Noctua 4-pin PWM fan 제어하기 with 아두이노 Datasheet      FAN Model & Specification NOCTUA NF-P14s redux-1200 PWM      Wiring   Blue 라인을 통해 PWM으로 속도제어를 할 수 있고, Green 라인을 통해 타코미터 신호를 받아 팬 속도를 알 수 있다.  아두이노 9번 핀(PWM Out), 2번 핀(Tach In) 사용     PWM Speed Control 일단 PWM 신호 핀 없이 +12V랑 GND를 연결하면 팬이 최고속도로 도는데 아마도 PWM signal 입력을 받는쪽이 내부적으로 풀업이 되있나보다.  PWM 주파수는 25kHz이고 듀티를 0~100% 사이로 제어하면 된다.처음엔 digitalWrite랑 delayMicroseconds를 써서 PWM을 만들까 했는데 25k.. 2024. 7. 22.
TMS320F28388D ] Input Qualification TMS320F28388D DSP GPIO 모듈에 있는 Input Qualification 회로는 말 그대로 신호가 유효한가 Qualification 하는 회로이다.  Inpuq Qualification 기능을 사용하면 GPIO 포트로 입력되는 신호를 지정된 횟수만큼 샘플링해서 로직이 모두 일치하는 경우에만 신호 변화를 전달하고 그렇지 않은 경우는 노이즈로 취급해 무시하게 된다.  다음 블락도를 보자. 외부 GPIO 입력 핀에 신호가 전달되면 DSP SYSCLK와 동기되어 Qualification 회로에 전달되고, Qualification 회로는 순간적인 글리치를 필터링하고 내보내는 역할을 한다.   사용자는 샘플 수(GPxQSEL)와 샘플링 주기(GPxCTRL) 파라미터를 설정할 수 있고, 이를 통해 총.. 2024. 7. 2.