MTK设置串口波特率卡死
从你这个来看,你串口是不是应该用的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的回答!