天天看點

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

我買的是微雪的樹莓派用的SPI轉CAN。現在用在jetson nano上。我看了一下倆子產品的晶片用的都是一樣的,引腳也都對得上,是以我就打算拿這個子產品給nano做can通信。

具備CAN功能,使用SPI接口CAN控制器MCP2515,搭配收發器SN65HVD230。 Microchip 的 MCP2515是一款CAN協定控制器,完全支援 CAN V2.0B 技術規範。該器件能發送和接收标準和擴充資料幀以及遠端幀。 MCP2515自帶的兩個驗收屏蔽寄存器和六個驗收濾波寄存器可以過濾掉不想要的封包。 CAN 控制器的輸出引腳 Tx 接到 SN65HVD230 的資料

輸入端 D,可将此 CAN 節點發送的資料傳送到 CAN 網絡中;而 CAN 控制器的接收引腳 Rx 和 SN65HVD230 的資料輸出端R 相連,用于接收資料。

我購買的針對樹莓派用的can擴充闆

總之開始安裝

專門為了nano做的can通信轉接闆

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

minicom可以通過序列槽控制外部的硬體裝置.适于在linux通過超級終端對嵌入式裝置行管理.同樣也可以使用minicom對外置Modem進行控制.

linux超級終端minicom的使用方法

minicom 是一款序列槽終端調試工具

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

使用/etc/modules-load.d/來配置系統啟動時加載哪些子產品

Linux子產品加載流程及如何讓系統開機自動加載子產品

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

按照網頁教程步驟,可以看到我們的nano的spi1引腳和我的can子產品上的spi引腳對應

【艹 設定完重新開機失敗,現在顯示屏一直黑屏,隻能重新燒錄鏡像。重新燒錄重新操作之後教程沒問題了,但我這邊子產品引腳和波特率對不上】

安裝好之後有這麼幾個問題

  1. 我買的是微雪的樹莓派的SPI轉can,那個子產品把中斷輸出引腳設定在了nano的20号引腳的位置,我應該把子產品引腳設定改成26号引腳。不過看nano的SPI轉can的子產品也是亂設定中斷引腳的位置。可能這個改不改無所謂。
  2. 波特率對不上
  3. 解壓來的代碼檔案隻可讀
# 商家寫的nano的cantest.py  測試例程将會在接收到資訊時發送1-8
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import MCP2515
import time

print("--------------------------------------------------------")
# try:
# This setup is referred to CAN SPI click mounted on flip n click device slot A 
can = MCP2515.MCP2515()
print("init...")
can.Init()
print("send data...")
data = [1, 2, 3, 4, 5, 6, 7, 8]
can.Send(data, len(data))

readbuf = []
# while(1):
while(1):
	readbuf = can.Receive()
	print(readbuf)
	time.sleep(0.5)

print("--------------------------------------------------------")
# except Exception as e:
    # print(e)

           

關于檔案權限的問題,我在鳥哥那邊學過

sudo chmod 777 -R 檔案夾名/

這句就把所有權限都開放了

0(0+0+0)-沒有權限。

1(0+0+1)-僅執行權限。

2(0+2+0)-僅寫入權限。

3(0+2+1)-寫入和執行權限。

4(4+0+0)-隻讀權限。

5(4+0+1)-讀取和執行權限。

6(4+2+0)-讀寫權限。

7(4+2+1)-讀取、寫入和執行權限。

通常我們以 Vim 編輯 Shell 檔案批處理檔案後,檔案權限通常是 rw-rw-r–(644),那麼,如果要将該檔案變成可執行檔案,并且不讓其他人修改此檔案,則隻需将此檔案的權限該為 rwxr-xr-x(755)即可。

chmod 755 設定使用者的權限為:

1.檔案所有者可讀可寫可執行

2.與檔案所有者同屬一個使用者組的其他使用者可讀可執行

3.其它使用者組可讀可執行

can的波特率

MCP2515波特率配置

因為我這個子產品是12M晶振,而程式裡是預設8M晶振,是以要按照手冊重新計算通信階段的各個占比,參考上面那個部落格就可以了。

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

計算過程比較複雜,還是需要一點經驗的。說實話,要是有那功夫去了解我上面的計算過程,還不如直接看部落格自己推導。

需要了解的還有500Kbps是對應的2us的Tbit。由1/2us得到。同理可知250Kbps是需要4us,125Kbps為8us

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

【當然了,我沒挨個去測試】

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

改好這兩處就能通信了【要先連好硬體哈】

在代碼目錄下 執行

python cantest.py

就能接收資訊了

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

是以引腳的事确實沒關系,我現在用的是29号引腳作為中斷輸出

運作時的sudo和import和pip的愛恨糾葛

過了許久,我又來用這個,結果執行python cantest.py 顯示

no module named ‘spidev’

我重新去檢查了以前的各項設定以及挂載的spi都沒問題。

然後我就

sudo python cantest.py

笑死,成功了。

但sudo python3 cantest.py 會失敗

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

後來用pip3把以前的那倆東西又安裝一遍

sudo pip3 install pyserial

sudo pip3 install spidev==3.1

這樣再執行

sudo python3 cantest.py

就也可以成功了。

但sudo仍然不能缺,很怪,明明已經給了權限777了

我們所使用的系統指令如ls/pwd/reboot,實際上是被加入了檔案夾後然後将這個檔案夾目錄加入環境變量,這種之後便成為了我們日常所使用的“指令”。環境變量也有着不同的級别,有的環境變量是針對于系統的環境變量,而有的環境變量是針對于使用者的。

隻需使用 echo $PATH 指令便可以顯示目前環境的環境變量

實際上,sudo指令使用時将PATH環境變量進行了重置,目的顯然是要限制使用者運作 sudo 指令的範圍

linux下 su & su - & sudo指令對環境變量造成的影響 &設定環境變量

  1. 下載下傳源碼,用python編譯
  2. 看pip裝到哪了,加到環境變量 Python: 通過 pip 安裝第三方包後依然不能 import

笑死,上面引用裡的方法都不能用

就是pip安裝的那句指令不要加sudo就好了

琢磨資訊發送

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

商家設定成這樣 隻做了一個send函數。想發擴充幀估計隻能自己寫。

附圖

nano的對應的引腳接口

這個是啥也不設定的時候預設就有的引腳功能

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

nano的另一個更詳細的表,是可以設定開啟的對應引腳。

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

這個是nano的設定界面

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

【這裡或許就是裝置樹使能了吧】

微雪的nano專用的SPI轉CAN子產品

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

微雪的樹莓派專用的SPI轉CAN子產品

nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀
nano的CAN通信總之開始安裝安裝好之後有這麼幾個問題琢磨資訊發送附圖擴充閱讀

擴充閱讀

英偉達Jeston nano<3>使用Python實作三種方式序列槽通信

Jetson Nano 配置40引腳擴充接頭

linux 編輯檔案時提示swp檔案已經存在

MCP2515的英文手冊

樹莓派CAN通訊教程 - MCP2515

繼續閱讀