OpenEdv-开源电子网

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

stm32 CAN总线无法正常控制车载CD机

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
发表于 2018-8-10 13:05:36 | 显示全部楼层 |阅读模式
1金钱
遇到个CAN总线问题折磨好久了,还请大家帮忙分析下,新手只有1金钱,还请帮帮忙了。需要做一个CAN控制盒,控制原装车载CD机,有控制协议,我的问题如下:
1、用阿波罗STM32F429开发板的CAN接口直接控制原装车载CD机,控制不了,但是在CANH、CANL两端并上CAN总线分析仪,就可以控制。
2、用示波器对比过接和不接CAN总线分析仪,波形一样的。
3、尝试过CANH和CANL之间,增加120R或去掉120R电阻,效果一样。
下图是我的连接示意图

开发板直连CD机

开发板直连CD机

并上总线分析仪

并上总线分析仪


最佳答案

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

谢谢您的建议!我试试看
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
 楼主| 发表于 2018-8-10 13:05:37 | 显示全部楼层
tgw860910 发表于 2018-9-12 09:59
你的CAN分析仪是不是配置成正常模式?
你试试把CAN分析仪配置成只听模式,看看能不能收发正常

谢谢您的建议!我试试看
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-11 02:10:08 | 显示全部楼层
两个方法,都是用STM32控制么?
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
 楼主| 发表于 2018-8-11 22:34:12 | 显示全部楼层
是的,原子哥。不知道并联CAN总线分析仪,是对哪里产生了影响?
用的是阿波罗STM32F429开发板自带的CAN总线例程,总线分析仪可以正常检测到CAN总线数据。不知道从何下手了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-12 01:34:57 | 显示全部楼层
AllLinkToYou 发表于 2018-8-11 22:34
是的,原子哥。不知道并联CAN总线分析仪,是对哪里产生了影响?
用的是阿波罗STM32F429开发板自带的CAN总 ...

确实比较奇怪。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-12 01:35:03 | 显示全部楼层
慢慢查查吧
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
 楼主| 发表于 2018-8-13 13:39:57 | 显示全部楼层
好的,我再查下代码。谢谢原子哥!
回复

使用道具 举报

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-4-14
在线时间
33 小时
发表于 2018-8-13 14:03:40 | 显示全部楼层
楼主挂上逻辑分析仪后就能通讯,很有可能是阻抗不匹配的问题,可以加个上拉电阻试一下,你加示波器和逻辑分析仪能收到影响的也就是匹配阻抗了
回复

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
535
金钱
535
注册时间
2018-8-2
在线时间
54 小时
发表于 2018-8-14 10:34:24 | 显示全部楼层
检查一下CAN被配置成什么模式,感觉像是没有应答信号,所以发不成功
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
 楼主| 发表于 2018-8-22 20:52:51 | 显示全部楼层
tgw860910 发表于 2018-8-14 10:34
检查一下CAN被配置成什么模式,感觉像是没有应答信号,所以发不成功

那应该设置成哪种模式呢?我把初始化代码贴出来麻烦帮我看下
void CAN_init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  CAN_InitTypeDef CAN_InitStructure;
  CAN_FilterInitTypeDef CAN_FilterInitStructure;
  NVIC_InitTypeDef  NVIC_InitStructure;
  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);       
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /* CAN register init */
  CAN_DeInit(CAN1);

  CAN_StructInit(&CAN_InitStructure);

  /* CAN cell init */
  CAN_InitStructure.CAN_TTCM = DISABLE;
  CAN_InitStructure.CAN_ABOM = DISABLE;
  CAN_InitStructure.CAN_AWUM = DISABLE;
  CAN_InitStructure.CAN_NART = ENABLE;
  CAN_InitStructure.CAN_RFLM = DISABLE;
  CAN_InitStructure.CAN_TXFP = DISABLE;
  CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
  
  /* Baudrate = 500kbps*/
  CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;
  CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
  CAN_InitStructure.CAN_Prescaler = 4;
  CAN_Init(CAN1, &CAN_InitStructure);//CAN波特率=CAN_CLK/(CAN_SJW_1tq+CAN_BS1_6tq+CAN_BS2_5tq)/4=500kbit/s

  /* CAN filter init */
  CAN_FilterInitStructure.CAN_FilterNumber = 0;
  CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
  CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
  CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
  CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;  
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;

  CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
  CAN_FilterInit(&CAN_FilterInitStructure);
  
  CAN_ITConfig(CAN1,CAN_IT_FMP0,ENABLE);//FIFO0消息挂号中断允许.      
  
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;     // 主优先级为1
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;            // 次优先级为0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
回复

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
535
金钱
535
注册时间
2018-8-2
在线时间
54 小时
发表于 2018-8-24 17:13:41 | 显示全部楼层
你试试改成 CAN_Mode_LoopBack 看看
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
 楼主| 发表于 2018-8-30 17:23:31 | 显示全部楼层
tgw860910 发表于 2018-8-24 17:13
你试试改成 CAN_Mode_LoopBack 看看

CAN_Mode_LoopBack应该不会有输出吧
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2018-8-30
在线时间
3 小时
发表于 2018-8-30 19:41:48 | 显示全部楼层
看你的配置是照M3的配的,M4 IO 配置和M3有些区别。看图片应该是大众的车机,这个你的开发板是需要配120R电阻的。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-8-10
在线时间
8 小时
 楼主| 发表于 2018-9-10 16:52:00 | 显示全部楼层
laoyi 发表于 2018-8-30 19:41
看你的配置是照M3的配的,M4 IO 配置和M3有些区别。看图片应该是大众的车机,这个你的开发板是需要配120R电 ...

你说的很对,就是大众原装的CD机,我用别的CAN控制板能控制,自己做了一个用STM32F103C8T6的板子,必须加上CAN分析仪才可控,用F429的开发板测试也是一样。
回复

使用道具 举报

0

主题

31

帖子

0

精华

高级会员

Rank: 4

积分
535
金钱
535
注册时间
2018-8-2
在线时间
54 小时
发表于 2018-9-12 09:59:55 | 显示全部楼层
AllLinkToYou 发表于 2018-9-10 16:52
你说的很对,就是大众原装的CD机,我用别的CAN控制板能控制,自己做了一个用STM32F103C8T6的板子,必须加 ...

你的CAN分析仪是不是配置成正常模式?
你试试把CAN分析仪配置成只听模式,看看能不能收发正常
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 04:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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