在电子产品开发选择单片机之前,我们先大致画一个框图,整理出整个系统所需的所有各种功能。将框图作为电子产品开发预设计的一部分,这样可以在开始设计实际原理图之前布局项目。
在单片机开发是有多个问题需要明确:什么需要连接到单片机?他们需要什么通信协议?需要多少个通用输入/输出(GPIO)引脚?需要多少个通信端口?
在选择单片机之前,需要这些信息。实际上可用的单片机单片机有很多,如果不想选择一款性能或功能过剩的单片机,这些前期的问题可以帮助你减少不必要工作量或预算。
另一方面,单片机开发人员也不希望用太有限的单片机来限制自己。你可能希望在未来添加新的产品功能,因此你需要一个合适的单片机,以便在必要时为你提供一点成长空间。
所以,我们需要更详细地了解单片机上一些最常见的功能和外设:
一、内存类型
RAM和FLASH存储器已内置于大多数单片机中。RAM内存用于临时数据存储。RAM被认为是易失性存储器,因为一旦电源关闭它就会丢失其内容。FLASH是非易失性存储器。即使关闭电源,它仍会保留其内容。FLASH主要用于存储程序(称为固件)。
EEPROM(电可擦除只读存储器)也是非易失性存储器,但它通常用于存储少量数据,例如配置和可变状态。EEPROM的优点是允许按字节擦除,而闪存仅允许擦除整个字节块或页面。
二、数字输入/输出(GPIO)
单片机上的数字输入和输出称为通用输入输出或GPIO。GPIO引脚是用于输入或输出的逻辑电平引脚(高或低)。它们通常可以驱动高达几十毫安的负载,但通常需要使用某种外部驱动电路来减轻驱动要求。此外,加在一起的所有引脚必须低于允许的最大总电流。
在决定使用哪些引脚时,请务必查阅单片机规格书,因为某些引脚上不提供许多内部功能。你还必须遵守特定的映射限制,映射意味着设置哪些引脚服务哪些功能。单片机上的大多数引脚具有多种可能的功能,可为硬件设计人员提供最大的灵活性。
三、模拟输入和输出
除了数字I/O,大多数单片机还可以精确测量模拟电压,有些还具有输出精确模拟电压的能力。模拟电压由单片机使用称为模数转换器(ADC)的嵌入式专用电路进行测量。
从单片机输出模拟电压有两种方法。最精确但更复杂的方法是使用数模转换器(DAC)电路。有许多单片机包含用于此目的的内置DAC,但许多单片机没有。大多数单片机上可用的第二种方法是使用脉宽调制(PWM)发生器。PWM是一种在高电平和低电平之间振荡的数字信号。单片机能够控制由固件程序确定的该信号高的时间百分比。PWM信号然后可以通过一个低通滤波器将其转换为模拟电压,通过控制PWM信号高与低的时间百分比,你可以准确地控制滤波器输出侧的模拟电压电平。
四、通用异步接收器发送器(UART)
今天仍在单片机中使用的最古老的串行通信方法称为UART,UART自1970年代初就已存在。顾名思义,UART是一种异步协议,意味着没有时钟信号来同步信号时序。UART的最简单形式仅使用两条信号线:接收(RX)和发送(TX)。
同步通信支持更快的数据传输速率。异步通信必须向数据添加同步位。发送这些额外的同步位会增加开销,因此会降低有效的数据传输速率。同步通信的缺点是它需要额外的时钟信号线。它还需要主/从配置,因为主设备必须是生成时钟信号的设备。
UART通常与其他标准(例如RS-232或RS-485)结合使用,以实现更远距离的外部串行通信。一些单片机上也提供称为USART的同步UART。
五、串行外设接口(SPI)
SPI是一种同步通信协议。它通常比UART或I2C接口快得多。SPI是一种全双工通信标准,这意味着它可以同时发送和接收数据。与UART一样,SPI仅用于短距离通信,这在大多数情况下意味着同一PCB上的芯片之间。
SPI由4条线组成,或者实际上是3条线加上每个外围设备的一条线。SPI信号是MISO(主入从出)和MOSI(主出从入)、SCLK(串行时钟)和SS(从选择)。可以将多个外围设备连接到单片机的SPI端口,但一次只能选择一个设备。SPI的主要优点是它的数据传输速度更快。SPI的主要缺点是需要4条信号线,而UART和I2C只需要2条信号线。
六、内部集成电路(I2C)
I2C是一种同步串行总线协议,用于同一板上组件之间的串行通信。I2C的主要优点是它只需要两根线,是同步的,并且与UART或SPI不同,I2C是一种总线协议。
成为真正的总线意味着I2C允许多个设备连接到相同的两条线。I2C为每个设备使用唯一的地址,而不是像SPI那样使用从设备选择信号。这一事实极大地简化了板载信号路由。
与SPI一样,I2C使用时钟信号来同步通信。但是,与SPI不同的是,I2C只是半双工,因此它对数据输入和数据输出使用单个信号。I2C不能同时在两个方向发送数据。这种简单性的代价是I2C比SPI慢得多。因此I2C主要用于连接不需要高数据传输速度的两个组件。它特别适用于连接传感器(相对较慢)。
七、通用串行总线(USB)
USB这种串行通信协议用的很多,USB是大多数单片机上可用的最快的串行通信协议,它通常用于在外设之间传输大量数据。