硬件連接
ROS主控通過usb線連接到一個TTL電平轉(zhuǎn)換芯片,再由這個電平轉(zhuǎn)換芯片連接STM32芯片
電平轉(zhuǎn)換芯片可以通過PCB設(shè)計在STM32芯片的電路板上,也可以使用一個USB轉(zhuǎn)TTL的模塊。
為什么兩個控制器之間需要電平轉(zhuǎn)換芯片?
因為兩個控制器之間通信層次邏輯是不同的,所有需要電平轉(zhuǎn)換芯片。相當于兩個主控是兩種不同語言的人,電平轉(zhuǎn)換芯片相當于一個翻譯。
電平轉(zhuǎn)換芯片可以是:
- cp2102
- ch340
- PL2303
- FT232RL
軟件設(shè)置
硬件連接上之后,需要一個軟件設(shè)置
需要軟件設(shè)置原因:
ROS主控可能接入多個USB設(shè)備,或者接入兩個型號一樣的電平轉(zhuǎn)換芯片。
不同USB設(shè)備占用的ROS主控的端口號在每次上電時可能會不一致,這樣需要手動修改代碼中的配置參數(shù),比較麻煩,也無法做到自啟動。
如果存在多個USB設(shè)備,但是每種USB設(shè)備的電平轉(zhuǎn)換芯片不一樣,那么我們可以根據(jù)芯片名稱來知道端口 號,但是如果有兩個芯片一樣的電平轉(zhuǎn)換芯片,則無法區(qū)分,這時候想做自啟動那么必須要進行下面步驟的軟件設(shè)置
軟件設(shè)置分為兩步:
- 第一步是更改電平轉(zhuǎn)換芯片的serial,
- 第二步是創(chuàng)建設(shè)備別名
更新電平轉(zhuǎn)換芯片的serial
首先在win環(huán)境下安裝更改芯片serial的軟件
CP21xx Customization Utility.exe
打開這個軟件,然后將芯片連接電腦的USB
然后將圓圈位置改為0002
然后點擊Program Device點完之后要等下,在Status Logging窗口中出現(xiàn)下面信息,才說明修改好了
創(chuàng)建設(shè)備別名
需要創(chuàng)建設(shè)備別名原因:
在運行一個ros程序的時候需要提供一個端口名,這個端口名一般是ttyUSBx,設(shè)備每次插拔對應的這個端口名它都會不一樣,需要創(chuàng)建一個設(shè)備別名,就是要將這個端口名來給它固定住。
重新插拔 USB1端口的設(shè)備后,變?yōu)椋?/p>
可以看到變成了/dev/ttyUSB2
端口號發(fā)生了變化
創(chuàng)建設(shè)備別名需要寫一個腳本文件,如下:
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{serial}=="0002", MODE:="0777", GROUP:="dialout", SYMLINK+="stm32_controller"' >/etc/udev/rules.d/stm32_controller.rules
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60",ATTRS{serial}=="0001", MODE:="0777", GROUP:="dialout", SYMLINK+="2d_lidar"' >/etc/udev/rules.d/2d_lidar.rules
service udev reload
sleep 2
service udev restart
解釋下上面的代碼
KERNEL==”ttyUSB* 不管是USB幾的設(shè)備都進行判斷
ATTRS{idVendor}==”10c4” 這里的idVendor ,在前面win上修改 serial的時候出現(xiàn)過,就是10c4
ATTRS{idProduct}==”ea60” 這里的idProduct,在前面win上修改 serial的時候出現(xiàn)過,就是ea60
ATTRS{serial}==”0002” 這里的serial,就是前面我們改過的,這里就根據(jù)這個值的不同,定義不同的設(shè)備別名
MODE:=”0777” 就是端口的權(quán)限
SYMLINK+=”stm32_controller” 這里的stm32_controller,就是取的設(shè)備別名。
所有上面第一行代碼的功能就是,將滿足這些條件的端口的設(shè)備名稱改為定義的設(shè)備別名。
腳本的文件名稱,取名為change_udev.sh。在執(zhí)行前需要給這個腳本文件賦予權(quán)限。
sudo chmod 777 change_udev.sh
賦予權(quán)限后,再運行這個腳本
sudo ./change_udev.sh
這樣就運行了設(shè)備別名的設(shè)置,之后不管怎么插拔這兩個USB設(shè)備,系統(tǒng)都將會自動的將這兩個設(shè)備去給它賦予設(shè)置的設(shè)備別名。
-
STM32
+關(guān)注
關(guān)注
2272文章
10924瀏覽量
357608 -
硬件
+關(guān)注
關(guān)注
11文章
3382瀏覽量
66461 -
軟件
+關(guān)注
關(guān)注
69文章
5013瀏覽量
88085 -
ROS
+關(guān)注
關(guān)注
1文章
280瀏覽量
17102
發(fā)布評論請先 登錄
相關(guān)推薦
![](https://file1.elecfans.com/web2/M00/85/97/wKgaomRmNcaAPXFrAACacxO1Rbs188.png)
![](https://file1.elecfans.com/web2/M00/85/97/wKgaomRmNciAXZBMAAD3m-Ka54M184.png)
RT-Thread如何使用串口或者無線和ROS連接
【ROS RIKIBOT基礎(chǔ)--使用系列 第一章節(jié)】ROS機器人硬件系統(tǒng) 精選資料分享
ROS如何在代碼層面去接收stm32發(fā)送過來的數(shù)據(jù)?
stm32cubemx的ST-link v2硬件連接與軟件設(shè)置如何去實現(xiàn)呢
STM32 SPI 軟件NSS和硬件NSS解讀
![<b class='flag-5'>STM32</b> SPI <b class='flag-5'>軟件</b>NSS和<b class='flag-5'>硬件</b>NSS解讀](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ROS與STM32通信
![<b class='flag-5'>ROS</b>與<b class='flag-5'>STM32</b>通信](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ROS小車STM32底層控制代碼
![<b class='flag-5'>ROS</b>小車<b class='flag-5'>STM32</b>底層控制代碼](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
以STM32F405為主控連接兩顆MAX3051EKA CAN通訊芯片
![以<b class='flag-5'>STM32</b>F405為<b class='flag-5'>主控</b><b class='flag-5'>連接</b>兩顆MAX3051EKA CAN通訊芯片](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DB4759 STM32 用于STM32CubeUSB的電源傳輸和UCSI(USB Type-C?連接器系統(tǒng)軟件接口軟件擴展
![DB4759 <b class='flag-5'>STM32</b> 用于<b class='flag-5'>STM32</b>CubeUSB的電源傳輸和UCSI(USB Type-C?<b class='flag-5'>連接</b>器系統(tǒng)<b class='flag-5'>軟件</b>接口<b class='flag-5'>軟件</b>擴展](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論