아날로그 입력은 전위차계를 회전시켜 STM32F10C8 핀 PA0(0 ~3.3V)에서 촬영됩니다. 그런 다음 이 입력 값은 아날로그에서 디지털 값(0 ~4096)으로 변환되고 이 디지털 값은 SPI 통신을 통해 8비트(바이트) 데이터만 한 번에 전송할 수 있으므로(0~255)에 더 매핑됩니다. 보이드 루프(void) { 바이트 마스터센드, 마스터수신; int pot = analogRead(PA0); // 아날로그는 핀 PA0 MasterSend = 맵에서 입력 포트 값을 읽습니다(pot,0,4096,0,255); // 0에서 4096 디지털쓰기(SS, LOW)로 냄비 값을 변환하는 데 사용됨 마스터 수신 = SPI.transfer (마스터 센드)에 연결된 슬레이브와의 통신; 슬레이브에 마스터 엔드 값을 보내또한 슬레이브 Serial.println에서 값을 수신 («마스터 STM32에 슬레이브 아두 이노»);; 직렬 모니터 직렬.println (마스터 수신)에 사용; [0,0] lcd.print(«마스터: STM32»); lcd.setCursor (0,1); lcd.print(«살베발:»); lcd.print(마스터수신); 슬레이브 아두이노 딜레이로부터 수신된 값을 넣는다(500); 디지털 쓰기(SS, HIGH); 슬레이브 lcd.clear()와 통신하지 않도록 SS 라인을 HIGH로 다시 확인합니다. 아래 표는 Arduino와의 STM32 SPI 통신에 연결된 핀을 보여 주며, 이전 자습서에서는 두 개의 Arduino 보드 간의 SPI 및 I2C 통신에 대해 배웠습니다. 이 튜토리얼에서 우리는 STM32F103C8이며, SPI 버스를 사용하여 아두 이노 보드와 통신 할 블루 필 보드하나의 아두 이노 보드를 대체합니다. { lcd.begin (16,2); // LCD를 16×2 모드 lcd.setCursor (0,0); // 첫 번째 행및 첫 번째 열 lcd.print에서 커서 설정(«회로 다이제스트»); // LCD 지연에 회로 다이제스트(3000); // 3초 동안 지연()////지우기 LCD 디스플레이 직렬(serial.begin) 9600); Baud Rate 9600 핀모드(SS, OUTPUT)에서 직렬 통신을 시작합니다. SS를 출력 SPI.begin(); SPI 통신 SPI.setClock분할(SPI_CLOCK_DIV16)을 시작합니다. 16 (72/16 = 4.5Mhz) 디지털 쓰기 (SS, HIGH)에서 SPI 통신에 대한 시계를 설정합니다. 슬레이브 셀렉트를 HIGH로 설정 (따라서 마스터는 슬레이브와 연결되지 않습니다) } 1. 우선 우리는 LCD 기능을 사용하기 위한 SPI 통신 기능 및 LCD 라이브러리를 사용하기 위한 SPI 라이브러리를 포함해야 합니다.