<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 無(wú)線(xiàn)傳感組網(wǎng)技術(shù)

無(wú)線(xiàn)傳感組網(wǎng)技術(shù)

作者: 時(shí)間:2013-07-22 來(lái)源:網(wǎng)絡(luò ) 收藏

【主要程序文件】:

//******************************SJA1000初始化***********************************

void SJA1000_Init(void)
{
uchar i,a,b,i_temp=0,TempData,j_temp=0;

CLI();
SJA100HardWareRest(); //硬件復位
//Read_SJA1000(CAN_IR); //讀中斷寄存器,清除中斷位
SJAEntryResetMode(); //進(jìn)入復位模式
DelayUs(5);
SR_status = Read_SJA1000(CAN_SR); //讀狀態(tài)
//進(jìn)入Pelican模式
Write_SJA1000(CAN_CDR,0xc0); //選擇Pelican模式,CBP=1,激活RX0; 關(guān)閉TX1中斷與時(shí)鐘輸出。
SR_status = Read_SJA1000(CAN_SR); //讀狀態(tài)
DelayUs(5);

//自檢模式,自發(fā)自收檢測
//Write_SJA1000(CAN_MOD,0x04); //配置模式寄存器,雙濾波,自發(fā)自收

//接收所有報文
Write_SJA1000(CAN_AMR0,0xff); //配置驗收屏蔽AMR0=0FFH
Write_SJA1000(CAN_AMR1,0xff); //配置驗收屏蔽AMR1=0FFH
Write_SJA1000(CAN_AMR2,0xff); //配置驗收屏蔽AMR2=0FFH
Write_SJA1000(CAN_AMR3,0xff); //配置驗收屏蔽AMR3=0FFH
Write_SJA1000(CAN_ACR0,0x00); //配置驗收代碼ACR1=0:
Write_SJA1000(CAN_ACR1,0x00); //配置驗收代碼ACR1=0:
Write_SJA1000(CAN_ACR2,0x00); //配置驗收代碼ACR1=0:
Write_SJA1000(CAN_ACR3,0x00); //配置驗收代碼ACR3=0;


Write_SJA1000(CAN_TXERR,0x00);
Write_SJA1000(CAN_RXERR,0x00);
Write_SJA1000(CAN_ECC,0x00);
Write_SJA1000(CAN_RBSA,0x00);

//設置波特率(16MHZ晶振,125Kb)
Write_SJA1000(CAN_BTR0,0x03); //配置總線(xiàn)定時(shí)--1255kbps 0x6e03
Write_SJA1000(CAN_BTR1,0x1C); // 0xffaf
Write_SJA1000(CAN_OCR,0xaa); //配置輸出控制
Write_SJA1000(CAN_EWLR,0xff); //配置錯誤報警限制為255
Write_SJA1000(CAN_CMR,0x0c); // 清楚數據溢出和釋放接收緩沖器

// 退出復位模式,進(jìn)入工作模式
SJAQuitResetMode();
SR_status = Read_SJA1000(CAN_SR); //讀狀態(tài)
//Write_SJA1000(CAN_TXB+4,ID3); //配置發(fā)送緩沖區的ID3-
// Write_SJA1000(CAN_IER,0x01); //配置SJA10000中斷-錯誤報警/發(fā)送/接收中斷0x07
Write_SJA1000(CAN_IER,0x81); //使能SJA1000接收中斷位,和總線(xiàn)錯誤中斷位
SEI();

}

//******************************SJA1000發(fā)送程序*********************************
void send_sja1000(void)
{
uchar s,i,canstatus,canstatus1,canstatus2,canstatus3,canstatus4;
//CLI();
canstatus= Read_SJA1000(CAN_SR); //讀狀態(tài)
canstatus1 = Read_SJA1000(CAN_MOD); //讀模式
canstatus2 =Read_SJA1000(15); //TX錯誤計數
canstatus3 =Read_SJA1000(14); //RX錯誤計數
canstatus4 =Read_SJA1000(12); //錯誤代碼捕捉

for( i=0;i5;i++ );
{
canstatus = Read_SJA1000(CAN_SR);
}

if((canstatus 0x0C)== 0x0C) //查詢(xún)SJA1000是否處于接收狀態(tài),當SJA1000不處于接收狀態(tài)時(shí)才可繼續執行
{ //SR.3=0,發(fā)送請求未處理完,等待直到SR.3=1
goto SJA1000; //SR.2=0,發(fā)送緩沖器被鎖
}
else
{
LEDSysMode = 0;
return;
}

SJA1000:

//發(fā)送數據寫(xiě)進(jìn)發(fā)送緩沖區中
WriteSJARegBlock(16,Send_CAN_Info_ID,5); //擴展幀,向發(fā)送緩沖區寫(xiě)入5個(gè)識別碼
Write_SJA1000(21,DataText[0]); //擴展幀,向發(fā)送緩沖區寫(xiě)入8個(gè)數據
Write_SJA1000(22,DataText[1]);
Write_SJA1000(23,DataText[2]);
Write_SJA1000(24,DataText[3]);
Write_SJA1000(25,DataText[4]);
Write_SJA1000(27,DataText[6]);
Write_SJA1000(26,DataText[5]);
Write_SJA1000(28,DataText[7]);
// 啟動(dòng)發(fā)送
Write_SJA1000(CAN_CMR,0x01);//使能發(fā)送請求,發(fā)送數據。(0x03,單次發(fā)送,有錯誤不重新發(fā)送;0x01發(fā)送請求命令,當錯誤時(shí)可重發(fā);0x10產(chǎn)生一次自接收性質(zhì)的報文發(fā)送)
SEI();
DataText[7]=0x00;
while((canstatus0x08) ==0) //檢測是否發(fā)送完畢
{
canstatus = Read_SJA1000(CAN_SR); //讀狀態(tài)
}
LEDSysMode = 1;

}

【總結】:

本系統主要是RF和CAN總線(xiàn)兩大塊,功能都能實(shí)現。部分代碼如上所示,若網(wǎng)友希望進(jìn)一步了解,可以站內信聯(lián)系。

原帖地址:http://bbs.21ic.com/icview-584206-1-1.html


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(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>