chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ESP32學(xué)習(xí)筆記:串口

CHANBAEK ? 來(lái)源:跳動(dòng)的字節(jié) ? 作者:曉宇 ? 2023-07-13 17:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天我們來(lái)玩兒串口。

概述

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

硬件

圖片

上圖是硬件參考設(shè)計(jì),我把默認(rèn)的串口標(biāo)注出來(lái)了,我們可以在Arduino的庫(kù)中看到默認(rèn)的引腳,如下圖:

圖片

圖片

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

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

圖片

這里還需要注意下,UART1的默認(rèn)引腳為GPIO9,、GPIO10,這兩個(gè)接口一般用于連接外部Flash,程序中默認(rèn)使用這兩個(gè)引腳的,所以我們?cè)谟玫臅r(shí)候一定記得改到別的IO口。

軟件

關(guān)于串口的一些概念,包括原理,波特率,停止位,奇偶校驗(yàn),流控等概念,這些概念非?;A(chǔ),這里就不展開(kāi)篇幅說(shuō)了,需要的小伙伴自行了解,不同芯片,原理都是一樣的。

我們講一下基礎(chǔ)的使用:

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

Serial.begin(115200);

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

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

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

看到這里才體會(huì)到GPIO矩陣的妙處,硬件設(shè)計(jì)大大的簡(jiǎn)化??!

關(guān)于串口的函數(shù),我們這里介紹幾個(gè)常用的,完整的可以在HardwareSerial類(lèi)中看到。

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);//重新設(shè)置波特率
int available(void);//返回串口接收緩沖區(qū)中的數(shù)據(jù)
int read(void);//返回串口接收緩沖區(qū)的一個(gè)字節(jié)的數(shù)據(jù),之后將緩沖區(qū)中的本字節(jié)刪除
void flush(void);//等待串口收發(fā)數(shù)據(jù)完畢
size_t write(uint8_t);//寫(xiě)數(shù)據(jù)到TX緩沖區(qū)
size_t setRxBufferSize(size_t);//設(shè)置接收緩沖區(qū)的大小

這里只是簡(jiǎn)單展示幾個(gè)函數(shù),具體的用法有不懂的,或者想了解全部函數(shù)的,可以在arduino-esp32中打開(kāi)具體的庫(kù)看用法,只有這樣,大家才能深刻了解,老宇哥這里只是帶大家進(jìn)門(mén)。

庫(kù)函數(shù)中有標(biāo)準(zhǔn)輸入輸出函數(shù),所以打印函數(shù)必不可少的了,我們常用的打印函數(shù)如下:

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

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

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

完整程序1:

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

圖片

完整程序2:

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

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    402

    瀏覽量

    44823
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1588

    瀏覽量

    79970
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1276

    瀏覽量

    103989
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192235
  • ESP32
    +關(guān)注

    關(guān)注

    21

    文章

    1017

    瀏覽量

    19283
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ESP32單片機(jī)學(xué)習(xí)筆記

    ESP32 單片機(jī)學(xué)習(xí)筆記 - 03 - MCPWM脈沖輸出/PCNT脈沖計(jì)數(shù)前言,繼續(xù)上一篇的內(nèi)容。因?yàn)樯弦黄獎(jiǎng)偤脤?shí)驗(yàn)了iic和spi,形成一對(duì)。接下來(lái)講pwm另起一篇。一、電機(jī)PWM輸出
    發(fā)表于 08-23 08:47

    ESP32ESP-IDF學(xué)習(xí)筆記

    ESP32ESP-IDF 學(xué)習(xí)筆記(六)【I2C數(shù)據(jù)總線(xiàn)(I2C)】文章目錄ESP32ESP
    發(fā)表于 02-22 07:30

    ESP32 開(kāi)發(fā)筆記(四)LVGL控件學(xué)習(xí) Window 窗口控件 X

    ESP32 開(kāi)發(fā)筆記(四)LVGL控件學(xué)習(xí) Window 窗口控件 X
    發(fā)表于 11-14 09:06 ?6次下載
    <b class='flag-5'>ESP32</b> 開(kāi)發(fā)<b class='flag-5'>筆記</b>(四)LVGL控件<b class='flag-5'>學(xué)習(xí)</b> Window 窗口控件 X

    ESP32ESP-IDF 教學(xué)(九)—— 串口通信(UART)

    ESP32ESP-IDF 教學(xué)(九)—— 串口通信(UART)文章目錄ESP32ESP-IDF 教學(xué)(九)——
    發(fā)表于 11-26 13:21 ?45次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(xué)(九)—— <b class='flag-5'>串口</b>通信(UART)

    [ESP32]學(xué)習(xí)筆記02

    [ESP32學(xué)習(xí)筆記02]使用ViusalStudio2017開(kāi)發(fā)ESP32、按鍵輸入檢測(cè)前言一、安裝Visual Studio 2017二、配置開(kāi)發(fā)環(huán)境1.安裝ViusalGDB2.
    發(fā)表于 12-03 17:36 ?23次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>02

    ESP32學(xué)習(xí)記錄<三>串口通信

    ESP32學(xué)習(xí)記錄串口通信文章目錄ESP32學(xué)習(xí)記錄串口通信前言一、通過(guò)
    發(fā)表于 12-20 19:34 ?17次下載
    <b class='flag-5'>ESP32</b><b class='flag-5'>學(xué)習(xí)</b>記錄<三><b class='flag-5'>串口</b>通信

    [ESP32]學(xué)習(xí)筆記04

    Analog-to-Digital Converter(模數(shù)轉(zhuǎn)換器)的使用今天我們學(xué)習(xí)ESP32提供的ADC外設(shè)的使用,ESP32的每個(gè)ADC單元都支持兩種模式,單次讀取和連續(xù)讀取(DMA),本次
    發(fā)表于 12-22 19:02 ?9次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>04

    SPI主線(xiàn)協(xié)議——ESP32學(xué)習(xí)筆記

    目錄SPI主線(xiàn)協(xié)議——ESP32學(xué)習(xí)筆記零、前言一、什么是SPI?二、通信過(guò)程?三、極性和相位四、總結(jié)SPI主線(xiàn)協(xié)議——ESP32學(xué)習(xí)
    發(fā)表于 12-22 19:23 ?18次下載
    SPI主線(xiàn)協(xié)議——<b class='flag-5'>ESP32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    ESP32 單片機(jī)學(xué)習(xí)筆記 - 04 - ADC和定時(shí)器

    ESP32 單片機(jī)學(xué)習(xí)筆記 - 04 - ADC和定時(shí)器一、模擬數(shù)字轉(zhuǎn)換器 ADC編程指南:Analog to Digital Converter。數(shù)據(jù)手冊(cè): ESP32 技術(shù)參考手冊(cè)
    發(fā)表于 01-17 13:18 ?11次下載
    <b class='flag-5'>ESP32</b> 單片機(jī)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b> - 04 - ADC和定時(shí)器

    ESP32芯片模組機(jī)器學(xué)習(xí)算法運(yùn)行的應(yīng)用

    強(qiáng)大的機(jī)器學(xué)習(xí)算法。 ESP32集天線(xiàn)開(kāi)關(guān)、射頻巴倫、功率放大器、低噪聲放大器、濾波器以及電源管理模塊于一體,占用較小的PCB空間,即可最大化滿(mǎn)足實(shí)際應(yīng)用多樣的功能需求。 使用EdgeImpulse在ESP32上運(yùn)行機(jī)器
    發(fā)表于 03-15 17:23 ?1515次閱讀

    ESP32上的深度強(qiáng)化學(xué)習(xí)

    電子發(fā)燒友網(wǎng)站提供《ESP32上的深度強(qiáng)化學(xué)習(xí).zip》資料免費(fèi)下載
    發(fā)表于 12-27 10:31 ?0次下載
    <b class='flag-5'>ESP32</b>上的深度強(qiáng)化<b class='flag-5'>學(xué)習(xí)</b>

    Arduino Uno與ESP32串口通信

    電子發(fā)燒友網(wǎng)站提供《Arduino Uno與ESP32串口通信.zip》資料免費(fèi)下載
    發(fā)表于 02-03 14:11 ?8次下載
    Arduino Uno與<b class='flag-5'>ESP32</b><b class='flag-5'>串口</b>通信

    ESP32學(xué)習(xí)筆記:雙核

    今天我們來(lái)說(shuō)說(shuō)ESP32 for Arduino 的雙核。
    的頭像 發(fā)表于 07-15 16:16 ?6510次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>:雙核

    ESP32學(xué)習(xí)筆記:WiFi

    今天我們來(lái)說(shuō)說(shuō)ESP32 的WiFi。
    的頭像 發(fā)表于 07-15 16:20 ?5349次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>:WiFi

    esp32s3使用多串口

    esp32s3使用多串口 我按照別人博客中設(shè)置串口2,串口打印有問(wèn)題,因?yàn)闆](méi)有看到esp32s3 多串口
    的頭像 發(fā)表于 11-06 11:29 ?8094次閱讀
    <b class='flag-5'>esp32</b>s3使用多<b class='flag-5'>串口</b>