Arduino

簡單好玩的Arduino通訊埠介紹

Arduino具有UART、I2C、SPI、GPIO

GPIO : 全名是General Purpose Input/Output,他可以根據程式指令,設定輸入或輸出為高電壓或者低電壓

    pinMode(pin, mode);   //mode可為INPUT or OUTPUT

    digitalWrite(ledpin,HIGH);   //output mode

    val=digitalRead(inPin);       //input mode

 

UART : 全名是Universal Asynchronous Receiver/Transmitter,屬於非同步傳輸通稱,如: RS232、RS422、RS485

    RS232(Recommemded Standard): 為全雙工串列傳輸,有開始字元0,結束字元1,實現方式簡單,但只能連接一個裝置

    RS485: 差動半雙工,多用於多裝置連接

    RS422: 差動全雙工,多用於長距離傳輸,可多裝置

 

I2C(Inter-Integrated Circuit) : 串列通訊匯流排,半雙工同步傳輸,有一條時脈線(SCL)和一條資料線(SDA),為廣播式(master-slave),主要為了讓微控制器或CPU以較少的接腳連接眾多週邊低速設備

    三種通訊速度 : 

  • Standard : 100 Kbps
  • Fast mode : 400 Kbps
  • High-speed mode : 3.4 Mbps

    在傳送的第一個位元組上指定 7 bits位址 or 10 bits address,7 bits address只能0x08~0x77,10 bits address可以0x77以上,如果有相同位址則使用多工器。

    有雙向確認機制,確定週邊裝置有跟上。

  • idle時,兩條線都為high
  • 只有SCL為LOW時,SDA才可以改變HIGH、LOW
  • SCL為HIGH時,SDA變動代表start or stop
  • start、 stop由master發出
  • start之後,bus視為busy
  • 資料為 8 bits長,而且每 8 bits就要有ack

start + address + write(0) + slave_ack + data + slave_ack + data + slave_ack + data + slave_ack + stop

start + address + read(1) + slave_ack + data + master_ack + data + master_ack + data + master_ack + stop

 

SPI(Serial Peripheral Interface Bus) : 全雙工串列同步傳輸,包含master、slave,無確認機制

    SCLK(Serial Clock): 由master發出

    MOSI(master output,slave input)

    MISO(master input,slave output)

    SS(slave selected): 低凖位表選取

 

 

 

 

< 興趣很難發覺,只有多方嘗試 >

                       - 這裡紀錄著我的心路歷程,每一篇文章都代表著進步

分享不錯的練習平台  https://www.codingame.com/

一起進步吧