日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件

在理解了CAN總線(xiàn)的自通信程序后,再來(lái)探討CAN總線(xiàn)間的相互通信變得容易了許多。對(duì)于是自通信還是相互通信,這個(gè)肯定是需要對(duì)寄存器進(jìn)行必要的設(shè)置 的,分析PIAE的兩個(gè)程序后不難發(fā)現(xiàn),自通信和互通信需要設(shè)置的知識(shí)模式寄存器,這個(gè)是在SJA1000的初始化時(shí)進(jìn)行設(shè)定的。

SJA1000的初始化程序我根據(jù)習(xí)慣,直接把它獨(dú)立成一個(gè)子程序了。如下,是工作于自通信時(shí)的初始化程序。

///////////////////////////////////////////////

//函數(shù):init_sja1000

//說(shuō)明:獨(dú)立CAN控制器SJA1000的初始化

//入口:無(wú)

//返回:無(wú)

///////////////////////////////////////////////

void init_sja1000(void)

{

uchar state;

uchar ACRR[4];

uchar AMRR[4];

// 接收代碼寄存器

ACRR[0] = 0xff;

ACRR[1] = 0x22;

ACRR[2] = 0x33;

ACRR[3] = 0x44;

// 接收屏蔽寄存器,只接收主機(jī)發(fā)送的信息

AMRR[0] = 0xff;

AMRR[1] = 0Xff;

AMRR[2] = 0xff;

AMRR[3] = 0xff;

// 使用do--while語(yǔ)句確保進(jìn)入復(fù)位模式

do

{ // 設(shè)置MOD.0=1--進(jìn)入復(fù)位模式,以便設(shè)置相應(yīng)的寄存器

MODR = 0x09;

state = MODR;

}

while( !(state & 0x01) );

// 對(duì)SJA1000部分寄存器進(jìn)行初始化設(shè)置

CDR = 0x88; // CDR為時(shí)鐘分頻器,CDR.3=1--時(shí)鐘關(guān)閉, //CDR.7=0---basic CAN, CDR.7=1---Peli CAN

BTR0 = 0x31; // 總線(xiàn)定時(shí)寄存器0 ;總線(xiàn)波特率設(shè)定

BTR1 = 0x1c; // 總線(xiàn)定時(shí)寄存器1 ;總線(xiàn)波特率設(shè)定

IER = 0x01; // IER.0=1--接收中斷使能;IER.1=0--關(guān)閉發(fā)送中斷使能

OCR = 0xaa; // 配置輸出控制寄存器

CMR = 0x04; // 釋放接收緩沖器

// 初始化接收代碼寄存器

ACR0 = ACRR[0];

ACR1 = ACRR[1];

ACR2 = ACRR[2];

ACR3 = ACRR[3];

// 初始化接收屏蔽寄存器

AMR0 = AMRR[0];

AMR1 = AMRR[1];

AMR2 = AMRR[2];

AMR3 = AMRR[3];

// 使用do--while語(yǔ)句確保進(jìn)入自接收模式

do

{ //MOD.2=1--進(jìn)入自接收模式,MOD.3=0--雙濾波器模式

MODR = 0x04;

state = MODR;

}

while( !(state & 0x04) );

}



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉