STM32F103CBT6上的程序(主频24mHz,CAN 波特率6k),烧到AT32F403A上,通讯正常
STM32F103CBT6上的程序(主板72mHz,CAN波特率 50k),烧到AT32F403A上,CAN无法通讯(烧雅特力CAN例程可以正常通讯)
void CAN_Setup(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
/* GPIOA and GPIO_LED clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
/* CAN Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE);
/* Configure CAN pin: RX */
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);
/* Configure CAN pin: TX */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* CAN register init */
CAN_DeInit(); //将CAN相关寄存器复位成默认值
CAN_StructInit(&CAN_InitStructure); //将该结构体成员初始化成默认值
/* CAN cell init */
CAN_InitStructure.CAN_TTCM=DISABLE; //是否使能时间触发通讯模式
CAN_InitStructure.CAN_ABOM=ENABLE; //是否使能总线的自动关闭功能
CAN_InitStructure.CAN_AWUM=ENABLE; //是否使能自动唤醒模式
CAN_InitStructure.CAN_NART=DISABLE; //是否使能自动重传功能
CAN_InitStructure.CAN_RFLM=ENABLE; //是否使能接收FIFO锁定模式
CAN_InitStructure.CAN_TXFP=DISABLE; //是否使能发送FIFO优先级
CAN_InitStructure.CAN_Mode=CAN_Mode_Normal; //CAN控制器的工作模式
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; //配置时间量子的最大数,总线同步时用
CAN_InitStructure.CAN_BS1=CAN_BS1_13tq; //在位字段1中,配置量子的最大数量 11
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq; //在位字段2中,配置量子的最大数量 8
CAN_InitStructure.CAN_Prescaler=45; //配置时间量子的长度1~1024 当前波特率50K
CAN_Init(&CAN_InitStructure);
} |