STM32-CAN總線使用說明_第1頁
STM32-CAN總線使用說明_第2頁
STM32-CAN總線使用說明_第3頁
STM32-CAN總線使用說明_第4頁
STM32-CAN總線使用說明_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、STM32F103和永的CAN總線使用說明1.配置CAN時(shí)鐘、映射、IO口RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTlIRCC_APB2Periph_GPI0AIRCC_APB2Periph_GP10BIRCC_APB2Periph_GPI0CIRCC_APB2Periph_AFI0.ENABLE);GPIO_PinRemapConfig(GPIO_Remapl.CAN1.ENABLE);打開對應(yīng)IO/*ConfigureCANpin:RX*/GPI

2、O_InitStmcture.GPIO_Pin=GPIO_Pin_8;GPIO_InitStmcture.GPIO_Mode=GPIO_Modc_IPU;GPIO_Init(GPIOB.&GPIOnitStnicturc);/*ConfigureCANpin:TX*/GPIO_InitStmcture.GPIO_Pin=GPIO_Pin_9;GPIO_InitStmcture.GPIO_Mode=GPIO_Modc_AF_PP;GPIO_Init(GPIOB.&GPIOnitStnicture);2使能CAN中斷向量NVICniruclure.NVIC_IRQChannel=USB_LP_CA

3、Nl_RX0_IRQn;NVICnitStructure.NVIC_IRQChannelPreemptionPriority=0;NVICnitStruclure.NVICRQChannelSubPriority=1;NVICniruclure.NVIC_IRQChannelCmd=ENABLE;NVICLInit(&NVIC_InitStructure);3.CAN硬件寄存器配置初始化CAN_DeInit(CANl);與2.0庫有區(qū)別;CAN_StructInit(&CAN_InitStructure);CANnitStructure.CAN_TTCM=DISABLE;CAN_InitStr

4、ucture.CAN_ABOM=ENABLE:總線斷開后自動(dòng)修復(fù):CAN_InitStructure.CAN_AWUM=DISABLE:CANnitStructure.CAN_NART=DISABLE;CANnitStructure.CAN_RFLM=DISABLE;CAN_InitStructure.CAN_TXFP=DlSABLE;CANnitStructurcCAN_Mode=:CAN_Modc_LoopBack;/CAN_Modc_Silent;/CAN_Mode_Normal;/CAN_Mode_LoopBack;/CAN_InitStructure.CAN_SJW=CAN_SJW_

5、ltq;CANnitStructure.CAN_BS1=CAN_BSl_6tq;CANnitStructure.CAN_BS2=CAN_BS2_4tq:CANnitStructure.CAN_Presca!er=CAN_100k_Prescaler;CAN_Init(CAN1,&CANJnitStructure);4過濾器初始化CAN_FilterInitStructure.CAN_FilterNumber=O;CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;/CAN_FilterMode_IdList;標(biāo)識符模式;/C

6、AN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdList;/r展模式濾波器CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit:/32位過濾器;CAN_FilterInitStructure.CAN_FilterIdHigh=0 x0260;適用TxMessage.StdId=Ox13;標(biāo)識符寄存器:CAN_FilterInitStructure.CAN_FilterIdLow=OxOOOO;CAN_FilterInitStructure.CAN_FilterMa

7、skIdHigh=0 x0260;屏蔽寄存器(不屏蔽);CAN_FilterInitStructure.CAN_FilterMaskIdLow=OxOOOO;嚴(yán)屏蔽寄存器0表示屏蔽,1表示不屏蔽*/CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;CAN_FilterInit(&CAN_FilterInitStructure);5打開CAN接收中斷CANTConfig(CANl.CANJT_FN1PO.ENABLE);6編輯發(fā)送數(shù)據(jù)(標(biāo)識符

8、模式和擴(kuò)展模式)TxMessage.StdId=Ox10;TxMessage.RTR=CAN_RTR_DATA;TxMessage.IDE=CAN_ID_STD:/(標(biāo)識符模式)/CAN_ID_EXT(擴(kuò)展標(biāo)識符模式)TxMessage.DLC=8:TxMessage.DataO=0 x01;TxMessage.Data1=0 x01;TxMessage.Data2=0 x01;TxMessage.Data3=0 x01;TxMessage.Data4=0 x01;TxMessage.Data5=0 x01;TxMessage.Data=0 x01;TxMessage.Data7=0 x01;

9、CAN_Transmit(CAN1、&TxMessage);7查詢是否發(fā)送完成i=0;while(CAN_TransmitStatus(CAN1,TransmitMailbox)!=CANTXOK)&(i!=OxFFF)與2.0庫有異;判斷發(fā)送數(shù)據(jù)成功i+;if(CAN_TransmitStatus(CAN1,TransmitMailbox)=CANTXPENDING)表示數(shù)據(jù)正在發(fā)送中。&接收數(shù)據(jù)voidreceive(void)u32i;CanRxMsgRxMessage;i=0;while(CAN_MessagePending(CANl,CAN_FIFOO)1)&(i!=OxFF)冷+:

10、if(i=OxFF)表示沒有收到數(shù)據(jù)elseRxMessage.StdId=OxOO:RxMessage.IDE=CAN_ID_STD;RxMessage.DLC=O;RxMessage.Data0=0 x00:RxMessage.Data1=0 x00:RxMessage.Data2=0 x00;RxMessage.Data3=0 x00;RxMessage.Data4=0 x00;RxMessage.Data5=0 x00;RxMessage.Data6=0 x00;RxMessage.Data7=0 x00:CAN_Receive(CANI、CAN_FIFOO.&RxMessage);9

11、中斷函?voidUSB_LP_CANl_RXO_IRQHandler(void)CanRxMsgRxMessage;RxMessage.StdId=OxOO:RxMessage.ExtId=OxOO;RxMessage.IDE=O;RxMessage.DLC=O;RxMessage.FMI=O;RxMessage.Data0=0 x00;RxMessage.Data1=0 x00:RxMessage.Data2=0 x00:RxMessage.Data3=OxOO:RxMessage.Data4=0 x00;RxMessage.Data5=OxOO:RxMessage.Data6=0 x00:

12、RxMessage.Data7=0 x00:CAN_Receive(CAN1,CAN_FIFOO.&RxMessage);if(RxMessage.IDE=CAN_ID_STD)ret=I;elseret=0;發(fā)送ID與過濾器設(shè)置的對應(yīng)求值算法:發(fā)送數(shù)據(jù)的ID要求:TxMessage.StdId=0 x00:TxMessage.ExtId=Ox1234;TxMessage.IDE=0 x04:TxMessage.RTR=0;過濾器所對應(yīng)的配置:32位,標(biāo)識符模式31:2423:1615:87:0STID10:3STID2:0EXID17:13EXID12:5EXID4:0IDERTR00000

13、0000000000001001000110100100CAN.FilterldHighCAN.FilterldLow000091A4得出:CAN_FilterInitStructure.CAN_FilterIdHigh=OxOOOO;CAN_FilterInitStructure.CAN_FilterIdLow=0 x91A4;備注總線模式說明:查詢CAN總線上的數(shù)據(jù),不對總線進(jìn)行任何操作的設(shè)置:總線模式選擇CAN_Mode_Silent不要在總線上發(fā)送數(shù)據(jù);過濾器設(shè)置為:CAN_FilterInitStructure.CAN_FilterIdHigh=OxOOOO;CAN_FilterIn

14、itStructure.CAN_FilterIdLow=0 x0000;CAN_FilterInitStructure.CAN_FilterMaskIdHigh=OxOOOO;CAN_FilterInitStructure.CAN_FilterMaskIdLow=OxOOOO:開啟接收函數(shù):receive();voidreceive(void)u32i,Error;CanRxMsgRxMessage;i=0;while(CAN_MessagePending(CANLCAN_FIFOO)1)&(i!=OxFF)有異;判斷接收到數(shù)據(jù)i+:if(i=OxFF)/status=CAN_GetFlagStatus(CAN1、CAN_FLAG_BOF);/Error=CAN_GetError(CAN1);/Usart1Send32Bit(Error);elseRxMessage.StdId=OxOO;RxMe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論