資源簡介
STM32與FPGA通訊,使用的是16位SPI協(xié)議。STM32F103ZET6 Verilog

代碼片段和文件信息
#include?“can.h“
#include?“usart.h“
//CAN初始化
//tsjw:重新同步跳躍時間單元.范圍:CAN_SJW_1tq~?CAN_SJW_4tq
//tbs2:時間段2的時間單元.???范圍:CAN_BS2_1tq~CAN_BS2_8tq;
//tbs1:時間段1的時間單元.???范圍:CAN_BS1_1tq?~CAN_BS1_16tq
//brp?:波特率分頻器.范圍:1~1024;??tq=(brp)*tpclk1
//波特率=Fpclk1/((tbs1+tbs2+1)*brp);
//mode:CAN_Mode_Normal普通模式;CAN_Mode_LoopBack回環(huán)模式;
//Fpclk1的時鐘在初始化的時候設(shè)置為36M如果設(shè)置CAN_Mode_Init(CAN_SJW_1tqCAN_BS2_8tqCAN_BS1_9tq4CAN_Mode_LoopBack);
//則波特率為:36M/((8+9+1)*4)=500Kbps
//返回值:0初始化OK;
//????其他初始化失敗;
u8?CAN_Mode_Init(u8?tsjwu8?tbs2u8?tbs1u16?brpu8?mode) ?
{
GPIO_InitTypeDef??GPIO_InitStructure;
CAN_InitTypeDef ?CAN_InitStructure;
CAN_FilterInitTypeDef?CAN_FilterInitStructure;
#if?CAN_RX0_INT_ENABLE?
NVIC_InitTypeDef?? NVIC_InitStructure;
#endif
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1?ENABLE);?//打開CAN1時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA?ENABLE);???//PA端口時鐘打開
GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_11; //PA11 ???
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_IPU;? ?//上拉輸入模式
GPIO_Init(GPIOA?&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_12; //PA12 ???
GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP;? ?//復(fù)用推挽輸出
GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz; ?//IO口速度為50MHz
GPIO_Init(GPIOA?&GPIO_InitStructure);
CAN_InitStructure.CAN_Prescaler=brp;??//分頻系數(shù)
CAN_InitStructure.CAN_Mode=mode;??//CAN工作模式??環(huán)回模式
CAN_InitStructure.CAN_SJW=tsjw;?//重新同步跳躍寬度?1?個時間單位
CAN_InitStructure.CAN_BS1=tbs1;?//時間段?1?為?8?個時間單位
CAN_InitStructure.CAN_BS2=tbs2;?//時間段?2?為?7?個時間單位
CAN_InitStructure.CAN_TTCM=DISABLE;?//非時間觸發(fā)通信模式
CAN_InitStructure.CAN_ABOM=DISABLE;?//失能自動離線管理
CAN_InitStructure.CAN_AWUM=DISABLE;?//失能自動喚醒模式
CAN_InitStructure.CAN_NART=ENABLE;?//使能非自動重傳輸模式
CAN_InitStructure.CAN_RFLM=DISABLE;?//失能接收?FIFO?鎖定模式
CAN_InitStructure.CAN_TXFP=DISABLE;?//失能發(fā)送?FIFO?優(yōu)先級
CAN_Init(CAN1&CAN_InitStructure);
CAN_FilterInitStructure.CAN_FilterNumber=0; //過濾器0
CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;? //屏蔽位模式
CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;? //32位寬?
CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; //32位ID
CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;//32位MASK
CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_Filter_FIFO0;//過濾器0關(guān)聯(lián)到FIFO0
CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;//激活過濾器0
CAN_FilterInit(&CAN_FilterInitStructure); //濾波器初始化
#if?CAN_RX0_INT_ENABLE?
CAN_ITConfig(CAN1CAN_IT_FMP0ENABLE); //FIFO0消息掛號中斷允許. ????
NVIC_InitStructure.NVIC_IRQChannel?=?USB_LP_CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority?=?1;?????//?主優(yōu)先級為1
NVIC_InitStructure.NVIC_IRQChannelSubPriority?=?0;????????????//?次優(yōu)先級為0
NVIC_InitStructure.NVIC_IRQChannelCmd?=?ENABLE;
NVIC_Init(&NVIC_InitStructure);
#endif
return?0;
}
#if?CAN_RX0_INT_ENABLE //使能RX0中斷
//中斷服務(wù)函數(shù) ????
void?USB_LP_
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-03-20?10:01??SPI_16\
?????文件????????1273??2019-03-19?13:58??SPI_16\SPI_16.qpf
?????文件????????3348??2019-03-20?09:34??SPI_16\SPI_16.qsf
?????文件????????1570??2019-03-20?10:01??SPI_16\SPI_16.qws
?????文件????????4334??2019-03-20?09:34??SPI_16\SPI_16.v
?????文件???????32222??2019-03-19?13:54??SPI_16\SPI_16.v.bak
?????目錄???????????0??2019-03-20?10:01??SPI_16\db\
?????文件???????11966??2019-03-20?09:34??SPI_16\db\SPI_16.(0).cnf.cdb
?????文件????????1773??2019-03-20?09:34??SPI_16\db\SPI_16.(0).cnf.hdb
?????文件????????2483??2019-03-20?09:34??SPI_16\db\SPI_16.asm.qmsg
?????文件????????1472??2019-03-20?09:34??SPI_16\db\SPI_16.asm.rdb
?????文件????????7993??2019-03-20?09:34??SPI_16\db\SPI_16.asm_labs.ddb
?????文件??????????88??2019-03-20?09:34??SPI_16\db\SPI_16.cbx.xm
?????文件?????????574??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.bpm
?????文件???????20056??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.cdb
?????文件???????12252??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.hdb
?????文件????????9084??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.idb
?????文件?????????204??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.kpt
?????文件????????8838??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.logdb
?????文件???????18035??2019-03-20?09:34??SPI_16\db\SPI_16.cmp.rdb
?????文件?????????210??2019-03-20?09:34??SPI_16\db\SPI_16.cmp_merge.kpt
?????文件??????746342??2019-03-20?09:34??SPI_16\db\SPI_16.cycloneive_io_sim_cache.45um_ff_1200mv_0c_fast.hsd
?????文件??????745244??2019-03-20?09:34??SPI_16\db\SPI_16.cycloneive_io_sim_cache.45um_ss_1200mv_0c_slow.hsd
?????文件??????740138??2019-03-20?09:34??SPI_16\db\SPI_16.cycloneive_io_sim_cache.45um_ss_1200mv_85c_slow.hsd
?????文件?????????140??2019-03-20?09:10??SPI_16\db\SPI_16.db_info
?????文件???????17546??2019-03-20?09:34??SPI_16\db\SPI_16.fit.qmsg
?????文件????????1890??2019-03-20?09:34??SPI_16\db\SPI_16.hier_info
?????文件?????????484??2019-03-20?09:34??SPI_16\db\SPI_16.hif
?????文件?????????163??2019-03-20?10:01??SPI_16\db\SPI_16.ipinfo
?????文件?????????372??2019-03-20?09:34??SPI_16\db\SPI_16.lpc.html
?????文件?????????399??2019-03-20?09:34??SPI_16\db\SPI_16.lpc.rdb
............此處省略271個文件信息
評論
共有 條評論