【故障现象】
家里的车载电子狗闲置多年了,拆开把GPS模块取出来准备做个户外手持的小东东。这个GPS模块足够简单,就三根线:VCC、GND和LVTTL串口输出。把串口输出信号连到CH340G的USB转接头,PC机能正常接收到NMEA-183格式的卫星电文。但是,连接到单片机的串口RX端,则无法接收到任何数据!
【问题排查】
一开始还以为是软件编写有BUG,但排查后与软件代码无关。用示波器观察GPS模块输出的串口数据引脚: 悬空测量,电平在0V~3V之间变化;连接至单片机或USB转换头,电平则在1V~3V之间变化!从现象来看,应该是GPS模块信号输出的驱动能力不足导致的。
【解决方案】
先后尝试了3种方法:
1、输出引脚串1K电阻,试图降低电流——失败。低电平仍然超过1V,单片机接收失败。
2、增加1K上拉电阻,同时串入1N4148二极管,试图加大低电平的灌电流——失败。低电平未改善。
3、单片机I/O引脚属性设置由默认的“准双向口”改为“高阻输入” ,试图降低负载(以单片机STC8G1K08A的P3.0口为例: P3M0 &= ~0x01; P3M1 &= ~0x01 )——成功解决!示波器上串口信号的低电平降为0V,单片机接收正常!