硬汉嵌入式论坛

 找回密码
 立即注册
查看: 244|回复: 3
收起左侧

[CAN/FDCAN] CAN发送问题

[复制链接]

2

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2024-4-16 16:24:07 | 显示全部楼层 |阅读模式
最近调试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发送不出来数据,但是发送又是标准函数,所以不知道怎么回事,请教大神帮忙看看




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 2024-4-17 07:51:20 | 显示全部楼层
测试V7-085

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

使用道具 举报

2

主题

2

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-4-22 12:06:51 | 显示全部楼层
你给的例程下载进去跑了下:
V7-069_双FDCAN之间通信(仲裁500K,通信2M).7z (4.08MB)
V7-085_双FDCAN之间通信(仲裁500K,通信1M).7z (4.08MB)
我用的板子是(STM32-V7  0.8mm )1M的程序没问题,2M的没反应。怎么回事?是我的硬件板子不支持么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106721
QQ
发表于 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的,后来用的这个批次不支持了
所有我们这里配套了两个例子,方便大家选择对应的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-1 03:42 , Processed in 0.265966 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表