OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6725|回复: 7

STM32F103R8T6 CAN通信死机

[复制链接]

21

主题

54

帖子

0

精华

高级会员

Rank: 4

积分
744
金钱
744
注册时间
2012-4-27
在线时间
193 小时
发表于 2021-6-25 14:30:02 | 显示全部楼层 |阅读模式
1金钱
[color=rgb(0, 0, 0) !important]STM32F103R8T6 PA11发送,PA12接收,CAN通信死机,用的是战舰STM32F103ZE的例程,问题集中在
u8 CAN1_Send_Msg(u8* msg,u8 len)
{       
    u8 i=0;
        u32 TxMailbox;
        u8 message[8];
    TxHeader.StdId=0X12;        //标准标识符
    TxHeader.ExtId=0x12;        //扩展标识符(29位)
    TxHeader.IDE=CAN_ID_STD;    //使用标准帧
    TxHeader.RTR=CAN_RTR_DATA;  //数据帧
    TxHeader.DLC=len;               
    for(i=0;i<len;i++)
    {
                message=msg;
        }
    if(HAL_CAN_AddTxMessage(&CAN1_Handler, &TxHeader, message, &TxMailbox) != HAL_OK)//发送
        {
                return 1;
        }
        while(HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3) {}
    return 0;
}
屏蔽掉while(HAL_CAN_GetTxMailboxesFreeLevel(&CAN1_Handler) != 3) {},芯片没有死机,但是CAN脚没有信号输出,有大神遇到过这个问题吗?

最佳答案

查看完整内容[请看2#楼]

你得用2个板子,CAN不支持自发自收。 自发自收那就是回环模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-25 14:30:03 | 显示全部楼层
kinto 发表于 2021-6-25 15:10
后来发现,回环模式能发送数据,PA12有波形,但切换到普通模式后,就不能正常发送了

你得用2个板子,CAN不支持自发自收。
自发自收那就是回环模式
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

156

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
464
金钱
464
注册时间
2021-4-28
在线时间
158 小时
发表于 2021-6-25 15:03:04 | 显示全部楼层
帮顶      
回复

使用道具 举报

21

主题

54

帖子

0

精华

高级会员

Rank: 4

积分
744
金钱
744
注册时间
2012-4-27
在线时间
193 小时
 楼主| 发表于 2021-6-25 15:10:23 | 显示全部楼层
后来发现,回环模式能发送数据,PA12有波形,但切换到普通模式后,就不能正常发送了
回复

使用道具 举报

21

主题

54

帖子

0

精华

高级会员

Rank: 4

积分
744
金钱
744
注册时间
2012-4-27
在线时间
193 小时
 楼主| 发表于 2021-6-28 13:17:02 | 显示全部楼层
正点原子 发表于 2021-6-25 14:30
你得用2个板子,CAN不支持自发自收。
自发自收那就是回环模式

在普通模式下只发送也不行吗
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2021-6-28 13:34:15 | 显示全部楼层
kinto 发表于 2021-6-28 13:17
在普通模式下只发送也不行吗

不行,can需要ack应答机制,每一个人应答是发送失败
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-12-4
在线时间
5 小时
发表于 2021-6-28 13:41:02 | 显示全部楼层
stm32的can非常稳定,不用质疑的.
回复

使用道具 举报

21

主题

54

帖子

0

精华

高级会员

Rank: 4

积分
744
金钱
744
注册时间
2012-4-27
在线时间
193 小时
 楼主| 发表于 2021-6-29 17:08:47 | 显示全部楼层
现在在正常模式下发送正常,用USBCAN的上机位发送数据,接收返回0xF1,请大神指点
if(HAL_CAN_GetRxFifoFillLevel(&CAN1_Handler, CAN_RX_FIFO0) != 1)
        {
                return 0xF1;
        }
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 02:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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