久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

stm32的CAN通信(環回模式)

作者:明入   來源:明入的博客   點擊數:  更新時間:2014年05月18日   【字體:

用了周六日兩天的時間把IIC學了一遍,因為不是使用的stm32的片上IIC外設,需要模擬時序,之前一直嫌麻煩,但麻煩也得學啊,想起一周前學的CAN通信,IIC簡直是弱爆了。CAN通信可以多主機同時發送信息,加入IIC也這樣那就出錯誤了,而且CAN的通信最大距離是10Km,首先CAN有兩種國際標準ISO11898和IOS11519。stm32的CAN模塊支持ISO11898。還有一個概念,就是顯性和隱性。CAN共有兩條線。CAN_high和CAN_low,在空閑狀態時是程隱性的即高電平,當有設備發送數據時,需要發送一個起始幀,即一個顯性位-邏輯0

第二個是仲裁段,11位的ID,注意這里的ID并不是地址,而是發送優先級,這和IIC是不一樣的,正因為如此,所以理論上CAN總線上能掛無數個器件。
數據幀最多能裝8個字節的數據
 
stm32的IIC
void can_init_state()
{
 RCC->APB1RSTR|=1<<25;//
 RCC->APB1RSTR&=~(1<<25);
 RCC->APB1ENR|=1<<25;//打開can時鐘
 CAN1->MCR=0;
 CAN1->MCR|=1<<0;//進入初始化模式
 CAN1->BTR=0;
 CAN1->BTR|=1<<2;
 CAN1->BTR|=6<<16;  
 CAN1->BTR|=7<<20;
 CAN1->BTR|=1<<30;//允許環回模式
 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;//過濾組進入初始化
 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);
}
 
需要注意的是,過濾器最少要打開一個,如果一個都不打開,那么會一個數據都接收不到
關閉窗口

相關文章

主站蜘蛛池模板: 国产成人精品一区二区 | 国产欧美一区二区三区国产幕精品 | 日韩色在线 | 亚洲精品久久久蜜桃 | 国产精品一区二区视频 | av片网 | 91免费版在线观看 | 在线免费观看欧美 | 欧美日韩不卡合集视频 | 欧美日韩国产在线观看 | 国产日韩欧美一区二区在线播放 | 天天草天天干天天 | 国产精品久久久久久一区二区三区 | 日韩黄a | 另类专区亚洲 | 成人免费视频网站在线看 | 国产在线一区二 | 国产成人一区在线 | 日本成人在线免费视频 | 亚洲a视频| 成人免费视频网站在线看 | 成人精品视频 | 91综合网 | 日韩中文在线视频 | 久久精品亚洲精品国产欧美 | 日韩欧美操| 国产欧美一区二区三区久久人妖 | 日韩在线视频观看 | 成年人黄色免费视频 | 国产精品一区二区三区久久久 | 国产一级在线视频 | 免费在线一区二区 | 国产一区二区在线观看视频 | 一区二区三区亚洲精品国 | 美女爽到呻吟久久久久 | 午夜在线影院 | 亚洲精品久久久久久久久久久 | 亚洲国产成人av好男人在线观看 | www.久久久久久久久久久 | 欧美日韩精品 | 欧美一区在线视频 |