<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AT91SAM9263 CAN驅動(dòng)調試

AT91SAM9263 CAN驅動(dòng)調試

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏
之前調試CAN設備,一般用的是一個(gè)從淘寶上買(mǎi)的USB轉CAN的調試工具,100K -- 800K波特率基本沒(méi)有什么問(wèn)題,我們也就沒(méi)有過(guò)多的去考慮一些細節的問(wèn)題。忽一日,某客戶(hù)說(shuō)我們的CAN驅動(dòng)有問(wèn)題,跟他們的CAN調試設備通信不上,疑慮ing.遂帶工具前往之,試之,果然....

遂借其CAN調試工具回來(lái)捯飭,久未果 查其為ZLG公司的產(chǎn)品,遂前往之。遇到周立功公司一個(gè)大牛,CAN專(zhuān)家,號稱(chēng)沒(méi)有他解決不了的CAN問(wèn)題,事實(shí)證明,卻是有料,周立功公司的CAN 分析儀就是他們一幫人弄的,現在不做研發(fā),轉做服務(wù)了。拿Can分析儀查之,發(fā)現我們的CPU發(fā)出的CAN波形 波特率對不上,雖然設置為500K,可是由于CPU時(shí)鐘頻率非常規頻率,分頻以后,CAN時(shí)鐘再512K左右,ZLG公司的CAN調試工具是標準品,他們一般要求時(shí)序是比較嚴格的,所以我們的設備跟他的調試工具之間通信通不上,但是網(wǎng)上購買(mǎi)的USB轉CAN的調試工具則將SJW域設置的比較大 3或者4 左右,可以跟大部分的CAN通信上,即使是對方的CAN波特率不精確,存在比較大的誤差。

本文引用地址:http://dyxdggzs.com/article/201611/320036.htm

CAN問(wèn)題絕大部分呢,應該就是出在波特率的精確度上,但是一般情況下沒(méi)有那么精準的測試儀器,所以搞的大家一頭霧水。適當調整SJW 同步跳轉寬度的大小,可以一定程度的解決這個(gè)問(wèn)題,但是不是最佳的解決方案。雖然現象上看到,哦,通信正常了,我發(fā)的包對方可以收到,對方發(fā)的數據包我也可以收到,但是,事實(shí)是,這里面有了多次的重發(fā),得益于CAN協(xié)議,重發(fā),應答等等。

下面簡(jiǎn)單描述下CAN波特率的分析

比如說(shuō)500K波特率,一個(gè)比特被分為16個(gè)時(shí)間因子

500K * 16 = 8M

所以CAN時(shí)鐘應該盡量使8M的倍數。誤差盡量小。

同理推算其他波特率跟時(shí)鐘的對應關(guān)系。

在我們的9263應用中,MCLK = PLLA/2,CAN時(shí)鐘從MCLK分頻而來(lái)。

所以PLLA的取值應為16M的整數倍。我們的PLLA一般設置再200M---150M,所以PLLA可取192M 176M 160M等。

WinCE下設置就比較簡(jiǎn)單了,Eboot啟動(dòng)后,空格可以進(jìn)入eboot配置菜單,可以直接設置CPU的主頻 跟 分頻,不贅述。

裸奔的程序 則需要自己去設置倍頻跟分頻系數,從ATMEL官網(wǎng)下載了PLL計算工具,幫了不上忙,可能沒(méi)有那么精準,但是盡量接近就好。

#define BOARD_MCK ((16367660 * 98 / 10) / 2) /*160M*/

如上設置為160M的設置

除了這個(gè)宏定義的修改以為,在board_lowlevel.c中也需要做一些修改,

#define BOARD_MULA (AT91C_CKGR_MULA & (97 << 16))

#define BOARD_DIVA (AT91C_CKGR_DIVA & 10)

就是那兩個(gè)系數,注意分頻系數不變,但是倍頻系數減一了,原因看數據手冊就明白。

原來(lái)以為這樣就可以了,可是還有一個(gè)地方忽略了,看代碼

void LowLevelInit( void )函數中

void LowLevelInit( void )

{

…….

#if !defined(sdram)

/* Initialize main oscillator

初始化主振蕩器,時(shí)鐘等一系列操作

#endif //#if !defined(sdram)

。。。。。。。。。。。

}

整個(gè)過(guò)程包含在了對sdram宏的判斷內,如果定義了sdram則不做下面的處理,乖乖,你不做這個(gè)處理怎么可以呢,遂注釋掉上面兩個(gè)宏定義。

這個(gè)宏定義不是在文件中定義的,而是在編譯器的工程設置里面,

Options-àC/C++ Compiler Preprocessor選項卡,最下面 Defined symbols

也可以直接把sdram去掉。

一直在糾結SDRAM的初始化是在什么地方進(jìn)行的?



關(guān)鍵詞: AT91SAM9263CAN驅動(dòng)調

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>