qingxirensheng 发表于 2024-4-16 16:24:07

CAN发送问题

最近调试CAN功能:用的这个例程---V7-069_双FDCAN之间通信

发现问题:J12和J13都跳过的,CANH1短接CANH2,CANL1短接CANL2.
仿真时

        while (1)
        {
      {
                        MSG_T msg;

                        if (bsp_GetMsg(&msg))
                        {
                                switch (msg.MsgCode)
                                {
                                        case MSG_CAN1_RX:                /* 接收到CAN设备的应答 */
                        printf("CAN1接收到消息\r\n");
                                        can1_Analyze();
                                                break;       
                                       
                                        case MSG_CAN2_RX:           /* 接收到CAN设备的应答 */
                         printf("CAN2接收到消息\r\n");
                                                can2_Analyze();
                                                break;                                       
                                }
                        }
                }
               
                /* 判断定时器超时时间 */
                if (bsp_CheckTimer(0))       
                {            
                        /* 每隔500ms 进来一次 */
                        bsp_LedToggle(2);
                }
      
      /* 按键滤波和检测由后台systick中断服务程序实现,我们只需要调用bsp_GetKey读取键值即可。 */
                ucKeyCode = bsp_GetKey();        /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
                if (ucKeyCode != KEY_NONE)
                {
                        switch (ucKeyCode)
                        {
                                case KEY_DOWN_K1:                        /* K1键按下 */
                                        printf("CAN2发送消息给CAN1,蜂鸣器鸣响4次\r\n");
                  can_BeepCtrl(1, 4);
                                        break;

                                case KEY_DOWN_K2:                        /* K2键按下 */
                                        printf("CAN1发送消息给CAN2,点亮LED1\r\n");
                  can_LedOn(1, 1);
                                        break;


                                case KEY_DOWN_K3:                /* K3键按下 */
                                        printf("CAN1发送消息给CAN2,熄灭LED1\r\n");
                  can_LedOff(1, 1);
                                        break;

                                default:
                                        /* 其它的键值不处理 */
                                        break;
                        }
               
                }
        }



按电路板上的K1,K2,K3按键,并没有达到预期效果,灯不亮蜂鸣器也不响。经过测试,发现CAN能够收到数据,问题原因是CAN发送不出来数据,但是发送又是标准函数,所以不知道怎么回事,请教大神帮忙看看




eric2013 发表于 2024-4-17 07:51:20

测试V7-085

基于STM32H7的双CANFD通信案例(2022-06-30)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=103449&fromuid=58
(出处: 硬汉嵌入式论坛)

qingxirensheng 发表于 2024-4-22 12:06:51

你给的例程下载进去跑了下:
V7-069_双FDCAN之间通信(仲裁500K,通信2M).7z (4.08MB)
V7-085_双FDCAN之间通信(仲裁500K,通信1M).7z (4.08MB)
我用的板子是(STM32-V70.8mm )1M的程序没问题,2M的没反应。怎么回事?是我的硬件板子不支持么?

eric2013 发表于 2024-4-22 14:16:21

qingxirensheng 发表于 2024-4-22 12:06
你给的例程下载进去跑了下:
V7-069_双FDCAN之间通信(仲裁500K,通信2M).7z (4.08MB)
V7-085_双FDCAN之间 ...

早期V7用的PHY芯片批次是可以2M的,后来用的这个批次不支持了
所有我们这里配套了两个例子,方便大家选择对应的。
页: [1]
查看完整版本: CAN发送问题