查看: 2713|回复: 5

[求助] 用KL26做GPS实验出现问题后,M051xx实验比对。

[复制链接]
  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-1-17 16:30:13 | 显示全部楼层 |阅读模式
    本帖最后由 zhjb1 于 2016-1-17 16:35 编辑

    在用KL26做GPS实验出现问题后。先退回去用前一阵子玩的Nuvoton的M05xx芯片组做GPS实验。这两款芯片差不多,都是ARM M0级别的,主频PLL后都能达到48MHz[M05xx可到50MHz],都是64 管脚,应该属于同一数量级别的。
    这次下载了Nuvoton最新的BSP,哇!精简了许多,并且都有说明:包括寄存器写和函数操作,几下就搞定了。
    可以得到的结果是,采用数组的方法完全可行,并且MCU的处理时间绰绰有余[采用RC时钟大约22.184MHz]。这下就更有信心来做KL26的实验了。
    需要注意的是:不同的GPS模块输出的信号不一样,手头的几个都修好了:4各中有2个输出是TTL信号,可以直接用,有1个是SR232信号,需要电平转换,有一个信号很怪,看的是TTL信号,读出的却是乱码,示波器看像是反向信号——无信号为高电平。但已有两个可以用了。此外,1块输出6组信号,1块输出7组信号,多了GPGLL信号。
    计划本周有时间做做KL26的实验。照片如下:
    JS计数用,一组数据增1,TT显示GPGGA信号中的,号数量,0~13,14个逗号。其他的NL北纬,WL西经,GrTM是格林尼治时间。这款GPS模块GPGGA中没有星数,在GPGSV中有星数。

    我知道答案 目前已有5人回答

    M0516GPS实验照片

    M0516GPS实验照片
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-1-18 10:45:18 | 显示全部楼层
    本帖最后由 zhjb1 于 2016-1-18 10:46 编辑

    接着本文的讨论。
    回到KL26实验发现问题多多:
    在MKL_uart.c中的中断:
    #if UART0_RECEIVE_IRQ
    while (UART0_S1_REG(uartPtr) & UART0_S1_RDRF_MASK){//清除中断标志
      uart0SendChar(UART0_D_REG(uartPtr));//返回接收数据
      //while(!UART0_D_REG(uartPtr));//清接收缓冲区
    }   
    #endif
    如果打开第二行uart0SendChar(UART0_D_REG(uartPtr));
    那么在采用:
    //uart0 Get Charact UART获取一个字节
    INT8U uart0GetChar(void){
    UART0_MemMapPtr uartPtr = UART0_BASE_PTR;
    while (!(UART0_S1_REG(uartPtr) & UART0_S1_RDRF_MASK));//等待接收缓冲区可用
    return UART0_D_REG(uartPtr);//返回接收字节
    }
    获取字节的时候UART0将自动完成接收转发的工作——RX接收到自动就向TX发出,但如果关掉这一项,就发生不能转发的的现象。
    问题是:我希望的是接收一组[个]字符串后,自动停止接受,处理数据之后向LCD写和向TX发出以便上位机接收显示,验证处理的正确与否。
    尝试过用:
      uart0TranControl(0,0);
      NVIC_DisableIRQ(UART0_IRQn);

      uart0TranControl(1,1);
      NVIC_EnableIRQ(UART0_IRQn);
    来禁止和打开UART工作和中断,结果不行,RX是在一直接收数据,直到好像是1.5K~1.7K之间的某个位置停止,感觉就像是系统溢出了停止,之后就不再继续下去了——因为在系统中设置了输出->PC和LCD两种方式验证结果,都是停止不在运行了。
    而在其他M0的MCU中可以认为终止中断和开中断,以便控制程序走向,好像KL的函数不是那样的。
    求解。
    建议用缓冲区方式的请绕过。因为对正面操作的都过不去,还尝试后面的操作再回到前台?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-11 19:28
  • 签到天数: 141 天

    连续签到: 1 天

    [LV.7]常住居民III

    34

    主题

    1067

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2492
    最后登录
    2020-9-16
    发表于 2016-1-19 09:29:10 | 显示全部楼层
    你这就是简单的接收功能,是不是搞复杂了,你用的什么样的源码做改动的
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-1-19 16:33:37 | 显示全部楼层
    chifen 发表于 2016-1-19 09:29
    你这就是简单的接收功能,是不是搞复杂了,你用的什么样的源码做改动的

    很简单,就是度1个字符,判断存入数组,读完一组GPS数据之后计算处理和LCD显示。是很简单。在8MHz的PIC8位单片机上,12MHz的STC51 和AVR51 上都跑的很顺畅。在Novoton的M05xx上更是没有问题,唯独在KL26上跑不起来。现在在想直接控制寄存器来试试。以前玩SX128觉得Freescale的芯片PLL超频很过瘾,运行速度也很快。但这次从函数开始就一头雾水。晕!好在,有网友们时不时的指点一下,我在尽力简单化处理。谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-7-11 19:28
  • 签到天数: 141 天

    连续签到: 1 天

    [LV.7]常住居民III

    34

    主题

    1067

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2492
    最后登录
    2020-9-16
    发表于 2016-1-19 16:49:30 | 显示全部楼层
    https://www.nxpic.org.cn/module/forum/thread-601898-1-1.html    看看这个源码能不能对你有帮助
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
     楼主| 发表于 2016-1-19 17:42:05 | 显示全部楼层
    chifen 发表于 2016-1-19 16:49
    https://www.nxpic.org.cn/module/forum/thread-601898-1-1.html    看看这个源码能不能对你有帮助 ...

    谢谢,我看看。主要是操作UART的那部分还没有玩转。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-23 04:55 , Processed in 0.095491 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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