STM32启动流程:
1.内核初始化:从硬件启动到软件运行的复杂过程,涉及多层级的硬件适配和子系统激活,最终为用户空间程序提供可运行的环境
2.初始化SP、PC指针以及中断向量表
3.设置系统时钟
4.初始化堆栈并进入main函数
1、通信协议:
串行和并行:
- 串行:一位一位传输,数据线只有一根,更为常用
- 并行:多位同时传输,数据线有多根,通信速度快,浪费资源,线与线之间存在干扰
通信方式:
- 单工:只能由一个设备发送给另外一个设备,单向通信
- 全双工:一般都有两根数据线,收发数据线之间不相互影响,可以同时进行
- 半双工:一根数据线实现收发,收发不能同时进行
电平标准:
- TTL电平: 3.3/5 V表示1,0V表示0
- RS232电平:-3~-15V表示1,3~15V表示0
- RS485电平:两线电压差 2~6V表示1,-2~-6V表示0
1.串口
- 串口时钟使能:USART1由APB2ENR寄存器控制,其他串口使能都在APB1ENR寄存器,且APB2(72MHz)为APB1(36M)的两倍

USART:通用同步/异步收发器,但是同步中的时钟信号只支持输出,不支持输入
UART:通用异步收发器
USART 发送接收有三种基本方式:轮询、中断 和 DMA。
串口参数设置:主要是基于异步通信UART
- 波特率:收发方约定的数据传输速率,及串口通信的速率Bps(Baud/s)二进制下和bit/s相等
- 起始位:标志一个数据帧的开始,固定为低电平,产生下降沿表示数据传输开始
- 数据位:数据帧的有效位,1为高电平,0为低电平,低位先行(表示数据的低位先传输)
- 校验位:可有可无,用于数据验证,根据数据位计算(奇/偶校验,保证1的个数为奇数/偶数)
- CRC校验,相比奇偶校验有更高的检出率
- 停止位:用于数据帧间隔,固定为高电平

串口时钟在空闲时固定为高电平,收发数据时(先发低位再发高位),先出现下降沿的起始位,紧接着八位数据(可能再加一位校验位),最后有上升沿的停止位。
如果没有起始位,当数据为第一位为高时,无法判断串口是否工作(空闲时为高电平),同理停止收发数据时,电平拉高。
RS232、RS485:
基于串口,在硬件层面实现的电平协议
UART存在的问题:
- 只规定了时序,对电气连接未定义,如多少电压代表高电平,多少电压代表低电平,不同处理器的高低电平有所差异
- 抗干扰能力差,一般用TTL电平,传输容易出错
- 通信距离短
1.RS232
规定:逻辑1为-5v~-15v,逻辑1为5v~15v
提高抗干扰能力,传输距离可达15m,点对点通信
2.RS485
规定:两线电压差 2~6V表示1,-2~-6V表示0(差分信号),两线制是半双工,发送和收发都要用到两根线,由于是差分信号
抗干扰能力强,传输距离可达1500m,允许连接多个收发器,与TTL电平兼容
2.IIC通信:
串行、半双工、同步时序(对硬件电路不要求),带数据应答,支持总线挂载多设备
两根通信线:SCL(一根时钟线)、SDA(一根数据线)--半双工
硬件:所有设备SCL接在一起,所有SDA接在一起,多主机总线,同一时刻只有一个主机,从机只能被呼叫,每个连接在IIC上的设备有唯一的地址,7位地址
特点:低速率,近距离通信
主机发送的一个字节(8位)中高七位是从机的地址,最后一位代表方向(0表示主机向从机发数据,1代表从机给主机发数据),在发送过程中不允许改变通信方向
设备SCL和SDA配置为开漏输出模式(使得高电平驱动能力弱,IIC的标准模式只有100KHz)

时序单元:
SCL全程由主机控制
- 起始条件:SCL为高电平时,SDA从高到低(下降沿产生起始条件)主机发送
- 终止条件:SCL为高电平时,SDA从低到高(上升沿产生终止条件)主机发送
- 发送字节:SCL为低时,主机将数据放在SDA线上,从机在SCL高电平读取数据(高位先行,先发送高位数据)
- 接收字节:SCL为低时,从机将数据放在SDA线上,主机在SCL为高电平读取数据(主机接收数据前需要释放SDA线权)
- 发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,0表示应答,1表示非应答
- 接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,0表示应答,1表示非应答(主机在接收之前,需要释放SDA)

停止信号:1数据发送/接收完成且完成应答信号 2主机/从机没有收到ACK应答信号
没接收到应答信号的可能原因:
- 硬件连接,包括传感器虚焊、地址选择口有没有添加这些
- 软件部分,包括iic控制是否正常、传感器地址是否正确、速率匹配问题、是否符合iic协议等等
3.SPI通信
同步、全双工,传输速度快,设计简单粗暴,硬件开销大,支持总线挂载多设备,只支持一主多从模式
四根通信线:SCK、MOSI(主机输出从机输入)、MISO、SS(从机选择)
所有SPI设备的SCK、MOSI、MISO分别连在一起
主机引出SS线,分别连接在从机的SS引脚
输出引脚配置为推挽输出,输入引脚配置为浮空和上拉输入
4.CAN总线
Controller Area Network 控制器局域网络
CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km 时,CAN 仍可提供高达50Kbit/s 的数据传输速率。
1.CAN总线特征:UART和IIC的结合体,同时又拥有RS485的电平
- 两根通信线:CAN_H、CAN_L,无需共地(实际应用中会共地,不然收发器需要承受很高的共模电压)
- 差分信号通信,抗干扰能力强
- 高速CAN(ISO11898):125k~1Mbps,<40m,使用闭环网络
- 低速CAN(ISO11519):10k~125kbps,<1Km,使用开环网络
- 异步,与串口类似
- 半双工,挂载多设备时,多设备同时发送数据时通过仲裁判断先后顺序
- 11位/29位报文ID,用于区分消息功能,同时决定优先级(ID号小的优先发送)
- 一次可以发送1-8个字节的有效载荷
- 广播式和请求式两种传输方式
2.CAN总线硬件电路
3.CAN总线电平标准
- 高速CAN:电压差0V为逻辑1(隐性电平),电压差2V为逻辑0(显性电平)
- 低速CAN:电压差-1.5V为逻辑1(隐性电平),电压差3V为逻辑0(显性电平)
隐性:总线默认状态,两线收紧,无电压差
显性电平和隐性电平同时出现时,表现为显性电平
4.CAN总线帧格式
数据帧:广播式通信方式,发送设备主动发送数据,高位先行
遥控帧:请求式数据传输,需要借助数据帧,无数据段
5.接收方数据采样
CAN没有时钟线,设备通过约定波特率实现数据收发
2、独立看门狗(IWDG)

由内部的40kHz低速时钟驱动,即使主时钟发生故障,它也仍然有效,并不是准确的40Khz,而是 在30~60Khz 之间的一个可变化的时钟,只是我们在估算的时候,以40Khz的频率来计算,看 门狗对时间的要求不是很精确
主要设置:预分频系数prer和重装载值rlr
Tout=((4×2^prer) ×rlr) /32
其中Tout 为看门狗溢出时间(单位为ms); prer为看门狗时钟预分频值(IWDG_PR值), 范围为0~7;rlr为看门狗的重装载值(IWDG_RLR的值);
3、窗口看门狗

窗口看门狗之所以称为窗口,就是因为其喂狗时间是在一个有上下限的范围内(计数器减到某个值~计数器减到0x3F),在这个范围内才可以喂狗,可以通过设定相关寄存器,设定其上限时间(但是下限是固定的0x3F)


4、定时器
STM32F1共8个定时器
- 高级定时器:TIM1, TIM8
位于APB2总线
- 通用定时器:TIM2, TIM3, TIM4, TIM5
位于APB1总线
- 基本定时器: TIM6, TIM7
位于APB1总线
触发DAC同步电路
STM32串口时钟使能笔记
1897

被折叠的 条评论
为什么被折叠?



