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