
目录
一、移位相关问题
1.1 类型提升规则
- C语言中的类型提升 :当对小于
int的类型(如uint8_t、uint16_t)进行算术运算时,它们会先被提升为int类型(32位),然后再执行运算。
1.2 移位运算注意事项
- 左右移位差异 :移位时左边的0不影响计算,右边的0影响计算。例如:
0x01= 1(二进制0000 0001)0x10= 16(二进制0001 0000)
1.3 N位编码满量程值
- 公式正确性 :N位数字编码的满量程值是 2^N - 1,不是 2^N。
- 原因分析 :
- N位二进制能表示的数值范围是 0 到 2^N - 1,共有 2^N 个离散状态。
- 当编码值为最大值 2^N - 1 时,应输出物理量的满量程值。
- 映射公式的分母必须是 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 数学符号
- Π:这是希腊字母π(圆周率)
三、交流与反馈
欢迎大家有问题评论交流 (* ^ ω ^)
如果您在阅读过程中有任何疑问或建议,欢迎在评论区留言讨论!