上一篇我们讲了用MSP430F149驱动T8650北斗模块实现短报文通信及定位,后来要求把这个产品升级,除了短报文功能,要求定位精度达到2米左右(T8650模块的RNSS定位精度只有100米左右),还要增加空旷地带10公里的LORA作为通信辅助以及与电脑的RS232连接,而MCU型号是不能更改的。

定位模块我们选的是和芯星通UM220-IV车规级,LoRa无线模块是亿佰特的E22-400T30S,加上RS232总共需要4个串口,必须用到串口扩展芯片,选的是为开微电子的WK2114。WK2114可以只用主MCU的一个串口,扩展出4个子串口。

二、WK2114核心特性速览

WK2114是将一个标准UART扩展为4个增强型UART的芯片。

  • 主接口:与MCU连接,支持波特率自适应(最高2Mbps)
  • 子串口:4个,每个均可独立设置波特率(最高2Mbps)、数据位、停止位、校验
  • FIFO:每个子串口独立的256级收发FIFO,可编程
  • 中断:全局中断引脚IRQ,低电平有效;每个子串口有独立中断标志
  • 休眠:支持自动休眠/唤醒,低功耗应用
  • 封装:SOP20,宽电压2.5~5.0V

在本次设计中,我们让WK2114扩展出4个子串口,用3个分别连接UM220-IV、E22-LoRa、RS232电平转换芯片。主串口接MSP430F149的UART0,UART1仍然接T8650模块。

二、晶振及电源

电源:WK2114和MSP430使用同一3.3V电源;T8650需要5V(VCC)和12V(VCCPA);UM220-IV需要3.3V;E22需要5V。

晶振:WK2114外接11.0592MHz(或12M)晶振(并联1MΩ电阻),用于产生精确波特率。

三、主MCU与WK2114的通信

WK2114的主接口是标准UART,但传输的是命令/数据帧,而不是原始串口数据。所有对子串口的读写,都要通过特定的命令字节。

命令格式分为:写寄存器、读寄存器、写FIFO、读FIFO。

使用时,需要先通过配置模式初始化每个子串口的参数。

实际使用时WK2114的主串口波特率最好是子串口波特率的4倍以上,比如4个子串口波特率均为9600,则主串口波特率至少38400。

四、WK2114的初始化流程

  1. 硬件复位:拉低RST引脚至少10ms,然后拉高。
  2. 波特率自适应:主MCU发送 0x55,WK2114自动锁定主串口波特率。
  3. 配置子串口:切换到配置模式,直接通过读写寄存器方式来设置每个子串口的波特率、数据格式、FIFO。

具体配置WK2114手册上都有例程,需要的可以联系我。

五、中断处理与数据流

WK2114的IRQ引脚会在子串口有接收数据、发送FIFO空、超时等事件时拉低。我们将IRQ连接到MSP430的外部中断,在中断服务程序中:

  1. 读取全局中断标志寄存器(GIFR),确定是哪个子串口产生了中断。
  2. 读取对应子串口的中断标志寄存器(SIFR),确定是接收FIFO触发、超时还是发送空。
  3. 处理数据:例如接收FIFO非空,则读取FDAT寄存器(或使用读FIFO命令)取出数据,放入各自的环形缓冲区。
  4. 清除中断标志。

以上数据处理也可以在主循环里使用查询方式。

六、硬件设计注意事项

  1. WK2114的晶振必须并联1MΩ电阻,否则可能不起振。
  2. 主串口波特率自适应:上电后先发送0x55,之后不要再改变波特率,否则需要硬件复位。
  3. 子串口波特率计算:参考手册中的公式,使用11.0592MHz(或12M)晶振可得到常用波特率(9600, 19200, 115200等)。
  4. LoRa模块E22的AUX引脚:可用于指示模块状态,建议连接到MSP430的一个GPIO,判断是否可以发送新数据。
  5. 电源去耦:T8650发射时电流大(峰值约3A),需单独加稳压和滤波大电容,避免拉低其他模块电压。

通过一片WK2114,MSP430F149这样资源有限的老芯片也能同时驱动多个串口设备。

如果你也遇到串口不够用的问题,欢迎在评论区交流。

后续干货不断,咱们一起在单片机的世界里,共同进步。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐