打印
[AT32F403/403A]

【注意】AT32F403A不完全兼容STM32F103的CAN

[复制链接]
1107|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
亲爱的雨滴|  楼主 | 2021-5-6 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
CAN, ni, pi, IO, gp
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);       
}

使用特权

评论回复
沙发
hoop| | 2021-5-6 13:42 | 只看该作者
STM32F103CBT6上的程序(主板72mHz,CAN波特率 50k),烧到AT32F403A上,CAN无法通讯(烧雅特力CAN例程可以正常通讯)
——是否APB1的分频没设好,或者过滤器没配置好。建议再好好检查下你代码的其他配置部分。刚有按照你当前的这个配置结合ST的库,在403A上跑,数据收发没什么异常。

使用特权

评论回复
板凳
weifeng90| | 2021-5-7 07:07 | 只看该作者
感谢楼主的提醒

使用特权

评论回复
地板
muyichuan2012| | 2021-5-7 08:46 | 只看该作者
无法通信怎么理解呢? 是不是电路驱动导致波形本身就不正常了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝