SPI
与USART的同步模式 (Synchronous Mode)有相似的地方
接线
STM32 Device1 Device2 Device3
------------------------------------------------
SCK ------- SCK ------- SCK ------- SCK---->时钟线
MOSI ------- MOSI ------- MOSI ------- MOSI--->对于主设备的输出
MISO ------- MISO ------- MISO ------- MISO--->对于主设备的输出
SS1 ------- SS - - --->片选线,多条片选线好像没有硬件支持,需要手搓
SS2 ------- - SS -
SS3 ------- - - SS
关于片选线的配置使用软件,然后给高电平,
基本模式
分类:
- master/salve,主从
- master
- salve
- full/half,全半
- full
- half
- only,单线
配置
-
First Bit,决定数据的传输方向
- MSB,最高位开始传输
- LSB,最低位开始传输
-
极性和相位,和前面的一样 1.
-
CRC Calculation ,CRC数据校验
-
CRC Polynomial,CRC多项式,就是CRC校验使用的计算公式
- CRC-8,普通校验
- CRC-16,USB校验
- CRC-32,ZIP校验,以太网,文件系统
IIC
接线
VCC
|
+--[4.7kΩ]--+-----------+------------- SDA(数据线),需要上拉电阻
| |
| |
MCU 从设备1
| |
+--[4.7kΩ]--+-----------+------------- SCL(时钟线)
工作流程
基本模式
IIC
SMBus模式(属于附属设备)
system message bus 系统管理总线,是一种基于IIC的通信方式,主要用于电源管理、监控和嵌入式系统中的低速通信。
接线
VCC
|
[4.7kΩ]
| | |
| | |
SDA (数据线) SCL (时钟线) SMBALERT# (警报线)
| | |
| | |
- SMBus-Alert-mode(警报模式),这个可以通过警报线给主设备一个信号,让主设备来处理
- SMBus-two-write-interface(双写接口),这个模式就是单纯附属设备,主设备配置从设备
IIC的基本配置
IIC speed mode ,速度模式
IIC clock speed,时钟速度
clock no stretch mode,时钟无拉伸模式,在通信过程中不允许从设备拉伸时钟线(SCL)。在这种模式下,从设备无法通过拉伸SCL来延迟主设备的数据传输。这种模式通常用于确保通信的高速性,但可能在某些情况下导致从设备无法及时处理数据
primary address length selection,地址的长度选择
dual address acknowledge,双地址,使用双地址可以让这个模块既在一个系统中,又在另一个系统中,为了兼容性
primary slave address 第二地址
general call address detection 通用呼叫地址检测,开了这玩意就是主设备可以发送一个广播信号,用一个特殊地址,在这条线上开了这个模式的设备都会相应
CAN
接线
Device 1 Device 2
┌──────────┐ ┌──────────┐
│ CAN_H │─────────────┐ │ CAN_H │
│ CAN_L │─────────────┼──│ CAN_L │
│ GND │─────────────┘ │ GND │
└──────────┘ └──────────┘
| |
120Ω 120Ω
(终端电阻) (终端电阻)
差分信号
差分信号是一种信号传输技术,通过两条导线同时传输互补的电压信号,以提高信号的抗干扰能力和传输质量。它广泛应用于高速数据通信和长距离信号传输中。
原理:
通过比较正线和负线的电压,接收器可以准确地还原出发送的信号。例如:
- 如果正线(A+)电压高于负线(A-),则接收器判断为逻辑“1”;
- 如果负线(A-)电压高于正线(A+),则接收器判断为逻辑“0”。
差分信号收到电磁干扰可以自我纠正,两条线电压的插值不会改变,不像单端信号,0可能变成1
注意事项:两根线要一样长,最好是双绞线,
如何把单端信号拆分成差分信号:
- 使用差分放大器
- 自己搞个逻辑电路
- 搞两个极性想法的mos管,大概就差不多了
配置
Time quanturm,最小时间刻度,和高中学的游标卡尺的那个最小刻度,翻译是时间量子,Time Quantum(时间量子)可以理解为传输一位所需的时间单位。它是数据传输过程中的最小时间刻度,用于控制信号的稳定性和状态转换。
Time Quanta in Bit Segment 1,Bit Segment 1的时间
- Bit Segment 1
- 这部分电平信号是传输的信息,主要用于信号的稳定和状态转换。在这个阶段,信号的状态变化代表着数据的传输。
Time Quanta in Bit Segment 2, Bit Segment 2的时间
- Bit Segment 2
- 这部分信号负责信号确认、错误检测和信号的稳定性。它不仅进行前面一段信号的错误校验,还包括从机向主机发送确认信号,确保数据被正确接收。
-
比特率与时间关系的参数表格
参数 符号 表示意义 公式 传输一个比特的时间 TB 传输一个比特所需的总时间 TB=T1+T2+Textra Time Quanta in Bit Segment 1 T1 信号稳定和状态转换所需的时间 T1(由具体配置决定) Time Quanta in Bit Segment 2 T2 信号确认、错误检测和信号稳定所需的时间 T2(由具体配置决定) 附加时间 Textra 确保信号准确采样或其他必要的时间 Textra(由具体配置决定) 比特率 RRR 每秒钟传输的比特数量 R=1/TB
Re-synchronization Jump Width
- Re-synchronization Jump 机制: CAN协议和UART很像,也没有时钟线,也可能出现时钟和电平信号对不上号的情况,Re-synchronization Jump 机制通过允许节点在接收到同步信号时快速调整时钟,增强了CAN协议在多节点通信中的可靠性和稳定性。通过合理设置 Re-synchronization Jump Width 参数,CAN网络可以有效应对信号干扰和时钟偏差,确保数据的完整性和传输效率。
- Re-synchronization Jump Width 参数,就是允许调整的偏差
Time Triggered Communication Mode 时间触发通信模式
- CAN协议不能发送和接收同时进行,就所谓半双工,这个模式可以通过主设备或者时钟服务设备提供一个统一的时间基准,然后通过配置时间表让各个设备在对应的时间段发送或者接收,这个时间段叫做时间槽(time slots)
Automatic Bus- Off Management 自动关闭总线管理
- Bus-Off 状态,当节点出现错误次数触发阈值进入 Bus-Off 状态时,它会被从网络中暂时隔离,停止发送数据。这可以防止错误节点对网络的干扰,保护其他正常工作的节点。
- 允许节点在进入 Bus-Off 状态后,自动进行管理和恢复。具体过程包括:
- 节点进入 Bus-Off 状态时,开始一个冷却时间(通常是128个消息)。
- 在冷却期结束后,节点会自动重新尝试加入网络。
- 如果节点的通信正常且错误率降低,它将恢复正常状态,重新参与数据传输。
Automatic Wake-up Mode ,自动唤醒模式,低功耗—>检测到唤醒信号—>正常模式
Automatic Retransmission,自动重传机制,当节点检测到错误信号,就会重新传送
Receive FIFO locked mode ,接收FIFO 锁定模式
- FIFO机制,先入先出机制,FIFO 可以视为一个队列
- 当存入的消息量达到FIFO阈值,后来的消息被锁定,不被存入FIFO缓冲区,防止数据溢出
Transmit FIFO Priority 发送FIFO的极性,确保优先级高 的消息优先发送
TEST mode
在CAN协议或其他系统中,TEST Mode(测试模式)通常有四种主要类型,每种类型具有不同的功能和应用场景。以下是这四种模式的简要描述:
模式 | 描述 | 主要功能 | 应用场景 |
---|---|---|---|
常规模式 | 系统的标准测试状态,用于常规功能验证。 | 执行常规测试,验证功能和接口。 | 开发和基本功能测试。 |
循环模式 | 在测试中持续循环执行某些操作。 | 验证系统在长时间运行下的稳定性。 | 压力测试和长期稳定性测试。 |
静默模式 | 减少或消除输出信息的测试运行模式。 | 提高测试效率,专注于关键信息。 | 自动化测试和持续集成中。 |
基于静默的循环模式 | 在静默模式下进行循环测试。 | 结合两者优势,进行高效的长期测试。 | 性能测试和稳定性验证。 |
USB(2.0)
USB的引脚定义
+---------------------+
| USB 接头 |
| |
| 1: VCC (5V) |
| 2: D- |
| 3: D+ |
| 4: GND |
+---------------------+
D+和D-也是像CAN总线那样的差分信号
现代常用的接口和引脚定义
1. USB Type-A 接口引脚定义
lua
复制代码
+-------------------+
| 1 VCC |
| 2 D- |
| 3 D+ |
| 4 GND |
+-------------------+
引脚编号 | 功能 |
---|---|
1 | VCC (5V) |
2 | D- (数据线负) |
3 | D+ (数据线正) |
4 | GND (接地) |
2. USB Type-B (16引脚)接口引脚定义
引脚定义图
A
+---------+
1 | GND |
2 | VBUS |
3 | CC1 |
4 | D+ |
5 | D- |
6 | SBU1 |
7 | VBUS |
8 | GND |
+---------+
引脚名称 | 引脚意义 |
---|---|
GND | 地 |
VBUS | 供电引脚 |
CC1/CC2 | 配对和电源角色识别 |
D+ | USB 数据正信号 |
D- | USB 数据负信号 |
SBU1/SBU2 | 辅助信号引脚(可选) |
VBUS | 供电引脚 |
GND | 地 |