PSoC®Creator™ComponentDatasheet赛普拉斯半导体公司•198ChampionCourt•SanJose,CA95134-1709•408-943-2600DocumentNumber:001-89788Rev.**修订日期:October21,2013特性CAN2.0A/B协议实现,符合ISO11898-1标准高达1Mbps@8MHz(BUS_CLK)的可编程比特率连接外部收发器的两线或三线接口(Tx、Rx和Tx使能)由Vector提供并支持驱动程序概述VectorCANbedded环境包含大量自适应源代码组件,这些组件包括汽车应用中的基本通信和诊断要求。VectorCANbedded软件套装是客户特定的套装,其操作会因应用和OEM而有所不同。写入此VectorCANbedded套装组件,通常可支持CANbedded结构,无论特定OEM应用的风格如何。使用针对PSoC3开发的VectorCAN组件,可轻松集成经Vector认证的CAN驱动程序。何时使用VectorCAN在需要针对由Vector提供的PSoC3进行CAN驱动程序集成时,使用VectorCAN组件。输入/输出连接本节介绍了VectorCAN组件的各种输入和输出连接。I/O列表中的星号(*)表示:在I/O说明部分中所列出时,该I/O也许不可见。rx—输入CAN总线接收信号(连接到外部收发器的CANRX总线)。tx—输出CAN总线传输信号(连接到外部收发器的CANTX总线)。VectorCAN1.10VectorCANPSoC®Creator™ComponentDatasheet页2/23DocumentNumber:001-89788Rev.**tx_en—输出*外部收发器使能信号。当在Configure对话框中选择AddTransceiverEnableSignal(添加收发器使能信号)选项时,将显示此输出。原理图宏的信息组件目录中的默认VectorCAN是一个使用带默认设置的VectorCAN组件的原理图宏。VectorCAN组件连接到输入和输出引脚组件。除了输入引脚组件中的“InputSynchronized”(输入同步)被设为假以外,引脚组件也设置为默认设置。组件参数将一个VectorCAN组拖入您的设计中,并双击以打开Configure对话框。此对话框有一个General(通用)选项卡,可指导您设置VectorCAN组件的流程。PSoC®Creator™ComponentDatasheetVectorCANDocumentNumber:001-89788Rev.**页3/23图1.配置VectorCAN对话框General选项卡提供以下参数。AddTransceiverEnableSignal(添加收发器使能信号)启用/禁用针对外部CAN收发器的tx_en信号的使用。默认设置为Enable(使能)。EnableInterrupts(使能中断)使能/禁用CAN中的全局中断。默认设置为Enable(使能)。如果针对轮询模式配置驱动程序文件,则应禁用此参数,否则,编译过程会出现错误。时钟选择VectorCAN组件连接到BUS_CLK时钟信号。最小值必须为8MHz,以支持所有高达1Mbps的标准CAN波特率。PSoC3项目设计范围资源中所选的BUS_CLK值必须与针对总线时序的VectorCAN驱动程序配置中选定的值相同。VectorCANPSoC®Creator™ComponentDatasheet页4/23DocumentNumber:001-89788Rev.**应用编程接口通过应用编程接口(API)子程序,您可以使用软件对组件进行配置。下面的表格列出并说明了每个函数的接口。以下各节将对每个函数加以说明。默认情况下,PSoCCreator将实例名称“Vector_CAN_1”分配给指定设计中组件的第一个实例。您可以将该实例重新命名为符合标识符语法规则的任意唯一值。实例名称会成为每个全局函数名称、变量和符号常量的前缀。为了便于阅读,下表中使用的实例名称为“Vector_CAN”。函数说明Vector_CAN_Start()使用Vector_CAN_Init()和Vector_CAN_Enable()函数初始化并使能VectorCAN组件。Vector_CAN_Stop()禁用VectorCAN组件。Vector_CAN_GlobalIntEnable()从CAN内核中使能全局中断。Vector_CAN_GlobalIntDisable()从CAN内核中禁用全局中断。Vector_CAN_Sleep()为组件进入睡眠状态做准备。Vector_CAN_Wakeup()将组件恢复到调用Vector_CAN_Sleep()时的状态。Vector_CAN_Init()基于组件定制器中的设置对VectorCAN组件进行初始化。利用由VectorCAN配置工具生成的中断服务子程序CanIsr_0()设置CAN中断。Vector_CAN_Enable()使能VectorCAN组件。Vector_CAN_SaveConfig()保存组件配置。Vector_CAN_RestoreConfig()恢复组件配置。全局变量变量说明Vector_CAN_initVarVector_CAN_initVar指示VectorCAN是否已被初始化。变量将初始化为0,并在第一次调用Vector_CAN_Start()时被设置为1。这样,第一次调用Vector_CAN_Start()子程序后,组件不用重新初始化即可重启。如果需要重新对组件进行初始化,则可在调用Vector_CAN_Start()或Vector_CAN_Enable()函数前先调用Vector_CAN_Init()函数。PSoC®Creator™ComponentDatasheetVectorCANDocumentNumber:001-89788Rev.**页5/23uint8Vector_CAN_Start(void)说明:这是开始执行组件操作的首选方法。Vector_CAN_Start()设置initVar变量,并依次调用Vector_CAN_Init()以及Vector_CAN_Enable()函数。参数:无返回值:指示寄存器是否已被写入及验证。值说明CYRET_SUCCESS函数已成功完成。Vector_CAN_FAIL函数执行失败。副作用:无uint8Vector_CAN_Stop(void)说明:禁用VectorCAN组件。参数:无返回值:指示寄存器是否已被写入及验证。值说明CYRET_SUCCESS函数已成功完成。Vector_CAN_FAIL函数执行失败。副作用:无uint8Vector_CAN_GlobalIntEnable(void)说明:此函数从CAN内核中使能全局中断。参数:无返回值:指示寄存器是否已被写入及验证。值说明CYRET_SUCCESS函数已成功完成。Vector_CAN_FAIL函数执行失败。副作用:无VectorCANPSoC®Creator™ComponentDatasheet页6/23DocumentNumber:001-89788Rev.**uint8Vector_CAN_GlobalIntDisable(void)说明:此函数从CAN内核中禁用全局中断。参数:无返回值:指示寄存器是否已被写入及验证。值说明CYRET_SUCCESS函数已成功完成。Vector_CAN_FAIL函数执行失败。副作用:无voidVector_CAN_Sleep(void)说明:这是使组件准备进入睡眠模式时的首选子程序。Vector_CAN_Sleep()子程序保存当前组件的状态。然后它依次调用Vector_CAN_SaveConfig()和Vector_CAN_Stop()函数,以保存硬件配置。在调用CyPmSleep()或CyPmHibernate()函数前,先调用Vector_CAN_Sleep()函数。参数:无返回值:无副作用:无voidVector_CAN_Wakeup(void)说明:该函数是将组件恢复到调用Vector_CAN_Sleep()时的状态的首选子程序。Vector_CAN_Wakeup()函数将调用Vector_CAN_RestoreConfig()函数,以恢复配置。如果组件在调用Vector_CAN_Sleep()函数前已使能,那么Vector_CAN_Wakeup()函数也将重新使能组件。参数:无返回值:无其他影响:调用Vector_CAN_Wakeup()函数前未调用Vector_CAN_Sleep()或Vector_CAN_SaveConfig()函数可能会产生意外行为。PSoC®Creator™ComponentDatasheetVectorCANDocumentNumber:001-89788Rev.**页7/23voidVector_CAN_Init(void)说明:根据自定义程序“Configure”对话框设置,初始化或恢复组件。无需调用Vector_CAN_Init(),因为Vector_CAN_Start()子程序会调用该函数,这是开始组件操作的首选方法。此函数将利用VectorCAN配置工具所生成的中断服务子程序CanIsr_0()设置CAN中断。参数:无返回值:指示寄存器是否已被写入及验证。值说明CYRET_SUCCESS函数已成功完成。Vector_CAN_FAIL函数执行失败。副作用:无uint8Vector_CAN_Enable(void)说明:激活硬件,开始组件操作。无需调用Vector_CAN_Enable(),因为Vector_CAN_Start()子程序会调用该函数,这是开始组件操作的首选方法。参数:无返回值:指示寄存器是否已被写入及验证。值说明CYRET_SUCCESS函数已成功完成。Vector_CAN_FAIL函数执行失败。副作用:无voidVector_CAN_SaveConfig(void)说明:此函数保存组件配置。它将保存非保留寄存器。此函数还将保存当前“Configure”对话框中所定义的或通过相应API修改的组件参数值。此函数将由Vector_CAN_Sleep()函数调用。参数:无返回值:无其他影响:无VectorCANPSoC®Creator™ComponentDatasheet页8/23DocumentNumber:001-89788Rev.**voidVector_CAN_RestoreConfig(void)说明:此函数恢复组件配置。这将恢复非保留寄存器。该函数还会将组件参数值恢复为调用Vector_CAN_Sleep()函数之前的值。参数:无返回值:无其他影响:调用该函数前未调用Vector_CAN_Sleep()或Vector_CAN_SaveConfig()函数可能会产生意外行为。MISRA合规性本节介绍了MISRA-C:2004合规性和本组件的偏差情况。定义了两种类型的偏差:项目偏差—适用于所有PSoCCreator组件的偏差特定偏差—仅适用于该组件的偏差本节介绍了有关组件特定偏差的信息。《系统参考指南》的“MISRA合规性”章节中介绍了项目偏差以及有关MISRA合规性验证环境的信息。VectorCAN组件没有任何特定偏差。该组件具有下面的嵌入式组件:中断和时钟组件。MISRA合规性与特定偏差的相关信息,请参见相应组件数据手册。示例固件源代码在FindExampleProject对话框中,PSoCCreator提供了大量的示例项目,包括原理图和示例代码。要获取组件示例,请打开组件目录中的对话框或原理图中的组件实例。要查看通用示例,请打开“StartPage”或File菜单中的对话框。根据要求,可以通过使用对话框中的FilterOptions选项来限定可选的项目列表。更多有关信息,请参考《PSoCCreator帮助》部分中主题为“查找示例项目”中的内容。中断服务