Skip to content
Go DevBJ
Go back

임베디드/하드웨어 실전 노트

Updated:
Edit page

import Adsense from ”@/components/Adsense.astro”;

10 포트 지원 PCBA 테스트 지그 – AT command, SPI 지원

AT Command 를 지원하는 아래와 같은 PCBA 모듈 제품 (Wi-Fi, 블루투스 모듈 등등) 개발 하거나, 이미 생산 중이라면 동시에 10개의 PCBA 모듈 기능을 검증하고, 테스트할 수 있는 PCBA 테스트 지그를 간단하게 소개한다. 공식 페이지는 여기 – https://twarelab.com/product

PCBA 모듈 예

PCBA 모듈이란 것은 아래 그림과 같은 소형 PCB 조립 모듈을 말한다. 요즘은 블루투스 모듈이나 Wi-Fi 모듈이 여기 범주에 포함된다. 이러한 대부분의 소형 PCBA 모듈 제품은 모듈을 제어하기 위한 명령을 주고 받는 인터페이스로 UART, RS232, SPI, 시리얼 등 몇 핀으로 통신을 할 수 있는 시리얼 인터페이스라고 불리는 핀을 통해 AT command 혹은 단순한 시리얼 커맨드를 이용하여 모듈의 기능을 제어 할 수 있도록</u> 되어 있다.

<figure class=“kg-card kg-image-card kg-card-hascaption”><figcaption>PCBA 모듈 예제&lt;/figcaption&gt;``&lt;/figure&gt;예를 들면, 위 그림에 언급된 WIZnet WizFi360과 ESP ESP8266 Wi-Fi 모듈들도 UART 를 이용한 명령(AT commands)을 지원하고 있다. 간단한 명령어 구성은 다음과 같다.

<figure class=“kg-card kg-image-card kg-card-hascaption”><figcaption>AT command examples – https://www.instructables.com/Get-Started-with-ESP8266-Using-AT-Commands-NodeMCU/`&lt;/figcaption&gt;“&lt;/figure&gt;`AT command 는 모듈에 Serial UART 를 연결하고, 위 테이블에 표현된 AT+RST 같은 문자열을 전달하면 모듈이 그에 맞는 동작을 수행해서 결과를 리턴해 주는 형태로, 모듈의 기능을 사용할 수 있게 하는 가장 간단한 방법이다.

테스트 지그 하드웨어

전체 하드웨어 모습은 아래 그림과 같다.

<figure class=“kg-card kg-image-card”>&lt;/figure&gt;### 카메라

테스트 제품 이력 추적을 위한 QR 코드 인식을 위한 카메라 부분이다. 제품에 QR 코드를 부착해서 생산하는 경우, 자동으로 인식하여 각각 개별 모듈에 자신의 QR 시리얼을 기록하는 기능을 제공한다.

Fixture 보드 부분

앞서 살펴본, 사용자 모듈이 직접 접촉 되는 부분이다. 기존의 지그들이 개발하는 모듈 별로 새로 만들어야 하는 단점을 없애기 위해 만든 부분이다. 이 보드 부분만 교체하면 여러가지 모듈을 하나의 지그에서 사용할 수 있다.

<figure class=“kg-card kg-image-card”>&lt;/figure&gt;접촉된 핀에서 발생하는 시그널은 제어 모듈로 전달 되어 사용자 테스트 작업을 가능하게 한다. 접촉된 핀을 통해 UART AT Command 를 수신 할 수 있고, 다양한 GPIO 를 통해서도 모듈의 기능을 다양하게 검증, 테스트 할 수 있다. 예를 들어 보면,

  • UART 로 명령 전달 및 결과 수신
  • 리셋 핀 제어
  • GPIO 핀 상태 확인

등의 동작을 아주 쉽게 수행할 수 있다.

그리고, 10개의 모듈을 동시에 테스트할 수 있도록 접촉 핀이 충분히 준비 되어 있다. 한 모듈당 20개의 핀을 통해 동시에 개별 테스트를 진행할 수 있다. 현재 준비되어 있는 보드들은 아래와 같다. 아주 저렴한 비용으로 모듈 별 지그를 만들 수 있다.

<figure class=“kg-card kg-image-card”>&lt;/figure&gt;### 제어 모듈 (제품 후면)

10개의 모듈의 20핀 시그널을 받아서 독립적으로 처리해 부는 제어 모듈이 장착된 제어 보드가 있다. 이 보드를 통해 테스트 하고 싶은 PCBA 모듈의 기능을 바로 테스트해 볼 수 있다. 하나의 PCBA 모듈에 할당된 최대 20핀에서 지원되는 인터페이스는 아래와 같다.

  • UART
  • SPI
  • I2C
  • GPIO

그리고, SWD 를 이용한 Flash programmer 기능도 가지고 있어 10 포트 병렬 프로그래머의 형태로 활용이 가능하도록 구성되어 있다.

따라서, PCBA 개발자들은 단순히 여기에 명시된 인터페이스와 맞는 것만 있으면 별도의 전용 지그를 개발 하지 않고도, PCBA 모듈 전용 테스트 프로그램, Programmer, 기능 디버깅/검증 지그 시스템을 손쉽게 구축할 수 있다.


KiCad – PCB 설계시 레이어 영역 용어 소개

다른것을 다 떠나 레이어 영역 용어는 일단 알고 보자.

  • F.Cu는 PCB 윗부분 전선
  • B.Cu는 PCB 뒷부분 전선
  • F.Paste는 PCB 윗부분 SMT 접착제
  • B.Paste는 PCB 뒷부분 SMT 접착제
  • F.Mask는 PCB 윗부분 패드
  • B.Mask는 PCB 뒷부분 패드
  • Edge.Cuts는 PCB의 전체 모양
  • F.SilkS는 PCB 윗부분 하얀 선 또는 글자
  • B.SilkS는 PCB 뒷부분 하얀 선 또는 글자

<figure class=“wp-block-image size-full”>&lt;/figure&gt;## 레퍼런스 페이지

https://shwoghk14.blogspot.com/2019/04/kicad-2-pcb.html


Kicad – 특정 net 에 클래스 적용하기 (배선폭, 클리어런스 등)

Kicad 작업시에 특정 net에 클래스로 지정하여, 어떤 룰을 적용하고 싶을때 배선을 일일이 클릭해서 할 수도 있지만 클래스로 구분 시켜 한꺼번에 적용하는 것이 좋다.

전원, 그라운드를 좀 두꺼운 배선폭이나 클리어런스를 적용하고 싶을 때 사용해 봤다.

먼저, 이 룰을 적용시키는 메뉴가 찾기 어려웠는데 직관적이지 않지만 ㅋ 적응해야지

파일 > 기판 설정 이라는 메뉴를 실행해야 한다.

<figure class=“wp-block-image aligncenter size-full”>&lt;/figure&gt;누르고 나면, 가운데 창이 하나 뜨면서 각각 네트에 이미 지정된 클래스와 클리어런스 세팅 값이 나오게 된다.

<figure class=“wp-block-image aligncenter size-large”>&lt;/figure&gt;디자인 규칙 > 네트 클래스를 눌러서, 위의 창이 나타나면 원하는 네트를 이름 필터를 이용하여 찾아낸다.

전부 _5V 로 네트네임을 일부로 그룹핑이 되도록 설정해 두었다. 이렇게 해야 일일이 클릭하는 수고를 덜어낼 수 있다.

암튼 필터 적용을 하고, 이 부분은 전원처럼 클래스가 적용되면 좋으므로, 다음과 같이 새로운 네트 클랙스를 지정한다.

<figure class=“wp-block-image aligncenter size-large”>&lt;/figure&gt;이미 두껍게 설정해둔 전원 클래스 3.3V 클래스를 활용하도록 한다. 선택한 네트에 할당 이라는 버튼을 눌러 네트 클래스를 바꾸면 된다.

<figure class=“wp-block-image aligncenter size-large”>&lt;/figure&gt;그림 처럼, 3.3V 클래스로 바뀜을 확인 할 수 있다.

이제 아트웍 작업 환경으로 가서 해당 네트를 그리면, 여기 지정된 값으로 배선폭이 크게 그려지게 됩니다. 끝.

<figure class=“wp-block-image aligncenter size-large”>&lt;/figure&gt;


KiCad – PCB 설계 배치 정렬하기

같은 모듈이 쫙 있는 경우, 위치를 왠만하면 맞추고 싶다.

간단하게 모듈을 배치 정렬하는 기능이 있으니 활용하면 되겠다.

먼저 하나는 수치를 직접 넣어 맞춰두는게 좋다. 맞춰둔 위치로 y 축 을 일치 시키려고 한다.

<figure class=“wp-block-image aligncenter size-large”>&lt;/figure&gt;Shift + 클릭 으로 원하는 모듈들을 선택한다. 위의 그림에서 하얀색으로 표기된 놈들이다.

오른쪽 버튼을 누르면 위 그림과 같이 정렬이 가능한 메뉴가 등장한다. “위쪽 맞춤” 을 수행해 보겠다.

단, 여기서 주의할 점은 반드시 맞추고 싶은 모듈/부품/풋프린트 에서 마우스 오른쪽 버튼을 눌러 메뉴를 실행해야 한다. 엉뚱한 곳으로 일치시키고 싶지 않다면,

그럼 결과는 짠

<figure class=“wp-block-image aligncenter size-large”>&lt;/figure&gt;위쪽 정렬이 완성! 끝


LED Blinking 코드 작성 – STM32F407G DISC1 보드

머 간단하게 LED 제어하는 코드를 찾아 봤다. 아래 링크에 아주 자세하게 설명되어 있다.

<figure class=“wp-block-embed is-type-wp-embed is-provider-microcontrollers-lab wp-block-embed-microcontrollers-lab”><div class=“wp-block-embed__wrapper”>> LED Blinking Tutorial STM32F4 Discovery Board – GPIO Pins with HAL Library

<iframe class=“wp-embedded-content” data-secret=“Skov074a5N” frameborder=“0” height=“282” marginheight=“0” marginwidth=“0” sandbox=“allow-scripts” scrolling=“no” security=“restricted” src=“https://microcontrollerslab.com/led-blinking-tutorial-stm32f4-discovery-board-gpio-hal-library/embed/#?secret=C4y8pxVVyu#?secret=Skov074a5N” style=“position: absolute; clip: rect(1px, 1px, 1px, 1px);” title=““LED Blinking Tutorial STM32F4 Discovery Board – GPIO Pins with HAL Library” — Microcontrollers Lab” width=“500”>&lt;/iframe&gt;``&lt;/div&gt;``&lt;/figure&gt;핵심 코드는 아래

void StartDefaultTask(void *argument)
{
  /* init code for LWIP */
  MX_LWIP_Init();

  /* init code for USB_HOST */
  MX_USB_HOST_Init();
  /* USER CODE BEGIN 5 */
  /* Infinite loop */
  for(;;)
  {
    osDelay(10);
    HAL_GPIO_WritePin(VBUS_SW_GPIO_Port, VBUS_SW_Pin, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET);
    osDelay(1000);
    HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_RESET);
    osDelay(1000);
  }
  /* USER CODE END 5 */
}

당연히 보드에 해당 핀이 연결되어 있으니 편하게 할 수 있다. STM32F407G-DISC1 보드는 아래 처럼 LED가 이미 연결되어 있다.

<figure class=“wp-block-image size-large”>&lt;/figure&gt;자신의 보드라면 해당 핀에 LED를 연결해야 한다.

STM32CubeIDE 를 사용한다면 ioc 파일을 열어 해당 핀을 아래 그림처럼 GPIO_Output으로 설정하고, 원하는 지점에 위의 코드를 참고해서 추가하면 LED가 막 켜졌다 꺼졌다 한다.

<figure class=“wp-block-image size-full”>&lt;/figure&gt;결과는 아주 LED가 빨, 파, 녹, 주황인가 이렇게 블링 블링하네

레퍼런스 사이트

https://medium.com/@rlamarrr/introduction-to-stm32cube-blinking-an-led-61469168f9e4


STM32F407G-DISC1 보드 Pinout

STM32F407G-DISC1 보드 Pinout 그림을 소장용으로 보관한다.

<figure class=“wp-block-image size-large”>&lt;/figure&gt;복잡해도 머, 쓰는 것만 쓰긴하지만 찾아볼 때 좋다


STM32 – UART Interrupt 멈추는 현상 해결

시리얼 루프백을 테스트 하다 보면, 인터럽트가 걸리다가 갑자기 동작안하는 경우가 있었는데 아래 글이 엄청 도움이 되었다.

고수의 숨결이 느껴짐

stm32 uart interrupt 멈추는 현상( RXNEIE disable, overrun)

https://kjt9109.tistory.com/entry/stm32-uart-interrupt-%EB%A9%88%EC%B6%94%EB%8A%94-%ED%98%84%EC%83%81-RXNEIE-disable-overrun

결론적으로는 TX 할때 인터럽트를 막아주고 해야 한다는 얘기였음

꼭 코드에 적용하시길

    /* USER CODE BEGIN 3 */
	  HAL_NVIC_DisableIRQ(USART1_IRQn); //Rx Callback 함수 Disable
	  HAL_UART_Transmit(&huart1, &rx_data, rx_data, 100);
	  HAL_NVIC_EnableIRQ(USART1_IRQn);  //Rx callback 함수 enable

<figure class=“wp-block-image size-large”>&lt;/figure&gt;


STM32 CubeIDE 단축키 설정 – 컴파일, 디버그

CubeIDE 단축키 설정 방법,

메뉴 > Window > Preferences 는 눌러서 아래 창이 뜨면 Keys 를 찾아서 아래처럼 설정하면 된다.

컴파일, 빌드는 F7

디버깅은 F5

로 설정했다.

[TT] STM32 CubeIDE 단축키 설정 (Shortcut/Binding)

<figure class=“wp-block-image size-full”><figcaption class=“wp-element-caption”>Build All 단축키 설정&lt;/figcaption&gt;``&lt;/figure&gt;


펌웨어 – STM32CubeIDE printf() 사용하기

이게 기본인데, 머가 어렵다 임베디드는

아래글을 꼭 참고하자. 나는 2번째 방법을 사용했다.

https://wiki.loliot.net/docs/mcu/stm32/stm32-printf-usage-stm32cubeide/

#ifdef __cplusplus
extern “C” int _write(int32_t file, uint8_t *ptr, int32_t len) {
#else
int _write(int32_t file, uint8_t *ptr, int32_t len) {
#endif
if( HAL_UART_Transmit(&huart1, ptr, len, len) == HAL_OK ) return len;
else return 0;
}


Nextion HMI Display – 자동대기 모드

그냥

thsp=5

5초 후 대기모드“

이렇게 명령을 주면 된다.

5초 후에 대기 모드로 가라

그럼, 일단 깨우려면

sleep=0

슬립모드에서 빠져나가라“

터치로 자동으로 깨어나게 하려면 미리

thup=1

wake on touch“

이렇게 하면 된다.

<figure class=“wp-block-image size-large”><figcaption class=“wp-element-caption”>자동 대기 모드 진입 테스트&lt;/figcaption&gt;``&lt;/figure&gt;


Nextion HMI – NX8048P070-011C 정보

Nextion 7인치 HMI의 사이즈와 수치 정보를 저장해 둔다.

전체 시리즈의 비교 테이블을 보면, 대충 스펙을 선택할 수 있다.

NEXTION INTELLIGENT HMI DISPLAY

제품의 종류가 사이즈별로, 터치 방식별로 구분되어 있다. RTC가 필요하다면 고급형으로 선택해 볼만 하다.

디스플레이 오프로딩이 가능하니깐 엄청 편하다. UART 제어만 하면 화면을 맘대로 꾸밀 수 있다니 저가 MCU에서는 짱이다!

<figure class=“wp-block-table”>| MODEL NAME | NX4827P043 | NX8048P050 | NX8048P070 | NX1060P101 |
|---|---|---|---|---|
| Size | 4.3″ | 5.0″ | 7.0″ | 10.1″ |
| Resolution | 480*272 | 800*480 | 800*480 | 1024*600 |
| Touch Panel | RTP/CTP | RTP/CTP | RTP/CTP | RTP/CTP |
| Color | 65536 | 65536 | 65536 | 65536 |
| Flash | 128 MB | 128 MB | 128 MB | 128 MB |
| RAM | 512KB | 512KB | 512KB | 512KB |
| MCU | 200 MHz | 200 MHz | 200 MHz | 200 MHz |
| EEPROM | 1024 Byte | 1024 Byte | 1024 Byte | 1024 Byte |
| GPIOs | 8 | 8 | 8 | 8 |
| RTC | Yes | Yes | Yes | Yes |
| Datasheet | NX4827P043-011RNX4827P043-011CNX4827P043-011R-YNX4827P043-011C-Y | NX8048P050-011RNX8048P050-011CNX8048P050-011R-YNX8048P050-011C-Y | NX8048P070-011RNX8048P070-011CNX8048P070-011R-YNX8048P070-011C-Y | NX1060P101-011R-INX1060P101-011C-I |
| Price | $ 46.9 – 59.9 | $ 63.9 – 74.9 | $ 79.9 – 102.4 | $ 124 – 134 |

&lt;/figure&gt;Notes: Nextion product numbering rules , eg. NX1060P101-011R-I

NX – Nextion
10 – Horizontal resolution: 32-320 40-400 48-480 80-800 10-1024
60 – Vertical resolution: 24-240 27-272 48-480 60-600

P – Series model: T=Basic series, K=Enhanced series, P=Intelligent series
101 – Display size: ”101″ means 10.1 inch; I – Display type: IPS; Y – with enclosure
R – Touch screen type: R=resistive touch, C=capacitive touch

사용하고자 하는 7인치 제품의 데이터시트 웹사이트 위치는

<figure class=“wp-block-embed is-type-wp-embed is-provider-nextion wp-block-embed-nextion”><div class=“wp-block-embed__wrapper”>> NX8048P070-011C

<iframe class=“wp-embedded-content” data-secret=“46y9gVMD26” frameborder=“0” height=“282” marginheight=“0” marginwidth=“0” sandbox=“allow-scripts” scrolling=“no” security=“restricted” src=“https://nextion.tech/datasheets/nx8048p070-011c/embed/#?secret=JidsvqSafS#?secret=46y9gVMD26” style=“position: absolute; clip: rect(1px, 1px, 1px, 1px);” title=““NX8048P070-011C” — Nextion” width=“500”>&lt;/iframe&gt;``&lt;/div&gt;``&lt;/figure&gt;Dimension 사이즈 수치 정보는 아래 링크를 클릭하면 된다.

<figure class=“wp-block-image size-full”>&lt;/figure&gt;NX8048P070-011C_Dimension

Electronic Characteristics

기본적으로 5V로 동작하도록 설계되어 있네, 한 430mA 정도 소비된다니 참고하고,

슬립모드에서는 170mA 약간 딸리면 컨트롤이 필요 할듯

<figure class=“wp-block-table”>| | Test Conditions | Min | Typical | Max | Unit |
|---|---|---|---|---|---|
| Operating Voltage | | 4.75 | 5 | 6.5 | V |
| Operating Current | VCC=+5V, Brightness is 100% | – | 430 | – | mA |
| SLEEP Mode | – | 170 | – | mA |
| Power supply recommend:5V, 1.0A, DC |

&lt;/figure&gt;#### Memory Features

메모리가 엄청 크게 120메가, 폰트 그림들을 왕창 넣어두고 사용할 수 있네

Crop 이미지 같은 기법을 많이 쓰는것 같은데, 저장공간이 커서 가능하겠다

<figure class=“wp-block-table”>| Memory Type | Test Conditions | Min | Typical | Max | Unit |
|---|---|---|---|---|---|
| FLASH Memory | Store fonts and images | | | 120 | MB |
| User Storage | EEPROM | | | 1024 | BYTE |
| RAM Memory | Store variables | | | 512 | KB |
| Instruction Buffer | Instruction Buffer | | | 4096 | BYTE |

&lt;/figure&gt;고급형 모델은 아래와 같은 특징을 가지고 있다.

INTELLIGENT SERIES FEATURES

– Available Display Size in 4.3″, 5.0″, 7.0″ and 10.1″

– RGB 65K Resistive/Capacitive touchscreen

– Onboard MCU 200MHz and up to 128MB for HMI project

– Onboard RTC,EEPROM, 8 digital GPIOs (2 PWM capable) and audio interface

– XH2.54 4P (+5V, TX, RX, GND) TTL serial interface

– 1% interval adjustable brightness

– CE and RoHS Compliant

<figure class=“wp-block-image aligncenter size-full is-resized”>&lt;/figure&gt;


Nextion HMI – RTC Format 맞추기

이거 숫자로 00, 01, 02 이렇게 변하기를 원하는데 그냥 rtc 를 읽으면

0,1,2,…10, 11,… 이렇게 변화는 값을 볼 수 있다.

자리수가 안맞아서 약간 안좋아 보이는것을 해결하고 싶다. 약간 코딩이 들어간다.

n0.val = rtc5

이렇게 하면 그냥 0,1,2,…, 10, 11 이렇게 표현된다.

그래서 일단 String 변수를 하나 두고 여기에 rtc5 값을 변환해서 넣고 Text 를 하나두고 txt 값을 변수값을 쓰도록 한다.

코드는 아래와 같다.

일단, Timer 인터럽트를 하나 두고 Timeout 이벤트 발생시 마다 rtc5 (초) 값을 읽어서 텍스트 박스로 출력하게 했다.

covx rtc5,va0.txt,2,0
t52.txt=va0.txt //초
covx rtc4,va0.txt,2,0
t53.txt=va0.txt //분
covx rtc3,va0.txt,2,0
t54.txt=va0.txt //시
covx rtc2,va0.txt,2,0
t55.txt=va0.txt //일
covx rtc1,va0.txt,2,0
t56.txt=va0.txt //월
covx rtc0,va0.txt,4,0
t57.txt=va0.txt //년

covx 함수로 2자리 숫자로 포맷을 두는 것이 추가된 코드이다.

<figure class=“wp-block-image size-full”>&lt;/figure&gt;결과는 다음과 같이 초가 2자리 맞추어서 잘 보여진다.

<figure class=“wp-block-image size-full”>&lt;/figure&gt;


Nextion upload 프로토콜 via Serial

시리얼로 nextion 디바이스의 내용을 업데이트 하려면 아래 프로토콜을 분석해서 작성해야 한다.

물론 Nextion Editor or use the microSD card 를 사용하면 아주 편하게 알아서 해주는데, 이를 구현해야 한다면 아래 문서를 참고해서 프로그래밍 해야 한다.

<figure class=“wp-block-embed is-type-wp-embed is-provider-nextion-distribution wp-block-embed-nextion-distribution”><div class=“wp-block-embed__wrapper”>> Nextion Upload Protocol v1.1

<iframe class=“wp-embedded-content” data-secret=“DR3Mmz6Ti2” frameborder=“0” height=“282” marginheight=“0” marginwidth=“0” sandbox=“allow-scripts” scrolling=“no” security=“restricted” src=“https://nextion.ca/documentation/nextion-upload-protocol-v1-1/embed/#?secret=DR3Mmz6Ti2” style=“position: absolute; clip: rect(1px, 1px, 1px, 1px);” title=““Nextion Upload Protocol v1.1” — Nextion Distribution” width=“500”>&lt;/iframe&gt;``&lt;/div&gt;``&lt;/figure&gt;이거, 피씨에서 살짝 돌려보고 싶으면 파이썬 코드도 하나 발견했다.

https://github.com/MMMZZZZ/Nexus/blob/master/Nexus.py

개발자의 삶은 고달프다!

<figure class=“wp-block-image size-large”>&lt;/figure&gt;


Nextion HMI – 전역 변수 사용 방법 (페이지간 값 전달)

페이지 간에 변수값을 공유하고 싶다면,

Nextion Advanced Application 2: Use Global and Variable to Transmit Values Among Pages 이 글을 참고하면 된다.

https://itead.cc/nextion/nextion-advanced-application-2-use-global-and-variable-to-transmit-values-among-pages/

결론적으로는 쉽게 쓸수 있다.

변수 아이콘은 눌러 변수를 만들고, Global로 설정해 두면 어떤 페이지에서도 접근이 가능하다.

<figure class=“wp-block-image size-full”>&lt;/figure&gt;주의할 점은, 페이지까지 포함해서 변수를 접근해야 한다는 것이다. global로 선언했지만 변수명을 그대로 쓸수 있는 페이지는 그 변수가 놓여진 페이지를 제외하고는

pagename.변수명.val = 어떤값

형태로 접근해서 사용하면 된다.

위의 va_next_page 라는 변수를 page3 에 만들어 두었다면 다음과 같이 사용하는 것이다.

page3.va_next_page.val=2

이상 끝!


Xilinx – PROM mcs 설정 – spi buswidth clock 조정

부팅 후 Done 시그널이 뜨는데 너무 늦게 뜬다. 그럼 bit 만들때 .xdc 파일에 설정을 해 줘야 한다는 것이 핵심

QSPI 를 쓸 수 있게끔, 매뉴얼로 세팅이 필요하다. spi x1 모드에 3MHz 클럭으로 잡혀 있어서 bit 크기에 따라 엄청 느릴수도 있다.

Vivado 같은 툴에서 Implementation design 이 뜬 상태에서 Device configuration 이 활성화 되면 그쪽에서 수정할 수도 있고

아래 레퍼런스 처럼 그냥 .xdc 파일에 들어가서 수정을 직접 해줘도 된다.


FPGA – Nexys A7 보드 터미널 설정 on Windows

https://wiznxt.tistory.com/1037으로 이동


Xilinx JTAG – HS2, HS3, Platform Cable USB II

이곳으로 이동


Edit page
Share this post on:

Previous Post
Xilinx FPGA 하드웨어 설정 가이드 (JTAG & PROM MCS)
Next Post
Python 실전 노트