嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解

目录

一、移位相关问题

1.1 类型提升规则

  • C语言中的类型提升 :当对小于 int 的类型(如 uint8_tuint16_t)进行算术运算时,它们会先被提升为 int 类型(32位),然后再执行运算。

1.2 移位运算注意事项

  • 左右移位差异 :移位时左边的0不影响计算,右边的0影响计算。例如:
    • 0x01 = 1(二进制 0000 0001
    • 0x10 = 16(二进制 0001 0000

1.3 N位编码满量程值

  • 公式正确性 :N位数字编码的满量程值是 2^N - 1,不是 2^N。
  • 原因分析
    1. N位二进制能表示的数值范围是 0 到 2^N - 1,共有 2^N 个离散状态。
    2. 当编码值为最大值 2^N - 1 时,应输出物理量的满量程值。
    3. 映射公式的分母必须是 2^N - 1,而不是 2^N------否则永远达不到满量程输出。
  • 实用提示:记得换算的时候多少位就是除以多少,不要照搬公式。

二、简称和符号含义

2.1 通信协议相关

FDCAN
  • 全称:Flexible Data-rate Controller Area Network
  • 中文:灵活数据速率控制器局域网络
  • 说明:传统 CAN 协议的升级版,最主要的区别是波特率可以更高,单帧能携带的数据更多。
HSE
  • 全称:High-Speed External
  • 中文:高速外部时钟
  • 说明 :即板载晶振(如8MHz),是系统高精度基准源。 注意:确保CAN/EtherCAT波特率稳定的前提是必须启用HSE,而非内部RC振荡器。
PLL
  • 全称:Phase-Locked Loop
  • 中文:锁相环
  • 说明:负责将HSE低频倍频至芯片主频(如72M~600MHz),直接决定 MCU 的运算速度。
PCLK
  • 全称:Peripheral Clock
  • 中文:外设时钟
  • 说明:由系统主频分频后供给各种外设(如CAN、定时器、串口等),直接决定通信波特率和电机脉冲计数精度。
  • 一句话总结:HSE 起振 → PLL 倍频出 SYSCLK(系统主频) → MCU 内核与 AHB 总线跑 SYSCLK → AHB 分频出 APB1/APB2 总线时钟 → APB 给外设供 PCLK(PCLK1 / PCLK2)

2.2 CANopen 相关术语

PDO
  • 全称:Process Data Object
  • 中文:过程数据对象
SDO
  • 全称:Service Data Object
  • 中文:服务数据对象
PDO vs SDO 对比表
特性 PDO SDO
用途 实时控制数据(高频、周期性交换) 非实时参数配置(低频、按需访问)
传输方式 广播或周期轮询(无需确认) 点对点请求/响应(需确认)
实时性 微秒级延迟(严格同步) 毫秒级延迟(异步)
数据量 小数据块(如:1 字节 I/O 状态) 大数据块(如:配置文件、参数表)
可靠性 无重传机制(丢包需下一周期补偿) 支持重传(确保数据完整)
典型场景 电机位置控制、传感器读取 修改伺服参数、上传日志
cob_id
  • 全称:Communication Object ID
  • 中文:CANopen中的CAN ID
CoE
  • 全称:CANopen over EtherCAT
  • 说明
    • 速度提升:1Mbps → 100Mbps,通信周期从毫秒级提升至250μs级。
    • CoE优点
      • 同步:软件抖动 → 硬件分布式时钟,多轴同步误差从微秒级压缩至亚微秒级(<1μs)。
      • 🔌 接线:手拉手菊花链加终端电阻 → 普通网线任意拓扑,单站掉线不影响整体通信。
      • 📁 大文件:SDO 8字节低速分段传输 → 邮箱大包瞬间传输,固件升级极快。
      • 组网:手动拨码设节点 → ESI自动扫描即插即用,免去繁琐的节点地址分配。
BRS
  • 全称:BitRateSwitch
  • 中文:FDCAN比特率切换

2.3 数学符号

  • Π:这是希腊字母π(圆周率)

三、交流与反馈

欢迎大家有问题评论交流 (* ^ ω ^)

如果您在阅读过程中有任何疑问或建议,欢迎在评论区留言讨论!

相关推荐
万联WANFLOW1 小时前
SD-WAN 控制平面高可用怎么做?SDWAN 控制器挂了,全网会发生什么
运维·网络·分布式·架构
酱学编程2 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
风行南方3 小时前
密码学之分组密码
网络·密码学
艾莉丝努力练剑4 小时前
OpenCode AI 编程:Ubuntu 24.04 环境安装与使用指南
linux·服务器·网络·人工智能·tcp/ip·ubuntu
梁朝辉4 小时前
STM32H750VBT6中ADCINP与INN什么区别
stm32·单片机·嵌入式硬件
HERR_QQ4 小时前
强化学习的数学原理 学习笔记
人工智能·笔记·学习·自动驾驶
谷雪_6585 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
liulilittle5 小时前
KCC 拥塞控制算法缺陷修复记录(26/07/05)
网络·tcp/ip·计算机网络·c·信息与通信·tcp·通信
省四收割者5 小时前
一文详解信号完整性(1)
python·嵌入式硬件·数学建模·信息与通信·信号处理·智能硬件