UART
USB to UART Board 부품 구입기
재고가 없다!? 부품 주문하려니까 FT230XS 재고가 없다. 부품 변경하기로 했던 당시에는 충분했던 것 같은데 말이다. 아이러니하게 CP2102N은 여유가 있다. 지금에 와서 또 설계를 바꿀 수 없고, 재고가 들어올 때까지 기다릴 수밖에 없을 것 같다. 부품 쇼핑 사이트별로 입고 날짜가 다른데 조사해봤더니 아래와 같았다. Digi-Key: 21년 9월 16일 Mouser: 21년 8월 26일 element14: 22년 2월 7일 RS: 21년 7월 22일 일정상 RS에서 구매하는 게 좋아 보인다. RS는 좀 비싸네? 그런데 함께 구매하려는 2012 규격의 LED 칩이 RS에서는 단가도 높고 최소 주문 수량도 많아서 고민이 좀 필요했다. 그냥 국내에서 값싼 중국산을 사서 써도 되겠지만 그러고 싶지 않았다..
USB to UART 변환 보드 제작 주문 맡겼다.
FT230XS을 사용하기로 하다 별것 아닌 단순한 보드임에도 작업하는 데 정말 오래 걸렸다. 회사 일도 바쁘고 육아도 하느라 작업 시간 내기가 힘들었는데, 그래도 포기하지 않고 끝낸 결과물이다. 처음에는 Silicon Labs의 CP2102N으로 만들 계획이었는데, 부품 수급이 불안정하기도 하고 패키지가 QFN타입이라 수삽 하기 어려울 것 같아 다른 칩으로 바꾸기로 하였다. 그래서 선택한 게 FTDI의 FT230XS이다. CP210X시리즈가 사용하기 편하다고 하는데, FT230XS도 기능이 단순해서 회로 그리기도 아주 쉬웠다. 선배의 조언 아트웍 작업할 때 고민을 많이 했다. 처음에는 보기 좋게 부품들을 가지런히 줄 세우고 싶었다. 그런데 회사 선배가 몇 가지 조언을 해주었는데 그에 따라서 전면 수정 했..
[STM32] 레지스터 직접 접근 방식으로 UART 통신 예제 구현하기
HAL 드라이버 없이, 레지스터 접근만으로 UART 통신 예제를 만들었다. 처음 시작할 때는 어디서부터 시작해야 할 지 몰라 막막했고, 하나하나 이해하면서 진행하느라 완성하는 데 약 2시간이 걸렸다. 전체 흐름을 이해하니 생각보다 별것 아니라는 것을 알게 되었다. 레지스터에 직접 접근하는 것도 익숙해졌고, 각 페리페럴에 공급될 클록 신호가 만들어지는 과정도 살펴볼 수 있었다. 프로젝트를 만들 때 HAL 드라이버를 포함하지 않았기 때문에 접근할 레지스터 주소를 데이터 시트를 확인해가며 직접 입력하여 만들었다. Reference Manual(RM0008)의 3.3 Memory Map을 참고하면 좋다. 이번 예제에 필요한 레지스터 주소는 아래와 같다. (사실 USART1은 사용하지 않는데 모르고 만들었다. 아..
[STM32] UART 통신 수신 코드 구현 방법
CubeMX에서 사용하고자 하는 UART 페리페럴 설정을 합니다. 저는 프로젝트를 만들면 사용자에게 제안하는 기본 모드 설정(Default mode)을 사용한 상태입니다. 기본 설정은 USART 3번 채널을 사용합니다. 기본 설정 상태에서는 UART관련 인터럽트를 사용할 수 없습니다. 따라서 데이터 송수신과 관련한 인터럽트를 발생시키도록 하는 설정이 필요합니다. [NVIC Settings] 탭에서 "USART3 global interrupt"를 활성화 한 뒤 저장합니다. (.ioc 파일을 저장하면 자동을 code generate 될 것입니다.) 그다음은 데이터 수신이 이루어졌을 때 인터럽트를 발생시키도록 설정하는 함수 HAL_UART_Receive_IT()를 추가합니다. 위치는 main 함수 안, whi..