12446|10

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

can由环回改为正常模式后。。。 [复制链接]

用的是官方提供的exam,设置为还回模式时,能够正常运行,用zlg的USBCAN-II在can端可以接受数据,改为Normal模式后,就收不到数据了。
翻了很多帖子,貌似常见问题有两个:1、stm32的can信号转发器的供电要5V;2、要有两个有效节点。我的应该都满足了啊,用外部5V供电;USBCAN-II和stm32两个节点。刚接触can,还请多多指点!谢谢。
此帖出自stm32/stm8论坛

最新回复

楼主,请问你的问题解决了没,是怎么解决的  详情 回复 发表于 2018-1-16 16:26
点赞 关注(1)
 

回复
举报

57

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 在stm32端有一个转换成差分信号的小板,上面有120欧的电阻。还有哪里会有问题呢???
此帖出自stm32/stm8论坛
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
高手们,帮我分析一下啊!
int main(void)
{
  CanRxMsg RxMessage;

  /* System Clocks Configuration */
  RCC_Configuration();
  /* NVIC Configuration */
  NVIC_Configuration();
  LED_Configuration();
  CAN_Configuration();
  
  while(1)
  {
    if (CAN_Polling() == FAILED)
        leddisplay(LEDTWO, LEDON);
    else
        leddisplay(LEDTHREE, LEDON);
   
    if (CAN_MessagePending(CAN_FIFO0))
    {
        /* receive */
        RxMessage.StdId   = 0x00;
        RxMessage.IDE     = CAN_ID_STD;
        RxMessage.DLC     = 0x00;
        RxMessage.Data[0] = 0x00;
        RxMessage.Data[1] = 0x00;
        CAN_Receive(CAN_FIFO0, &RxMessage);
    }   
  }
}
TestStatus CAN_Polling ( void )
{
    CanTxMsg TxMessage;
    u32 retry = TIMEOUT;
    u8  TransmitMailbox;

    leddisplay(LEDONE, LEDOFF);
    leddisplay(LEDTWO, LEDOFF);
    leddisplay(LEDTHREE, LEDOFF);
  
    while (CAN_Reset() && retry --) ;
    if (!retry)
        return FAILED;

    TxMessage.StdId   = 0x12;
    TxMessage.RTR     = CAN_RTR_DATA;
    TxMessage.IDE     = CAN_ID_STD;
    TxMessage.DLC     = 0x02;
    TxMessage.Data[0] = 0x55;
    TxMessage.Data[1] = 0xAA;

    retry = TIMEOUT;
    TransmitMailbox = CAN_Transmit(&TxMessage);  // 执行一次,在USB-CAN接收端收到100多帧。
    while ((CAN_TransmitStatus(TransmitMailbox) != CANTXOK) && retry --) ; //状态一直是CANTXPENDING
    if (!retry)
        return FAILED;
  
    return PASSED;
}

u8  CAN_Reset ( void )
{
    CAN_InitTypeDef        CAN_InitStructure;
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;

    // CAN register init
    CAN_DeInit();
    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      = DISABLE;
    CAN_InitStructure.CAN_RFLM      = DISABLE;
    CAN_InitStructure.CAN_TXFP      = DISABLE;
    CAN_InitStructure.CAN_Mode      = CAN_Mode_Normal; // CAN_Mode_LoopBack;//;CAN_Mode_Normal
    CAN_InitStructure.CAN_SJW       = CAN_SJW_1tq;
    CAN_InitStructure.CAN_BS1       = CAN_BS1_8tq;
    CAN_InitStructure.CAN_BS2       = CAN_BS2_7tq;
    CAN_InitStructure.CAN_Prescaler = 0x05;       // 50 kbps
    if (CAN_Init(&CAN_InitStructure) == 0x00)
    {
        leddisplay(LEDONE, LEDON);
        return 0xff;
    }
  
    // CAN filter init
    CAN_FilterInitStructure.CAN_FilterNumber         = 0x00;
    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 = 0x00;
    CAN_FilterInitStructure.CAN_FilterActivation     = ENABLE;
    CAN_FilterInit(&CAN_FilterInitStructure);
  
    return 0x00;
}
此帖出自stm32/stm8论坛
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 查查看(寄存器CAN_MSR),CAN处于什么状态,如果处于init状态就不对
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 用示波器看下,看有没发数据
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢楼上的回答。
在正常模式下,STM32板子发,ZLG的USB-CAN能收到数据。但下面两句的地方有问题。
TransmitMailbox = CAN_Transmit(&TxMessage);  // 执行一次,在USB-CAN接收端收到100多帧。
    while ((CAN_TransmitStatus(TransmitMailbox) != CANTXOK) && retry --) ; //状态一直是CANTXPENDING
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 这么长码……
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 就是一些配置和初始化,也没有什么特别的。可就是不能正常通信,发还好一点,收一点都不行。
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

9
 
感谢 luckyfzl。
他的代码对于用USBCAN-II和板子通信是好的。
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

1

TA的资源

一粒金砂(初级)

10
 
楼主解决没 我也遇到这样的问题了
此帖出自stm32/stm8论坛
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

11
 
楼主,请问你的问题解决了没,是怎么解决的
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表