STM32_CAN總線使用說明_第1頁
STM32_CAN總線使用說明_第2頁
STM32_CAN總線使用說明_第3頁
STM32_CAN總線使用說明_第4頁
STM32_CAN總線使用說明_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、STM32F103*的CAN總線使用說明1.配置CAN時鐘、映射、IO 口RCC_APB 1 PeriphClockCmd(RCC_APB 1 Periph.CAN I. ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USARTl I RCC_APB2Periph_GPI0A I RCC_APB2Pcriph_GPI0B I RCC_APB2Pcriph_GPI0C I RCC_APB2Pcriph_AH0. ENABLE);GPIO_PinRemapConfig(GPIO_Remap 1 _CAN 1 .ENABLE);打開對應IO/* Conf

2、igure CAN pin: RX */GPIOJnitStnicture.GPIO_Pin = GPIO_Pin_ &GPIO InitStructure.GPIO Mode = GPIO Mode 1PU;GPI0_Init(GP10B. &GPIO_InitStructurc);/* Configure CAN pin: TX */GPIO InitStructure.GPIO Pin = GPIO Pin 9;GPIO_InitStructurc.GPIO_Modc = GPIO_Modc_AF_PP:GPIO_Init(GPIOB. &GPIOJnitStru

3、cture);2使能CAN中斷向量NVICnitStructurc.NVICRQCh;umcl = USB_LP_CANl_RXOJRQn: NVIC_InitStnicture.NVIC_IRQChannelPreemptionPriority = 0;NVIC_lnitStmcture.NVICRQChannclSubPriority = 1; NVIC_InitStructure.NVIC_lRQChiinneICind = ENABLE;NVICnit(&NVICJnitStructurc);3.CAN硬件寄存器配置初始化CAN_DeInit(CANl);與 2.0 庫何區(qū)別:

4、CAN_StructInit(&CAN_InitStructurc);CAN_InitStructure.CAN_TTCM=DISABLE;CANnitStructure.CAN_ABOM=ENABLE;總線斷開后口動修復;CAN_InitSlructurc.CAN_AWUM=DlSABLE:CAN_InitStructurc.CAN_NART=DISABLE; CANJnitStructure.CAN_RFLM=DISABLE;CANnitStructure.CAN_TXFP=DISABLE:CAN InitStructure.CAN Modc=CAN Mode LoopBack;/

5、CAN Mode Silent;/CAN Mode Normal ;/CAN_Mode_LoopBacky/CAN_InitStructure.CAN_SJW=CAN_SJW_ltq;CAN_InitStructurc.CAN_BSl=CAN_BSl_6tq;CAN_InitStructurc.CAN_BS2=CAN_BS2_4tq;CANnitStructure.CAN_Prescaler=C ANOOk.Prescaler;CANnit(CANL &CANnitStructure);4 過濾器初始化CAN_ElterInitStnicture.CAN_FilterNumber=O;

6、CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;/CAN_FilterMode_IdL ist; 標識符模式;/CAN_FilterInitStructure.CAN_FikerMo<lc=CAN_FilterMode_IdList;/r 展模式濾波器CAN_FilterInitStructure.CAN_FiltcrScale=CAN_FiltcrScale_32bit: 32 位過濾器:CAN_FilterInitStructure.CAN_FilterIdHigh=OxO26O;適用 TxMessage.St

7、dId=Ox 13;標識符寄存器;CAN_FilterInitStructure.CAN_FilterIdLow=OxOOOO:CAN_FilterInitStructure.CAN_FiltcrMaskIdHigh=0x0260:屏蔽寄存器(不屏蔽);CAN_FilterInitStructure.CAN_FilterMaskIdLow=OxOOOO;產(chǎn)屏蔽寄存器0表示屏蔽,1表示不屏蔽*/CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;CAN_FilterInitStmcture.CAN_FilterActivation=ENABLE;

8、 CAN_FilterInit(&CAN_FilterInitStructure);5打開CAN接收中斷CANTConfig(CANl, CAN_IT_FMPO. ENABLE);6編輯發(fā)送數(shù)據(jù)(標識符模式和擴展模式)TxMcssage.StdId=Ox 10:TxMessage.RTR=CAN_RTR_DATA:TxMessage.IDE=CAND_STD;/(標識符模式)/ CAN_ID_EXT (擴展標識符模式)TxMessage.DLC=8:TxMessage.DataO =0x01;TxMessage.Data| 1 =0x01;TxMessage.Data| 2 =0x01

9、;TxMessage.Data3 =0x01;TxMessage.Data4 =0x01;TxMessage.Data|5 =0x01;TxMessage.Data|6| =0x01;T xMessage. Data 7 =0x01;CAN_Transmit(CAN 1, &TxMessage);7 査詢是否發(fā)送完成i = 0;while(CAN_TransmitStatus(CAN 1, TransmitMailbox) != CANTXOK) && (i != Ox卜卜卜) 與2.0庫有異;判斷發(fā)送數(shù)據(jù)成功i+;if(CAN_TransmitStatus(CAN 1

10、. TransmitMailbox) = CANTXPENDING)表示數(shù)據(jù)疋在發(fā)送屮。8 接收數(shù)據(jù)void receive(void)u32 i;CanRxMsg RxMessage;i = 0;while(CAN_MessagePending(CAN 1 CAN_F1FOO) < 1) && (i != OxFF)if(i=OxFF) 表示沒自收到數(shù)據(jù)elseRxMcssage.StdId=OxOO;RxMessage.IDE=CAN_ID_STD;RxMessage.DLC=O;RxMessage.Data0=0x00;RxMessagc.Data 1 =0x00:

11、RxMessage.Data2=0x00;RxMessage.Data|3=0x00;RxMessage.Data4=OxOO;RxMessagc.Data5=0x00;RxMessage.Data6=OxOO;RxMessage.Data| 7 |=0x00;CAN_Receive(CAN 1, CAN_FIFOO, &RxMessage);void USB.LP.CAN 1.RX0 JRQHandlcr(void) CanRxMsg RxMessage;RxMessage.StdId=OxOO:RxMessage.ExtId=OxOO:RxMessage.IDE=O;RxMessa

12、gc.DLC=O;RxMessage.FMI=O;RxMessage.Data0=OxOO;RxMessage.Data| 1 |=0x00;RxMessage.Data 2 |=OxOO;RxMessage.Dataf 3 =OxOO;RxMessage.Data4=0x00;RxMessage.Data5 |=OxOO;RxMessage.Data|6|=0x00;RxMessage.Data7 =0x00;CAN_Receive(CANl, CAN_FIFOO. &RxMessage);if(RxMessage.IDE=CAN_ID_STD)ret = 1;elseret = 0

13、;I發(fā)送ID與過濾器設置的對應求值算法:發(fā)送數(shù)據(jù)的ID耍求:TxMessage.StdId=0x00;TxMessage.ExtId=Ox 1234;T xMcssage.IDE=0x04;TxMessage.RTR=O;過濾器所對應的配置:32位,標識符模式31:2423:1615:87:0STID|10:3STID2:0EXID17:13EXID|12:5EXID|4:0 IDE RTR 0000000000(X)000001001000110100100CAN FilterIdHighCAN FilterIdLow000091A4得出:CAN_HlterInitStructure.CAN

14、_FilterIdHigh=0x0000;CAN_FilterInitStructure.CAN_FilterIdLow=0x91A4;備注總線模式說明:何詢CAN總線上的數(shù)據(jù),不対總線進行任何操作的設直: 總線模式選擇CAN_Mode_Silent不要在總線上發(fā)送數(shù)據(jù);過濾器設置為:CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;CAN_FilterInitStructurc.CAN_FilterIdLow=0x0000;CAN_FilterInitStructure.CAN_FiltcrMaskIdHigh=OxOOOO:CAN_Filter

15、InitStructure.CAN_FilterMaskIdLow=OxOOOO;開啟接收函數(shù):receive(); void receive(void)u32 Error:CanRxMsg RxMessage;i = 0;while(CAN_MessagePending(CAN 1, CAN_F1FOO) < I) && (i != OxFF) 有異:判斷接收到數(shù)據(jù)i+;if(i=0xFF)/ status = CAN_GetFlagStatus(CAN 1 .CAN_FLAG_BOF):/Error = C AN_GetError( C AN 1);/ Usart 1 Scnd32Bit(Error);elseRxMcssagc.StdId=OxOO:RxMes

溫馨提示

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

最新文檔

評論

0/150

提交評論