第3章 智能产品的通信技术与应用 本章讲述智能产品的通信技术与应用,包括串行通信基础、RS232C串行通信接口、RS485串行通信接口、蓝牙通信技术、ZigBee无线传感器网络和W601 WiFi MCU芯片及其应用实例。 3.1串行通信基础 在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。发送方依次逐位发送一串数据信号,按一定的约定规则为接收方所接收。由于串行端口通常只是规定了物理层的接口规范,所以为确保每次传送的数据报文能准确到达目的地,使每一个接收方能够接收到所有发向它的数据,必须在通信连接上采取相应的措施。 由于借助串行端口所连接的设备在功能、型号上往往互不相同,其中大多数设备除了等待接收数据之外还会有其他任务。例如,一个数据采集单元需要周期性地收集和存储数据; 一个控制器需要负责控制计算或向其他设备发送报文; 一台设备可能会在接收方正在进行其他任务时向它发送信息。必须有能应对多种不同工作状态的一系列规则保证通信的有效性。这里所讲的保证串行通信有效性的方法包括: 使用轮询或者中断检测、接收信息; 设置通信帧的起始位、停止位; 建立连接握手; 实行对接收数据的确认、数据缓存以及错误检查等。 3.1.1串行异步通信数据格式 无论是RS232还是RS485,均可采用串行异步通信数据格式。 在串行端口的异步传输中,接收方一般事先并不知道数据会在什么时候到达。在它检测到数据并作出响应之前,第一个数据位就已经过去。因此每次异步传输都应该在发送数据之前设置至少一个起始位,以通知接收方有数据到达,给接收方准备接收数据、缓存数据和作出其他响应所需要的时间。而在传输过程结束时,则应由一个停止位通知接收方本次传输过程已终止,以便接收方正常终止本次通信而转入其他工作程序。 通用异步接收发送设备(Universal Asynchronous Receiver/Transmitter,UART)通信数据格式如图31所示。 图31通用异步接收发送设备(UART)通信数据格式 若通信线上无数据发送,该线路应处于逻辑1状态(高电平)。当计算机向外发送一个字符数据时,应先送出起始位(逻辑0,低电平),随后紧跟着数据位,这些数据构成要发送的字符信息。有效数据位的个数可以规定为5、6、7或8。奇偶校验位视需要设定,紧跟其后的是停止位(逻辑1,高电平),其位数可在1、1.5、2中选择其一。 3.1.2连接握手 通信帧的起始位可以引起接收方的注意,但发送方并不知道,也不能确认接收方是否已经做好了接收数据的准备。利用连接握手可以使收发双方确认已经建立了连接关系,接收方已经做好准备,可以进入数据收发状态。 连接握手过程是指发送方在发送一个数据块之前使用一个特定的握手信号来引起接收方的注意,表明要发送数据,接收方则通过握手信号回应发送方,说明它已经做好了接收数据的准备。 连接握手可以通过软件,也可以通过硬件来实现。在软件连接握手中,发送方通过发送一个字节表明它想要发送数据。接收方看到这个字节的时候,也发送一个编码来声明自己可以接收数据,当发送方看到这个信息时,便知道它可以发送数据。接收方还可以通过另一个编码告诉发送方停止发送。 在普通的硬件握手方式中,接收方在准备好了接收数据的时候将相应的导线带入高电平,然后开始全神贯注地监视它的串行输入端口的允许发送方。这个允许发送方与接收方的已准备好接收数据的信号端相连,发送方在发送数据之前一直在等待这个信号的变化。一旦得到信号说明接收方已处于准备好接收数据的状态,便开始发送数据。接收方可以在任何时候将这根导线带入低电平,即便是在接收一个数据块的过程中间也可以把这根导线带入低电平。当发送方检测到这个低电平信号时,就应该停止发送。而在完成本次传输之前,发送方还会继续等待这根导线再次回到高电平,以继续被中止的数据传输。 3.1.3确认 接收方为表明数据已经收到而向发送方回复信息的过程被称为确认。有的传输过程可能会收到报文而不需要向相关节点回复确认信息。但是在许多情况下,需要通过确认告知发送方数据已经收到。有的发送方需要根据是否收到确认信息来采取相应的措施,因而确认对于某些通信过程是必需的和有用的。即便接收方没有其他信息要告诉发送方,也要为此单独发一个确认数据已经收到的信息。 确认报文可以是一个特别定义过的字节,如一个标识接收方的数值。发送方收到确认报文就可以认为数据传输过程正常结束。如果发送方没有收到所希望回复的确认报文,它就认为通信出现了问题,然后将采取重发或者其他行动。 3.1.4中断 中断是一个信号,它通知CPU有需要立即响应的任务。每个中断请求对应一个连接到中断源和中断控制器的信号。通过自动检测端口事件发现中断并转入中断处理。 许多串行端口(串口)采用硬件中断。在串口发生硬件中断,或者一个软件缓存的计数器到达一个触发值时,表明某个事件已经发生,需要执行相应的中断响应程序,并对该事件做出及时的反应,这种过程也被称为事件驱动。 采用硬件中断就应该提供中断服务程序,以便在中断发生时让它执行所期望的操作。很多微控制器为满足这种应用需求而设置了硬件中断。在一个事件发生的时候,应用程序会自动对端口的变化做出响应,跳转到中断服务程序。例如,发送数据、接收数据、握手信号变化、接收到错误报文等,都可能成为串行端口的不同工作状态,或成为通信中发生了不同事件,需要根据状态变化停止执行现行程序而转向与状态变化相适应的应用程序。 外部事件驱动可以在任何时间插入并且使得程序转向执行一个专门的应用程序。 3.1.5轮询 通过周期性地获取特征或信号读取数据或发现是否有事件发生的工作过程被称为轮询。它需要足够频繁地轮询端口,以便不遗失任何数据或者事件。轮询的频率取决于对事件快速反应的需求以及缓存区的大小。 轮询通常用于计算机与I/O端口之间较短数据或字符组的传输。由于轮询端口不需要硬件中断,因此可以在一个没有分配中断的端口运行此类程序。很多轮询使用系统计时器确定周期性读取端口的操作时间。 3.1.6差错检验 数据通信中的接收方可以通过差错检验来判断所接收的数据是否正确。冗余数据校验、奇偶校验、校验和、循环冗余校验等都是串行通信中常用的差错检验方法。 3.2RS232C串行通信接口 RS232C标准(协议)的全称是EIARS232C标准,定义是“数据终端设备(Data Terminal Equipment,DTE)和数据通信设备(Data Communication Equipment,DCE)之间串行二进制数据交换接口技术标准”。它是在1970年由美国电子工业协会(Electronic Industry Association,EIA)联合贝尔系统、调制解调器厂商及计算机终端生产厂商共同制定的用于串行通信的标准。其中EIA代表美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改。 3.2.1RS232C端子 RS232C的连接插头用9针的EIA连接插座,如图32所示,其主要端子分配如表31所示。 图329针的EIA连接(DB9)插座 表31RS232C主要端子 端脚方向符号功能 3输出TXD发送数据 2输入RXD接收数据 7输出RTS请求发送 8输入CTS为发送清零 6输入DSR数据设备准备好 5GND信号地 1输入DCD 4输出DTR 9输入RI数据信号检测 1. 信号含义 1) 从计算机到MODEM的信号 DTR——数据终端设备(DTE)准备好: 告诉MODEM计算机已接通电源,并准备好。 RTS——请求发送: 告诉MODEM现在要发送数据。 2) 从MODEM到计算机的信号 DSR——数据通信设备(DCE)准备好: 告诉计算机MODEM已接通电源,并准备好。 CTS——为发送清零: 告诉计算机MODEM已做好了接收数据的准备。 DCD——数据信号检测: 告诉计算机MODEM已与对端的MODEM建立连接。 RI——振铃指示器: 告诉计算机对端电话已在振铃。 3) 数据信号 TXD——发送数据。 RXD——接收数据。 2. 电气特性 RS232C的电气线路连接如图33所示。 图33RS232C的电气线路连接 接口为非平衡型,每个信号用一根导线,所有信号回路共用一根地线。信号速率限定于20kb/s内,电缆长度限定于15m之内。由于是单线,线间干扰较大。其电性能用±12V标准脉冲。值得注意的是RS232C采用负逻辑。 在数据线上: 传号Mark=-5~-15V,为逻辑1电平; 空号Space=+5~+15V,为逻辑0电平。在控制线上: 通On=+5~+15V,为逻辑0电平; 断Off=-5~-15V,为逻辑1电平。 RS232C的逻辑电平与TTL电平不兼容,为了与TTL器件相连必须进行电平转换。 由于RS232C采用电平传输,在通信速率为19.2kb/s时,其通信距离只有15m。若要延长通信距离,必须以降低通信速率为代价。 3.2.2通信接口的连接 当两台计算机经RS232C接口直接通信时,两台计算机之间的联络线可用图34表示。虽然不接MODEM,图中仍连接着有关的MODEM信号线,这是由于INT 14H中断使用这些信号,假如程序中没有调用INT 14H,在自编程序中也没有用到MODEM的有关信号,两台计算机直接通信时,只连接2、3、7(25针EIA)或3、2、5(9针EIA)就可以。 图34不使用MODEM信号的RS232C接口 3.2.3RS232C电平转换器 为了实现采用+5V供电的TTL和CMOS通信接口电路能与RS232C标准接口连接,必须进行串行口的输入/输出信号的电平转换。 目前常用的电平转换器有MOTOROLA公司生产的MC1488驱动器、MC1489接收器,TI公司的SN75188驱动器、SN75189接收器及美国MAXIM公司生产的单一+5V电源供电、多路RS232驱动器/接收器,如MAX232A等。 MAX232A内部具有双充电泵电压变换器,把+5V变换成±10V,作为驱动器的电源,具有两路发送器及两路接收器,使用相当方便。MAX232A外形和引脚如图35所示,典型应用如图36所示。 图35MAX232A外形和引脚 图36MAX232A典型应用 单一+5V电源供电的RS232C电平转换器还有TL232、ICL232等。 3.3RS485串行通信接口 RS485串行通信接口组成的半双工网络,一般是两线制(以前有四线制接法,只能实现点对点的通信方式,现很少采用),多采用屏蔽双绞线传输。这种接线方式为总线式拓扑结构在同一总线上最多可以挂接32个节点。在RS485通信网络中一般采用主从通信方式,即一个主机带多个从机。在很多情况下,连接RS485通信链路时只是简单地用一对双绞线将各个接口的A、B端连接起来。 由于RS232C通信距离较近,当传输距离较远时,可采用RS485串行通信接口。 3.3.1RS485接口标准 RS485接口采用二线差分平衡传输,其信号定义如下。 当采用+5V电源供电时: (1) 若差分电压信号为-2500~-200mV时,则为逻辑0; (2) 若差分电压信号为+2500~+200mV时,则为逻辑1; (3) 若差分电压信号为-200~+200mV时,则为高阻状态。 RS485的差分平衡电路如图37所示。其一根导线上的电压是另一根导线上的电压值取反。接收器的输入电压为这两根导线电压的差值VA-VB。 图37RS485的差分平衡电路 RS485实际上是RS422的变形。RS422采用两对差分平衡线路; 而RS485只用一对。差分电路的最大优点是抑制噪声。由于在它的两根信号线上传递着大小相同、方向相反的电流,而噪声电压往往在两根导线上同时出现,一根导线上出现的噪声电压会被另一根导线上出现的噪声电压抵消,因而可以极大地削弱噪声对信号的影响。 差分电路的另一个优点是不受节点间接地电平差异的影响。在非差分(即单端)电路中,多个信号共用一根接地线,长距离传输时,不同节点接地线的电平差异可能相差好几伏,甚至会引起信号的误读。差分电路则完全不会受到接地电平差异的影响。 RS485价格比较低,能够很方便地添加到一个系统中,还支持比RS232更长的距离、更快的速度以及更多的节点。RS232C、RS422、RS485主要技术参数的比较如表32所示。 表32RS232C、RS422、RS485的主要技术参数 规范RS232CRS422RS485 最大传输距离15m1200m(速率100kb/s)1200m(速率100kb/s) 最大传输速率20kb/s10Mb/s(距离12m)10Mb/s(距离12m) 驱动器最小输出/V±5±2±1.5 驱动器最大输出/V±15±10±6 接收器敏感度/V±3±0.2±0.2 续表 最大驱动器数量1132个单位负载 最大接收器数量11032个单位负载 传输方式单端差分差分 可以看到,RS485更适用于多台计算机或带微控制器的设备之间的远距离数据通信。 应该指出的是,RS485标准没有规定连接器、信号功能和引脚分配。要保持两根信号线相邻,两根差动导线应该位于同一根双绞线内。引脚A与引脚B不要调换。 3.3.2RS485收发器 RS485收发器的种类较多,如MAXIM公司的MAX485,德州仪器公司的SN75LBC184、SN65LBC184,高速型SN65ALS1176等。它们的引脚是完全兼容的,其中SN65ALS1176主要用于高速应用场合,如PROFIBUSDP现场总线等。下面仅介绍SN75LBC184。 SN75LBC184为具有瞬变电压抑制的差分收发器,SN75LBC184为商业级,其工业级产品为SN65LBC184。SN75LBC184外形和引脚如图38所示。 图38SN75LBC184外形和引脚 引脚介绍如下: R: 接收端。 RE: 接收使能,低电平有效。 DE: 发送使能,高电平有效。 D: 发送端。 A: 差分正输入端。 B: 差分负输入端。 VCC: +5V电源。 GND: 地。 SN75LBC184和SN65LBC184具有如下特点。 (1) 具有瞬变电压抑制能力,能防雷电和抗静电放电冲击。 (2) 限斜率驱动器,使电磁干扰减到最小,并能减少传输线终端不匹配引起的反射。 (3) 总线上可挂接64个收发器。 (4) 接收器输入端开路故障保护。 (5) 具有热关断保护。 (6) 低禁止电源电流,最大为300μA。 (7) 引脚与SN75176兼容。 3.3.3应用电路 RS485应用电路如图39所示。 图39RS485应用电路 在图39中,RS485收发器可为SN75LBC184、SN65LBC184、MAX485等。当P10为低电平时,接收数据; 当P10为高电平时,发送数据。 如果采用RS485组成总线拓扑结构的分布式测控系统,在双绞线终端应接120Ω的终端电阻。 3.3.4RS485网络互连 利用RS485接口可以使一个或者多个信号发送器与接收器互连,在多台计算机或带微控制器的设备之间实现远距离数据通信,形成分布式测控网络系统。 1. RS485的半双工连接 在大多数应用条件下,RS485的端口连接采用半双工通信方式。多个驱动器和接收器共享一条信号通路。图310为RS485端口半双工连接的电路图。其中RS485差动总线收发器采用SN75LBC184。 图310RS485端口半双工连接的电路图 图310中的两个120Ω电阻是作为总线的终端电阻存在的。当终端电阻等于电缆的特征阻抗时,可以削弱甚至消除信号的反射。 特征阻抗是导线的特征参数,它的数值随着导线的直径、在电缆中与其他导线的相对距离以及导线的绝缘类型而变化。特征阻抗值与导线的长度无关,一般双绞线的特征阻抗值为100~150Ω。 RS485的驱动器必须能驱动32个单位负载加上一个60Ω的并联终端电阻。总的负载包括驱动器、接收器和终端电阻,不低于54Ω。图中两个120Ω电阻的并联值为60Ω,32个单位负载中接收器的输入阻抗会使得总负载略微降低; 而驱动器的输出与导线的串联阻抗又会使总负载增大。最终需要满足不低于54Ω的要求。 还应该注意的是,在一个半双工连接中,同一时间内只能有一个驱动器工作。如果发生两个或多个驱动器同时启用,一个企图使总线上呈现逻辑1,另一个企图使总线上呈现逻辑0,则会发生总线竞争,在某些元件上就会产生大电流。因此所有RS485的接口芯片上都必须包括限流和过热关闭功能,以便在发生总线竞争时保护芯片。 2. RS485的全双工连接 尽管大多数RS485的连接是半双工的,但也可以形成全双工RS485连接。图311(a)和图311(b)分别表示两点和多点之间的全双工RS485连接。在全双工连接中信号的发送和接收方向都有它自己的通路。在全双工、多节点连接中,一个节点可以在一条通路上向所有其他节点发送信息,而在另一条通路上接收来自其他节点的信息。 图311RS485端口的全双工连接 两点之间全双工连接的通信在发送和接收上都不会存在问题。但当多个节点共享信号通路时,需要以某种方式对网络控制权进行管理,这是在全双工、半双工连接中都需要解决的问题。 RS232C和RS485之间的转换可采用相应的转换模块,RS232转RS485模块如图312所示。 图312RS232转RS485模块 3.4蓝牙通信技术 互联网得以快速发展的关键之一是解决了“最后一公里”的问题,物联网得以快速发展的关键之一是解决了“最后一百米”的问题。在“最后一百米”的范围内,可连接的设备密度远远超过了“最后一公里”,特别是在智能家居、智慧城市、工业物联网等领域。围绕着物联网“最后一百米”的技术解决方案,业界提出了多种中短距离无线标准,随着技术的不断进步,这些无线标准在向实用落地中不断迈进。低功耗蓝牙的标准始终在围绕物联网发展的需求而不断升级迭代,自蓝牙4.0开始,蓝牙技术进入低功耗蓝牙时代,在智能可穿戴设备领域,低功耗蓝牙已经是应用最广泛的技术标准之一,并在消费物联网领域大获成功。低功耗蓝牙在点对点、点对多点、多角色、长距离通信、复杂Mesh(网格)网络、蓝牙测向等方面不断增加的新特性,低功耗蓝牙标准在持续拓展物联网的应用场景及边界,获得了令人瞩目的发展。 从低功耗蓝牙4.0到5.3,低功耗蓝牙5.x是最重要的版本,越来越多的开发者开始把目光投向低功耗蓝牙5.x。 Nordic推出了采用双核处理器架构的无线多协议SoC芯片nRF5340,该芯片不仅支持低功耗蓝牙5.x,还支持蓝牙Matter、Mesh、ZigBee、Thread、IEEE 802.15.4、ANT、NFC等协议和2.4GHz私有协议,使得采用nRF5340开发的产品具有极高的灵活性和平台通用性。对于物联网开发人员而言,选择一个好的平台是十分重要的,好的平台可以使开发的产品具备更高的灵活性,并提供了进行创新的基础与支撑条件,使开发的产品在无线通信可靠性、功耗效率和用户体验等方面得到重要提升。 3.4.1蓝牙通信技术概述 蓝牙是一种支持设备短距离(一般10m内)通信的无线电技术,能在包括移动电话、掌上电脑(Personal Digital Assistant,PDA)、无线耳机、笔记本电脑、相关外设等设备之间进行无线信息交换。利用蓝牙技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网(Internet)之间的通信,从而使数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的3.4GHz ISM(即工业、科学、医学)频段,其数据速率为1Mb/s。采用时分双工传输方案实现全双工传输。 下面讲述蓝牙通信技术的发展及蓝牙1.0到蓝牙5.0的阶段变化。 1. 蓝牙的由来 蓝牙自20世纪末诞生以来,就被赋予了连接的使命,从音频传输、图文传输、视频传输,发展到以低功耗为主的智能物联网传输,蓝牙创新应用的场景变得越来越广阔。据蓝牙联盟预测,到2025年,蓝牙设备的出货量将超过60亿。 蓝牙(Bluetooth)一词取自10世纪丹麦国王哈拉尔的名字——Harald Bluetooth。传说哈拉尔国王特别喜欢吃蓝莓,甚至吃得牙齿都变成蓝色了,因而当时人们把这位国王的牙齿称为蓝牙。 1996年,英特尔、诺基亚、爱立信等公司都在短距离无线技术领域进行了研究。英特尔研究“商业无线”的项目,爱立信研究“MCLink”网络,而诺基亚研究“低功耗无线”项目。在这种情况下,与3个或更多个的独立标准相比,有一个统一的标准显然是更好的选择,并且更容易在市场上取得成功。因此,这些利益相关方聚在一起,成立了特别兴趣小组(SIG),以制定一个共同的标准。 1997年夏天,英特尔的吉姆·卡尔达奇和爱立信的斯文·马蒂森一起去了一家酒吧。在酒吧里,他们开始谈论历史,斯文·马蒂森说他最近读完了《长船》,该书讲述的是丹麦国王哈拉尔·戈尔姆森的统治。吉姆·卡尔达奇回家后读了一本名叫《维京人》的书,在这本书中,他更多地了解了当时的国王是如何统一斯堪的纳维亚半岛的。后来,吉姆·卡尔达奇建议特别兴趣小组(SIG)的名称就叫蓝牙特别兴趣小组(Bluetooth SIG),通常也将蓝牙特别兴趣小组称为蓝牙联盟。 2007年,吉姆·卡尔达奇在一篇专栏文章中写道: 蓝牙的名称是从10世纪丹麦国王Harald Bluetooth的名字中借鉴来的; 哈拉尔因统一斯堪的纳维亚半岛而闻名,正如我们打算用短距离无线技术的统一标准将个人计算机和手机连接起来一样。 这就是蓝牙名字的由来,蓝牙成为统一的通用传输标准——将所有分散的设备与内容互联互通。蓝牙的LOGO来自后弗萨克文的字母组合,将国王Harald Bluetooth名字的首字母H和B对应后弗萨克文的字母拼在一起,构成了大家熟知的蓝色LOGO“”。 1999年5月20日,爱立信、IBM、英特尔、诺基亚及东芝等公司创立了蓝牙特别兴趣小组(Special Interest Group,SIG),也称为蓝牙技术联盟或蓝牙联盟。 蓝牙联盟既不生产、也不出售蓝牙设备,其主要任务是发布蓝牙规范,进行资格管理,保护蓝牙商标,推广蓝牙技术。来自蓝牙联盟的成员在蓝牙技术的发展中扮演重要的角色。 2. 经典蓝牙(Classic Bluetooth)阶段: 从蓝牙1.0到蓝牙3.0 (1) 第一代蓝牙: 关于蓝牙早期的探索。 1999年: 蓝牙1.0。 蓝牙1.0不仅存在很多问题,产品的兼容性也不好,而且蓝牙设备还十分昂贵,因此蓝牙1.0推出以后,蓝牙技术并未得到广泛的应用。 2003年: 蓝牙1.2。 针对蓝牙1.0的安全问题,蓝牙1.2完善了匿名方式,可以保护用户免受身份嗅探攻击和跟踪。此外,蓝牙1.2还增加了4项新功能: 适应性跳频(Adaptive Frequency Hopping,AFH)功能,可减少蓝牙产品与其他无线通信装置之间的干扰问题; 延伸同步连接导向频道(Extended Synchronous ConnectionOriented links,ESCO)功能,可提供服务质量(Quality of Service,QoS)的音频传输,进一步满足高阶语音与音频产品的需求; 快速连接(Faster Connection,FS)功能,可缩短重新搜索与再连接的时间,使连接过程变得更加稳定快速; 支持Stereo音效的传输要求,但只能以单工方式工作。 (2) 第二代蓝牙: 蓝牙进入实用阶段。 2004年: 蓝牙2.0。 蓝牙2.0是蓝牙1.2的改良版,蓝牙设备的传输速率可达3Mb/s,蓝牙2.0支持双工模式。 2007年: 蓝牙2.1。 蓝牙2.1改善了蓝牙设备的配对体验,同时提升了使用和安全强度,可以支持近场通信(Near Field Communication,NFC)配对,无须手动输入。 (3) 第三代蓝牙: 高速蓝牙,传输速率可高达24Mb/s。 2009年: 蓝牙3.0。 蓝牙3.0新增了可选High Speed功能,该功能可以使蓝牙通过IEEE 802.11的物理层实现高速数据传输,传输速率高达24Mb/s,是蓝牙2.0的8倍。 3. 低功耗蓝牙与经典蓝牙并存的阶段: 从蓝牙4.0开始 在过去的十年中,低功耗蓝牙(Bluetooth Low Energy,BLE)以一种新的方式发展起来,从第一款配备低功耗蓝牙的智能手机可连接非常简单的配件,到现在已经可以连接更先进的设备。 如今,低功耗蓝牙已成为人机接口设备(Human Interface Device,HID)键盘/鼠标、平板电脑手写笔、多种训练设备,以及健康医疗设备中不可或缺的一部分。智能灯泡、热能控制和工业控制等通过采用低功耗蓝牙技术,可以有效减少能源消耗,为推动低碳节能提供帮助。卫生部门通过基于低功耗蓝牙的智能脉搏血氧饱和度仪和智能体温计来监测患者,为健康与救助生命助力。 蓝牙联盟于2010年发布了蓝牙4.0,蓝牙4.0由经典蓝牙和低功耗蓝牙两个部分组成。 (1) 为什么会出现低功耗蓝牙。 经过多年的发展,蓝牙技术和产品已经广泛应用于消费电子领域,日常所使用的手机都已内置了蓝牙。经典蓝牙可以满足传输音频、图片及文件等应用场景的需求,对于更多需要低功耗、多连接的应用场景却有心无力。 在低功耗蓝牙出现以前,不少运动健康类的产品使用的是传统蓝牙技术,但蓝牙2.1或者3.0的耗电是个难以规避的问题,这些产品只能持续工作一天至数天,特别是对于那些采用纽扣电池供电的运动健康类产品及可穿戴设备,尽管有很好的创意,但由于必须经常更换电池或充电,实际使用效果和用户体验均不理想,我们也很少看到传统蓝牙在这方面有成功的应用。 低功耗蓝牙技术就是在这种需求的推动下应运而生的。 (2) 低功耗蓝牙的起源。 低功耗蓝牙的前身是诺基亚、北欧半导体(Nordic Semiconductor,简称为Nordic)、颂拓(Suunto)等公司于2006年发起的致力于超低功耗应用的Wibree技术联盟。低功耗蓝牙是一项专为移动设备开发的功耗极低的移动无线通信技术,其目的是开发与蓝牙互补的低功耗应用,并希望凭借低功耗的优势,除了在智能手机,还在智能手表、无线PC外设、运动和医疗设备,甚至儿童玩具上获得广泛应用。 上述3家公司都是相关领域中的领先者: 诺基亚当时在手机领域有巨大的影响力; Nordic专注于低功耗无线芯片的设计; 颂拓是专业的运动手表厂商。这3家公司形成了良好的应用基础和生态。 Wibree技术联盟的发展引起了蓝牙联盟的关注。蓝牙联盟已经认识到低功耗无线应用的巨大潜力,也一直希望得到低功耗无线技术,因此蓝牙联盟和Wibree技术联盟最终走到了一起,Wibree技术联盟于2007年并入蓝牙联盟,作为蓝牙技术的扩展,相关技术成为蓝牙规范的组成部分,被称为低功耗蓝牙技术。 蓝牙4.0的芯片模式分为单模(Single Mode)与双模(Dual Mode)两种。单模只能与蓝牙4.0交互,无法与蓝牙3.0/2.1/2.0向下兼容,仅支持与低功耗蓝牙设备的连接; 双模可以向下兼容蓝牙3.0/2.1/2.0,通常智能手机、平板电脑、计算机等设备会采用双模的蓝牙芯片,以便与低功耗蓝牙设备和传统蓝牙设备进行交互。 单模主要面向高集成、低数据量、低功耗的应用场景,具有快速连接、可靠的点对多点数据传输、安全的加密连接等特性。本书主要探讨低功耗蓝牙的单模应用。 4. 低功耗蓝牙的物联网阶段: 从低功耗蓝牙5.0开始 低功耗蓝牙5.0及后续版本围绕着物联网的应用场景持续发展和迭代。 1) 低功耗蓝牙5.0简介 低功耗蓝牙5.0是在2016年推出的,开启了“物联网时代”大门,低功耗蓝牙5.0具备更快、更远的传输能力。 (1) 低功耗蓝牙5.0的PHY(物理层)传输速率是低功耗蓝牙4.2的2倍,低功耗蓝牙4.2的PHY传输速率的上限是1Mb/s,低功耗蓝牙5.0的PHY传输速率为2Mb/s。 (2) 低功耗蓝牙5.0的有效通信距离是低功耗蓝牙4.2的4倍。低功耗蓝牙5.0除了在硬件上支持LE 1M PHY和LE 2M PHY,还支持两种编码方式的PHY(LE Coded PHY)。这两种编码方式的PHY使用的是LE 1M PHY的物理通道,一种是500kb/s(S=2)的LE Coded PHY,另一种是125kb/s(S=8)的LE Coded PHY。LE Coded PHY的数据包类型和LE 1M PHY、LE 2M PHY数据包类型略有不同,增加了编码指示(Coding Indicator,CI)和TERM1、TERM2。CI和TERMM1/2构成了前向纠错(Forward Error Correction,FEC),发射端在发送码元序列中加入差错控制码元,接收端不但能发现错码,还能将错码恢复其正确取值,是一种增加数据通信可信度的方法,从而提高了接收灵敏度和有效通信距离。 在低功耗蓝牙4.2及以前的版本中,低功耗蓝牙在无线传输中均未使用FEC,蓝牙协议规定的基准接收灵敏度为-70dBm(实际上每一家蓝牙芯片厂商都可以做到-90dBm)。低功耗蓝牙从5.0开始引入了卷积前向纠错编码(Convolutional Forward Error Correction Coding),这不仅提高了接收端的抗干扰能力,将接收端的基准接收灵敏度提高到了-75dBm,还提高了接收端的载干比(Carrier/Interference,C/I),载干比是指载波信号强度/干扰信号强度,在发射功率不变的情况下,可以将有效通信距离提高到低功耗蓝牙4.2的4倍。 (3) 低功耗蓝牙5.0的广播数据包容量是低功耗蓝牙4.2的8倍。在低功耗蓝牙4.2中,广播是在40个2.4GHz的工业、科学和医学(Industrial,Scientific and Medical,ISM)频道中的3个频道(第37、38和39个频道)上进行的。在低功耗蓝牙5.0中,将40个2.4GHz的ISM频道分为两组广播频道,即主(Primary)广播频道(第37、38和39个频道)和次(Secondary)广播频道(其他频道),广播可在所有的频道上进行。按照低功耗蓝牙4.0的定义,广播有效载荷最多为31B。而在低功耗蓝牙5.0中,通过添加额外的广播频道(次广播频道)和新的广播协议数据单元(Protocol Data Unit,PDU),将有效载荷的上限提高到255B,从而大幅提升了广播数据的传输量,使得设备能够在广播数据包中传输更多的数据,为面向非连接应用提供了更高的灵活性,提供更为丰富的应用场景。 2) 低功耗蓝牙5.1简介 2019年,蓝牙联盟正式推出了低功耗蓝牙5.1,引入了业界期待已久的寻向功能。通过寻向功能,可以侦测蓝牙信号的方向,实现厘米级的实时定位,不仅为室内定位的实现提供了一个解决方案,还为优化物联网的应用提供了多项新特性。 3) 低功耗蓝牙5.2简介 2019年12月,蓝牙联盟发布了新版本的蓝牙核心规范(Bluetooth Core Specification)——低功耗蓝牙5.2、针对低功耗蓝牙5.1、低功耗蓝牙5.2增加了3个新功能: 增强型属性协议(Enhanced Attribute Protocol,EATT)、LE功率控制(LE Power Control)和LE同步频 道(LE Isochronous Channel)。 LE功率控制有以下优点。 (1) 通过在连接设备之间进行动态功率管理,降低发射端的总功耗。 (2) 通过控制接收端信号强度,使其保持在接收端的最佳范围内,从而提高可靠性。 (3) 与环境中使用2.4GHz频率的其他无线设备共存,减少相互间的干扰。这一优点对所有工作于相同频段的设备都有帮助,而不仅仅是低功耗蓝牙设备。 LE功率控制的应用场景如下。 (1) 调整设备的发射功率并通知对方。 (2) 基于双方设备可接受的功率最佳值,调整自己的发射功率。 (3) 监控链路的路径损耗(Path Loss)。在这种应用场景中,可以使低功耗蓝牙设备既能保证通信质量,又能使功耗最小化,还能尽可能减少其对周边设备无线电环境的干扰与影响。 4) 低功耗蓝牙5.3简介 2021年7月,蓝牙联盟发布了最新版本的蓝牙核心规范5.3,这个新版本引入了两项增强功能和一项新功能。引入的增强功能包括周期广播增强(Periodic Advertising Enhancement)功能和频道分类增强(Channel Classification Enhancement)功能; 引入的新功能是连接分级(Connection Subrating)功能。这些功能进一步提高了低功耗蓝牙的通信效率、降低了功耗、提高了无线共存性,使低功耗蓝牙设备的可靠性、能源效率和用户体验等得到了显著的改善。 3.4.2无线多协议SoC芯片 SoC芯片是一种集成电路的芯片,可以有效地降低电子/信息系统产品的开发成本,缩短开发周期,提高产品的竞争力,是未来工业界将采用的最主要的产品开发方式。下面讲述无线多协议SoC芯片。 1. 无线多协议SoC芯片简介 Nordic是中短距离无线应用的领跑者,是低功耗蓝牙技术和标准的创始者之一,其超低功耗无线技术已成为业界的标杆。按照产品发展的脉络,Nordic的低功耗蓝牙芯片分为nRF51系列、nRF52系列、nRF53系列。 (1) nRF51系列芯片是Nordic早期推出的SoC芯片,采用Arm CortexM0内核处理器架构,支持低功耗蓝牙4.0及以上的特性,由于性能稳定、性价比高,目前在市面上还有较多客户在使用,该系列的代表芯片是nRF51822。 (2) nRF52系列芯片采用Arm CortexM4内核处理器架构,支持低功耗蓝牙5.0及以上的特性,功耗更优,约为nRF51系列芯片的一半; 性能更强大,除了内存空间有所增加,支持无线多协议和NFC,依赖于协议栈的支持,可同时作为主机和从机使用; 在射频方面,nRF52系列芯片的内部集成了巴伦芯片,减少了外部元器件。nRF52系列芯片的规格型齐全,可满足不同应用要求,是市面上主流的低功耗蓝牙芯片,该系列的代表芯片有nRF52832、nRF52840。巴伦是平衡不平衡转换器(balun)的英文音译,balun是由“balanced”和“unbalanced”两个词组成的。其中balance代表差分结构,而unbalance代表单端结构。巴伦电路可以在差分信号与单端信号之间互相转换,巴伦电路有很多种形式,可以包括不必要的变换阻抗,平衡变压器也可以用来连接行不同的阻抗。 (3) nRF53系列芯片是高端无线多协议SoC芯片,采用双Arm CortexM33内核处理架构,即一个内核用于处理无线协议,另一个内核用于应用开发。双核处理器高效协同工作在性能与功耗方面得到完美的结合,同时nRF53系列芯片还具备高性能、低功耗、可扩展等优势,可广泛用于智能家居、室内导航、专业照明、工业自动化、可穿戴设备以及其他复杂的物联网应用。该系列的代表芯片是nRF5340。 2. 无线多协议SoC芯片的未来发展路线图 Nordic致力于超低功耗中短距离无线技术的应用市场,目前已有规格齐全的芯片型号可满足不同应用场景的需要,并兼顾资源配置和性价比。在不久的将来,nRF53、nRF54都会陆续推出新的芯片型号,在功耗、射频、安全加密等性能上会有更大的提升。 3.4.3nRF5340的主要规格参数 下面讲述nRF5340的主要规格参数。 1. nRF5340简介 图313nRF5340外形 nRF5340是Nordic推出的高端多协议系统级SoC芯片,是基于Nordic经过验证并在全球范围得到广泛采用的nRF51和nRF52系列无线多协议SoC芯片构建的,同时引入了具有先进安全功能的全新灵活双核处理器硬件架构,是世界上第一款配备双Arm CortexM33处理器的无线多协议SoC芯片。nRF5340外形如图313所示,支持低功耗蓝牙5.3、蓝牙Mesh网络、NFC、Thread、ZigBee和Matter。 nRF5340带有512KB的RAM,可满足下一代高端可穿戴设备的需求; 可通过高速串行外设接口(Serial Peripheral Interface,SPI)、队列串行外设接口(Queued SPI,QSPI)和通用串行总线(Universal Serial Bus,USB)等接口与外设连接,同时可最大限度地减少功耗。其中的QSPI接口,能够以96MHz的时钟频率与外部存储器连接; 高速SPI接口能够以32MHz的时钟频率连接显示器和复杂传感器。 nRF5340采用双核处理器架构,包括应用核处理器和网络核处理器。应用核处理器针对性能进行了优化,其时钟频率为128MHz或64MHz,具有1MB的Flash、512KB的RAM、一个浮点单元(Float Point Unit,FPU)、一个8KB的2路关联缓存和DSP功能。网络核处理器针对低功耗和效率进行了优化,其时钟频率为64MHz,具有256KB的Flash、64KB的RAM。两个处理器可以各自独立地工作,也可直接通过IPC外设连接,互相唤醒对方。 nRF5340集成了Arm TrustZone的Arm CryptoCell312技术和安全密钥存储,可提供最高级别的安全性。nRF5340通过Arm CryptoCell312对最通用的互联网加密标准进行了硬件加速,并与密钥管理单元(Key Management Unit,KMU)一起实现加密和安全密钥存储。同时Arm TrustZone通过在单个内核上创建安全和非安全代码执行区,为受信任的软件提供系统范围内的硬件隔离,并且与密钥管理单元外围设备一起实现加密和安全密钥存储。nRF5340的安全性能可实现先进的信任根和安全的固件更新,同时保护自己免受恶意攻击。 nRF5340支持多种无线协议且支持低功耗蓝牙,并且能够在蓝牙测向中实现到达角(Angle of Arrival,AoA)和离开角(Angle of Departure,AoD)测量的功能。此外,nRF5340还支持LE音频、高速率通信(2Mb/s)、扩展广播数据包和长距离通信,以及对蓝牙Mesh、Thread、ZigBee、NFC、ANT、IEEE 802.15.4和2.4GHz等协议的支持,可以与低功耗蓝牙同时运行,通过智能手机能够调试、配置和控制Mesh网络节点。 nRF5340集成了全新功耗优化的多协议2.4GHz无线电单元,其TX的电流仅为3.2mA(在0dBm、3V、DC/DC的条件下),RX的电流为2.6mA(在3V、DC/DC的条件下),睡眠电流低至1.1μA。作为一款高性能的SoC芯片,nRF5340的特色是增强了对动态多协议的支持,可并发支持低功耗蓝牙和蓝牙Mesh、Thread、ZigBee、Matter; 可通过带低功耗蓝牙的智能手机对nRF5340进行配置、通信和调试,并与蓝牙Mesh交互; nRF5340的射频单元具有低功耗蓝牙5.1测向的全部功能; nRF5340的工作电压为1.7~5.5V,可由可充电锂电池或USB供电。 值得一提的是,nRF5340芯片内还集成了用于32MHz和32.762kHz晶体振荡器的负载电容,与nRF52系列芯片相比,所需的外部组件数目减少了4个,有利于减小产品的尺寸。 2. nRF5340的主要特性 nRF5340的主要特性如下。 (1) 采用双核处理器架构。nRF5340包含两个Arm CortexM33处理器,其中的网络核处理器用于处理无线协议和底层协议栈,应用核处理器用于开发应用及功能; 双核处理器架构兼顾高性能和高效率,可进一步优化性能和效率,达到最优; 低功耗蓝牙协议栈的主机(Host)和控制器(Controller)分别运行在不同的处理器上,效率更高。 (2) 支持多协议。nRF5340支持低功耗蓝牙5.3及更高版本; 支持蓝牙Mesh、Thread、ZigBee、NFC、ANT、IEEE 802.15.4。 (3) 优化了射频功耗。在TX的峰值功耗降低30%,即0dBm时,TX的电流约为3.2mA,RX的电流约为2.6mA; RX的灵敏度为-97.5dBm; 在-20dBm~+3dBm的范围内,能够以1dB为单位调整TX的发射功率。 (4) 高安全性。采用Arm TrustZone和安全密钥存储; 可设置Flash、RAM、GPIO和外设的安全属性; 采用Arm CryptoCell312实现硬件加速加密; 具有独立的密钥存储单元。 (5) 全合一。采用全新的芯片系列、双核处理器架构、最高级别的安全加密技术,工作温度可以达到105℃,具有更大的存储空间和内存、更快的运行效率,并且功耗更优。 (6) 专为LE音频设计。支持同步频道、LC3,采用低抖动音频PLL时钟源。 (7) 运行效率更高。CPU运行在时钟频率64MHz时,无论网络处理器还是应用核处理器,nRF5340的运算性能均高于nRF52840。 3.4.4nRF5340的开发工具 下面讲述nRF5340的开发工具。 1. nRF Connect SDK软件开发平台 nRF Connect SDK(NCS)是Nordic最新的软件开发平台,该平台支持Nordic所有产品线,集成了Zephyr RTOS、低功耗蓝牙协议栈、应用示例和硬件驱动程序,统一了低功耗蜂窝物联网和低功耗中短距离无线应用开发。nRF Connect SDK可以在Windows、macOS和Linux上运行,由GitHub提供源代码管理,并提供免费的SES(SEGGER Embedded Studio)综合开发编译环境支持。 SES是SEGGER公司开发的一个跨平台IDE(支持Windows、Linux、macOS)。从用户体验上来看,SES是优于IAR和MDK的。同时,使用Nordic的BLE芯片可以免费使用这个IDE,没有版权的纠纷,Nordic官方跟SEGGER已经达成合作协议。 2. nRF5340 DK开发板(Development Kit) nRF5340 DK(Development Kit)是用于开发nRF5340的开发板,如图314所示,该开发板包含开发工作所需的硬件组件及外设。nRF5340DK开发板支持使用多种无线协议,配有一个SEGGER的JLink调试器,可对nRF5340DK开发板上的nRF5340或基于Nordic的SoC芯片的外部目标板进行全面的编程和调试。 图314nRF5340开发板 开发者可通过nRF5340 DK开发板的连接器和扩展接口使用nRF5340的模拟接口、数字接口及GPIO,该开发板上配置了4个按钮和4个LED,可简化nRF5340的输入和输出设置,并且可由开发者编程控制。 在实际使用时,nRF5340 DK开发板既可以通过USB供电,也可以通过1.7~5.0V的外部电源供电。 3.4.5低功耗蓝牙芯片nRF51822及其应用电路 Nordic低功耗蓝牙4.0芯片nRF51822内含一颗CortexM0 CPU,拥有256/128KB Flash和32/16KB RAM,为低功耗蓝牙产品应用提供了性价比最高的单芯片解决方案,是超低功耗与高性能的完美结合。nRF51822低功耗蓝牙模块外形如图315所示。 图315nRF51822低功耗蓝牙模块外形 nRF51822低功耗蓝牙模块的原理图如图316所示。 图316右边方框内的电路为阻抗匹配网络部分电路,将nRF51822的射频差分输出转为单端输出50Ω标准阻抗,相应的天线也应该是50Ω阻抗,这样才能确保功率最大化地传输到空间。 图316nRF51822低功耗蓝牙模块的原理图 3.5ZigBee无线传感器网络 无线传感器网络(Wireless Sensor Network,WSN)采用微小型的传感器节点获取信息,节点之间具有自动组网和协同工作能力,网络内部采用无线通信方式,采集和处理网络中的信息,发送给观察者。目前WSN使用的无线通信技术过于复杂,非常耗电,成本很高。而ZigBee是一种短距离、低成本、低功耗、低复杂度的无线网络技术,在无线传感器网络应用领域极具发展潜力。 无线传感器网络有着十分广泛的应用前景,在工业、农业、军事、环境、医疗、数字家庭、绿色节能、智慧交通等传统和新兴领域都具有巨大的运用价值,无线传感器网络将无处不在,并将完全融入人们的生活。 3.5.1ZigBee无线传感器网络通信标准 下面讲述ZigBee无线传感器网络通信标准。 1. ZigBee标准概述 ZigBee技术在IEEE 802.15.4的推动下,不仅在工业、农业、军事、环境、医疗等传统领域取得了成功的应用,在未来其应用可能涉及人类日常生活和社会生产活动的所有领域,真正实现无处不在的网络。 ZigBee技术是一种近距离、低复杂度、低功耗、低成本的双向无线通信技术,主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用,因此非常适用于家电和小型电子设备的无线控制指令传输。ZigBee技术典型的传输数据类型有周期性数据(如传感器)、间歇性数据(如照明控制)和重复低反应时间数据(如鼠标),其目标功能是自动化控制。它采用跳频技术,使用的频段分别为2.4GHz(ISM)、868MHz(欧洲)及915MHz(美国),而且均为免执照频段,有效覆盖范围为10~275m。当网络速率降低到28kb/s时,传输范围可以扩大到334m,具有更高的可靠性。 ZigBee标准是一种新兴的短距离无线网络通信技术,它是基于IEEE 802.15.4协议栈,主要针对低速率的通信网络设计的。它本身的特点使得其在工业监控、传感器网络、家庭监控、安全系统等领域有很大的发展空间。ZigBee体系结构如图317所示。 图317ZigBee体系结构 2. ZigBee协议框架 ZigBee堆栈是在IEEE 802.15.4标准的基础上建立的,定义了协议的介质访问控制(Medium Access Control,MAC)和物理(PHY)层。ZigBee设备应该包括IEEE 802.15.4的PHY和MAC层,以及ZigBee堆栈层[网络层(NWK)、应用层和安全服务提供层]。 完整的ZigBee协议栈由物理层、介质访问控制子层、网络层、安全层和应用层组成,如图318所示。 图318ZigBee协议栈 ZigBee协议栈的网络层、安全层和应用程序接口等由ZigBee联盟平台制定。物理层和MAC子层由IEEE 802.15.4标准定义。在MAC子层上面提供与上层的接口,可以直接与网络层连接,或者通过中间子层SSCS和LLC实现连接。ZigBee联盟平台在802.15.4的基础上定义了网络层和应用层。其中,安全层主要实现密钥管理、存取等功能。应用程序接口负责向用户提供简单的应用程序接口(Application Program Interface,API),包括应用子层支持(Application Sublayer Support,APS)、ZigBee设备对象(ZigBee Device Object,ZDO)等,实现应用层对设备的管理。 3. ZigBee网络层规范 协调器也被称为全功能设备(FullFunction Device,FFD),相当于蜂群结构中的蜂后,是唯一的,是ZigBee网络启动或建立网络的设备。 路由器相当于雄蜂,数目不多,需要一直处于工作状态,需要主干线供电。 末端节点则相当于数量最多的工蜂,也称之为精简功能设备(ReducedFunction Device,RFD),只能传送数据给FFD或从FFD接收数据,该设备需要的内存较小(特别是内部RAM)。 4. ZigBee应用层规范 ZigBee协议栈的层结构包括IEEE 802.15.4介质访问控制层和物理层,以及ZigBee网络层,每一层通过提供特定的服务完成相应的功能。其中,ZigBee应用层包括APS子层、ZDO(包括ZDO管理层)以及用户自定义的应用对象。APS子层的任务包括维护绑定(Binding)表和绑定设备间消息传输。所谓的绑定指的是根据两个设备在网络中的作用,发现网络中的作用,发现网络中的设备并检查它们能够提供哪些应用服务,产生或者回应绑定请求,并在网络设备间建立安全的通信。 ZigBee应用层有3个组成部分,包括应用子层支持、应用框架(Application Framework,AF)、ZigBee设备对象。它们共同为各应用开发者提供统一的接口,规定了与应用相关的功能,如端点(EndPoint)的规定,绑定、服务发现和设备发现等。 3.5.2ZigBee开发技术 随着集成电路技术的发展,无线射频芯片厂商采用片上系统的方法,对高频电路进行了高度集成,大大地简化了无线射频应用程序的开发。其中最具代表性的是TI公司开发的CC2530无线微控制器,为2.4GHz、IEEE 802.15.4/ZigBee片上系统提供解决方案。 TI公司提供完整的技术手册、开发文档、工具软件,使得普通开发者开发无线传感器网络应用成为可能。TI公司不仅提供了实现ZigBee网络的无线微控制器,而且免费提供了符合ZigBee 2007协议规范的协议栈ZStack和较为完整的开发文档。因此,CC2530+ZStack成为目前ZigBee无线传感器网络开发的最重要技术之一。 1. CC2530无线片上系统概述 CC2530无线片上系统微控制器是一个用于IEEE 802.15.4、ZigBee和RF4CE应用的真正的片上系统解决方案。它能够以非常低的总材料成本建立强大的网络节点。CC2530结合了领先的2.4GHz的RF收发器的优良性能,业界标准的增强型8051微控制器,系统内可编程闪存,8kB RAM和许多其他强大的功能。根据芯片内置闪存的不同容量,CC2530有4种不同的型号: CC2530F32/64/128/256。CC2530具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短,这进一步确保了低能源消耗。 CC2530大致可以分为4个部分: CPU和内存、时钟和电源管理、外设,以及无线设备。 1) CPU和内存 CC253x系列芯片使用的8051CPU内核是一个单周期的8051兼容内核,包括一个调试接口和一个18输入扩展中断单元。 2) 时钟和电源管理 数字内核和外设由一个1.8V低差稳压器供电,它提供了电源管理功能,可以实现使用不同供电模式来延长电池寿命。 3) 外设 CC2530包括许多不同的外设,允许应用程序设计者开发先进的应用。 4) 无线设备 CC2530具有一个IEEE 802.15.4兼容无线收发器,RF内核控制模拟无线模块。另外,它提供了MCU和无线设备之间的一个接口,这使得可以发出命令、读取状态、自动操作和确定无线设备事件的顺序。无线设备还包括一个数据包过滤和地址识别模块。 2. CC2530引脚功能 CC2530芯片采用QFN40封装,共有40个引脚,可分为I/O端口引脚、电源引脚和控制引脚,CC2530外形和引脚,如图319所示。 图319CC2530外形和引脚 1) I/O端口引脚功能 CC2530芯片有21个可编程I/O引脚,P0和P1是完整的8位I/O端口,P2只有5个可以使用的位。 2) 电源引脚功能 AVDD1~AVDD6: 为模拟电路提供2.0~3.6V工作电压。 DCOUPL: 提供1.8V去耦电压,此电压不为外电路使用。 DVDD1,DVDD2: 为I/O端口提供2.0~3.6V电压。 GND: 接地。 3) 控制引脚功能 RESET_N: 复位引脚,低电平有效。 RBIAS: 为参考电流提供精确的偏置电阻。 RF_N: RX期间负RF输入信号到LNA。 RF_P: RX期间正RF输入信号到LNA。 XOSC_Q1: 32MHz晶振引脚1。 XOSC_Q2: 32MHz晶振引脚2。 CC2530无线模块如图320所示。 图320CC2530无线模块 3. CC2530的应用领域 CC2530应用领域如下: 2.4GHz IEEE 802.15.4系统、 RF4CE远程控制系统(需要大于64KB Flash)、 ZigBee系统(需要256KB Flash)、 家庭/楼宇自动化、 照明系统、 工业控制和监控、 低功耗无线传感网络、 消费型电子、 医疗保健。 3.6W601 WiFi MCU芯片及其应用实例 2018年初,联盛德(Winner Micro)推出了新一代IoT WiFi芯片W600,其上市伊始就以其优异的性价比优势迅速获得智能硬件领域的认可并取得骄人的业绩。 市面上的智能家电产品普遍采用主控MCU+WiFi模块的双芯片系统架构,MCU负责实现和处理产品应用流程; WiFi模块负责处理联网通信和云端交互功能。单芯片W601既能够满足小家电领域MCU的应用需求也能够满足WiFi模块的无线通信功能需求,让智能家电方案更加优化,这既提高了系统集成度,减少了主板面积和器件,又降低了系统成本。 本节讲述北京联盛德微电子公司推出的具有CortexM3内核的WiFi和蓝牙SoC系列芯片及其应用。 3.6.1W601/W800/W801/W861概述 W601/W800/W801/W861是北京联盛德微电子公司推出的具有CortexM3内核的WiFi和蓝牙SoC系列芯片,简单介绍如下。 1) W601智能家电WiFi MCU芯片 W601 WiFi MCU是一款支持多功能接口的SoC芯片,可作为主控芯片应用于智能家电、智能家居、智能玩具、医疗监护、工业控制等物联网领域。该SoC芯片集成CortexM3内核,内置Flash,支持SDIO、SPI、UART、GPIO、RC、PWM、I2S、7816、LCD、ADC等丰富的接口,支持多种硬件加解密协议,如PRNG/SHA1/MD5/RC4/DES/3DES/AES/CRC/RSA等; 支持IEEE 802: 11b/g/n国际标准。集成射频收发前端RF Transceiver,PA功率放大器,基带处理器/媒体访问控制。 2) W800安全物联网WiFi/蓝牙SoC芯片 W800芯片是一款安全IoT WiFi/蓝牙双模SoC芯片,支持2.4GHz IEEE 802.11b/g/n WiFi通信协议及BLE4.2协议。W800芯片集成32位CPU处理器,内置UART、GPIO、SPI、I2C、I2S、7816等数字接口; 支持可信执行环境(Trusted Execution Environment,TEE)安全引擎,支持多种硬件加解密算法,内置DSP、浮点运算单元,支持代码安全权限设置,内置2MB Flash存储器,支持固件加密存储、固件签名、安全调试、安全升级等多项安全措施,保证产品安全特性。W800芯片适用于智能家电、智能家居、智能玩具、无线音/视频、工业控制、医疗监护等物联网领域。 3) W801IoT WiFi/BLE SoC芯片 W801芯片是一款安全IoT WiFi/蓝牙双模SoC芯片,提供丰富的数字功能接口,支持2.4GHz IEEE 802.11b/g/nWiFi通信协议,BT/BLE双模工作模式,以及BT/BLE4.2协议。芯片集成32位CPU处理器,内置UART、GPIO、SPI、I2C、I2S、7816、SDIO、ADC、PSRAM、LCD、TouchSensor(触摸感应器)等数字接口; 支持TEE安全引擎,支持多种硬件加解密算法,内置DSP、浮点运算单元与安全引擎,支持代码安全权限设置,内置2MB Flash存储器,支持固件加密存储、固件签名、安全调试、安全升级等多项安全措施,保证产品的安全特性。W801芯片同样适用于智能家电、智能家居、智能玩具、无线音/视频、工业控制、医疗监护等物联网领域。 4) W861大内存WiFi/蓝牙SoC芯片 W861芯片是一款安全IoT WiFi/蓝牙双模SoC芯片。芯片提供大容量RAM和Flash空间,支持丰富的数字功能接口。支持2.4GHz IEEE 802.11b/g/n WiFi通信协议; 支持BLE4.2协议。芯片集成32位CPU处理器,内置UART、GPIO、SPI、I2C、I2S、7816、SDIO、ADC、LCD、TouchSensor等数字接口; 内置2MB Flash存储器,2MB内存; 支持TEE安全引擎,支持多种硬件加解密算法,内置DSP、浮点运算单元与安全引擎,支持代码安全权限设置,支持固件加密存储、固件签名、安全调试、安全升级等多项安全措施,保证产品安全特性。W861芯片同样适用于智能家电、智能家居、智能玩具、无线音/视频、工业控制、医疗监护等物联网领域。 本节以W601 WiFi MCU芯片为例,讲述该系列芯片的应用。 W601 WiFi MCU芯片的外形如图321所示。 图321W601 WiFi MCU芯片的外形 W601主要有如下优势。 (1) 具有Cortex M3内核,拥有强劲的性能,更高的代码密度、位带操作、可嵌套中断、低成本低功耗,高达80MHz的主频,非常适合物联网场景的使用。 (2) 该芯片最大的优势就是集成了WiFi功能,单芯片方案可代替传统的WiFi模组+外置MCU方案,并且采用QFN68封装,可以大大缩小产品体积。 (3) 具有丰富的外设,拥有高达288KB的片内SRAM和1MB的片内Flash,并且支持SDIO、SPI、UART、GPIO、I2C、PWM、I2S、7861、LCD、ADC等外设。 W601内嵌WiFi功能,对于WiFi应用场景来说,该国产芯片是个非常不错的选择,既可以缩小产品体积,又可以降低成本。 1. W601特征 W601具有如下特征。 1) 芯片外观 W601为QFN68封装。 2) 芯片集成程度 (1) 集成32位嵌入式CortexM3处理器,工作频率80MHz。 (2) 集成288KB数据存储器。 (3) 集成1MB Flash。 (4) 集成8通道直接存储器存取(Direct Memory Access,DMA)控制器,支持任意通道分配给硬件使用或软件使用,支持16个硬件申请,支持软件链表管理。 (5) 集成2.4GHz射频收发器,满足IEEE 802.11规范。 (6) 集成PA/LNA/TRSwitch。 (7) 集成10bit差分ADC/DAC。 (8) 集成32.768kHz时钟振荡器。 (9) 集成电压检测电路、LDO、电源控制电路、集成上电复位电路。 (10) 集成通用加密硬件加速器,支持PRNG/SHA1/MD5/RC4/DES/3DES/AES/CRC/RSA等多种加解密协议。 3) 芯片接口 (1) 集成1个SDIO2.0 Device控制器,支持SDIO 1位/4位/SPI 3种操作模式; 工作时钟范围为0~50MHz。 (2) 集成2个UART接口,支持RTS/CTS,波特率范围为1200b/s~2Mb/s。 (3) 集成1个高速SPI设备控制器,工作时钟范围为0~50MHz。 (4) 集成1个SPI主/从接口,主设备支持20Mb/s工作频率,从设备支持6Mb/s数据传输速率。 (5) 集成一个IC控制器,支持100/400kb/s速率。 (6) 集成GPIO控制器。 (7) 集成PWM控制器,支持5路PWM单独输出或者2路PWM输入。最高输出频率为20MHz,最高输入频率为20MHz。 (8) 集成双工I2S控制器,支持32kHz到192kHz I2S接口编解码。 (9) 集成7816接口,支持ISO781173T=0/1模式,支持EVM2000规范,并兼容串口功能。 (10) 集成LCD控制器,支持8×16/4×20接口,支持2.7~3.6V电压输出。 4) 协议与功能 (1) 支持GB 15629.11—2006、IEEE 802.11 b/g/n/e/i/d/k/r/s/w。 (2) 支持WAPI2.0; 支持WiFi WMM/WMMPS/WPA/WPA2/WPS; 支持WiFi Direct。 (3) 支持EDCA信道接入方式; 支持20/40Mb/s带宽工作模式。 (4) 支持STBC、GreenField、ShortGI、支持反向传输; 支持RIFS帧间隔; 支持AMPDU、AMSDU。 (5) 支持IEEE 802.11n MCS 0~7、MCS32物理8层传输速率挡位,传输速率最高为150Mb/s; 2/5.5/11Mb/s速率发送时支持Short Preamble。 (6) 支持HTimmediate Compressed BlockAck、Normal Ack、No Ack应答方式; 支持CTS to self; 支持AP功能; 支持作为AP和STA同时使用。 (7) 在BSS网络中,支持多个组播网络,并且支持各个组播网络加密方式不同,最多可以支持总和为32个的组播网络和入网STA加密; BSS网络支持作为AP使用时,支持站点与组的总和为32个,IBSS网络中支持16个站点。 5) 供电与功耗 (1) 3.3V单电源供电。 (2) 支持PSPoll、UAPSD功耗管理。 (3) SoC芯片待机电流小于10μA。 2. W601芯片结构 W601芯片结构如图322所示。 图322W601芯片结构 3. W601管脚定义 W601引脚布局如图323所示。 图323W601引脚布局 3.6.2ALIENTEK W601开发板 随着嵌入式行业的高速发展,国内涌现出大批芯片厂商,ALIENTEK W601开发板的主芯片W601就是国内联盛德微电子推出的一款集WiFi与MCU于一体的WiFi芯片方案,以代替传统的WiFi模组+外置MCU方案。它集成了CortexM3内核,内置Flash,支持SDIO、SPI、UART、GPIO、I2C、PWM、I2S、7861、LCD和ADC等丰富的接口,支持多种硬件加解密协议,并支持IEEE 802.11b/g/n国际标准,集成射频收发前端RF、PA功率放大器、基带处理器等。 1. W601开发板介绍 正点原子新推出的一款WiFi MCU SoC芯片的ALIENTEK W601开发板。 ALIENTEK W601开发板的资源如图324所示。 图324ALIENTEK W601开发板的资源 从图324可以看出,W601开发板资源丰富,接口繁多,W601芯片的绝大部分内部资源都可以在此开发板上验证,同时扩充丰富的接口和功能模块,整个开发板显得十分大气。 开发板的外形尺寸为53mm×80mm,比身份证还要小,方便随身携带,板子的设计十分人性化,经过多次改进,最终确定了这样的外观。 ALIENTEK W601开发板载资源如下。 (1) MCU: W601,QFN68,SRAM(288KB),Flash(1MB)。 (2) 外扩SPI Flash: W25Q128(16MB)。 (3) 1个电源指示灯(蓝色)。 (4) 1个SWD下载接口(仿真器下载接口)。 (5) 1个Micro USB接口(可用于供电、串口通信和串口下载)。 (6) 1组5V电源供应/接入口。 (7) 1组3.3V电源供应/接入口。 (8) 1个电源开关,控制整个板的电源。 (9) 1组I/O口扩展接口,可自由配置使用方式。 (10) 1个TFTLCD显示屏: 1.3英寸240×240分辨率。 (11) 1个ATK模块接口,支持蓝牙/GPS/MPU6050/RGB/LORA等模块。 (12) 1个TF卡座。 (13) 1个板载WiFi PCB天线。 (14) 1个温湿度传感器: AHT10。 (15) 1个光环境传感器: AP3216C。 (16) 1个有源蜂鸣器。 (17) 1个红外发射头。 (18) 1个红外接收头,并配备一款小巧的红外遥控器。 (19) 1个RGB状态指示灯(红、绿、蓝三色)。 (20) 1个复位按钮。 (21) 3个功能按钮。 (22) 1个USB转TTL芯片CH340N,可用于串口通信和串口下载功能。 2. 软件资源 上面详细介绍了ALIENTEK W601开发板的硬件资源。接下来,简要介绍一下ALIENTEK W601开发板的软件资源。 由于ALIENTEK W601开发板是正点原子、RTThread和星通智联推出的一款基于W601芯片的开发板,所以这款开发版的软件资料有两份,一份是正点原子提供的基于W601的基础裸机学习例程,还有一份就是RTThread提供的基于RTThread操作系统的进阶学习例程。 正点原子提供的基础例程多达21个,这些例程全部是基于官方提供的最底层的库编写的。这些例程拥有非常详细的注释,代码风格统一、循序渐进,非常适合初学者入门。 3.6.3W601 LED灯硬件设计 本小节将要实现的是控制ALIENTEK W601开发板上的RGB实现一个类似跑马灯的效果,该实验的关键在于如何控制W601的I/O口输出。了解了W601的I/O口是如何输出的,就可以实现跑马灯。通过这一小节的学习,将初步掌握W601基本I/O口的使用,而这是迈向入门的第一步。 在讲解W601的GPIO之前,首先打开跑马灯实例工程,可以看到实例工程目录如图325所示。 图325跑马灯实验目录结构 工程目录下面的组件以及重要文件如下。 (1) 组USER下面存放的主要是用户代码。main.c文件主要存放的是主函数。 (2) 组SYSTEM是ALIENTEK提供的共用代码,这些代码提供了时钟配置函数、延时函数和串口驱动函数。 (3) 组WMLIB下面存放的是W601官方提供的库文件,每一个源文件.c都对应一个头文件.h。可以根据工程需要添加和删除分组内的源文件。其中还存放有W601的启动文件startup.s文件。 (4) 组HARDWARE下面存放的是每个实验的外设驱动代码,它是通过调用WMLIB下面的HAL库文件函数实现的,如led.c中函数调用wm_gpio.c内定义的函数对led进行初始化,这里面的函数是讲解的重点。后面的实验中可以看到会引入多个源文件。 W601芯片的每个GPIO都可以通过软件单独配置,设置其作为输入端口、输出端口,并且可以设置浮空、上拉、下拉状态。 使用W601芯片的I/O口非常简单,只需要调用官方提供的以下函数就可以完成对某个I/O口的初始化。 void tls_gpio_cfg(enum tls_io_name gpio_pin, enum tls_gpio_dir dir, enum tls_gpio_attr attr) 其中gpio_pin是I/O口的引脚名; dir是I/O口的数据传输方向,可以设置成输入还是输出; attr为I/O口的状态,设置成浮空、上拉或者下拉状态; 而I/O口的电平状态可以通过位带操作来实现。 本实例用到的硬件只有RGB灯。电路在ALIENTEK W601开发板上默认是已经连接好的。 开机上电后,先初始化与RGB灯连接的I/O口,然后每500ms改变一下RGB灯的颜色(RGB可以通过R/G/B三色组合处多种不同颜色),以实现类似跑马灯的效果。 红色LED(R)接PA13,绿色LED(G)接PA14,蓝色LED(B)接PA15,由于R、G、B这3个LED是共阳的,所以I/O口输出低电平才能使灯亮,其连接原理图如图326所示。 图326RGB灯与W601连接原理图 3.6.4W601 LED灯软件设计 程序代码如下: 1. led.h #ifndef _LED_H #define _LED_H #include "sys.h" //RGB接口定义 #define LED_RPAout(13) #define LED_GPAout(14) #define LED_BPAout(15) void LED_Init(void); #endif 2. led.c #include "led.h" /** * @briefLED IO初始化函数 * * @paramvoid * * @returnvoid */ void LED_Init(void) { /* LED-BPA13 LED-GPA14 LED-RPA15 */ tls_gpio_cfg(WM_IO_PA_13,WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); tls_gpio_cfg(WM_IO_PA_14, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); tls_gpio_cfg(WM_IO_PA_15, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_PULLHIGH); LED_R = 1; LED_G = 1; LED_B = 1; } 3. main.c函数 #include "sys.h" #include "delay.h" #include "usart.h" #include "led.h" int main(void) { u8 color = 0; delay_init(80);  //延时函数初始化 uart_init(115200);   //串口初始化 LED_Init();   //LED接口初始化 while(1) { switch(color % 7) { case 0: LED_R = 0; LED_G = 1; LED_B = 1; break; case 1: LED_R = 1; LED_G = 0; LED_B = 1; break; case 2: LED_R = 1; LED_G = 1; LED_B = 0; break; case 3: LED_R = 0; LED_G = 0; LED_B = 1; break; case 4: LED_R = 0; LED_G = 1; LED_B = 0; break; case 5: LED_R = 1; LED_G = 0; LED_B = 0; break; case 6: LED_R = 0; LED_G = 0; LED_B = 0; break; default: break; } color++; delay_ms(500); //延时500ms就改变一次颜色 } } 程序下载完之后,可以看到ALIENTEK W601开发板上的RGB灯以不同颜色闪烁,每500ms改变一次颜色。 习题 1. 简述什么是蓝牙技术。 2. nRF5340的主要特性是什么? 3. 简述什么是ZigBee技术? 4. CC2530无线片上系统大致可以分为几部分? 5. W601 WiFi MCU是一款什么芯片? 6. W601主要优势有哪些?