저희 STM32L152 보드로 UART3채널 테스트했습니다.
UART 3Ch 송수신 Test 했습니다.
같은 객체로 해서 3채널 시험도 했습니다.
또 객체를 다르게하여 3채널 Test 했으며,
전송속도 도 다 다르게하여 실험 했습니다.
아래 핀 신호는 현재 STM32L152RE UART 각 채널별 송수신 PIN 신호 입니다.
제가 직접 Test 했습니다.
UART2 = 1152000 == TX : PA2, RX : PA3
UART4 = 9600 == TX : PC10, RX : PC11
UART5 = 57600 == TX : PC12, RX : PD2
UART1 = 19200 == TX : PA9, RX : PA10
UART3 == TX : PB10, RX : PB11
My 초기화
from machine import UART
import pyb
import time as tm
from machine import Pin
uart = UART(2, 115200)
#uart.init(115200, bits=8, parity=None, stop=1) #재정의
#uart.init(115200, bits=8, parity=None, stop=1, timeout=100) #재정의
uart.init(115200, bits=8, parity=None, stop=1, timeout=500, read_buf_len=5) #재정의
#uart.init(115200, bits=8, parity=None, stop=1, timeout=500, tx = PA2, rx = PA3 ) #재정의 =pin을 써주면 동작하지 않음
#uart.init(115200, bits=8, parity=None, stop=1, timeout=500, rx = Pin("PA3"), tx = Pin("PA2")) #재정의 =pin을 써주면 동작하지 않음
#uart.init(115200, bits=8, parity=None, stop=1, timeout=500, rx = Pin("PA3"), tx = Pin("PA2"),read_buf_len=64) #재정의
1. test 코드
while True:
#uart.write("Song\n")
#uart.writechar(5 + 0x30) #정수만 사용가능
if uart.any(): # if uart.any() > 0:
print(uart.readline()) #uart.read(5), uart.read()
pyb.delay(500)
그런데 이상하게도 STM32에서만 Pin설정이 안 먹는거 같습니다. 핀은 객체로 선언해서 사용해야한다고 합니다.
tx = Pin("PA2), rx = Pin("PA3") == 요게 안 먹어요 = UART가 선언하면 다운 됩니다.
참고로 아래 인터럽트 함수는 동작하지 않습니다.
Availability: WiPy. 보드에서만 동작합니다.