在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > 老宇哥帶你玩轉 ESP32:04 串口玩起來是真方便

            老宇哥帶你玩轉 ESP32:04 串口玩起來是真方便

            發(fā)布人:芯片之大家 時間:2023-07-06 來源:工程師 發(fā)布文章
            image.png


            今天我們來玩兒串口

            概述

            ESP32 芯片有3 個 UART 接口,UART0,UART1,UART2,支持異步通信和 IrDA,通信速度最高可達 5Mbps,3 個接口可以被 DMA 或 CPU 直接訪問,3 個串口帶發(fā)送接收 FIFO,共享 1024*8bit 的 RAM,通過串口,我們可以非常方便的跟其它外設進行通信或者打印數據。

            硬件
            image.png


            上圖是硬件參考設計,我把默認的串口標注出來了,我們可以在Arduino的庫中看到默認的引腳,如下圖:

            image.png


            image.png


            UART0 引腳直接在函數里面定義了,UART1、UART2使用宏定義,大家還記得我們在GPIO章節(jié)中說的嗎,ESP32有GPIO矩陣,外設都可以隨意映射到絕大部分的引腳,比如我們想把UART2的引腳改變到GPIO26 GPIO27這兩個上,我們直接調用相關函數就行了,這些都是可以實現的,硬件上非常靈活。

            U0TXD 線上需串聯 499 ? 電阻用于抑制 80 MHz 諧波。ESP32 UART 串口電路如下圖所示:

            image.png


            這里還需要注意下,UART1的默認引腳為GPIO9,、GPIO10,這兩個接口一般用于連接外部Flash,程序中默認使用這兩個引腳的,所以我們在用的時候一定記得改到別的IO口。

            軟件

            關于串口的一些概念,包括原理,波特率,停止位,奇偶校驗,流控等概念,這些概念非常基礎,這里就不展開篇幅說了,需要的小伙伴自行了解,不同芯片,原理都是一樣的。

            我們講一下基礎的使用

            首先我們需要在setup()中對串口進行初始化,非常簡單,就一行代碼搞定:

            Serial.begin(115200);

            這里默認是UART0的,將UART0波特率初始化為115200,其它參數都是默認的,如果我們想將UART0的TX RX改一下呢,我們看下面:

            Serial.begin(115200,SERIAL_8N1,26,27);

            通過上面的函數,我們就把RX改到了26,TX改到了27,第一個參數為波特率設置,如果輸入0就會自動監(jiān)測波特率,第二個為串口配置參數,SERIAL_8N1為8位數據位,無校驗位,1位停止位的意思,還有其它參數,大家可以自行到源碼中看看,加深印象。

            看到這里才體會到GPIO矩陣的妙處,硬件設計大大的簡化啊!

            關于串口的函數,我們這里介紹幾個常用的,完整的可以在HardwareSerial類中看到。

            void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false, unsigned long timeout_ms = 20000UL); //串口初始化void end();//失能串口void updateBaudRate(unsigned long baud);//重新設置波特率int available(void);//返回串口接收緩沖區(qū)中的數據int read(void);//返回串口接收緩沖區(qū)的一個字節(jié)的數據,之后將緩沖區(qū)中的本字節(jié)刪除void flush(void);//等待串口收發(fā)數據完畢size_t write(uint8_t);//寫數據到TX緩沖區(qū)size_t setRxBufferSize(size_t);//設置接收緩沖區(qū)的大小

            這里只是簡單展示幾個函數,具體的用法有不懂的,或者想了解全部函數的,可以在arduino-esp32中打開具體的庫看用法,只有這樣,大家才能深刻了解,老宇哥這里只是帶大家進門。

            庫函數中有標準輸入輸出函數,所以打印函數必不可少的了,我們常用的打印函數如下:

            Serial.print("芯片之家!"); //打印數據Serial.println("This is a uart0 demo!"); //打印并換行

            當然,也可以各種格式化打印,大家可以自行嘗試!

            Serial.println(data) //從串行端口輸出數據,跟隨一個回車(ASCII 13, 或 'r')和一個換行符(ASCII 10, 或 'n')。這個函數所取得的值與 Serial.print()一樣。Serial.println(b) //以十進制形式輸出b的ASCII編碼值,并同時跟隨一個回車和換行符。Serial.println(b, DEC)// 以十進制形式輸出b的ASCII編碼值,并同時跟隨一個回車和換行符。Serial.println(b, HEX) //以十六進數據形式輸出b的ASCII編碼值,并同時跟隨一個回車和換行符。Serial.println(b, OCT)//以八進數據形式輸出b的ASCII編碼值,并同時跟隨一個回車和換行符。Serial.println(b, BIN)//以二進數據形式輸出b的ASCII編碼值,并同時跟隨一個回車和換行符。Serial.print(b, BYTE)//以單個字節(jié)輸出b,并同時跟隨一個回車和換行符。Serial.println(str)//如果 str是一個字符串或數組,輸出整個 str的 ASCII編碼字符串。Serial.println()//僅輸出一個回車和換行符。

            完整程序1:

            void setup()
            {  Serial.begin(115200);
            } 
            void loop()
            {  Serial.print("芯片之家!"); 
              Serial.println("This is a uart0 demo!"); 
              delay(1000);
            }
            image.png


            完整程序2:

            int recData; //接收的數據
             void setup() {
              Serial.begin(115200); 
            } 
            void loop() {  // 收到什么發(fā)什么數據
              if (Serial.available() > 0) {    // 讀取一個字節(jié)
                recData = Serial.read();
                Serial.print("received: ");
                Serial.println(recData,HEX);
              }
            }
            image.png


            感謝大家,關于ESP32的學習,希望大家Enjoy!您的 轉發(fā)點贊 就是我繼續(xù)創(chuàng)作的最佳動力!


            *博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



            關鍵詞: 芯片

            相關推薦

            技術專區(qū)

            關閉