This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F280049 用 driverlib编程,有没有专门的手册解释各个子函数的。用惯了28035,用库编程不习惯,不清楚里面是啥 不敢用。

Other Parts Discussed in Thread: C2000WARE

F280049 用 driverlib编程,有没有专门的手册解释各个子函数的。用惯了28035,用库编程不习惯,不清楚里面是啥 不敢用。

  • 您可以下载C2000ware,其安装文件夹内有文档 F28004x_DriverLib_Users_Guide 以及 F28004x_DriverLib_API_Guide

    路径:

    C2000Ware_2_01_00_00\device_support\f28004x\docs
  • C2000Ware_3_03_00_00版本没有你说的这两个文件。另外CAN通信的寄存器版例程哪里能获得。新版的手册CAN部分框图都没有了,全是文字描述,例程也只有寄存器版本,根本看不懂。
  • user4675816 说:
    C2000Ware_3_03_00_00版本没有你说的这两个文件。

    好像这个版本里确实没有找到,我附件附上该文件

    F28004x_DriverLib_Users_Guide.pdf

    user4675816 说:
    CAN通信的寄存器版例程哪里能获得

    目前是没有寄存器版本的CAN例程的,driverlib的相关例程参考

    C2000Ware_3_03_00_00\driverlib\f28004x\examples\can

    关于driverlib内该CAN例程的话,建议您查看 C2000Ware_3_03_00_00\driverlib\f28004x\driverlib内的can.c来了解相关的函数定义

  • Driverlib中提供的函数根本不足够做复杂的用户个性化配置。中断使能要么全开要么全关,RxIE,TxIE分别配置都不能。想用寄存器配置,CAN寄存器那个共用体叫什么名字我都没查到。比如操作GPIO就用GpioCtrlRegs。CAN的叫啥。CAN.h里面只有被封装的函数。库编程极不成熟啊,这玩意能用?
  • 首先请您参考TI例程,如can_ex2_loopback_interrupts

    user4675816 说:
    中断使能要么全开要么全关,RxIE,TxIE分别配置都不能。

    麻烦看一下

        //
        // Enable the CAN interrupt signal
        //
        Interrupt_enable(INT_CANA0);

    以及

    //
    // CAN ISR - The interrupt service routine called when a CAN interrupt is
    //           triggered.  It checks for the cause of the interrupt, and
    //           maintains a count of all messages that have been transmitted.
    //
    __interrupt void
    canISR(void)

    您可以在中断服务程序内来判断是收还是发引起的中断

    user4675816 说:
    操作GPIO就用GpioCtrlRegs。CAN的叫啥

        //
        // Initialize GPIO and configure GPIO pins for CANTX/CANRX
        //
        Device_initGPIO();
        GPIO_setPinConfig(DEVICE_GPIO_CFG_CANRXA);
        GPIO_setPinConfig(DEVICE_GPIO_CFG_CANTXA);

    user4675816 说:
    CAN寄存器那个共用体叫什么名字我都没查到。

     //
        // Initialize the transmit message object used for sending CAN messages.
        // Message Object Parameters:
        //      Message Object ID Number: 1
        //      Message Identifier: 0x1
        //      Message Frame: Standard
        //      Message Type: Transmit
        //      Message ID Mask: 0x0
        //      Message Object Flags: Transmit Interrupt
        //      Message Data Length: 4 Bytes
        //
        CAN_setupMessageObject(CANA_BASE, TX_MSG_OBJ_ID, 0x1, CAN_MSG_FRAME_STD,
                               CAN_MSG_OBJ_TYPE_TX, 0, CAN_MSG_OBJ_TX_INT_ENABLE,
                               MSG_DATA_LENGTH);
    
        //
        // Initialize the receive message object used for receiving CAN messages.
        // Message Object Parameters:
        //      Message Object ID Number: 2
        //      Message Identifier: 0x1
        //      Message Frame: Standard
        //      Message Type: Receive
        //      Message ID Mask: 0x0
        //      Message Object Flags: Receive Interrupt
        //      Message Data Length: 4 Bytes
        //
        CAN_setupMessageObject(CANA_BASE, RX_MSG_OBJ_ID, 0x1, CAN_MSG_FRAME_STD,
                               CAN_MSG_OBJ_TYPE_RX, 0, CAN_MSG_OBJ_RX_INT_ENABLE,
                               MSG_DATA_LENGTH);

  • 我希望只开CAN接收中断,不想开CAN发送中断。发送用查询方式。以免中断太多影响算法。怎用库函数配置?CAN_enableInterrupt()一次性打开所有中断实际应用时不能这么搞 啊。CAN寄存器编程时那个共用体的名字叫什么,不是指库编程接口。我想自己用寄 存器写初始化函数,不想用库编程,太不灵活了。
  • 我们在您新发的帖子内继续讨论:

    e2echina.ti.com/.../614826