STM32를 Arduino 개발 환경에서 사용할 때 직렬 포트 조사 (STM32duino + STM32F103C8 : Blue Pill)

BluePill 시리얼 포트


h tp // 우우키. stm32의. 코 m / 속눈썹 s / 아 / 어 / B ぅ에 핏 l 피노 t. 기 f

이 그림에 따르면,

PIN NAME
USART


PA9
TX1

PA10
RX1

PB6
TX1

PB7
RX1

PA2
TX2

PA3
RX2

PB10
TX3

PB11
RX3

하테?
TX1과 RX1이 두 가지 있습니다.
그러고 보면, Arduino 개발 환경(STM32duino)상에서는 USB 포트가 가상 시리얼 포트가 되어 있어 시리얼 모니터등도 사용할 수 있게 되어 있군요. 소프트웨어 시리얼과의 겸용도 포함해, 거기 어떻게 되는지 조사해 보았습니다.

STM32duino의 Serial 객체


이런 느낌의 프로그램으로 조사해 보았습니다.

void setup(){
  Serial.begin(19200);
  while (!Serial.isConnected()) delay(100);
  Serial.println("Serial port");
}

...

이것이 어디에 출력되는지는 Upload Method 에 따라 다릅니다.

Upload Method
Serial 객체의 출력 대상
업로드 대상 (Blue Pill의 물리적 포트)
Upload 연결에 사용한 하드웨어
Linux의 장치


STM32duino bootloader
Blue Pill의 microUSB 커넥터
Blue Pill의 microUSB 커넥터
Micro USB 케이블
/dev/ttyACM0 (Maple Mini)

Serial
PA9 TX1 PA10 RX1
PA9 TX1 PA10 RX1
아키즈키 전자 「FT232RQ USB 시리얼 변환 키트 시리얼 어댑터」

STLink
Blue Pill의 microUSB 커넥터
SWD(직렬 와이어 디버그) 포트
ST-LINK/V2(아마 파티몬)


Serial1,Serial2,Serial3


하드웨어 직렬 포트가 많이 있지만, 어디에 연결되어 있습니까?
USB 부트 로더에서 작성한 경우 및 ST-Link로 작성한 경우

PinName
Signal
Serial Object


PA9
TX1
Serial1

PA10
RX1
Serial1

PB6
TX1

PB7
RX1

PA2
TX2
Serial2

PA3
RX2
Serial2

PB10
TX3
Serial3

PB11
RX3
Serial3

TX1과 RX1에 USB 시리얼을 연결하여 쓴 경우

PinName
Signal
Serial Object


PA9
TX1
Serial

PA10
RX1
Serial

PB6
TX1

PB7
RX1

PA2
TX2
Serial1

PA3
RX2
Serial1

PB10
TX3
Serial2

PB11
RX3
Serial2

음, USB에 의한 가상 시리얼 포트를 사용할 수 있을 때는 그것이 Serial 객체에, 그렇지 않으면 USART1이 Serial 객체가 되어, 각각으로 번호가 어긋나는 것 같네요.
덧붙여서 TX1과 RX1에 USB 시리얼을 연결해 쓴 경우, Serial3을 지정하면 에러가 되었습니다.

STM32F103 칩의 직렬 포트


그런데 위 그림의 PB6, PB7에 있는 TX1, RX1이란 무엇입니까?
데이터시트를 보았습니다.
h tp // w w. St. 코 m / 콘텐 t / st_ 코 m / 자 / p 로즈 cts / 미 c 로콘 t 롯 rs / stm32-32 st m m m s / stm32f1 - 세리 s / stm32f103 / stm32f103c8. HTML
이에 따르면, STM32F103Cx의 USART는 3개 있다.

PIN 이름
USART
Default/Remap


PA9
USART1_TX
Default

PA10
USART1_RX
Default

PB6
USART1_TX
Remap

PB7
USART1_RX
Remap

PA2
USART2_TX
Remap

PA3
USART2_RX
Remap

PA10
USART3_TX
Remap

PA11
USART3_RX
Remap

그래서 소프트웨어의 지정에 의해 USART1은 PA9/PA10에서 PB6/PB7로 리맵 할 수 있다고 합니다.
아직 조사하지 않았지만 Arduino 개발 환경에서도 그러한 설정을 할 수 있을지도 모르겠네요.

STM32duino의 가상 직렬 포트


AVR을 사용한 Arduino 개발 환경에서는 비교적 가상 시리얼 포트를 자유롭게 사용할 수 있으므로 STM32duino에서도 사용할 수 있을까 생각했습니다만

#include <SoftwareSerial.h>
그러면 오류가 발생했습니다.
h tp // w w. stm32의. 이 m/ゔぃ에 w와 피 c. php? f=13&t=6
이런 논의나 개발도 되고 있는 것 같습니다만, 적어도 STM32duino의 본가이다

그럼 소프트웨어 시리얼은 사용할 수 없는 것 같습니다.

좋은 웹페이지 즐겨찾기