微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > MTK设置串口波特率卡死

MTK设置串口波特率卡死

时间:10-02 整理:3721RD 点击:
最近在做mtk+gps的一个定位项目,在MTK与GPS模块通过串口通信,设置串口波特率时打印出乱码,然后卡死,接着重启。然后一直循环下去~

从你这个来看,你串口是不是应该用的1啊,mtk内部的信息是从1打印出来的,串口三也有这些么?
另外,你这个通信通了,重启可能是buf溢出了,你读的时候是不是没有清

如果是串口读的话,你要有个timer去检测是否是有数据,不能一直等在哪里,一直等在哪里就会死机

你先不用管GPS的事,直接与PC机通讯就行了
先确保是不是乱码。

不知道你是哪个平台的,35平台的串口,工程版本,如果用apk设置波特率之后,通信经常会有问题,导致机器重启。user版本没有问题

我觉得楼上的都是高手,

开发板是MT6261D,开发板与PC通过串口1通讯,是没有问题的,打印正常。开发板与GPS通过串口3通讯,然后就出现了我上面说的设置波特率时打印出乱码,然后卡死,重启,一直这样。开始我认为串口3有问题,但是他是在设置波特率出现了问题,前面的操作并没有问题。波特率设了9600和115200都不行~ 请各位大神继续指点~

看看           

你这个应该是设置串口所属mod的问题,你有没有mtk的gps补丁,照哪个写就可以了

串口所属的mod问题?大神,什么意思,我没太懂,你能再讲详细点儿吗?我没有mtk的GPS补丁,万分感谢~

       data.u4OwenrId = MOD_MMI;
    DclSerialPort_Control(handle,SIO_CMD_SET_OWNER, (DCL_CTRL_DATA_T*)&data);
data.rUARTConfig.u4Baud = UART_BAUD_115200;
data.rUARTConfig.u1DataBits = LEN_8;
data.rUARTConfig.u1StopBits = SB_1;
data.rUARTConfig.u1Parity = PA_NONE;
data.rUARTConfig.u1FlowControl = FC_NONE;
data.rUARTConfig.ucXonChar = 0x11;
data.rUARTConfig.ucXoffChar = 0x13;
data.rUARTConfig.fgDSRCheck = (DCL_BOOLEAN)KAL_FALSE;
DclSerialPort_Control(handle, SIO_CMD_SET_DCB_CONFIG, (DCL_CTRL_DATA_T*)&data);
要初始化上面的参数,特别注意OWNER,不要乱写,最好用MOD_MMI,用有些,可能会死机。

谢谢您的回答这些我的设置和您的一样,之前owner写的是别的,后来换成了默认的MOD_MMI,但是问题还是存在。您还有什么其他宝贵的建议吗?期待大神的回答~


如果是串口读的话,你要有个timer去检测是否是有数据,不能一直等在哪里,一直等在哪里就会死机

如果是串口读的话,你要有个timer去检测是否是有数据,不能一直等在哪里,一直等在哪里就会死机

那就是说很有可能我的串口2和3读不出来数据,所以就导致死机重启。我最近把MTK板子带的GPS模块移除,插入我们的GPS模块(正常的),可是问题是一样一样的~真是一个令人头疼的问题~
另外,非常非常感谢您的回答~

串口三没有用过不清楚,2可以用

您好,我能具体问您一些问题吗?现在做项目遇到很奇怪的问题,非常感谢!

还有我需要修改IK158_GPRS.mak文件吗,以及DrvGen修改GPIO等东西吗?有没有可能是我这些没有设对而导致不断重启和读不出数据?

真的没有人会这方面的东西吗?急求啊,可以有报酬

自己顶下~
经过修改,串口输出没有乱码,但是还是会执行到一半 就重启,并且今天找硬件的看了看串口的,串口正常,不知道什么问题,打印如下:
F1: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000      
U0: 0000 0001 [0000]
G0: 0002 0000 [0000]
T0: 0000 00BB      
Jump to BL   
         

~ Welcome to MTK Bootloader V005 (since 2005) ~
**=hello world==================================================**
                                                                  
**===================================================**           
                                                      
**===================================================**
                                                      
**===================================================**
                                                      
                                                      
Bye bye bootloader, jump to=0x1000a5b0
!W                                    
  MITask.c  MMI_Init run
yxgpsdataproc.c YXAppGpsPowerCtrl  Enter!
yxgpsdataproc.c YXAppGpsPowerCtrl  i!
yxappbasicapp.c  YxAppInitionBasicApp run
                                          
MMITask.c  MMI_Task run
PTS OK!               
yxappmain.c  yxappidleinition allisready=1
                                          
yxappmain.c  YxAppUploadDataByTickProc
                                      
yxappmain.c  YxAppUploadDataByTickProc
                                      
yxappmain.c  YxAppUploadDataByTickProc
                                      
yxappmain.c  YxAppMainProc run
yxappsteprunmain oldFlag = 6, yxAppNeedRunFlag = 32774
yxAppNeedRunFlag&0x3FFF=6
yxAppNeedRunFlag & YX_RUNKIND_LBS=2
yxAppNeedRunFlag & YX_RUNKIND_GPS=4
yxappsteprunmain if 2
YxAppDisableSleep Enter!
yxappsteprunmain YxAppGpsControl start
YxAppGpsControl Enter!
YxAppGpsControl StopTimer!
YxAppGpsControl operation = 1!
YxAppGpsControl yxGpsParam.isopen = 0
YxAppGpsControl GpsResetValues finished
yxgpsdataproc.c YXAppGpsPowerCtrl  Enter!
yxgpsdataproc.c YXAppGpsPowerCtrl  i!
YxAppGpsControl else!
yxbasicapp.c  YXOS_UART_function Enter!
yxbasicapp.c DclSerPort_Open(port,0) Begin!
yxbasicapp.c DclSerPort_Open(port,0) Finished!
yxbasicapp.c port=1!
yxbasicapp.c DclSerPort_Control Finished!
yxbasicapp.c DclSerPort_Close Finished!
yxbasicapp.c YxAppGpsUartOpen Enter!
yxbasicapp.c YxAppGpsUartOpen owner = 0!
yxbasicapp.c YxAppGpsUartOpen owner != YXAPP_UART_TASK_OWNER!
yxbasicapp.c  YXOS_UART_function Enter!
yxbasicapp.c DclSerPort_Open(port,0) Begin!
yxbasicapp.c DclSerPort_Open(port,0) Finished!
yxbasicapp.c port=1!
F1: 0000 0000
V0: 0000 0000 [0001]
00: 0000 0000      
U0: 0000 0001 [0000]
G0: 0002 0000 [0000]
T0: 0000 00BB      
Jump to BL   
         

~ Welcome to MTK Bootloader V005 (since 2005) ~
**=hello world==================================================**
                                                                  
**===================================================**           
                                                      
**===================================================**
                                                      
**===================================================**
                 
只需要看重启的前几行。
在第二次重启的倒数第四行:yxbasicapp.c  YXOS_UART_function Enter!,打印出enter,而没有finish。根据输出可知在关闭串口时出错~
不知道什么原因?求助各种大神~

从你这个来看,你串口是不是应该用的1啊,mtk内部的信息是从1打印出来的,串口三也有这些么?
另外,你这个通信通了,重启可能是buf溢出了,你读的时候是不是没有清

非常感谢你的回答,根据你的回答和仔细查看代码,问题已解决,十分感谢!一直被我忽略的问题是还没打开以及turnon Power,就开始使用那个串口,还有就是新建一个task,但是task的module写的不一致,有的是MOD_MMI,有的是我自己新取的名字,所以导致问题。希望给大家一个参考吧。再次感谢paxj10的回答!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top