CAN總線心得總結(jié)(不可多得)_第1頁
CAN總線心得總結(jié)(不可多得)_第2頁
CAN總線心得總結(jié)(不可多得)_第3頁
CAN總線心得總結(jié)(不可多得)_第4頁
CAN總線心得總結(jié)(不可多得)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、CAN總線學(xué)習(xí)心得:zlg關(guān)于can帖子匯總SJA1000的常用標(biāo)準(zhǔn)波特率設(shè)置,為什么基本上都 是單次采樣?即使是低速的時候也是這樣的,既然TSEG1的設(shè)置周期都很大,比如都大于10了,為什么不讓他采樣三次呢?答: 是不好理解,但那是CiA推薦的值。用51系列芯片和兩個SJA1000接口還要外擴一個RAM,請問51的ALE能否同時與三個芯片 的ALE管腳相連(地址不同)? 有哪位高手做過雙SJA1000冗余的請指教!! 答: 能同時連接。 請問CAN總線在想傳輸1000m的情況下,最快的速度能到多少呢? 答: 50kbps = 1300m.如果一個 網(wǎng)絡(luò)中只有2個

2、節(jié)點,其中一個處于監(jiān)聽模式,另一個節(jié)點發(fā)送報文會使處于監(jiān)聽模式的節(jié)點進(jìn)入中斷嗎? 答: 能進(jìn)入接收中斷,你自己的試驗也可以證明。想組建 一個簡單的CAN網(wǎng)絡(luò),已經(jīng)有兩個節(jié)點,我想問CAN總線如何組建,終端電阻安裝在哪里?小弟還沒有入門,大蝦們指點一下。答1:直接將節(jié)點CANH和CANL連到總線上,終端電 阻接在總線兩端,大約120歐。答2: 推薦北航出版現(xiàn)場總線CAN原理與應(yīng)用技術(shù),研讀一下。請問各位老師:我是一名can總 線的新手,我正在做can總線的開發(fā),控制器用sja1000t(我自己兩個控制板互通),但我在發(fā)送數(shù)據(jù)后將出現(xiàn)總線關(guān)閉,我看到發(fā)送錯誤計數(shù)器在不斷 增加,直到0xf

3、f,最后恢復(fù)到0x7f,謝謝各位老師幫我解答這個問題?;蛘邔ξ医o與啟發(fā)答1;首先調(diào)通單個節(jié)點。答2:這是單節(jié)點發(fā)送沒有成功(或者由于網(wǎng)絡(luò)中其他節(jié)點沒有收到幀并在響應(yīng)場響應(yīng));建議參考網(wǎng)站CAN應(yīng)用方案。我想請教各位can遠(yuǎn)程貞有何作用?如何應(yīng)用?在什么情況下才需要用到遠(yuǎn)程貞?謝謝了!答:遠(yuǎn)程幀的用與不用完全取決你自己的協(xié)議,can有遠(yuǎn) 程幀的功能,是可用可不用的!用網(wǎng)站提供的計算波特率的工具算出的數(shù),12k以上的都 正確,無論是自接收還是兩個節(jié)點通訊都沒有任何問題.但是12k以下的數(shù)據(jù)一個都不能用,兩個節(jié)點通訊沒有成功的,自接收有10k的幾個數(shù)據(jù)成功。我們的 項目要求必須在10k以下,最好是5

4、k,但是不成功,自己計算的數(shù)據(jù)也沒有成功的。(我們至少試驗了30多個,所有情況都考慮了。)我現(xiàn)在懷疑sja1000的波特率根本達(dá)不到5k和相對 應(yīng)的傳輸10km?;蛘呖梢哉l能提供個經(jīng)過實踐 檢驗的正確的總線定時器0和1的設(shè)置呢?要求低于10k.答:PCA82C250/251可以保證5KBPS的速率;比如ZLGCAN系列接口卡。答:tja1050在低速時好像有問題。我用1050進(jìn)行5k的時候不行,用82c250很好, 你可以試一試。我本想雙機調(diào)試,一邊收,一邊發(fā),但跑程序后,發(fā)送方會 不斷進(jìn)入復(fù)位模式,所以現(xiàn)在進(jìn)行自測試模式,我先進(jìn)入復(fù)位模式,設(shè)置進(jìn)入PELICAN模式,對寄存器初始化后,設(shè)置接

5、收,發(fā)送中斷使能,最后設(shè)置進(jìn)入自 接收,單濾波模式,這樣初始化就結(jié)束了,我的ACR0ACR3 為0x55,0x55,0x55,0x50,AMR0AMR3為0xff,之后,我就往BUFFER里填 數(shù),0x88,0x55,0x55,0x55,0x50,0x30,0x31,.。0x37,之后,啟動自接收請求命令,但是程序只進(jìn)入了中斷一 次,是發(fā)送空中斷,接收中斷沒有產(chǎn)生,我讀發(fā)送錯誤寄存器,發(fā)現(xiàn)有錯誤產(chǎn)生,我讀接收計數(shù)寄存器,為0,說明我沒有收到數(shù),但我讀接收BUFFER時,值 為0x55,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0,0,0,0,0,以上測試時,我在CA

6、NH和CANL之間加入了兩個 120歐的匹配電阻并聯(lián)在一起的,請各位高手指點呀,謝謝了答:在總線上加個CAN接口卡會方便許多,或者加個捕獲功能的示波器也可以檢測波形。仿真環(huán)境:keil uv2編譯 器:keil c51 7.0仿真器:tks 591scpu:p87c591程序大?。?K左右兄弟在一片CPU中燒寫了一個,運行一個CAN總 線,IIC總線測試程序能夠正常運行.這個基礎(chǔ)上加上應(yīng)用程序后在仿真機中運行正常,但是燒寫到cpu后插入cpu程序不能運行,請問是什么原因?另外一個問題:在另外一個項目中條件相同,程序只有4K,程序正常跑 著,CAN接口可以檢測到輸出波形但是卻不能正確傳輸數(shù)據(jù),在

7、一塊舊板子上就可以,比較兩者之后發(fā)現(xiàn)電路完全相同測量也正常,只是布局不同,請教原因.答:程序已運行了吧?可能是HEX文件有錯;編制程序 時注意P87C591的ERAM設(shè)置、6CLK設(shè)置。位流數(shù)據(jù)采樣自發(fā)送節(jié)點的 82c250的Tx管腳。測試條 件:pelican ,擴展,雙濾波模式,對方ID:0x88,0x11,0x55,0x10,發(fā)送的對方ID為:0x88,0x11,0x00,0x00,發(fā)送2字節(jié)數(shù)據(jù) 為:0x05,0x06采集的位流數(shù)據(jù)如下:010001000001011100010000010000010000010001000001100000100011011000010011101

8、11111111111請教位流數(shù)據(jù)的含義?答:自行計算時要區(qū)分位,還需要進(jìn)行“位填充”的逆運 行;簡單的方法是將此信號連接至1個CAN接口卡的RXD引腳。用ZLGCANTEST軟件調(diào) 試和板卡通訊,但是板卡能夠正常通訊幾次后就不再上傳數(shù)據(jù),查看SJA1K的狀態(tài)寄存器,發(fā)現(xiàn)是SJA1K正在發(fā)送,但是怎么老是出現(xiàn)這種問題啊,請有相 同經(jīng)歷的高手教小弟一把?。≈x謝了!!答: 其中的一個原因是收不到接受應(yīng)答,比如對方id錯誤通訊實驗:長度1km,同樣的線 路,得用ZLG公司的CAN設(shè)備(9820,5121)通訊是正常的,但是我們自已的系統(tǒng),在1000米時(50K波特率)的通訊是完全正常的,但是再上 加

9、一段線路(約70米,與1公里電纜是不同線質(zhì),螺旋狀),數(shù)據(jù)丟失嚴(yán)重.我們的硬件是完全提供的參考電路的,所以說硬件上應(yīng)當(dāng)沒有問題。軟件上有沒有什 么特殊處理嗎?比如說發(fā)送失敗,總線錯誤如何處理???系統(tǒng)已經(jīng)調(diào)試了相當(dāng)長一段時間了,但還是沒有頭緒。就這個問題解決不了,我們在線路中加了CanRepA和CAN_REPB均不能很好的解 決!!同樣的線路和硬件,ZLG公司的系統(tǒng)可以通信很好,而我們的系統(tǒng)卻不呢,是不是軟件處理有些要求??請大家指點!答:檢查各節(jié)點CANH和CANL之間的阻值是否在合理 范圍之內(nèi);CAN網(wǎng)絡(luò)通訊故障一般是通訊電纜選擇不合適。請專家?guī)凸烙婣RM CPU 的CAN口處理能力!&#

10、160;在不處理復(fù)雜協(xié)議的情況下,一個CAN口吞吐達(dá)最高負(fù)荷 5000幀/秒時,CPU的負(fù)荷是多少?多個CAN口呢(如LPC2294)答:即使用于嚴(yán)格的速度測試,LPC2000的速度完全能夠勝任2-4個CAN通道.sja1000出現(xiàn)錯誤而中斷的幾率由多大呢? 特別是發(fā)送錯誤,總線關(guān)閉等。答:注意CANbus是一個網(wǎng)絡(luò),調(diào)試網(wǎng)絡(luò)時需要在另 一端連接一個正常工作的CAN節(jié)點.CAN是可 靠的網(wǎng)絡(luò);測試過25個CAN節(jié)點連續(xù)近距離持續(xù)發(fā)送/接收超過100小時而不出現(xiàn)通訊錯誤。 為什么 MiniCAN總提示發(fā)送失敗? 我在使用MiniCAN在自發(fā)自收模式下進(jìn)行循環(huán)發(fā)送數(shù) 據(jù)時,會經(jīng)

11、常提示發(fā)送失敗,但是卻已經(jīng)接收到了數(shù)據(jù).這是什么原因?怎樣能避免呢?答:是不是總線上連接有其他CAN節(jié)點?檢查一下對方的速率。 硬同步在 CAN控制器中是如何實現(xiàn)的?答:可以看一下 CAN2.0規(guī)范;如是IC設(shè)計,則去BOSCH看看復(fù)雜的CAN IP.請教 zlg的大蝦們,我應(yīng)用89c51+sja1000+82c250的結(jié)構(gòu),運行過程中發(fā)現(xiàn)一個問題,即正常運行一段時間后,sja1000死機(個人認(rèn)為 是死機),我的89c51仍然在正常運行,也對sja1000能啟動發(fā)送數(shù)據(jù)進(jìn)程(我用led指示),但是接收端沒有收到,用示波器測量82c250的 CANH 或 CANL 腳(6,7管腳),

12、看不到有波形,斷電重新啟動程序后,sja1000的收發(fā)過程中能在上述兩個管腳中測量到波形,即上電運行能正常一段時間的收發(fā)(能測 量到波形),之后就不行了(啟動發(fā)送過程但是波形測量不到了),除非斷電重啟,望指教!頭兩天查找sja1000的問題,以為是死機,后來逐步檢測跟蹤察看,發(fā)現(xiàn)程序運行一段時間后,sja1000的 設(shè)置被無端改變,比如波特率,輸出控制方式,測試寄存器值,我的原始設(shè)置為:BTR0 = 0x00;BTR1 = 0x4F;OCR = 0x1A;REG_TEST = 0xAA;但在運行一段時間后,這四個值會莫名其妙的被改變了,導(dǎo)致無法接受總線得數(shù)據(jù),而改變的值是隨機的,請問這是怎么回

13、事?硬件電路是按照推薦的典 型應(yīng)用接的,我在程序中除初始化設(shè)置這幾個參數(shù)外沒有其他地方對他們進(jìn)行操作,天理何在啊答:復(fù)位端是否可能引入尖峰脈沖? 剛開始接 觸canbus,買了一塊5121,用隨機帶的zlgtest的軟件測試,驗證碼設(shè)為0x00000001,屏蔽碼設(shè)為0xffffff00,這樣的 話是不是只能接受id為0x01的幀了,用隨機帶的zlgtest的自發(fā)自收的發(fā)現(xiàn)id為0x00和0x10等等也能接收到了,請問是我的驗證碼屏蔽碼設(shè) 置錯了么?答:CAN節(jié)點的驗收過濾設(shè)置與 CAN幀的ID不是一一對應(yīng)關(guān)系,具體請參考MANUAL目錄下的函數(shù)編程手冊或CAN控制器SJA1000驗

14、收濾波器原理與應(yīng)用。誰能告訴我canbus的優(yōu)勢?CAN vs 485答:CAN和RS485不是一個層次的, CAN的速率和傳輸距離不是RS485可比的。CAN bus是技術(shù)開放的且最具成本優(yōu)勢的現(xiàn)場總線.現(xiàn)場總線的優(yōu)勢.。.大家都清楚吧? RS-485標(biāo)準(zhǔn),提供了多點(32點,在增加驅(qū)動電阻的情況下可以連接128節(jié)點)、雙向通信的能力,RS485 只對接口的電氣特性做出規(guī)定,而不涉及接插件、電纜或協(xié)議,因此用戶可以建立自己的高層通信協(xié)議。RS-485最大傳輸距離約為1219米,最大傳輸速率為10Mb/s.CAN 總線當(dāng)使用Philips P82C250作為CAN收發(fā)器時,同一網(wǎng)絡(luò)中

15、允許掛接110個節(jié)點。CAN 可提供高達(dá)1Mbit/s的數(shù)據(jù)傳輸速率,但數(shù)據(jù)傳輸速率與通訊距離成反比,高達(dá)1Mbit時通信距離只有40m。CAN總線使用CANopen或DeviceNet有嚴(yán) 格的協(xié)議,傳輸數(shù)據(jù)中ID號、功能號都占據(jù)傳輸數(shù)據(jù)的一定比例,因此CAN總線的數(shù)據(jù)有效傳輸率不高。網(wǎng)站文檔CAN-bus 現(xiàn)場總線應(yīng)用方案-RS-485升級。.。中有一些性能比較。單片機用的是51系列,c語言,如果SJA1000模式寄存器的地址為 OXC000,請問用什么樣的命令來讀寫,然后判斷該寄存器可以被正常讀寫.答:可以通過寫入并驗證SJA1000測試寄存器(地址:0x09,名稱:REG_CAN_TE

16、ST)的數(shù)值來判斷 CPU與SJA1000的硬件連接是否正確。例 如,第1次向SJA1000測試寄存器REG_CAN_TEST寫入0x55并讀出驗證;如果通過,則再次向寄存器REG_CAN_TEST寫入0xAA 并讀出驗證;如果2次驗證均通過,說明CPU與SJA1000連接正確,否則需要檢查相關(guān)的硬件連接。在基于CAN控制器SJA1000控制器的BasicCAN控制模塊、基于SJA1000 CAN控制器的PeliCAN模塊源代碼中均有測試SJA1000硬件接口函數(shù),函數(shù)名稱為:SJATestInterface,用戶可直接調(diào)用.以下程序為基于CAN控制器SJA1000控制器的 PeliCAN模塊

17、中關(guān)于SJATestInterface函數(shù)的源代碼。char     SJATestInterface(unsigned char   testvalue)char    status=0;bit    ErrorFlag =1;unsigned    char    ErrorCount = 0x20;unsigned    char    temp =

18、testvalue; while(-ErrorCount)WriteSJAReg(REG_CAN_TEST,temp);if(ReadSJAReg(REG_CAN_TEST) =   temp)temp =temp ;WriteSJAReg(REG_CAN_TEST,temp);If(ReadSJAReg(REG_CAN_TEST) =   temp)temp =0;WriteSJAReg(REG_CAN_TEST,temp);ErrorFlag =0;break;else   continue;if(ErrorFlag)s

19、tatus   =   SJA_INTERFACE_ERR ;return (status);我最近在學(xué)習(xí)CAN控制器 SJA1000,遇到了一個問題,希望那一為大蝦能給予幫助,在此先謝了問題是這樣的:如果一個SJA1000的節(jié)點(節(jié)點)接收到了一個遠(yuǎn)程幀,節(jié) 點怎樣知道,這一遠(yuǎn)程幀是那一個節(jié)點發(fā)來的?如果節(jié)點要給該節(jié)點以應(yīng)答,識別碼應(yīng)該怎樣寫?答:需要有應(yīng)用層協(xié)議才能區(qū)分網(wǎng)絡(luò)的源節(jié)點、目的節(jié)點。求教大俠,用ADuC812開發(fā)CAN的時候,直接把89C51測試是正確的CAN發(fā)送程序(在程 序開頭加MOD812)移植到ADuC812中去,把程序下載進(jìn)去之后

20、,運行正常(能不停的向ZLGCAN卡發(fā)送數(shù)據(jù));但是重新上電后,不工作了(沒 有數(shù)據(jù)上來);可是另外編了一個串口發(fā)送程序下載進(jìn)去之后運行正常,重新上電也正常。我是想把ADuC812當(dāng)89C51用(主要是想用它的AD)是不是 除在程序開頭加$MOD812外,還需要其它的設(shè)置?如果是,怎樣設(shè)置?謝謝!答:硬同步。CAN控制器中如何執(zhí)行硬同步?我板子上 的sja1000+82c250,初始化,把發(fā)送的數(shù)據(jù)幀發(fā)到發(fā)送緩沖器都還可以,但是一設(shè)置命令寄存器的自接收命令和中止發(fā)送命令后,就在狀態(tài)寄存器里 的是:出錯狀態(tài),發(fā)送緩沖器狀態(tài),然后TX錯誤計算超出127,ECC里的是03,位錯,幀起始錯。檢查了好久

21、也不行.請幫幫菜鳥的我吧。55答:搜索論壇上過去的帖子,自收發(fā)需要滿足幾個條件。如何用串口發(fā)送連續(xù)的13位低電平和一位高電平就大部分的UART來看,都是8位,8位發(fā)的。要發(fā)送連續(xù)的13個0和1個1,請問如何實現(xiàn)。接收 時又如何接收?答:前面有回復(fù):變化波特率以適 應(yīng)硬件。DP-51H實驗儀的一個功能:擴展LIN-bus接口,提供完整的“LINbus規(guī)范、應(yīng)用范例及其軟件包”,實現(xiàn)LINbus的通訊實 驗;兩個通信完好的兩個節(jié)點,如果節(jié)點CAN1發(fā)送了一幀數(shù) 據(jù),而這幀數(shù)據(jù)里的標(biāo)志符不是另一節(jié)點CAN2的標(biāo)志符,當(dāng)發(fā)送以后,在應(yīng)答間隙內(nèi),CAN2是否會發(fā)送一個顯性位作為回應(yīng)呢?書上說“當(dāng)接收器正

22、確地接收到有效的報文,就會在應(yīng)答間 隙發(fā)出一顯性位”,這里的正確接收是何概念呢?是完全滿足驗收濾波條件存入接收FIFO嗎?答:在數(shù)據(jù)鏈路層檢查正確,不需要經(jīng)過驗收過濾,就硬件回應(yīng).初次作CAN的項目,目前我有兩個CAN節(jié)點,分別在回環(huán)模式下測試通過,波特率為125K,兩節(jié) 點直接將控制器的CANTX(CAN1)-CANTX(CAN2),CANRX(CAN1)CANRX(CAN2)相連,現(xiàn)在CAN1能夠向總線發(fā) 送滿足CAN2接收條件的報文,但不見CAN2回復(fù)期望的報文(CAN如果收到報文肯定會回復(fù)的)!不知為什么,請高手賜教!謝謝了 答:建議在總線上加一個標(biāo)準(zhǔn)ZLGCAN監(jiān)控節(jié)點,監(jiān)

23、控總線的幀數(shù)據(jù);只有2個原因:1、CAN2沒收到;     2、CAN2已發(fā)送,CAN1沒有收到。自答:原因是:由于我的兩個can控制器不同CAN1 使用SJA1000,CAN2使用的是MCP2510,這兩個控制器的標(biāo)識碼寄存器位定義不同,我先前沒有注意到,所以報文無法正確的被接收!還是很感謝 黃老師:)請問,它的兩個輸出端分別接個5歐電阻,并且掛30P電 容接地應(yīng)該可以起到濾波的作用吧,如果節(jié)點太多會使電平保持的時間太小嗎?(就是變成三角波了)答:節(jié)點數(shù)目在大于3050時可以考慮不用PCA82C250濾波電容和電阻。我在實驗室調(diào)試兩個CAN節(jié)點的通信,

24、終端匹配電阻均為124(電位器,用萬表測 試),SJA100082C250,加斜率電阻。速率800K,在斜率電阻一個為9.6K,另一個為6。8K(也是電位器)的情況下可以通信,通信距離 35米(普通網(wǎng)線),斜率電阻再大就不能保證了.另 外在連接時必須是一個節(jié)點的CANH接另一個節(jié)點的CANL。按書上的接線示意圖將CANH共同接在同一根總線上,CANL共同接另一根總線上就 不通,為什么?答:這個方法是錯誤的,供參考的 正確電路連接圖可以從CAN-bus頁面的應(yīng)用方案中下載獲取。自己開發(fā)了一個CAN節(jié)點,要 與PLC通過CAN通訊,由于一個網(wǎng)上所有CAN節(jié)點BTR0、BTR1的參數(shù)應(yīng)一致,PLC各

25、波特率的BTR0、BTR1參數(shù)不知,那么我自己開發(fā)的 CAN節(jié)點這兩個參數(shù)如何定? 答:編寫個自動檢測波特率程序;PLC一般也可設(shè)定。 問:SJA1000 的雙相輸出方式具體該如何應(yīng)用,如果不接PCA250,怎么接到總線上?答: 還是要接PCA82C250芯片。問:關(guān)于 CAN總線供電的請教: 如果用電源耦合能否實現(xiàn)CAN的總線供電?答:建議用標(biāo)準(zhǔn)雙絞線方式;走的人多了,不需要自己研究.問:光靠標(biāo)準(zhǔn)雙絞線怎么能實現(xiàn)總線供電呢?答:總線供電另外采用獨立的電纜,如 DeviceNet 規(guī)范;這是國際推薦的標(biāo)準(zhǔn)方式。問:請問CAN總線兩節(jié)點間要通信的話,他們的波特率是不是要完全一

26、致?答:節(jié)點有重同步的功能,允許偏差在一定范圍內(nèi),比如晶 振偏差,見SJA1000的位定時文檔。問:請問驗收濾波器可不可以屏蔽某些位,就是說不管某 些位是什么,只關(guān)心其中幾位.答:當(dāng)然可以啊.問:我現(xiàn)在調(diào)試通過CAN通訊的數(shù)據(jù)采集板,上位機買的是的PCI_CAN9810卡,用CANalyst分析儀調(diào)試自己開發(fā)的CAN采集 板,我現(xiàn)在調(diào)試CAN,還沒有調(diào)試通,CAN的CS接CPU(P89V51RD)的P2。7(28腳),CAN地址是7fff,應(yīng)該沒錯嗎?程序如下(用 偉福仿真器仿真): include<AT89X51。H include<SJA_BCANCONF。H># inc

27、ludeSJA_BCANFUNC.C> define     uchar     unsigned charvoid     InitCpu(void);void     InitT0(void);void     Sja1000Init(void);bit     SecFlag;/uchar     data

28、     a5;uchar     data     SendData10,RcvData10;uchar     DataBuf,SecData,Second;uchar     data     TmodData;uchar     bdata     FlagInit;sb

29、it     RcvFlag=FlagInit0;sbit     ErrFlag=FlagInit2;void     main(void)     /int     i;     /for(i=0;i100;i+)     /P1_4=1;     Sja1000Init()

30、;     InitT0();     InitCpu();/     flaginit();     while(1)              if(RcvFlag)             &#

31、160;        RcvFlag=0;             BCAN_DATA_RECEIVE(RcvData);             BCAN_CMD_PRG(0x04);     /release buffer  

32、;                if(SecFlag)                      SecFlag=0;           

33、0; SendData0=0xaa;    /send canid             SendData1=0x08;    /send longth             SendData2=Second;   /send data   &#

34、160;         BCAN_DATA_WRITE(SendData);             BCAN_CMD_PRG(0x01);                  if(ErrFlag)   &#

35、160;                  ErrFlag=0;             Sja1000Init();              void    

36、; Ex0Int(void) interrupt 0 using 1     SJA_BCANAdr=REG_INTERRUPT;     FlagInit=*SJA_BCANAdr;void     T0Init(void)     interrupt 1 using 2     TR0=0;     SecData-;   

37、  if(SecData=0)              SecData=0x10;         TH0=0x80;         TL0=0x60;         SecFlag=1;   

38、      Second+;          TR0=1;void     InitCpu(void)     PX0=1;     IT0=1;     EX0=1;     ET0=1;     EA=1; 

39、60;   SecData=0x10;void     InitT0(void)     TmodData =TMOD;     TmodData &=0xf0;     TmodData =0x01;     TMOD =TmodData;     TH0 =0x80;     TL0 =

40、0x60;     TR0 =1;     SecData=0x20;     Second=0x00;void     Sja1000Init(void)     BCAN_ENTER_RETMODEL();     BCAN_SET_BANDRATE(0x04); /100k     BCAN_SET_OBJECT

41、(0xaa,0xff);     BCAN_SET_OUTCLK(0xaa,0x48);     BCAN_QUIT_RETMODEL();     SJA_BCANAdr =REG_CONTROL;     SJA_BCANAdr = 0x0a;     /現(xiàn)在用示波器測CAN_H和CAN_L,沒有信號,請問是什么問題?注:這個參考一下吧,呵呵問: 請教各位大蝦:有沒有CAN局部測試程或意見?急

42、需!!謝謝!有沒有人能給他的自測程序給我看看?幫幫我呀!答:網(wǎng)上有basicCAN例程,CANstarter-I 工具中有PeliCAN例程。問:我貼一下關(guān)于CAN驗收濾波器的程序:哪里不對,請指教。多謝多謝了。BPS_307K    EQU    0x00F88001   ;波特率307KAF_RAM      EQU    0xE0038000   ;驗收濾波器RAM起始地址   &

43、#160;        LDR   R0, =CANAFMR            MOV   R1, 0x02            STR   R1, R0       &#

44、160;               LDR   R0, =AF_RAM            LDR   R1, =0x25522553            STR   R1,

45、 R0/我在上面設(shè) 置了一個25522553,CAN控制1口,只接收標(biāo)識符為552,553的幀,我不知道這樣設(shè)置對嗎?這算設(shè)置了一個表格嗎?            LDR   R0, =CANAFMR            MOV   R1, 0x00       &#

46、160;    STR   R1, R0/這樣算是啟動了吧?我沒有設(shè)置CANSFF_sa濾 波器,可以不設(shè)置嗎?如果需要設(shè)置,照我現(xiàn)在的情況,這個濾波器中應(yīng)該填什么值呢?/在以上設(shè)置好以后,所有的總線數(shù)據(jù)都不響應(yīng)了,急死我了,我看了網(wǎng)上的pdf文檔,不過還是沒什么啟發(fā)。希望高 手能解答我的疑惑。謝謝了答:參考或直接使用CANstarter-II開發(fā)套件 中提供的資源。問:請問各位高手,作為一個初學(xué)者應(yīng)該如何學(xué)習(xí)CAN總線技術(shù)?應(yīng)該先學(xué)習(xí)哪一些基本知識,請推薦 妨相關(guān)書籍一二。謝謝!答:現(xiàn)場總線CAN原理 與應(yīng)用技術(shù)作者:饒運濤 鄒繼軍 鄭勇蕓出

47、版社:北京航空航天大學(xué)出版社問:又沒有帶CAN控制器的可在線編程的8位單片機呢,麻煩推薦一款吧 答:ATMEL AT89C51CC0X 系列不錯!答:intel的89C591,89C592都是片內(nèi)帶can的8位單片機.問:本來應(yīng)用了,但是想提高系統(tǒng)的速度,想用,做,但是 想借此學(xué)習(xí),或,這里能想一樣,如果買了板子,提供代碼,原理圖嗎?如果沒有哪種開發(fā)板有呢,能推薦一下嗎?答:系統(tǒng)而理論地學(xué)習(xí)CAN,建議選擇 CANstarterI/II開發(fā)套件;應(yīng)用的話,USBCAN、PCICAN都是非常可靠的產(chǎn)品。問:請問,在SJA1000軟件設(shè)計中,把發(fā)送信息送入發(fā)送緩沖區(qū),啟動發(fā)送后,為何總是

48、會自動進(jìn)入復(fù)位模式?請哪位大俠幫忙指教一番。問:再問一下,之后我重新?lián)Q了線路板和芯片,復(fù)位問題 沒有了,但啟動發(fā)送后檢測狀態(tài)位,發(fā)現(xiàn)發(fā)送狀態(tài)一直為(始終發(fā)送未完成)。需要說明一點,目前我只用了一塊線路板加一個仿真器進(jìn)行發(fā)送調(diào)試,并沒有接上接 收的線路板,請問單發(fā)行否?請大俠幫忙指點以上問題!謝謝!答: 一個節(jié)點可以工作在自測試模式,在這個模式下的工作機制跟兩點是一樣的,然后啟動自接收命令即可。答: 單發(fā)送不可, 正常發(fā)送時需要網(wǎng)絡(luò)上同一速率的工作節(jié)點響應(yīng). 問:第一,接 收信息的工作節(jié)點需要什么響應(yīng)來確認(rèn)?第二,接收的子程序未調(diào)好是否意味收發(fā)兩方均無法調(diào)試?如何確認(rèn)發(fā)送成功?答:網(wǎng)絡(luò)

49、上同一速率的正常工作節(jié)點響應(yīng):1、已設(shè)定速 率;2、在工作狀態(tài)。完全是由硬件(比如:SJA1000芯片)完成ACK確認(rèn)。問:請問 單個can 節(jié)點可以進(jìn)行調(diào)試嗎?是一塊一路的can適配卡,使用端口地值300h,我使用winio進(jìn)行讀寫的,可為什么,所有的單元讀出來得數(shù)據(jù)都是ff?是因為 只使用了單個節(jié)點can控制器不能正常工作嗎?答:sja 可實現(xiàn)單節(jié)點調(diào)試;ff應(yīng)該是地址空間錯誤;問: 我還是不太明白,你說的地址空間錯誤,是說sja1000的地址沒有選通,地址沒有指向sja1000的寄存器嗎?答:首先把讀寫片選信號產(chǎn)生了再去管sja1000吧。問:我用驗收濾波器來選擇接收CAN2。0B的一幀

50、數(shù)據(jù),29位中只對其中幾位進(jìn)行判別,其他位又 不是定值,請問這該怎么辦?可不可以掩住不關(guān)心的位?用范圍應(yīng)該也可以實現(xiàn),不過那樣感覺不好,請教大家,謝謝!答:相關(guān)/不相關(guān)位最終都可以轉(zhuǎn)化為范圍描述。問:請教關(guān)于2119 can驗收過濾器的問題請問:1、在canstarterii應(yīng)用指南第42頁中提到的“fullcan標(biāo)準(zhǔn)地址”與 “標(biāo)準(zhǔn)單個地址”有何區(qū)別?      2、第45頁表2。34的“值"“字"“行”“id索引”是什么概念?答:fullcan標(biāo)準(zhǔn)地址放置的是需要自動執(zhí)行接收存儲的id索引表格(fullCAN功能,查看相

51、關(guān)的介紹); 標(biāo)準(zhǔn)單個地址僅僅是AF接收/屏蔽標(biāo)準(zhǔn)id的索引表格,即和一般的接收過濾理解一致。答:fullcan模式下自動把符合的幀放在后面的ram里    標(biāo)準(zhǔn)單個把符合的數(shù)據(jù)放在接收寄存器中問:將“LPC 系列ARM 微控制器的CAN 接收過濾設(shè)置” 一文中的LTU.hpp加入原來的工程中(原來是用c做的),編譯時有好多錯誤,用的確實是C編譯器,可感覺它對c中的關(guān)鍵詞不認(rèn)識,請大家指 教,謝謝!答: 里頭好像僅僅作用域符號“:”不是C的之外沒什么特別之處.問:以前我用的是485通訊,通 訊協(xié)議里面都定義了包起始和包結(jié)束(CRC可以幫助驗證是否包結(jié)束).而對于C

52、AN這個東東,比如我要發(fā)送一個信息包有100個字節(jié),發(fā)送倒沒有問題,對 于接收端,我怎樣去判斷包起始和包結(jié)束呢?困惑ing請斑竹和各位大蝦們指教!答:CAN bus由硬件完成幀的錯誤控制、數(shù)據(jù)處理,因此,協(xié)議比RS485會方便許多。比如擴展幀格式:幀頭(源地址、目的地址、命令字、輔參數(shù))     數(shù)據(jù)場(分段碼、07個數(shù)據(jù))     超過8個字節(jié)/幀時,需要分幀處理。     具體方式,可以參考網(wǎng)頁的CAN應(yīng)用方案中通訊協(xié)議篇、RS-485升級篇。問:我的應(yīng)用為:一個主機(計

53、算機)會和很多的從機連接,每個從機都將通過網(wǎng)絡(luò)連接,所以必須使用 HUB,你們的ZNE-100將接在HUB上。計算機只要和HUB連接就可以了。不知道我該如何設(shè)置ZNE-100?還有此HUB還能連接其他的計算機 嗎?答:ZNE-100嵌入式以太網(wǎng)轉(zhuǎn)串口模 塊使用說明  sja1000的片選同時有效嗎?比如用138譯碼器的y1選通sja1000的復(fù)位線,來達(dá)到使sja1000復(fù)位的目的,那么此時要求片選線有效嗎?答:見SJA1000數(shù)據(jù),異步操作,不要求片選有 效.問:請問怎樣把sja1000分時復(fù)用AD總線與 pc104的數(shù)據(jù)線和地址線連接? 答:周立功公司已經(jīng)有現(xiàn)成的“PC

54、104-CAN”接口 卡提供。問:DP51+上BasicCAN測試程序的問題 在DP51+上用BasicCAN測試程序按鍵操作向其它節(jié)點發(fā)送數(shù)據(jù)時,總出現(xiàn)E-F8的錯誤,檢查連線和波特率 的設(shè)置也沒有問題,真不知道是什么原因?也沒法收到其它節(jié)點發(fā)送過來的數(shù)據(jù)。有可能這是收發(fā)器TJA1050T出現(xiàn)問題了嗎?答:可能是組建的CAN網(wǎng)絡(luò)中有其他節(jié)點未設(shè)置正確,比 如波特率。ZLG公布的代碼都經(jīng)過測試,附有文檔說明。問:在開發(fā)過程中遇到如下問題: (公司沒有上ARM,出于對其狂熱的追求,自己出銀子買的DEMO板)1:想完成自發(fā)自收,CANMOD_STMBIT=1,CANCMR_SRRBIT=

55、1,觀察寄存器窗口,接收 REG   內(nèi)容沒有發(fā)生變化,(自測模式是否需要搭建一個CAN總線平臺??我只有一個DEMO和   一個自己做的CAN總線收發(fā)器),接收中斷也未發(fā)生,用的是周工最新的驅(qū)動。2. 如果只想接收ID為0x1234的信息,不用FULLCAN模式,該怎樣設(shè)置才對呢?是不是這樣:eFullCan禁能,則只需設(shè)置標(biāo)準(zhǔn)幀單個起始地址 REG,把相應(yīng)的ID填入就行了呢3。 每次調(diào)用 CanSendData(CAN1,cSlfSendCmd,TempBufPt),都將導(dǎo)致CANMOD_RM=1,發(fā)送錯誤計數(shù)器累加,好象是總線離線狀態(tài)。郁悶啊還請斑

56、竹和大蝦們指點迷津答:CAN總線至少需要2個節(jié)點才好調(diào)試,要不怎樣才能 組成總線呢? 答:網(wǎng)站可以下載代碼,請參照配套的文檔進(jìn)行測試。至少要加CAN收發(fā)器、終端電阻,建立再在PC上安裝 1個CAN接口卡,比如CAN232接口卡。回 復(fù):原來采用的總線收發(fā)器的前端光耦出了問題!謝 謝大家了!特別感謝周立功的技術(shù)支持工程師!問:如果要在CANBUS上供電12V或27V,該怎 么做?因為CAN是平衡傳輸,要用差分信號來同 步,現(xiàn)在要提高電平,該怎么做,以前請教過,但都只是說設(shè)計接口電路就可以實現(xiàn),但是太模糊了,能否有過經(jīng)驗者提供一點有實際操作的思路。感激不 盡.。感謝你的關(guān)注!答:1,加一

57、組電源線;2,收發(fā)器就是差分驅(qū)動器。問:如果加電源線那還是總線供電嗎?我的意思是兩條線上既傳信號又傳電,請教可以做到嗎?答:在CAN應(yīng)用中的總線供電常指的是通過4芯或5芯通 信線纜供電;收發(fā)器出來的仍然是基帶信號沒有調(diào)制的所以不容易實現(xiàn)線纜復(fù)用.問:請各 位高手解決:SJA1000收發(fā)擴展幀正常,但是不接收標(biāo)準(zhǔn)幀答:我認(rèn)為SJA1000不會出現(xiàn)這種現(xiàn)象,除非發(fā)送方有錯誤.問:對 FullCAN模式不是很理解,哪位老師給詳細(xì)介紹一下,謝謝! 答:簡而言之,就是驗收濾波方式的增 強,BasicCAN只有一種濾波,PeliCAN有2種濾波,可以加上廣播信息,而FullCAN就是有更多種濾波

58、。問:急,請各位老師近來看看2119 CAN驗收濾波器問題 設(shè)置如下:我用的是匯編:AF_MEM    EQU    0xE0038000LDR    R0,=AF_MEM        ;讀取驗收濾波器RAM的起始地址LDR    R1,0x25522553    ;我需要標(biāo)識為552和553的接收,CAN1控制器STR    R1,R

59、0LDR    R0,=AFMR          ;讀取驗收濾波器模式寄存器地址MOV    R1,0x00          ;這樣啟動濾波器對嗎?STR    R1,R0這樣的情況下,CAN1接收中斷不響應(yīng)任何數(shù)據(jù),這是為什么?中斷機制完好,旁路濾波器時候全部響 應(yīng)的。關(guān)于CANSFF_sa寄存器該如何設(shè)置才能完成濾波接收

60、?請指教。答:修改 RAM表格前應(yīng)該先置位AccBP位LDR    R0,=AFMR          ;讀取驗收濾波器模式寄存器地址MOV    R1,#0x02          ;置位AccBP,以便設(shè)置過濾表格         STR  &#

61、160; R1,R0答:參考<LPC系列ARM微控制器的CAN接收 過濾設(shè)置 問:在使用周的底層驅(qū)動時出了點問題,不知是什么原因 用LPC2119中斷方式做了一個轉(zhuǎn)發(fā)器件,中斷很正常,中斷程序調(diào)用寫環(huán)形環(huán)形緩沖區(qū);主程序是讀環(huán)形緩沖區(qū),但 是讀時發(fā)生了數(shù)據(jù)中止,不解,就是下面第二句出了問題stcRxBUF *RxBuf;RxBuf = CANRcvBufApp.RcvBufCAN1CANRcvBufApp。ReadPoint1;答:網(wǎng)站資料已更新;查詢方式會比較方便。問:過載幀與錯誤幀是怎么使用的啊對數(shù)據(jù)幀,和遠(yuǎn)程幀很好理解,也很好使用,但是對過載和錯誤就不知道在什么

62、地方用了,也不知道該怎 么用了???請各位指點答:CAN控制器自己管理問:錯誤消極中斷和錯誤警報中斷該怎么處理呢?只是簡單的復(fù)位么?這兩種錯誤有什么區(qū)別呢?不太明 白答:按流程可以不處理,參考網(wǎng)站示例。問:仲裁丟失該怎么理解呢?仲裁丟失算不算是一種錯誤呢?仲裁丟失一般的處理是怎么樣的呢?只是讀 取仲裁丟失捕捉寄存器么?答:不算,僅僅提供一 個網(wǎng)絡(luò)參考信息,例如網(wǎng)絡(luò)負(fù)載/id分配是否合理等。問:為什么在分析儀發(fā)出第三偵 后,2119才產(chǎn)生接收中斷,而且收到的是第一偵的數(shù)據(jù),WritePoint2 = 1.如果分析儀只發(fā)出一偵數(shù)據(jù),不能產(chǎn)生中斷,怎么回事?答:第三幀才產(chǎn)生中斷可能是溢出中斷,因為接收

63、中斷和溢 出中斷的額中斷號是不同的,菲利普的早期資料中CAN的中斷號有錯,請下載最新資料!答:我試過中斷模式,沒問題,可以產(chǎn)生中斷,可是周的低層驅(qū)動關(guān)于環(huán)形緩沖區(qū)那部分可能有些問題。中斷后調(diào)用寫數(shù)據(jù)緩沖區(qū),然后在主程序里循環(huán)讀環(huán)形緩沖 區(qū)。忘了是在哪里會出現(xiàn)數(shù)據(jù)中止,按說是不應(yīng)該出現(xiàn)的.問:請教RTR位在濾波中的作 用?請教各位老師:濾波器中的rtr位參不參與 濾波,我在實驗中有兩個節(jié)點,采用雙濾波標(biāo)準(zhǔn)幀通信,我設(shè)置接收方的acr0,acr1,acr2,acr3寄存器為 00,00,00,amr0,amr1,amr2,amr3分別是00,0f,00,ff。發(fā)送方ID1,ID2為00,20;但是

64、發(fā)送方的 ,只要是20和30,該幀數(shù)據(jù)都能接收,其它的如40,50,都不行,我不知道為什么?是不是rtr位不參與濾波,發(fā)送方在發(fā)送的時間不必要考慮此 位.郁悶的不行,懇請幫助!答:就把它看作像id那樣的一個bit看待吧。問:SJ1000T中基本模式下只能檢測8位的ID,但發(fā)送時確有11位ID,請問ID2-0有什 么用?答:你指的是BasicCAN模式下的” 驗收過濾";其實,兩種模式的所有11位或29位都有效。問:BasicCAN模式下的" 驗收過濾”只能過濾ID103,請問ID20對接受有影響嗎?資料顯示并沒有對ID20進(jìn)行核對。答:BasicCAN模式?jīng)]有對ID20進(jìn)行

65、核對。問:請問在雙絞線上傳輸?shù)腃AN信號波形應(yīng)該是怎么樣的?信號的幅值和頻率?另外,能否推薦使用在 車輛上的電纜型號以及節(jié)點與總線相接的接插件型號!謝謝!!答:汽車類型不同,應(yīng)用有所不同,建議參考SAE J1939協(xié)議內(nèi)容中的規(guī)定,制定自己的規(guī)范。問:有沒有CAN控制器+單片機(不包括CAN驅(qū)動器),成本不超過15元的方案?可付報酬!答:目前我們沒有能力實現(xiàn)。答:io模擬低速can.問:請問CAN總線是不是不能提供總線供電?如果希望總線供電該如何做?誰能提供一點關(guān)于CAN能 總線供電的資料啊?答:CAN 或 DeviceNet 都可以總線供電,根據(jù)需要選擇適合的應(yīng)用。CAN 沒有規(guī)定物理層.是

66、一種相當(dāng)靈活的現(xiàn)場總線.DeviceNet、CANopen均是基于CAN-bus協(xié)議,自定協(xié)議也不難。問:請問遠(yuǎn)程幀的作用是什么?在什么情況下需要使用它?答:那是一種可用可不用的幀資源。問:基地址選了0xda00,偏移量選擇0000后,sja1000得寄存器的地址是從 0xda000開始嗎?答:對的。問:在每次只收到一幀的情況下,我置位清除接受緩存都沒問題,但是一旦在短時間內(nèi)接收到2幀或以上 時(短時間指,第一幀還未完全被微控制器接收而第二幀已經(jīng)到來)我收完一幀,置位清緩就會出錯.然后我復(fù)位繼續(xù)接收下一幀微控制器就不能從sja1000 接收了,為什么會這樣那?置位清緩不是只清掉第一幀數(shù)據(jù)么?如

67、果只清第一幀數(shù)據(jù)的話,應(yīng)該第二幀可以收到的?。窟@是怎么回事那?要怎么解決那?謝謝了。答:不會這樣的,查查其他原因. 問:請教 版主CAN總線用于爆炸性氣體環(huán)境可以嗎? 在網(wǎng)上搜索了一下,看到的 是幾年前發(fā)表的 文章說CAN總線沒有解決防爆問題,不知現(xiàn)在有沒解決在爆炸性氣體環(huán)境使用CAN總線通信。如果沒有那只好用以前的 485了 改成hart還是更麻煩答:在現(xiàn)場總線控制系統(tǒng)的調(diào)試與開發(fā)-國防工業(yè) 出版社的技術(shù)書籍第8頁,列出了CANbus是本安的總線之一。問:請問 Can232和can232B轉(zhuǎn)換器的通訊協(xié)議是否必須和計算機相連才能更改我想用轉(zhuǎn)換器直接與PLC相連不知如何設(shè)置

68、通訊協(xié)議.答:看應(yīng)用場合而定,可以不用設(shè)置協(xié)議.這一份文檔中有 很好的說明!問:關(guān)于節(jié)點發(fā)送的問題向你請教。     發(fā)現(xiàn)經(jīng)常我的硬件復(fù)位有時不是成功的,導(dǎo)致發(fā)送不成功。讀狀態(tài)寄存器SR0x04,或0x44;請問這種情況是怎么回事??答:“硬件復(fù)位有時不是成功的”不容易理解;建議看一下 前面的貼,或網(wǎng)站的參考程序。問:那請問:硬件復(fù)位后,我發(fā)送前讀狀態(tài)寄存器 SR0x04,也就是“當(dāng)前請求的發(fā)送未處理完”,這種情況下發(fā)送時不能成功的.有時候硬件復(fù)位后發(fā)送前讀狀態(tài)寄存器SR0x0c,這種情況下發(fā)送時可以的。請教:為什么硬件復(fù)位后還會出現(xiàn)像前面的那種狀態(tài)寄存器 SR0x04,也就是“當(dāng)前請求的發(fā)送未處理完”的情況,應(yīng)該如何處理???答:硬件復(fù)位 成功后 SR= 0X0C ;否則就是硬件方面存在問題。建議用網(wǎng)站公開的電路與程序,或者直接在DP系列實驗儀上測試.問題1:在通訊時出現(xiàn)錯誤,用軟件復(fù)位能否將錯誤清除?問題2:軟件復(fù)位是否將以前設(shè)置的參數(shù)改為默認(rèn)值?是否 需要重新初始化?答:1.可以;2否,是 問:為什 么我在復(fù)位模式下CDR寄存器寫不進(jìn)那?其他寄存器都可以寫進(jìn)去,就是CDR寫不進(jìn)去.不明白為什么,和其他寄存器一樣的寫法,語句,但是無論寫什么進(jìn)去,讀出來都是00H.可以幫忙解 答以下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論