MCU
STM32
PIN脚
pin是针的意思,指引脚
gpio
GPIO(英语:General-purpose input/output),通用型之输入输出的简称
既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。
GPIO的优点(端口扩展器)
低功耗:GPIO具有更低的功率损耗(大约1μA,μC的工作电流则为100μA)。
集成IIC从机接口:GPIO内置IIC从机接口,即使在待机模式下也能够全速工作。
小封装:GPIO器件提供最小的封装尺寸 ― 3mm x 3mm QFN!
低成本:您不用为没有使用的功能买单。
快速上市:不需要编写额外的代码、文档,不需要任何维护工作。
灵活的灯光控制:内置多路高分辨率的PWM输出。
可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间。
更好的灯光效果:匹配的电流输出确保均匀的显示亮度。
布线简单:仅需使用2条就可以组成IIC总线或3条组成SPI总线。
串口(COM)
同步串行接口(英文:Synchronous Serial Interface,SSI)是一种常用的工业用通信接口。
异步串行是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包含TTL电平的串口和RS232电平的串口。 TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平,MDS2710、MDS SD4、EL805等是RS232接口,EL806有TTL接口。
TTL
TTL电平信号规定,+5V等价于逻辑“1”,0V等价于逻辑“0”(采用二进制来表示数据时)。这样的数据通信及电平规定方式,被称做TTL(晶体管晶体管逻辑电平)信号系统。这是计算机处理器控制的设备内部各部分之间通信的标准技术。
UART与USART都是单片机上的串口通信
其实USART是UART的增强型,只是比UART多了个同步功能,拥有独立的时钟驱动器,可以实现无延迟的数据传输。
tips
1、单工:数据传输是单向的。
2、半双工:可以在一个信号载体的两个方向上传输,但是不能同时传输。
3、全双工:可以同时在信号载体的两个方向传输。
UART
universal asynchronous receiver and transmitter 通用异步收/发器
usart (uart) 工作原理图
USART
USART:(Universal Synchronous/Asynchronous Receiver/Transmitter)
通用同步/异步串行接收/发送器
USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。
特点:
1. 全双工操作(相互独立的接收数据和发送数据);
2. 同步操作时,可主机时钟同步,也可从机时钟同步;
3. 独立的高精度波特率发生器,不占用定时/计数器;
4. 支持5、6、7、8和9位数据位,1或2位停止位的串行数据帧结构;
5. 由硬件支持的奇偶校验位发生和检验;
6. 数据溢出检测;
7. 帧错误检测;
8. 包括错误起始位的检测噪声滤波器和数字低通滤波器;
9. 三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;
10.支持多机通信模式;
11.支持倍速异步通信模式。
结构组成
USART收发模块一般分为三大部分:时钟发生器、数据发送器和接收器。控制寄存器为所有的模块共享。
时钟发生器由同步逻辑电路(在同步从模式下由外部时钟输入驱动)和波特率发生器组成。发送时钟引脚XCK仅用于同步发送模式下,
发送器部分由一个单独的写入缓冲器(发送UDR)、一个串行移位寄存器、校验位发生器和用于处理不同帧结构的控制逻辑电路构成。使用写入缓冲器,实现了连续发送多帧数据无延时的通信。
接收器是USART模块最复杂的部分,最主要的是时钟和数据接收单元。数据接收单元用作异步数据的接收。除了接收单元,接收器还包括校验位校验器、控制逻辑、移位寄存器和两级接收缓冲器(接收UDR)。接收器支持与发送器相同的帧结构,同时支持帧错误、数据溢出和校验错误的检测。
Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。
spi协议层面简单,IIC有数据传输方向换向过程,容易出事
IIC 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。
在数字通信协议簇中,IIC和SPI常称为“小”协议,相对Ethernet, USB, SATA, PCI-Express等传输速度达数百上千兆字节每秒的总线。但是,我们不能忘记的是各种总线的用途是什么。“大”协议是用于系统外的整个系统之间通信的,“小”协议是用于系统内各芯片间的通信,没有迹象表明“大”协议有必要取代“小”协议。IIC和SPI的存在和流行体现了“够用就好”的哲学。回应文首,IIC和SPI如此的流行,它是任何一位嵌入式工程师必备的工具。
LLC(l2c) (Inter-Integrated Circuit)
I2C能够1对多,UART只能1对1。因此I2C又叫I2C总线。
I2C接口能够用软件模拟来扩充接口,UART则不行。
I2C接口带有同步时钟,对时钟稳定性要求远没有UART那么高。
由此可见,I2C存在的最大原因在于简单且灵活性高。
I2C只能由CPU(主机)去找外设(从机)索取数据,外设不能主动发送数据给CPU。
但是CPU不能定期去问外设“你有没有数据要发给我?”,这样耗CPU的计算资源,也耗电,且无法进入睡眠状态。
因此需要外设有办法通知CPU,“我有数据要发了”。I2C配合的中断信号就是这个作用。外设有数据要发了,先发个中断给CPU,CPU再来通过I2C读取外设想要发过来的数据。
对于低功耗应用的场景、能够触发的外设场景,都需要这么来设计。例如电容触摸屏,平时CPU是休眠的,点击一下就唤醒系统。再例如G-Sensor运动传感器,一旦被晃动了就唤醒CPU。
SPI (Serial Peripheral Interface)
ab相
abz三相含义
编码器输出信号有abz三相,其中AB相是脉冲输出信号,Z相是圈数,AB两相相差90°,根据A超前于B还是滞后于B来判断旋转方向
A、B两个通道的信号一般是正交(即互差90°)脉冲信号;而Z相是零脉冲信号。
详细来说,就是一般编码器输出信号除A、B两相(A、B两通道的信号序列相位差为90度)外,每转一圈还输出一个零位脉冲Z。
motor
定时器
TIM定时器时钟
pwm
随着电子技术的发展,出现了多种脉冲宽度调制(Pulse width modulation,PWM)技术,其中包括:相电压控制PWM、脉宽PWM法、随机PWM、SPWM法、线电压控制PWM等,而在镍氢电池智能充电器中采用的脉宽PWM法,它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制充电电流的目的。
执行PWM操作之前,这种微处理器要求在软件中完成以下工作:
1、设置提供调制方波的片上定时器/计数器的周期
2、 在PWM控制寄存器中设置接通时间
3、设置PWM输出的方向,这个输出是一个通用I/O管脚
4、启动定时器
5、使能PWM控制器
模式
占空比
ARR,CCRx,CNT
元器件
舵机
电机
伺服电机
步进电机
C程序编码
如何调试