zynqCAN中断梳理

1、根据硬件定义设备的ID和地址

/*
* The configuration table for devices
*/

XCanPs_Config XCanPs_ConfigTable[] =
{
	{
		XPAR_PS7_CAN_0_DEVICE_ID,
		XPAR_PS7_CAN_0_BASEADDR
	}
};

2、根据设备地址初始化XCanPs结构体,包括设备的ID和设备的基址还有中断的处理的回调函数

s32 XCanPs_CfgInitialize(XCanPs *InstancePtr, XCanPs_Config *ConfigPtr,
				u32 EffectiveAddr)
{
	s32 Status;
	Xil_AssertNonvoid(InstancePtr != NULL);
	Xil_AssertNonvoid(ConfigPtr != NULL);

	/*
	 * Set some default values for instance data, don't indicate the device
	 * is ready to use until everything has been initialized successfully.
	 */
	InstancePtr->IsReady = 0U;
	InstancePtr->CanConfig.BaseAddr = EffectiveAddr;
	InstancePtr->CanConfig.DeviceId = ConfigPtr->DeviceId;

	/*
	 * Set all handlers to stub values, let user configure this data later.
	 */
	InstancePtr->SendHandler = (XCanPs_SendRecvHandler) StubHandler;
	InstancePtr->RecvHandler = (XCanPs_SendRecvHandler) StubHandler;
	InstancePtr->ErrorHandler = (XCanPs_ErrorHandler) StubHandler;
	InstancePtr->EventHandler = (XCanPs_EventHandler) StubHandler;

	/*
	 * Indicate the component is now ready to use.
	 */
	InstancePtr->IsReady = XIL_COMPONENT_IS_READY;

	/*
	 * Reset the device to get it into its initial state.
	 */
	XCanPs_Reset(InstancePtr);

	Status = XST_SUCCESS;
	return Status;
}

3、配置CAN device,设置波特率,设置同步位和同步时间 2 3 15 49

static void Config(XCanPs *InstancePtr)
{
	// Enter Configuration Mode if the device is not currently in  Configuration Mode.
	XCanPs_EnterMode(InstancePtr, XCANPS_MODE_CONFIG);
	while(XCanPs_GetMode(InstancePtr) != XCANPS_MODE_CONFIG);

	// Setup Baud Rate Prescaler Register (BRPR) and Bit Timing Register (BTR) .
	XCanPs_SetBaudRatePrescaler(InstancePtr, BRPR_BAUD_PRESCALAR);
	XCanPs_SetBitTiming(InstancePtr, BTR_SYNCJUMPWIDTH,
					BTR_SECOND_TIMESEGMENT,
					BTR_FIRST_TIMESEGMENT);

	// Set the threshold value for the Rx FIFO Watermark interrupt.
	XCanPs_SetRxI
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值