代码拉取完成,页面将自动刷新
CAN 是控制器局域网络(Controller Area Network)的缩写,由以研发和生产汽车电子产品著称的德国BOSCH公司开发,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。
CAN控制器驱动提供了CAN的控制访问方法,
驱动相关的源文件包括,
.
├── fcan_g.c
├── fcan_hw.c
├── fcan_hw.h
├── fcan_intr.c
├── fcan_sinit.c
├── fcan.c
└── fcan.h
以下部分将指导您完成 fcan 驱动的软件配置:
typedef struct
{
FCanConfig config;
u32 is_ready; /* Device is initialized and ready */
boolean use_canfd; /* if use canfd function */
FCanIntrEventConfig intr_event[FCAN_INTR_EVENT_NUM];/* event handler and parameters for interrupt */
} FCanCtrl;
typedef struct
{
u32 instance_id; /* Id of device */
uintptr base_address; /* Can base Address */
u32 irq_num; /* interrupt number */
u32 irq_prority;/* interrupt priority*/
}FCanConfig;
typedef struct
{
FCanSegmentType segment;
boolean auto_calc; /* if auto calculate baudrate parameters */
u32 baudrate; /* baudrate */
u32 sample_point; /* sample point */
u32 prop_seg; /* Propagation segment in TQs */
u32 phase_seg1; /* Phase buffer segment 1 in TQs */
u32 phase_seg2; /* Phase buffer segment 2 in TQs */
u32 sjw; /* Synchronisation jump width in TQs */
u32 brp; /* Baudrate prescaler */
}FCanBaudrateConfig;
typedef struct
{
u32 canid;
u8 candlc;
u8 flags; /* additional flags for CAN FD */
u8 data[FCAN_DATA_LENGTH] __attribute__((aligned(8)));
}FCanFrame;
typedef enum
{
FCAN_INTR_EVENT_SEND = 0, /* Handler type for frame sending interrupt */
FCAN_INTR_EVENT_RECV = 1, /* Handler type for frame reception interrupt */
FCAN_INTR_EVENT_ERROR, /* Handler type for error interrupt */
FCAN_INTR_EVENT_NUM
} FCanIntrEventType;
const FCanConfig *FCanLookupConfig(u32 instance_id);
Note:
Input:
Return:
FError FCanCfgInitialize(FCanCtrl *instance_p, const FCanConfig *input_config_p);
Note:
Input:
Return:
FError FCanSend(FCanCtrl *instance_p, FCanFrame *frame_p);
Note:
Input:
Return:
FError FCanRecv(FCanCtrl *instance_p, FCanFrame *frame_p);
Note:
Input:
Return:
void FCanRegisterInterruptHandler(FCanCtrl *instance_p, FCanIntrEventConfig *intr_event_p);
Note:
Input:
Return:
void FCanIntrHandler(s32 vector, void *args);
Note:
Input:
Return:
FError FCanIdMaskFilterSet(FCanCtrl *instance_p, FCanIdMaskConfig *id_mask_p);
Note:
Input:
Return:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。