查看: 554|回复: 0

[应用笔记] DB62 URAT1通信异常案例分析

[复制链接]

21

主题

21

帖子

67

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
67
发表于 2023-3-27 15:51:57 | 显示全部楼层 |阅读模式
背景
  用户使用DB62模组,通信串口使用UART1,下载口用URAT0,用UART1串口通信出现乱码情况,串口波特率设置115200,ttl直接连到gpio05,GPIO06,共GND,稳压电源供电3.3V
过程

一、客户原理图和PCB射频部分设计
  
  原理图除了pin脚名称没有问题,PCB走线也是没有问题的,重点看一下客户实际板子的焊接和接线情况,也排除了接线问题

二、检查软件配置

  固件是客户自己烧录的,首先检查menuconfig 有没有开启at指令,【./build.sh menuconfig】-【SecuritySettings】-【TEE HUKS demosupport】

  客户已经开启支持TEE HUKS DEMO AT命令
三、复现客户问题

  1、开发板用UART1通信
  DB62出场固件AT串口是URAT0 下载SDK之后AT串口是UAR1,通过查看开发板的原理图可知,想用UART1直接选择Standard——“SiHcon Labs Dual CP210x USB- to UAR didre: Standard COM Portl”
  要把GPIO5——UART1_TXD;GPIO6——UART1_RXD用杜邦线接上,因为排针这块标注的UART1只是板子的UART1,模组真正的UART1是GPIO5/6
  通信正常
  2、尝试和客户一样飞线,用USB转TTL接GPIO05 GPIO06 gnd vcc 【因为VDD_IO和VCC已经连接起来,所以不用接】
  复现出来通信异常,出现乱码情况
  输出乱码通常有两种可能: 1:波特率误差较大    2:串口波形异常

  3、此时用示波器测量开发板 GPIO06端口,测量输出的波形,如下图所示是输出乱码时的波形:
  可以看到实际的波特率为192.16k bps,而解码时按照正常部件的115200bps来设置,波特率误差大于4%,因此会导致解码结果不正确

  顺便测试一下板子上通信正常的UAT1_TX

  将板子和 pc 相连,板子端输出字符串“OK”,OK对应的ascii 码值为4f4b ,串口波形为 100111101001011,此时用示波器测量开发板 uart1 tx端口,测量输出的波形,如下图所示是输出“OK”时的波形:
  可看到实际波特率为 115.25k
  (152500-115200)/115200=0.000434028误差远小于 2%,因此该波特率可接受

四、进一步分析波特率漂移问题

  查询资料的时候发现同样用HI3861L芯片的模组有强调

  【上电复位 (POR:Power On Reset)期间,GPIO2/GPIO6/GPIO8 不能输入高电平,否则芯片可能出现未知异常,如出现 Flash 被写保护等问题。任何在上电器件可能出现高电平的应用都禁止接入到 GPIO2/GPIO6/GPIO8,如 PIR 输入、按键输入、USB 插入检测。待 Hi3861L 上电完成 POR后,这些管脚可以输入高电平。】

  为了验证这个说法,示波器分别抓UART1_TX和GPIO06的上电时序
UART1_TX上电时序
GPIO06(TX)上电时序

  UART1_TX会有一个延时,推测是因为我们的cp2105芯片有一个延时上电的机制

  通过对比发现时序确实存在差异,我们上电先不给GPIO06上电,然后发现通信正常
  结论

  por期间 GPIO06不能输入高电平,建议客户做一个1ms的上电延时

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表