嵌入式开发笔记: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 数学符号

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

三、交流与反馈

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

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

相关推荐
2CM_Embed3 小时前
Altium Designer 原理图与 PCB 快速相互定位:Cross Probe 交叉探针
嵌入式硬件·pcb·altium designer·c2000
zhao3266857514 小时前
静态IP代理固定IP与动态IP的根本差异,账号操作安全性如何体现
网络·网络协议·tcp/ip
恒锐丰-罗生4 小时前
宽压大电流同步降压优选|CN3906 DC-DC 电源芯片,车载 / 工控 / IoT 全能供电方案
嵌入式硬件·硬件工程
何事误红尘6 小时前
全志A40i学习笔记():开发资料、启用串口
学习
for_ever_love__6 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
PC2005-cloud7 小时前
DeepSeek Harness 创建 skill 指南:结构、安装、使用
笔记·学习
YM52e7 小时前
分页查询的基石:ArkTS 为鸿蒙商品列表设计 LIMIT/OFFSET 的表
android·学习·华为·harmonyos
math_hongfan7 小时前
主从嵌套层次分明:ArkUI 订单卡片内嵌明细的鸿蒙界面
学习·华为·harmonyos
happygrilclh7 小时前
STM32,串口单字节中断接受,每次上电后,会收到一个0x00的解决办法。
单片机·嵌入式硬件
智闲电子设计8 小时前
STM32 独立看门狗 IWDG 实战:系统跑飞,它来兜底复位
stm32·单片机·嵌入式硬件