找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5097|回復(fù): 15
收起左側(cè)

CAN通訊如此簡單,初次接觸CAN 附單片機程序

  [復(fù)制鏈接]
ID:68189 發(fā)表于 2022-8-20 09:41 | 顯示全部樓層 |閱讀模式
      串口通訊經(jīng)常用到,CAN通訊沒有接觸過,一直感到很神秘。。。。。。
今天進行了CAN的實驗,沒想到如此簡單。
      A板發(fā)送ID+自定義數(shù)據(jù)+增量自加1  接收到B板數(shù)據(jù)后由串口輸出
      B板發(fā)送ID+自定義數(shù)據(jù)+增量自加1  接收到A板數(shù)據(jù)后由串口輸出
      硬件準(zhǔn)備:CAN收發(fā)器模塊,一塊小小的板子,元件沒幾個;
                      兩個單片機實驗板,我用的是自制的STC32G12K128最小板和一個STC官方實驗板;
                      一根網(wǎng)線;
                      當(dāng)然還要有電腦;

       代碼下載:全部例程源碼和原理圖 CAN2雙板測試.7z (369.96 KB, 下載次數(shù): 379)
      軟件準(zhǔn)備:編譯軟件KEILC251;下載及串口通訊軟件STCISP6.90
讓我們來開始實驗吧!
      首先更改例程代碼,兩塊板子A板和B板均使用CAN2進行通訊,所以例程中做如下設(shè)置:
      CAN2初始化要點:地址;CAN2引腳;速率;
      A板地址:CAN2_ID = 0x012A;    B板地址:CAN2_ID = 0x022A;
      CAN2引腳:P_SW3 = (P_SW3 & ~(3)) | (1);  // 0x00:P0.2,P0.3 0x01:P5.2,P5.3  0x02:P4.6,P4.7  0x03:P7.2,P7.3
      切換到P5.2,P5.3引腳上;
要使TJA1050工作,還要讓其第8腳接GND,所以代碼中還要將P5^4置0:先定義引腳 sbit CAN_S    = P5^4;        再在主函數(shù)中加入CAN_S=0;
或者直接將第8腳接GND.
實驗照片:
1.jpg 2.jpg

屠龍刀與最小板CAN通訊實驗.png
回復(fù)

使用道具 舉報

ID:468878 發(fā)表于 2022-8-22 08:10 | 顯示全部樓層
跟485差不多。
回復(fù)

使用道具 舉報

ID:961114 發(fā)表于 2022-8-22 11:17 | 顯示全部樓層
感謝樓主的精心測試,接下來會有開源示波器開始贈送
STC-老梁開源示波器-480*320顯示-STC32G12K128實現(xiàn)
3.jpg
回復(fù)

使用道具 舉報

ID:961114 發(fā)表于 2022-8-22 11:21 | 顯示全部樓層
STC 目前的 重點 是 CAN 通信,并且是  標(biāo)配 2組 獨立的 CAN, 也建立了 CANOpen + FreeRTOS 的完善 汽車電子生態(tài) ,已大量用于汽車電子 http://www.stcmcudata.com/OpenSo ... DIP64-DEMO-CODE.ZIP
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2022-8-22 17:17 | 顯示全部樓層
CAN特點:
優(yōu)點:適合多路通訊,硬件防碰撞。隊列發(fā)送(當(dāng)高級通訊時,低級的會自動等待)。
缺點:波特率計算復(fù)雜
         通訊數(shù)據(jù)長度呆板。
         數(shù)據(jù)發(fā)送不一定適時(可能會有等待)
         
回復(fù)

使用道具 舉報

ID:861279 發(fā)表于 2022-8-24 10:58 | 顯示全部樓層
can通信可以一邊發(fā)送一邊接受嗎?
回復(fù)

使用道具 舉報

ID:68189 發(fā)表于 2022-8-26 10:46 | 顯示全部樓層
葉開游戲 發(fā)表于 2022-8-24 10:58
can通信可以一邊發(fā)送一邊接受嗎?

不可以的,
CAN通訊是半雙工的。收發(fā)數(shù)據(jù)要分時進行。不管CAN網(wǎng)絡(luò)上掛多少設(shè)備,在同一時刻只能有1個發(fā)送數(shù)據(jù)。如果有多個需要同時發(fā)送則只有優(yōu)先級別高的先發(fā)送,其它等待。
回復(fù)

使用道具 舉報

ID:961114 發(fā)表于 2022-8-29 11:18 | 顯示全部樓層
樓主的優(yōu)質(zhì)測評帖,贈送簡易示波器一套
51hei截圖20220829111606.jpg
回復(fù)

使用道具 舉報

ID:961114 發(fā)表于 2022-8-29 11:19 | 顯示全部樓層
STC32位8051全球大學(xué)計劃開源示波器USB-CDC送電腦顯示,源程序,原理圖, 說明書    
http://www.stcmcudata.com/OpenSo ... encode-20220819.ZIP
STC32G12K128數(shù)據(jù)手冊  
http://www.stcmcudata.com/STC8F-DATASHEET/STC32G.pdf;       
STC-ISP 顯示 軟件     
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.90F.zip
回復(fù)

使用道具 舉報

ID:203661 發(fā)表于 2022-8-29 14:24 | 顯示全部樓層
啊,STC也這么卷了,居然有CAN口了
回復(fù)

使用道具 舉報

ID:961114 發(fā)表于 2022-9-7 16:56 | 顯示全部樓層
lhzw2001 發(fā)表于 2022-8-29 14:24
啊,STC也這么卷了,居然有CAN口了

STC32G12K128   32位除,16位除,端口的位操作, 2組 CAN 就值RMB4.5, 其他白送,
USB, FLASH 128K, SRAM 12K, 32位 8051,  高精準(zhǔn)12位ADC, DMA 支持(TFT彩屏, ADC, 4組串口, SPI, I2C )
回復(fù)

使用道具 舉報

ID:293108 發(fā)表于 2022-9-14 23:54 | 顯示全部樓層
STC莊偉 發(fā)表于 2022-8-22 11:21
STC 目前的 重點 是 CAN 通信,并且是  標(biāo)配 2組 獨立的 CAN, 也建立了 CANOpen + FreeRTOS 的完善 汽車電 ...

oled讀取can id和數(shù)據(jù)遇到問題,提取出來的數(shù)不一致,也不知道要在哪個地方去獲取,這個對于新手頭大。

STC32G

STC32G

顯示數(shù)據(jù)或id

顯示數(shù)據(jù)或id
回復(fù)

使用道具 舉報

ID:5212 發(fā)表于 2022-9-20 16:51 來自手機 | 顯示全部樓層
chentang 發(fā)表于 2022-9-14 23:54
oled讀取can id和數(shù)據(jù)遇到問題,提取出來的數(shù)不一致,也不知道要在哪個地方去獲取,這個對于新手頭大。

兄弟分享下你的程序看看呢。謝謝!
回復(fù)

使用道具 舉報

ID:1049379 發(fā)表于 2022-10-27 13:04 | 顯示全部樓層
希望多介紹CAN通訊的知識。
回復(fù)

使用道具 舉報

ID:1060327 發(fā)表于 2023-1-19 22:47 來自手機 | 顯示全部樓層
兩個收發(fā)模塊是通過棕線和白線連接的嘛?照片看不清楚
回復(fù)

使用道具 舉報

ID:408539 發(fā)表于 2023-1-20 21:57 | 顯示全部樓層
STC 32G實驗驗箱例程來的
這個只是簡單收發(fā)標(biāo)準(zhǔn)幀的例程
要是并在其他CAN總線上會對
總線上的其他設(shè)備造成信號擁堵
沒有加入仲裁機制,,要是幾個設(shè)備同時發(fā)送
總線上的數(shù)據(jù)就會亂其他Can設(shè)備就不能正常接收
這段數(shù)據(jù)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表