leigang80 发表于 2023-2-4 12:11:55

关于CANOPEN 案例: 22-FreeRTOS-STC32G-CANOpen

关于提供的案例包:22-FreeRTOS-STC32G-CANOpen的相关问题:

1、在ObjDict.h 文档中以下定义的含义: 其中第一个 Read_Inputs_8_Bit[] 是TPDO0的映射单元,但是后面Polarity_Input_8_Bit[] 、Filter_Constant_Input_8_Bit[]、Global_Interrupt_Enable_Digital、Interrupt_Mask_Low_to_High_8_Bit[]等几个是什么意义呢?

/**************************************************************************/
/* Declaration of mapped variables                                        */
/**************************************************************************/
UNS8 xdata Read_Inputs_8_Bit[] =                /* Mapped at index 0x6000, subindex 0x01 - 0x01 */
{
    0x0        /* 0 */
};
UNS8 xdata Polarity_Input_8_Bit[] =                /* Mapped at index 0x6002, subindex 0x01 - 0x01 */
{
    0x0        /* 0 */
};
UNS8 xdata Filter_Constant_Input_8_Bit[] =                /* Mapped at index 0x6003, subindex 0x01 - 0x01 */
{
    0x0        /* 0 */
};
UNS8 xdata Global_Interrupt_Enable_Digital = 0x1;                /* Mapped at index 0x6005, subindex 0x00 */
UNS8 xdata Interrupt_Mask_Any_Change_8_Bit[] =                /* Mapped at index 0x6006, subindex 0x01 - 0x01 */
{
    0xFF        /* 255 */
};
UNS8 xdata Interrupt_Mask_Low_to_High_8_Bit[] =                /* Mapped at index 0x6007, subindex 0x01 - 0x01 */
{
    0x0        /* 0 */
};
UNS8 xdata Interrupt_Mask_High_to_Low_8_Bit[] =                /* Mapped at index 0x6008, subindex 0x01 - 0x01 */
{
    0x0        /* 0 */
};


2、我使用了两片屠龙刀,第一片用CAN1作为CANOPEN 主站,第二片用CAN2作为CANOPEN的从站,每片屠龙刀上断开了CAN1/2的短接电阻,并对例程22的程序做了以下修改
1)CANOPEN 主站:只使用了CAN1主站程序, 屏蔽了IO程序和CAN2接收程序

    xTaskCreate((TaskFunction_t )vCan1Task,
                (const char*    )"TX_CAN",
                (uint16_t       )configDEFAULT_STACK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )(configDEFAULT_PRIORITIES + 1),
                (TaskHandle_t*)NULL);

2)CANOPEN 从站:只使用了CAN2从站程序, 屏蔽了IO程序和CAN1发送程序

   xTaskCreate((TaskFunction_t )vCan2Task,
                (const char*    )"RX_CAN",
                (uint16_t       )configDEFAULT_STACK_SIZE,
                (void*          )NULL,
                (UBaseType_t    )(configDEFAULT_PRIORITIES + 1),
                (TaskHandle_t*)NULL);

目前能够实现主从通信,单有以下不理解:
1)使用CAN监控设备对总线进行监控发现:当两个屠龙刀通电时,在总线上,一直存在主站发出的心跳包:0x000007008   7F 00 00 00 00 00 00 00 ,但是为什么没有从站的心跳包呢?
                                                               当只有从站屠龙刀通电时,总线上监控到了从站发出的心跳包:0x0000070F8   7F 00 00 00 00 00 00 00
2)是否能够提供能够编辑该CANOPEN 协议EDS文件的相关工具和使用说明。







wy_nb 发表于 2023-3-17 21:39:44

我看了一下,例程应该移植的是canfestival,网上找一下有对应的对象字典编辑软件的。

ZENGFENG 发表于 2023-4-19 22:39:28

遇到同样的问题。

芯LYS 发表于 2023-4-20 10:33:07

网上搜索的关于canfestival中对象字典编辑器的安装与使用步骤,不知道是否有帮助...









页: [1]
查看完整版本: 关于CANOPEN 案例: 22-FreeRTOS-STC32G-CANOpen