AI算法半路出家的过程其实是有点痛苦的,告别了曾经熟悉的领域,在陌生又熟悉的道路上摸索着前进,其中的焦虑、彷徨以及面对信息过载的不知所措,常常让人怀疑当初的选择。好在,硬核人生不会被小小的困难劝退,我们有很多路径可以到达彼岸。也特别感谢科技和网络的进步,让知识的获取不再是少数人的专利。前些天找到了一个比较牛的AI学习网站,老师的授课方式风趣幽默,通俗易懂,让学习的过程兴趣盎然,忍不住推荐给大家。
点击跳转到网站
————————————————
最近在学习芯片知识以及编写系统规划文档时,发现对硬件知识的疏离常常会成为理解整体架构的瓶颈,从前那种大多从软件上理解系统的思路需要破除一下了。于是接下来会陆陆续续花一点时间,补齐一些基本的芯片硬件知识,以便为后续的工作打底。
今天先来扫盲一下常用的芯片外设。
1. UART
UART全称为Universal Asynchronous Receiver-Transmitter,通用异步接收-发射器,通常用于芯片与外部设备通信连接。嵌入式中说的串口,一般就是指UART口。嵌入式系统常常用UART口连接主机PC的COM口(或将UART转换为USB后连接主机的USB口)进行调试,这样便可以将嵌入式系统中的printf函数重定向打印至主机的显示屏。
UART的数据传输格式如下:
在传输过程中,在传输过程中,UART发送端将字节数据以串行方式逐个比特发送出去,接收端逐个比特接收数据,然后再将其重组为字节数据。UART传输速率用波特率(Baud Rate)衡量。
2. I2C
I2C全称为Inter-Integrated Circuit,集成电路互联总线,是MCU中常用的接口模块。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线,只需要两条总线线路:一条串行数据线SDA和一条串行时钟线SCL,支持双向通信。I2C的主要特性如下:
- 支持作为I2C的主设备向外部I2C从设备写数据或读数据;
- 支持产生发送或接受终端;
- 支持通过寄存器配置串行时钟线SCL的频率;
- 每个连接到总线的设备都可以使用唯一地址来识别;
- 真正的多主机总线,两个或多个主机同时发起数据传输时,可通过冲突检测和仲裁来防止数据被破坏。
3. I2S
I2S全称为Inter-IC Sound,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之间的数据传输,广泛应用于各种多媒体系统。该协议中,数据信号和时钟信号沿独立的导线传输,从而避免了由于时差引起的信号失真。
4. SPI
SPI全称Serial Peripheral Interface,串行外设接口,是MCU中常用的接口模块。SPI以主从方式工作,通常有一个主设备和一个或多个从设备,需要至少4根线(支持全双工方式)或3根线(支持半双工方式),分别为SDI(数据输入)、SDO(数据输出)、SCK(时钟)、CS(片选)。
5. GPIO
GPIO全称为General Purpose Input/Output,通用输入输出接口。每个I/O引脚均可直接受软件编程的可配置寄存器控制(软件控制模式),也可以直接受硬件接口信号控制(IOF模式),可作为CLK Generator、Chip Select等使用。
6. PWM
PWM全称为Pulse-Width Modulation,脉冲宽度调制,是MCU中的常用模块。PWM利用MCU的数字输出对模拟电路进行控制,广泛应用于测量、通信、功率控制与交换的多个领域中。
7. WDT
WDT全称为Watchdog Timer,也就是我们常说的“看门狗”,它是MCU中的常用模块。WDT是一个定时器电路,一般有一个输入,俗称“喂狗”,同时会有一个输出连接到MCU的全局复位端。MCU在正常工作时,每隔一段时间便会对WDT进行“喂狗”操作,如果超过规定的时间不“喂狗”(比如程序跑飞的时候),WDT就会触发定时超时,超时后会发送一个复位信号到MCU,使MCU全局复位,防止MCU死机。简而言之,看门狗的作用就是防止程序发生死循环或程序跑飞等错误情形。
8. RTC
RTC全称为Real-Time Clock,是MCU中的常用模块,大多采用精度较高的晶体振荡器作为时钟源。RTC通常在MCU系统中处于电源常开域,以固定不变的低速时钟运行,因此可以提供绝对精准的时间参考,所以被称为实时时钟。
9. PMU
PMU全称为Power Management Unit,电源管理控制单元,是MCU中的常用模块。PMU通常在MCU系统中处于电源常开域,控制MCU SoC其他部分电源的开闭,从而实现更高的电源转换效率和更低的功耗。
PS: 以上部分内容参考自胡振波的《RISC-V架构与嵌入式开发快速入门》