OpenEdv-开源电子网

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

STM32F429I开发板CAN1问题

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-24
在线时间
0 小时
发表于 2015-7-24 13:13:50 | 显示全部楼层 |阅读模式
5金钱
在工程的main函数中如果加入:

 CAN1_Init();
接下来是创建LED的task和启动task;

 CAN1_Init函数具体如下:
void CAN1_Init()
{
    GPIO_InitTypeDef        GPIO_InitStructure;
    CAN_InitTypeDef     CAN_InitStructure;
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;

   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);                                                                   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);            //使能CAN1时钟
 
    //引脚复用映射配置
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource11,GPIO_AF_CAN1);          //GPIOA11复用为CAN1
    GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_CAN1);          //GPIOA12复用为CAN1
 
    //初始化GPIO
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11| GPIO_Pin_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;                    //复用功能
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                  //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;              //100MHz
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;                    //上拉
    GPIO_Init(GPIOA, &GPIO_InitStructure);                          //初始化PA11,PA12
      
    //CAN单元设置
    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_Nomal;
    CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;  
    CAN_InitStructure.CAN_BS1=CAN_BS1_3tq;
    CAN_InitStructure.CAN_BS2=CAN_BS2_1tq; 
    CAN_InitStructure.CAN_Prescaler=9;
    CAN_Init(CAN1, &CAN_InitStructure);                             //初始化CAN1
     
    //配置过滤器
    CAN_FilterInitStructure.CAN_FilterNumber  = 0;  
    CAN_FilterInitStructure.CAN_FilterMode  = CAN_FilterMode_IdList;
    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= CAN_Filter_FIFO0;
    CAN_FilterInitStructure.CAN_FilterActivation   = DISABLE; 
    CAN_FilterInit(&CAN_FilterInitStructure);  
}

在LED的task中
void led(void)
{
canTxMsg  msg1;

  msg1.ExtId =0x01234567;
msg1.IDE = CAN_Id_Extended;

msg1.DLC=0x01;
msg1.RTR =CAN_RTR_Data;
msg1.Data[0]=0x21;
while(1)
{
   LED0=~LED0;
   CAN_Transmit(CAN1,&msg1);
  OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err);
}
}
CAN总线上无波形。PA12也无数据输出,LED闪烁,这是为什么呀?  把模式设置为环回模式,数据正常收到,PA12上依然无波形。

TX管脚映射到PH13上,在正常模式下 PH13 无波形,但是在环回模式下 PH13 出现了输出发送的波形

最佳答案

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

回复【6楼】正点原子: -------------------------------- 终于找到答案了,CAN协议芯片损坏,更换了一个就OK了,谢谢原子哥,谢谢大家
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-24
在线时间
0 小时
 楼主| 发表于 2015-7-24 13:13:51 | 显示全部楼层
回复【6楼】正点原子:
--------------------------------
终于找到答案了,CAN协议芯片损坏,更换了一个就OK了,谢谢原子哥,谢谢大家
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-25 11:44:45 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-24
在线时间
0 小时
 楼主| 发表于 2015-7-25 18:45:00 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥 ,这是什么原因啊, 我下载官网上的CAN的demo到开发板上 ,还是一样的PA12上无任何波形,PH13在环回模式下的时候 有时候有波形  有的时候无波形
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-26 15:48:20 | 显示全部楼层
回复【3楼】蓝蓝的草原:
---------------------------------
正常模式需要有2个节点,才可以测试。你一个节点,测不到波形很正常。
回环模式,不需要2个节点,所以,有时候可以测到波形。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-24
在线时间
0 小时
 楼主| 发表于 2015-7-26 19:24:20 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
CAN总线上是有两个节点,用的是吉阳光电的CANTools ,不管是CAN总线上,还是ARM的引脚,都没有监测到波形呀,CANTools上面也没有收到数据,使用波特率检测也没有监测到CAN总线上有数据 ,这就是关键,我认为,j即使CAn总线上没有两个节点,用示波器也应该是可以再PH12上能测量量到波形的,像以前使用的TMS32F2812就可以在IO引脚上测量到波形的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-26 19:51:38 | 显示全部楼层
回复【5楼】蓝蓝的草原:
---------------------------------
波特率要匹配哦。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-24
在线时间
0 小时
 楼主| 发表于 2015-7-27 12:32:24 | 显示全部楼层
回复【6楼】正点原子:
---------------------------
这个是当然了,在环回测试时PH13如果有波形时,CANTools都能够正确接收数据,只不过把模式已改成Nomal 模式就没有波形了 ,这个很着急呀,寄存器设置在单步调试观测都是正确的呀。。。。很是离奇
回复

使用道具 举报

2

主题

22

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-12-17
在线时间
12 小时
发表于 2017-3-14 19:17:56 | 显示全部楼层
顶---------------
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 23:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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