OpenEdv-开源电子网

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

CAN Bus stId出错 以及没有传输数据出错

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2016-2-3
在线时间
2 小时
发表于 2016-4-10 10:59:56 | 显示全部楼层 |阅读模式
1金钱
我在弄can的实验得到的时序图有这样两个 can0 是从机的tx can1是从机的rx can2是主机的tx can3是主机的rx
请问有人遇到这样的情况吗?

我的代码是这样的:
#include "bsp_can.h"
//#include "usart.h"
//#include "lcd.h"
/**
@breaf BSP_CAN_Lib can总线驱动库
*/

static void bsp_can_io_config(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);            //ENABLE RCC_APB2 Reageister GPIOA
  /* Configure CAN pin: RX */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CAN_RX;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIO_CAN, &GPIO_InitStructure);
  /* Configure CAN pin: TX */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_CAN_TX;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIO_CAN, &GPIO_InitStructure);


}
static void bsp_can_mode_config(void)
{
CAN_InitTypeDef        CAN_InitStructure;
CAN_FilterInitTypeDef  CAN_FilterInitStructure;

RCC->APB1ENR|=1<<25;          //ENABLE RCC_APB1 Reageister can

  CAN_DeInit(CAN1);
  CAN_StructInit(&CAN_InitStructure);
  /* CAN cell init */
  CAN_InitStructure.CAN_TTCM = DISABLE;                   //CAN时间触发模式
  CAN_InitStructure.CAN_ABOM = ENABLE;                    //自动离线管理
  CAN_InitStructure.CAN_AWUM = ENABLE;                    //自动离线唤醒
  CAN_InitStructure.CAN_NART = DISABLE;                   //禁止报文自动重传 失能
  CAN_InitStructure.CAN_RFLM = DISABLE;                   //接收FIFO是否锁定 非锁定模式,溢出后新的覆盖旧的
  CAN_InitStructure.CAN_TXFP = DISABLE;                   //报文优先级的判定方法
  CAN_InitStructure.CAN_Mode =  CAN_Mode_Normal;           //正常工作模式 CAN_Mode_LoopBack
  
  /* CAN Baudrate = 0.8 MBps*/
  CAN_InitStructure.CAN_SJW = CAN_SJW_2tq;                //重新同步跳跃宽度
  CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;
  CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
  CAN_InitStructure.CAN_Prescaler = 4;
  CAN_Init(CAN1, &CAN_InitStructure);

//滤波器的设置
  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);
}
static void bsp_can_nvic_config(void)
{
  NVIC_InitTypeDef  NVIC_InitStructure;
  NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
//NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}
void bsp_can_init(void)
{
bsp_can_io_config();      //初始化CAN的引脚
bsp_can_nvic_config();    //中断向量的配置
bsp_can_mode_config();    //
}
void bsp_can_SendData(u8 *text,u8 len)
{
u8 i=0;
CanTxMsg TxMessage;
  TxMessage.StdId = MyStdID; //自定义宏  扩展的时候修改
  TxMessage.ExtId = 0x0;
  TxMessage.IDE   = CAN_Id_Standard;
  TxMessage.RTR   = CAN_RTR_Data;
  TxMessage.DLC = len;

for(;i<len;i++){
  TxMessage.Data[i]=text[i];
}

CAN_Transmit(CAN1,&TxMessage);
}

extern __IO u8 CAN_RxBuffer[255];   //CAN接收报文缓存区
extern __IO u8 CAN_Low,CAN_High;    //CAN队列指针
CanRxMsg RxMessage;
void CAN1_RRxMessageX0_IRQHandler(void)
{
CAN_Receive(CAN1, CAN_FIFO0,&RxMessage);
if(RxMessage.RTR==CAN_RTR_DATA){
  switch(RxMessage.StdId){
   case 0x1311:
    CAN_RxBuffer[CAN_High] = 1;//该控制器节点
    CAN_High++;
    break;
   case 0x1312:                 //该控制器以后的节点
    CAN_RxBuffer[CAN_High] = 0;
    CAN_High++;
    break;
   default:
    break;
  }
}
}

QQ图片20160410103804.png
QQ图片20160410103813.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-4-13 23:51:36 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 01:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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