IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> HC32F4A0 CANFD 的使用记录 -> 正文阅读

[嵌入式]HC32F4A0 CANFD 的使用记录

看了一圈,这个片子没有人发个类似的,发个文章记录调试

1、调试了HC32F4A0 CANFD? ? ? ? ? ? ? ? ? ? ? ?

? ? ?调试环境用的HC32FA0 开发板?

? ? 用的是can1测试

?测试华大的教程,测试验证 仲裁端为 1M 数据端为8M? ? ? ? ? ? ? ? ? ? ? ? ?

?以下是华大的配置

2、具体的计算公式

不想计算的的小伙伴,可以参考下手册时钟对应波特率图,用户手册上1353页

3、配置这个要注意的一点是? ??CAN_FD_TDC_DISABLE? ?这个禁止。

? ? ?至于为什么,我也不懂,懂得朋友告诉一声

//500k  canfd 配置   在时钟80M通讯


 
    /* Initializes CAN. */
    (void)CAN_StructInit(&stcCanInit);        //500k   仲裁域的500k配置
    stcCanInit.stcBitCfg.u32Prescaler = 4U;
    stcCanInit.stcBitCfg.u32TimeSeg1  = 32U;
    stcCanInit.stcBitCfg.u32TimeSeg2  = 8U;
    stcCanInit.stcBitCfg.u32SJW       = 8U;
    stcCanInit.pstcFilter             = astcFilter;
    stcCanInit.u16FilterSelect        = CAN_FILTER_SEL;
    stcCanInit.u8WorkMode             = CAN_WORK_MD_NORMAL;

    /* CAN-FD configuration. */
    (void)CAN_FD_StructInit(&stcCanFd);         //500K   数据域的500k配置
    stcCanFd.stcBitCfg.u32Prescaler = 8U;
    stcCanFd.stcBitCfg.u32TimeSeg1  = 16U;
    stcCanFd.stcBitCfg.u32TimeSeg2  = 4U;
    stcCanFd.stcBitCfg.u32SJW       = 4U;
    stcCanFd.u8TDC                  = CAN_FD_TDC_DISABLE;
    stcCanFd.u8SSPOffset            = stcCanFd.stcBitCfg.u32TimeSeg1; /* Equal to SEG1 is suggested. */
    stcCanInit.pstcCanFd = &stcCanFd;
		

以下的是测试数据

4、以下是调试完成? ? 1M? ?2M? ?4M? 的代码

1M

   // 1m  
    /* Initializes CAN. */
    (void)CAN_StructInit(&stcCanInit);        //500k
    stcCanInit.stcBitCfg.u32Prescaler = 4U;
    stcCanInit.stcBitCfg.u32TimeSeg1  = 32U;
    stcCanInit.stcBitCfg.u32TimeSeg2  = 8U;
    stcCanInit.stcBitCfg.u32SJW       = 8U;
    stcCanInit.pstcFilter             = astcFilter;
    stcCanInit.u16FilterSelect        = CAN_FILTER_SEL;
    stcCanInit.u8WorkMode             = CAN_WORK_MD_NORMAL;

    /* CAN-FD configuration. */
    (void)CAN_FD_StructInit(&stcCanFd);         //1M
    stcCanFd.stcBitCfg.u32Prescaler = 4U;
    stcCanFd.stcBitCfg.u32TimeSeg1  = 16U;
    stcCanFd.stcBitCfg.u32TimeSeg2  = 4U;
    stcCanFd.stcBitCfg.u32SJW       = 4U;
    stcCanFd.u8TDC                  = CAN_FD_TDC_DISABLE;
    stcCanFd.u8SSPOffset            = stcCanFd.stcBitCfg.u32TimeSeg1; /* Equal to SEG1 is suggested. */
    stcCanInit.pstcCanFd = &stcCanFd;
		

2M


    /* Initializes CAN. */
    (void)CAN_StructInit(&stcCanInit);        //1M
    stcCanInit.stcBitCfg.u32Prescaler = 1U;
    stcCanInit.stcBitCfg.u32TimeSeg1  = 64U;
    stcCanInit.stcBitCfg.u32TimeSeg2  = 16U;
    stcCanInit.stcBitCfg.u32SJW       = 16U;
    stcCanInit.pstcFilter             = astcFilter;
    stcCanInit.u16FilterSelect        = CAN_FILTER_SEL;
    stcCanInit.u8WorkMode             = CAN_WORK_MD_NORMAL;

    /* CAN-FD configuration. */
    (void)CAN_FD_StructInit(&stcCanFd);         //2M
    stcCanFd.stcBitCfg.u32Prescaler = 2U;
    stcCanFd.stcBitCfg.u32TimeSeg1  = 16U;
    stcCanFd.stcBitCfg.u32TimeSeg2  = 4U;
    stcCanFd.stcBitCfg.u32SJW       = 4U;
    stcCanFd.u8TDC                  = CAN_FD_TDC_ENABLE;
    stcCanFd.u8SSPOffset            = stcCanFd.stcBitCfg.u32TimeSeg1; /* Equal to SEG1 is suggested. */
    stcCanInit.pstcCanFd = &stcCanFd;

4M

    /* Initializes CAN. */
    (void)CAN_StructInit(&stcCanInit);
    stcCanInit.stcBitCfg.u32Prescaler = 1U;     //1M
    stcCanInit.stcBitCfg.u32TimeSeg1  = 64U;
    stcCanInit.stcBitCfg.u32TimeSeg2  = 16U;
    stcCanInit.stcBitCfg.u32SJW       = 16U;
    stcCanInit.pstcFilter             = astcFilter;
    stcCanInit.u16FilterSelect        = CAN_FILTER_SEL;
    stcCanInit.u8WorkMode             = CAN_WORK_MD_NORMAL;

    /* CAN-FD configuration. */
    (void)CAN_FD_StructInit(&stcCanFd);         //4M
    stcCanFd.stcBitCfg.u32Prescaler = 1U;
    stcCanFd.stcBitCfg.u32TimeSeg1  = 16U;
    stcCanFd.stcBitCfg.u32TimeSeg2  = 4U;
    stcCanFd.stcBitCfg.u32SJW       = 4U;
    stcCanFd.u8TDC                  = CAN_FD_TDC_ENABLE;
    stcCanFd.u8SSPOffset            = stcCanFd.stcBitCfg.u32TimeSeg1; /* Equal to SEG1 is suggested. */
    stcCanInit.pstcCanFd = &stcCanFd;

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:17:54  更:2022-05-08 08:18:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:13:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码