CAN驱动程序提供在CAN外围设备之间传输数据的功能。此驱动程序不解释使用此外设发送或接收的任何数据。

在一个应用中,CAN头文件被包含为如下:

#include<ti/drivers/can/can.h>

初始化驱动

CAN驱动程序需要在整个系统中初始化一次。这个是使用CAN_init来完成的。如果不调用此API,则不能使用其他任何的CAN API

一旦CAN驱动已经初始化;bit timing可以使用CAN_configBitTime来完成。可以多次使用此API来重新配置bit timings

CAN_init函数介绍

函数原型:

CAN_Handle CAN_init	(const CAN_DCANCfgParams * 	configParams,
					int32_t * 	errCode 
				)	

函数功能:

函数使用指定的硬件属性来初始化CAN驱动程序实例。它重置CAN模块和配置DCCAN TX/RX IO控制寄存器。用控制参数配置CAN驱动器

函数参数:

[in] configParams:CAN模块的配置参数
[out] errCode:产生的错误代码

函数返回值:

当执行成功后,返回CAN驱动的句柄,当执行失败后,返回NULL值

CAN_configBitTime函数介绍

函数原型:

int32_t CAN_configBitTime	(	CAN_Handle 	handle,
								const CAN_DCANBitTimeParams * 	bitTimeParams,
								int32_t * 	errCode 
							)	

函数描述:

这个函数配置CAN模块的bit time参数

函数参数:

[in] handle:CAN驱动的句柄
[in] bitTimeParams:bit time配置参数
[out] errCode:产生的错误代码

函数返回值:

当执行成功时,返回0值,当执行失败后,返回值小于0

创建消息对象

消息对象用于通过CAN外围设备传输或接收数据。消息对象是使用CAN_createMsgObject创建的。可以重新配置消息对象的属性

CAN_createMsgObject函数介绍

函数原型:

CAN_MsgObjHandle CAN_createMsgObject	(	CAN_Handle 	handle,
											uint32_t 	msgObjectNum,
											const CAN_DCANMsgObjCfgParams * 	msgObjectParams,
											int32_t * 	errCode 
										)

函数描述:

函数配置接收或传输消息对象。它还注册中断(如果启用),并注册应用程序提供的回调函数。回调函数将在传递消息对象的数据完成时或接收到消息对象的数据时调用。

函数参数:

[in] handle:CAN驱动的句柄
[in] msgObjectNum:必须配置的消息对象号。有效值为1到64.消息对象还指定其优先级。数字越低优先级越高

注意:由于消息对象的编号表示优先级,CAN驱动程序不会分配下一个可用的消息对象,而是由应用程序指定。

函数参数:

[in] msgObjectParams:消息对象的配置参数
[out] errCode:产生的错误代码

函数返回值:

当函数执行成功后,返回值为消息对象的句柄,当函数执行错误后,返回值为NULL。

发送和接收消息

使用CAN_transmitData进行数据的传输。应用程序可以通过启用中断可维持字段并创建传输消息对象时注册回调函数appCallBack来选择接收传输完整中断。

如果使用initEnable字段启用了接收中断,并且在创建接收消息对象时注册了回调函数appCallBack,那么驱动程序会在数据到达时通知应用程序。应用程序需要调用CAN_getData函数来读取接收到的数据。

CAN_transmitData函数介绍

函数原型:

int32_t CAN_transmitData	(	CAN_MsgObjHandle 	handle,
								const CAN_DCANData * 	data,
								int32_t * 	errCode 
							)	

函数功能:

该函数的作用是应用程序使用传输消息对象来传输数据函数

函数参数:

[in] handle:消息对象的句柄
[in] data:要进行传输的数据
[out] errCode:产生错误后的代码

函数返回值:

当函数执行成功后,函数返回值为0,当函数执行失败后,函数返回值小于0

CAN_getData函数介绍

函数原型:

int32_t CAN_getData	(	CAN_MsgObjHandle 	handle,
						CAN_DCANData * 	data,
						int32_t * 	errCode 
					)	

函数功能:

函数用于应用程序使用接收消息对象从消息RAM获取CAN消息

函数参数:

[in] handle:消息对象的句柄
[out] data:指向接收的数据字节、长度和消息丢失标志的指针。仅在没有错误时填充。如果有错误,函数将errCode中返回错误原因
[out] errCode:产生错误时的错误代码

函数返回值:
当执行成功后,返回值为0,当执行错误后,返回值小于0

错误和状态句柄

应用程序可以通过启用错误中断来监视奇偶校验错误、总线关闭错误和错误警告限制。应用程序可以通过启用状态中断来监视唤醒挂起和LEC。驱动程序将调用已注册的回调函数来指示哪些错误和状态字导致了中断。由应用程序采取适当的行动。

获得/设置 选项

提供了获取和设置各种统计信息、错误计数器、ECC诊断、断电的帮助程序API。关于更多的信息参考枚举:CAN_Option

CAN_Option介绍:
这个枚举定义了用于表示获得/设置选项的值
枚举类型的值有:

CAN_Option_DCAN_ERROR_COUNTER 
CAN_Option_DCAN_PARITY_ERROR 
CAN_Option_DCAN_MSG_OBJECT_STATS 
CAN_Option_DCAN_ECC_ERROR_STATUS 
CAN_Option_DCAN_ECC_DIAG_ERROR_STATUS 
CAN_Option_DCAN_MODE 
CAN_Option_DCAN_PARITY 
CAN_Option_DCAN_ECC_DIAG 
CAN_Option_DCAN_CLEAR_ECC_ERROR_STATUS 
CAN_Option_DCAN_CLEAR_ECC_DIAG_ERROR_STATUS 
CAN_Option_DCAN_POWER_DOWN 

限制

CAN驱动程序不支持DMA或FIFO模式

参考文献:

  1. 《mmWave SDK Module Documentation》
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐