欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> STM32 >> 瀏覽文章

stm32的CAN通信(環(huán)回模式)

作者:明入   來源:明入的博客   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月18日   【字體:

用了周六日兩天的時(shí)間把IIC學(xué)了一遍,因?yàn)椴皇鞘褂玫膕tm32的片上IIC外設(shè),需要模擬時(shí)序,之前一直嫌麻煩,但麻煩也得學(xué)啊,想起一周前學(xué)的CAN通信,IIC簡(jiǎn)直是弱爆了。CAN通信可以多主機(jī)同時(shí)發(fā)送信息,加入IIC也這樣那就出錯(cuò)誤了,而且CAN的通信最大距離是10Km,首先CAN有兩種國(guó)際標(biāo)準(zhǔn)ISO11898和IOS11519。stm32的CAN模塊支持ISO11898。還有一個(gè)概念,就是顯性和隱性。CAN共有兩條線。CAN_high和CAN_low,在空閑狀態(tài)時(shí)是程隱性的即高電平,當(dāng)有設(shè)備發(fā)送數(shù)據(jù)時(shí),需要發(fā)送一個(gè)起始幀,即一個(gè)顯性位-邏輯0

第二個(gè)是仲裁段,11位的ID,注意這里的ID并不是地址,而是發(fā)送優(yōu)先級(jí),這和IIC是不一樣的,正因?yàn)槿绱耍岳碚撋螩AN總線上能掛無數(shù)個(gè)器件。
數(shù)據(jù)幀最多能裝8個(gè)字節(jié)的數(shù)據(jù)
 
stm32的IIC
void can_init_state()
{
 RCC->APB1RSTR|=1<<25;//
 RCC->APB1RSTR&=~(1<<25);
 RCC->APB1ENR|=1<<25;//打開can時(shí)鐘
 CAN1->MCR=0;
 CAN1->MCR|=1<<0;//進(jìn)入初始化模式
 CAN1->BTR=0;
 CAN1->BTR|=1<<2;
 CAN1->BTR|=6<<16;  
 CAN1->BTR|=7<<20;
 CAN1->BTR|=1<<30;//允許環(huán)回模式
 CAN1->MCR&=~(1<<0);//退出初始化
}
 
void can_send_data(u32 data1,u32 data2,int n)
{
 CAN1->sTxMailBox[0].TIR&=~(1<<1);
 CAN1->sTxMailBox[0].TDTR=n;
 CAN1->sTxMailBox[0].TDLR=data1;
 if(n>4)
 {
  CAN1->sTxMailBox[0].TDHR=data2;
 }
  CAN1->sTxMailBox[0].TIR|=1<<0;
}
 
void can_filter_configuration()
{
 CAN1->FMR|=1<<0;//過濾組進(jìn)入初始化
 CAN1->FA1R&=~(1<<0);
 CAN1->FM1R=0;
 CAN1->FS1R|=1<<0;
 CAN1->FFA1R&=~(1<<0);
 CAN1->sFilterRegister[0].FR1=0x00000000;
 CAN1->sFilterRegister[0].FR2=0x00000000;
 CAN1->FA1R|=1<<0;
 CAN1->FMR&=~(1<<0);
}
 
需要注意的是,過濾器最少要打開一個(gè),如果一個(gè)都不打開,那么會(huì)一個(gè)數(shù)據(jù)都接收不到
關(guān)閉窗口

相關(guān)文章