ESP32是低成本,低功耗的單片機(jī)微控制器,集成Wi-Fi和雙模藍(lán)牙。
ESP32系列采用Tensilica Xtensa LX6微處理器,包括雙核心和單核變體,內(nèi)置天線開關(guān),RF變換器,功率放大器,低噪聲接收放大器,濾波器和電源管理模塊。
剛?cè)胧忠粋€塊ESP32-WROVER-E想學(xué)習(xí)一下C語言,沒有想到第一步上來就給一個莫名奇妙的問題。
當(dāng)我使用esptool.py工具清除ESP32固件時,終端給了一個錯誤提示A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist。
翻譯過來就是一個致命的錯誤,不能打開/dev/ttyUSB0,該端口不存在。我查找端口的方式都是按照官方查找端口的方式進(jìn)行的。下面我們說一下怎么解決這個問題。
esptool.py --chip esp32 -b 115200 --port /dev/ttyUSB0 erase_flash
Linux/Mac 查找串口設(shè)備名稱
要解決端口不存在的問題,你必須先保證能找到正確的串口設(shè)備名稱。在Linux,USB串口的設(shè)備名稱通常都以ttyUSB作為前綴,然后USB串口的數(shù)字。
在官方文檔給出一個簡單解決方式就是,首先運(yùn)行一次ls命令ls /dev/tty*
列出所有TTY設(shè)備。
然后使用USB線連接你的ESP32設(shè)備,再次運(yùn)行命令ls /dev/tty*
列出所有TTY設(shè)備。增加的TTY設(shè)備就是ESP32開發(fā)板串口的設(shè)備名稱。
這是可以在不安裝任何軟件找到ESP32開發(fā)板串口的設(shè)備名稱方式,當(dāng)然你可以使用Arduino IDE的工具找到ESP32開發(fā)板串口的設(shè)備名稱。
通常我們比較建議使用官方文檔找到ESP32開發(fā)板串口的設(shè)備名稱,但需要改進(jìn)一點(diǎn)就是列出TTY設(shè)備文件時,直接指定USB的TTY設(shè)備。
命令ls /dev/tty*
包含太多的文件,很難找到。而命令ls /dev/ttyUSB?
則會很容易就能發(fā)現(xiàn)。
ls /dev/ttyUSB?
解決端口不存在
找到ESP32正確的串口設(shè)備名稱非常重要,如果你沒有找到正確串口設(shè)備名稱,你將永遠(yuǎn)得到是 Could not open /dev/ttyUSB0, the port doesn't exist。
如果你確定找到的是正確的串口設(shè)備名稱,還是遇到錯誤消息A fatal error occurred: Could not open /dev/ttyUSB0, the port doesn't exist。
這是因?yàn)楫?dāng)前登錄的用戶對串口設(shè)備文件不可讀寫,也就權(quán)限不足,就會出現(xiàn)同樣的錯誤。其實(shí),這里的錯誤應(yīng)該說權(quán)限拒絕才對。
要解決次問題有兩種方式。第一種直接使用chmod命令修改串口設(shè)備文件的權(quán)限,讓所有用戶都可以讀寫串口設(shè)備文件。
第二種是使用usermod命令將當(dāng)前用戶加入dialout組,dialout組對串口設(shè)備文件具有讀寫權(quán)限。
這里之所以建議使用第二種方案是因?yàn)閏hmod命令修改權(quán)限只是一次性的,當(dāng)你將ESP32斷開連接,串口設(shè)備文件就會恢復(fù)原來的權(quán)限。
命令sudo usermod -aG dialout $USER
將當(dāng)前登錄的用戶加入dialout組。newgrp dialout
命令使用戶組的修改在當(dāng)前shell會話生效。
sudo usermod -aG dialout $USER
newgrp dialout
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209521 -
Mac
+關(guān)注
關(guān)注
0文章
1106瀏覽量
51479 -
串口
+關(guān)注
關(guān)注
14文章
1554瀏覽量
76522 -
ESP32
+關(guān)注
關(guān)注
18文章
971瀏覽量
17276
發(fā)布評論請先 登錄
相關(guān)推薦
評論