OpenEdv-开源电子网

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

STM32F103C8T6 发送CAN帧不能被CAN分析仪接收到

[复制链接]

0

主题

0

帖子

0

精华

新手入门

积分
0
金钱
0
注册时间
2022-1-8
在线时间
6 小时
发表于 2022-3-7 20:12:31 | 显示全部楼层 |阅读模式
6金钱
本帖最后由 GeorgeZZQ 于 2022-3-8 10:06 编辑

问题描述:
只测GPIO_Pin_12 & GPIO_Pin_11(CAN_TX和CAN_RX引脚),示波器有波形;如果测经过TJA1050转换后的CAN_H和CAH_L示波器无波形,并且PC上的接收软件也无CAN帧到达
但我肯定物理层是没有错误的,TJA1050 5V供电和GND是在STLink USB接口那里引出来的;且TSJW=1,TBS1=9,TBS2=8,CAN_Prescaler=4,波特率被严格配置成500KHz
代码主要是在配置数据链路层,感觉TxMessage中能填的都填完整了(帧ID,数据区,IDE,RTR,DLC......)


==================================main函数外======================================
/*bxCAN控制器设置,GPIO端口设置(无引脚重映射,使用默认复用功能:GPIOA_Pin_11作为CAN_RX,GPIOA_Pin_12作为CAN_TX*/
void CAN1_Init(uint8_t tsjw,uint8_t tbs1,uint8_t tbs2,uint16_t brp,uint8_t mode)
{
        //1.RCC开启bxCAN时钟,GPIO时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        //2.配置GPIOA
        //CAN_RX引脚GPIOA_Pin_11使用上拉输入
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        //CAN_TX引脚GPIOA_Pin_12使用复用推挽输出,∵使用了默认复用功能
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        //3.配置CAN控制器工作模式,波特率等
        CAN_InitTypeDef CAN_InitStructure;
        CAN_InitStructure.CAN_SJW=tsjw;
        CAN_InitStructure.CAN_BS1=tbs1;
        CAN_InitStructure.CAN_BS2=tbs2;
        CAN_InitStructure.CAN_Prescaler=brp;
        CAN_InitStructure.CAN_Mode=mode;
        CAN_InitStructure.CAN_ABOM=DISABLE;
        CAN_InitStructure.CAN_AWUM=DISABLE;
        CAN_InitStructure.CAN_NART=ENABLE;
        CAN_InitStructure.CAN_RFLM=DISABLE;
        CAN_InitStructure.CAN_TTCM=DISABLE;
        CAN_InitStructure.CAN_TXFP=DISABLE;
        CAN_Init(CAN1,&CAN_InitStructure);
}

/*往CAN总线发送一帧数据*/
uint8_t CAN_Send_Msg(uint8_t *msg,uint8_t len)
{
        uint8_t mbox;                                        //使用的发送邮箱号
        uint16_t i;
        CanTxMsg TxMessage;                                //要发送的消息的结构体
        TxMessage.StdId=0x12;                        //标准标识符
        TxMessage.ExtId=0x12;                        //拓展标识符
        TxMessage.IDE=CAN_Id_Standard;        //标准帧
        TxMessage.RTR=CAN_RTR_Data;                //数据帧
        TxMessage.DLC=len;                                //要发送的数据长度
        for(i=0;i<len;i++)                                //逐个字节复制数据
        {
                TxMessage.Data=函数内msg;
        }
        mbox=CAN_Transmit(CAN1,&TxMessage);//返回所使用的发送邮箱号,一个邮箱存一个报文
        i=0;
        while((CAN_TransmitStatus(CAN1,mbox)==CAN_TxStatus_Failed)&&(i<0xFFF))
        {
                i++;
        }
        if(i>0xFFF)
        {
                return 1;                //发送失败
        }
        return 0;                        //发送成功
}


====================================main函数内=========================================
CAN1_Init(CAN_SJW_1tq,CAN_BS1_9tq,CAN_BS2_8tq,4,CAN_Mode_Normal);

while(1)
        {
                res=CAN_Send_Msg(canbuf,8);
                if(!res)
                {
                        for(i=0;i<8;i++)
                        {
                                OLED_ShowNum(2,i+1,canbuf,1);
                        }
                }
                Delay_ms(1000);
        }


硬件连接图

硬件连接图

PC中的USB-CAN Tool软件不能接受到CAN帧

PC中的USB-CAN Tool软件不能接受到CAN帧

最佳答案

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

已解决,是因为USB-CAN Tool上位机软件打开CAN分析仪时默认波特率不是500KHz
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
0
金钱
0
注册时间
2022-1-8
在线时间
6 小时
 楼主| 发表于 2022-3-7 20:12:32 | 显示全部楼层
ZKX182 发表于 2022-3-8 17:07
TJA1050好像需要5v供电

已解决,是因为USB-CAN Tool上位机软件打开CAN分析仪时默认波特率不是500KHz
回复

使用道具 举报

0

主题

465

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1732
金钱
1732
注册时间
2021-4-11
在线时间
320 小时
发表于 2022-3-8 12:14:30 | 显示全部楼层
帮顶                        
回复

使用道具 举报

11

主题

114

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2021-6-17
在线时间
206 小时
发表于 2022-3-8 17:07:06 | 显示全部楼层
本帖最后由 ZKX182 于 2022-3-8 17:17 编辑

TJA1050好像需要5v供电
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-7-12
在线时间
0 小时
发表于 2022-4-13 14:24:15 | 显示全部楼层
您好,请教一下CAN_H和CAH_L示波器上能看到波形吗
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2022-7-8
在线时间
4 小时
发表于 2022-7-21 10:50:25 | 显示全部楼层
源码有吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 14:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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