JN517x UART与I2C接口实战:从原理到嵌入式物联网应用

发布时间:2026/6/21 13:07:39

JN517x UART与I2C接口实战:从原理到嵌入式物联网应用 1. 项目概述与核心价值在嵌入式物联网设备开发中如何让微控制器与外部世界“对话”是每个工程师必须面对的基础课题。无论是读取传感器数据、配置外围芯片还是进行系统调试和固件升级串行通信接口都扮演着至关重要的角色。NXP的JN517x系列无线微控制器作为一款集成了IEEE 802.15.4射频功能的低功耗芯片其内部集成的UART和I2C接口正是实现这些功能的核心硬件引擎。我接触JN517x系列芯片已有多年从早期的智能家居传感器到复杂的工业无线网关其稳定可靠的串行通信能力给我留下了深刻印象。很多新手开发者拿到芯片数据手册面对动辄上百页的英文文档和密密麻麻的寄存器描述常常感到无从下手。实际上只要理解了UART和I2C这两种最常用接口的工作原理、配置要点和实战中的“坑”就能快速上手让芯片与各种外设顺畅通信。本文将深入拆解JN517x的UART与I2C模块不仅会解释数据手册中的关键参数更会结合我多年的实战经验分享从引脚配置、驱动编写到调试排错的全流程细节。无论你是正在评估JN517x用于新项目还是已经在开发中遇到了通信问题相信这篇指南都能提供直接的帮助。2. UART接口深度解析与实战配置UART即通用异步收发器是一种设备间进行异步串行通信的经典协议。它的魅力在于其简单和通用性——不需要时钟线仅凭TX发送和RX接收两根线就能实现全双工通信。JN517x芯片提供了两个独立的UART模块UART0和UART1它们在功能上略有差异但核心架构一致。2.1 UART核心架构与工作模式JN517x的UART模块设计参考了工业标准的16550A UART并工作在FIFO模式下。这意味着数据并非一个一个字符地处理而是通过先入先出缓冲区进行批量化操作极大地减轻了CPU的中断负担。每个UART都包含独立的发送和接收FIFO默认深度为16字节你也可以根据实际需求进行配置。数据帧格式完全可编程这是其灵活性的体现。你可以选择5、6、7或8位数据位校验位可以选择无校验、奇校验、偶校验、强制为1或强制为0停止位可以是1位、1.5位仅用于5位数据时或2位。波特率最高支持到1 Mbps同时也兼容诸如4800、9600、19200、38400等标准速率。注意在设置非常规波特率如115200时需要仔细计算分频器参数。JN517x的波特率生成器基于系统时钟计算公式为波特率分频值 (系统时钟频率) / (16 * 期望波特率)。如果计算出的分频值不是整数则会产生波特率误差可能导致通信失败。通常要求误差小于2%。2.2 硬件流控制RTS与CTS的妙用这是UART0独有的高级功能也是稳定高速通信的保障。在无流控制的简单连接中如果接收方缓冲区已满而发送方持续发送数据就会丢失。硬件流控制通过RTS请求发送和CTS清除发送这两根额外的信号线解决了这个问题。RTS (Request To Send) 这是一个输出信号。当UART的接收FIFO剩余空间大于某个可编程阈值例如当FIFO中数据少于8字节时时RTS线会被置为有效通常为低电平告诉对方“我准备好了你可以发数据给我。”当FIFO快满时RTS无效通知对方暂停发送。CTS (Clear To Send) 这是一个输入信号。UART在发送数据前会检查CTS线的状态。只有当CTS有效时它才会真正将数据发送出去。如果CTS无效发送会暂停直到CTS再次有效。JN517x支持两种流控制模式软件流控制 由驱动程序通过查询或中断方式手动读取CTS状态、设置RTS状态。自动硬件流控制 这是更推荐的方式。硬件会自动根据接收FIFO的填充水平来驱动RTS线并且只在CTS有效时才进行发送。你只需要在初始化时使能该功能并设置一个阈值如FIFO剩余8字节时拉低RTS剩下的就交给硬件通信可靠性大幅提升。实操心得在连接PC串口或高速无线模组时强烈建议启用UART0的自动硬件流控制。我曾在一个传感器数据密集上报的项目中未启用流控制偶尔会出现数据包截断的现象。启用后即使在CPU忙于处理无线协议栈的瞬间串口通信也再未出现丢包。2.3 引脚映射与灵活配置JN517x的UART引脚并非固定提供了标准引脚和备用引脚选项这在进行PCB布局或解决引脚冲突时非常有用。信号标准引脚备用引脚备注UART0_RXDDIO4DIO10, DIO13接收数据UART0_TXDDIO5DIO9, DIO12发送数据UART0_CTSDIO6-清除发送输入UART0_RTSDIO11-请求发送输出UART1_RXDDIO2DIO6接收数据UART1_TXDDIO3DIO11发送数据此外UART0可以配置为2线模式仅用TXD和RXDUART1可以配置为1线模式仅用TXD适用于仅发送的场景如打印日志。这样闲置的CTS、RTS或RXD引脚就可以用作通用IO或其他功能提高了引脚利用率。配置步骤详解时钟与电源 首先确保UART模块的时钟已使能。通常需要在系统初始化代码中配置相应的时钟门控寄存器。引脚功能复用 这是最容易出错的一步。你需要将目标DIO引脚的功能设置为“外设功能”而不是默认的GPIO。例如要使用DIO4和DIO5作为UART0需要操作IOCONFIG寄存器将这两个引脚的模式设置为UART0。基本参数配置 通过UART的线控制寄存器LCR设置数据位、停止位、校验位。通过除数锁存器DLL/DLM设置波特率。FIFO与中断配置 通过FIFO控制寄存器FCR使能FIFO并设置触发中断的水位线例如接收FIFO中有4个字节时产生中断。在中断使能寄存器IER中使能“接收数据可用”、“发送保持寄存器空”等你需要的中断源。流控制配置如需要 如果使用UART0的自动硬件流控制需要设置MCRModem控制寄存器的相应位并在FCR中设置RTS触发的阈值。2.4 中断处理与数据收发实战高效使用UART离不开合理的中断策略。JN517x的UART中断分为四类你需要在中断服务程序ISR中读取中断标识寄存器IIR来判断中断来源并处理。接收数据可用中断 当接收FIFO中的数据量达到预设的触发水平或线路空闲超过4个字符时间时触发。这是最常用的中断。ISR中应循环读取接收保持寄存器RHR直到FIFO为空。// 伪代码示例UART接收中断处理 void UART0_IRQHandler(void) { uint8_t iir UART0-IIR; if ((iir IIR_INT_PENDING) 0) { // 有中断待处理 switch (iir IIR_INT_ID_MASK) { case IIR_INT_ID_RDA: // 接收数据可用 while (UART0-LSR LSR_DR) { // 数据就绪位为1 uint8_t data UART0-RBR; // 读取数据 ring_buffer_write(rx_buf, data); // 存入环形缓冲区 } break; case IIR_INT_ID_THRE: // 发送保持寄存器空 // ... 填充发送数据 break; // ... 处理其他中断类型 } } }发送FIFO空中断 当发送FIFO完全为空时触发。你可以在此中断中填充新的待发送数据实现“零耗时”的连续发送。接收线路状态中断 当发生奇偶校验错误、帧错误停止位不对、溢出错误FIFO满后仍收到数据或检测到Break信号时触发。这是进行错误诊断和链路质量监测的关键。Modem状态中断 仅UART0有当CTS输入信号状态发生变化时触发。可用于监测对方设备的状态。避坑指南FIFO溢出 即使开启了硬件流控制在某些极端情况下如对方设备响应极慢仍可能发生接收FIFO溢出。务必在“接收线路状态中断”中检查溢出错误标志并做相应处理如清空FIFO记录错误计数。中断风暴 如果接收数据速度极快而你的ISR处理较慢可能会导致中断频繁触发系统无法处理其他任务。解决方案是提高接收FIFO的触发阈值例如设为14字节或在ISR中一次性读取所有可用数据减少中断次数。电平转换 JN517x的UART引脚是3.3V TTL电平。如果需要连接标准的RS-232设备如老式PC串口必须使用MAX3232之类的电平转换芯片。直接连接会损坏芯片。3. I2C接口深度解析与主从模式实战I2CInter-Integrated Circuit总线是一种由Philips现NXP发明的同步、多主从、串行通信总线。它凭借其极简的两线制SCL时钟线SDA数据线和软件可寻址能力成为连接传感器、EEPROM、RTC等低速外设的首选。JN517x的I2C模块功能完整支持主/从模式、时钟拉伸、7/10位地址。3.1 I2C总线基础与JN517x特性I2C总线上的所有设备都通过开漏极Open-Drain输出连接到SDA和SCL通过上拉电阻拉到正电源形成“线与”逻辑。这意味着任何设备都可以将线拉低但释放后靠上拉电阻回到高电平。JN517x的I2C模块具有以下关键特性双引脚组支持 标准引脚为DIO4(SCL)/DIO5(SDA)它们具有真正的开漏输出支持总线失效安全Fail-Safe特性。即当JN517x断电时这两条线不会影响总线上其他设备。备用引脚为DIO3(SCL)/DIO2(SDA)但无失效安全保证。主从模式 既可作主机发起通信也可作从机响应主机寻址。时钟速率 主机模式下时钟频率可通过软件编程最高支持400 kbps快速模式。FIFO缓冲 独立的8字节深度的发送和接收FIFO。时钟拉伸 从机可以通过拉低SCL来暂停通信为主机等待从机准备数据提供了硬件支持。硬件连接要点 虽然JN517x的I2C引脚内部有约50kΩ的可编程上拉电阻但为了在400kbps速率下稳定工作强烈建议在SCL和SDA线上各连接一个4.7kΩ的外部上拉电阻到3.3V。总线总电容应小于400pF这限制了总线长度和挂载设备数量。对于长导线或多设备情况可能需要降低速率或使用总线缓冲器。3.2 主机模式操作精讲作为主机JN517x负责产生时钟信号SCL并控制通信的启动、停止和方向。操作流程围绕TX_FIFO发送指令队列和RX_FIFO接收数据缓冲区展开。3.2.1 主机发送器流程假设我们要向一个地址为0x50的EEPROM写入两个字节数据0xAA和0x55。配置时钟 首先通过写Clock_Divisor_High和Clock_Divisor_Low寄存器来设置I2C总线时钟频率。发起传输 向TX_FIFO写入一个组合指令字。这个字包含起始位START bit、从机地址0x50 1、以及读写位0表示写。例如指令码可能是0x150假设起始位在bit8。这会让主机在总线上发出START条件然后发送地址帧0xA00x50左移1位最低位0。发送数据 将要发送的数据字节0xAA,0x55依次写入TX_FIFO。注意此时指令字中的起始/停止位应设为0。结束传输 在发送最后一个数据字节时需要同时设置停止位STOP bit。例如写入0x2AA停止位在bit9。主机发送完0x55后会发送一个STOP条件结束本次传输。中断处理 通常使能“传输数据请求”MTDR中断。当TX_FIFO为空时此中断触发你可以在中断服务程序中填充下一个数据包或进行后续处理。关键机制时钟拉伸与FIFO管理TX_FIFO空时的拉伸 如图36所示如果主机在发送过程中TX_FIFO变空它会在当前字节的应答周期第9个时钟后自动拉低SCL时钟拉伸直到有新的数据写入TX_FIFO。这给了软件足够的时间去准备数据而不会导致总线超时。RESTART条件 在一次通信中如果想不释放总线不发STOP就改变通信方向从写到读需要使用RESTART。操作方法是在发送完最后一个写数据字节时不设置停止位。然后直接向TX_FIFO写入一个新的“起始位读地址”指令。主机会自动在总线上产生一个RESTART信号。3.2.2 主机接收器流程假设我们要从上述EEPROM的某个地址读取3个字节。发起读请求 向TX_FIFO写入“起始位 从机读地址0x50 1 | 1”。例如0x151。请求数据 主机需要告诉从机它想要多少个字节。这是通过向TX_FIFO写入“虚拟字节”Dummy Byte来实现的。要读3个字节就连续写入3个任意值的虚拟字节如0x00,0x00,0x00。每个虚拟字节对应主机期望接收的一个数据字节并会在接收后自动发送ACK。接收数据 从机发送的数据会自动存入RX_FIFO。你可以通过查询或中断RFF接收FIFO满来读取。结束读取 在最后一个虚拟字节处需要设置停止位。主机在接收到最后一个数据字节后会发送NACK然后发出STOP条件。关键机制RX_FIFO满时的拉伸如图37所示如果RX_FIFO在传输中途满了主机会在存储最后一个字节后在第8个时钟周期数据已存入FIFO于ACK周期前拉伸时钟直到软件从RX_FIFO中读取数据腾出空间。这意味着即使时钟被拉伸当前字节的数据也已经可以读取了实现了字节级的流控。3.3 从机模式操作精讲将JN517x配置为I2C从机使其能响应其他主机如另一个MCU的访问。这在构建多MCU系统时非常有用。3.3.1 从机配置与地址匹配首先需要设置从机地址模式7位或10位和具体的从机地址。当总线上的主机发出START条件后从机模块会硬件自动比对接收到的地址与自身设置的地址。如果匹配且方向位为写0则进入从机接收模式如果方向位为读1则进入从机发送模式并自动发送ACK。3.3.2 从机接收器当主机向从机写数据时所有接收到的数据字节会自动存入RX_FIFO并且从机会对每个字节自动回复ACK。重要限制 从机不能发送NACK。这意味着从机必须接收主机发送的所有数据无法通过NACK拒绝。RX_FIFO满处理 与主机类似如果RX_FIFO满了从机会在ACK周期后拉伸时钟直到软件读取数据腾出空间图39。消息边界处理 这是从机模式最需要小心的地方。I2C协议本身不包含消息长度信息。当从机检测到总线上的STOP或RESTART条件时会触发“从机接收停止检测”SRSD中断。此时RX_FIFO会被自动锁定blocked。你必须在该中断服务程序中完全读空RX_FIFO然后才能清除该中断。如果不清空就清除中断当主机再次寻址该从机时从机会在发送地址ACK后立即拉伸时钟直到RX_FIFO被读空。这个机制防止了前后两次传输的数据在FIFO中混淆。3.3.3 从机发送器当主机从从机读取数据时待发送的数据必须由软件预先写入TXS_FIFO从机发送FIFO。如果TXS_FIFO在传输中变空从机会在ACK周期后拉伸时钟直到软件写入新的数据图41。当主机不想再读数据时会对某个数据字节回复NACK随后发送STOP或RESTART。从机检测到STOP/RESTART后会触发“从机发送停止检测”STSD中断。此时TXS_FIFO会被自动锁定。你必须在该中断服务程序中手动刷新flushTXS_FIFO然后才能清除中断。刷新操作是为了清空可能残留的无效数据。之后才能为下一次传输准备新的数据。3.4 I2C总线异常处理在实际应用中总线冲突、干扰和错误是不可避免的。JN517x的I2C模块提供了相应的中断标志来帮助诊断。总线错误 当检测到协议违规例如在数据传输中出现了意外的START或STOP条件时会触发I2C总线错误中断。模块会释放总线并进入空闲状态。仲裁丢失 在多主系统中如果两个主机同时开始传输会进行仲裁。失去仲裁的主机会触发“发送器仲裁失败”TAF中断。此时TX_FIFO和RX_FIFO中的数据均无效。必须手动刷新TX_FIFO并读空RX_FIFO才能清除中断并恢复正常操作。否则模块会因RX_FIFO被无效数据阻塞而持续拉伸时钟。从机无应答 当主机发送地址后如果没有从机应答即收到NACK主机会自动产生STOP条件并终止传输。此时TX_FIFO中可能还有未发送的数据需要手动刷新。调试心得逻辑分析仪是必备工具 调试I2C问题没有比逻辑分析仪更直观的工具了。可以清晰地看到START、STOP、地址、数据、ACK/NACK每一位的波形快速定位是时序问题、地址错误还是从机无响应。上拉电阻是关键 I2C通信不稳定十有八九是上拉电阻问题。电阻太大上升沿太慢在高波特率下会导致采样错误电阻太小电流消耗大。4.7kΩ对于3.3V系统、400kHz以下速率是经验值。如果总线电容大可以适当减小电阻值如2.2kΩ。注意从机的时钟拉伸能力 有些从机设备如某些传感器时钟拉伸时间很长。如果主机不支持时钟拉伸或超时时间设置过短会导致通信失败。JN517x作为主机时完全支持时钟拉伸但软件需要处理好TX_FIFO及时填充避免主机因等待时间过长而产生超时。4. 实战应用构建一个环境监测节点为了将UART和I2C的知识融会贯通我们设想一个典型的物联网边缘节点一个基于JN517x的环境监测器。它通过I2C连接温湿度传感器如SHT30和气压传感器如BMP280采集到的数据通过UART发送给一个4G Cat.1模组再由模组上传到云端。同时UART还用于输出调试日志。4.1 系统架构与引脚规划首先我们需要合理分配有限的DIO引脚。I2C总线 使用标准引脚DIO4(SCL)和DIO5(SDA)。连接SHT30和BMP280。两个传感器的I2C地址需要不同通常可通过地址引脚配置。UART0 用于连接4G模组。考虑到模组可能支持硬件流控制以优化数据传输我们使用完整4线制DIO4(TXD)、DIO5(RXD)、DIO6(CTS)、DIO11(RTS)。注意这里DIO4/DIO5与I2C引脚冲突因此我们必须将UART0切换到备用引脚DIO9(TXD)、DIO10(RXD)、DIO6(CTS)、DIO11(RTS)保持不变。这样UART0和I2C的引脚就分开了。UART1 用于调试输出。我们只需要发送所以配置为1线模式使用DIO3(TXD)即可。RXD引脚DIO2可留作通用输入。4.2 驱动层代码结构设计一个清晰的驱动层能大幅提升代码可维护性。i2c_driver.c/h 封装JN517x的I2C主机操作。提供初始化、单字节/多字节读写、带寄存器地址的读写等通用API。例如i2c_status_t i2c_write_reg(uint8_t dev_addr, uint8_t reg_addr, uint8_t value); i2c_status_t i2c_read_reg(uint8_t dev_addr, uint8_t reg_addr, uint8_t *value); i2c_status_t i2c_read_burst(uint8_t dev_addr, uint8_t reg_addr, uint8_t *buffer, uint16_t len);sht30_sensor.c/h,bmp280_sensor.c/h 传感器专用驱动。它们内部调用i2c_driver的API实现传感器的初始化、校准数据读取、触发测量、读取原始数据、进行补偿计算并返回物理值如温度、湿度、压强。uart_driver.c/h 封装UART0和UART1的操作。UART0实现带环形缓冲区的中断收发支持printf重定向到UART1用于调试。关键函数包括初始化、发送字符串、发送缓冲区、注册接收回调函数等。at_parser.c/h 针对4G模组的AT指令解析器。它从UART0的接收环形缓冲区中读取数据解析模组返回的OK、ERROR或具体数据并通过状态机控制模组的联网、注册、数据发送等流程。4.3 数据流与任务调度在RTOS如FreeRTOS或裸机循环中我们需要合理安排任务。传感器数据采集任务 周期性地例如每10秒触发。任务中依次调用SHT30_Read()和BMP280_Read()。这里要注意I2C总线是共享资源需要互斥锁mutex保护防止多个任务同时访问I2C导致时序错乱。数据处理与封装任务 采集到原始数据后进行必要的滤波如滑动平均、单位转换然后封装成预定的JSON或二进制格式。{dev:EnvNode_01,ts:1678886400,temp:25.6,humi:45.2,press:1013.2}通信任务 将封装好的数据通过UART0发送给4G模组。这里使用UART0的自动硬件流控制至关重要。当模组内部缓冲区快满时它会拉高CTSJN517x会自动暂停发送完美避免了数据丢失。发送完成后进入AT_parser等待模组和网络的响应。调试与监控 所有的操作状态、错误信息、传感器原始值都可以通过printf输出到UART1连接PC串口助手进行实时监控。4.4 低功耗考量JN517x作为无线MCU低功耗是核心优势。在串口通信场景下如何省电UART唤醒 JN517x的UART在深度睡眠模式下可以被接收引脚上的起始位唤醒。这对于由4G模组下发指令唤醒设备的场景非常有用。需要正确配置UART唤醒使能和引脚。I2C时钟拉伸 当JN517x作为I2C从机且处于低功耗模式时主机访问它它可以利用时钟拉伸机制。在SCL被拉伸的窗口期内从机有足够时间唤醒内核、准备数据然后再释放SCL继续通信对主机透明。外设时钟门控 在不使用UART或I2C时通过寄存器关闭其时钟源可以节省动态功耗。5. 常见问题排查与调试技巧实录即使理解了所有原理实际调试中仍会遇到各种问题。下面是我总结的一些典型问题及其排查思路。5.1 UART通信问题排查表现象可能原因排查步骤与解决方案完全无数据收发1. 引脚配置错误2. 波特率不匹配3. 硬件连接问题如TX/RX接反4. 模块未供电或未使能1. 用万用表测量引脚电压确认非高阻态。2. 用示波器或逻辑分析仪测量TX引脚看是否有波形。确认双方波特率、数据位、停止位、校验位完全一致。3. 交换TX和RX线尝试。4. 检查电源和使能信号。收到乱码1. 波特率误差过大2. 时钟源不准3. 地线未共地1. 计算波特率分频值确保误差2%。2. 检查系统主时钟源如外部晶振是否起振、是否准确。3. 确保通信双方有可靠的地线连接。数据丢失偶尔丢包1. 接收缓冲区溢出未及时读取2. 无流控制对方发送过快3. 中断优先级低被其他任务打断1. 增大接收FIFO触发阈值优化中断服务程序确保快速读取。2. 启用硬件流控制RTS/CTS。3. 提高UART中断优先级。只能发不能收或只能收不能发1. 单向引脚配置错误2. 对方设备故障3. 电平转换芯片损坏1. 确认TX/RX引脚配置是否正确。2. 使用USB转串口工具交叉测试。3. 检查电平转换芯片的输入输出。5.2 I2C通信问题排查表现象可能原因排查步骤与解决方案主机发送地址后无ACKNACK1. 从机地址错误2. 从机设备不存在或未上电3. 总线被锁死SCL被某设备持续拉低4. 上拉电阻过大或过小1. 核对从机数据手册的7位地址注意左移一位。2. 测量从机电源用逻辑分析仪看从机是否在ACK周期拉低了SDA。3. 逐一断开总线上的设备排查故障设备。可尝试短暂拉低SCL多次9次模拟STOP条件解锁总线。4. 用示波器观察SDA/SCL上升沿调整上拉电阻通常4.7kΩ。通信随机出错读取数据不正确1. 时序问题Setup/Hold时间不满足2. 电源噪声或地线干扰3. 总线电容过大边沿太缓4. 软件未处理仲裁丢失或错误中断1. 降低I2C时钟频率如从400kHz降到100kHz。2. 在电源引脚加去耦电容确保地线路径短而粗。3. 减少总线设备或缩短走线或使用更小的上拉电阻。4. 在I2C中断服务程序中检查并处理仲裁丢失、总线错误等标志及时复位FIFO。从机模式不响应1. 从机地址未正确设置2. 从机模式未使能3. 在STOP/RESTART后未清空或刷新FIFO1. 确认写入从机地址寄存器的值正确。2. 检查控制寄存器确保从机模式使能位已设置。3. 确保在SRSD或STSD中断中严格执行了清空RX_FIFO或刷新TXS_FIFO的操作。时钟拉伸导致主机超时1. 从机拉伸时间过长2. 主机软件未及时响应TX_FIFO空或RX_FIFO满中断1. 检查从机设备手册的最大时钟拉伸时间。如果主机有超时机制需设置合理的超时值。2. 优化主机中断服务程序确保及时填充TX_FIFO或读取RX_FIFO。5.3 高级调试技巧软件模拟I2C作为备用方案 当硬件I2C遇到难以解决的兼容性问题时可以用两个GPIO口模拟I2C时序。虽然效率低但可控性强是调试和验证从机设备的有效手段。一旦用软件模拟通了再对比硬件I2C的波形往往能发现问题。利用JN517x的脉冲计数器进行调试 JN517x的脉冲计数器PC0, PC1可以连接到UART的TX或I2C的SCL引脚用来非侵入式地统计通信过程中的脉冲/边沿数量辅助判断通信是否活跃。寄存器级调试 在怀疑驱动层有bug时最直接的方法是单步调试观察关键寄存器的值UART的线状态寄存器LSR、I2C的状态寄存器I2C_Status和中断状态寄存器Int_Status。这些寄存器清晰地反映了模块的实时状态和错误信息。开发就是一个不断遇到问题、分析问题、解决问题的过程。对于JN517x的UART和I2C只要牢牢抓住数据手册中的关键时序图、FIFO机制和中断处理流程再结合逻辑分析仪这类利器大部分通信问题都能迎刃而解。希望这些从实际项目中沉淀下来的经验能帮助你在下一次使用JN517x进行串行通信设计时更加得心应手。

相关新闻